Странное поведение для setuid и setgid

483
yuanlinios

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

[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-битной

1
Я заметил, что вывод разрешений для `/ usr / local / etc` (« drwxr-xrwx ») заканчивается точкой. Это может означать, что каталог имеет ACL. Вы можете проверить это? Scott 9 лет назад 1
Ну, каталог или файл с ACL оканчивается знаком «+» вместо «.». yuanlinios 9 лет назад 0
Я заглянул в документацию "ls". Там сказано: GNU 'ls' использует '.' указать файл с контекстом безопасности SELinux. В моей среде функция SELinux просто отключена. yuanlinios 9 лет назад 0

0 ответов на вопрос

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