🔥个人主页: Milestone-里程碑
❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>
🌟心向往之行必能至
目录
[一. Linux权限的核心概念](#一. Linux权限的核心概念)
[1.2 权限访问者的三类人](#1.2 权限访问者的三类人)
[1.3 文件的类型和基本权限](#1.3 文件的类型和基本权限)
[二. Linux的两种权限表达方式:字符与8进制表达式](#二. Linux的两种权限表达方式:字符与8进制表达式)
[2.2 8进制表达式](#2.2 8进制表达式)
[三. 权限从理论到实践(实践论)](#三. 权限从理论到实践(实践论))
[3.1 修改权限:chomd](#3.1 修改权限:chomd)
[3.2 chown和chgrp:修改拥有者和所属组](#3.2 chown和chgrp:修改拥有者和所属组)
[file 指令](#file 指令)
一. Linux权限的核心概念
1.1两种用户:超级用户与普通用户
超级用户与普通用户的权限差距极大
• 超级⽤⼾:可以再linux系统下做任何事情,不受限制
• 普通⽤⼾:在linux下做有限的事情。
• 超级⽤⼾的命令提⽰符是"#",普通⽤⼾的命令提⽰符是"$"。
命令:su [⽤⼾名]
功能:切换⽤⼾。
此处lisi用户之前就开好了
bashroot@hcss-ecs-1cde:~# whoami root root@hcss-ecs-1cde:~# su lisi lisi@hcss-ecs-1cde:/root$
如何从普通用户变为超级用户(root)
su: 省略目标用户时,默认尝试切换到 root(根用户),仅切换身份,不加载 root 的环境变量
bash
lisi@hcss-ecs-1cde:/root$ su
Password:
root@hcss-ecs-1cde:~#
**su -**切换到指定用户并加载其完整环境
bash
lisi@hcss-ecs-1cde:/root$ su -
Password:
root@hcss-ecs-1cde:~#
如何从超级用户变为普通用户,因为root权限,无需密码
bash
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 权限访问者的三类人
• ⽂件和⽂件⽬录的所有者:u---User(中国平⺠ 法律问题)
• ⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group(不多说)
• 其它⽤⼾:o---Others (外国⼈)
bash
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对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权
限
-:代表没有该权限
bash
-rw-r--r-- 1 root root 20901 Dec 10 21:21 temp.txt
读写执行的顺序
上面代码用户是root 对应权限:rw- ,即有读写的权限
所属者是root 对应权限是r--,即只有读的权限
其他是除了root 对应权限r--,只有读
如,使用其他身份进行写入失败
bash
lisi@hcss-ecs-1cde:/root$ echo'qqq'>temp.txt
bash: temp.txt: Permission denied
二. Linux的两种权限表达方式:字符与8进制表达式

2.1字符表达式
精确每个权限
格式 :chmod [访问者][±=][权限] 文件名 ,其中:
+:增加权限,-:删除权限,=:强制设置权限;
访问者 :u(所有者)、g(所属组)、o(其他用户)、a(所有用户)。
以下面为例
bash
-rw-r--r-- 1 root root 0 Dec 9 22:50 text.txt
给text.txt的用户删除w写的权限
bashroot@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写权限
bashroot@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进制表示
依旧以为例
bash
-rw-r--r-- 1 root root 0 Dec 9 22:50 text.txt
设置所有角色都有读写执行权限
bashroot@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设置用户有读写执行权限,所属组有读写权限,其他人只有读权限
bashroot@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
功能:设置⽂件的访问权限
格式:chmod [参数] 权限 ⽂件名
常⽤选项:
• R -> 递归修改子⽬录及⽂件的权限
• 说明:只有⽂件的拥有者和root才可以改变⽂件的权限
将text.txt的所有用户都有读写执行权限
bashroot@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查看权限
bashroot@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:修改拥有者和所属组
chown(root或者文件用户组)
功能:修改⽂件的拥有者
格式:chown [参数] ⽤⼾名 ⽂件名
chgrp(root或者文件用户组)
功能:修改⽂件或⽬录的所属组
格式:chgrp [参数] ⽤⼾组名 ⽂件名
常⽤选项:-R 递归修改⽂件或⽬录的所属组
chomd是自己修改用户组 所属组 其他对自己的访问权限,chown与chgrp是修改自己用户组 所属组 和其他是什么
bash
# 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 指令
功能说明:辨识⽂件类型。 语法: file [ 选项 ] ⽂件或⽬录 ...
常⽤选项:
• -c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。
• -z:尝试去解读压缩⽂件的内容。
使⽤ sudo 分配权限
(1)修改/etc/sudoers ⽂件分配⽂件
格式:接受权限的⽤⼾登陆的主机 =(执⾏命令的⽤⼾) 命令
(2)使⽤ sudo 调⽤授权的命令
总结:
明白root与普通用户自己的关系与权限及修改权限和修改角色的指令,使项目开发可以灵活进行