Linux学习笔记(第七课)

5.4 文件的隐藏属性(rhcsa考试内容之一)
1、chattr命令用于设置文件的隐藏权限,英文全称为:“change attributes”,语法格式为:“chattr [参数] 文件名称”。
[root@localhost ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Videos
Desktop Downloads Music Public test
[root@localhost ~]# chattr +a anaconda-ks.cfg
[root@localhost ~]# rm anaconda-ks.cfg
rm: remove regular file 'anaconda-ks.cfg'? y
rm: cannot remove 'anaconda-ks.cfg': Operation not permitted
[root@localhost ~]# rm -f anaconda-ks.cfg
rm: cannot remove 'anaconda-ks.cfg': Operation not permitted
[root@localhost ~]# lsattr anaconda-ks.cfg
-----a------------ anaconda-ks.cfg
[root@localhost ~]# chattr -a anaconda-ks.cfg
[root@localhost ~]# lsattr anaconda-ks.cfg
------------------ anaconda-ks.cfg
[root@localhost ~]# rm anaconda-ks.cfg
rm: remove regular file 'anaconda-ks.cfg'? y
[root@localhost ~]# ls
Desktop Downloads Music Public test
Documents initial-setup-ks.cfg Pictures Templates Videos
[root@localhost ~]#

表5-8 chattr命令中的参数及其作用

参数 作用
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A 不再修改这个文件或目录的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用dump命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
x 可以直接访问压缩文件中的内容
为了让读者能够更好地见识隐藏权限的效果,我们先来创建一个普通文件,然后立即尝试删除(这个操作肯定会成功):

chattr命令用于设置文件的隐藏权限或删除文件的隐藏文件
chattr +a/-a 文件名
chattr +i/-i 文件名
--------------------------------------------------------------------
2、lsattr命令用于查看文件的隐藏权限,英文全称为:“list attributes”,语法格式为:“lsattr [参数] 文件名称”
lsattr 文件名
[root@localhost ~]# lsattr test
------------------ test
[root@localhost ~]# chattr +a test
[root@localhost ~]# lsattr test
-----a------------ test

-------------------------------------------------------------
文件访问控制列表
setfacl命令用于管理文件的ACL权限规则,英文全称为:“set files ACL”,语法格式为:“ setfacl [参数] 文件名称”
表5-9 setfacl命令中的参数以及作用
参数 作用
-m 修改权限
-M 从文件中读取权限
-x 删除某个权限
-b 删除全部权限
-R 递归子目录
setfacl -m u:用户名:权限 文件名
setfacl -Rm u:用户名:权限 目录

[zhangsan@localhost ~]$ cd /home/zhaoliu
-bash: cd: /home/zhaoliu: Permission denied
[zhangsan@localhost ~]$ exit
logout
[root@localhost ~]# setfacl -Rm u:zhangsan:rwx /home/zhaoliu
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ cd /home/zhaoliu
[zhangsan@localhost zhaoliu]$ cd ..
[zhangsan@localhost home]$ ll
drwx------. 3 888 1008 92 Apr 14 04:02 7dct
drwx------. 3 chenwu chenwu 92 Apr 13 17:09 chenwu
drwx------. 3 geely geely 104 Apr 20 14:11 geely
drwxrwx---+ 3 lisi lisi 92 Apr 13 17:09 lisi
drwx------. 3 mazi mazi 92 Apr 13 17:09 mazi
drwx------. 3 textbing textbing 92 Apr 19 17:23 textbing
drwx------. 3 wanger wanger 92 Apr 13 17:09 wanger
drwx------. 3 zhangsan zhangsan 113 Apr 21 03:10 zhangsan
drwxrwx---+ 3 zhaoliu zhaoliu 92 Apr 13 17:09 zhaoliu
常用的ls命令是看不到ACL表信息的,但是却可以看到文件的权限最后一个点(.)变成了加号(+),这就意味着该文件已经设置了ACL了。


查看文件访问权限
getfacl 文件名、目录
[root@localhost home]# getfacl zhaoliu
# file: zhaoliu
# owner: zhaoliu
# group: zhaoliu
user::rwx
user:zhangsan:rwx
group::---
mask::rwx
other::---
+++++++++++++++++++++++++++++++++++++++++
[root@localhost /]# getfacl /etc/fstab
getfacl: Removing leading '/' from absolute path names
# file: etc/fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--
备份ACL权限
[root@localhost /]# getfacl -R /etc/fstab > backup.acl
getfacl: Removing leading '/' from absolute path names
[root@localhost /]# ls
backup.acl boot etc home lib64 mnt proc run srv tmp var
bin dev geely lib media opt root sbin sys usr

[root@localhost /]# getfacl /etc/fstab
getfacl: Removing leading '/' from absolute path names
# file: etc/fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--

[root@localhost home]# setfacl -m g:zhangsan:rw /etc/fstab

[root@localhost home]# getfacl /etc/fstab
getfacl: Removing leading '/' from absolute path names
# file: etc/fstab
# owner: root
# group: root
user::rw-
group::r--
group:zhangsan:rw-
mask::rw-
other::r--

删除刚刚增加的acl权限:
[root@localhost home]# setfacl -x g:zhangsan:rw /etc/fstab
恢复权限:
[root@localhost /]# getfacl /etc/fstab
getfacl: Removing leading '/' from absolute path names
# file: etc/fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--
+++++++++++++++++++++++++++++++++++++++++
su 用户 切换用户
su - 用户 替换原有用户环境变量(完全身份切换)、
su使用时,root切换到其他用户无需输入密码;普通用户之前切换需验证密码
[root@localhost /]# su - zhangsan
[zhangsan@localhost ~]$ su - lisi
Password:
[lisi@localhost ~]$ su - zhangsan
Password:
[zhangsan@localhost ~]$ su root
Password:
[root@localhost zhangsan]#


sudo 给某个用户单独的root命令权限
[zhangsan@localhost root]$ sudo reboot
[sudo] password for zhangsan:
zhangsan is not in the sudoers file. This incident will be reported.
[zhangsan@localhost root]$

 

visudo命令用于编辑配置用户sudo权限文件,语法格式为:“ visudo [参数]”
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ sudo ls /root
[sudo] password for zhangsan:
zhangsan is not in the sudoers file. This incident will be reported.

[root@localhost ~]# visudo
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101zhangsan ALL=(ALL) ALL //可以指定具体的运行命令:101 zhangsan ALL=(ALL) usr/bin/cat,/usr/sbin/reboot
[root@localhost ~]# su - zhangsan
[zhangsan@localhost root]$ sudo ls /root
[sudo] password for zhangsan:
Desktop Documents Downloads initial-setup-ks.cfg Music Pictures Public Templates test Videos
[zhangsan@localhost root]$

每次执行sudo命令都要输入密码其实也挺麻烦的,这时可以添加NOPASSWD参数,使得用户下次再执行sudo命令时就不用密码验证啦
[root@localhost ~]# visudo
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101 zhangsan ALL=(ALL) NOPASSWD:ALL
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ sudo ls /root
Desktop Documents Downloads initial-setup-ks.cfg Music Pictures Public Templates test Videos
[zhangsan@localhost ~]$

posted @ 2021-04-21 17:23  bing2215  阅读(152)  评论(0)    收藏  举报