Назад | Перейти на главную страницу

Требуется ли перезагрузка для обновления разрешений после добавления пользователя в новую группу?

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

Пользователю hudson требуется разрешение на чтение каталога root: shadow / etc / shadow. Поэтому я добавляю hudson в группу shadow. Хадсон все еще не может читать. Итак, я "sudo shutdown -h -r now", и когда система снова заработает, пользователь hudson сможет читать.

Требуется ли перезагрузка или есть лучший способ получить разрешения после добавления пользователя в группу?

Я искал решение, наткнулся на этот пост, а потом нашел его!

Я думал, что предлагаю решение, которое принесет пользу другим. Вход и выход - это 1995 год.

Взято из:

https://arkaitzj.wordpress.com/2010/03/08/linux-add-user-to-a-group-without-logout/

Поэтому, если вам нужно получить разрешения для cdrom группа, в которую вы только что добавили своего пользователя:

newgrp cdrom 

например

Итак, шаги будут такими:

#adduser my_user cdrom

а потом

$newgrp cdrom

Я подтвердил, что это работает.

Простой $groups проверка из интерфейса командной строки показывает, что пользователь находится в группе. И быстрое выполнение с необходимыми привилегиями из этой группы работает.

Не нужно убивать окна, входить и выходить из системы! Надеюсь, что это поможет другим!

Дополнительная информация (на основе полезного комментария jytou): «[Это] решение будет работать только для текущей открытой оболочки. Если у вас открыта другая оболочка, вам нужно будет использовать ту же команду, чтобы учесть изменения».

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

Добавление пользователя в группу не влияет на пользователей, вошедших в систему.

В случае с демоном вам необходимо перезапустить его для применения новых групп.

Кроме того, перезапуск демона с использованием параметра самого демона не будет работать, поскольку он унаследует текущую среду.

Самый простой способ заставить его работать - полностью остановить демон и запустить его снова, как в ..

/etc/init.d/foo stop ; /etc/init.d/foo start

это намного проще, вы можете проверить свой текущий уровень доступа, набрав:

id

для перезагрузки групп вам просто необходимо:

su - $USER

после этого еще раз проверьте уровень доступа:

id

и вы увидите, что новая группа теперь активна.

Здесь также следует рассмотреть другой режим отказа.

Если админ обновил /etc/group но не удалось обновить /etc/gshadow (в системах с такой настройкой) выход из системы и повторный вход фактически не назначит вас в новую группу.

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

tripleee@vbvntv$ groups
tripleee

tripleee@vbvntv$ id
uid=1234(tripleee) gid=1234(tripleee) groups=1234(tripleee),4(adm)

tripleee@vbvntv$ ls -l /var/log/mail.log
-rw-r----- 1 root adm 15728 May 26 14:26 /var/log/mail.log

tripleee@vbvntv$ tail /var/log/mail.log
tail: cannot open `/var/log/mail.log' for reading: Permission denied

Я не могу использовать newgrp потому что он запрашивает пароль, а у меня нет пароля, только аутентификация с открытым ключом SSH.

Решением для администратора было бы отменить ручное редактирование /etc/groups а затем сделайте это снова с sudo gpasswd -a tripleee adm; или, альтернативно, использовать grpconv чтобы объединить изменения (которые я взял из https://serverfault.com/a/389719/98333)