浅谈Linux4:文件权限(特殊)

系统默认权限的设定

我们已经学习了文件权限的相关基本内容,包括如何查看,如何修改,以及针对不同用户主体怎样修改。

但是,有没有考虑过,当我们新建一个文件或者文件夹时,并没有设定关于权限的任何参数,那么它的权限是多少呢?又是从哪里来呢?

我们可以很容易的看到,新建文件的权限是644,而新建目录的权限是755.(喜欢用数字代表权限……)

为什么会是755而不是其他权限?这些权限是从哪里来的呢?

Linux内有一种机制叫做系统默认权限,当我们执行新建操作时,文件权限就由此获得。

默认权限当然能更改,可以临时修改,也可以永久修改。

先用umask查看默认权限

权限等于022,那么跟755有什么关系呢?

文件满权限是rwxrwxrwx,也就是777,777-022=755

这当然不是生掰硬套了……umask代表的值是系统保留权限,满权限去除保留权限,就是现在新建文件夹时的默认权限啦。

同样利用umask命令可以临时修改保留权限

永久修改涉及到两个文件,/etc/bashrc和/etc/profile,必须两个文件同时修改。

修改后,执行source   filename命令重新读取,就可以永久设定啦。

值得注意的是,虽然可以修改系统默认权限,但需要根据实际情况调整,毕竟开放权利越大,对系统安全性的挑战也越大。

文件的控制访问(acl列表)

acl = access control

指定特殊用户对特殊文件具有特殊权限

比如,我们之前建立的文件夹,要允许给xiaoxinxin执行和修改权限,就可以通过acl列表来实现。

常用的命令是getfacl和setfacl

getfacl filename   查看文件的访问列表

文件权限信息可以轻松读取到。

那如何实现刚刚说的那个小需求呢?给xiaoxinxin增加执行和修改权限?

你也许会说,把文件所有者改成xiaoxinxin不就行啦,再不济,给加到文件所有组也可以啊。

风险点在于:

    1,当文件所有者更改后,其他用户读取这个文件会有影响。这个文件夹之前的所有者是root,其他普通用户无法读取其中的内容,当修改成xiaoxinixn之后,其他普通用户会有越权风险。

    2,当文件所有组更改后,想象一下,原本root组的用户可以看到一些“机密文件”,执行一些“特殊操作”,把xiaoxinxin加到root组,是否意味着,他也可以进行同样的操作?

这两点风险,都是有关乎产品安全性的问题。

而acl列表的方式,相对于普通修改权限的方式,则解决了这种特殊情况。针对于特定文件(package)为特定用户(xiaoxinxin)提供特殊操作(增加执行和修改权限)

具体的设定方式是:

setfacl -m <u|g>:<username|groupname>:权限 文件|目录
-m #设定
 u #用户

 g #组

同样也可以对特定组增加对特定文件的特定操作,自己试试啦~

删除列表也是可以的,命令是:

setfacl -x <u|g>:<username|groupname> 文件|目录

假如给一个文件增加了多个acl列表,不想用的时候,难道要一个一个删么?

setfacl -b 文件|目录    

一条搞定,你值得拥有。

文件权限列表中有一个属性叫做mask,是权限掩码,也就是能赋予用户的最大权限,这个值当然也是可以改变的,改过之后,再执行setfacl去添加的时候,权限只能大于等于权限掩码。

(effective 代表有效权限)

acl列表还有一个常用的性质在于,可以设定默认权限。

也就是说,给了xiaoxinxin对package文件夹的读写权限,当package文件夹中有新建的文件时,这个属性也能默认继承。

setfacl -m d:<u|g>:<username|groupname>:rwx  文件夹

特殊权限

普通的文件权限有三位:u位,g位,o位

特殊的文件权限也有三位:suid(冒险位),sgid(强制位),sticky(粘制位)

suid   

运用目标:二进制可执行文件

结果:文件内所记录的程序产生的进程的所有人为文件所有人,与进程发起者无关。

设定方式: chmod u+s filename    (又因为suid=4,所以数字修改方式是 chmod 4XXX filename)

 

sgid

运用目标:二进制可执行文件或目录

结果:

        对二进制可执行文件,任何人运行该文件,程序产生的进程的所有组都是文件的所有组,和进程发起人的组无关。

        对目录,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关。

设定方式:chmod g+s filename  (又因为sgid=2,所以数字修改方式是 chmod 2XXX filename)

 

sticky

运用目标:目录

结果:当一个目录上添加了t权限之后,目录中的文件只能被文件的所有者删除。

设定方式:chmod o+t directory  (又因为sticky=1,所以数字修改方式是 chmod 1XXX driectory)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值