Intereting Posts
Как удалить запрос пароля при выполнении команды su <user> в CentOS 7? как linux ядро ​​обрабатывает файловую систему Windows NTFS? Как я могу использовать псевдоним `!!` (последняя команда)? Создавать древовидную структуру каталога клонирования и копировать файлы в соответствующие каталоги, измененные после определенной даты Как добавить репозитории yum по умолчанию для CentOS 7.3? Как запустить скрипт без root для sniff network (libpcap)? Правильный способ использования shebang для bash Существуют ли какие-либо утилиты архива, которые могут сохранить атрибут даты, созданный в NTFS-3G? веб-консоли и специальные символы Могу ли я откатиться от обновления apt-get, если что-то пойдет не так? Почему suid бит не влияет на сценарий оболочки или perl? Вывод трубопровода в текстовый файл в цикле for Можно ли настроить ввод с сенсорной панели? Ловушка не захватывает SIGTSTP Как я могу удалить все символы, попадающие под / * … * / includes / * & * /?

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

Недавно возникла странная ситуация. Пользователь1, чтобы иметь возможность изменять файлы в каталоге, были файлы, а каталог принадлежал User2 и группе User2. Чтобы облегчить это редактирование, разрешения были изменены на 757 рекурсивно для структуры каталогов. Таким образом, список выглядел примерно следующим образом.

drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 . drwxr-xr-x 3 user2 user2 4096 Nov 19 19:41 .. drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory1 drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory2 drwxr-xrwx 3 user2 user2 4096 Nov 19 19:41 directory3 -rwxr-xrwx 3 user2 user2 42 Nov 19 19:41 file1 

Пользователь1 смог прочитать файлы, однако попытки создания новых файлов или редактирования / копирования по существующим файлам не удались. Ошибка была примерно такой.

 $ touch file1 touch: cannot touch 'file1': Permission denied 

Думая, что, возможно, диск был каким-то образом защищен от записи, User1 попросил User2 изменить файл. User2 смог сделать это без каких-либо проблем, что указывает на то, что диск не защищен от записи.

Глядя на df и /etc/fstab , файл оказался на локально установленном жестком диске.

Дополнительная информация. Пользователь1 находится в группе User2. (Первоначально предполагалось, что это не так). В файле не было блокировок. Казалось, что SE Linux отключен. (Как указано sestatus ) Хотя я обычно узнаю, что вы не захотите установить целую директорию, чтобы разрешить кому-либо писать на нее, это особый случай. Почти идентичная сборка на отдельной машине работала. Выходные данные getfacl одинаковы для файлов и каталогов.

 # file: . # owner: user # group: user user::rwx group::rx other::rwx 

Что может вызвать эту защиту и как ее можно отменить?

Я собирался просто удалить вопрос, поскольку один из исходных фактов был неправильным. Я решил, что, поскольку очевидный ответ был упущен, и есть альтернатива, не столь очевидный ответ, чтобы опубликовать возможные причины и решения этой проблемы, помочь тем, кто может столкнуться с подобной проблемой в будущем.

1) Если у вас есть эта проблема, и вы считаете, что user1 не является частью user2, убедитесь, что пользователь1 проверяет наличие групп или просматривает файл passwd. В этом случае пользователь1 был ошибочно добавлен со следующей записью /etc/passwd и без записи в /etc/group .

 user1:x:1001:1000:User1:/home/user1:/bin/bash 

в то время как пользователь 2 имел следующее в /etc/passwd

 user2:x:1000:1000:User2:/home/user2:/bin/bash 

а также

 user2:x:1000:user2 user1 

Групповые разрешения имеют приоритет над другими разрешениями, поэтому запись не допускается. Это можно устранить, изменив групповые разрешения или удалив user1 из группы user2. Это был легкий ответ, в котором исходные предположения были правильными, вероятно, многие люди могли бы получить. Обратите внимание на себя, когда что-то не работает, убедитесь сами.

2) Менее очевидный ответ исходит от использования списков контроля доступа к файлам (ACL). Если у конкретного пользователя есть определенные разрешения, они имеют приоритет над общими разрешениями. Хотя это может быть известно тем, кто использовал ACL, я подозреваю, что многие даже не знают, что они существуют. Вот пример того, как это может заблокировать пользователя.

 $ sudo setfacl -mu:user:rx . $ ls -la total 0 drwxr-xrwx+ 2 root root 60 Nov 21 20:46 . drwxrwxrwt. 12 root root 300 Nov 21 20:45 .. -rw-rw-r--. 1 user user 0 Nov 21 20:46 dog $ touch cat touch: cannot touch 'cat': Permission denied $ getfacl . # file: . # owner: root # group: root user::rwx user:user:rx group::rx mask::rx other::rwx 

Чтобы отменить это

 $ sudo setfacl -b . $ sudo getfacl . # file: . # owner: root # group: root user::rwx group::rx other::rwx $ touch cat $ ls -la cat -rw-rw-r--. 1 user user 0 Nov 21 20:51 cat 

Спасибо @andcoz за то, что вы спрашивали о группах, которые в конечном итоге заставили меня вернуться и переутвердить и поблагодарить вас @Rianto Wahyudi за упоминание «getacl», которого я раньше не видел / не использовал.