Linux创建用户组并分配用户权限方式

 更新时间:2025年11月04日 08:40:15   作者:清梦压星河_Ciao  
这篇文章主要介绍了Linux创建用户组并分配用户权限方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、如何创建用户组

在 Linux 系统中,创建用户组可以使用 groupadd 命令。

以下是创建用户组的具体步骤和常用选项:

1. 创建用户组

groupadd groupname

groupname 是你希望创建的用户组名称。

该命令将创建一个新的用户组,默认情况下,组的 GID(组 ID)会由系统自动分配。

示例:

groupadd developers

这会创建一个名为 developers 的用户组。

2. 指定 GID(组 ID)

如果你希望为新用户组指定一个特定的 GID,可以使用 -g 选项来指定该 GID。

groupadd -g GID groupname
  • GID 是你希望指定的组 ID。
  • groupname 是你希望创建的用户组名称。

示例:

groupadd -g 1001 dev_team

这将创建一个 GID 为 1001 的用户组 dev_team。

3. 查看用户组是否已创建

创建完用户组之后,你可以通过以下命令来检查该组是否存在:

getent group groupname

示例:

getent group developers

如果该用户组存在,命令将返回该组的信息。

4. 查看所有用户组

你还可以查看系统中所有的用户组列表,使用以下命令:

cat /etc/group

这将列出所有的用户组信息。

二、创建用户

在 Linux 系统中,可以通过以下方法创建用户和查看系统中的所有用户。

1. 创建用户

要在 Linux 系统中创建一个新用户,可以使用 useradd 命令。

sudo useradd username

username 是你要创建的用户的用户名。

默认情况下,这将创建一个没有指定主目录的用户。如果你希望为该用户创建主目录,并为其设置密码,可以使用以下命令:

创建用户并指定主目录:

sudo useradd -m username

-m 选项会为新用户创建主目录,目录路径通常为 /home/username。

设置用户密码:

sudo passwd username

执行后,系统会提示你为该用户设置密码。

其他常用选项:

  • -s:设置用户的默认 shell。例如,如果你想为用户指定 /bin/bash 作为 shell,可以使用 -s /bin/bash。
  • -G:将用户添加到多个组中。例如,将用户添加到 sudo 和 docker 组:
sudo useradd -m -G sudo,docker username

2. 查看系统中的所有用户

要查看系统中的所有用户,可以通过以下几种方式:

方式 1: 查看 /etc/passwd 文件

系统的所有用户信息存储在 /etc/passwd 文件中。你可以通过以下命令查看该文件:

cat /etc/passwd

每一行都表示一个用户,格式如下:

username:x:UID:GID:comment:home_directory:shell
示例:
zs:x:1000:1000:dk:/home/zs:/bin/bash
  • username 是用户名。
  • UID 是用户的唯一标识符(User ID)。
  • GID 是用户所在组的标识符。
  • comment 包含关于用户的额外信息。
  • home_directory 是用户的主目录。
  • shell 是用户的默认 shell。

方式 2: 使用 cut 命令只列出用户名

如果只想列出系统中的所有用户名,可以通过以下命令:

cut -d: -f1 /etc/passwd

这会列出 /etc/passwd 文件中的所有用户名。

三、分配用户权限

groupadd -g 1002 docker

创建了这个用户组后可以干嘛呢?

创建了 docker 用户组后,你可以将用户添加到这个组,并为该组的成员配置特定的权限。用户组本身是一个逻辑集合,用于对用户进行分组管理,以便更高效地控制对系统资源的访问权限。

以下是创建 docker 用户组后你可以做的几件事情:

1. 将用户添加到 docker 用户组

假设你创建了 docker 用户组,接下来你可以将现有用户添加到该用户组,以便赋予他们访问 docker 相关权限。

尤其是在某些 Linux 系统中,docker 组用于控制对 Docker 守护进程(docker daemon)的访问权限。只有加入 docker 组的用户才有权限执行 docker 命令(不需要使用 sudo)。

usermod -aG docker username

username 是你要添加到 docker 用户组的用户名。

示例:

sudo usermod -aG docker zs

这会将用户 zs添加到 docker 组。

2. 配置 Docker 权限

在大多数 Linux 系统中,docker 守护进程通常会运行在 root 权限下。

如果没有将用户添加到 docker 组,用户每次执行 docker 命令时都会需要使用 sudo。但是,添加到 docker 组的用户可以在不使用 sudo 的情况下直接运行 Docker 命令。

示例:

通过添加用户到 docker 组后,用户就可以直接运行 docker 命令,如:

docker ps

如果没有将用户添加到 docker 组,则运行命令时会提示需要 sudo 权限:

sudo docker ps

3. 查看和管理用户组

你可以通过查看 /etc/group 文件或使用 groups 命令来确认用户是否已成功添加到 docker 用户组:

查看某个用户所属的所有组:

groups username

4. Docker 安全性

通过将用户添加到 docker 用户组,实际上是在授予该用户对 Docker 守护进程的访问权限。因为 Docker 守护进程有能力以 root 权限访问宿主机的文件系统和资源,所以将用户添加到 docker 组中,意味着该用户可以执行可能带有系统风险的操作。

5. 组的作用:权限控制

在没有 Docker 的情况下,docker 用户组本身只会作为一种分组工具,不会直接影响其他操作系统资源。你可以利用用户组来组织其他操作系统级别的权限控制(例如,文件、目录的读写权限)。

举例:

你可以创建 docker 组,并将需要使用特定文件夹或资源的用户添加到该组中。然后,使用 chown 和 chmod 命令,指定文件或目录的所有者和权限,使得 docker 组中的用户能够访问或修改该资源。

6. 问题

创建用户组docker是不是表示加入这个组的用户就能使用docker命令了?

答:是的,创建一个名为 docker 的用户组,并将用户加入该组,意味着这些用户可以在不使用 sudo 的情况下执行 Docker 命令。这是因为 Docker 默认情况下需要 root 权限,而通过将用户添加到 docker 组,可以赋予这些用户 Docker 守护进程的访问权限。

添加用户到组后,用户需要重新登录才能生效。可以选择注销并重新登录。

为什么需要这个组?

Docker 守护进程通常是以 root 用户身份运行的。为了避免每次运行 Docker 命令时都需要使用 sudo,你可以将用户添加到 docker 组,从而授予该用户对 Docker 守护进程的访问权限。docker 组的权限等效于对

Docker 守护进程的访问控制,允许用户执行 Docker 命令而不需要管理员权限。

所以用户组名称需要跟具体命令一致吗?

不,用户组名称不需要和具体的命令名称一致。你可以为用户组选择任何名字,但通常情况下,像 docker 这样的名称是为了直观地表示这个组的目的(即管理 Docker 权限)。

在 Linux 系统中,用户组名称只是一个标识符,用于对一组用户进行分组。一个用户组的名称并不需要与具体命令(如 docker)相同。

Docker 用户组的名称 docker 是 Docker 官方建议的惯例。创建这个用户组的目的是为了简化 Docker 的权限管理,使得加入该组的用户能够无 sudo 执行 Docker 命令。

可以使用其他名称吗?

理论上,你可以创建一个用户组,命名为任何你喜欢的名字,比如 docker-users、devops 等,然后将用户加入这个组,也能实现类似的效果。但关键是,Docker 守护进程会检查 docker 组,而不是其他组。因此,如果你使用了其他组名称,你可能需要做一些额外的配置,来确保 Docker 守护进程能识别并允许该组的用户执行 Docker 命令。

举个例子:

如果你创建一个自定义的组,比如 docker-admin,你可以将用户添加到该组,但需要确保 Docker 守护进程能识别该组。

但如果你直接使用默认的 docker 组,Docker 会自动识别并赋予该组的成员对 Docker 命令的访问权限。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Ubuntu系统的备份和恢复实现方式

    Ubuntu系统的备份和恢复实现方式

    Timeshift是Linux系统备份与恢复工具,支持增量式备份和Btrfs快照,备份位置可选择非系统硬盘或移动U盘,用户可以通过图形界面或终端命令进行操作,包括全备份和选择性备份,恢复系统时,可以使用LiveCD进行操作
    2025-12-12
  • 详解 MAC/Linux Vi配置环境变量及Java环境变量配置

    详解 MAC/Linux Vi配置环境变量及Java环境变量配置

    这篇文章主要介绍了详解 MAC/Linux Vi配置环境变量及Java环境变量配置的相关资料,需要的朋友可以参考下
    2017-06-06
  • linux查看匹配内容的前后几行方法

    linux查看匹配内容的前后几行方法

    这篇文章给大家分享了linux查看匹配内容的前后几行的方法以及实例代码,有兴趣的朋友可以参考学习下。
    2018-07-07
  • Linux进程信号的用法及说明

    Linux进程信号的用法及说明

    Linux信号是进程间异步通知机制,分传统(1-31)与实时(34-64)信号,处理方式包括默认、忽略和自定义,通过阻塞信号可控制其递达,系统调用如sigprocmask和sigpending用于管理信号状态与处理
    2025-07-07
  • cloudera manager 设置开机自启的方法

    cloudera manager 设置开机自启的方法

    下面小编就为大家带来一篇cloudera manager 设置开机自启的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

    Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

    在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(block devices)信息,可以帮助我们快速查看磁盘、分区、挂载点等内容,在本文中,我们将详细介绍Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法
    2025-05-05
  • Git提交日志修改方法实例汇总

    Git提交日志修改方法实例汇总

    这篇文章主要介绍了Git提交日志修改方法实例汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 一步步教你如何开启、关闭ubuntu防火墙

    一步步教你如何开启、关闭ubuntu防火墙

    这篇文章主要给大家介绍了关于如何开启、关闭ubuntu防火墙的相关资料,文中将ubuntu系统中防火墙的安装以及使用介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • LINUX中IPTABLES防火墙的基本使用教程

    LINUX中IPTABLES防火墙的基本使用教程

    这篇文章主要给大家介绍了关于LINUX中IPTABLES防火墙的基本使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-01-01
  • 基于CentOS的Hadoop分布式环境的搭建开发

    基于CentOS的Hadoop分布式环境的搭建开发

    本篇文章介绍了基于CentOS的Hadoop分布式环境的搭建开发,有兴趣的可以了解一下。
    2016-11-11

最新评论