user2 Необходимо выйти и снова войти. Разрешения группы работают следующим образом:
- Когда вы входите в систему, ваши процессы получают членство в группе, указанной в вашей основной группе
/etc/passwd, плюс все группы, в которых упоминается ваш пользователь /etc/group. (Более точно, pw_gidполе getpw(your_uid), плюс все группы которых ваш пользователь является явным членом . За /etc/passwdи /etc/group, информация может поступать из других видов пользовательских баз данных , таких как NIS или LDAP.) Основная группа становится процессом в эффективный идентификатор группы и другие группы становятся его дополнительными идентификаторами групп .
- Когда процесс выполняет операцию, которая требует членства в определенной группе, например, для доступа к файлу , эта группа должна быть либо действующим идентификатором группы, либо одним из идентификаторов дополнительных групп процесса.
Как вы можете видеть, ваше изменение членства в группе пользователя вступает в силу только тогда, когда пользователь входит в систему. Для запущенных процессов это слишком поздно. Таким образом, пользователь должен выйти из системы и снова войти в нее. Если это слишком сложно, пользователь может войти в отдельный сеанс (например, на другой консоли или с помощью ssh localhost).
В рамках процесса процесс может только потерять привилегии (идентификаторы пользователей, идентификаторы групп, возможности). Ядро запускает initпроцесс (первый процесс после загрузки), выполняющийся от имени пользователя root, и каждый процесс в конечном итоге происходит от этого процесса¹. loginПроцесс (или sshd, или часть вашего рабочего стола менеджера , который регистрирует вас) все еще работает как корень. Частью его работы является удаление привилегий root и переключение на соответствующих пользователей и группы.
Есть одно исключение: выполнение программы setuid или setgid . Эта программа получает дополнительные разрешения: она может действовать в различных подмножествах членства родительского процесса плюс дополнительное членство в пользователе или группе, которой принадлежит исполняемый файл setxid. В частности, корневая программа setuid имеет root-права, поэтому может делать все²; Вот как программы любят suи sudoмогут делать свою работу.
Occasion
Иногда возникают процессы, которые не являются производными от init (initrd, udev), но принцип тот же: запускайте с правами root и со временем теряйте привилегии.
²
Запрет многоуровневых сред безопасности, таких как SELinux.