组管理
组管理
- 在 Linux 系统中,用户组(Group)是用户管理的重要组成部分。用户组用于将多个用户归类到一起,以便更方便地管理权限和资源。
- 在添加用户时会默认创建一个和用户名相同名字的组,并将该用户加入组
基本概念
-
用户组:用户组是多个用户的集合。每个用户可以属于一个主组(Primary Group)和多个附加组(Supplementary Groups)。
-
主组:每个用户必须属于一个主组,通常在创建用户时指定。
-
附加组:用户可以选择性地加入多个附加组,以便获得额外的权限。
-
/etc/group文件存储了系统中所有用户组的信息。-
# 查看所有组信息 cat /etc/group
-
-
/etc/gshadow文件存储了用户组的加密密码和管理信息(仅root用户可访问)。
用户组管理命令
-
使用
groupadd命令创建新的用户组。-
groupadd [选项] 组名 -
选项 说明 -g指定 GID。 -r创建系统组(GID 通常小于 1000)。
-
-
使用
groupmod命令修改用户组的属性。-
groupmod [选项] 组名 -
选项 说明 -g修改 GID。 -n修改组名。
-
-
使用
groupdel命令删除用户组。-
groupdel 组名
-
管理用户组成员
-
查看用户组成员
-
使用
groups命令显示当前用户或指定用户所属的组。 -
groups [用户名] -
使用
id命令显示用户的 UID、GID 和所属组。 -
id [用户名] -
使用
getent命令查看组的成员列表。 -
getent group [组名]- 不加组名为查看系统数据库中的组信息(列出所有组)
-
-
添加用户到组
-
将用户添加到组中,可以使用
usermod或gpasswd命令。 -
usermod命令用于修改用户属性,包括添加用户到附加组。-
usermod -aG 组名 用户名 -
选项说明:
-a:追加用户到附加组(避免覆盖现有附加组)。-g:修改用户的主组(GID)-G:指定附加组。
-
-
-
从组中移除用户
-
将用户从组中移除,可以使用
gpasswd或deluser命令。 -
deluser命令用于从组中移除用户(适用于 Debian/Ubuntu 系统)。-
deluser 用户名 组名
-
-
-
gpasswd命令-
gpasswd命令的主要功能包括:- 设置或更改用户组的密码。
- 添加或移除用户组成员。
- 设置组管理员。
- 管理组的成员列表。
-
语法
-
gpasswd [选项] 组名 -
不加选项为修改组的密码,为组设置密码后,非组成员可以通过密码临时切换到该组(使用
newgrp命令)。 -
常用选项
选项 说明 -a添加用户到组。 -d从组中移除用户。 -r移除组的密码。 -A设置组管理员(可以管理组成员)。 -M设置组的成员列表(覆盖现有成员)。 -R限制普通用户使用 newgrp切换到该组。 -
-
# 将用户 alice 添加到 developers 组: gpasswd -a alice developers # 设置 developers 组的成员为 alice 和 charlie: gpasswd -M alice,charlie developers
-
权限管理
基本介绍
-
在 Linux 中,每个文件和目录都有三组权限:
- 所有者权限:文件或目录的所有者的权限。
- 组权限:文件或目录所属组的权限。
- 其他用户权限:其他用户的权限。
-
每组权限包括:
- 读(r):允许查看文件内容或列出目录内容。
- 写(w):允许修改文件内容或在目录中创建/删除文件。
- 执行(x):允许执行文件或进入目录。
- 无权限(-):无权限。
-
Linux 中,权限可以用数字表示:
- 读(r) = 4
- 写(w) = 2
- 执行(x) = 1
-
使用
ls -l命令查看文件或目录的权限-
-rw-r--r-- 1 alice developers 1024 Oct 2 10:00 file.txt -
第一个字符表示文件类型:
-:普通文件。d:目录。l:符号链接(软链接)。c:字符设备文件。b:块设备文件。p:管道文件。s:套接字文件。
-
接下来的 9 个字符表示文件的权限,分为三组,每组 3 个字符:
- 第一组 (
rw-):文件所有者(user)的权限。r:读权限。w:写权限。-:无执行权限。
- 第二组 (
r--):文件所属组(group)的权限。 - 第三组 (
r--):其他用户(others)的权限。
- 第一组 (
-
硬链接数 (
1)- 表示该文件的硬链接数量。
- 对于文件,通常为 1(除非有额外的硬链接)。
- 对于目录,硬链接数至少为 2(目录本身和
.目录),每增加一个子目录,硬链接数加 1。
-
文件所有者 (
alice)- 表示该文件的所有者是用户
alice。
- 表示该文件的所有者是用户
-
文件所属组 (
developers)- 表示该文件所属的组是
developers。
- 表示该文件所属的组是
-
文件大小 (
1024)- 表示文件的大小,单位为字节(Byte)。
- 这里是 1024 字节(即 1 KB)。
-
最后修改时间 (
Oct 2 10:00)- 表示文件最后一次被修改的日期和时间。
- 格式为
月 日 时间。 - 如果文件的修改时间超过 6 个月,
ls -l会显示年份而不是时间。
-
文件名 (
file.txt)- 表示文件的名称。
-
修改文件或者目录所在组
-
修改文件或目录的所属组
-
使用
chgrp或chown命令可以修改文件或目录的所属组。 -
使用
chgrp命令-
chgrp [新组名] [文件或目录] -
# 将 file.txt 的组改为 developers chgrp developers file.txt # 递归修改目录及其内容的组 chgrp developers -R /path/to/directory
-
-
使用
chown命令-
chown :[新组名] [文件或目录] -
# 将 file.txt 的组改为 developers chown :developers file.txt # 递归修改目录及其内容的组 chown :developers -R /path/to/directory
-
-
-
修改文件或目录的所有者
-
使用
chown命令可以修改文件或目录的所有者。-
chown [新所有者] [文件或目录] -
chown alice file.txt # 将 file.txt 的所有者改为 alice chown alice -R /path/to/directory # 递归修改目录及其内容的所有者
-
-
可以在
chown命令中同时指定所有者和组,格式为所有者:组。-
# 将 file.txt 的所有者改为 alice,组改为 developers chown alice:developers file.txt # 递归修改目录及其内容的所有者和组 chown alice:developers -R /path/to/directory
-
-
-
权限要求:
- 只有 root 用户 或 具有 sudo 权限的用户 可以修改文件或目录的所有者和组。
- 普通用户只能修改自己拥有的文件或目录的组,且只能将组修改为自己所属的组之一。
-
递归修改:
- 使用
-R选项可以递归修改目录及其内容的所有者和组。
- 使用
权限含义
- 文件权限的含义
- 对文件来说,
rwx权限的含义如下:r(读权限)- 允许读取文件内容。
- 示例:可以使用
cat、less等命令查看文件内容。
w(写权限)- 允许修改文件内容。
- 示例:可以使用
echo、vim等命令编辑文件。
x(执行权限)- 允许将文件作为程序执行。
- 示例:对于脚本文件或二进制文件,需要
x权限才能运行。
- 对文件来说,
- 目录权限的含义
- 对目录来说,
rwx权限的含义与文件不同:r(读权限)- 允许列出目录中的文件和子目录。
- 示例:可以使用
ls命令查看目录内容。
w(写权限)- 允许在目录中创建、删除或重命名文件和子目录。
- 示例:可以使用
touch、rm、mv等命令操作目录中的文件。
x(执行权限)- 允许进入目录或访问目录中的文件。
- 示例:可以使用
cd进入目录,或访问目录中的文件内容。
- 对目录来说,
- 注意事项
- 目录的执行权限:如果没有
x权限,即使有r权限,也无法访问目录中的文件。 - 写权限的风险:对目录的写权限允许删除文件,即使文件本身是只读的。
- root 用户:root 用户可以绕过权限限制,访问或修改任何文件或目录。
- 目录的执行权限:如果没有
修改权限
-
修改文件或目录的权限主要通过
chmod命令实现。chmod允许通过 符号模式 或 数字模式 来设置权限。 -
符号模式
-
使用符号模式可以直观地添加、移除或设置权限。
-
chmod [who][operator][permissions] 文件或目录 -
who:
u:所有者(user)。g:组(group)。o:其他用户(others)。a:所有用户(all),等同于ugo。
-
operator:
+:添加权限。-:移除权限。=:设置权限(覆盖原有权限)。
-
permissions:
r:读权限。w:写权限。x:执行权限。
-
chmod u+x file.txt # 给所有者添加执行权限 chmod g-w file.txt # 移除组的写权限 chmod o=r file.txt # 设置其他用户的权限为只读 chmod a+rw file.txt # 给所有用户添加读写权限
-
-
数字模式
-
使用数字模式可以快速设置权限。每组权限用一个数字表示:
r= 4w= 2x= 1
-
每组权限的值是三个权限值的和:
rwx= 4 + 2 + 1 = 7rw-= 4 + 2 = 6r-x= 4 + 1 = 5r--= 4
-
chmod [数字权限] 文件或目录 -
chmod 755 file.txt # 设置权限为 rwxr-xr-x chmod 644 file.txt # 设置权限为 rw-r--r-- chmod 600 file.txt # 设置权限为 rw-------
-
-
递归修改权限
-
如果需要修改目录及其内容的权限,可以使用
-R选项。 -
如果遇到某些文件或目录没有权限(例如,当前用户没有权限访问或修改这些文件),
chmod会跳过这些文件或目录,并继续处理其他有权限的文件或目录。 -
chmod -R 755 /path/to/directory # 递归设置目录及其内容的权限为 rwxr-xr-x chmod -R u+rw /path/to/directory # 递归给所有者添加读写权限
-
-
特殊权限
-
除了基本的
rwx权限,Linux 还支持以下特殊权限: -
SUID(Set User ID):
- 当文件被执行时,进程的所有者变为文件的所有者。
- 设置方法:
chmod u+s 文件或chmod 4xxx 文件。
-
SGID(Set Group ID):
- 当文件被执行时,进程的组变为文件的组。
- 设置方法:
chmod g+s 文件或chmod 2xxx 文件。
-
Sticky Bit:
- 仅允许文件所有者或 root 用户删除文件。
- 设置方法:
chmod +t 目录或chmod 1xxx 目录。
-
chmod u+s /usr/bin/some_program # 设置 SUID chmod g+s /shared_directory # 设置 SGID chmod +t /tmp # 设置 Sticky Bit
-

浙公网安备 33010602011771号