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

相关推荐
MicroTech20252 小时前
微算法科技(NASDAQ :MLGO)探索量子Hadamard门技术,增强量子图像处理效率
图像处理·科技·算法
独隅2 小时前
Ollama 在 Linux 上的完整安装与使用指南:从零部署到熟练运行大语言模型
linux·运维·语言模型
进击的小头2 小时前
移动平均滤波器:从原理到DSP ADC采样实战(C语言实现)
c语言·开发语言·算法
夜路难行々2 小时前
Linux uio driver【以uio_sercos3.c为例】
linux·uio
恒星科通2 小时前
校园广播系统:全场景校园音频解决方案
运维·服务器·安全·音视频·广播·应急广播
历程里程碑2 小时前
双指针--双数之和
开发语言·数据结构·c++·算法·排序算法·哈希算法·散列表
LI JS@你猜啊2 小时前
【本地搭建项目运行服务器 + 免费公网地址映射 + Docker】
运维·服务器·docker
Coder个人博客2 小时前
Linux6.19-ARM64 mm mteswap子模块深入分析
linux·安全·车载系统·系统架构·系统安全·鸿蒙系统·安全架构
祁鱼鱼鱼鱼鱼2 小时前
云原生-IP透传
服务器·网络·tcp/ip