感谢支持
我们一直在努力

Linux中ACL分配权限

如果没有关闭selinux,那么就需要针对selinux进行文件权限的额外配置,否则网络服务就不可能会正常启动。那么如何关闭selinux呢?可以这样做:


[root@xiaozhu ~]# vi /etc/selinux/config


SELINUX=disabled


修改成disabled


修改开机时grub的配置文件。


[root@xiaozhu ~]# vi /boot/grub/menu.lst


kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet selinux=0


然后重新开机


[root@xiaozhu ~]# sync;reboot


ACL设置权限:


要让文件系统支持ACL,可以这样做:


mount -o remount,acl /home


mount |grep /home


/dev/sda10 on /home type ext3 (rw,acl)


看到那个出现的acl了吧,如果想要开机时文件系统就支持acl,需要修改/etc/fstab成下面的模样:


[root@xiaozhu ~]# vi /etc/fstab


LABEL=/home1            /home                   ext3    defaults,acl        1 2


setfacl


-m:设置一个ACL权限


-x:取消一个ACL权限;


-b,全部的ACL权限都移除;


-d,设置默认的ACL权限,仅能针对目录使用


针对xiaozhu这个用户来设置其权限为rx,


[root@xiaozhu tmp]# touch acl.test


[root@xiaozhu tmp]# ll acl.test


-rw-r–r– 1 root root 0 03-03 07:46 acl.test


[root@xiaozhu tmp]# setfacl -m u:xiaozhu:rx acl.test


[root@xiaozhu tmp]# ll acl.test


-rw-r-xr–+ 1 root root 0 03-03 07:46 acl.test


看到有什么区别了吧,也就是说xiaozhu这个用户对acl.test这个文件只有rx的权限,针对单个用户来说的。

现在我们用一个实例说明acl的用法


假设:


已经将/home这个独立的分区设置成支持acl。


/home下设置了一个名为study的目录。


将该目录分配给xiaozhu这个用户,且该用户属于xiaozhu群组,默认权限是770。


有个用户帐号名称是xiaozhu1,她属于xiaozhu1那个群组,但是她想进入到program那个目录来工作,也就是说,xiaozhu1在该目录下必须要有W的权限才可以


有个用户是其他班级的老师,名称是litter(小不点),群组名也是litter,他想要进入该目录查阅所有的文件数据,但是不能够进行删除与新建工作,亦即他不能拥有W的权限。


1,建立该目录并且规划好权限


[root@xiaozhu ~]# mkdir /home/program


[root@xiaozhu ~]# chown xiaozhu:xiaozhu /home/program将该目录分配给xiaozhu1这个用户和群组


[root@xiaozhu ~]# ld /home/program 查看该目录的拥有者和拥有群组都为xiaozhu1


drwxr-xr-x 2 xiaozhu xiaozhu 4096 03-03 13:48 /home/program


[root@xiaozhu ~]# setfacl -m u:xiaozhu1:rwx /home/program设置/home/program,xiaozhu1这个用户拥有rwx的权限


[root@xiaozhu ~]# ld /home/program看到最后面多了一个“+”号吗?


drwxrwxr-x+ 2 xiaozhu xiaozhu 4096 03-03 13:48 /home/program


[root@xiaozhu ~]# getfacl /home/program获取某个文件的acl设置 资料。


getfacl: Removing leading ‘/’ from absolute path names


# file: home/program


# owner: xiaozhu


# group: xiaozhu


user::rwx


user:xiaozhu1:rwx 瞧,这个就是我们刚才设置的效果哈


group::r-x


mask::rwx


other::r-x


[root@xiaozhu ~]# setfacl -m u:litter:rx /home/program


[root@xiaozhu ~]# getfacl /home/program


getfacl: Removing leading ‘/’ from absolute path names


# file: home/program


# owner: xiaozhu


# group: xiaozhu


user::rwx


user:xiaozhu1:rwx


user:litter:r-x瞧,这个是我们的第二个用户的设置哈,只有阅读的权限哈


group::r-x


mask::rwx


other::r-x

现在,我们再来说说上面两行的mask的用途,还是听有用的哈


如果/home/program这个目录要让所有人都暂时仅能读取不能写入,可以将acl内的mask设置为r-x,其他人就不需要再额外的设置了


[root@xiaozhu home]# setfacl -m m:rx program/


[root@xiaozhu home]# getfacl program/


# file: program


# owner: xiaozhu


# group: xiaozhu


user::rwx


user:xiaozhu1:rwx               #effective:r-x


user:litter:r-x


group::r-x


mask::r-x


other::—


这里涉及到有效权限的问题,有效权限是指mask需要与用户的权限进行逻辑与运算(and)后,才能变成有效的权限。rwx(用户权限)与rx(mask)逻辑与后,就是rx了,所以只能读不能写了

赞(0) 打赏
转载请注明出处:服务器评测 » Linux中ACL分配权限
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏