第二十一章 Linux系统权限管理体系
一、权限的基本概述
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.为什么要设置权限
设置某个用户对于系统的某个资源拥有什么样管理权力,只有root管理员才可以修改任何人的权限 普通用户只能修改自己的权限
二、设置权限命令-chmod
1.含义
chmod命令来自于英文词组”change mode“的缩写,其功能是用于改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。
设置权限时可以使用数字法,亦可使用字母表达式,对于目录文件建议加入-R参数进行递归操作,意味着不仅对于目录本身,也对目录内的子文件/目录都进行新权限的设定。
语法格式: chmod 参数 文件
2.常用参数
-c | 若该文件权限确实已经更改,才显示其更改动作 |
---|---|
-f | 若该文件权限无法被更改也不显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更) |
三、权限的设置案列
1.示例
-rwxrw-r-- test01 dev file.txt
test01 user01属于dev组 jh01属于jh01组
2.三个用户分别对这个文件拥有什么权限
test01是文件的所有者 可读 可写 可执行权限
user01属于dev组,dev组所拥有的权限,user01同样拥有 可读 可写 权限
jh01不属于dev组,对于此文件来说,就是一个陌生人 拥有匿名用户的权限 可读
3.判断一个用户对一个文件拥有什么权限
1. 系统会判断该用户是否为所有者,如果是,则按照属主的权限进行访问
2. 如果不是所有者,则判断该用户是否为所属组,如果是,则按照所属组的权限进行访问
3. 如果此用户不是所有者,也不是所属组,则按照匿名用户进行访问
4.修改权限的两种方法
字母进行修改
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
5.权限设置案例
/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
1.含义
chown命令来自于英文词组”Change owner“的缩写,其功能是用于改变文件或目录的用户和用户组信息。管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息。
语法格式:chown [参数] 所属主:所属组 文件
2.常用参数
-R | 对目前目录下的所有文件与目录进行相同的变更 |
---|---|
-c | 显示所属信息变更信息 |
-f | 若该文件拥有者无法被更改也不要显示错误 |
-h | 只对于链接文件进行变更,而非真正指向的文件 |
-v | 显示拥有者变更的详细资料 |
--help | 显示辅助说明 |
--version | 显示版本 |
3.常用示例
改变指定文件的所属主与所属组
[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
1.含义
chgrp是英语单词“change group”的缩写,命令的作用和其中文释义一样,为用于变更文件或目录的所属群组。
语法格式: chgrp [参数] [目录]
2.常用参数
-c | 效果类似”-v”参数,但仅回报更改的部分 |
---|---|
-f | 不显示错误信息 |
-h | 对符号连接的文件作修改,而不更动其他任何相关文件 |
-R | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v | 显示指令执行过程 |
--reference | 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同 |
3.常用示例
改变文件的群组属性
[root@jh ~]# chgrp root /opt/test/
[root@jh ~]# ll -d /opt/test/
drwxrw--wx 5 jh01 root 84 Jul 23 11:17 /opt/test/
根据指定文件改变文件的群组属性
[root@jh ~]# chgrp --reference=file_1 file_2
将/opt/test/及其子目录下的所有文件的用户组改为cool
[root@jh ~]# chgrp -R jh01 /opt/test/
九、权限控制命令-umask
1.含义
系统中为什么新创建的目录的权限为755,文件的权限为644.umask命令可用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
[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
语法格式:umask [参数] [权限掩码]
2.常用参数
-S | 以文字的方式来表示权限掩码 |
---|---|
-p | 输出的权限掩码可直接作为指令来执行 |
3.系统中是如何计算权限
系统新创建的目录的权限由最大权限777减去umask控制权限022得到的就是755,所以说新创建的目录的权限为755,新创建文件的权限由文件最大权限666减去umask控制权限022,得到644权限,所以说新创建的文件的权限为644,当文件权限遇到奇数时,在奇数为加一.
4.常用示例
使用指令”umask”查看当前权限掩码
[root@jh ~]# umask
0022
使组用户的写权限,其他用户的读、写和执行权限都被取消:
[root@jh ~]# umask u=, g=w, o=rwx
修改权限掩码
[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
1.含义
lsattr命令来自于英文词组“list attribute”的缩写,其功能是用于显示文件的隐藏属性。隐藏属性也叫隐藏权限,顾名思义就是用chattr命令添加在文件上的隐藏权限属性,用常规ls命令无法查看到它们,需要使用lsattr命令查看这些属性信息。
语法格式:lsattr [参数] 文件名
2.常用参数
-a | 列出目录中的所有文件,包括隐藏文件 |
---|---|
-d | 只显示目录名称 |
-R | 递归地处理指定目录下的所有文件及子目录 |
-v | 显示文件或目录版本 |
-V | 显示版本信息 |
-D | 显示属性的名称、默认值 |
-E | 显示从用户设备数据库中获得属性的当前值 |
3.常用示例
查看指定文件上的隐藏属性
[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 ~]# lsattr -d /root
------------------ /root
查看指定目录中全部文件上的隐藏属性:
[root@jindada ~]# lsattr -a /root
------------------ /root/.
------------------ /root/..
------------------ /root/.bash_logout
------------------ /root/.bash_profile
------------------ /root/.bashrc
------------------ /root/.cshrc
------------------ /root/.tcshrc
-----a------------ /root/anaconda-ks.cfg
------------------ /root/.cache
十二、更改文件隐藏属性-chattr
1.含义
chattr命令来自于英文词组“change attribute”的缩写,其功能是用于更改文件隐藏属性。常用的ls命令仅能够查看到文件的一般权限、特殊权限、SELinux安全上下文与是否有FACL访问控制列表等情况,但却无法查看到文件隐藏属性,所以有些运维人员甚至不清楚竟然还有第五种文件权限!~
语法格式:chattr 参数 文件
2.实用参数
-R | 递归处理目录下的所有文件 |
---|---|
-v | 设置文件或目录版本 |
-V | 显示指令执行过程 |
+ | 开启文件或目录的该项属性 |
-- | 关闭文件或目录的该项属性 |
= | 指定文件或目录的该项属性 |
权限 | 作用 |
---|---|
i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
S | 文件内容在变更后立即同步到硬盘(sync) |
s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(atime) |
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-merging) |
x | 可以直接访问压缩文件中的内容 |
3.常用示例
给指定文件添加隐藏属性
[root@jindada ~]# chattr +i anaconda-ks.cfg
从指定文件移除隐藏属性
[root@jindada ~]# chattr -i anaconda-ks.cfg
给指定目录添加隐藏属性,递归操作
[root@jindada ~]# chattr -R +i /root
从指定目录移除隐藏属性,递归操作
[root@jindada ~]# chattr -R -i /root
文件只能追加内容和查看
[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