后面也会持续更新,学到新东西会在其中补充。
建议按顺序食用,欢迎批评或者交流!
缺什么东西欢迎评论!我都会及时修改的!
在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频
文件权限
常用权限:
r Readable
w Writable
x excutable
对文件的权限:
r 可使用文件查看类工具(cat vi vim)获取其内容
w 可修改其内容
x 可以此文件提交内核启动为一个进程,即可以执行(运行)此文件(此文件必须是可以执行的比如shell脚本)
对目录的权限:
r 可以ls查看目录中文件列表
w 此目录可以创建文件、删除文件
x 可以cd进入目录 ls -l查看目录中元数据(需要配合r权限)
用户属于哪个组
bash
[root@study ~]# groups wang
wang : wang
查看组里面有哪个用户
这里看的是附加组
bash
[root@study ~]# usermod -G mysql wang
[root@study ~]# id wang
uid=1000(wang) gid=1000(wang) groups=1000(wang),995(mysql)
一个文件的访问三种用户
bash
[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
答案是红色! 逻辑是这样的 文件所有者 > 文件所属组用户 > 其他用户
注意:用户的最终权限,是从左向右匹配,即,所有者,所属者,其他人,一旦匹配权限立即生效,不再向右查看其权限
范例:
bash
[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 匹配到了文件所有者就不会匹配后面的文件所属组用户 文件所有者权限是--- 所以什么权限就都没了!
文件所有者
bash
[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
文件所属组用户
bash
[root@study data]# su - test
[test@study data]$ cat f1.txt
123123
[test@study data]$ echo 12321321 >> f1.txt
-bash: f1.txt: Permission denied
其他用户
bash
[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
bash
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:递归修改权限
我自己的文件我能修改权限吗?
bash
[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
bash
[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
我自己的文件我能修改所属组吗?
bash
[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
可以改成用户自己在的组但是不能修改其他组
bash
[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是不是就不能执行了?
bash
[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用户
bash
[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 不受权限约束!
文件夹和文件的权限纠纷
bash
[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 可以吗?当然可以!
bash
[wang@study test]$ rm -f f1.txt
[wang@study test]$ ll
total 0
文件夹可以删除增加文件和文件属性无关!只和文件夹属性有关!
公司说开除你就开除你,无论你能力是否强大!
删除文件就是把目录(detry)里面的文件名干掉了
X权限的作用
针对文件夹和已经有执行权限文件给你添加执行权限
bash
[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
八进制数字
bash
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
bash
[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
面试题
bash
[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
bash
[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
bash
[root@study data]# type umask
umask is a shell builtin 内部命令
[root@study data]# umask
0022 第一个0代表8进制
修改umask的值
bash
[root@study data]# umask 754
[root@study data]# umask
0754
修改umask的值(配置文件)
bash
[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
创建一个文件权限是咋样的?
bash
[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
bash
[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 被影响了!
实用命令(重要)
bash
[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 文件系统没有这个文件权限功能
权限设置需要文件系统支持
练习
bash
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
环境搭建
bash
[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文件还是被修改了
bash
[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
bash
[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
bash
[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文件夹
bash
[root@study data]# ll -d /tmp
drwxrwxrwt. 34 root root 4096 Nov 11 00:58 /tmp
t 权限能够让一个文件夹里的文件要想删只有两种情况
1:root
2:这个文件是我的我才能删
临时文件夹里面有很多不同用户的东西,每一个用户都有自己的文件不能乱套,所以加了一个t。
t 一般是加载文件夹上
不加t的文件夹是怎样的
环境搭建
bash
[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
实验
bash
[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的文件夹是怎样的
环境搭建
bash
[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
实验
bash
[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 作用在文件夹上
环境搭建
bash
[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
实验
bash
[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 在此文件夹创建文件就会文件的属组和文件夹的属组一样!
参考文献
总结
所有命令都需要反复敲来实验来记忆,本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。