Linux( 权限+特殊权限 图片+大白话)

后面也会持续更新,学到新东西会在其中补充。

建议按顺序食用,欢迎批评或者交流!

缺什么东西欢迎评论!我都会及时修改的!

在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频

王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频

文件权限

常用权限:

r Readable
w Writable
x excutable

对文件的权限:

r  可使用文件查看类工具(cat vi vim)获取其内容
w  可修改其内容
x  可以此文件提交内核启动为一个进程,即可以执行(运行)此文件(此文件必须是可以执行的比如shell脚本)

对目录的权限:

r 可以ls查看目录中文件列表
w 此目录可以创建文件、删除文件
x 可以cd进入目录 ls -l查看目录中元数据(需要配合r权限)

用户属于哪个组

[root@study ~]# groups wang
wang : wang

查看组里面有哪个用户

这里看的是附加组

[root@study ~]# usermod -G mysql wang
[root@study ~]# id wang
uid=1000(wang) gid=1000(wang) groups=1000(wang),995(mysql)

 一个文件的访问三种用户

[root@study data]# groupadd test
[root@study data]# usermod -G test,mysql wang
[root@study data]# id wang
uid=1000(wang) gid=1000(wang) groups=1000(wang),995(mysql),1001(test)
[root@study data]# chown wang:test f1.txt
[root@study data]# ll
total 0
-rw-r--r--. 1 wang test 0 Nov  8 06:34 f1.txt

答案是红色!  逻辑是这样的 文件所有者 > 文件所属组用户 > 其他用户 

注意:用户的最终权限,是从左向右匹配,即,所有者,所属者,其他人,一旦匹配权限立即生效,不再向右查看其权限

 范例:

[root@study data]# chmod u=,g=r,o=rwx f1.txt
[root@study data]# ll
total 4
----r--rwx. 1 wang test 7 Nov  8 06:46 f1.txt

[root@study data]# su wang
[wang@study data]$ cat f1.txt
cat: f1.txt: Permission denied
[wang@study data]$ echo 21321312 > f1.txt
bash: f1.txt: Permission denied

 这里 wang 匹配到了文件所有者就不会匹配后面的文件所属组用户 文件所有者权限是--- 所以什么权限就都没了!

 文件所有者

[root@study data]# echo 123123 >> f1.txt
[root@study data]# cat f1.txt
123123
[root@study data]# ll
total 4
-rw-r--r--. 1 root root 7 Nov 11 03:24 f1.txt

文件所属组用户

[root@study data]# su - test
[test@study data]$ cat f1.txt
123123
[test@study data]$ echo 12321321 >> f1.txt
-bash: f1.txt: Permission denied

其他用户

[root@study data]# useradd test1
[root@study data]# echo test1 | passwd --stdin test1
Changing password for user test1.
passwd: all authentication tokens updated successfully.
[root@study data]# su - test1
[test1@study data]$ cat f1.txt
123123
[test1@study data]$ echo 2131231 >> f1.txt
-bash: f1.txt: Permission denied

 chmod

MODE:who opt permission
who: u,g,o,a user group other all
opt: +,-,=
permission: r,w,x

修改一类用户的所有权限
u= g= o= ug= a= 

修改一类用户某个或某个位权限
u+ u- g+ g- o+ o- a+ a- 

-R:递归修改权限

我自己的文件我能修改权限吗?

[test1@study data]$ chmod u+rwx f1.txt
chmod: changing permissions of ‘f1.txt’: Operation not permitted
[root@study data]# su wang
[wang@study data]$ chmod u+rwx f1.txt
[wang@study data]$ ll
total 4
-rwxr--rwx. 1 wang test 7 Nov  8 06:46 f1.txt

当然可以我自己的文件为啥不能修改!

我自己的文件我能修改所有者吗?

普通用户无法使用chown

[root@study data]# ll
total 4
-rwxr--rwx. 1 wang test 7 Nov  8 06:46 f1.txt
[root@study data]# su wang
[wang@study data]$ chown root f1.txt
chown: changing ownership of ‘f1.txt’: Operation not permitted

我自己的文件我能修改所属组吗?

[root@study data]# su wang
[wang@study data]$ ll
total 4
-rwxr--rwx. 1 wang test 7 Nov  8 06:46 f1.txt
[wang@study data]$ chgrp wang f1.txt
[wang@study data]$ ll
total 4
-rwxr--rwx. 1 wang wang 7 Nov  8 06:46 f1.txt

 可以改成用户自己在的组但是不能修改其他组

[wang@study data]$ ll
total 4
-rwxr--rwx. 1 wang wang 7 Nov  8 06:46 f1.txt
[wang@study data]$ chgrp root f1.txt
chgrp: changing group of ‘f1.txt’: Operation not permitted

 ls去掉x是不是就不能执行了?

[wang@study data]$ which ls
alias ls='ls --color=auto'
        /usr/bin/ls
[wang@study data]$ ll /usr/bin/ls
-rwxr-xr-x. 1 root root 117608 Aug 20  2019 /usr/bin/ls
[root@study data]#  chmod a-x /usr/bin/ls
[root@study data]#  ll /usr/bin/ls
-bash: /usr/bin/ls: Permission denied

当然去掉了不可以执行!

chmod a-x == chmod -x 

跳出三界之外不在五行之中的root用户

[root@study data]# chmod a= f2.txt
[root@study data]# ll
total 4
-rwxr--rwx. 1 wang wang 7 Nov  8 06:46 f1.txt
最严格的文件
----------. 1 root root 0 Nov  8 08:06 f2.txt
[root@study data]# echo 1231232 >> f2.txt
[root@study data]# cat f2.txt
1231232

root 不受权限约束! 

文件夹和文件的权限纠纷

[root@study data]# chmod o+w test
[root@study data]# ll
total 8
-rwxr--rwx. 1 wang wang 7 Nov  8 06:46 f1.txt
----------. 1 root root 8 Nov  8 08:12 f2.txt
drwxr-xrwx. 2 root root 6 Nov  8 08:24 test
[root@study data]# cd test/
[root@study test]# touch f1.txt
[root@study test]# chmod a= f1.txt
[root@study test]# ll
total 0
----------. 1 root root 0 Nov  8 08:26 f1.txt
[root@study test]# su wang
[wang@study test]$ cat f1.txt
cat: f1.txt: Permission denied
[wang@study test]$ echo 212312 > f1.txt
bash: f1.txt: Permission denied

rm -f f1.txt 可以吗?当然可以!

[wang@study test]$ rm -f f1.txt
[wang@study test]$ ll
total 0

 文件夹可以删除增加文件和文件属性无关!只和文件夹属性有关!

 

公司说开除你就开除你,无论你能力是否强大! 

删除文件就是把目录(detry)里面的文件名干掉了

X权限的作用

针对文件夹和已经有执行权限文件给你添加执行权限

[root@study data]# ll
total 4
-rw-r--rw-. 1 wang wang 7 Nov  8 06:46 f1.txt
-rw-r--r--. 1 root root 0 Nov  8 20:05 f3.txt
drw-r--rw-. 2 wang test 6 Nov  8 08:27 test
[root@study data]# chmod -R a+X /data/
[root@study data]# ll
total 4
-rw-r--rw-. 1 wang wang 7 Nov  8 06:46 f1.txt
-rw-r--r--. 1 root root 0 Nov  8 20:05 f3.txt
drwxr-xrwx. 2 wang test 6 Nov  8 08:27 test
[root@study data]# chmod u+x f1.txt
[root@study data]# chmod -R a+X /data/
[root@study data]# ll
total 4
-rwxr-xrwx. 1 wang wang 7 Nov  8 06:46 f1.txt
-rw-r--r--. 1 root root 0 Nov  8 20:05 f3.txt
drwxr-xrwx. 2 wang test 6 Nov  8 08:27 test

 八进制数字

--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

[root@study data]# chmod 640 f1.txt
[root@study data]# ll
total 4
-rw-r-----. 1 root root 465 Nov  8 20:16 f1.txt

 面试题

[root@study data]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov  8 20:46 dir
[wang@study data]$ ll -d /etc/
drwxr-xr-x. 86 root root 8192 Nov  8 19:40 /etc/
[wang@study data]$ ll /etc/issue
-rw-r--r--. 1 root root 23 Oct 23  2020 /etc/issue
[wang@study data]$ ll /data -d
drwxr-xr-x. 3 root root 32 Nov  8 20:46 /data
[root@study data]# chmod o+w /data/dir
[root@study data]# ll
total 0
drwxr-xrwx. 2 root root 6 Nov  8 20:46 dir
[root@study data]# su wang
[wang@study data]$ cp /etc/issue /data/dir/
[wang@study data]$ ll
total 0
drwxr-xrwx. 2 root root 19 Nov  8 20:49 dir
[wang@study data]$ cd dir/
[wang@study dir]$ ll
total 4
-rw-r--r--. 1 wang wang 23 Nov  8 20:49 issue

umask 

umask影响了新建文件的权限

umask 的值可以来保留在创建文件权限

  • 新建文件的默认权限:666-umask,如果所得结果某位存在执行(奇数)权限,则将权限+1,偶数不变  666的原因是因为执行(x)很危险!
  • 新建目录的默认权限:777-umask

非特权用户umask默认是002

root的umask默认是022

[root@study data]# mkdir dir
[root@study data]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov  8 21:36 dir
777 - 022 = 755 
[root@study data]# touch f1.txt
[root@study data]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov  8 21:36 dir
-rw-r--r--. 1 root root 0 Nov  8 21:39 f1.txt
666 - 022 = 644
[root@study data]# type umask
umask is a shell builtin      内部命令
[root@study data]# umask
0022                          第一个0代表8进制

修改umask的值 

[root@study data]# umask 754
[root@study data]# umask
0754

修改umask的值(配置文件) 

[root@study ~]# vi .bashrc
[root@study ~]# cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

umask 123
[root@study ~]# umask
0022
. 执行shell脚本
[root@study ~]# . .bashrc
[root@study ~]# umask
0123

 创建一个文件权限是咋样的?

[root@study data]# touch f1.txt
[root@study data]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov  8 21:36 dir
-rw-r--r--. 1 root root 0 Nov 11 00:51 f1.txt
666 - 123 = 543 5+1 4 3+1 = 644

新建文件权限直接设为000 

[root@study data]# umask 666;touch f1.txt
[root@study data]# ll
total 0
----------. 1 root root 0 Nov 11 00:54 f1.txt
[root@study data]# umask
0666

这个方法umask 被影响了!

实用命令(重要)

[root@study data]# ( umask 666; touch /data/f1.txt )
[root@study data]# ll
total 0
----------. 1 root root 0 Nov 11 00:59 f1.txt
[root@study data]# umask
0022

小括号代表一次性

文件权限和文件系统有关 

文件权限和文件系统有关 支持的文件系统xfs ext4

fat 文件系统没有这个文件权限功能

权限设置需要文件系统支持

练习 

1:无法进入目录testdir
2:无法ls
3:不能修改也不能删除
4:可以删除不能修改
5: chown tomcat:apps /var/tmp/fstab
   chmod 660 /var/tmp/fstab
6: cp -r /etc/skel /home/git/

特殊权限

suid sgid sticky

suid s--> owner

sgid s--> group

sticky t--> other 

 环境搭建

[wang@study data]$ echo 2312312 >> /etc/shadow
bash: /etc/shadow: Permission denied
[wang@study data]$ rm -f /etc/shadow
rm: cannot remove ‘/etc/shadow’: Permission denied
[wang@study data]$ ll /etc/shadow
----------. 1 root root 919 Nov  8 06:48 /etc/shadow

 但是可见我们修改密码的时候passwd文件还是被修改了

[wang@study data]$ passwd
Changing password for user wang.
Changing password for wang.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[wang@study data]$ ll /etc/shadow
----------. 1 root root 919 Nov 11 01:12 /etc/shadow

 查看passwd命令 注意owner多了一个s 这个就是suid

[root@study data]# which passwd
/usr/bin/passwd
[root@study data]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 Mar 31  2020 /usr/bin/passwd

wang 运行这个文件默认把文件所有者切换成 root 

若这个文件带有suid这个文件必须是可以执行程序它将继承这个文件所有者权限

若这个文件带有sgid这个文件必须是可以执行程序它将继承这个文件所属组权限

 把cat 的所有者权限+s

[root@study data]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 Aug 20  2019 /usr/bin/cat
[root@study data]# chmod u+s /usr/bin/cat
[root@study data]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 Aug 20  2019 /usr/bin/cat
[root@study data]# su wang
[wang@study data]$ cat /etc/shadow
root:$6$amlvkcnsvLsSPRkG$HBKDmpz8QSHE3qbfxK1lf2ic9Kqrm5QKc2SPPQHf/VMX19tI6sdB859WThLECp8RIFPO0E2kXx9vwwv/kX8v00::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
....

太危险了这个命令! 

tmp文件夹

[root@study data]# ll -d /tmp
drwxrwxrwt. 34 root root 4096 Nov 11 00:58 /tmp

 t 权限能够让一个文件夹里的文件要想删只有两种情况

1:root

2:这个文件是我的我才能删

临时文件夹里面有很多不同用户的东西,每一个用户都有自己的文件不能乱套,所以加了一个t。

t 一般是加载文件夹上

不加t的文件夹是怎样的

环境搭建

[root@study data]# chmod o+w dir/
[root@study data]# ll
total 0
drwxr-xrwx. 2 root root 6 Nov 11 01:49 dir
[root@study data]# cd dir/
[root@study dir]# ll
total 0
[root@study dir]# su wang
[wang@study dir]$ touch f1.txt
[wang@study dir]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 11 01:50 f1.txt
[root@study dir]# su test
[test@study dir]$ touch f3.txt
[test@study dir]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 11 01:50 f1.txt
-rw-r--r--. 1 root root 0 Nov 11 01:50 f2.txt
-rw-rw-r--. 1 test test 0 Nov 11 01:51 f3.txt

 实验

[wang@study data]$ cd dir/
[wang@study dir]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 11 01:50 f1.txt
-rw-r--r--. 1 root root 0 Nov 11 01:50 f2.txt
-rw-rw-r--. 1 test test 0 Nov 11 01:51 f3.txt
[wang@study dir]$ rm -f f1.txt
[wang@study dir]$ rm -f f2.txt
[wang@study dir]$ rm -f f3.txt
[wang@study dir]$ ll
total 0

加t的文件夹是怎样的 

环境搭建

[root@study data]# chmod o+w dir/
[root@study data]# ll
total 0
drwxr-xrwx. 2 root root 6 Nov 11 01:49 dir
[root@study data]# cd dir/
[root@study dir]# ll
total 0
[root@study dir]# su wang
[wang@study dir]$ touch f1.txt
[wang@study dir]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 11 01:50 f1.txt
[root@study dir]# su test
[test@study dir]$ touch f3.txt
[test@study dir]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 11 01:50 f1.txt
-rw-r--r--. 1 root root 0 Nov 11 01:50 f2.txt
-rw-rw-r--. 1 test test 0 Nov 11 01:51 f3.txt

 实验

[root@study data]# chmod o+t dir/
[root@study data]# ll
total 0
drwxr-xrwt. 2 root root 48 Nov 11 01:56 dir
[root@study data]# chmod o+t dir/
[root@study data]# ll
total 0
drwxr-xrwt. 2 root root 48 Nov 11 01:56 dir
[root@study data]# cd dir/
[root@study dir]# su wang
[wang@study dir]$ ll
total 0
-rw-rw-r--. 1 wang wang 0 Nov 11 01:54 f1.txt
-rw-rw-r--. 1 test test 0 Nov 11 01:55 f2.txt
-rw-r--r--. 1 root root 0 Nov 11 01:56 f3.txt
[wang@study dir]$ rm -f f2.txt
rm: cannot remove ‘f2.txt’: Operation not permitted

sgid 作用在文件夹上

环境搭建

[root@study data]# mkdir dir1
[root@study data]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov 11 01:33 dir1
----------. 1 root root 0 Nov 11 00:59 f1.txt
[root@study data]# touch dir1/f1.txt
[root@study data]# chmod 777 dir1/
[root@study data]# ll
total 0
drwxrwxrwx. 2 root root 20 Nov 11 01:36 dir1
----------. 1 root root  0 Nov 11 00:59 f1.txt
[root@study data]# su wang
[wang@study data]$ touch dir1/wang1.txt
[wang@study data]$ ll dir1/
total 0
-rw-r--r--. 1 root root 0 Nov 11 01:36 f1.txt
-rw-rw-r--. 1 wang wang 0 Nov 11 01:37 wang1.txt
[root@study data]# groupadd it

 实验

[root@study data]# chgrp it dir1/
[root@study data]# ll
total 0
drwxrwxrwx. 2 root it   37 Nov 11 01:37 dir1
----------. 1 root root  0 Nov 11 00:59 f1.txt
[root@study data]# chmod g+s dir1/
[root@study data]# ll
total 0
drwxrwsrwx. 2 root it   37 Nov 11 01:37 dir1
----------. 1 root root  0 Nov 11 00:59 f1.txt
[wang@study data]$ ll dir1/
total 0
-rw-r--r--. 1 root root 0 Nov 11 01:36 f1.txt
-rw-rw-r--. 1 wang it   0 Nov 11 01:41 f2.txt
-rw-rw-r--. 1 wang wang 0 Nov 11 01:37 wang1.txt

结论

可见我们修改了dir1的属组和权限g+s 在此文件夹创建文件就会文件的属组和文件夹的属组一样!

参考文献

2文件所有者所属组和权限管理_哔哩哔哩_bilibili

3文件默认权限和特殊权限_哔哩哔哩_bilibili

总结

所有命令都需要反复敲来实验来记忆,本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。

上一篇:LinkedList 源码分析-LinkedList 简介


下一篇:Python 正则表达式进阶用法:边界匹配