linux文件特殊权限

本文详细介绍了Linux文件权限中的特殊权限,包括SUID、SGID和SBIT。通过实例解析了如何设置和利用这些权限,以实现系统安全性和用户便利性的平衡。SUID允许执行文件时临时提升权限,如passwd命令;SGID可以改变执行者群组身份,常用于共享文件夹;SBIT确保目录内文件只能由创建者和root删除。


前言

linux文件权限可不是rwx这么简单,为了提供多用户便利操作的同时保证系统的安全性,linux还引入了隐藏权限与特殊权限!


一、默认权限

(1) 若建立文件,则默认权限为 -rw-rw-rw-
(2) 若建立目录,则默认权限为drwxrwxrwx
linux中系统,使用umask来修改默认权限。
那么,默认权限将修改为(1)或(2)的基础默认权限减去umask的分数值。

root@study:~# umask
0022

查询umask的分数值是022。所以,user并没有拿掉任何权限,不过group与others的权限被拿掉了2(也就是w这个权限),这样,当使用者:
(1) 建立文件时, (-rw-rw-rw-) - (-----w–w-) = -rw-r–r–
(2) 建立目录时,(drwxrwxrwx) - (d----w–w-) = drwxr-xr-x

接下来,试试看?!

# 创建文件
root@study:~# touch test.txt
root@study:~# ls -l test.txt
-rw-r--r-- 1 root root 0 118 12:00 test.txt

# 创建目录
root@study:~# mkdir -p abcd
root@study:~# ll -d abcd
drwxr-xr-x 2 root root 4096 118 12:03 abcd/

看,没有错吧!

二、隐藏权限

隐藏权限是说用ls命令查不出来的权限,那要怎么设置跟查询呢?

2.1 配置文件隐藏权限

# chattr
root@study:~# chattr [+-=][ai] 文件或目录
# a:这个文件只能增加数据,而不能删除也不能修改,只有root才能设定这个属性
# i:可以让一个文件 不能删除、改名、设定链接也不能写入或新增数据,对系统安全性有相当大的帮助,只有root能设定此属性

该类权限对系统安全很重要。例如,像log file这类文件,就很需要+a这个选项,可以增加数据,但不能修改旧有数据,也不能删除。很棒!

2.2 查询文件隐藏属性

root@study:~# lsattr [-adR] 文件或目录
#选项及参数
# -a:将隐藏文件的属性也显示出来
# -d:如果是目录,仅列出目录本身而非目录内的文件名
# -R:连同子目录的数据也一并列出来

三、特殊权限

3.1 SUID

只能作用在可执行文件上,不能用在shell script上面,对于目录也是无效的。

root@study:~# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 53128 517  2017 /usr/bin/passwd

以上的passwd程序的权限就是SUID的,其标志就是owner属性的x变为s,其意义是执行该程序的用户暂时提升为owner。

直接看例子:我们知道普通用户可以通过passwd修改用户密码,该命令是通过修改 /etc/shadow 文件来修改密码的。查看shadow 文件属性,发现它的权限为【-rw------- 1 root shadow】,这意味着这个文件只有root可以强制读写。这不是有冲突了吗?!明明shadow不能让普通用户读取,而实践之后发现还是可以修改,这就是SUID在发挥作用了!过程大概是这样的:首先,普通用户必须有对passwd的执行权限(这通过查询passwd文件权限可知,任何用户都有执行权限了);接着,执行过程中,暂时取得owner的身份,在这里就是root了。最后, 由于 /etc/shadow 可以被 root 读取,所以它就能被passwd修改了啊!

那普通用户执行cat程序能读 /etc/shadow 这个文件吗?不行!

root@study:~# ls -l /bin/cat
-rwxr-xr-x 1 root root 51036 33  2017 /bin/cat

cat文件没有SUID属性,它在执行过程没有暂时取得root的身份,所以就没有办法读取 只有root才能访问的 /etc/shadow 文件了。

3.2 SGID

作用于可执行文件或目录

作用于可执行文件时,原理同SUID。执行者在执行过程中暂时获得程序群组成员的身份,如果一个文件能被该群组的用户访问,则能被该执行程序访问。

作用于目录时,用户进入该目录后所创建的文件,其有效群组将与此目录的群组相同,更多有效群组介绍可参考linux账号与群组。该功能在共享文件夹中较为常见。例如,我们需要共享一个文件夹,在该文件夹中创建的新文件彼此都能查看修改。这时可以将共享文件夹的权限设置为SGID的,任何用户进入该目录下创建的新文件的群组都与共享文件夹的群组相同。这样,共享文件夹中文件只有owner、同组的及root可以查看修改,而其他人没有这些权限(估计会有读,但默认情况不会有写权限)。如此一来,与共享文件夹同组的用户将有权限读写文件夹下的文件,即实现了共享、合作的功能,同时,安全性也提高了!

3.3 SBIT

只能作用在目录上,对于文件已经没有效果了。

root@study:/# ll -d tmp
drwxrwxrwt 16 root root 4096 118 14:17 tmp/

以上的 /tmp 目录就是SBIT的,其标志是others属性的x变为t。在这样的权限下,任何人都可以在/tmp内新增、修改文件,但仅有该文件/目录的创建者与root能够删除自己的目录或文件

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值