2.17-设置查看隐藏权限命令chattr、lsattr

chattr – change file attributes on a Linux file system(在Linux文件系统上更改文件属性)


设置隐藏权限

[root@evan-01 ~]# ls -l
total 12
-rw-------. 1 root root 6398 Aug  8 16:10 anaconda-ks.cfg
-rw-------. 1 root root 1257 Aug  8 18:36 anaconda-ks.cfg.bak
drwxrwxr--. 2 root root    6 Aug  9 11:15 test
-rw-rw-r--. 1 root root    0 Aug  9 11:14 test.txt
[root@evan-01 ~]# chattr +i test.txt 
[root@evan-01 ~]# 

设置后我们去编辑这个文件

[root@evan-01 ~]# vi test.txt

按 i 切换到插入模式后,下面出现警告:W10: Warning: Changing a readonly file(W10:警告:更改只读文件)
2.17-设置查看隐藏权限命令chattr、lsattr_第1张图片随便写入一些内容,按esc键,输入:wq保存退出,提示:‘E45 readonly’ option is set (add ! to override),设置了readonly选项,添加!覆盖
2.17-设置查看隐藏权限命令chattr、lsattr_第2张图片
写入不进去,按 esc 键,输入:q! ,强制退出。

[root@evan-01 ~]# cat test.txt
[root@evan-01 ~]# 

然后查看下文件,发现什么都没写入进去

尝试追加内容进去看可以吗

[root@evan-01 ~]# echo "123456" >> test.txt
-bash: test.txt: Permission denied
[root@evan-01 ~]# 

究竟他有着什么权限,还不能编辑呢,看下

[root@evan-01 ~]# ls -l test.txt
-rw-rw-r--. 1 root root 0 Aug  9 11:14 test.txt
[root@evan-01 ~]# 

是可读写的,没毛病呀。这些都没问题,那一定是有隐藏权限的

lsattr 查看隐藏权限

[root@evan-01 ~]# lsattr test.txt
----i----------- test.txt
[root@evan-01 ~]# 

再新建一个文件,看下有没有隐藏权限

[root@evan-01 ~]# touch test2.txt
[root@evan-01 ~]# lsattr test2.txt
---------------- test2.txt
[root@evan-01 ~]#

发现什么都没有

给文件添加 i 权限后,编辑不了,改不了名字,删不掉
编辑不了的例子,在前面已经操作过了
改不了名字

[root@evan-01 ~]# mv test.txt hahaha.txt
mv: cannot move ‘test.txt’ to ‘hahaha.txt’: Operation not permitted
[root@evan-01 ~]# 

删不掉

[root@evan-01 ~]# rm -rf test.txt
rm: cannot remove ‘test.txt’: Operation not permitted
[root@evan-01 ~]# 

查看下

[root@evan-01 ~]# ls -l test.txt
-rw-rw-r--. 1 root root 0 Aug  9 11:14 test.txt
[root@evan-01 ~]# 

发现 test.txt 什么都没改变,也没被删除

touch的时候时间会改变,但是加了i权限后touch都不会改变时间

[root@evan-01 ~]# ls -l test2.txt
-rw-rw-r--. 1 root root 0 Aug  9 11:36 test2.txt
[root@evan-01 ~]# touch test2.txt
[root@evan-01 ~]# ls -l test2.txt
-rw-rw-r--. 1 root root 0 Aug  9 11:40 test2.txt
[root@evan-01 ~]# ls -l test.txt
-rw-rw-r--. 1 root root 0 Aug  9 11:14 test.txt
[root@evan-01 ~]# touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
[root@evan-01 ~]# ls -l test.txt
-rw-rw-r--. 1 root root 0 Aug  9 11:14 test.txt
[root@evan-01 ~]#

test2.txt没有加i权限,所以touch后时间从11:36变成了11:40。因为test.txt加了i权限,所以touch后时间也没发生变化。

减去 i 权限

[root@evan-01 ~]# chattr -i test.txt
[root@evan-01 ~]# lsattr test.txt
---------------- test.txt
[root@evan-01 ~]#

减去i权限后又可以编辑了

[root@evan-01 ~]# vi test.txt

2.17-设置查看隐藏权限命令chattr、lsattr_第3张图片减去i权限后又可以改名字了

[root@evan-01 ~]# mv test.txt test3.txt
[root@evan-01 ~]# ll
total 16
-rw-------. 1 root root 6398 Aug  8 16:10 anaconda-ks.cfg
-rw-------. 1 root root 1257 Aug  8 18:36 anaconda-ks.cfg.bak
drwxrwxr--. 2 root root    6 Aug  9 11:15 test
-rw-rw-r--. 1 root root    0 Aug  9 11:40 test2.txt
-rw-rw-r--. 1 root root   28 Aug  9 11:44 test3.txt
[root@evan-01 ~]# 

减去i权限后又可以查看了

[root@evan-01 ~]# cat test3.txt 
hahshasc
absckasck
abcbakbc
[root@evan-01 ~]# 

给文件添加 a 权限,只能追加,不能删除,不能编辑,不能更改名字,可以touch(更改时间)

[root@evan-01 ~]# ls -l test3.txt 
-rw-rw-r--. 1 root root 28 Aug  9 11:44 test3.txt
[root@evan-01 ~]# chattr +a test3.txt 
[root@evan-01 ~]# lsattr test3.txt 
-----a---------- test3.txt
[root@evan-01 ~]#

添加 a 权限后不能删除

[root@evan-01 ~]# rm -rf test3.txt 
rm: cannot remove ‘test3.txt’: Operation not permitted
[root@evan-01 ~]# 

添加 a 权限后不能编辑

[root@evan-01 ~]# vi test3.txt 

按 i 切换到插入模式后,随便输入一些内容,按esc,输入:wq保存时候,下面出现警告:E212: Can’t open file for writing,无法打开文件写入
2.17-设置查看隐藏权限命令chattr、lsattr_第4张图片添加 a 权限后不能更改名字

[root@evan-01 ~]# mv test3.txt test.txt
mv: cannot move ‘test3.txt’ to ‘test.txt’: Operation not permitted
[root@evan-01 ~]# 

添加 a 权限后可以追加

[root@evan-01 ~]# echo "456789" >> test3.txt
[root@evan-01 ~]# cat test3.txt
hahshasc
absckasck
abcbakbc
456789
[root@evan-01 ~]#

添加 a 权限后可以touch(更改时间)

[root@evan-01 ~]# ls -l test3.txt
-rw-rw-r--. 1 root root 35 Aug  9 14:38 test3.txt
[root@evan-01 ~]# touch test3.txt
[root@evan-01 ~]# ls -l test3.txt
-rw-rw-r--. 1 root root 35 Aug  9 14:40 test3.txt
[root@evan-01 ~]#

减去a权限

[root@evan-01 ~]# chattr -a test3.txt
[root@evan-01 ~]# lsattr test3.txt
---------------- test3.txt
[root@evan-01 ~]#

给目录加 i 权限,会影响到子目录及文件

root@evan-01 ~]# ll
total 16
-rw-------. 1 root root 6398 Aug  8 16:10 anaconda-ks.cfg
-rw-------. 1 root root 1257 Aug  8 18:36 anaconda-ks.cfg.bak
drwxrwxr--. 2 root root    6 Aug  9 11:15 test
-rw-rw-r--. 1 root root    0 Aug  9 11:40 test2.txt
-rw-rw-r--. 1 root root   35 Aug  9 14:40 test3.txt
[root@evan-01 ~]# mkdir test/one
[root@evan-01 ~]# touch test/one/1.txt
[root@evan-01 ~]# tree test
test
└── one
    └── 1.txt

1 directory, 1 file
[root@evan-01 ~]# lsattr test
---------------- test/one
[root@evan-01 ~]# chattr +i test
[root@evan-01 ~]# lsattr -d test
----i----------- test
[root@evan-01 ~]# 

不能删除

[root@evan-01 ~]# rm -rf test
rm: cannot remove ‘test/one’: Permission denied
[root@evan-01 ~]# 

不能更改名字

[root@evan-01 ~]# mv test testdir
mv: cannot move ‘test’ to ‘testdir’: Operation not permitted
[root@evan-01 ~]#

不能touch

[root@evan-01 ~]# ls -l test
total 0
drwxrwxr--. 2 root root 6 Aug  9 14:49 one
[root@evan-01 ~]# touch test
touch: setting times of ‘test’: Permission denied
[root@evan-01 ~]# touch test/ok.txt
touch: cannot touch ‘test/ok.txt’: Permission denied
[root@evan-01 ~]# 

可以更改目录里的文件内容

[root@evan-01 ~]# echo "hahaha" >> test/one/1.txt
[root@evan-01 ~]# cat !$
cat test/one/1.txt
hahaha
[root@evan-01 ~]#

减去目录 i 权限

[root@evan-01 ~]# chattr -i test
[root@evan-01 ~]# lsattr  test  
---------------- test/one
[root@evan-01 ~]#

给目录加 a 权限,会影响到子目录及文件

[root@evan-01 ~]# lsattr -d test
---------------- test
[root@evan-01 ~]# chattr +a test
[root@evan-01 ~]# lsattr -d test
-----a---------- test
[root@evan-01 ~]#

可以touch

[root@evan-01 ~]# touch test/ok.txt
[root@evan-01 ~]# ls -l test
total 0
-rw-rw-r--. 1 root root  0 Aug  9 14:59 ok.txt
drwxrwxr--. 2 root root 19 Aug  9 14:55 one
[root@evan-01 ~]# 

可以更改目录里的文件内容

[root@evan-01 ~]# echo "hahaha" >> test/ok.txt 
[root@evan-01 ~]# cat !$
cat test/ok.txt
hahaha
[root@evan-01 ~]# 

lsattr -R 查看目录及子目录和文件

[root@evan-01 ~]# lsattr test
---------------- test/one
---------------- test/ok.txt
[root@evan-01 ~]# lsattr -R test
---------------- test/one

test/one:
---------------- test/one/1.txt

---------------- test/ok.txt
[root@evan-01 ~]#

lsattr -a 查看目录及隐藏目录隐藏权限

[root@evan-01 ~]# lsattr -a
---------------- ./.
---------------- ./..
---------------- ./.bash_logout
---------------- ./.bash_profile
---------------- ./.bashrc
---------------- ./.cshrc
---------------- ./.tcshrc
---------------- ./.bash_history
---------------- ./anaconda-ks.cfg.bak
---------------- ./anaconda-ks.cfg
---------------- ./.lesshst
-----a---------- ./test
---------------- ./test2.txt
---------------- ./test3.txt
[root@evan-01 ~]#

你可能感兴趣的:(Linux文件和目录管理)