1

Я делаю небольшой эксперимент со специальными битами привилегий следующим образом:

[root@localhost~]# useradd user1
[root@localhost~]# cp /bin/touch /home/
[root@localhost~]# chown user1:user1 /home/touch
[root@localhost~]# chmod u+s,g+s /home/touch
[root@localhost~]# ls -l /home/touch
-rwsr-sr-x 1 user1 user1 52656 Jun 26 14:17 /home/touch
[root@localhost~]# chmod o+w /usr/local/etc/
[root@localhost~]# ls -ld /usr/local/etc
drwxr-xrwx.2 root root 4096 Jun 26 14:14 /usr/local/etc/
[root@localhost~]# /home/touch /usr/local/etc/root.1
/home/touch: cannot touch '/usr/local/etc/root.1': Permission denied

Поскольку бит suid и бит sgid установлены для исполняемого файла /home/touch , я ожидал, что когда root выполнит команду /home/touch /usr/local/etc/root.1 , эффективный user:group должен быть user1:user1 , который должен иметь доступ на запись в каталог /usr/local/etc (см. o=rwx).

Но результат заставил меня озадачиться. На самом деле, любой, принадлежащий к root группе, потерпит неудачу, как root, но другие пользователи могут успешно выполнить вышеуказанную команду.

Только после того, как я изменил режим каталога с помощью chmod g+w /usr/local/etc , пользователи, принадлежащие к root группе, могут выполнить команду без ошибки разрешения.

Разве эффективный пользователь: группа для всех, кто работает /home/touch должен быть user1:user1? Что не так с корневой группой? Я что-то пропустил?

Я взял эксперимент на RHEL 6.4 64-битной

0