web-dev-qa-db-fra.com

Comment appliquer les modifications des groupes d'utilisateurs nouvellement ajoutés sans avoir besoin de redémarrer?

Supposons que je suis connecté avec l'utilisateur takpar:

takpar@skyspace:/$

En tant que root, j'ai ajouté takpar en tant que membre du groupe webdev en utilisant:

# usermod -a -G webdev takpar

Mais il semble que cela n'ait pas été appliqué, car par exemple, je ne peux pas entrer dans le répertoire d'un webdev qui a l'autorisation de lecture pour le groupe:

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

Mais après un redémarrage, j'ai accès comme prévu. Comme ce type de changement de groupe est dans ma routine, y a-t-il un moyen d'appliquer des changements sans avoir besoin d'un redémarrage?

Answer Il semble qu'il n'y ait aucun moyen de faire connaître à la session en cours le nouveau groupe, par exemple le gestionnaire de fichiers ne fonctionnera pas avec les nouvelles modifications. Mais une nouvelle connexion fera l'affaire. La commande su convient également aux commandes temporaires dans une session urrent.

41
Alexar

Solution locale: utilisez su yourself pour vous reconnecter. Dans la nouvelle session, vous serez considéré comme un membre du groupe.


Les pages de manuel pour newgrp et sg peuvent également être utiles pour changer votre identifiant de groupe actuel (et vous connecter à un nouveau groupe):

  • Pour utiliser l'ID de groupe (et les privilèges) de webdev dans votre shell actuel, utilisez:

     newgrp webdev
    
  • Pour démarrer une commande avec un identifiant de groupe (et conserver les privilèges actuels dans votre shell), utilisez:

     sg webdev -c "command"
    

    (sg est comme su mais pour les groupes, et il devrait fonctionner sans le mot de passe du groupe si vous êtes répertorié comme membre du groupe dans les données du système)

59
Stéphane Gimenez

Le redémarrage du système est une exagération, même la déconnexion et la connexion ne sont pas nécessaires si vous utilisez gpasswd.

Vous pouvez ajouter takpar au groupe webdev en utilisant:

$ gpasswd -a takpar webdev

Vous pouvez vérifier l'appartenance à un groupe à l'aide de getent group {name} commande:

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

qui devrait être identique à cat /etc/group | grep webdev. Pour être complet, voici id sortie de takpar Session Shell:

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

semble avoir tort ici - vous voulez connaître votre propre id, takpar, pas webdev.

Si vous comparez les sorties de id et id takpar, vous remarquerez que le premier ne montre pas encore le changement, tandis que le second le montre. Pourquoi? Cela est dû au fait que id affiche les groupes du processus en cours. Si vous vous déconnectez et vous reconnectez, ou même si vous n'ouvrez qu'une nouvelle fenêtre de terminal, vous devriez déjà voir la modification sans redémarrer.

1
glglgl