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

Команды на правой стороне трубы запускаются в подпункте - поэтому их $ Bashpid отличается.

1
22.11.2014, 03:30
1 ответ

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

1) Если у вас есть эта проблема, и вы считаете, что User1 не является частью пользователя2, лично проверить это, имея проверку пользователя, проверяя там группы или проверку файла 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

Разрешения в группе, принимают приоритет над другими разрешениями, при этом написание не было разрешено. Это может быть закреплено путем изменения разрешений групп или удаление пользователя1 из группы USER2. Это был легкий ответ, который имел правильные предположения, многие люди, вероятно, получили бы. Примечание для себя, когда что-то не работает, убедитесь для себя.

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

$ sudo setfacl -m u:user:r-x .
$ 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:r-x
group::r-x
mask::r-x
other::rwx

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

$ sudo setfacl -b .
$ sudo getfacl .
# file: .
# owner: root
# group: root
user::rwx
group::r-x
other::rwx

$ touch cat
$ ls -la cat
-rw-rw-r--. 1 user user 0 Nov 21 20:51 cat

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

0
28.01.2020, 01:49

Теги

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