Linux - член группы не может удалить файл с разрешением на чтение и запись

Linux - член группы не может удалить файл с разрешением на чтение и запись

Ниже показан файл, /tmp/testfileпринадлежащийпользователь1с группой изменено наколесочто также включает в себяпользователь2. Файл имеет rwразрешение для группы. Так разве не должен любой член группы иметь возможность удалить его? Пример вывода ниже показывает, чтопользователь2не может удалить файл. Почему?

[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

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

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

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

(На странице руководства GNU coreutils chmod(1)есть раздел о«флаг ограниченного удаления или липкий бит».)

Связанный контент