Предположим, у меня есть каталог без доступа для кого-либо, кроме root. Я гарантированно, что все в каталоге недоступно для всех, кроме root? Другими словами, являются ли права доступа к файлам иерархическими, так что если пользователь не может получить доступ к каталогу, он не может получить к нему доступ, даже если у него есть разрешения на что-либо в каталоге?
3 ответа
Если ответ в основном "да", то есть особые случаи, когда "нет".
Потому что unix-файлы не гарантированно имеют уникальный путь. Так что если у вас есть
$ ls -l
drwx------- 1 root root [...] root_only
а также
$ ls -l root_only
-rw-rw-rw-- 2 root root [...] hopefully_private_file
и hopefully_private_file
жестко связан с другим источником, он может быть универсально читаемым.
Откуда вы знаете? Посмотрите еще раз на это ls -l
:
$ ls -l root_only
-rw-rw-rw-- 2 root root [...] hopefully_private_file
^
|
Число над стрелкой - это количество ссылок (для файлов оно имеет другое значение для каталогов). Если количество ссылок равно 1, вы в безопасности; если это что-то еще, может быть проблема.
Для отображения чего-либо в каталоге dir/
вам нужно +x
разрешение, чтобы можно было найти индекс файла. Поэтому, если у вас нет +x, вы не можете прочитать файл, даже если это 777
.
Это правильно, удаление разрешений для родительского каталога влияет на способность работать с чем-либо в этом каталоге.
Если пользователь не имеет разрешения на выполнение для каталога, он не сможет видеть доступ к каким-либо файлам в каталоге.
Вы, вероятно, также хотите удалить разрешение на чтение в каталоге, чтобы они не могли даже видеть содержимое (имена файлов) каталога.