Linux 6 权限管理全解析

🔥个人主页: Milestone-里程碑

❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>

<<Git>><<MySQL>>

🌟心向往之行必能至

目录

[一. Linux权限的核心概念](#一. Linux权限的核心概念)

1.1两种用户:超级用户与普通用户

[1.2 权限访问者的三类人](#1.2 权限访问者的三类人)

[1.3 文件的类型和基本权限](#1.3 文件的类型和基本权限)

[二. Linux的两种权限表达方式:字符与8进制表达式](#二. Linux的两种权限表达方式:字符与8进制表达式)

2.1字符表达式

[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用户之前就开好了

bash 复制代码
root@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)
环境变量加载 仅切换用户身份,保留原用户的环境变量 (如 PATHHOMEPWD 等),仅 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写的权限

bash 复制代码
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写权限

bash 复制代码
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进制表示

依旧以为例

bash 复制代码
-rw-r--r--   1 root root     0 Dec  9 22:50 text.txt

设置所有角色都有读写执行权限

bash 复制代码
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

设置用户有读写执行权限,所属组有读写权限,其他人只有读权限

bash 复制代码
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=7r-x=4+0+1=5r--=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的所有用户都有读写执行权限

bash 复制代码
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查看权限

bash 复制代码
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:修改拥有者和所属组

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与普通用户自己的关系与权限及修改权限和修改角色的指令,使项目开发可以灵活进行

相关推荐
逸模10 小时前
告别熬夜手工整理台账,逸模智能归集实现项目数据自动化存档
大数据·运维·人工智能·笔记·其他·信息可视化·自动化
sbjdhjd10 小时前
Redis 主从复制、哨兵高可用与 Cluster 集群部署实验手册
运维·前端·redis·云原生·开源·bootstrap·html
人间乄惊鸿客10 小时前
Linux所遇问题自记录
linux
Frostnova丶11 小时前
【算法笔记】数学知识
笔记·算法
xqqxqxxq11 小时前
哈希表(HashMap)技术学习笔记
笔记·学习·散列表
吴可可12311 小时前
AutoCAD 2016与2014二次开发关键差异
算法
AOwhisky11 小时前
MySQL 学习笔记(第四期):SQL 语言之多表查询
linux·运维·网络·数据库·笔记·学习·mysql
Phantom Void11 小时前
服务器处理客户端请求的设计方法
linux·运维·网络
司悠11 小时前
【解决在vscode里开服务器登录codeX后发消息会一直reconnecting】
服务器·ide·vscode
倔强的石头10611 小时前
Fooocus开源神器+cpolarAI让绘画告别服务器依赖
运维·服务器·cpolar