Linux 6 权限管理全解析
Linux系统权限管理摘要 Linux系统权限管理分为用户权限和文件权限两部分。用户权限区分超级用户(root)和普通用户,通过su/su-命令切换,root拥有全部权限。文件权限涉及三类访问者:所有者(u)、所属组(g)和其他用户(o),通过字符(rwx)或八进制(755)表示权限。常用命令包括: chmod修改权限:字符方式(u+w)或数字方式(755) chown修改所有者 chgrp修改所
🔥个人主页:Milestone-里程碑
❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>
🌟心向往之行必能至
目录
一. Linux权限的核心概念
1.1两种用户:超级用户与普通用户
超级用户与普通用户的权限差距极大
命令:su [⽤⼾名]功能:切换⽤⼾。此处lisi用户之前就开好了root@hcss-ecs-1cde:~# whoami root root@hcss-ecs-1cde:~# su lisi lisi@hcss-ecs-1cde:/root$
如何从普通用户变为超级用户(root)
su:省略目标用户时,默认尝试切换到 root(根用户),仅切换身份,不加载 root 的环境变量
lisi@hcss-ecs-1cde:/root$ su
Password:
root@hcss-ecs-1cde:~#
su -切换到指定用户并加载其完整环境
lisi@hcss-ecs-1cde:/root$ su -
Password:
root@hcss-ecs-1cde:~#
如何从超级用户变为普通用户,因为root权限,无需密码
root@hcss-ecs-1cde:~# su lisi
lisi@hcss-ecs-1cde:/root$
| 对比维度 | su(切换到 root) |
su - / su - root(切换到 root) |
|---|---|---|
| 环境变量加载 | 仅切换用户身份,保留原用户的环境变量(如 PATH、HOME、PWD 等),仅 UID/EUID 变为 root |
完全加载 root 用户的环境变量(读取 /root/.bash_profile/.bashrc 等配置),等同于直接登录 root |
| 当前工作目录 | 保持切换前的目录(如原在 /home/lisi,切换后仍在此) |
切换到 root 的家目录(/root) |
| 命令搜索路径(PATH) | 沿用原用户的 PATH(可能缺少 root 专属命令路径,如 /sbin//usr/sbin) |
使用 root 的 PATH(包含 /sbin//usr/sbin 等系统管理命令路径) |
| 配置文件执行 | 不执行 root 的登录脚本(.bash_profile/.profile) |
执行 root 的登录脚本,加载 root 专属配置 |
| 本质含义 | “切换用户身份,但不切换环境” | “切换用户身份并完全切换到目标用户的登录环境” |
| 权限操作兼容性 | 可能因环境变量问题,部分 root 命令执行失败(如 systemctl/fdisk) |
所有 root 命令均可正常执行,无环境兼容问题 |
| 使用场景 | 临时执行单个 root 命令,且需保留原目录 / 环境 | 长期以 root 身份操作(如系统配置、权限管理),推荐优先使用 |
1.2 权限访问者的三类人
drwxr-xr-x 2 root root 4096 Dec 11 10:15 dir
如上面的代码,第一个root就是所有者(user),第二个root就是所属组,不是前面两个(未匹配上,就是others)
1.3 文件的类型和基本权限
文件类型
◦ d:⽂件夹◦ -:普通⽂件◦ l:软链接(类似Windows的快捷⽅式)◦ b:块设备⽂件(例如硬盘、光驱等)◦ p:管道⽂件◦ c:字符设备⽂件(例如屏幕等串⼝设备)◦ s:套接⼝⽂件
基本权限
读r:read,对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息
的权限写w:write, 对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内⽂件的权限执行e:execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权限-:代表没有该权限
-rw-r--r-- 1 root root 20901 Dec 10 21:21 temp.txt
读写执行的顺序
上面代码用户是root 对应权限:rw- ,即有读写的权限
所属者是root 对应权限是r--,即只有读的权限
其他是除了root 对应权限r--,只有读
如,使用其他身份进行写入失败
lisi@hcss-ecs-1cde:/root$ echo'qqq'>temp.txt
bash: temp.txt: Permission denied
二. Linux的两种权限表达方式:字符与8进制表达式

2.1字符表达式
精确每个权限
格式:chmod [访问者][±=][权限] 文件名,其中:+:增加权限,-:删除权限,=:强制设置权限;
访问者:u(所有者)、g(所属组)、o(其他用户)、a(所有用户)。
以下面为例
-rw-r--r-- 1 root root 0 Dec 9 22:50 text.txt
给text.txt的用户删除w写的权限
root@hcss-ecs-1cde:/# chmod u-w text.txt root@hcss-ecs-1cde:/# ls -l -r--r--r-- 1 root root 0 Dec 9 22:50 text.txt给text.txt的用户加w写,所属组加w写权限
root@hcss-ecs-1cde:/# chmod u+w,g+w text.txt root@hcss-ecs-1cde:/# ls -l /text.txt -rw-rw-r-- 1 root root 0 Dec 9 22:50 /text.txt
2.2 8进制表达式
一次设置好所有
格式:chmod 数字权限 文件名。
我们发现,上面每个组对应的每个权限都是二态的,不是有就是无,那不就是二进制中的1/0吗,三个组成一组,范围为0~7,所有使用8进制表示
依旧以为例
-rw-r--r-- 1 root root 0 Dec 9 22:50 text.txt
设置所有角色都有读写执行权限
root@hcss-ecs-1cde:/# chmod 777 text.txt root@hcss-ecs-1cde:/# ls -l /text.txt -rwxrwxrwx 1 root root 0 Dec 9 22:50 /text.txt设置用户有读写执行权限,所属组有读写权限,其他人只有读权限
root@hcss-ecs-1cde:/# chmod 764 text.txt root@hcss-ecs-1cde:/# ls -l /text.txt -rwxrw-r-- 1 root root 0 Dec 9 22:50 /text.txt
| 对比维度 | 字符表达式 | 八进制表达式 |
|---|---|---|
| 表示形式 | 由u/g/o(所有者 / 组 / 其他)+ r/w/x(读 / 写 / 执行)组成,如rwxr-xr-- |
由 3 位八进制数字组成,每一位对应u/g/o的权限,如754 |
| 权限对应逻辑 | 按 “所有者、组、其他” 分 3 段,每段用r/w/x的组合表示具体权限:- 例:rwx(所有者)、r-x(组)、r--(其他) |
每一位数字由r(4)、w(2)、x(1)的数值相加得到:- 例:rwx=4+2+1=7、r-x=4+0+1=5、r--=4+0+0=4 |
| 可读性 | 直观体现各角色的权限类型,易理解具体权限分配 | 更简洁,适合快速输入 / 批量设置权限 |
| 权限示例(对应关系) | rwxr-xr-- → 所有者:读 / 写 / 执行;组:读 / 执行;其他:读 |
754 → 对应rwxr-xr--(7=4+2+1,5=4+1,4=4) |
| 常用权限场景 | - 文件默认权限(如rw-r--r--)- 目录默认权限(如rwxr-xr-x) |
- 快速设置权限(如chmod 777 文件名)- 脚本 / 程序的执行权限(如chmod 755 脚本.sh) |
chmod命令用法 |
chmod u+x,g-w 文件名(精准修改某类角色的权限) |
chmod 640 文件名(一次性设置所有角色的权限) |
三. 权限从理论到实践(实践论)
3.1 修改权限:chomd
将text.txt的所有用户都有读写执行权限root@hcss-ecs-1cde:/# chmod a+r,a+w,a+x text.txt root@hcss-ecs-1cde:/# ls -l /text.txt -rwxrwxrwx 1 root root 0 Dec 9 22:50 /text.txt递归设置dir目录及其文件为777(三种角色都可以读写执行),并使用tree -p查看权限
root@hcss-ecs-1cde:/dir# chmod 777 /dir/ root@hcss-ecs-1cde:/dir# chmod -R 777 /dir/ root@hcss-ecs-1cde:/dir# tree -p /dir/ [drwxrwxrwx] /dir/ ├── [drwxrwxrwx] A │ └── [drwxrwxrwx] B │ └── [drwxrwxrwx] C ├── [-rwxrwxrwx] a.txt ├── [-rwxrwxrwx] hello-backup.txt ├── [-rwxrwxrwx] hello.txt ├── [-rwxrwxrwx] temp.txt ├── [drwxrwxrwx] Test ├── [drwxrwxrwx] Test1 ├── [drwxrwxrwx] Test2 ├── [drwxrwxrwx] Test3 ├── [drwxrwxrwx] text │ ├── [drwxrwxrwx] test1 │ ├── [-rwxrwxrwx] text1 │ └── [-rwxrwxrwx] text2 ├── [-rwxrwxrwx] txt ├── [-rwxrwxrwx] txt-backup └── [-rwxrwxrwx] world.txt 9 directories, 9 files
3.2 chown和chgrp:修改拥有者和所属组
chomd是自己修改用户组 所属组 其他对自己的访问权限,chown与chgrp是修改自己用户组 所属组 和其他是什么
# 1. root将hello.txt的所有者改为zpw(普通用户无此权限)
[root@bite-alicloud ~]$ chown zpw hello.txt
[root@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 zpw whb 29 Oct 22 20:56 hello.txt # 所有者从whb变为zpw
# 2. 普通用户whb直接修改(无sudo,导致权限不足,报错)
[whb@bite-alicloud ~]$ chown whb hello.txt
chown: changing ownership of 'hello.txt': Operation not permitted
# 3. 普通用户whb用sudo修改hello.txt的所有者为litao(需输入whb自己的密码,且whb已在sudoers配置中)
[whb@bite-alicloud ~]$ sudo chown litao hello.txt
[sudo] password for whb: # 输入whb的密码
[whb@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 litao zhangsan 29 Oct 22 20:56 hello.txt # 所有者从zpw变为litao
# 4. 修改hello.txt的所属组为zhangsan(需root或所有者)
[root@bite-alicloud ~]$ chgrp zhangsan hello.txt
[root@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 zpw zhangsan 29 Oct 22 20:56 hello.txt # 所属组从whb变为zhangsan
# 5. 假设whb是hello.txt的所有者,且属于zhangsan组(主组或附加组)
[whb@bite-alicloud ~]$ chgrp zhangsan hello.txt
[whb@bite-alicloud ~]$ ls -l hello.txt
-rw-rw-r-- 1 whb zhangsan 29 Oct 22 20:56 hello.txt # 所属组从原组变为zhangsan
# 6. 普通用户whb(此时他不是文件的所有者,且目标组不在自身组列表中)用sudo修改hello.txt的所属组为whb组
[whb@bite-alicloud ~]$ sudo chgrp whb hello.txt
[whb@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 litao whb 29 Oct 22 20:56 hello.txt # 所属组从zhangsan变为whb
| 维度 | chown | chgrp | chmod |
|---|---|---|---|
| 核心作用 | 修改文件 / 目录的所有者(User) | 修改文件 / 目录的所属组(Group) | 修改文件 / 目录的访问权限(读 / 写 / 执行) |
| 修改对象 | 所有者(用户名 / UID) | 所属组(组名 / GID) | 权限位(r/w/x),分三类身份:① 所有者(u)② 所属组(g)③ 其他人(o) |
| 关键语法示例 | chown user1 file(改所有者)chown user1:group1 file(改所有者 + 组) |
chgrp group1 file(改所属组)chgrp -R group2 dir(递归改目录) |
chmod 755 file(数字权限)chmod u+x,g-w file(符号权限) |
| ls -l 对应位置 | 第 3 列(如 root) |
第 4 列(如 root) |
第 1 列(如 -rw-r--r--) |
| 权限要求 | 仅 root/sudo 可修改所有者;普通用户仅能改自己文件的所属组 | 同 chown(改所属组) | 文件所有者 /root 可修改 |
| 核心场景 | 移交文件所有权(如部署程序时改属主为服务用户) | 批量授权用户组访问文件 | 控制不同用户对文件的操作权限(如让脚本可执行、禁止其他人写文件) |
other并不需要单独修改,因为chown与chgrp进行了修改了,other也会跟着修改
删除目录的里的文件,不需要有文件的写权限,只需要有目录的写权限(非root)即可
file 指令
总结:
明白root与普通用户自己的关系与权限及修改权限和修改角色的指令,使项目开发可以灵活进行
更多推荐



所有评论(0)