Бит выполнения: Бит выполнения необходим для перемещения каталога. Разрешение на чтение каталог управляется битом чтения.
См. Этот диалог оболочки для примера этой разницы:
как 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 году, поэтому с тех пор все может измениться.