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

<p>предположим, я вошел в систему с пользователем <code>takpar</code>:</p><pre><code>takpar@skyspace:/$ как пользователь root, я добавил takpar в качестве члена группы webdev, используя:# usermod -a -g webdev takpar но кажется, что он не был применен, потому что, например, я не могу попасть в каталог webdev, который имеет разрешение на чтение для группы:400169 drwxr-x--- 3 webdev webdev 4.0k 2011-08-15 22:34 public_html takpar@skyspace:/home/webdev/$ cd public\_html/ bash: cd: public\_html/: permission denied </code></pre><p>но после перезагрузки у меня есть доступ, как я ожидаю. поскольку такой вид групповых изменений входит в мою рутину, есть ли способ применить изменения без перезагрузки?</p><p><strong>ответ</strong> кажется, нет способа сообщить текущему сеансу новую группу, например, файловый менеджер не будет работать с новыми изменениями. но повторный вход сделает эту работу. команда <code>su</code> также подходит для временных команд в сеансе urrent.</p>

<p>локальное решение: используйте <code>su yourself</code>, чтобы войти снова. в новой сессии вы будете считаться членом группы.</p><hr><p>справочные страницы для <code>newgrp</code> и <code>sg</code> также могут представлять интерес для изменения идентификатора вашей текущей группы (и входа в новую группу):</p><ul> <li> <p>чтобы использовать <code>webdev</code> идентификатор группы (и привилегии) в текущем использовании shell:</p> <pre><code> newgrp webdev </code></pre></li> <li> <p>чтобы запустить команду с некоторым идентификатором группы (и сохранить текущие привилегии в вашей командной консоли), используйте:</p> <pre><code> sg webdev -c "command" </code></pre> <p>(<code>sg</code> похоже на <code>su</code>, но для групп, и оно должно работать без пароля группы, если вы указаны в качестве члена группы в данных системы)</p> </li> </ul>

<p>перезагрузка системы - это перебор, даже выход из системы и вход в систему не нужны, если вы используете <code>gpasswd</code>.</p><p>вы можете добавить <code>takpar</code> в группу <code>webdev</code>, используя:</p><pre><code>$ gpasswd -a takpar webdev вы можете проверить членство в группе, используя getent group {name} команда:$ getent group webdev webdev:x:1008:webdev,takpar </code></pre><p>который должен быть таким же, как <code>cat /etc/group | grep webdev</code>. для полноты вот <code>id</code> вывод из <code>takpar</code> сеанса оболочки:</p><pre><code>$ id takpar uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev) </code></pre>

<pre><code>id webdev </code></pre><p>кажется, здесь не так - вы хотите знать о своих собственных <code>id</code>, <code>takpar</code>, а не <code>webdev</code>.</p><p>если вы сравните выходные данные <code>id</code> и <code>id takpar</code>, вы заметите, что первый еще не показывает изменение, а второй показывает его. почему? это потому, что <code>id</code> показывает группы текущего процесса. если вы выйдете из системы и снова войдете в систему или даже откроете новое окно терминала, вы уже должны увидеть изменения без перезагрузки.</p>