热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux命令(五)——文件权限管理命令详解

文章目录权限管理一、ACL权限1、ACL简介2、查看和设定ACL权限3、最大有效权限与删除ACL权限4、默认ACL权限和递归ACL权限(都只是针对文件的)二、文件特殊权限1、Set

文章目录

    • 权限管理
      • 一、ACL权限
        • 1、ACL简介
        • 2、查看和设定ACL权限
        • 3、最大有效权限与删除ACL权限
        • 4、默认ACL权限和递归ACL权限(都只是针对文件的)
      • 二、文件特殊权限
        • 1、SetUID
        • 2、SetGID
        • 3、Sticky BIT——SBIT特殊权限


权限管理


一、ACL权限


1、ACL简介

1)ACL权限简介——解决用户身份(ugo)不够用的情况
关于ACL权限详解可参考http://c.biancheng.net/view/3120.html,这篇文章基本详细解释了。
2)查看分区ACL权限是否开启
dumppe2fs -h /dev/sda3

-h ——仅仅显示超级块儿中的信息,而不显示磁盘组块的详细信息

3)临时开启分区ACL权限

mount -o remount,acl/

4)永久修改ACL权限

vi /etc/fstab
#加入ACL(,acl)
mount -o remount
#重新挂载文件系统或者重启系统,使得修改生效




2、查看和设定ACL权限

1)查看ACL权限

getfacl文件名

2)设定ACL权限
setfacl [选项] 文件名

-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限

3)给用户组设定ACL权限

groupadd tgroup2
setfacl -m g:tgroup:rwx /project




3、最大有效权限与删除ACL权限

1)最大有效权限mask
mask是用来指定最大有效权限的,如果给用户赋予了ACL权限,是需要和mask权限相与才能得到该用户的真正权限

2)删除ACL权限

setfacl -x u:用户名 文件名 #删除指定用户权限
setfacl -b 文件名 #删除全部ACL用户权限


4、默认ACL权限和递归ACL权限(都只是针对文件的)

1)递归ACL权限
设定子目录和父目录的ACL权限相同

setfacl -m u:用户名:权限 -R 文件名

2)默认ACL权限
给父目录设定默认ACL权限,父目录中所有新建的子文件都会继承父目录的ACL权限

setfacl -m d:u:用户名:权限 文件名


二、文件特殊权限


1、SetUID

1)SUID简介:

  • 只有可以执行的二进制程序才能够设定SUID权限
  • 命令执行者要对该程序拥有x(执行)权限
  • 命令执行者在执行该程序的时候获得该程序文件宿主的身份(在执行程序的过程中灵魂附体为文件的所属者)
  • SetUID权限只在该程序执行过程中有效,身份改变只在程序执行的过程中有效

passwd 命令拥有SetUID权限,所以普通用户可以修改自己的密码

ll /usr/bin/passswd

cat命令没有SetUID权限,所以普通用户不能够查看/etc/shadow文件中的内容

2)设定SUID方法:(注意用户要有x权限,不然在权限中显示S而非s来报错)

4代表SUID
chmod 4755 文件名
chmod u+s 文件名

3)取消SUID方法

chmod 755 文件名
chmod u-s 文件名

4)危险的SetUID

  • 关键目录应该严格控制写权限。比如’/’、‘/usr’等
  • 用户的密码设置应该严格遵守密码三原则
  • 对系统中应该具有SetUID权限的文件做一列表,定时检查有没有这之外的文件被设置了SetUID权限

2、SetGID

1)SetGID针对文件的作用:

  • 只有可执行的二进制程序才能设置SGID权限
  • 命令执行者要对该程序拥有x(执行)权限
  • 命令执行者在执行程序的时候,组身份升级为该程序文件的所属组
  • SetGID权限同样只在执行该程序的过程中有效

ll /usr/bin/locate
ll /var/lib/mlocate/mlocate.db

/usr/bin/local 是可执行二进制文件,可以赋予SCID
执行用户对/usr/bin/locate命令拥有执行权限
执行/usr/bin/locate 命令时,组身份会升级为slocate组,而slocate组对/car/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令,查询mlocate.db数据库

3、Sticky BIT——SBIT特殊权限

Sticky BIT,简称 SBIT 特殊权限,可意为粘着位、粘滞位、防删除位等。

SBIT 权限仅对目录有效,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件。

也就是说,当甲用户以目录所属组或其他人的身份进入 A 目录时,如果甲对该目录有 w 权限,则表示对于 A 目录中任何用户创建的文件或子目录,甲都可以进行修改甚至删除等操作。但是,如果 A 目录设定有 SBIT 权限,那就大不一样啦,甲用户只能操作自己创建的文件或目录,而无法修改甚至删除其他用户创建的文件或目录。

举个例子,Linux 系统中,存储临时文件的 /tmp 目录就设定有 SBIT 权限


推荐阅读
author-avatar
新人缓冲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有