实验二:高级权限控制之su、sudo、特殊权限s及t位、facl
1)su切换用户
a.su的基本用法:
su - u01 ##root-->u01,不需要密码
su - 或su - root ##u01-->root,需要提供root密码
su - u02 ##u01-->u02,需要密码
su root ##u01-->root,保留部分的环境变量如PWD,-/-l/--login是登录的意思
b.设置特定用户能使用su进入root
vi /etc/pam.d/su
删除第六行的注释:如下
auth required pam_wheel.so use_uid
:wq
gpasswd -a u01 wheel
grep wheel /etc/group ##验证
u01登录
su - ##成功
u02登录
su - ##提示密码错误
注意修改/etc/pam.d/su时切忌删除第四行的注释。
2.sudo提升权限
a.sudo命令的文件
/etc/sudoers ##sudo的配置文件,使用visudo打开,别使用vi编辑
rpm -qf $(which sudo)
rpm -qc sudo ##查看帮助,尽量都学习
b.sudo基本使用
visudo ##添加如下行
u01 localhost=/sbin/fdisk
:wq
su - u01 ##root-->u01
sudo -l ##列出所有可用命令,首次使用sudo时需要提供u01密码
sudo /sbin/fdisk -l ##验证sudo
fdisk -l ##无法使用
exit
c.sudo的别名的使用
主机别名:Host_Alias 别名名称(大写) = 主机名1, 主机名2
用户别名:User_Alias 别名名称(大写) = u01, u02
命令的别名:Cmnd_Alias 别名名称(大写) = 命令(使用绝对路径),
用户别名 主机别名=命令别名
推荐:定义用户别名,取消命令别名注释,主机别一般不用
d.特殊sudo的使用,*,!,NOPASSWD
visudo
u02 localhost=/sbin/* ##将/sbin/所有命令给u02使用
u02 localhost=/sbin/*, !/sbin/mkfs, !/sbin/fdisk -l ##!取反,禁用必须放在最后
u02 localhost=NOPASSWD:/sbin/*, !/sbin/fdisk -l ##NOPASSWD首次使用sudo时不需要密码
Defaults logfile = "/var/log/sudo.log" ##定义sudo执行记录日志
:wq
tial -f /var/log/sudo.log ##在其他终端执行sudo验证
3.SUID,SGID,粘滞位权限
a.SUID:给用户设置set位权限,普通用户执行该命令时,身份切换到root;SGID:给组设置set权限,作用与suid相同。
注意:SUID只对二进制命令有效,并且需要x的权限,如果没有x,设置后使用ls -l查看时是大写的s位。系统中suid的命令是特定的,不要轻易修改。
b.管理suid、sgid、粘滞位
suid、sgid使用s表示,粘滞位使用t表示
chmod u+s /sbin/fdisk ##设置suid
chmod g+s /sbin/fdisk ##设置sgid
取消的方法+变-
粘滞位:对目录有效,作用设置t位权限后,防止用户删除目录下的文件。
chmod o+t /tmp
suid权限脚本:
[root@localhost bin]# cat chkset.sh
#!/bin/bash
if [ ! -e /root/suid.txt ];then
find / -perm -4000 -fprintf /root/suid.txt "%#m %u %p\n" ##查找/目录下suid权限的文件并写入(打印输出)到/root/suid.txt文件中
fi
BASE=$(cat /root/suid.txt |wc -l)
find / -perm -4000 -fprintf /root/suid-$(date +%F).txt "%#m %u %p\n"
CHSET=$(cat /root/suid-$(date +%F).txt |wc -l)
if [ $CHSET -eq $BASE ];then
echo "suid is not change."
elif [ $CHSET -lt $BASE ];then
echo "suid is revoke."
else
echo "suid is adding."
echo "Warning, please check."
fi
4.facl权限
文件的访问控制列表facl
facl给特定账号在不改变原有归属情况下管理文件访问权限。
1)基本用法:
查看:
getfacl 文件
设置用户和组的facl
setfacl -m u:用户:rwx 文件/目录
setfacl -m g:组:rwx 文件/目录
设置默认权限,子目录能继承
setfacl -d -m u:用户:rwx
setfacl -d -m g:组:rwx
删除权限:
setfacl -x u:用户 ##删除一个
setfacl -k 文件/目录 ##删除默认权限
setfacl -b 目录/文件 ##删除所有
练习:
[root@www ~]# mkdir -p test
[root@www ~]# cd test/
[root@www test]# mkdir dir1
[root@www test]# touch a.file
[root@www test]# getfacl dir1 a.file ##查看权限
[root@www test]# ls -l ##对比getfacl的结果
[root@www test]# setfacl -m u:u01:rwx a.file dir1/ ##设置u01用户有rwx权限
[root@www test]# ls -l ##对比前后的变化
[root@www test]# getfacl dir1 a.file ##对比ls -l结果
[root@www test]# groupadd g01
[root@www test]# setfacl -m g:g01:rwx a.file dir1/ ##为组设置权限
[root@www test]# cd dir1
[root@www dir1]# touch a.file ##创建测试文件
[root@www dir1]# getfacl a.file ##查看是否继承了dir1的facl权限
[root@www dir1]# cd ..
[root@www test]# setfacl -d -m u:u01:rwx dir1/ ##设置子目录可继承的权限
[root@www test]# cd dir1/
[root@www dir1]# getfacl a.file ##查看结果为权限无变化
[root@www dir1]# touch b.file ##创建新文件
[root@www dir1]# getfacl b.file ##结果为继承了被设置为-d的权限,并为继承g01的权限,结论:权限必须被-d设置过才能被子对象继承
请自行完成删除权限的操作。
如果觉得《linux权限s的作用 lqc|_高级权限控制之su sudo 特殊权限s及t位 facl》对你有帮助,请点赞、收藏,并留下你的观点哦!