权限体系
RWX Linux操作系统如何知道当前系统用户(我)对某个文件或者目录有什么权限?
R 可读
W 可写
X 可执行
- 查看当前文件的属性(通过属性可以看到权限)
[root@ahui ~]#ll
-rw-r--r-- 1 root root 0 May 20 10:57 2.txt
- 你是谁(当前登陆系统的用户是谁)
[root@ahui ~]#whoami
root
- 通过对应关系 找到2.txt对应的权限
- 找对对应关系 找到匹配的对应关系位置
属主 rw- 前三位
属组 r-- 中间三位
其他 r-- 后三位
当前root用户对于2.txt文件的权限为 前三位 rw-
root管理员对于所有的普通文件拥有最高权限
[root@ahui ~]#ll 2.txt
-rw-r--r-- 1 b13k b13k 0 May 20 10:57 2.txt
b13k用户对应3.txt权限
[b13k@ahui ~]$ll /tmp/3.txt
-rw-r--r-- 1 root root 0 May 23 08:51 /tmp/3.txt
- 登陆用户为b13k
- 找对对应的权限位置 3.txt b13k用户不属于属主 也不属于属组 所以为其他用户
- 其他用户对应的权限位置后三位 r–(只读 cat less more)
修改权限
所有位置表示方式:
- 第一种: ugo
- 第二种: a 表示all
- 第三种: 直接写权限表示所有 chmod +x b13k.txt
第一种修改权限方式: ugo方式 通过ugo对文件进行授权
授权什么样的权限: r 可读 w 可写 x 可执行
ugo授权
- u 表示 user 属主
- g 表示 group 属组
- o 表示 other 其他用户
语法格式:
chmod u+x 文件 # 给文件属主授权x 执行权限
chmod u-x 文件 # 文件文件属主减去x执行权限
x权限的意义: 追加一个命令到b13k.txt
[root@ahui ~]#echo pwd > b13k.txt
执行b13k.txt
[root@ahui ~]#cat b13k.txt
pwd
\# ./ 脚本的执行方式之一 通过当前路径或者绝对路径执行
绝对路径执行:
/root/b13k.txt
相对路径执行:
./b13k.txt
执行默认都是权限拒绝
[root@ahui ~]#/root/b13k.txt
-bash: /root/b13k.txt: Permission denied
[root@ahui ~]#./b13k.txt
-bash: ./b13k.txt: Permission denied
注意: 如果文件的属主为root 文件的权限中属主没有 x 则root用户也无法通过路径方式执行脚本
案例1: 给b13k.txt属主授权x执行权限
x权限: 执行的命令使用 文件中有命令 x权限才有意义
[root@ahui ~]#touch b13k.txt
[root@ahui ~]#ll
total 0
-rw-r--r-- 1 root root 0 May 23 09:15 b13k.txt
[root@ahui ~]#chmod u+x b13k.txt
[root@ahui ~]#ll
total 0
-rwxr--r-- 1 root root 0 May 23 09:15 b13k.txt
授权x执行权限 在执行脚本
[root@ahui ~]#ll
total 4
-rwxr--r-- 1 root root 4 May 23 09:17 b13k.txt
[root@ahui ~]#/root/b13k.txt
/root
[root@ahui ~]#./b13k.txt
/root
案例2: 给b13k.txt 属主减去x执行权限
[root@ahui ~]#chmod u-x b13k.txt
[root@ahui ~]#ll
total 0
-rw-r--r-- 1 root root 0 May 23 09:15 b13k.txt
案例3: 属组添加 w权限
[root@ahui ~]#chmod g+w b13k.txt
[root@ahui ~]#ll
total 4
-rwxrw-r-- 1 root root 4 May 23 09:17 b13k.txt
案例4: 同时去掉属主属组的w权限
[root@ahui ~]#chmod ug-w b13k.txt
[root@ahui ~]#ll
total 4
-r-xr--r-- 1 root root 4 May 23 09:17 b13k.txt
案例5: 同时给ugo+x执行权限
[root@ahui ~]#chmod ugo+x b13k.txt
[root@ahui ~]#ll
total 4
-r-xr-xr-x 1 root root 4 May 23 09:17 b13k.txt
案例6: 所有位取消x权限
[root@ahui ~]#chmod ugo-x b13k.txt
[root@ahui ~]#ll
total 4
-r--r--r-- 1 root root 4 May 23 09:17 b13k.txt
案例7: 通过a授权
[root@ahui ~]#ll
total 4
-r--r--r-- 1 root root 4 May 23 09:17 b13k.txt
[root@ahui ~]#chmod a+w b13k.txt
[root@ahui ~]#ll
total 4
-rw-rw-rw- 1 root root 4 May 23 09:17 b13k.txt
取消a权限
[root@ahui ~]#chmod a-w b13k.txt
[root@ahui ~]#ll
total 4
-r--r--r-- 1 root root 4 May 23 09:17 b13k.txt
案例8: 直接授权
[root@ahui ~]#ll
total 4
-r--r--r-- 1 root root 4 May 23 09:17 b13k.txt
[root@ahui ~]#chmod +x b13k.txt
[root@ahui ~]#ll
total 4
-r-xr-xr-x 1 root root 4 May 23 09:17 b13k.txt
授权rc.local 属主拥有执行权限 开机自动运行里面的命令
[root@ahui ~]#chmod u+x /etc/rc.d/rc.local
案例9: = 授权
先清除原来的权限 在授权新的权限(覆盖)
[root@ahui ~]#ll
total 4
-r-xr-xr-x 1 root root 4 May 23 09:17 b13k.txt
[root@ahui ~]#chmod a=r-- b13k.txt
[root@ahui ~]#ll
total 4
-r--r--r-- 1 root root 4 May 23 09:17 b13k.txt
通过数字的方式进行授权(权限位对应数字)
r=4可读、w=2可写、x=1可执行
rwx = 4+2+1 = 7 可读可写可执行
rw- = 4+2 = 6 可读可写
r-x = 4+1 = 5 可读可执行
r-- = 4 = 4 可读
-wx = 2+1 = 3 可写可执行
-w- = 2 = 2 可写
--x = 1 = 1 可执行
--- = 0 = 0 无任何权限
案例1: 授权b13k.txt 权限为 rw-r-xr-x 权限
[root@ahui ~]#chmod 655 b13k.txt
[root@ahui ~]#ll
total 4
-rw-r-xr-x 1 root root 4 May 23 09:17 b13k.txt
案例2: 授权b13k.txt 权限为 rwxr–r-- 权限(744)
[root@ahui ~]#chmod 744 b13k.txt
[root@ahui ~]#ll
total 4
-rwxr--r-- 1 root root 4 May 23 09:17 b13k.txt
企业中常用的授权方式:
注意: 在企业中很少修改默认权限
在企业中修改的最多的属主属组
遇到脚本的时候进行增加x执行权限
[root@ahui ~]#chmod +x b13k.txt
[root@ahui ~]#ll
total 4
-rwxr-xr-x 1 root root 4 May 23 09:17 b13k.txt
[root@ahui ~]#chmod 644 b13k.txt
[root@ahui ~]#ll
total 4
-rw-r--r-- 1 root root 4 May 23 09:17 b13k.txt
[root@ahui ~]#chmod u+x b13k.txt
[root@ahui ~]#ll
total 4
-rwxr--r-- 1 root root 4 May 23 09:17 b13k.txt
案例: 授权b13k.txt文件为 rw------- 权限 600
[root@ahui ~]#chmod 600 b13k.txt
[root@ahui ~]#ll
total 4
-rw------- 1 root root 4 May 23 09:17 b13k.txt
案例: 递归修改权限
[root@ahui ~]#mkdir test
[root@ahui ~]#touch test/{1..3}.txt
[root@ahui ~]#chmod -R 777 test/
注意: chmod 修改权限的 chmod 644 file
chown 修改属主属组 chown b13k.b13k file
对于文件RWX的具体作用:
环境准备:
[root@ahui ~ ]# mkdir /b13k
[root@ahui ~ ]# cd /b13k
[root@ahui ~ ]# echo pwd > b13k.txt
授权b13k.txt 属主属组 为b13k用户
[root@ahui /b13k]#chown b13k.b13k b13k.txt
[root@ahui /b13k]#ll
total 4
-rw-r--r-- 1 b13k b13k 4 May 23 09:59 b13k.txt
打开两个窗口:
第一个窗口为root用户 用来做授权使用
第二个窗口为b13k用户 用来验证权限使用
第二个窗口切换到b13k用户
[root@ahui ~]#su - b13k
Last login: Mon May 23 09:56:43 CST 2022 on pts/0
验证: r对于文件的作用
授权b13k.txt的属主 拥有r权限
[root@ahui /b13k]#chmod u=r b13k.txt
[root@ahui /b13k]#ll
total 4
-r--r--r-- 1 b13k b13k 4 May 23 09:59 b13k.txt
r对于文件的作用:
- 可读 拥有查看的权限
- 默认对文件没有写入权限vim提示文件只读 但是我是文件的所有者 可以强制写入 wq!
- 不能执行
- 无法echo写入
vim和echo有区别
vim打开文件看到里面的内容写入
echo不打开文件 不需要看到内容 直接追加
总结: r权限对于文件 可以查看
验证: w对于文件的作用
授权
[root@ahui /b13k]#ll
total 4
-r--r--r-- 1 b13k b13k 10 May 23 10:09 b13k.txt
[root@ahui /b13k]#chmod u=w b13k.txt
[root@ahui /b13k]#ll
total 4
--w-r--r-- 1 b13k b13k 10 May 23 10:09 b13k.txt
验证
[b13k@ahui /b13k]$ll
total 4
--w-r--r-- 1 b13k b13k 10 May 23 10:09 b13k.txt
[b13k@ahui /b13k]$cat b13k.txt
cat: b13k.txt: Permission denied
[b13k@ahui /b13k]$vim b13k.txt
[b13k@ahui /b13k]$echo ls >> b13k.txt
[b13k@ahui /b13k]$./b13k.txt#执行文件
-bash: ./b13k.txt: Permission denied
- 无法查看
- 无法通过vim写入内容
- 通过echo追加内容
- 不能执行
小结: w对于文件作用 只能echo追加
如果我想对文件有正常修改和写入的功能必须: rw配合
验证x权限对于文件的作用:
授权
[root@ahui /b13k]#chmod u=x b13k.txt
[root@ahui /b13k]#ll
total 4
---xr--r-- 1 b13k b13k 13 May 23 10:16 b13k.txt
验证
[b13k@ahui /b13k]$ll
total 4
---xr--r-- 1 b13k b13k 13 May 23 10:16 b13k.txt
[b13k@ahui /b13k]$cat b13k.txt
cat: b13k.txt: Permission denied
[b13k@ahui /b13k]$vim b13k.txt
[b13k@ahui /b13k]$echo pwd >> b13k.txt
-bash: b13k.txt: Permission denied
[b13k@ahui /b13k]$./b13k.txt
bash: ./b13k.txt: Permission denied
小结: 只有x权限对于文件没有任何作用
拥有执行权限必须 r和x配合 不需要w权限
[root@ahui /b13k]#chmod u=rx b13k.txt
[root@ahui /b13k]#ll
total 4
-r-xr--r-- 1 b13k b13k 13 May 23 10:16 b13k.txt
[b13k@ahui /b13k]$ll
total 4
-r-xr--r-- 1 b13k b13k 13 May 23 10:16 b13k.txt
[b13k@ahui /b13k]$cat b13k.txt
pwd
aaaaa
ls
[b13k@ahui /b13k]$./b13k.txt
/b13k
./b13k.txt: line 2: aaaaa: command not found
b13k.txt
对于目录RWX的具体作用:
对于我们是否能够删除文件 看的不是文件权限 而是目录权限!!!
准备:修改目录属主属组为b13k
[root@ahui /b13k]#ll -d /b13k
drwxr-xr-x 2 root root 24 May 23 09:59 /b13k
[root@ahui /b13k]#chown -R b13k.b13k /b13k/
[root@ahui /b13k]#ll -d /b13k/
drwxr-xr-x 2 b13k b13k 24 May 23 09:59 /b13k/
[root@ahui /b13k]#touch {1..3}.txt
[root@ahui /b13k]#chown b13k.b13k *.txt
[root@ahui /b13k]#ll
total 4
-rw-r--r-- 1 b13k b13k 0 May 23 10:38 1.txt
-rw-r--r-- 1 b13k b13k 0 May 23 10:38 2.txt
-rw-r--r-- 1 b13k b13k 0 May 23 10:38 3.txt
-rw-r--r-- 1 b13k b13k 13 May 23 10:16 b13k.txt
r权限对于目录的作用:
修改目录的属组为r权限
[root@ahui /b13k]#chmod u=r ../b13k/
[root@ahui /b13k]#ll -d /b13k
dr--r-xr-x 2 b13k b13k 24 May 23 09:59 /b13k
验证:
对于b13k用户权限位对应前三位 r–
[b13k@ahui ~]$ll -d /b13k
dr--r-xr-x 2 b13k b13k 63 May 23 10:38 /b13k
[b13k@ahui ~]$cd b13k/
-bash: cd: b13k/: Permission denied
[b13k@ahui ~]$ll b13k
ls: cannot access b13k/1.txt: Permission denied
ls: cannot access b13k/2.txt: Permission denied
ls: cannot access b13k/3.txt: Permission denied
total 0
-????????? ? ? ? ? ? 1.txt
-????????? ? ? ? ? ? 2.txt
-????????? ? ? ? ? ? 3.txt
[b13k@ahui ~]$touch b13k/4.txt
touch: cannot touch ‘b13k/4.txt’: Permission denied
[[b13k@ahui ~]$rm -f b13k/1.txt
rm: cannot remove ‘b13k/1.txt’: Permission denied
小结:
r 权限对于目录作用: 只能看文件名称 其他啥都干不了
- 无法进入目录
- 可以显示文件名称 但是无法显示属性信息
a. 文件名称存储在上级目录中
b. 文件属性信息存储到inode中 - 无法创建文件
- 无法查看文件内容
- 无法查看
w对于目录的作用:
修改权限
[root@ahui /]#chmod u=w b13k
[root@ahui /]#ll -d b13k/
d-w-r-xr-x 2 b13k b13k 63 May 23 10:44 b13k/
验证:
[b13k@ahui ~]$cd /b13k/
-bash: cd: /b13k/: Permission denied
[b13k@ahui ~]$ll /b13k/
ls: cannot open directory /b13k/: Permission denied
[b13k@ahui ~]$touch /b13k/test.txt
touch: cannot touch ‘/b13k/test.txt’: Permission denied
[b13k@ahui ~]$rm -rf /b13k/2.txt
rm: cannot remove ‘/b13k/2.txt’: Permission denied
w权限对于目录的作用: 啥都不能干
- 无法cd到目录
- 无法查看目录下的文件信息
- 无法创建文件
- 无法删除文件
x权限对于目录的作用
修改权限:
[root@ahui /]#chmod u=x b13k/
[root@ahui /]#ll -d b13k/
d--xr-xr-x 2 b13k b13k 63 May 23 10:44 b13k/
验证x权限:
[b13k@ahui ~]$cd /b13k/
[b13k@ahui /b13k]$
[b13k@ahui ~]$ll b13k
ls: cannot open directory b13k: Permission denied
[b13k@ahui ~]$touch b13k/4.txt
touch: cannot touch ‘b13k/4.txt’: Permission denied
[b13k@ahui ~]$rm -f b13k/1.txt
rm: cannot remove ‘b13k/1.txt’: Permission denied
x权限对于目录的作用: 可以进入目录
- 可以进入到目录
- 无法查看里面的文件信息
- 无法创建文件
- 无法删除文件
umask:
控制默认创建文件和目录的权限(在企业中禁止修改!!!)
- 默认创建文件的权限644
[root@ahui ~]#touch test.txt
[root@ahui ~]#ll
total 0
-rw-r--r-- 1 root root 0 May 23 11:45 test.txt
- 默认创建目录的权限755
[root@ahui ~]#mkdir b13k
[root@ahui ~]#ll
total 0
drwxr-xr-x 2 root root 6 May 23 11:45 b13k
注意: 在企业中一定把目录权限和文件权限控制成755和644
默认的UMASK值: 022
[root@ahui ~]#umask
0022
文件的默认权限: 由文件的最高权限减去默认的umask值
文件的最高权限: 666
umask: 022
666 - 022 = 644
目录的默认权限: 由目录的最高权限减去默认的umask值
目录的最高权限: rwx 777
777 - 022 = 755
修改umask值:
[root@ahui ~]#umask 044
[root@ahui ~]#umask
0044
创建文件默认的权限: 666-044=622 rw–w–w-
创建目录默认的权限: 777-044=733 rwx-wx-wx
[root@ahui ~]#touch test.txt
[root@ahui ~]#mkdir b13k
[root@ahui ~]#ll
total 0
drwx-wx-wx 2 root root 6 May 23 11:52 b13k
-rw--w--w- 1 root root 0 May 23 11:52 test.txt
案例:修改umask值为032:
[root@ahui ~]#umask 032
[root@ahui ~]#umask
0032
创建文件默认的权限: 666-032=634 rw–wxr–
创建目录默认的权限: 777-032=745 rwxr–r-x
[root@ahui ~]#rm -rf *
[root@ahui ~]#touch test.txt
[root@ahui ~]#mkdir b13k
[root@ahui ~]#ll
total 0
drwxr--r-x 2 root root 6 May 23 11:56 b13k
-rw-r--r-- 1 root root 0 May 23 11:56 test.txt
注意事项: 如果umask值有奇数位 文件则相减后在奇数上加1 (目录不需要加)
666 - 032 = 634 + 010 = 644
案例: 默认的创建文件权限是000 目录权限为111 请问umask值是多少
[root@ahui ~]#umask 666
[root@ahui ~]#touch test.txt
[root@ahui ~]#mkdir b13k
[root@ahui ~]#ll
total 0
d--x--x--x 2 root root 6 May 23 12:02 b13k
---------- 1 root root 0 May 23 12:02 test.txt
案例:umask值为555权限(文件与目录全部只有可写权限)
[root@ahui ~]#umask 555
[root@ahui ~]#touch test.txt
[root@ahui ~]#ll
total 0
--w--w--w- 1 root root 0 May 23 12:03 test.txt
[root@ahui ~]#mkdir b13k
[root@ahui ~]#ll
total 0
d-w--w--w- 2 root root 6 May 23 12:03 b13k
--w--w--w- 1 root root 0 May 23 12:03 test.txt
系统是如何识别是字符串文件还是脚本的啊,还是说只要是文件他默认最高权限就是666?
系统没有办法区分脚本还是普通文件 linux一切皆文件
我们自己区分的 如果文件中是命令 则是脚本文件
如果文件中是普通字符串 则是普通文本文档
小结:
-
权限体系
- r 可读
- w 可写
- x 可执行
-
修改权限
所有位置表示方式:
- 第一种: ugo (user 属主、 group 属组、other 其他用户)
- 第二种: a 表示all
- 第三种: 直接写权限表示所有 chmod +x b13k.txt -
权限位对应数字
r=4可读、w=2可写、x=1可执行 -
rwx对于文件的作用:
只有r权限 文件可以查看
只有w权限 文件只能echo追加
只有x权限 什么都不可以操作正常写入和修改文件需要 rw 权限
正常执行文件 rx 权限
写入修改可执行 rwx权限对于普通文本文档 rw 就是最高权限 读写修改(不需要执行权限 因为文件中都是普通字符串 而不是命令)
对于脚本文件 rwx 为最高权限 读写修改 还可以执行里面的命令 -
rwx对于目录的作用
只有r 只能看文件名称
只有w 啥都不能干
只有x 啥都不能干rw 组合对于目录 没有任何意义
r-x组合对于目录 能进入目录能正常查看文件信息和文件内容
r-x组合表示用户能进入到目录下 可以正常查看文件的属性信息(但是不决定用户是否能对文件用户读写权限)
rwx组合表示属主拥有 增删改查功能目录拥有r-x权限 用户可读
1) 表示下面的所有文件任意用户可读(默认正确的)
2) 普通用户需要文件权限的对应关系
linux系统默认的普通文件 rw-r–r-- 644权限 其他用户可读 -
umask
文件的默认权限: 由文件的最高权限减去默认的umask值