将用户添加到组但在运行"id"时不反映

mat*_*t_k 23 unix linux

R创建一个名为staff的组,我希望能够在不启动R作为sudo的情况下更新包.所以我把自己添加到工作人员使用:

sudo usermod -G adm,dialout,cdrom,plugdev,lpadmin,admin,sambashare,staff matt
Run Code Online (Sandbox Code Playgroud)

(附带问题是否有一种方法可以将自己添加到一个组而不列出您所属的其他组?)

如果我检查/ etc/groups我看到了

staff:x:50:matt
Run Code Online (Sandbox Code Playgroud)

和/ etc/shadow一样

staff:*::matt
Run Code Online (Sandbox Code Playgroud)

但是,如果我经营团体或身份证,我不是员工.另外,我无法对/ usr/local/lib/R中的任何内容进行更改.

fre*_*eit 48

您是否在运行sudo usermod命令后将"matt"帐户登录并重新登录?用户在unix下的组的更改仅在登录时生效.

  • 请注意,如果您通过`ssh`登录并且您拥有`ControlMaster`,则连接将保持打开并重复使用,因此您也不会看到这些组.要在这些情况下强制进行真正的新登录,您需要首先使用`ssh -O exit hostname`来终止ssh共享连接 (4认同)

lxo*_*xop 5

回答您的附带问题,是的,您可以将用户添加到组中,而无需列出所有用户。如果您运行基于 Debian 的系统,则可以使用

sudo adduser matt staff

adduser实用程序只是围绕 useradd/usermod 等的友好包装。

如果您没有该adduser实用程序,您仍然可以使用 usermod 来完成:

sudo usermod -a -G staff matt

-a标志表示追加(而不是覆盖)。