Linux为文件设置特殊权限,linux文件特殊权限与文件acl设置

linux中对文件除了有读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是setuid、setgid和stick bit

设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。sgid与suid类似,只是执行程序时获得的是文件属组的权限。

例如我们使用root身份创建一个suid.sh文件

ls -l setuid.sh文件,可以看到文件的属主和属组都是root,文件的权限是-rw-------

ac8b607fd98cf84be71102db78986a8b.png

再将/bin下的cat复制到tmp下,将权限使用chmod u+s cat添加suid。这样/tmp下的cat在执行时便让执行该命令的用户以该命令拥有者(root)的权限去执行”。

4f47e9635a4c7cdd72c74012ff159e30.png

此时我们以一个普通用户openstack的身份登录去修改这个文件,由文件权限-rw-------可知openstack无法查看suid.sh这个文件。

1a4b0efca39f09ffa1fd50c16e3c0e6a.png

因此,我们可以使用/tmp/cat这个程序去查看,这样就可以查看suid.sh这个文件了。

6a05c7f5df6653caae0053de1eb9885c.png

而sgid的意思和suid是一样的,即让执行文件的用户以该文件所属组的权限去执行。

这里特别强调 suid仅可用于二进制程序上,不能用于在shellscript上面,这是因为shell script只是将很多的二进制执行文件调用进来执行而已。所以suid的权限部分,还是得看shell script调用过来的程序的设置,而不是shell script本身,另外suid对目录也是无效的。

sticky (粘贴位)仅对目录有效。

如果你查看/tmp目录的权限时,你会发现/tmp目录的权限是rwxrwxrwt权限,这就是sticky。

sticky (粘贴位)就是:除非目录的属主和root用户有权限删除它,除此之外其它用户不能删除和修改这个目录。

也就是说,在/tmp目录中,只有文件的拥有者和root才能对其进行修改和删除,其他用户则不行,避免了上面所说的问题产生。用途一般是把一个文件夹的的权限都打开,然后来共享文件,象/tmp目录一样。

如何设置这些特殊权限呢

suid:chmod u+s 文件名

sgid: chmod g+s 文件名

sticky: chmod o+t 文件名

或者使用八进制方式表示

suid     guid    sticky

1        1         1

suid的二进制串为:100,换算八进制为:  4

guid的二进制串为:010,换算八进制为:    2

sticky 二进制串:001,换算八进制为:1

于是也可以这样设:

suid:chmod 4644 文件名

sgid:chmod 2644 文件名

sticky:chmod 1644 文件名

而有时候我们会发现,文件使用suid或者sgid后文件后面有时候是S或者s,这里的区别是:

s:属主原有执行权限

S:属主无执行权限

同理T和t的区别同上。

此外文件特殊权限设置还有文件的acl:

我们使用root创建getfacl.txt,其中other的权限是r--,再以普通用户opentack身份登录并尝试修改此文件,会发现由于没有w权限,文件无法修改,那么如何才能修改呢?

42633ea485451d6a4bff7fea23ef137f.png

此时就可以用到我们的acl了。

查看文件的acl,使用getfacl +文件名来查看,

9589f103d670891369cb61badc1cfd75.png

设置facl使用格式

facl -m u:用户名:[rwx] 文件名

c8ac15a5a5be305bfe2e6edb736b31ec.png

为openstack添加rw权限后使用getfacl查看会发现此时多了一个条acl

35e602e415d95f031404784108d5a236.png

再次切换到openstack用户后,向facl.txt写入hello world后,发现可以成功写入。

572b84e01ed572021c5023cb555c80a4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值