一、权限的基本概述
1.什么是权限
系统对用户所能执行的功能的限制
2.为什么要有权限
为了保护每个用户的自己的工作环境和隐私
3.权限跟用户有什么关系
属主 User u
属组 Group g
其他人 others o
a 所有
对应了三个基础权限
r 可读 readable 4
w 可写 writable 2
x 可执行 executable 1
- 没有权限 权限位占位符 0
[root@jh ~]# ls -l
total 61152
-rw-r--r--. 1 root root 39 Jul 17 19:16 123.txt
-rw-r--r--. 1 root root 9272936 Jul 17 12:01 access.log
- rw- r-- r-- 644
文件的类型 属主 属组 匿名
每三个为一组
第一个对应 可读 r
第二个对应 可写 w
第三个对应 可执行 x
没有此权限则用-代替
4.为什么要设置权限,如何设置权限
设置某个用户对于系统的某个资源拥有什么样管理权力
chmod #设置权限的命令
选项:
-R #针对目录设置权限 赋予目录及目录以下所有文件的权限
只有root管理员才可以修改任何人的权限 普通用户只能修改自己的权限
二、权限的设置案例
-rwxrw-r-- test01 dev file.txt
test01 user01属于dev组 jh01属于jh01组
三个用户分别对这个文件拥有什么权限
test01是文件的所有者 可读 可写 可执行权限
user01属于dev组,dev组所拥有的权限,user01同样拥有 可读 可写 权限
jh01不属于dev组,对于此文件来说,就是一个陌生人 拥有匿名用户的权限 可读
判断一个用户对一个文件拥有什么权限
1. 系统会判断该用户是否为所有者,如果是,则按照属主的权限进行访问
2. 如果不是所有者,则判断该用户是否为所属组,如果是,则按照所属组的权限进行访问
3. 如果此用户不是所有者,也不是所属组,则按照匿名用户进行访问
修改权限的两种方法:
字母进行修改
u 属主
g 属组
o 匿名用户
a 所有用户
权限字母
r 可读
w 可写
x 可执行
- 没有权限
赋予的方式
+ #添加权限
- #收回某个权限
= #覆盖之前的权限
#添加权限
[root@jh ~]# ll
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod u+x hosts
[root@jh ~]# ll
total 4
-rwxr--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod g+wx hosts
[root@jh ~]# ll
total 4
-rwxrwxr-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod o+w hosts
[root@jh ~]# ll
total 4
-rwxrwxrw- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod a+x hosts
[root@jh ~]# ll
total 4
-rwxrwxrwx 1 root root 158 Jul 23 09:06 hosts
#收回权限
#a可以省略
[root@jh ~]# chmod -x hosts
[root@jh ~]# ll
total 4
-rw-rw-rw- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod u-w hosts
[root@jh ~]# ll
total 4
-r--rw-rw- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod g-w,o-rw hosts
[root@jh ~]# ll
total 4
-r--r----- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]#
#覆盖之前的所有权限
[root@jh ~]# chmod a=rw hosts
[root@jh ~]# ll
total 4
-rw-rw-rw- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod o=- hosts
[root@jh ~]# ll
total 4
-rw-rw---- 1 root root 158 Jul 23 09:06 hosts
根据数字进行修改 会把原来的权限全部覆盖掉
-R #给目录的权限及目录以下的所有文件或者子目录都设置统一权限
[root@jh ~]# chmod 644 hosts
[root@jh ~]# ll
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# mkdir data
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root 6 Jul 23 09:35 data
-rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# cp /etc/hosts data/
[root@jh ~]# ll data/
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:35 hosts
[root@jh ~]# ll -d data/
drwxr-xr-x 2 root root 19 Jul 23 09:35 data/
[root@jh ~]# chmod 700 data/
[root@jh ~]# ll -d data/
drwx------ 2 root root 19 Jul 23 09:35 data/
[root@jh ~]# ll data/
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:35 hosts
[root@jh ~]# chmod -R 755 data/
[root@jh ~]# ll -d data/
drwxr-xr-x 2 root root 19 Jul 23 09:35 data/
[root@jh ~]# ll data/
total 4
-rwxr-xr-x 1 root root 158 Jul 23 09:35 hosts
#权限设置案例
/opt/test 针对于此目录
属主为root 属组为dev dev01 dev02
属主拥有所有权限
属组拥有可读 可写权限
其他人没有任何权限
[root@jh ~]# mkdir /opt/test
[root@jh ~]# ll /opt/
total 0
drwxr-xr-x 2 root root 6 Jul 23 09:40 test
[root@jh ~]# groupadd dev
[root@jh ~]# chgrp dev /opt/test/
[root@jh ~]# ll /opt/
total 0
drwxr-xr-x 2 root dev 6 Jul 23 09:40 test
[root@jh ~]# chmod 760 /opt/test/
[root@jh ~]# ll /opt/
total 0
drwxrw---- 2 root dev 6 Jul 23 09:40 test
三、权限对文件或者目录的影响
权限 文件 目录
r 可以查看文件内容 cat head tail 浏览目录及子目录的列表 ls tree
w 可以新增,修改文件内容的权利 vim echo > >> 可以新建或者删除,移动目录中的文件的权利
x 可以执行文件的权利 脚本 可以进入目录 cd
四、权限文件设置案例
r权限
[root@jh ~]# echo "hostname" >> /opt/file.txt
[root@jh ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 9 Jul 23 09:57 file.txt
[root@jh ~]# useradd jh01
[root@jh ~]#
[root@jh ~]# echo "1" | passwd --stdin jh01
Changing password for user jh01.
passwd: all authentication tokens updated successfully.
[root@jh ~]# su - jh01
Last login: Thu Jul 23 09:59:14 CST 2020 on pts/0
[jh01@jh ~]$ ll /opt/
total 4
-rw-r--r-- 1 root root 9 Jul 23 09:57 file.txt
drwxrw---- 2 root dev 6 Jul 23 09:40 test
[jh01@jh ~]$ cat /opt/file.txt
hostname
[jh01@jh ~]$ head /opt/file.txt
hostname
[jh01@jh ~]$ tail /opt/file.txt
hostname
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ echo "123" >> /opt/file.txt
-bash: /opt/file.txt: Permission denied
[jh01@jh ~]$ /opt/file.txt
-bash: /opt/file.txt: Permission denied
#文件只有r权限时,是可以正常查看文件内容的,不可以修改或者执行文件的权限
w权限
[root@jh ~]# chmod o=w /opt/file.txt
[root@jh ~]# ll /opt/file.txt
-rw-r---w- 1 root root 9 Jul 23 09:57 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:00:14 CST 2020 on pts/0
[jh01@jh ~]$ cat /opt/file.txt
cat: /opt/file.txt: Permission denied
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ cat /opt/file.txt
cat: /opt/file.txt: Permission denied
[jh01@jh ~]$ /opt/file.txt
-bash: /opt/file.txt: Permission denied
[root@jh ~]# cat /opt/file.txt
uirethruie
[jh01@jh ~]$ echo "test" >> /opt/file.txt
[jh01@jh ~]$ echo "test" > /opt/file.txt
[root@jh ~]# cat /opt/file.txt
uirethruie
test
[root@jh ~]# cat /opt/file.txt
test
#只有w权限时, 无法查看和执行文件的权限 使用vim编辑文件文件时,无法查看里面的内容,可以进行编辑,但是需要强制保存,但是保存之后,原来的内容被覆盖了 可以使用echo命令进行追加或者重定向内容进去
x权限
[root@jh ~]# chmod o=x /opt/file.txt
[root@jh ~]# ll /opt/file.txt
-rw-r----x 1 root root 5 Jul 23 10:09 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:08:38 CST 2020 on pts/0
[jh01@jh ~]$ ll /opt/file.txt
-rw-r----x 1 root root 5 Jul 23 10:09 /opt/file.txt
[jh01@jh ~]$ cat /opt/file.txt
cat: /opt/file.txt: Permission denied
[jh01@jh ~]$ echo "123" >> /opt/file.txt
-bash: /opt/file.txt: Permission denied
[jh01@jh ~]$ /opt/file.txt
bash: /opt/file.txt: Permission denied
#文件只有x权限 什么都干不了
rw权限
[root@jh ~]# chmod o=rw /opt/file.txt
[root@jh ~]# ll /opt/file.txt
-rw-r--rw- 1 root root 5 Jul 23 10:09 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:11:27 CST 2020 on pts/0
[jh01@jh ~]$ cat /opt/file.txt
test
[jh01@jh ~]$ echo "hostname" > /opt/file.txt
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ cat /opt/file.txt
hostname
pwd
[jh01@jh ~]$ /opt/file.txt
-bash: /opt/file.txt: Permission denied
#经过测试,文件w权限需要r权限的配合 才能正常的修改文件内容
rx权限
[root@jh ~]# chmod o=rx /opt/file.txt
[root@jh ~]# ll /opt/file.txt
-rw-r--r-x 1 root root 13 Jul 23 10:14 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:14:16 CST 2020 on pts/0
[jh01@jh ~]$ cat /opt/file.txt
hostname
pwd
[jh01@jh ~]$ echo "123" > /opt/file.txt
-bash: /opt/file.txt: Permission denied
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ /opt/file.txt
jh
/home/jh01
#经过测试,文件的x权限需要r权限的配合
wx权限 没有什么用处
rwx权限 权限太大
Permission denied #权限不足 没有权限
总结: 权限对文件的影响
1)#当文件只有r权限时,是可以正常查看文件内容的,不可以修改或者执行文件的权限
2)#只有w权限时, 无法查看和执行文件的权限 使用vim编辑文件文件时,无法查看里面的内容,可以进行编辑,但是需要强制保存,但是保存之后,原来的内容被覆盖了 可以使用echo命令进行追加或者重定向内容进去
3)#文件只有x权限 什么都干不了
4)#经过测试,文件w权限需要r权限的配合 才能正常的修改文件内容
5)#经过测试,文件的x权限需要r权限的配合
6)#wx权限 没有什么用处
6)#rwx权限 权限太大
五、目录权限设置案例
权限对目录的影响
r权限 具有可以浏览目录及其子目录下的列表 属性信息
[root@jh ~]# chmod o=r /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw-r-- 2 root root 6 Jul 23 09:40 test
[root@jh ~]# touch /opt/test/data.{txt,log,sh}
[root@jh ~]# mkdir /opt/test/oldboy{01..03}
[root@jh ~]# ll /opt/test/
total 0
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.log
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.sh
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.txt
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy03
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:51:09 CST 2020 on pts/0
[jh01@jh ~]$ ls /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
data.log data.sh data.txt oldboy01 oldboy02 oldboy03
[jh01@jh ~]$ ls -l /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
total 0
-????????? ? ? ? ? ? data.log
-????????? ? ? ? ? ? data.sh
-????????? ? ? ? ? ? data.txt
d????????? ? ? ? ? ? oldboy01
d????????? ? ? ? ? ? oldboy02
d????????? ? ? ? ? ? oldboy03
[jh01@jh ~]$ rm -f /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ touch /opt/test/data.conf
touch: cannot touch ‘/opt/test/data.conf’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log /tmp
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cd /opt/test/
-bash: cd: /opt/test/: Permission denied
[jh01@jh ~]$ tree /opt/test/ #没有任何统计
/opt/test/
0 directories, 0 files
#目录只有r权限,使用ls -l命令查看目录下的列表,会出现一堆的权限不足,但是文件名和文件类型显示出来了,其他的属性信息都是问号 不能对此目录下的文件进行新建或者删除及其移动的操作 也不能切换到这个目录
w权限
[root@jh ~]# chmod o=w /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw--w- 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:52:22 CST 2020 on pts/0
[jh01@jh ~]$ ls /opt/test/
ls: cannot open directory /opt/test/: Permission denied
[jh01@jh ~]$ ls -l /opt/test/
ls: cannot open directory /opt/test/: Permission denied
[jh01@jh ~]$ cd /opt/test/
-bash: cd: /opt/test/: Permission denied
[jh01@jh ~]$ touch /opt/test/123.txt
touch: cannot touch ‘/opt/test/123.txt’: Permission denied
[jh01@jh ~]$ rm -f /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log /tmp/
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cp /opt/test/data.log /tmp
cp: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cp /opt/test/data.log /tmp
cp: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log /tmp/
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ rm -f /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ ll -d /opt/
drwxrwxrwx 3 root root 34 Jul 23 09:57 /opt/
#只有w权限时,目录什么都做不了
x权限 进入目录
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:57:51 CST 2020 on pts/0
[jh01@jh ~]$ cd /opt/test/
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
[jh01@jh test]$ ls -l
ls: cannot open directory .: Permission denied
[jh01@jh test]$ rm -f data.log
rm: cannot remove ‘data.log’: Permission denied
[jh01@jh test]$ touch data.conf
touch: cannot touch ‘data.conf’: Permission denied
[jh01@jh test]$ mv data.log /tmp/
mv: cannot move ‘data.log’ to ‘/tmp/data.log’: Permission denied
[jh01@jh test]$ cp data.log /tmp/
[jh01@jh test]$ ll /tmp/
total 4
drwxr-xr-x. 2 root root 51 Jul 17 17:59 data1
drwxr-xr-x. 2 root root 51 Jul 17 17:59 data2
drwxr-xr-x. 2 root root 51 Jul 17 17:59 data3
-rw-r--r-- 1 jh01 jh01 0 Jul 23 11:03 data.log
#目录只有x权限时,可以切换到目录中,无法查看目录列表信息 也无法进行删除、新建、移动等操作 可以进行复制操作
rw权限
[root@jh ~]# chmod o=rw /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw-rw- 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 11:06:21 CST 2020 on pts/0
[jh01@jh ~]$ cd /opt/test/
-bash: cd: /opt/test/: Permission denied
[jh01@jh ~]$ ls /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
data.log data.sh data.txt oldboy01 oldboy02 oldboy03
[jh01@jh ~]$ ls -l /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
total 0
-????????? ? ? ? ? ? data.log
-????????? ? ? ? ? ? data.sh
-????????? ? ? ? ? ? data.txt
d????????? ? ? ? ? ? oldboy01
d????????? ? ? ? ? ? oldboy02
d????????? ? ? ? ? ? oldboy03
[jh01@jh ~]$ touch /opt/test/data.conf
touch: cannot touch ‘/opt/test/data.conf’: Permission denied
[jh01@jh ~]$ rm -f /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log /tmp/
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cp /opt/test/data.txt /tmp/
cp: cannot stat ‘/opt/test/data.txt’: Permission denied
#rw权限 跟只有r权限作用是一样的
rx权限
[root@jh ~]# chmod o=rx /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw-r-x 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 11:10:14 CST 2020 on pts/0
[jh01@jh ~]$ cd /opt/test/
[jh01@jh test]$ ls
data.log data.sh data.txt oldboy01 oldboy02 oldboy03
[jh01@jh test]$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.log
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.sh
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.txt
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy03
[jh01@jh test]$ touch data.conf
touch: cannot touch ‘data.conf’: Permission denied
[jh01@jh test]$ rm -f data.log
rm: cannot remove ‘data.log’: Permission denied
[jh01@jh test]$ mv data.txt /tmp/
mv: cannot move ‘data.txt’ to ‘/tmp/data.txt’: Permission denied
[jh01@jh test]$ cp data.txt /tmp/
[jh01@jh test]$ ll /tmp/
total 4
drwxr-xr-x. 2 root root 51 Jul 17 17:59 data1
drwxr-xr-x. 2 root root 51 Jul 17 17:59 data2
drwxr-xr-x. 2 root root 51 Jul 17 17:59 data3
-rw-r--r-- 1 jh01 jh01 0 Jul 23 11:03 data.log
-rw-r--r-- 1 jh01 jh01 0 Jul 23 11:13 data.txt
#目录拥有rx权限时,可以正常的查看目录列表信息,属性信息,也可以进入目录,可以复制文件到其他目录,但是不能执行新建、删除、移动等操作
wx权限
[root@jh ~]# chmod o=wx /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 11:12:31 CST 2020 on pts/0
[jh01@jh ~]$ cd /opt/test/
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
[jh01@jh test]$ touch 123.txt
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
[jh01@jh test]$ rm -f data.log
[jh01@jh test]$ mv data.txt /tmp/
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
#目录拥有wx权限时,可以进入目录,可以新建,删除、移动文件的权利 但是查看不了目录的列表及属性信息
总结: 权限对目录的影响
1)#r权限 具有可以浏览目录及其子目录下的列表 属性信息
2)#只有w权限时,目录什么都做不了
3)#目录只有x权限时,可以切换到目录中,无法查看目录列表信息 也无法进行删除、新建、移动等操作 可以进行复制操作
4)#rw权限 跟只有r权限作用是一样的
5)#目录拥有rx权限时,可以正常的查看目录列表信息,属性信息,也可以进入目录,可以复制文件到其他目录,但是不能执行新建、删除、移动等操作
6)#目录拥有wx权限时,可以进入目录,可以新建,删除、移动文件的权利 但是查看不了目录的列表及属性信息
ps:对目录设置权限时,不能离开x权限
对文件设置权限时,不能离开r权限
六、属主属组设置
chown #设置属主属组 只有root管理员才可以进行设置
选项:
-R #递归设置 设置目录及其目录以下的所有文件
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 84 Jul 23 11:17 test
[root@jh ~]# chown jh01 /opt/file.txt #默认设置的是属主
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 jh01 root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 84 Jul 23 11:17 test
[root@jh ~]# chown .jh01 /opt/file.txt #设置属组
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 jh01 jh01 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 84 Jul 23 11:17 test
[root@jh ~]# chown root.root /opt/file.txt #同时设置属主属组
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 84 Jul 23 11:17 test
[root@jh ~]# chown jh01.jh01 /opt/test/ #只设置目录
[root@jh ~]# ll -d /opt/test/
drwxrw--wx 5 jh01 jh01 84 Jul 23 11:17 /opt/test/
[root@jh ~]# ll /opt/test/
total 0
-rw-rw-r-- 1 jh01 jh01 0 Jul 23 11:17 123.txt
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.sh
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy03
[root@jh ~]# chown -R jh01.jh01 /opt/test/ #递归设置
[root@jh ~]# ll /opt/test/
total 0
-rw-rw-r-- 1 jh01 jh01 0 Jul 23 11:17 123.txt
-rw-r--r-- 1 jh01 jh01 0 Jul 23 10:51 data.sh
drwxr-xr-x 2 jh01 jh01 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 jh01 jh01 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 jh01 jh01 6 Jul 23 10:51 oldboy03
chgrp #设置属组
[root@jh ~]# chgrp root /opt/test/
[root@jh ~]# ll -d /opt/test/
drwxrw--wx 5 jh01 root 84 Jul 23 11:17 /opt/test/
七、umask权限控制
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root 6 Jul 23 11:21 123
-rw-r--r-- 1 root root 0 Jul 23 11:21 123.txt
系统中为什么新创建的目录的权限为755,文件的权限为644
都是由系统的控制权限所控制的
umask #控制权限的命令
[root@jh ~]# umask
0022
系统中是如何计算权限
系统新创建的目录的权限由最大权限777减去umask控制权限022得到的就是755,所以说新创建的目录的权限为755,新创建文件的权限由文件最大权限666减去umask控制权限022,得到644权限,所以说新创建的文件的权限为644,当文件权限遇到奇数时,在奇数为加一
[root@jh ~]# umask
0022
[root@jh ~]# umask 033
[root@jh ~]# umask
0033
[root@jh ~]# mkdir oldboy
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root 6 Jul 23 11:21 123
-rw-r--r-- 1 root root 0 Jul 23 11:21 123.txt
drwxr--r-- 2 root root 6 Jul 23 12:02 oldboy
[root@jh ~]# touch oldboy.txt
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root 6 Jul 23 11:21 123
-rw-r--r-- 1 root root 0 Jul 23 11:21 123.txt
drwxr--r-- 2 root root 6 Jul 23 12:02 oldboy
-rw-r--r-- 1 root root 0 Jul 23 12:02 oldboy.txt
八、特殊权限
1. setuid
权限位作用于属主的位置 可执行的权限位 执行这条命令的时候,相当于这条命令的所有者 root
s 表示
[root@jindada ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
[root@jindada ~]# ll /usr/bin/rm
-rwxr-xr-x. 1 root root 62952 Oct 31 2018 /usr/bin/rm
[root@jindada ~]# su - jindada01
Last login: Thu Jul 23 12:24:52 CST 2020 from 10.0.0.1 on pts/4
[jindada01@jindada ~]$ rm -rf /opt/
rm: cannot remove ‘/opt/’: Permission denied
[jindada01@jindada ~]$ ll -d /
dr-xr-xr-x. 17 root root 224 Jul 22 10:21 /
[jindada01@jindada ~]$ logout
[root@jindada ~]# rm -rf /opt/
[root@jindada ~]# ll /opt/
ls: cannot access /opt/: No such file or directory
[root@jindada ~]# mkdir /opt/
[root@jindada ~]# chmod 557 /
[root@jindada ~]# ll -d /
dr-xr-xrwx. 17 root root 224 Jul 24 08:38 /
[root@jindada ~]# su - jindada01
Last login: Fri Jul 24 08:37:21 CST 2020 on pts/0
[jindada01@jindada ~]$ rm -rf /opt/
[jindada01@jindada ~]$ logout
[root@jindada ~]# chmod -w /
chmod: /: new permissions are r-xr-xrwx, not r-xr-xr-x
[root@jindada ~]# chmod o-w /
[root@jindada ~]# ll -d /
dr-xr-xr-x. 16 root root 213 Jul 24 08:39 /
[root@jindada ~]# ll /usr/bin/rm
-rwxr-xr-x. 1 root root 62952 Oct 31 2018 /usr/bin/rm
[root@jindada ~]# chmod u+s /usr/bin/rm
[root@jindada ~]# ll /usr/bin/rm
-rwsr-xr-x. 1 root root 62952 Oct 31 2018 /usr/bin/rm
[root@jindada ~]# mkdir /opt
[root@jindada ~]# su - jindada01
Last login: Fri Jul 24 08:39:42 CST 2020 on pts/0
[jindada01@jindada ~]$ rm -rf /opt/
[jindada01@jindada ~]$ logout
[root@jindada ~]# mkdir /opt
[root@jindada ~]# chmod u-s /usr/bin/rm
[root@jindada ~]# ll /usr/bin/yum
-rwxr-xr-x. 1 root root 801 Nov 5 2018 /usr/bin/yum
[root@jindada ~]# su - jindada01
Last login: Fri Jul 24 08:42:10 CST 2020 on pts/0
[jindada01@jindada ~]$ yum install -y sl
Loaded plugins: fastestmirror
You need to be root to perform this command.
[jindada01@jindada ~]$ yum install -y mysql-server
Loaded plugins: fastestmirror
You need to be root to perform this command.
[jindada01@jindada ~]$ logout
[root@jindada ~]# ll /usr/bin/yum
-rwxr-xr-x. 1 root root 801 Nov 5 2018 /usr/bin/yum
[root@jindada ~]# chmod u+s /usr/bin/yum
[root@jindada ~]# ll /usr/bin/yum
-rwsr-xr-x. 1 root root 801 Nov 5 2018 /usr/bin/yum
[root@jindada ~]# su - jindada01
Last login: Fri Jul 24 08:45:28 CST 2020 on pts/0
[jindada01@jindada ~]$ yum install -y mysql-server
Loaded plugins: fastestmirror
You need to be root to perform this command.
#普通用户不能使用yum,命令,即使添加了setuid的权限也不行
#此权限不能乱给 知道就行
[root@jindada ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 Oct 31 2018 /usr/bin/cat
[root@jindada ~]# stat /usr/bin/cat
File: ‘/usr/bin/cat’
Size: 54160 Blocks: 112 IO Block: 4096 regular file
Device: 803h/2051d Inode: 201349408 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-07-24 08:52:48.370831557 +0800
Modify: 2018-10-31 03:16:01.000000000 +0800
Change: 2020-07-24 08:52:58.961832157 +0800
Birth: -
[root@jindada ~]# stat /usr/bin/passwd
File: ‘/usr/bin/passwd’
Size: 27832 Blocks: 56 IO Block: 4096 regular file
Device: 803h/2051d Inode: 201636086 Links: 1
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-07-23 09:58:46.365163401 +0800
Modify: 2014-06-10 14:27:56.000000000 +0800
Change: 2020-07-06 02:14:21.159994247 +0800
Birth: -
setuid的权限是4开头的
[root@jindada ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
[root@jindada ~]# chmod -x /usr/bin/cat
[root@jindada ~]# ll /usr/bin/cat
-rw-r--r--. 1 root root 54160 Oct 31 2018 /usr/bin/cat
[root@jindada ~]# chmod u+s /usr/bin/cat
[root@jindada ~]# ll /usr/bin/cat
-rwSr--r--. 1 root root 54160 Oct 31 2018 /usr/bin/cat
[root@jindada ~]# chmod +x /usr/bin/cat
[root@jindada ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54160 Oct 31 2018 /usr/bin/cat
[root@jindada ~]# chmod u-s /usr/bin/cat
[root@jindada ~]#
大S 和 小s的区别
拥有执行权限,设置setuid之后是小s
没有执行权限,设置setuid之后是大S
2. setgid
权限为作用在属组的x为 使用 s表示 有大S 和小s
用户在某个目录下新创建的目录或者文件,默认的所属组是自己的基本组
当设置setgid之后,用户新创建的目录或者文件的默认所属组不在是自己的组了
默认的组就是这个目录的所属组 让多个用户能够共享一个目录
[root@jindada ~]# mkdir /data
[root@jindada ~]# ll -d /data
drwxr-xr-x 2 root root 6 Jul 24 09:06 /data
[root@jindada ~]# chmod 770 /data
[root@jindada ~]# ll -d /data
drwxrwx--- 2 root root 6 Jul 24 09:06 /data
[root@jindada ~]# groupadd ops_group
[root@jindada ~]# chgrp ops_group /data/
[root@jindada ~]# ll -d /data/
drwxrwx--- 2 root ops_group 6 Jul 24 09:06 /data/
[root@jindada ~]# useradd ops01
[root@jindada ~]# useradd ops02
[root@jindada ~]# useradd ops03
[root@jindada ~]# id ops03
uid=1046(ops03) gid=1048(ops03) groups=1048(ops03)
[root@jindada ~]# usermod -aG ops_group ops01
[root@jindada ~]# usermod -aG ops_group ops02
[root@jindada ~]# usermod -aG ops_group ops03
[root@jindada ~]# su - ops01
[ops01@jindada ~]$ touch /data/ops01.txt
[ops01@jindada ~]$ ll /data/ops01.txt
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 /data/ops01.txt
[ops01@jindada ~]$ logout
[root@jindada ~]# su - ops02
[ops02@jindada ~]$ touch /data/ops02.txt
[ops02@jindada ~]$ ll /data/ops02.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 /data/ops02.txt
[ops02@jindada ~]$ logout
[root@jindada ~]# su - ops03
[ops03@jindada ~]$ touch /data/ops03.txt
[ops03@jindada ~]$ ll /data/ops03.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 /data/ops03.txt
[ops03@jindada ~]$ logout
[root@jindada ~]# ll /data/
total 0
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
[root@jindada ~]# chmod g+s /data/
[root@jindada ~]# ll -d /data/
drwxrws--- 2 root ops_group 57 Jul 24 09:11 /data/
[root@jindada ~]# stat /data/
File: ‘/data/’
Size: 57 Blocks: 0 IO Block: 4096 directory
Device: 803h/2051d Inode: 818813 Links: 2
Access: (2770/drwxrws---) Uid: ( 0/ root) Gid: ( 1045/ops_group)
Access: 2020-07-24 09:11:26.981894897 +0800
Modify: 2020-07-24 09:11:17.173894341 +0800
Change: 2020-07-24 09:13:03.894900384 +0800
Birth: -
[root@jindada ~]# ll /data/
total 0
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
[root@jindada ~]# echo "root" > /data/root.log
[root@jindada ~]# ll /data/
total 4
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root ops_group 5 Jul 24 09:14 root.log
[root@jindada ~]# su - ops01
Last login: Fri Jul 24 09:10:22 CST 2020 on pts/0
[ops01@jindada ~]$ echo "ops01" > /data/ops01.log
[ops01@jindada ~]$ logout
[root@jindada ~]# su - ops02
Last login: Fri Jul 24 09:10:52 CST 2020 on pts/0
[ops02@jindada ~]$ echo "ops02" > /data/ops02.log
[ops02@jindada ~]$ ll /data/
total 12
-rw-rw-r-- 1 ops01 ops_group 6 Jul 24 09:15 ops01.log
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops_group 6 Jul 24 09:15 ops02.log
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root ops_group 5 Jul 24 09:14 root.log
[ops02@jindada ~]$ vim /data/ops01.log
[ops02@jindada ~]$ cat /data/ops01.log
ops01
ops02
[ops02@jindada ~]$ umask
0002
[ops02@jindada ~]$ ll /data/
total 12
-rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 ops01.log
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops_group 6 Jul 24 09:15 ops02.log
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root ops_group 5 Jul 24 09:14 root.log
[ops02@jindada ~]$ rm -f /data/ops01.txt
[ops02@jindada ~]$ ll -d /data/
drwxrws--- 2 root ops_group 90 Jul 24 09:20 /data/
[ops02@jindada ~]$ mkdir /data/test
[ops02@jindada ~]$ ll /data/test
total 0
[ops02@jindada ~]$ ll /data/
total 12
-rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 ops01.log
-rw-rw-r-- 1 ops02 ops_group 6 Jul 24 09:15 ops02.log
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root ops_group 5 Jul 24 09:14 root.log
drwxrwsr-x 2 ops02 ops_group 6 Jul 24 09:21 test
3. sticky 粘滞位
权限作用于 others 的x为 使用 t 表示 小t 大T
给目录设置, 一个目录所有用户都拥有管理的权限 777 针对此目录设置一个粘滞位
所有用户都可以在这个目录进行创建、删除文件的权利 但是只能管理自己的文件 或者管理员拥有管理所有文件的权限 root
[root@jindada ~]# ll -d /tmp/
drwxrwxrwt. 15 root root 4096 Jul 24 09:02 /tmp/
[root@jindada ~]# stat /tmp/
File: ‘/tmp/’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 803h/2051d Inode: 67108936 Links: 15
Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-07-24 09:49:40.026024737 +0800
Modify: 2020-07-24 09:02:34.229864730 +0800
Change: 2020-07-24 09:02:34.229864730 +0800
Birth: -
[root@jindada ~]# mkdir /test
[root@jindada ~]# chmod 777 /test
[root@jindada ~]# ll -d /test
drwxrwxrwx 2 root root 6 Jul 24 09:50 /test
[root@jindada ~]# echo "root" /test/root.txt
root /test/root.txt
[root@jindada ~]# echo "root" > /test/root.txt
[root@jindada ~]# su - ops01
Last login: Fri Jul 24 09:14:53 CST 2020 on pts/0
[ops01@jindada ~]$ echo "ops01" > /test/ops01.txt
[ops01@jindada ~]$ logout
[root@jindada ~]# su - dev01
Last login: Wed Jul 22 10:49:56 CST 2020 from 10.0.0.1 on pts/1
[dev01@jindada ~]$ echo "dev01" > /test/dev01.txt
[dev01@jindada ~]$ logout
[root@jindada ~]# ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:51 ops01.txt
-rw-r--r-- 1 root root 5 Jul 24 09:51 root.txt
[root@jindada ~]# su - dev01
Last login: Fri Jul 24 09:51:51 CST 2020 on pts/0
[dev01@jindada ~]$ ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:51 ops01.txt
-rw-r--r-- 1 root root 5 Jul 24 09:51 root.txt
[dev01@jindada ~]$ rm -f /test/ops01.txt
[dev01@jindada ~]$ ll /test/
total 8
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-r--r-- 1 root root 5 Jul 24 09:51 root.txt
[root@jindada ~]# chmod o+t /test/
[root@jindada ~]# stat /test/
File: ‘/test/’
Size: 39 Blocks: 0 IO Block: 4096 directory
Device: 803h/2051d Inode: 67588796 Links: 2
Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-07-24 09:53:31.177037826 +0800
Modify: 2020-07-24 09:53:25.993037532 +0800
Change: 2020-07-24 09:55:02.412042992 +0800
Birth: -
[root@jindada ~]# su - ops01
Last login: Fri Jul 24 09:51:32 CST 2020 on pts/0
[ops01@jindada ~]$ echo "ops01" > /test/ops.txt
[ops01@jindada ~]$ ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
-rw-r--r-- 1 root root 5 Jul 24 09:51 root.txt
[root@jindada ~]# su - dev01
Last login: Fri Jul 24 09:52:59 CST 2020 on pts/0
[dev01@jindada ~]$ ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
-rw-r--r-- 1 root root 5 Jul 24 09:51 root.txt
[dev01@jindada ~]$ rm -f /test/ops.txt
rm: cannot remove ‘/test/ops.txt’: Operation not permitted
[dev01@jindada ~]$ rm -f /test/dev01.txt
[dev01@jindada ~]$ ll /test/
total 8
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
-rw-r--r-- 1 root root 5 Jul 24 09:51 root.txt
[dev01@jindada ~]$ logout
[root@jindada ~]# rm -f /test/ops.txt
[root@jindada ~]#
九、特殊属性
特殊属性不受普通权限的限制
lsattr #显示特殊属性
chattr #设置特殊属性
a #这个文件只能追加内容和查看 别的什么都做不了 删除 移动 复制可以
i #什么都操作不了
[root@jindada ~]# touch test.txt
[root@jindada ~]# touch test.log
[root@jindada ~]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 24 10:08 test.log
-rw-r--r-- 1 root root 0 Jul 24 10:08 test.txt
[root@jindada ~]# lsattr test.log
---------------- test.log
[root@jindada ~]# lsattr test.txt
---------------- test.txt
[root@jindada ~]# echo "test" > test.log
[root@jindada ~]# echo "test" > test.txt
[root@jindada ~]# ll
total 8
-rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
-rw-r--r-- 1 root root 5 Jul 24 10:09 test.txt
[root@jindada ~]# chattr +a test.log
[root@jindada ~]# ll test.log
-rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
[root@jindada ~]# lsattr test.log
-----a---------- test.log
[root@jindada ~]# cat test.log
test
[root@jindada ~]# vim test.log
[root@jindada ~]# vim test.log
[root@jindada ~]# echo "hello" > test.log
-bash: test.log: Operation not permitted
[root@jindada ~]# echo "hello" >> test.log
[root@jindada ~]# cat test.log
test
hello
[root@jindada ~]# rm -f test.log
rm: cannot remove ‘test.log’: Operation not permitted
[root@jindada ~]# mv test.log /tmp/
mv: cannot move ‘test.log’ to ‘/tmp/test.log’: Operation not permitted
[root@jindada ~]# cp test.log /tmp/
[root@jindada ~]# chattr +i test.txt
[root@jindada ~]# lsattr test.txt
----i----------- test.txt
[root@jindada ~]# cat test.txt
test
[root@jindada ~]# rm -f test.txt
rm: cannot remove ‘test.txt’: Operation not permitted
[root@jindada ~]# mv test.txt /tmp/
mv: cannot move ‘test.txt’ to ‘/tmp/test.txt’: Operation not permitted
[root@jindada ~]# cp test.txt /tmp/
[root@jindada ~]# echo "hello" > test.txt
-bash: test.txt: Permission denied
[root@jindada ~]# echo "hello" >> test.txt
-bash: test.txt: Permission denied