Linux学习笔记之权限管理

本文详细介绍了Linux的权限管理系统,包括文件权限、ACL权限、sudo权限的设定与使用,以及SetUID、SetGID、SBIT粘着位的原理与应用。通过示例展示了如何修改权限、设置ACL、使用sudo,以及解决权限问题,如不可改变位权限带来的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件权限

权限
-rw-r–r–
r:读,w:写,x:执行
第一位“-“表示文件,d表示目录,l表示软链接文件
所有者权限:rw-,所属组权限:r–,其他人权限:r–

权限修改
这里写图片描述
一般我们使用如下方式修改权限:
r对应数字4,w对应数字2,x对应数字1
修改文件file1的权限
chmod 755 file1
755 <==> rwxr-xr-x

对于目录来说,最高权限是w
对于文件来说,最高权限是x
对于一个文件拥有w权限但是你不能删除它,它是属于他的目录的,必须在他拥有w权限的目录下才能删除它。

修改文件所有者
chown 用户名 文件名
chown lcl file1

修改文件所有组
chgrp 组名 文件名
chgrp group1 file1

查看默认权限
umask
0022 :第一位0是文件特殊权限,022是文件默认权限
umask值为022,那么新建文件默认权限为
“rwxrwxrwx” 对应位置减去 “—-w–w-”
结果为rwxr-xr-x
文件默认权限最大为666,不允许文件创建就能执行

ACL权限

ACL权限是为了解决权限种类不足的问题,使用ACL权限可以满足特定的权限需分组。

查看指定分区acl权限是否开启
dumpe2fs -h /dev/sda5
挂载acl权限到根分区:mount -o remount,acl /

设定acl权限
这里写图片描述
给用户my设定acl权限rx:setfacl -m u:my:rx
给用户组group1设置acl权限rx:setfacl -m g:group1:rx
获取acl权限:getfacl 目录或文件

最大权限mask:用来限制最大权限
设置目录av的最大权限为rx:setfacl -m m:rx av
文件或目录的最终权限是与mask权限相与后的结果。

删除ACL权限
删除指定用户的ACL权限:setfacl -x u:用户名 文件
删除指定用户组的ACL权限:setfacl -x g:组名 文件
删除所有ACL权限:setfacl -b 文件

递归ACL权限
setfacl -m u:user:rx -R 文件名
递归ACL权限是给已存在的文件或目录设置权限,易出现权限溢出的问题。

默认ACL权限
setfacl -m d:u:用户名:rx -R 文件名
设置默认acl权限是针对以后新建的文件,已存在的文件的权限不会改变

sudo权限

sudo权限把本来只有超级用户才能使用的执行的命令让普通用户执行
sudo的操作对象是系统命令
这里写图片描述

例子:给用户user设置sudo权限:关机
visudo
添加一行:user ALL=(ALL) /sbin/shutdown -r now
切换为普通用户用户:su - 用户名, 输入密码
普通用户组执行sudo权限命令:sudo 全路径命令 , 如:

sudo /sbin/shutdown -r now

设定SetUID

第一种方式:chmod 4775 文件名 4代表SUID
第二种方式:chomod u+s 文件名
setuid只针对执行文件,setuid权限只在程序执行过程中有效,命令执行者的身份改变只发生在程序执行过程中。

设定SetGID

chmod 2775 文件名 2代表SGID
chmod g+s 文件名

对于设置了SGID的目录,在其下创建的文件所属组会成目录的所属组
例:
这里写图片描述
可以看到locate命令拥有了SGID权限,这个命令查的是/var/lib/mlocate/mlocate.db。
这里写图片描述
对于/var/lib/mlocate/mlocate.db的权限,可以看到其他用户是不能查看的,但是为什么其他用户可以使用呢,因为locate的SGID权限,在使用locate时用户的组身份升级为文件的属组。

SBIT粘着位

粘着位权限只对目录有作用
没有粘着位的时候,普通用户只要对目录拥有w权限,就可以删除文件,包括其他用户建立的文件。一旦赋予粘着位,除了root用户,其他用户都不能删除文件,即使普通用户对目录拥有w权限。
设置粘着位
chmod 1755 目录名
chmod o+t 目录名
取消粘着位
chmod 0755 目录名
chmod o-t 目录名
例子:
1、创建目录设置粘着位:
这里写图片描述
目录test设置为其他人可读写的
2、在test下创建文件ro
root在test下建立文件 ro
这里写图片描述
3、切换到用户my进去,试图删除ro,因为test对其他人的权限有w
这里写图片描述
发现删除不掉,因为root给目录设置了粘着位,其他用户在此目录息只能新建不能删除,即使你有目录的w权限。

不可改变位权限

chattr 选项 文件或目录
这里写图片描述
这里写图片描述

使用例子:
上面的ro文件虽然其他用户不能删除但是却可以修改里面的内容,使用chattr +i ro命令可以让文件内容不能改变。
取消不可修改位权限设置:chattr -i 文件或目录
选项 i : 对文件使用,那么文件不能去删除或修改,对目录使用,那么目录只能修改目录下的文件,不能新建和删除。
选项 a : append,对于文件,可在文件中增加数据,且是使用输出重定向echo去追加数据,因为使用vim,系统难以判断你修改数据了没,不能修改和删除。对于目录:可以新建和修改文件,但不能删除文件。

问题

出现问题:一个叫test的目录不能删除了,查看权限发现是有w权限的,最后发现:
lsattr -a 目录,发现该目录设置了i属性,不能删除,使用chattr -i test即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值