您的位置:首页 > 其它

05---权限管理和FACL

2017-05-26 00:27 155 查看


==========================
权限 r,w,x
文件 r读 w写 x执行
目录 r可以对此执行ls列出内部所有文件名
        w 可以在目录增删文件
        x 可以使用cd切换进此目录,也可以使用ls -l查看内部详细信息
目录应该默认有x权限
小结:对于目录,不能读也可以cd进去,并且可写,执行ls只能看到文件名,无法获得其他信息。但是若不能执行,则不能写。
          对于文件,不能读也能执行。需要深入思考。

文件的隐藏属性
【鸟哥书上写到支持ext2/3,经测试ext4也支持】
chattr(修改文件隐藏属性)
chattr [+-=] [ai] FILE/DIR
-a  设置为a后,文件将只能增加数据(用echo "hehe" >> file验证),不能删改其内容
      也不能重命名,虽然重命名是修改目录的内容。也不能被硬链接)只有root可以设置此属性
-i   和-a差不多,但是连追加内容也不被允许
lsattr(列出文件隐藏属性)
lsattr和ls的用法差不多
-a  列出所有文件,包括隐藏的
-d  列出目录本身,而非其里面的文件
-R  递归列出目录下的所有内容

==========================
权限管理
chown(变更属主属组)只有root可以使用之
用法:chown [-R] USERNAME:GRPNAME FILE/DIR 
-R Recursive,目录下内容递归修改
也可以仅变更属主或者属组:
chown dechao /etc/test.a  
chown :newteam /etc/test.b

chmod(变更文件权限)
用法:chmod New_Mod FILE/DIR
-R Recursive,目录下内容递归修改
chmod 755 /home/dechao/test.a
chmod a+r /etc/abc.txt
chmod g=rwx /home/dechao/haha.txt

chgrp(变更属组)
chgrp [-R] GRPNAME FILE/DIR
较少使用,一般用chown比较多

=========================
linux上的特殊权限:
  SUID   SGID   STICKY:

安全上下文:
1.进程以某用户的身份运行,进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作。
2.权限匹配模型:
(1)进程的发起者是否为被访问文件的属主;如果是,则应用属主的权限,否则进入(2)
(2)进程的发起者是否属于被访问的文件的属组;如果是,则应用属组的权限,否则进入(3)
(3)应用other的权限
 
SUID(仅对二进制程序有效)
【要理解进程UID和进程EUID(有效UID)】
默认情况下用户发起的进程,进程的属主是其发起者,其以发起者的身份运行,与文件属主无关。
用户运行某程序时,如果此程序拥有SUID权限,则此程序的进程的属主不是进程发起者,而是文件属主。进程EUID变更为文件属主。
    /etc/passwd 就有SUID权限,那么一般用户tom是否就可以更改另一个用户jack的密码?不能,因为普通用户使用该命令不能加参数。
管理文件的SUID权限:
    chmod u+s FILE
    chmod u-s FILE
展示位置:属主的执行权限位;如果属主原本有执行权限,显示为s。原本无执行权限,显示为S。

SGID(对二进制程序和目录有效):
当目录属组有写权限,且有SGID权限时,属于该属组的用户在里面创建文件时,该文件的属组不再为用户的基本组,而是继承目录的属组。即此目录下有效用户组变更为该目录的属组。【但是执行groups查看用户所属用户组,发现没有什么改变】
管理目录的SGID权限
    chmod g+s DIR
    chmod g-s DIR
展示位置:属组的执行权限位;如果属主原本有执行权限,显示为s。原本无执行权限,显示为S。

STICKY(仅对目录有效):
默认情况下对于属组可写或全局可写的目录,组内用户或者全局用户都能在该目录下增删文件。如果为该目录设置Sticky权限,则用户仅能删改自己创建的文件,其他用户只能看。
管理目录的Sticky权限
    chmod o+s DIR
    chmod o-s DIR
展示位置:other的执行权限位;如果属主原本有执行权限,显示为s。原本无执行权限,显示为S。
                 系统上的/tmp和/var/tmp目录均有Sticky权限。

管理特殊权限的另一种方式:
chmod [0-7][0-7][0-7][0-7] #第一组的[0-7]是SUID,SGID,Sticky的组合

==============================================================================
FACL: File Access Control List
目前绝大多数文件系统支持ACL,ACL属于挂载选项,通过 dumpe2fs -h /dev/sda# 查看下。
文件的额外赋权机制,即在原有的u,g,o之外另一种控制赋权给另外用户或组的赋权机制。
若要开机挂载时自动使能改选项,需要编辑/etc/fstab文件下挂载选项一列的default后加上acl(但一般default中
已经包含了acl)
getfacl (查看某文件的facl)
getfacl
FILE or DIR
setfacl(设置某文件的facl)
  -R  目录递归
  -m  modify, 设定
      u:UserName:perm
      g:GrpName:perm
  -x  remove, 删除
      u:UserName
      g:GrpName
  -m  设置最大权限范围mask,facl设置的user,group权限不能超出之---->很少改动
      m:[rwx]
set -m u:USRNAME:MODE FILE #赋权给用户
set -m g:GRPNAME:MODE FILE #赋权给组
set -x u:USRNAME FILE #撤销赋权
set -x g:GRPNAME FILE #撤销赋权

UserName/GrpNAME省略的话,代表文件属主属组.
设置完facl后,执行ls -l发现原来的9位权限后出现了+号,代表此文件有附加权限。

先确认身份,身份确认后获得相应的权限(即使后续身份有更大权限也不再使用),身份确认流程如下:
FACL添加前:Owner-->Group-->Others
FACL添加后:Owner-->facl_of_user-->Group-->facl_of_group-->Others
即权限匹配模型:是否属主?-->FACL对用户的授权-->是否属组?-->FACL对组的授权-->others
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: