linux下SUID,SGID,sticky特殊权限及ACL详解
一.特殊权限
SUID: 运行指定程序时,相应进程的属主是程序文件自身的属主,而不是启动者;
chmod u+s 文件 增加suid位
chmod u-s 文件 删除suid位
ls -l /usr/bin/passwd 是一个典型例子,任何人都可以修改自己的密码
如果文件本身原来就有执行权限,则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权限后查看文件权限后面有+号存在
选项-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信息
转载于:https://blog.51cto.com/willow/1764580