第二十二章 权限管理体系

一、权限的基本概述

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

 

原文地址:https://www.cnblogs.com/jhno1/p/13387173.html