linux下SUID,SGID,sticky特殊权限及ACL详解

一.特殊权限

SUID: 运行指定程序时,相应进程的属主是程序文件自身的属主,而不是启动者;

chmod u+s 文件 增加suid位

chmod u-s 文件 删除suid位

ls -l /usr/bin/passwd 是一个典型例子,任何人都可以修改自己的密码

wKioL1cSRMGRNlpAAADuaYB1mj8558.jpg

如果文件本身原来就有执行权限,则SUID显示为小s;否则显示大S;

SGID: 运行指定程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组;

chmod g+s 文件 增加sgid位

chmod g-s 文件 删除sgid位

如果文件本身原来就有执行权限,则SUID显示为小s;否则显示大S

Sticky: 共享目录当中,每个人都可以创建文件,删除自己的文件,但不能删除别人的文件;

chmod o+t 文件 增加sticky位

chmod o-t 文件 删除sticky位

      如果文件本身原来就有执行权限,则Sticky显示为小t;否则显示大T

实例说明:

 公司有一个业务部门,里面有3个用户,分别是rose,tom,joe;需要共享一个目录,相互之间

 可以查看编辑对方文件,当然也可以自己创建文件,但不能删除对方创建的文件

1.首先创建3个用户rose,tom,joe,再创建sales组

 useradd rose

 useradd tom

 useradd joe

 groupadd sales

2.将3个用户额外组加入到sales组当中

 usermod -a -G sales rose

 usermod -a -G sales tom

 usermod -a -G sales joe

3.创建公共目录/tmp/sales,对此目录属组改为sales,并增加组写权限,及sgid,sticky位,

 mkdir /tmp/sales

 chmod g+w /tmp/sales

 chgrp -R sales /tmp/sales

 chmod -R g+s /tmp/sales

 chmod -R o+t /tmp/sales

二.文件系统访问控制列表

 1.设定文件访问控制列表

 格式:setfacl 选项 设定指定权限 文件名...

   选项-m: 修改或设定

     u:UID:perm

     g:GID:perm

  例如: setfacl -m u:tom:rwx /tmp/acl.txt 使tom用户对此文件拥有读写权限

      setfacl -m g:tom:rwx /tmp/acl.txt 使tom组对此文件拥有读写权限

      setfacl -m m:rw /tmp/acl.txt     设定此文件的mask权限为读写权限

注意ACL对UID,GID设定的权限最大不能超过mask权限,即使权限超过mask权限也没有用,

并且指定的文件设有ACL权限后查看文件权限后面有+号存在

wKioL1cTRhHQ8Ah6AAHMqHKrbxg089.jpg

 选项-x:移除或取消

       u:UID

       g:GID

  例如: setfacl -x u:tom /tmp/acl.txt   移除tom用户ACL权限

     setfacl -x g:tom /tmp/acl.txt    移除tom组ACL权限

       setfacl -x m /tmp/acl.txt     移除mask用权限

 2.获取指定文件的文件访问控制列表信息

   格式: getfacl 文件名

      getfacl /tmp/acl.txt 查看acl.txt ACL信息