linux系统高级权限管理ACL

//中午一小时,然后下午一放学到现在终于学玩这节了!累死我了!还没吃饭。。。

传统的权限模型缺点
传统的UGO权限无法应对复杂的权限设置需求,如对于一个文件只能设置一个组,
并且对改组权限控制,但是如果该文件有多个组对其进行访问,并且都要进行权限
限制时,传统的UGO模型就无法满足需求了。

    例子:
   Training组 ——————  course目录(所属组:training)
                                               权限:rwxrwx--
                                                         |
                                                         |
                                                       QA组 


  **ACL
ACL(access control list)是一种高级权限机制,允许我们对一个文件或文件夹进行灵活的,复杂的权限设置。
ACL需要在挂载文件的时候打开ACL功能:
  mount -o acl /dev/sda5 /mnt  将sda5挂载到mnt并且打开acl功能

查看一个文件/文件夹的ACL设置:
   getfacl linuxcast.net
针对一个用户对文件进行acl设置
   setfacl -m u:nash_su:wx linuxcast.net
针对一个组对文件进行acl设置
   setfacl -m g:taining:rw linuxcast.net
删除一个acl设置
   setfacl -x u:nash_su linuxcast.net

操作:
useradd bing0719   添加用户
groupadd bingfeng   添加组
touch bing.txt    新建文件
getfacl bing.txt   查看acl设置
...
删除一个用户
userdel bing0719


实例:
假设linuxcast用户,组如下:
   组                    用户
training             nash_su,bob
market               alice,john
maage                steve, david
boss                 snake
现在要求个部门,员工建立相应的工作文件夹,要求如下:
*所有目录,文件保存在统一的一个文件夹下
*每个部门拥有一个独立的文件夹
*不同部门之间不可访问各自的文件夹。
*每个员工在所在的部门文件夹下拥有一个所属文件夹
*同部门不同员工之间可以查看各自的文件夹内容,但不可以修改,用户仅能够修改自己的内容
*boss组的用户对所有组的文件夹均有访问权限,但无修改权限

第一步:添加组
groupadd training
groupadd market
groupadd manage
groupadd boss

第二步:添加用户
useradd -G training nash_su
useradd -G training bob
useradd -G market alice
useradd -G market john
useradd -G manage steve
useradd -G manage david
useradd -G boss snake

第三步:在/下建立一个company目录,在目录下建立training,market,manage,文件夹。
cd /
mkdir company
cd /company/
mkdir training
mkdir market
mkdir manage

第三步:改变training,market,manage,文件夹所属组为对应的组里(chgrp[选项][组][文件/文件夹])
参数: -c  当发生改变使输出调试信息
      -f   不显示错误信息
      -R   处理制定目录和子目录下所有文件
      -v   显示详细信息
      -help 显示帮助
      -version  显示版本信息

chgrp -v training training/
chgrp -v market market/
chgrp -v manage manage/

第四步: 去除training,market,manage,文件夹。的 o(other)权限。(不同部门之间不可访问各自的文件夹。)

三类不同的权限: user, group, other (u,g,o)
三种类型的权限: read ,write, execute  (r,w,x)

chmod o-rwx training/
chmod o-rwx manage/
chmod o-rwx market/

第五步:将training,market,manage,各个文件夹下的文件自动继承相应的权限。并在对应的文件夹下建立对应的用户文件夹,
并修改文件夹的所属用户(每个员工在所在的部门文件夹下拥有一个所属文件夹)

root@wangzheng:/company# chmod g+s training/
root@wangzheng:/company# chmod g+s market/
root@wangzheng:/company# chmod g+s manage/

cd training/
madir nash_su
mkdir bob
chown nash_su nash_su/  
chown bob bob/

cd ..  回到上层目录
root@wangzheng:/company# cd market/
madir alice
mkdir john
chown alice alice/  
chown john john/

cd ..
cd manage/
mkdir steve
mkdir david
chown steve steve/
chown david david/

第六步:设置boss用户拥有访问各个文件夹的权限,但是不能修改文件内容

cd /company
setfacl -m g:boss:rx manage   //设置boss用户对manage文件夹rx权限
setfacl -m g:boss:rx market
setfacl -m g:boss:rx training

然后我们查看该文件的权限试试:
root@wangzheng:/company# getfacl manage/
# file: manage/
# owner: root
# group: manage
# flags: -s-
user::rwx
group::r-x
group:boss:r-x
mask::r-x
other::---

 

原文地址:http://bf0719.tap.cn/blog-derail/article-2frg05mce0104


你可能感兴趣的:(linux系统高级权限管理ACL)