天天看点

linux特殊权限管理特殊权限管理

特殊权限管理

  • ACL权限

简介:

    ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。

    ACL主要针对用户(user),用户组(group),掩码(mask)方面来控制权限。

    简单来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限.。而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此,要使用ACL必须要有文件系统的支持才行。组要包括ReiserFS,EXT2/EXT3/ext4,JFS, XFS等文件系统。

ACL权限的设定

  1. 首先查看ACL所在的分区是否支持ACL权限(默认都支持)

用df -h 命令查看分区的信息

linux特殊权限管理特殊权限管理

用dumpe2fs -h /dev/sda1来查看分区是否支持ACL权限

linux特殊权限管理特殊权限管理

高亮的那一栏中有acl表示默认支持ACL权限

  1. 查看ACL命令

getfacle 文件名

  1. 设定ACL权限的命令

setfacl 选项 文件名

选项:

  • -m 设定ACL权限
  • -x 删除指定的ACL权限
  • -b 删除所有的ACL权限
  • -d 设定默认ACL权限
  • -k 删除默认ACL权限
  • -R 递归设定ACL权限
    1. 创建用户和组名,并把用户加入组中

分别只执行以下命名:

useradd wangyue

useradd zhongyiqiankun

useradd user1

groupadd happy

gpasswd -a wangyue happy

gpasswd -a zhongyiqiankun happy

执行完后可以查看/etc/group文件来查看是否添加成功

linux特殊权限管理特殊权限管理

可以看到组好为1003的happy组中添加了wangyue和zhongyiqiankun用户,说明添加成功!

  1. 创建一个目录,并赋予user1用户ACL权限,和正常的用户与用户组权限

分别执行以下命令:

mkdir /acl 在根目录下创建一个acl目录

chown root:happy /acl/ 将acl目录的所有者跟改为root,所属组更改为happy

chmod 770 /acl/ 跟改acl目录的权限为770.

setfacl -m u:user1:rx /acl 给user1和acl目录设定acl权限

此时查看acl目录的详细信息如下:

linux特殊权限管理特殊权限管理
  1. 给用户组设定ACL权限

执行以下命令:

useradd tianming

useradd shaoyu

useradd gaoyue

useradd shilan

usergroup qinshimingyue

chown -a tianming qinshimingyue

chown -a shaoyu qinshimingyue

chown -a gaoyue qinshimingyue

chown -a shilan qinshimingyue

setfacl -m g:qinshimingyue:rx /acl

  1. acl权限设定完成后,可用getfacl查看acl权限
linux特殊权限管理特殊权限管理
最大有效权限

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

  1. 设定mask权限
    setfacl -m m:rx /acl
               
  2. 删除acl权限

    setfacl -x u:user1 /acl 删除用户acl权限

    setfacl -x g:qinshimingyue /acl 删除组的acl权限

    setfacl -b /acl 删除所有的acl权限

递归ACL权限:

递归是父目录在设定ACL权限时,所有的子文件与子目录也会拥有相同的ACL权限

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

默认ACL权限:

默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会 继承父目录的ACL权限。

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

文件特殊权限

  1. SetUID的功能
    • 只有可执行的二进制程序才能设定SUID权限
    • 命令执行者要对改程序拥有x(执行)权限
    • 命令执行者要在执行该程序时获得改程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
    • SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
    passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
  2. 设定SetUID的方法

    4 代表SUID

    chmod 4755 文件名  
    chmod u+s 文件名  
               
  3. 取消SetUID的方法:
    chmod 755 文件名 
       chmod u-s 文件名 
               
    (注:危险的SetUID:1.关键目录应该严格控制写权限2.对系统中默认的SetUID文件做一列表,定期检查有没有这些文件之外的文件被设置了SetUID权限)

SetGID针对文件的作用

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

SetGID针对目录的作用:

  • 普通用户必须对该目录拥有r和x权限,才能进入此目录
  • 普通用户在此目录中的有效组会变成此目录的属组
  • 若普通用
  • 户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

设定SetGID权限

2 代表SGID

chmod 2755 文件名  

  chmod g+s 文件名  
           

SBIT粘着位的作用

  • 粘着位目前只对目录起作用
  • 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
  • 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下的所有文件,包括 其他用户创建的文件。一但赋予了粘着位,除了root可以删除所有的文件,普通用户就算 拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件

设置粘着位

chmod 1755 目录名
  chmod o+t 目录名  
           

取消粘着位

chmod 755 目录名
  chmod o-t 目录名
           

chattr [+-=] [选项] 文件或目录名(注:root用户也可以被限制)

  • +:增减权限
  • -:删除权限
  • =:等于某权限

选项:

  • i:如果对文件设置i属性,那么不允许对文件进行删除、改名、也不能添加和修改数据: 如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件
  • a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据; 如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除

查看文件系统属性:lsattr 选项 文件名

选项:

-a 显示所有文件和目录
   -d 若目标是目录,仅列出目录本身的属性,而不是子文件的
           

sudo权限

  • root把本来只能由超级用户执行的命令赋予普通用户执行
  • sudo的操作对象是系统命令

继续阅读