Linux 上 'sudo usermod -a -G group $USER' 做什么?
在我们的文章中,特别是像解决尝试连接到 Docker 守护进程套接字时 Docker 权限被拒绝这样的文章中,你经常可以看到类似这样的命令
usermod_example.sh
sudo usermod -a -G docker $USER但此命令实际上在你的系统上做什么?
让我们分解一下:
sudo意味着:以 root 身份运行此命令。usermod 需要此权限,因为通常只有 root 可以修改用户属于哪些组usermod是一个修改特定用户系统配置的命令(在我们的示例中为$USER- 见下文)。请参见手册页文档了解你可以用它做什么的更多详情!-a是--append的快捷方式:它意味着将组追加到用户所属的组列表中!-G是--groups的快捷方式:它告诉 usermod 下一个参数是一个组。注意这里需要使用大写-G,因为我们不想修改用户的主要组,而是用户所属的补充组列表。请参见下方的主要和补充组部分了解更多详情。docker是我们想要将$USER添加到的组。这可以是任何 Linuxgroup,只要它存在。使用less /etc/group查看所有存在的组!$USER是我们想要修改的用户。$USER是运行命令的用户的 shell 快捷方式。即使使用sudo这也有效(即如果你的用户名为uli并且你运行sudo usermod -a -G docker $USER,用户 uli 将被添加到 docker 组,而不是用户 root,即使命令以 root 身份运行)。你也可以使用特定用户名代替 $USER,例如sudo usermod -a -G docker john将用户john添加到 docker 组
主要和补充组
当你浏览 usermod 手册页时,你会看到有 -G 将组添加到用户的补充组列表,还有 -g 修改用户的主要组。
实用的答案是:如果你需要问,你总是需要使用 -G。
根据我的经验,必须修改用户的主要组是非常罕见的。主要组存在的目的主要是如果你创建文件,Linux 需要知道它默认属于哪个组(即如果你不显式指定组)。
请参见此 AskUbuntu 帖子了解主要和补充组用途的更多详情。
Check out similar posts by category:
Linux
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow