Un redémarrage est-il nécessaire pour actualiser les autorisations après avoir ajouté un utilisateur à un nouveau groupe?

26

Sur le serveur Ubuntu, j'ai remarqué plus d'une fois maintenant qu'après avoir ajouté un utilisateur à un groupe, cet utilisateur n'a pas les autorisations de groupe jusqu'à ce que je redémarre le système. Par exemple:

L'utilisateur «hudson» a besoin d'une autorisation pour lire le répertoire «root: shadow / etc / shadow». J'ajoute donc hudson au groupe fantôme. Hudson ne sait toujours pas lire. Donc, je «sudo shutdown -h -r now» et quand le système revient, l'utilisateur hudson peut lire.

Un redémarrage est-il nécessaire ou existe-t-il un meilleur moyen d'obtenir des autorisations après avoir ajouté l'utilisateur au groupe?

Michael Prescott
la source
pour référence future, j'ai ajouté une solution réelle ci-dessous. J'ai été étonné que ce soit un problème. J'espère que ça t'as aidé.
TryTryAgain

Réponses:

25

Je cherchais une solution, suis tombé sur ce post, puis j'ai trouvé plus tard une!

J'avais pensé offrir une solution pour que d'autres puissent en bénéficier. La connexion et la déconnexion sont en 1995.

Pris à partir de:

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

Donc, si vous aviez besoin d'obtenir des autorisations pour le cdromgroupe auquel vous venez d'ajouter votre utilisateur:

newgrp cdrom 

par exemple

Les étapes seraient donc:

#adduser my_user cdrom

et alors

$newgrp cdrom

J'ai confirmé que ça marche.

Une simple $groupsvérification de la CLI montre que l'utilisateur est dans le groupe. Et une exécution rapide avec les privilèges nécessaires de ce groupe fonctionne.

Pas besoin de tuer vos fenêtres et de vous connecter et de vous déconnecter! J'espère que cela aide les autres!

Informations supplémentaires (basées sur le commentaire utile de jytou): "[Cette] solution ne fonctionnera que pour le shell ouvert en cours. Si vous avez un autre shell ouvert, vous devrez utiliser la même commande pour prendre en compte les modifications."

TryTryAgain
la source
1
C'est super, ça marche vraiment !!! : D
dadexix86
3
Notez que la solution TryTryAgain ne fonctionnera que pour le shell ouvert actuel. Si vous avez un autre shell ouvert, vous devrez utiliser la même commande pour prendre en compte les modifications.
jytou
Quoi qu'il en soit pour le faire pour la session X en cours d'exécution?
artfulrobot
@artfulrobot désolé, je ne sais pas exactement ce que vous voulez dire. Vous voudrez peut-être ouvrir une nouvelle question et faire référence à cet article et à la solution pour être mieux aidé.
TryTryAgain
19

Lors de l'ajout d'un utilisateur à un nouveau groupe, l'utilisateur doit se déconnecter et se reconnecter pour qu'il prenne effet. Bien qu'un redémarrage accomplisse cela, il ne devrait pas être nécessaire.

Scott Pack
la source
Comment déconnecter un utilisateur créé par aptitude lors de l'installation d'un package?
Michael Prescott
Quel package crée l' hudsonutilisateur?
womble
Comme Justin a répondu, essayez d'arrêter et de démarrer le service.
Scott Pack
C'est ce que je fais. Déconnectez-vous et reconnectez-vous.
Trent Scott
Vous n'avez en fait pas besoin de vous déconnecter et de vous reconnecter, heureusement. J'ai proposé une solution de travail ci-dessous. Testé et HEUREUX!
TryTryAgain
8

L'ajout d'un utilisateur à un groupe n'affecte pas les utilisateurs actuellement connectés.

Dans le cas d'un démon, vous devez le redémarrer pour que de nouveaux groupes soient appliqués.

De plus, le redémarrage du démon à l'aide d'une option du démon lui-même ne fonctionnera pas car il héritera de l'environnement actuel.

Le moyen le plus simple de le faire fonctionner est d'arrêter complètement le démon et de le redémarrer, comme dans ..

/etc/init.d/foo stop ; /etc/init.d/foo start
Justin
la source
4

c'est beaucoup plus facile, vous pouvez vérifier votre niveau d'accès actuel en tapant:

id

pour recharger vos groupes dont vous avez juste besoin:

su - $USER

après cela, vérifiez à nouveau le niveau d'accès:

id

et vous verrez que le nouveau groupe est maintenant actif.

wikrie
la source
1

Il existe un mode de défaillance différent qui devrait également être abordé ici.

Si l'administrateur a mis à jour /etc/groupmais n'a pas réussi à mettre à jour /etc/gshadow(sur les systèmes qui ont cette configuration), la déconnexion et la reconnexion ne vous affecteront pas réellement au nouveau groupe.

Confusément, groupsvous montrera la situation réelle et actuelle, tandis que la idsortie imprimée de manière incorrecte indique que vous êtes correctement membre du groupe.

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

Je ne peux pas l'utiliser newgrpcar il demande un mot de passe, et je n'ai pas de mot de passe, uniquement l'authentification par clé publique SSH.

La solution serait que l'administrateur revienne à l'édition manuelle de /etc/groupspuis recommence avec sudo gpasswd -a tripleee adm; ou alternativement, à utiliser grpconvpour fusionner les modifications (que j'ai récupérées sur /server//a/389719/98333 )

tripleee
la source
En fait, il s'avère que le vrai problème était que je réutilisais une session principale SSH . La déconnexion en supprimant le socket ControlPath et en se reconnectant a résolu le problème.
tripleee