标签:control linux access 模型 file
我们有的时候有这样的需要,允许一人用户查看修改其它用户的文件,但不允许删除。用一个普通用户执行一个命令,但这个命令的运行身份是root。因为linux系统权限设置过于简单,像做这些事情就需要用到facl了。facl是file access control list的缩写。
当一个用户访问一个文件时,文件权限匹配模型是这样的工作顺序:检查用户是否为文件的属主,如果是则按属主的权限来看读写执行权限。如果不是则检查用户是否为此文件的所属组的成员,如果是则按属组的权限。如果不是则都其它用户权限来给定。
SUID
一般情况下当我们以一个普通用户运行一个程序时,这个程序的发起者是用户本身,而这个程序是用户的代理。但如果给一个程序指定了SUID时,其它用户再运行这个程序则是以这个程序的所有者运行,passwd命令就是这样运行的,前提是程序的属主需要有执行权限。
chmod u+s [文件名] 用来给可执行的程序加上SUID位,然后用ls -l 查看这个文件,执行权限位显示为小s或大S。小s表示属主有执行的权限,大S表示属主没有执行权限。
用途,/etc/shadow这个文件普通用户使用cat命令无法查看,以root身份把cat这个程序加上SUID然后普通用户再执行cat /etc/shadow时就可以查看到文件的内容。
用户普通用户执行cat /etc/shadow
把cat程序拷贝到/wukui/test下并加上SUID后
#cp `which cat` /wukui/test/
#chmod u+s /wukui/test/cat
#su - wukui
#/tmp/test/cat /wukui/shadow
SGID
如果我们想给系统的一个用户对某个文件有写的权限,又不想给其它用户写权限,还不想把这个用户加入到我们这个组里,这时候就用到SUID了。SUID一般用在给目录设置。
比如/wukui/test这个目录里普通用户可以修改此目录里的文件内容,但不动这个目录的other权限。做法如下
#mkdir /wukui/test 创建目录
#groupadd fileshare 创建组
#chown :fileshare /wukui/test 修改此目录的所属组
#chmod g+s /wukui/test 给此目录添加SGID
#usermod -G fileshare user1 把user1加入到fileshare组
经过以上的操作,此目录里的文件other没有写的权限,user1用户也可以修改了。
ls -ld /wukui/test
sticky :沾滞位
这个一般给目录用,如果想让user1用户修改user2的文件,又不想让user2删除user1的文件,每个用户只能删除自己的文件。这里就需要乃至粘滞位了。
使用格式 :chmod o+s <目录名>
chmod o+s /wukui/test 这样/wukui/test这个目录里所有普通用户只能删除自己的文件,而不能删除它人的文件。
facl
通过facl普通用户可以透过文件的扩展属性,单独向其它用户或组设定额外的访问机制,而不需要改other权限来实现。启用facl之后的权限应用优先级,属主-用户级别的facl-属组-组级别的facl-其它用户
getfacl 显示 facl
getfacl filename
setfacl 修改 facl
使用格式:setfacl {-m|-x} [用户或组]:MODE FILE
-m 添加权限
setfacl -m u:wukui:rwx wukui.txtgetfacl wukui.txt
-x 删除权限
setfacl -x u:wukui wukui.txt
getfacl wukui.txt
-x u:USERNAME
-R 递归修改。仅对已有的文件生效。
setfacl -m u:wukui:rwx a.txt 添加用户可以访问格式
setfacl -m g:wukui:rw a.txt 添加组可以访问格式
chattr
lsattr
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文 件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
chattr +i /etc/passwd
UID,GID,粘滞位,setattr,lsattr,布布扣,bubuko.com
标签:control linux access 模型 file
原文地址:http://wukui.blog.51cto.com/1080241/1537219