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、创建用户和密码
-
在root权限下,
命令:useradd +用户名,它不会在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的;
命令:useradd -m +用户名,将在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。useradd选项:
-c comment 指定一段注释性描述。 -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -g 用户组 指定用户所属的用户组。 -G 用户组,用户组 指定用户所属的附加组。 -s Shell文件 指定用户的登录Shell。 -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
命令:adduser +用户名,在/home目录下会自动创建同名文件夹
创建新用户后,同时会在etc目录下的passwd文件中添加这个新用户的相关信息增加用户:# useradd -d /usr/username -m username useradd username 为用户增加密码: passwd username
-
切换用户
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. 赋予普通权限用户
默认情况下,创建的用户就是普通用户,只能访问自己有权限的文件,无法执行如 yum
、systemctl
、reboot
等需要 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
用户组
- 添加用户到
docker
组(以当前用户为例):
sudo usermod -aG docker $USER
如果是指定用户:
sudo usermod -aG docker username
- 重新登录 shell 会话以生效:
最简单的方式是注销重新登录,或者在当前终端执行:
newgrp docker
✅ 验证是否生效
重新运行 Docker 命令,例如:
docker ps
或你之前的:
docker pull codercom/code-server
不应该再出现 permission denied
。
🛑 补充说明(为什么不能直接访问)
Docker 默认的 Unix socket /var/run/docker.sock
只允许 root
和 docker
组访问。如果你直接用普通用户运行 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. 赋予普通权限用户
默认情况下,创建的用户就是普通用户,只能访问自己有权限的文件,无法执行如 yum
、systemctl
、reboot
等需要 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
这样:
devuser
和devgroup
的用户可访问该目录;- 其他用户无法访问。
✅ 三、给用户或组分配 root 权限(sudo 权限)
▶ 方法1:加入 sudo
或 wheel
组(视系统而定)
-
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 / 加入 sudo 或 wheel | 提升为 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
(主组)、wheel
、dev
。
✅ 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. 赋予普通权限用户
默认情况下,创建的用户就是普通用户,只能访问自己有权限的文件,无法执行如 yum
、systemctl
、reboot
等需要 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. 系统服务相关权限(可选项)
某些系统服务允许通过用户组控制访问:
服务/机制 | 权限控制组 |
---|---|
Docker | docker 组 |
Cron(at命令) | 受 /etc/at.allow 控制 |
sudo | wheel 或其他 sudo 组 |
设备管理 | disk , audio , video 等设备相关组 |
示例:允许用户使用 Docker 而无需 sudo:
sudo usermod -aG docker 用户名
✅ 总结:用户组可以通过以下机制获得权限
权限类型 | 控制方式 |
---|---|
文件/目录访问权限 | 所属组 + rwx 权限位 |
高级目录权限 | setgid, sticky bit 等 |
精细权限控制 | ACL(Access Control List) |
超级权限(root 权限) | /etc/sudoers 配置 |
服务访问权限 | 加入如 docker , audio 等组 |
如果你有具体的需求(比如“某组只能读写某目录”,“某组能执行系统管理命令”),可以告诉我,我可以帮你具体设置命令。