it-swarm-ru.tech

Как применить изменения вновь добавленных групп пользователей без перезагрузки?

Предположим, я вошел в систему с пользователем takpar:

[email protected]:/$

Как пользователь root, я добавил takpar в качестве члена группы webdev, используя:

# usermod -a -G webdev takpar

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

400169 drwxr-x--- 3 webdev webdev 4.0K 2011-08-15 22:34 public_html

[email protected]:/home/webdev/$ cd public_html/
bash: cd: public_html/: Permission denied

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

Ответ Кажется, нет способа сообщить текущему сеансу новую группу, например, файловый менеджер не будет работать с новыми изменениями. Но повторный вход сделает эту работу. Команда su также подходит для временных команд в сеансе urrent.

41
Alexar

Локальное решение: используйте su yourself, чтобы войти снова. В новой сессии вы будете считаться членом группы.


Справочные страницы для newgrp и ​​sg также могут представлять интерес для изменения идентификатора вашей текущей группы (и входа в новую группу):

  • Чтобы использовать webdev идентификатор группы (и привилегии) ​​в текущем использовании Shell:

     newgrp webdev
    
  • Чтобы запустить команду с некоторым идентификатором группы (и сохранить текущие привилегии в вашей командной консоли), используйте:

     sg webdev -c "command"
    

    (sg похоже на su, но для групп, и оно должно работать без пароля группы, если вы указаны в качестве члена группы в данных системы)

59
Stéphane Gimenez

Перезагрузка системы - это перебор, даже выход из системы и вход в систему не нужны, если вы используете gpasswd.

Вы можете добавить takpar в группу webdev, используя:

$ gpasswd -a takpar webdev

Вы можете проверить членство в группе, используя getent group {name} команда:

$ getent group webdev
webdev:x:1008:webdev,takpar

который должен быть таким же, как cat /etc/group | grep webdev. Для полноты вот id вывод из takpar сеанса оболочки:

$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
3
Tombart
id webdev

кажется, здесь не так - вы хотите знать о своих собственных id, takpar, а не webdev.

Если вы сравните выходные данные id и ​​id takpar, вы заметите, что первый еще не показывает изменение, а второй показывает его. Почему? Это потому, что id показывает группы текущего процесса. Если вы выйдете из системы и снова войдете в систему или даже откроете новое окно терминала, вы уже должны увидеть изменения без перезагрузки.

1
glglgl