Понимание причин разрешений для каталогов Linux - PullRequest
16 голосов
/ 26 апреля 2009

Привет, у меня есть 2 вопроса относительно разрешений для директории linux, которые я не понимаю.

Я удалил флаг выполнения из папки с именем Documents. После этого я не могу использовать cd на нем, но я все еще могу сделать «ls Documents» из родительского каталога, и он все еще перечисляет мне файлы в каталоге Documents. Я думаю, что отсутствующий x-flag запрещает читать этот каталог?

Тогда я хочу знать, почему был изобретен стикер для каталогов. Я слышал, что он был использован для того, чтобы пользователи не могли удалять временные файлы, созданные другими пользователями. Но это IMO нарушает правило, что для удаления файлов нам просто нужны права на этот каталог. Почему бы просто не дать каждому пользователю отдельный каталог / tmp / вместо введения исключений в систему правил? Я знаю, что делает флаг, но я хочу знать, почему это было изобретено.

Ответы [ 4 ]

15 голосов
/ 26 апреля 2009

Бит выполнения: Бит выполнения необходим для перемещения каталога. Разрешение на чтение каталог управляется битом чтения.

См. Этот диалог оболочки для примера этой разницы:

как root:

# find foo/ -ls
drwxr-xr--   3 root     root         4096 Apr 27 12:57 foo/
drwxr-xr-x   2 root     root         4096 Apr 27 12:57 foo/bar
-rw-r--r--   1 root     root            0 Apr 27 12:57 foo/bar/file

как пользователь:

$ ls foo/
bar
$ find foo/ -ls
drwxr-xr--   3 root     root         4096 Apr 27 12:57 foo/
find: foo/: Permission denied
$

Обычное использование наоборот: удаление разрешений на чтение, но разрешение обхода, например, разрешить веб-серверу входить в ~ / public_html, но не позволять ему составлять список индексов по умолчанию, установив --x.

Sticky bit: Это было изобретено именно для того, чтобы избежать правил по умолчанию для удаления в каталоге, поэтому /tmp работает. /tmp может находиться на томе, отличном от /home, и / или регулироваться другими квотами.

FHS кодирует / tmp"для программ, которым требуются временные файлы", в то время как "[они] не должны предполагать, что какие-либо файлы или каталоги в / tmp сохраняются между вызовами".

Лично я считаю, что / tmp является наследием языческих дней, когда vi globals.h && make install считался процедурой установки. В настоящее время программы должны соблюдать $TMPDIR, что должно указывать на частный управляемый системой каталог, который должен быть очищен хотя бы при перезагрузке. Даже стандартизированные функции, такие как tmpfile (3) , не прописывают фактический путь. Хотя, кажется, важны проблемы совместимости и безопасности, говоря о / tmp . Обратите внимание, что последнее письмо было получено в 1999 году, поэтому с тех пор все может измениться.

5 голосов
/ 16 января 2012

Просто наткнулся на это, потому что у него высокий рейтинг поиска Google. Проблема с битом выполнения на самом деле не была решена, поэтому ...

Если бит выполнения не установлен для каталога, то он не является «проходимым», что означает, что оболочки и файловые браузеры должны быть спроектированы так, чтобы запретить вам устанавливать этот каталог как текущий, хотя эта функция не может быть применена самой файловой системой. Файловая система не разрешает запретить в каталоге без выполнения любую информацию , отличную , кроме имени файла содержащихся файлов - так что никаких меток даты или прав доступа к файлам для этих файлов, и нет чтения этих файлов, даже если они прочитали множество.

3 голосов
/ 26 апреля 2009

Липкий бит

На сегодняшний день наиболее распространенное использование залипающего бита - в каталогах, где при установке элементы внутри каталога могут быть переименованы или удалены только владельцем элемента, владельцем каталога или суперпользователем; без установленного закрепленного бита любой пользователь с разрешениями на запись и выполнение для каталога может переименовывать или удалять содержащиеся в нем файлы независимо от владельца. Обычно это задается в каталоге / tmp, чтобы обычные пользователи не могли удалять или перемещать файлы других пользователей. Эта функция была представлена ​​в 4.3BSD в 1986 году, и сегодня она встречается в большинстве современных систем Unix.

Кроме того, Solaris (начиная с Solaris 2.5) определяет специальное поведение, когда для неисполняемых файлов установлен бит привязки: при обращении к этим файлам ядро ​​не будет кэшироваться. Это обычно устанавливается для файлов подкачки, чтобы предотвратить доступ к файлу для сброса более важных данных из системного кэша. Он также иногда используется для контрольных тестов.

Адаптер также устанавливает автомонтировщик, чтобы указать, что файл еще не был смонтирован. Это позволяет таким программам, как ls, игнорировать удаленные удаленные файлы.

0 голосов
/ 21 апреля 2016

Для каталогов CD должен быть режим 0555 и файлы 0444. Группу Unix можно рассматривать как роль. Ваши роли - ваши дополнительные группы. Элементы управления являются обязательными, если вы не владелец. Они дискреционные, если вы. Вы можете пройти путь, только если у вас есть разрешение eXecute / search для каждого элемента пути. Это отличается от Microsoft Windows, которая уязвима для обхода каталога. Он был изобретен для реализации серии Rainbow «Критерии оценки доверенной компьютерной системы DoD».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...