it-swarm.com.de

Newgrp-Funktion

Ich konnte die Funktion von newgrp nicht genau verstehen. Hilft es, von einer Gruppe in eine andere Gruppe zu wechseln, für die ein bestimmter Benutzer Mitglied ist? Oder Sie können Mitglied einer Gruppe werden, für die der Benutzer kein Mitglied ist, aber ein Gruppenkennwort hat. Ich bin nicht klar darüber. Kann mir jemand von euch eine klare Vorstellung davon geben.

1
Dechen

Um zu verstehen, was der Befehl newgrp bewirkt, müssen Sie verstehen, dass beim Hinzufügen eines Benutzers zu einer Gruppe der neue Benutzer erst dann zur Gruppe hinzugefügt wird, wenn Sie sich abmelden und wieder anmelden. Dies ist oft ein Ärger, weil es alle Ihre Programme tötet. Mit newgrp können Sie einen Benutzer zu einer Gruppe hinzufügen und in der aktuellen Anmeldesitzung wirksam werden lassen.

verwendung

# show groups user "ubuntu" belongs to
[email protected]:/usr/share/man$ groups ubuntu 
ubuntu : ubuntu adm cdrom Sudo dip plugdev lpadmin sambashare

# add user "ubuntu" to group: src
[email protected]:/usr/share/man$ Sudo gpasswd -a ubuntu src
Adding user ubuntu to group src

[email protected]:/usr/share/man$ groups ubuntu
ubuntu : ubuntu adm cdrom Sudo dip src plugdev lpadmin sambashare
#                                  ^^^
# user ubuntu is "technically" now added to group `src`

# now try do something that members of `src` can do  
#  i.e. create a file in /usr/local/src/
[email protected]:/usr/share/man$ ls -alh /usr/local/
total 0
drwxr-xr-x 1 root root 100 Jul 20 08:42 .
drwxr-xr-x 1 root root 180 Dec  2 20:19 ..
drwxr-xr-x 1 root root  80 Dec  2 20:15 bin
drwxr-xr-x 2 root root   3 Jul 20 08:42 etc
drwxr-xr-x 2 root root   3 Jul 20 08:42 games
drwxr-xr-x 2 root root   3 Jul 20 08:42 include
drwxr-xr-x 4 root root  49 Jul 20 08:45 lib
lrwxrwxrwx 1 root root   9 Jul 20 08:42 man -> share/man
drwxr-xr-x 2 root root   3 Jul 20 08:42 sbin
drwxr-xr-x 1 root root  60 Dec  2 19:53 share
drwxrwxr-x 1 root src   60 Dec  2 19:55 src
[email protected]:/usr/share/man$ touch /usr/local/src/a_file
touch: cannot touch '/usr/local/src/a_file': Permission denied
# it doesn't work

# now run "newgrp" on src group
[email protected]:/usr/share/man$ newgrp src
[email protected]:/usr/share/man$ touch /usr/local/src/a_file

# now you are truly part of src group
[email protected]:/usr/share/man$ ls -alh /usr/local/src
total 0
drwxrwxr-x 1 root    src      80 Dec  2 21:26 .
drwxr-xr-x 1 root    root    100 Jul 20 08:42 ..
-rw-rw-r-- 1 ubuntu  src       0 Dec  2 21:26 a_file
2
the_velour_fog

newgrp führt eine Shell aus, die ihre reale Gruppen-ID festlegt (siehe man 7 credentials) an die angeforderte Gruppe, bei der es sich entweder um eine der Gruppen handeln kann, zu denen der Benutzer gehört, oder um eine Gruppe, deren Kennwort der Benutzer kennt. (Gruppen können genau wie Benutzerkonten Kennwörter haben.)

Um zu der Situation vor newgrp zurückzukehren, verwenden Sie exit, um die von newgrp ausgeführte Shell zu beenden. Da newgrp eine neue Shell ausführt, müssen Sie vorsichtig sein, wenn Sie sie in Skripten verwenden (Tipp: leiten Sie einen Befehl hinein oder verwenden Sie ein Here-Dokument).

1
AlexP