一、Linux权限基本概念
1.1、名称解释:
Linux 权限管理是保障系统安全的核心机制,其核心目标是控制不同用户(非root)对文件 / 目录的操作权限。
1.2、Linux权限主体:用户与组
Linux 是多用户系统,权限针对三类主体划分:
- 所有者(User):文件 / 目录的创建者(默认),对资源有最高控制权。
- 所属组(Group):文件 / 目录归属的用户组,组内用户共享部分权限。
- 其他用户(Others):既非所有者,也不属于所属组的用户。
1.3、权限的类型:读、写、执行:
权限通过三种基础操作定义,对文件和目录的含义不同:
| 权限符号 | 数字表示 | 对文件的含义 | 对目录的含义 |
|---|---|---|---|
| r | 4 | 查看文件内容(如 cat) | 列出目录内文件(如 ls) |
| w | 2 | 修改文件内容(如 vim) | 创建 / 删除 / 重命名目录内文件 |
| x | 1 | 执行文件(如脚本、程序) | 进入目录(如 cd) |
注意:
a、要对一个文件执行任何操作(读、写、执行等),必须先通过其所在目录的权限 “打通路径”,否则即使文件本身有权限也无法操作。
b、对文件的 “管理操作”(如创建新文件、删除已有文件、重命名文件)不依赖文件本身的权限,而是由其父目录的权限决定:
1.4、权限的表示方法
权限通过 10 位字符 或 3 位数字 表示,以 ls -l 输出为例:
(1)符号表示(10 位字符串)
例如:-rwxr-xr--
- 第 1 位:文件类型(
-普通文件,d目录,l软链接等)。 - 第 2-4 位:所有者权限(
rwx:读、写、执行)。 - 第 5-7 位:所属组权限(
r-x:读、执行,无写权限)。 - 第 8-10 位:其他用户权限(
r--:只读,无写 / 执行权限)。
(2)数字表示(3 位数字)
每类主体的权限用数字累加表示(r=4,w=2,x=1),例如:
- 所有者
rwx→ 4+2+1=7 - 所属组
r-x→ 4+0+1=5 - 其他用户
r--→ 4+0+0=4 - 整体权限表示为
754
二、权限管理指令
2.1、查看权限
用 ls -l [文件/目录] 命令
示例:
ls -l test.txt # 查看test.txt的权限

2.2、修改权限(chmod 命令)
2.2.1、符号模式:
通过 u(所有者)、g(所属组)、o(其他)、a(所有)指定主体,结合 +(加权限)、-(减权限)、=(设权限)修改。
示例:
chmod u+x test.txt # 给所有者加执行权限
chmod g-w test.txt # 给所属组减写权限
chmod o=r test.txt # 给其他用户设为只读
chmod a+r test.txt # 所有用户加读权限
2.2.2、数字模式:
直接用 3 位数字设置权限。
示例:
chmod 754 test.txt # 所有者rwx,组r-x,其他r--
2.3、修改所有者 / 所属组(chown/chgrp)
2.3.1、chown:修改所有者(或同时修改组)。
示例:
chown alice test.txt # 把test.txt所有者改为alice
chown alice:dev test.txt # 所有者改为alice,所属组改为dev
2.3.2、chgrp:修改所属组。
示例:
chgrp dev test.txt # 把test.txt所属组改为dev
2.4、umask命令
2.4.1、umask作用
Linux 中,新创建的文件和目录有固定的 “最大默认权限”,umask的作用是 “屏蔽”(减去)其中的部分权限,最终得到实际默认权限:
- 文件的最大默认权限:
666(即-rw-rw-rw-,文件默认不包含执行权限x,避免安全风险)。 - 目录的最大默认权限:
777(即drwxrwxrwx,目录必须有x权限才能进入)。
2.4.2、umask 的表示方式
umask的值通常用4 位八进制数字表示(一般显示后 3 位),每一位对应 “特殊权限(SUID/SGID/Sticky)” 和 “所有者、所属组、其他用户” 的权限掩码,格式为:
u_mask g_mask o_mask(分别对应所有者、所属组、其他用户)。
例如:umask 022 表示:
- 所有者:0(不屏蔽任何权限)
- 所属组:2(屏蔽写权限
w) - 其他用户:2(屏蔽写权限
w)
2.4.3、常用操作示例
(1)查看当前 umask 值
直接执行umask命令:
umask # 输出示例:0022(前导0表示八进制,实际有效位是后三位022)
(2)计算实际默认权限
以umask 022为例:
- 文件权限:
666 - 022 = 644(即-rw-r--r--) - 目录权限:
777 - 022 = 755(即drwxr-xr-x)
另一个例子umask 002(常见于协作场景):
- 文件:
666 - 002 = 664(-rw-rw-r--,同组用户可写) - 目录:
777 - 002 = 775(drwxrwxr-x,同组用户可创建文件)
(3)临时修改 umask
直接在终端执行umask [值],仅对当前终端会话有效:
umask 077 # 设置新的掩码,此时:
# 文件默认权限:666-077=600(-rw-------,仅所有者可读写)
# 目录默认权限:777-077=700(drwx------,仅所有者可访问)
(4)永久修改 umask
若要让 umask 设置在每次登录时生效,需修改 shell 配置文件:
- 对当前用户生效:编辑
~/.bashrc(bashshell)或~/.zshrc(zsh),添加一行:umask 022 # 按需求设置值 - 对所有用户生效:编辑
/etc/profile或/etc/bashrc(需 root 权限),添加同上内容。
修改后执行source ~/.bashrc(或重启终端)使配置生效。
2.5、指定用户的所属组
2.5.1、在创建用户时指定所属组
使用 useradd -g 组名 用户名 命令
示例:
useradd -g person zhangsan #创建zhangsan时加入指定的person组
注:不指定组名,系统默认会自动创建与用户名同名的组。
2.5.2、直接使用usermod修改
命令格式:usermod -g 组名 用户名
示例:
usermod -g china zhangsan #将zhangsan的所属组修改为china
330

被折叠的 条评论
为什么被折叠?



