如何将现有用户添加到现有组?

我想添加Apache用户(www-data)至 audio 组。 我读过手册页。 useradd 但我运气不好。 我正在运行xubuntu11.10。 这就是我要做的:

$ sudo useradd -G audio www-datauseradd: user 'www-data' already exists

如果我把 -G 选项,bash,打印帮助信息 useradd:

$ sudo useradd  audio www-dataUsage: useradd [options] LOGINOptions: -b, --base-dir BASE_DIR       base directory for the home directory...

从手册页我不清楚我应该使用哪些选项来完成这项工作。

useradd 命令将尝试添加一个新用户。 由于您的用户已经存在,这不是您想要的。

相反:要修改现有用户,如将该用户添加到新组,请使用 usermod 命令。

试试这个:

sudo usermod -a -G groupName userName
  • -a (追加)开关是必不可少的. 否则,用户将从任何组中删除,而不是在列表中。

  • -G switch采用要将用户分配到的其他组的(逗号分隔)列表。

一般来说(对于GUI,或者对于已经运行的进程等。),用户 将需要注销并重新登录 看到他们的新组添加。 对于当前shell会话,您可以使用 newgrp:

newgrp groupName
  • newgrp 将组添加到当前shell会话。

将用户添加到组:

sudo adduser user group

从组中删除用户:

sudo deluser user group

添加到现有用户后:

usermod -a -G group user  

您可能需要 登出及登入 获取组权限 /etc/group.

我通常使用

sudo gpasswd -a myuser mygroup

我将此作为答案发布,因为我没有足够的声誉发表评论。 正如@dpendolino所提到的,为了这个命令的效果持续存在:

sudo usermod -a -G groupName userName

...您需要再次注销/登录。

但是,如果您需要一个快捷方式来开始使用新的组成员身份 立即 (你有正确的 须藤 1)我已经找到了这个解决方案:

$ sudo su -# su [userName]$ groups

解释说明:

  • sudo su - 会给你一个根壳
  • su [userName] 将您与您的用户返回到shell
  • groups 当运行现在将显示您添加的组与 usermod -aG 命令

在我的情况下,我试图将'docker'组添加到我的用户

以前:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

之后:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
sudo usermod -a -G groupName userName

会工作得很好,但我不得不这样做 重新启动 完全,只是注销并重新登录没有完成这项工作。..

在Ubuntu上,自 登录为 root 未启用,用户在 sudo 组可以提升某些受限命令的特权。 任何受限制的命令都必须在前面加上 sudo 提升特权。

sudo usermod -a -G 团体 用户

将添加现有用户 user 到名为的补充组 group. 用户的主组将保持不变。

要永久地将用户添加到组,请运行以下命令:

sudo usermod -a -G <groupname> <username>

然后注销并重新登录(或在必要时重新启动)。

解释说明:

usermod 命令 将修改 /etc/group 档案 在与该组相关的行中列出指定的用户名。 如果你跑 grep <groupname> /etc/group,您应该在输出中看到您的用户名。

在Linux中,每个进程都被分配给一个用户和组,任何子进程都继承父进程的用户和组。 因此,要使此更改生效并propogate,您需要注销并重新登录(此时 /etc/group 被读取和使用)。 在Wayland上,我发现完全重新启动是必要的。

如果运行命令 groups,您可以查看当前进程是否具有预期的组。