14

Ниже показан файл /tmp/testfile , принадлежащий пользователю user1 с группой, измененной на wheel, в которую также входит user2. Файл имеет разрешение rw для группы. Так не должен ли кто-либо из членов группы удалить его? В приведенном ниже примере показано, что user2 не может удалить файл. Зачем?

[user2@files ~]$ ls -l /tmp/testfile
-rw-rw-r-- 1 user1 wheel 0 Jul 18 18:54 /tmp/testfile
[user2@files ~]$ groups
user2 wheel
[user2@files ~]$  rm /tmp/testfile
rm: cannot remove `/tmp/testfile': Operation not permitted

1 ответ1

29

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

$ ls -ld /tmp
drwxrwxrwt 15 root root 460 Jul 19 15:18 /tmp/

Во-вторых, /tmp особенный. Практически во всех системах он доступен для записи любому (ugo=rwx), поэтому на первый взгляд кажется, что любой может переименовать или удалить любой файл в нем. Это, конечно, облегчит (ну, еще проще) создание проблем для других пользователей, поэтому /tmp всегда имеет установленный режим "закрепления" или "ограниченное удаление" (o+t). Если установлен этот режим, только владелец файла может перемещать или удалять файлы в этом каталоге независимо от каких-либо разрешений.

(В GNU coreutils на странице руководства chmod(1) есть раздел о "флаге ограниченного удаления или фиксированном бите".)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .