Ale*_*xar 47 users permissions group
假设我使用用户登录takpar
:
takpar@skyspace:/$
Run Code Online (Sandbox Code Playgroud)
作为 root,我使用以下命令添加takpar
为组成员webdev
:
# usermod -a -G webdev takpar
Run Code Online (Sandbox Code Playgroud)
但似乎还没有应用,因为例如我无法进入webdev
具有组读取权限的's 目录:
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
Run Code Online (Sandbox Code Playgroud)
但是重新启动后,我可以按预期访问。由于这种组更改在我的日常工作中,是否有任何方法无需重新启动即可应用更改?
回答
似乎没有办法让当前会话知道新组,例如文件管理器不会处理新更改。但是重新登录就可以了。该su
命令也适用于当前会话中的临时命令。
Sté*_*nez 69
本地解决方法:使用su yourself
重新登录。在新会话中,您将被视为该组的成员。
手册页newgrp
和sg
也可能感兴趣更改当前组ID(和登录到一个新组):
要webdev
在当前 shell 中使用 的组 ID(和权限),请使用:
newgrp webdev
Run Code Online (Sandbox Code Playgroud)要使用某个组 ID 启动命令(并在 shell 中保留当前权限),请使用:
sg webdev -c "command"
Run Code Online (Sandbox Code Playgroud)
(sg
就像su
但是对于组,如果您在系统数据中被列为组的成员,它应该可以在没有组密码的情况下工作)
重新启动系统是一种矫枉过正,如果您使用gpasswd
.
您可以使用以下方法添加takpar
到webdev
组:
$ gpasswd -a takpar webdev
Run Code Online (Sandbox Code Playgroud)
您可以使用以下getent group {name}
命令检查组成员身份:
$ getent group webdev
webdev:x:1008:webdev,takpar
Run Code Online (Sandbox Code Playgroud)
这应该与cat /etc/group | grep webdev
. 为了完整起见,这里是shell 会话的id
输出takpar
:
$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
Run Code Online (Sandbox Code Playgroud)