2012年5月14日星期一

RHCT考试要点之三:设置正确的权限 chmod,setfacl,suid,sgid,sticky

chmod 改变文件、文件夹的使用权限 Change the permissions mode of a file.


u:拥有者


g:所属组


o:其他人


a:所有人(u+g+o)


r:读权限


w:写权限


x:执行权限


文件权限配置行为如下


+:添加权限   -:减少权限 =:赋予权限


例:


chmod a-x test.txt


chmod u+rw


chmod g-wx


chmod o-x


chmod 666 test.txt


setfacl 设定某个文件或目录的ACL (Access control list)


getfacl 取得某个文件或目录的ACL


在setfacl前,首先要检查文件系统是否支持setfacl,还需要编辑/etc/fstab文件,对需要setfacl的分区激活acl功能。


如: /dev/hda1  /home   ext3  default,acl   0  2


给用户fxd设置acl功能: setfacl –m u:fxd:rw /project/test


删除用户、组或其他人的所有权限,用-x ,不需要指定权限(r,w,x)


如删除UID为500的用户所有权限:setfacl –x u:500 /project/test


 


umask –S 查看默认创建文件的权限


如:umask=0022 第一位是特殊权限位 (即setuid 或 setgid 或sticky,setuid=4,setgid=2,sticky=1) ,后三位为用户权限位(掩码值)。那创建的文件权限为 666-022=644。(新建文件默认没有x权限,所以用666-022)。


SUID:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属主身份来执行。
SGID对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属组身份来执行。
STICKY:粘滞位,通常对目录而言。通常对于全局可写目录(other也可写)来说,让该目录具有sticky后,删除只对属于自己的文件有效(但是仍能编辑修改别人的文件,除了root的)。不能根据安全上下文获取对别人的文件的写权限。


授予setuid: chmod u+s 或 chmod 4755            同理:chmod u-s       或 chmod 755


授予setgid: chmod g+s  或 chmod 2755            同理:chmod g-s       或 chmod 755


授予sticky:  chmod o+t   或chmod 1777            同理:chmod o-t      或  chmod 777


特殊权限位很危险,如给vi特殊位,那么会以root身体 编辑任何文件!!!


特殊权限位为 sticky=1,如果一个目录权限为777,且具有粘着位sticky,那么每个用户都可以创建文件,但只能删除自己所有的文件。


对于一个全局可写目录,加上sticky位以后,普通用户将只能删除自己的文件,而不能删除其他用户的文件。



  1. [root@localhost tmp]# su - user1 

  2. [user1@localhost ~]$ id 

  3. uid=512(user1) gid=512(user1) groups=504(mygrp),512(user1)context=root:system_r:unconfined_t:SystemLow-SystemHigh 

  4. [user1@localhost ~]$ cd /tmp/share/ 

  5. -bash: cd: /tmp/share/: Permission denied 

  6. [user1@localhost ~]$ ll -d /tmp/share 

  7. drwxrwSr-t 5 root mygrp 4096 Dec 30 16:09 /tmp/share 

  8. [user1@localhost ~]$  

  9. # 如上例,如果没有原位没有置X权限,即使同组的用户也无法进入目录,

  10. # 再设置SGID位也不起作用

  11.  

没有评论:

发表评论