Bueno mira sinceramente no se si esto funcione en Drupal 7 (deberia). Pero existe un hook en Drupal 6 que es el hook_file_download, que se activa cuando un usuario quiere descargar un archivo ...
http://api.drupal.org/api/drupal/dev...ile_download/6
Fijate que dice, que si el usuario no tiene permisos, debes devolver un -1 ... entonces podes jugar con la api de Drupal y ver el usuario actual....y retornar -1 en caso de que no cumpla con los requisitos que vos quieras.
Tambien podes cambiar la forma de administrar los archivos para que Drupal se encargue de ello....pero no se si te traiga problemas con los ficheros q se suban a la web desde otros modulos (imagefield, wysiwyg) ... pero podrias probarlo.
Saludos.