Para entender o que o comando newgrp
faz, você precisa entender que quando você adiciona um usuário a um grupo, o novo usuário não será realmente adicionado ao grupo, até que você efetue logout e login novamente. Isso geralmente é um incômodo porque mata todos os seus programas. newgrp
permite adicionar um usuário a um grupo e torná-lo efetivo na sessão de login atual.
uso
# show groups user "ubuntu" belongs to
ubuntu@ubuntu:/usr/share/man$ groups ubuntu
ubuntu : ubuntu adm cdrom sudo dip plugdev lpadmin sambashare
# add user "ubuntu" to group: src
ubuntu@ubuntu:/usr/share/man$ sudo gpasswd -a ubuntu src
Adding user ubuntu to group src
ubuntu@ubuntu:/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/
ubuntu@ubuntu:/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
ubuntu@ubuntu:/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
ubuntu@ubuntu:/usr/share/man$ newgrp src
ubuntu@ubuntu:/usr/share/man$ touch /usr/local/src/a_file
# now you are truly part of src group
ubuntu@ubuntu:/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