1.特殊权限

    SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。(SUID权限一般没有特殊情况不要使用)

        chmod u+s FILE 添加对应的SUID权限, chmod u-s FILE 减少对应的SUID权限

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

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

chmod g+s FILE 添加对应的SGID权限, chmod g-s FILE 减去对应的SGID权限

    Sticky:在一个公共目录下,每个用户都可以创建文件,删除自己创建的文件,不能删除别人创建的文件

    chmod o+t DIR  chmod o-t DIR

    例题练习:

    管理员身份  执行的命令

    root mkdir /tmp/project   建立一个目录为/tmp/project/

    root        chmod g+w /tmp/project/  并给该目录一个写权限

    root useradd usera          创建用户 usera 

    root useradd userb          创建用户 userb

    root useradd userc          创建用户 userc

    root groupadd developteam   创建一个公共组为developteam,

    root usermod -a -G developteam usera     将用户usera的附加组添加至developteam

    root usermod -a -G developteam userb    将用户userb的附加组添加至developteam

    root usermod -a -G developteam userc    将用户userc的附加组添加至developteam

    root su - usera 

    usera cd /tmp/developteam 

    usera touch a  我们可发现a 的属主和属组分别为 usera usera 

    root su - userb

    userb cd /tmp/developteam

    userb touch b

    root chmod g+s /tmp/project 以管理员root身份,添加用户的SGID权限

    root su - usera

    usera cd /tmp/developteam 

    usera touch a.sh  可发现a.sh的属主和属组分别为,usera developteam 

现在同在一个组为developteam的userb或者userc可以删除usera创建的a.sh

    root chmod o+t /tmp/project  以管理员root身份,添加用户的Sticky权限

现在同在一个组为developteam的userb或者userc就不可以删除usera创建的a.sh,现在权限规定只有usera才可以删除这个文件。

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

FACL:filesystem Access Control List

利用文件扩展保存额外的访问控制权限

setfacl 设定访问控制权限

    -m:设定

u:UID:perm FILE

g:GID:perm FILE

例:setfacl -m u:usera:rw- inittab

d:u:UID:perm DIR 为某个目录设置访问控制列表

d:g:GID:perm DIR 

    -x:取消

u:UID

g:GID

例:setfacl -x u:usera inittab

getfacl 获得访问控制权限

无论facl给用户多少访问权限,总权限不能超出getfacl中mask最大的访问权限。

3.文件系统访问的顺序:

普通:owner-->group-->other

查看文件的属主是否和访问的属主是同一个,就以属主的访问权限访问该文件,

否则,就查看属主所在的属组是都和文件的属主所在的属组是否一个,就以文件属主所在属组的访问权限,访问该文件,否则就以其他人权限访问该文件

facl:owner-->facl,user-->group-->facl,group-->other

查看文件的属主是否和访问的属主是同一个,就以属主的访问权限访问该文件,否则,看文件属主所设定facl的访问用户是不是可以访问该文件,否则,就查看属主所在的属组是都和文件的属主所在的属组是否一个,就以文件属主所在属组的访问权限,访问该文件,否则,就查看文件属组所设定facl的所规定的可以访问的所属该属组的用户,否则就以其他人权限访问该文件