当前位置: 首页 > news >正文

Linux用户

Linux用户

  • 1、创建用户和密码
  • 2、用户组
  • 3、查看用户及用户组信息
  • 4、查看文件权限
  • 5、创建root权限用户
    • ✅ 一、创建用户
    • ✅ 二、设置用户root权限类型
    • ✅三、设置用户docker权限
  • 6.1、Linux 为普通用户添加Docker权限
  • 6.2、root下的docker权限分配给其他用户和所有权限分配给用户区别
    • ✅ 解决方案:让当前用户加入 `docker` 用户组
    • ✅ 验证是否生效
    • 🛑 补充说明(为什么不能直接访问)
  • 7、分配给用户普通权限和root权限
    • ✅ 一、创建用户
    • ✅ 二、设置用户权限类型
      • 🟢 1. **赋予普通权限用户**
      • 🔴 2. **赋予 root 权限(sudo 权限)用户**
        • 方法一:将用户添加到 `wheel` 组(推荐)
        • 方法二:直接在 sudoers 文件中添加特定用户(不推荐新手使用,风险大)
    • ✅ 三、批量创建多个用户并分配权限(可选)
      • 示例:使用 bash 脚本批量创建用户
    • ✅ 四、验证 sudo 权限
    • ✅ 五、umr(umr为用户名)组用户有哪些权限,该组是否有root权限?
      • 如何判断umr组权限?
      • 如何判断wheel组是否有root权限?
      • 结论
  • 8、权限
    • 🧩 一、Linux 权限模型回顾
    • ✅ 二、给用户/用户组分配 **普通权限(文件级别权限)**
      • ▶ 创建用户和用户组
      • ▶ 设置文件或目录的所有者与权限
    • ✅ 三、给用户或组分配 **root 权限(sudo 权限)**
      • ▶ 方法1:加入 `sudo` 或 `wheel` 组(视系统而定)
      • ▶ 方法2:直接在 `/etc/sudoers` 中添加规则(更细粒度控制)
    • 🎯 权限设置总结对比:
    • 💡 示例场景
      • 普通权限示例(只允许 dev 组成员访问项目目录)
      • root 权限示例(devuser 可以重启 nginx)
  • 9、用户组(操作)
    • 🔹 **1. 查看所有用户组**
    • 🔹 **2. 查看所有用户及其所属组**
    • 🔹 **3. 查看某个用户所属的所有组**
    • 🔹 **4. 查看某个组的详细信息**
    • 🔹 **5. 查看组权限**
    • 🔹 **6. 查看目录的组权限**
      • ✅ 1. **查看用户所属的组**
      • ✅ 2. **列出系统所有组及成员**
      • ✅ 3. **查看某个组的成员**
      • ✅ 4. **查看某目录或文件的组权限**
      • ✅ 5. **查看某目录的ACL权限(如果启用了 ACL)**
      • ✅ 6. **判断某个组是否有 `sudo` 权限**
    • ✅ 一、创建用户
    • ✅ 二、设置用户权限类型
      • 🟢 1. **赋予普通权限用户**
      • 🔴 2. **赋予 root 权限(sudo 权限)用户**
        • 方法一:将用户添加到 `wheel` 组(推荐)
        • 方法二:直接在 sudoers 文件中添加特定用户(不推荐新手使用,风险大)
    • ✅ 三、批量创建多个用户并分配权限(可选)
      • 示例:使用 bash 脚本批量创建用户
    • ✅ 四、验证 sudo 权限
    • ✅ 1. **文件与目录的基本权限(rwx)**
    • ✅ 2. **特殊权限位**
    • ✅ 3. **ACL(访问控制列表)权限**
      • 设置 ACL 权限
      • 查看 ACL 权限
    • ✅ 4. **sudo 权限(root 权限)**
    • ✅ 5. **系统服务相关权限(可选项)**
    • ✅ 总结:用户组可以通过以下机制获得权限

1、创建用户和密码

  1. 在root权限下,
    命令:useradd +用户名,它不会在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的;
    命令:useradd -m +用户名,将在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。

    useradd选项:

    -c comment 指定一段注释性描述。
    -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g 用户组 指定用户所属的用户组。
    -G 用户组,用户组 指定用户所属的附加组。
    -s Shell文件 指定用户的登录Shell。
    -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
    
  2. 命令:adduser +用户名,在/home目录下会自动创建同名文件夹
    创建新用户后,同时会在etc目录下的passwd文件中添加这个新用户的相关信息

    增加用户:# useradd -d /usr/username -m username
    useradd username
    为用户增加密码:
    passwd username
    
  3. 切换用户
    su - 与su的区别
    su - USERNAME切换用户后,同时切换到新用户的工作环境中
    su USERNAME切换用户后,不改变原用户的工作目录,及其他环境变量目录

    用户切换命令
    在Linux中,su(switch user的缩写)命令允许用户切换到另一个用户。如果在su命令后面加上-,则会切换到目标用户并更改环境变量。如果不加-,则只切换用户,但保持原来的环境变量不变。
    例如,要切换到用户charles_1,可以使用以下命令:
    su - charles_1
    或者:
    su charles_1
    根据是否添加-,环境变量会相应地更改或保持不变。
    

2、用户组

  • 添加新用户组(groupadd)

    groupadd 选项 用户组
    -g GID 指定新用户组的组标识号(GID)。
    -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
    

    用户组的添加和删除:

    groupadd testgroup 组的添加
    groupdel testgroup 组的删除
    

    说明:组的增加和删除信息会在etc目录的group文件中体现出来。

  • Linux添加用户(user)到用户组(group)
    将一个用户添加到用户组中,千万不能直接用:

    usermod -G groupA 
    

    这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员。
    应该用 加上 -a 选项:

    usermod -a -G groupA user
    

3、查看用户及用户组信息

  • 查看当前用户的命令

    要查看当前登录的用户,可以使用以下命令:
    who:这个命令会显示当前登录系统的用户列表,包括用户名、登录的终端、登录时间等信息。
    whoami:这个命令会输出当前用户的用户名,是一个非常简洁的命令。
    w:这个命令不仅显示当前用户的信息,还包括用户的活动状态,如正在执行的命令等。
    例如,要查看当前用户,可以在终端中输入以下命令:whoami
    
  • id命令(当前用户)
    id命令用于显示用户和组的信息。可以使用该命令查看用户和组的ID、名称和所属组等信息。
    示例:

    $ id username
    uid=1000(username) gid=1000(username) groups=1000(username)
    
  • groups 用户组
    groups 查看当前登录用户的组内成员
    groups gliethttp 查看gliethttp用户所在的组,以及组内成员
    whoami 查看当前登录用户名
    /etc/group文件包含所有组
    /etc/shadow和/etc/passwd系统存在的所有用户名

    Linux中查看用户组的命令是”groups”。可以通过在命令行中输入”groups”命令来查看当前用户所属的用户组。这将显示当前用户的主组以及任何其他附加组。默认情况下,Linux系统中的每个用户都至少属于一个用户组。如果你想查看其他用户的用户组,可以使用”groups”命令后面跟上用户名。例如,”groups username”将显示指定用户名所属的用户组。除了”groups”命令,还可以使用其他命令来查看用户组的信息。以下是一些常用的命令:1. “id”命令:可以显示当前用户的用户ID(UID)和用户组ID(GID)。通过在命令行中输入”id”命令,系统将返回当前用户的UID、GID以及所属用户组的名称。2. “cat /etc/group”命令:可以列出系统中的所有用户组。通过在命令行中输入”cat /etc/group”命令,系统将显示所有用户组的名称、GID以及组成员。3. “getent group”命令:可以以更友好的格式显示用户组信息。通过在命令行中输入”getent group”命令,系统将以表格形式列出所有用户组的名称、GID以及组成员。这些命令可以帮助你在Linux系统中查看用户组的信息。无论是查看当前用户的用户组,还是查看系统中所有用户组的信息,都可以使用这些命令实现。
    

4、查看文件权限

查看文件权限实例(x代表可执行、r-代表可读、w代表可写):

[root@VM-4-16-centos poetry]# ll 
total 12
drwxrwxr-x 2 zdb1 poetry 4096 Jan 19 14:58 123
-rw-r--r-- 1 zdb1 poetry  670 Jan 19 14:57 1.txt
-rw-rw-r-- 1 zdb1 poetry    4 Jan 19 15:00 2.txt

最开头那个 - 代表的是类型(-代表文件,d代表目录,l代表连接)
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)

5、创建root权限用户

✅ 一、创建用户

sudo useradd 用户名
sudo passwd 用户名

示例:

sudo useradd alice
sudo passwd alice

默认也创建的同名的普通用户组:
[root@server ~]# id umr
uid=1001(umr) gid=1001(umr) 组=1001(umr)

✅ 二、设置用户root权限类型

🟢 1. 赋予普通权限用户

默认情况下,创建的用户就是普通用户,只能访问自己有权限的文件,无法执行如 yumsystemctlreboot 等需要 root 的命令。

无需做额外操作。


🔴 2. 赋予 root 权限(sudo 权限)用户

方法一:将用户添加到 wheel 组(推荐)

sudo usermod -aG wheel 用户名

示例:

sudo usermod -aG wheel alice

wheel 是默认被授予 sudo 权限的用户组,可通过 /etc/sudoers 文件确认:

sudo cat /etc/sudoers | grep '%wheel'

应有如下内容:

%wheel  ALL=(ALL)       ALL

✅三、设置用户docker权限

2. **将用户添加到 Docker 组**:   sudo usermod -aG docker <username>将 `<username>` 替换为要添加的实际用户名。

6.1、Linux 为普通用户添加Docker权限

在 Docker 中,默认情况下,Docker 守护进程通常以 root 用户身份运行,因此只有 root 用户和属于 docker 组的用户可以访问 Docker 命令和管理容器。这意味着,如果其他用户想要使用 Docker,他们需要被添加到 docker 组中。

### 将用户添加到 Docker 组的方法:
1. **创建 Docker 组(如果尚未存在)**: 第一步查看是否有docker用户组:cat /etc/group | grep docker如果出现docker就不用添加,没的话添加docker用户组:sudo groupadd docker
2. **将用户添加到 Docker 组**:   sudo usermod -aG docker <username>`<username>` 替换为要添加的实际用户名。3. **重新登录**:用户被添加到 docker 组后,需要重新登录以使权限生效。可以执行以下命令以重新登录:su - username或者刷新用户组更改用户加入组后,需要重新登录才能使更改生效。可以通过以下方法刷新更改:注销并重新登录。或者运行以下命令立即应用更改:newgrp docker4.验证权限(可选):
用以下命令确认用户是否在 docker 组中:
groups username

6.2、root下的docker权限分配给其他用户和所有权限分配给用户区别

在 Docker 中,权限分配给其他用户和将所有权限分配给用户之间有显著区别,具体如下:### 1. **root 下的 Docker 权限分配给其他用户**- **添加到 Docker 组**:- 将用户添加到 `docker` 组后,该用户可以使用 Docker 命令,而无需使用 `sudo`。- 用户在执行 Docker 命令时仍然会以 `root` 用户的身份运行,这意味着他们可以创建、管理和删除 Docker 容器和镜像。- 这种方式提供了一个较高的权限级别,但用户仍然受到组权限的限制。- **潜在风险**:- 由于 `docker` 组的成员可以在容器内运行任何命令,包括访问主机文件系统和执行任意操作,这可能会带来安全隐患。### 2. **所有权限分配给用户**- **直接使用 `sudo``root` 权限**:- 如果用户被授予 `root` 权限,或者直接以 `root` 用户身份登录,他们将能够访问系统上的所有命令和资源,包括 Docker。- 这种情况下,用户没有任何权限限制,可以自由执行任何操作,可能会导致系统不稳定或安全漏洞。- **安全性**:- 直接使用 `root` 权限是最不安全的做法之一,因为它给用户提供了完全的控制权,容易导致意外或恶意的系统更改。- 理想情况下,应该限制使用 `root` 权限,只在必要时使用 `sudo` 来执行特权命令。### 总结- **权限分配给其他用户**:可以通过将用户添加到 `docker` 组来授予 Docker 访问权限,但仍需谨慎管理这些用户,以避免潜在的安全风险。
- **所有权限分配给用户**:直接授予 `root` 权限意味着用户可以访问系统的所有部分,这是不安全的,应该尽量避免。最佳实践是使用最小权限原则,限制用户的权限以降低安全风险。

这个错误提示:

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

说明你当前用户 没有权限访问 Docker 的守护进程(daemon),无法执行 Docker 命令。


✅ 解决方案:让当前用户加入 docker 用户组

  1. 添加用户到 docker(以当前用户为例):
sudo usermod -aG docker $USER

如果是指定用户:

sudo usermod -aG docker username
  1. 重新登录 shell 会话以生效

最简单的方式是注销重新登录,或者在当前终端执行:

newgrp docker

✅ 验证是否生效

重新运行 Docker 命令,例如:

docker ps

或你之前的:

docker pull codercom/code-server

不应该再出现 permission denied


🛑 补充说明(为什么不能直接访问)

Docker 默认的 Unix socket /var/run/docker.sock 只允许 rootdocker 组访问。如果你直接用普通用户运行 docker 命令,就会看到上述 permission denied 错误。


如果你希望临时执行 Docker 命令,也可以加 sudo

sudo docker run ...

但长期使用更建议配置好用户组权限。

如有需要,我可以帮你写一个检查并自动添加用户到 docker 组的脚本。

7、分配给用户普通权限和root权限

在 CentOS 中创建多个用户并赋予普通权限root权限,可以按以下步骤操作:


✅ 一、创建用户

sudo useradd 用户名
sudo passwd 用户名

示例:

sudo useradd alice
sudo passwd alice

默认也创建的同名的普通用户组:
[root@server ~]# id umr
uid=1001(umr) gid=1001(umr) 组=1001(umr)

✅ 二、设置用户权限类型

🟢 1. 赋予普通权限用户

默认情况下,创建的用户就是普通用户,只能访问自己有权限的文件,无法执行如 yumsystemctlreboot 等需要 root 的命令。

无需做额外操作。


🔴 2. 赋予 root 权限(sudo 权限)用户

方法一:将用户添加到 wheel 组(推荐)
sudo usermod -aG wheel 用户名

示例:

sudo usermod -aG wheel alice

wheel 是默认被授予 sudo 权限的用户组,可通过 /etc/sudoers 文件确认:

sudo cat /etc/sudoers | grep '%wheel'

应有如下内容:

%wheel  ALL=(ALL)       ALL
方法二:直接在 sudoers 文件中添加特定用户(不推荐新手使用,风险大)

编辑 sudoers 文件(推荐使用 visudo 工具):

sudo visudo

添加:

alice   ALL=(ALL)       ALL

[root@server ~]# id umr
uid=1001(umr) gid=1001(umr)=1001(umr),10(wheel)

✅ 三、批量创建多个用户并分配权限(可选)

示例:使用 bash 脚本批量创建用户

#!/bin/bash# 创建普通用户
for user in user1 user2 user3; douseradd "$user"echo "$user:123456" | chpasswd
done# 创建具有 root 权限的用户
for admin in admin1 admin2; douseradd "$admin"echo "$admin:123456" | chpasswdusermod -aG wheel "$admin"
done

保存为 create_users.sh 并运行:

sudo bash create_users.sh

✅ 四、验证 sudo 权限

用该用户登录后,运行以下命令测试是否有 sudo 权限:

sudo whoami
  • 有权限:返回 root
  • 无权限:提示 “is not in the sudoers file”

如果你告诉我你要创建多少个用户、哪些是普通用户、哪些是管理员用户,我可以帮你生成完整脚本。

✅ 五、umr(umr为用户名)组用户有哪些权限,该组是否有root权限?

umr组用户有哪些权限,该组是否有root权限:

[root@server ~]# id umr
uid=1001(umr) gid=1001(umr)=1001(umr),10(wheel)

你的情况:

uid=1001(umr) gid=1001(umr) 组=1001(umr),10(wheel)

说明:

  • 用户 umr 属于两个组:主组 umr(gid=1001)和附加组 wheel(gid=10)
  • umr 组本身(gid=1001)权限是普通用户组权限,默认没有root权限
  • wheel 组通常是系统中赋予sudo权限的组,是否拥有root权限取决于sudo配置

如何判断umr组权限?

  • umr组本身权限:查看该组拥有的文件权限(例如,某些目录或文件的所属组是umr),可以用命令
getent group umr

find / -group umr -ls

查看哪些文件归属该组,以及它们的权限。

但一般来说,普通用户自建的组(如umr)没有root权限。


如何判断wheel组是否有root权限?

  • 查看sudoers配置文件(或/etc/sudoers.d目录),确认wheel组是否被授予sudo权限:
grep wheel /etc/sudoers

一般会看到类似:

%wheel ALL=(ALL) ALL

表示wheel组的成员可以使用sudo执行任何命令,即拥有“root权限”的途径。


结论

  • umr 组一般没有root权限,只是普通权限
  • wheel 组成员一般有sudo权限,可以临时以root身份执行命令
  • 你的用户umr属于wheel组,因此可以使用sudo获得root权限(前提是sudoers文件配置允许)

如果你想验证umr用户是否能用sudo执行root命令,执行:

sudo -l

或者直接试试:

sudo whoami

如果输出 root,说明有sudo权限。


需要帮你写详细命令或分析吗?

8、权限

在 Linux 中,可以通过 用户、用户组和权限系统(文件所有权和 sudo 权限) 来分配“普通权限”和“root权限”。下面是详细说明和操作方法:


🧩 一、Linux 权限模型回顾

每个文件/目录都有:

  • 一个 所有者用户(user)
  • 一个 所有者用户组(group)
  • 三种权限:读 r / 写 w / 执行 x
  • 分别对:文件拥有者 / 组内用户 / 其他用户

✅ 二、给用户/用户组分配 普通权限(文件级别权限)

▶ 创建用户和用户组

# 创建用户组
sudo groupadd devgroup# 创建用户并加入组
sudo useradd -m -G devgroup devuser
sudo passwd devuser

▶ 设置文件或目录的所有者与权限

# 设置目录归属
sudo chown devuser:devgroup /data/project# 设置权限(如:770 -> 拥有者+组可读写执行,其他人无权限)
sudo chmod 770 /data/project

这样:

  • devuserdevgroup 的用户可访问该目录;
  • 其他用户无法访问。

✅ 三、给用户或组分配 root 权限(sudo 权限)

▶ 方法1:加入 sudowheel 组(视系统而定)

  • Ubuntu / Debian:

    sudo usermod -aG sudo devuser
    
  • CentOS / RHEL:

    sudo usermod -aG wheel devuser
    

这些组默认在 /etc/sudoers 中配置为可以执行所有命令。


▶ 方法2:直接在 /etc/sudoers 中添加规则(更细粒度控制)

使用 visudo 安全编辑 sudo 配置:

sudo visudo

添加以下一行:

devuser ALL=(ALL) ALL           # 需要输入密码
# 或:
devuser ALL=(ALL) NOPASSWD: ALL # 不需要输入密码

你也可以给整个用户组加 sudo 权限:

%devgroup ALL=(ALL) ALL

🎯 权限设置总结对比:

类型示例权限用途
文件权限chmod 770 / chown user:group控制谁能读/写/执行文件或目录
用户组权限usermod -aG group user管理多个用户共享资源
sudo 权限visudo / 加入 sudowheel提升为 root,运行所有或特定命令

💡 示例场景

普通权限示例(只允许 dev 组成员访问项目目录)

sudo mkdir /srv/devproject
sudo chown root:devgroup /srv/devproject
sudo chmod 770 /srv/devproject

root 权限示例(devuser 可以重启 nginx)

sudo visudo

添加:

devuser ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx

如果你有实际的用户/组名和操作目标(比如具体目录或程序),我可以帮你直接写出配置命令。是否需要?

9、用户组(操作)

在 CentOS 中查看所有用户组及其权限,可以使用以下命令:


🔹 1. 查看所有用户组

cat /etc/group

这个文件列出了所有的用户组。格式如下:

组名:x:GID:组内用户

例如:

wheel:x:10:root,user1
docker:x:999:user2

🔹 2. 查看所有用户及其所属组

getent passwd

或者更清晰地查看每个用户和其主组:

awk -F: '{ print $1, $4 }' /etc/passwd

其中:

  • 第1列是用户名
  • 第2列是主组的 GID(Group ID)

你可以进一步查 GID 对应的组名:

getent group <GID>

🔹 3. 查看某个用户所属的所有组

groups username

或者:

id username

输出示例:

uid=1000(user1) gid=1000(user1) groups=1000(user1),10(wheel),999(docker)

🔹 4. 查看某个组的详细信息

getent group groupname

🔹 5. 查看组权限

Linux 中的“组权限”通常指文件和目录对该组的访问权限。你可以使用:

ls -l

输出示例:

-rw-r----- 1 root  wheel  1234 Jul 25 10:00 example.txt

解释:

  • -rw-r----- 表示权限(属主可读写,属组可读,其他用户无权限)
  • root 是属主
  • wheel 是属组

🔹 6. 查看目录的组权限

可以结合 ls -ld 查看目录:

ls -ld /etc

还可以查看 ACL 权限(如果启用了 ACL):

getfacl filename_or_dirname

如需我帮你列出某个用户的组或某个组的用户,请提供用户名或组名。

在 CentOS(或其他基于 Linux 的系统)中,你可以通过以下几种方式查看用户组的权限信息:


✅ 1. 查看用户所属的组

id 用户名

示例:

id john

输出示例:

uid=1001(john) gid=1001(john) groups=1001(john),10(wheel),1002(dev)

表示用户 john 属于组 john(主组)、wheeldev


✅ 2. 列出系统所有组及成员

getent group

或者:

cat /etc/group

输出格式:

group_name:x:GID:user1,user2,...

✅ 3. 查看某个组的成员

getent group 组名

示例:

getent group wheel

输出示例:

wheel:x:10:root,john

✅ 4. 查看某目录或文件的组权限

ls -l /path/to/file

输出示例:

-rw-rw-r--. 1 john dev 4096 Jul 25 10:00 example.txt

说明:

  • 所有者是 john
  • 所属组是 dev
  • 权限为 rw-rw-r--,表示组有读写权限

✅ 5. 查看某目录的ACL权限(如果启用了 ACL)

getfacl /path/to/file_or_dir

例如:

getfacl /home/john/

可显示更细粒度的组或用户权限控制。


✅ 6. 判断某个组是否有 sudo 权限

查看 sudoers 文件中是否包含该组:

sudo cat /etc/sudoers | grep %groupname

比如:

sudo cat /etc/sudoers | grep %wheel

输出示例:

%wheel  ALL=(ALL)       ALL

表示 wheel 组内用户有 sudo 权限。


如需进一步帮你判断“某个用户是否能访问某个路径”,可以结合实际权限输出内容来分析。需要的话可以提供用户名和路径,我可以帮你具体分析权限逻辑。

在 CentOS 中创建多个用户并赋予普通权限root权限,可以按以下步骤操作:


✅ 一、创建用户

sudo useradd 用户名
sudo passwd 用户名

示例:

sudo useradd alice
sudo passwd alice

✅ 二、设置用户权限类型

🟢 1. 赋予普通权限用户

默认情况下,创建的用户就是普通用户,只能访问自己有权限的文件,无法执行如 yumsystemctlreboot 等需要 root 的命令。

无需做额外操作。


🔴 2. 赋予 root 权限(sudo 权限)用户

方法一:将用户添加到 wheel 组(推荐)
sudo usermod -aG wheel 用户名

示例:

sudo usermod -aG wheel alice

wheel 是默认被授予 sudo 权限的用户组,可通过 /etc/sudoers 文件确认:

sudo cat /etc/sudoers | grep '%wheel'

应有如下内容:

%wheel  ALL=(ALL)       ALL
方法二:直接在 sudoers 文件中添加特定用户(不推荐新手使用,风险大)

编辑 sudoers 文件(推荐使用 visudo 工具):

sudo visudo

添加:

alice   ALL=(ALL)       ALL

✅ 三、批量创建多个用户并分配权限(可选)

示例:使用 bash 脚本批量创建用户

#!/bin/bash# 创建普通用户
for user in user1 user2 user3; douseradd "$user"echo "$user:123456" | chpasswd
done# 创建具有 root 权限的用户
for admin in admin1 admin2; douseradd "$admin"echo "$admin:123456" | chpasswdusermod -aG wheel "$admin"
done

保存为 create_users.sh 并运行:

sudo bash create_users.sh

✅ 四、验证 sudo 权限

用该用户登录后,运行以下命令测试是否有 sudo 权限:

sudo whoami
  • 有权限:返回 root
  • 无权限:提示 “is not in the sudoers file”

如果你告诉我你要创建多少个用户、哪些是普通用户、哪些是管理员用户,我可以帮你生成完整脚本。

在 CentOS(或大多数 Linux 系统)中,用户组的权限不是像 Windows 一样直接“赋予权限列表”,而是通过以下几种机制控制的:


✅ 1. 文件与目录的基本权限(rwx)

每个文件/目录都属于一个用户和一个用户组。

使用命令:

ls -l /path/to/file

输出示例:

-rwxr-x--- 1 alice devteam  1234 Jul 25 10:00 myscript.sh

权限字段 -rwxr-x--- 表示:

  • 所有者(alice): rwx(读、写、执行)
  • 所属组(devteam): r-x(读、执行)
  • 其他用户: ---(无权限)

因此,将用户加入某组后,其拥有该组的文件访问权限(组权限)


✅ 2. 特殊权限位

针对文件或目录的高级权限设置:

权限类型说明
s (Setuid)可让程序以文件所有者的权限运行(通常用于二进制执行)
g+s(Setgid)新创建文件继承父目录的组;对目录组权限管理有帮助
t(Sticky bit)只允许文件拥有者删除目录中的文件(常用于 /tmp

设置方式(示例):

chmod g+s /some/dir

✅ 3. ACL(访问控制列表)权限

ACL 可以为文件或目录添加对多个用户或组的精细访问权限控制。

设置 ACL 权限

setfacl -m g:组名:权限 /path/to/file_or_dir

示例:

setfacl -m g:devteam:rwx /project/code/

查看 ACL 权限

getfacl /project/code/

✅ 4. sudo 权限(root 权限)

如前所述,可将用户组添加到 /etc/sudoers 来让其成员拥有 root 权限:

%devops  ALL=(ALL)       ALL

表示 devops 组的所有用户可以使用 sudo 执行任何命令。


✅ 5. 系统服务相关权限(可选项)

某些系统服务允许通过用户组控制访问:

服务/机制权限控制组
Dockerdocker
Cron(at命令)/etc/at.allow 控制
sudowheel 或其他 sudo 组
设备管理disk, audio, video 等设备相关组

示例:允许用户使用 Docker 而无需 sudo:

sudo usermod -aG docker 用户名

✅ 总结:用户组可以通过以下机制获得权限

权限类型控制方式
文件/目录访问权限所属组 + rwx 权限位
高级目录权限setgid, sticky bit 等
精细权限控制ACL(Access Control List)
超级权限(root 权限)/etc/sudoers 配置
服务访问权限加入如 docker, audio 等组

如果你有具体的需求(比如“某组只能读写某目录”,“某组能执行系统管理命令”),可以告诉我,我可以帮你具体设置命令。

http://www.xdnf.cn/news/1189747.html

相关文章:

  • almalinux9.6-4070显卡-ollama-qwen2.5-7b
  • rt-thread 5.2.1 基于at-start-f437开发过程记录
  • Python 面向对象基础
  • 力扣刷题(第九十九天)
  • Rust嵌入式开发实战
  • 去除视频字幕 4 : 下一步,打算研究 Video Inpainting (视频修复):
  • Redis 缓存机制详解:原理、问题与最佳实践
  • Effective C++ 条款4:确定对象被使用前已先被初始化
  • 编程与数学 03-002 计算机网络 06_网络层职责
  • 设计模式十一:享元模式(Flyweight Pattern)
  • 路由选择工具——IP-Prefix
  • 如何查看电脑后门IP和流量?
  • 变频器实习DAY15
  • Kafka MQ 消费者应用场景
  • 机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab
  • 推荐系统(第三课第二周)
  • 【AcWing 143题解】最大异或对
  • Item14:在资源管理类中小心拷贝行为
  • 高并发微服务限流算法方案对比与实践指南
  • xLua和C#交互
  • 激光雷达-相机标定工具:支持普通相机和鱼眼相机的交互式标定
  • 字节跳动扣子 Coze 宣布开源:采用 Apache 2.0 许可证,支持商用
  • 6.数组和字符串
  • J2EE模式---表现层集成模式
  • 备份一下我的 mac mini 的环境变量配置情况
  • net-snmp添加自定义mib树
  • 【C++基础】指针常量 | 常量指针 | int* p | const int* p | int* const p| const int* const p
  • 详解力扣高频SQL50题之619. 只出现一次的最大数字【简单】
  • PCIe 的L状态(链路状态)和D状态(设备状态)
  • 前端组件梳理