Странное поведение для setuid и setgid
Я делаю небольшой эксперимент со специальными битами привилегий следующим образом:
[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-битной