Зачем использовать липкий бит?

«Заклепочный бит применяется только к каталогам и обычно используется в общедоступных каталогах. В каталоге, к которому применяется заклинивающий бит, пользователям запрещается удалять или переименовывать любые файлы, которыми они лично не владеют».

Означает ли это, если я выполню следующее:

// only allow other users to read files in /directory
sudo chmod o-w -R /directory
sudo chmod o-x -R /directory
sudo chmod o+r -R /directory

пользователи все еще могут удалять или переименовывать любые файлы, которые им не принадлежат?

18
задан 21 December 2013 в 23:42

1 ответ

Заклепка полезна для каталогов, которые доступны для записи во всем мире, например /tmp. В этих каталогах любой может создать файл, поэтому каталог должен быть доступен для записи всем пользователям. Но это означает, что любой может удалить файл, даже если он ему не принадлежит, так как удаление файла контролируется разрешением на запись в каталог. Когда у каталога есть бит закрепления, только владелец файла имеет право удалить его.

В каталоге с разрешениями rwx------ или rwxr-xr-x только владелец каталога может создавать или удалять файл. Если есть какие-либо файлы, принадлежащие другому пользователю (перемещенные туда пользователем root или созданные, когда у каталога было больше открытых разрешений), он по-прежнему принадлежит владельцу каталога, у которого есть разрешения на их удаление, а не владельцу файла.

В каталоге с разрешениями rwxrwx--- все члены группы могут создавать и удалять файлы. Любой участник группы может удалить любой файл, даже если он принадлежит другому пользователю. Если вместо этого разрешения rwxrwx--T (прописная T похожа на t, но t означает, что бит x установлен, а T означает, что бит x очищен)), тогда любой член группы могут создавать файлы, а члены группы могут удалять файлы, но только свои собственные.

Вы можете использовать следующую команду, чтобы увидеть, какие каталоги имеют залипший бит в вашей системе:

find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null

Вы найдете несколько каталогов, таких как /tmp, которые открыты для всех, и некоторые каталоги, такие как /var/spool/cron/crontabs, которые зарезервированы для системной программы, которая запускается как ее собственная группа ( setgid ), где бит закрепления гарантирует, что программа может удалять файлы только от имени пользователя, которому они принадлежат (что гарантирует, что программа может создавать файлы только от имени пользователя, которому они принадлежат, если программа работает от имени этого пользователя, а не от имени пользователя root, поэтому не может создавать файлы, принадлежащие другим пользователям).

0
ответ дан 21 December 2013 в 23:42

Другие вопросы по тегам:

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