Имеются ли права родительского каталога при доступе к подкаталогу?

Если у меня есть корневая папка с некоторым ограничительным разрешением, скажем 600, и если дочерние папки /файлы имеют разрешение 777, каждый сможет читать /записывать /выполнять дочерний файл, даже если корневая папка имеет 600?

135 голосов | спросил Ken Li 27 Mayam11 2011, 02:52:46

3 ответа


155

Точное правило: вы можете перемещаться по каталогу тогда и только тогда, когда у вас есть разрешение на выполнение.

Например, чтобы получить доступ к dir/subdir/file, вам необходимо выполнить разрешение на dir и dir/subdir, а также разрешения на file для типа доступа, который вы хотите. Входящие в угловые случаи, я не уверен, универсально ли, что вам требуется разрешение на выполнение в текущем каталоге для доступа к файлу через относительный путь (вы делаете это в Linux).

То, как вы обращаетесь к файлу, имеет значение. Например, если у вас есть разрешения на выполнение на /foo/bar, но не на /foo, но ваш текущий каталог - /foo/bar вы можете получить доступ к файлам в /foo/bar через относительный путь, но не через абсолютный путь. Вы не можете изменить на /foo/bar в этом сценарии; более привилегированный процесс предположительно выполнен cd /foo/bar, прежде чем перейти в непривилегированную. Если файл имеет несколько жестких ссылок, путь, который вы используете для доступа к нему, определяет ваши ограничения доступа.

Символьные ссылки ничего не меняют. Ядро использует права доступа вызывающего процесса для их перемещения. Например, если sym является символической ссылкой на каталог dir, вам необходимо выполнить разрешение на dir для доступа к sym/foo

Удаление разрешения на выполнение из корневого каталога эффективно ограничивает пользователя частью дерева каталогов (которое должен изменить более привилегированный процесс). Для этого необходимы списки управления доступом. Например, если / и /home недоступны для joe (setfacl -m user:joe:0 / /home) и /home/joe находится домашний каталог joe, тогда joe не сможет получить доступ к остальной части (включая запуск сценариев оболочки с помощью /bin/sh или динамически связанных двоичных файлов, которым необходимо получить доступ к /lib), поэтому вам нужно углубиться в практическое использование, например setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib).

Разрешение на чтение в каталоге дает право перечислять записи. Иногда полезно использовать разрешение на выполнение без предоставления разрешения на чтение: имена записей служат в качестве паролей для доступа к ним. Я не могу придумать, как использовать разрешение на чтение или запись в каталог без разрешения на выполнение.

ответил Gilles 27 Maypm11 2011, 13:57:27
29

Нет. Ограничение корневой папки ограничивает разрешение дочерних файлов. Вы можете попробовать.

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

Я получаю это:

$ cat: ./rootfolder/childfile: permission denied
ответил goovim 27 Mayam11 2011, 05:33:31
4

Вы можете сделать дочернюю директорию доступной даже в родительском каталоге. Я делаю это для групп.

Например: родительский каталог принадлежит групповому коду

drwxr-sr-x

дочерний каталог

drwxrwsr-x

Вы (любой член группы кодеров) все равно можете записать в дочерний каталог, но не в родительский каталог.

ответил Kemin Zhou 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 10:42:16 +0300 2016, 10:42:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132