Linux基础知识系统学习.NO12——acl、sudo与隐藏权限

5.4.ACL权限

5.4.1.acl权限概念

acl权限用于解决用户类型不足的情况,也就是对于某文件来说,拥有744的权限,不想修改这些权限的情况下,对于不是ugo的另一个用户想要给他赋予5权限,这时候就需要用到ACL权限。
acl解决用户类型不足的办法是不管该用户和该文件的关系,直接给该用户赋予某种权利。acl权限是一种挂载权限,所以使用这种权限需要该分区有这种权限,命令dumpe2fs+分区名,查看该分区所有块信息,dumpe2fs -h +分区名,只查看超级块信息。其中可以看到是否有acl权限(user_xatr acl)。
如果发现没有这种权限,就要重新挂载权限,使用命令mount -o remount,acl /,重新临时挂载根分区,并且赋予acl权限,永久开启分区acl权限,就要写/etc/fstab,在挂载根分区这一行的default改成default,acl,就明确要求在默认权限之上还要开启acl权限。再使用命令mount -o remount / 重新挂载分区。一般都会有这个权限,不需要这个操作。

5.4.2.acl权限查看与设置

查看acl权限使用命令getfacl+文件名,设置acl权限使用setfacl+选项+文件名。-m设定acl权限,-x删除指定acl权限,-b删除所有acl权限,-d设定默认acl权限,-k删除默认acl权限,-R递归设定acl权限。设定命令为setfacl -m u:tom:rx a.txt,-m表示设定权限,u表示设定对象是用户,tom表示设定的用户名,rx表示给该用户的权限。
ls -l查看文件详细信息的时候,权限符号之后是一个点.,这个点表示该文件没有acl权限,如果给某个文件设置了acl权限,那么那个点就会变成加号+。具体查看内容还是要用getfacl命令。

5.4.3.acl权限的删除与mask值

使用getfacl+文件名后,可以看到有一个mask行(修改过acl设置的文件才有),这就是acl的最大权限,真正的acl权限是命令设置的值与mask值相与的结果。目录mask值默认是rwx,文件mask值默认是r-x。mask值是可以改变的,使用命令setfacl -m m:rx+文件名,就可以将mask值修改为rx,这样无论怎么设置都不能给一个用户设置写权限。
使用命令setfacl -x u:tom a.txt就可以删掉该用户所有的acl权限,也即是只想删除一个用户的acl权限就用就用选项-x,setfacl -b a.txt.这样就删除了这个文件所有的acl权限。

5.4.4.acl权限的默认权限与递归权限

递归权限是指父目录在设置了acl权限后,其下的子目录或文件也拥有一样的acl权限。命令是setfacl -m u:tom:rx -R /home/a/,就使用递归算法将a目录已经下面所有的目录给tom设置了一样的rx权限,所以递归权限只能针对目录。但是这样使用递归权限最大的问题在于权限溢出,给目录设置执行权是必须的,但是目录下的文件同时拥有执行权就是权限溢出。
默认权限是指,给父目录赋予了acl默认权限之后,该目录下新建的文件或目录也会同时得到这个默认权限。设置默认权限的命令是setfacl -m d:u:tom:rx /home/a/,d表示默认的意思。默认权限可以赋予文件,但是没有意义。

5.5.sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行,sudo权限的操作对象是系统命令。
命令行输入visudo(没有空格,回车),实际就是进入/etc/sudoers.d文件进行管理,其中有一行是:
root ALL=(ALL) ALL,意思是:
用户名 被管理主机的地址=(可使用的身份,可不写) 授权命令(绝对路径)。想要赋予某个普通用户管理员权限就在命令visudo之后,在最后一行输入tom ALL=(ALL) /sbin/shutdown -r now,这样这个tom就有了执行立即重启电脑的权利,这个命令写的越简单,赋予该普通用户的权限就越高。以tom身份执行这个命令的时候需要写成sudo /sbin/shutdwon -r now.如果赋予sudo权限的对象是一个组,那么就要写成%组名才可以。作为普通用户使用命令sudo -l可以查看自己所拥有的sudo权限。
vi权限不能随便给用户,比如以root身份vi打开shadow文件,是可以修改用户密码的。

5.6.隐藏权限

文件还具有隐藏权限,这些权限对root用户一样有效,lsattr+[文件名]查看文件的隐藏属性,如果查看对象是目录,就要加参数-r,命令chattr[- + = iaAcCd…]+文件名,改变文件隐藏属性(加号增加权限)。
如果文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据,如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
如果文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据(不能使用vim操作,可以使用输出重定向输入),如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件。

5.7.文件访问权限

Linux对用户分为主人,组员和其他人,对文件权限分为读写和执行,一般的表示方法除了字母和数字意外,还可以用符号常量来表示(也叫作宏方法)。特殊符号的格式是S_IPwww,其中S_I是固定,P可以替换成R(读)W(写)X(执行);www可以替换成USR(主人)GRP(组员)OTH(其他人)。多个权限用位运算符与(|)来连接。S_IRUSE|S_IWUSR|S_IXUSR表示主人对该文件有这三种权限。编程中只能用数字或者符号常量。这些符号常量其实也就是这些权限的宏定义,宏定义中还有与这些符号相对应的8进制码,比如:
#define S_IRUSR 00400,每个权限都对应一个码,实际上也就是将st_mode的对应位置1,其他置0的那个数而已。
在inode中,有一个成员是一个16位的i_mode,他的低12位表示了文件权限,从位11~位0依次表示了SUID权限,SGID权限,sticky权限,用户读权限,用户写权限,用户执行权限,组成员读权限,组成员写权限,组成员执行权限,其他人读权限,其他人写权限,其他人执行权限。该位为1表示有此权限,为0则没有此权限。
chmod可以用于设置这三个位,如chmod u+s即可设置uid位为1. chmod g+s即可设置gid位, chmod o+t即可设置SBIT位,也一样可以通过权限码如chmod 4755来设置。这些宏定义的权限主要是用于Linux系统开发中代码编写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值