🔥个人主页:Milestone-里程碑

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

       <<Git>><<MySQL>>

🌟心向往之行必能至

目录

一. Linux权限的核心概念

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

1.2 权限访问者的三类人

1.3 文件的类型和基本权限

二. Linux的两种权限表达方式:字符与8进制表达式

2.1字符表达式

2.2  8进制表达式

三. 权限从理论到实践(实践论)

3.1 修改权限:chomd

3.2 chown和chgrp:修改拥有者和所属组

file 指令

总结:


一. Linux权限的核心概念

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

超级用户与普通用户的权限差距极大

超级⽤⼾:可以再linux系统下做任何事情,不受限制
普通⽤⼾:在linux下做有限的事情。
超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。
命令: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)
环境变量加载 仅切换用户身份,保留原用户的环境变量(如 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 (外国⼈)
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=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的所有用户都有读写执行权限
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:修改拥有者和所属组

chown(root或者文件用户组)
功能:修改⽂件的拥有者
格式:chown [参数] ⽤⼾名 ⽂件名
chgrp(root或者文件用户组)
功能:修改⽂件或⽬录的所属组
格式:chgrp [参数] ⽤⼾组名 ⽂件名
常⽤选项:-R 递归修改⽂件或⽬录的所属组
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 指令

功能说明:辨识⽂件类型。 语法: file [ 选项 ] ⽂件或⽬录 ...
常⽤选项:
-c:详细显⽰指令执⾏过程,便于排错或分析程序执⾏的情形。
-z:尝试去解读压缩⽂件的内容。
使⽤ sudo 分配权限
(1)修改/etc/sudoers ⽂件分配⽂件
格式:接受权限的⽤⼾登陆的主机 =(执⾏命令的⽤⼾) 命令
(2)使⽤ sudo 调⽤授权的命令

总结:

明白root与普通用户自己的关系与权限及修改权限和修改角色的指令,使项目开发可以灵活进行

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐