DahuangPhoneLAMPLinux → RHEL5系统下ACL的使用


  共有11488人关注过本帖树形打印复制链接

主题:RHEL5系统下ACL的使用

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
RHEL5系统下ACL的使用  发帖心情 Post By:2013/10/22 12:02:35 [只看该作者]

 1、概述:      

       Linux系统的权限是很重要的,偏偏传统的权限仅有三种身份、三种权限,还需要配合chmod、chown、umask、chgrp等命令来进行用户与群组相关权限的设置,如果要进行复杂的权限设置,如某个目录要开放给某个特定的用户来使用,传统的owner、group、others的权限方法就无法满足需要了。那么ACL就是很好的选择。

        ACL是Access Control List的缩写,主要用在提供传统的读、写、执行权限之外的更细部的权限设置。ACL课以针对单一用户、单一文件或目录进行r、w、x的权限设置,者对于需要特殊权限的使用状况非常有帮助的。

2、ACL可以针对以下几个项目

用户(user):可以针对用户来设置权限。

群组(group):以群组为对象来设置权限。

默认属性(mask):在目录下加你新文件/目录时,设置新数据的默认权限。

3、如何启动ACL:

在有些linux系统中ACL不是默认就启动的,如centos 中就是没有启动的,但是在一些Su Linux、RHEL5系统中ACL则是默认启动的。

centos系统启动ACL的方法:

假如要让centos下/home支持ACL,则可以在终端下输入如下命令

[root@linux  ~]#mount  -o  remount ,acl   /home

[root@linux  ~]#mount   |    grep   /home

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

上面出现了粗体的ACL则说明文件系统支持ACL,否则不支持ACL了。

4、ACL的设置技巧:

文件系统支持ACL后,可以用如下命令进行设置。

getfacl :取得某个文件/目录的ACL权限

setfacl :设置某个目录/文件的ACL权限

格式:

[root@linux  ~]#setfacl  [--mxdb]  设置值

参数:

-m :设置一个ACL权限(常用)

-x :取消一个ACL权限

-b :移除全部ACL权限

-d:设置默认的ACL权限

5、设置方法:

1> 、针对用户

语法为:        u:[用户账号]:[rwx]

例如针对dmtsai这个用户来设置其权限为rx,则

[root@linux  ~]#setfacl   -m   u : dmtsai :rx    somefilename

2>、针对群组来设置

语法为:        g:[群组名称]:[rwx]

例如针对users这个群组来设置其权限为rw,则

[root@linux  ~]#setfacl   -m   g : users :rw    somefilename

3>、针对默认权限来设置

语法为:        m:[rwx]

例如,假设默认权限是rwx,则

[root@linux  ~]#setfacl   -m   m:rwx   somefilename

上述的理论知识了解之后,接下来用一个实例进行具体操作。。。。

6、实例操作

要求:

1>、已经将/home这个独立的分区设置成支持ACL了。

2>、在/home下建立以个名为project的目录并将该目录分配给eric这个用户,且用户属于users者个群组,默认权限是770.。。。

3>、先建一个用户为jordan,他属于jordan这个群组,但是该用户想要进入project这个目录来工作,意思是说,jordan在改目录线用户w的权限。

4>、有个用户是其他班级的老师,名称为tip,群组名也是tip,他能够进入改文件查看所有的数据,但是不能进行新建和删除的工作,也就是不能够有w的权限。。

具体步骤:

建立目录并设置相应的权限

[root@linux  ~]#mkdir /home/project

[root@linux  ~]#chown eric:users   /home/project

[root@linux  ~]# chmod 770  /home/project

建立jordan用户并设置相应权限

[root@linux  ~]#useradd    jordan

[root@linux  ~]#cd  /home

[root@linux  home]#setfacl   -m   u:jordan:rwx   project

[root@linux  home]#getfacl   project

#file :  project                                           

#owner :eric

#group :users                               # 前面者三行指的是这个文件的传统的linux权限

user : : rwx                                    #这个是默认用户的权限设置,即这个目录的拥有者eric所拥有的权限

user :jordan:rwx                            #这个是针对jordan这个用户设置的权限

group : : rwx                                  # 这个是默认群组的权限设置,即这个目录的拥有者eric所属的users这个组所拥有的权限

mask : : rwx                                   #这个是默认属性,这个将在后面介绍

other : : ---                                    #其他未定用户与组的权限

建立tip这个用户并设置权限

[root@linux  ~]#ueradd  tip

[root@linux  home]#setfacl  -m  u:tip:rw  project

[root@linux  home]#getfacl   project

#file :  project                                           

#owner :eric

#group :users                             

user : : rwx    

user :tip:r-x                                #这个就是tip这个用户的权限            

user :jordan:rwx                           

group : : rwx                                 

mask : : rwx                                  

other : : ---    

这样tip这个用户就可以进入到project这个目录下查看数据了,但是无法进行写入的错做。。。。。

7、mask的作用

mask需要和用户的权限进行逻辑与运算(AND)后,才能变成有效权限,以一个实例来说明mask的用法。

例如上面所说的project这个目录,现在要想让所有的人仅能读取这个目录却布恩那个写人,可以将ACL内的mask设置为r-x即可,那么其他的用户就不需要进行额外的设置了。

[root@linux  home]#setfacl  -m  m:rx  project

[root@linux  home]#getfacl   project

#file :  project                                           

#owner :eric

#group :users                             

user : : rwx    

user :tip:r-x                                

user :jordan:rwx                           

group : : rwx                                 

mask : : r-x                                 #设置后mask的权限变成了可读可执行了 

other : : ---  

jordan这个用户和组的可读可写可执行的权限就变成了可读可执行了,这就是mask的用法。

以上内容均来自《鸟哥私房菜服务篇》,之所以放在网上是为了加强自己的记忆和理解而已。。。。。  


 回到顶部