Функция Newgrp

Я не мог точно понять функцию newgrp. Это помогает переместиться от одной группы к другой группе, для которой конкретный пользователь является участником. Или это позволяет становиться участником для группировки, для которого пользователь не является участником, но имеет пароль группы. Я не соглашаюсь с этим. Может любой из Вас мог дать мне четкое представление об этом.

1
задан 2 December 2016 в 10:56

2 ответа

Для понимания, что эти newgrp делает команда необходимо понять, что, когда Вы добавляете пользователя к группе, новый пользователь не будет на самом деле добавлен к группе, пока Вы не выйдете из системы и входите в снова. Это часто - стычка, потому что она закрывает все Ваши программы. newgrp позволяет Вам добавлять пользователя к группе и заставлять его вступить в силу на текущей сессии входа в систему.

использование

# 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
2
ответ дан 7 December 2019 в 12:37

newgrp выполнения оболочка, устанавливающая ее реальный идентификатор группы (см. man 7 credentials) требуемой группе, которая может быть или одной из групп, которым пользователь принадлежит, или группу которого пользователь знает пароль. (У групп могут быть пароли точно так же, как учетные записи пользователей.)

Для возврата к ситуации прежде newgrp использование exit для завершения оболочки, выполняемой newgrp. Поскольку newgrp выполнения новая оболочка необходимо быть осторожными при использовании его в сценариях (подсказка: передайте команду по каналу в него или используйте здесь-документ).

1
ответ дан 7 December 2019 в 12:37

Другие вопросы по тегам:

Похожие вопросы: