RHCE中ACL权限

转载 2013年12月04日 11:45:26

转载地址:http://www.jbxue.com/LINUXjishu/2768.html

本文介绍linux下文件ACL权限的相关内容,供大家学习参考。

我们知道,在linux系统中,我们将访问文件的用户分为三类,user,group,other。

如果系统中某个用户想对某个文件有写入的权限,但是该用户是属于other,如果是这样,就只能够开放other的权限。但是一旦开放other的权限,那么所有人就对该文件有写入的权限了。文件的ACL权限就很好的解决了这个问题,它可以设置一个特定文件的特定权限。

下面来具体的设置文件ACL权限。

如果想拥有文件ACL的权限,就必须为文件系统添加一个ACL属性。
[root@localhost ~]#
[root@localhost ~]# mount -o remount,acl /dev/sda9
[root@localhost ~]#
[root@localhost ~]# mount |  grep /dev/sda9
/dev/sda9 on /mnt type ext3 (rw,acl)
[root@localhost ~]#
[root@localhost ~]#
可以看到,/dev/sda9已经有了ACL属性。

现在我们新建一个redhat目录。
[root@localhost ~]#
[root@localhost ~]# cd /mnt/
[root@localhost mnt]#
[root@localhost mnt]# mkdir redhat
[root@localhost mnt]#
[root@localhost mnt]# ll -ld /redhat/
drwxr-xr-x 2 root root 4096 Feb 26 21:56 /redhat/
[root@localhost mnt]#
可以看到,这个redhat目录的权限为755,这个目录的拥有人和拥有组都是root,也就是说其他人对这个目录是没有写入的权限的。

[root@localhost ~]# su - user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /mnt/
[user1@localhost mnt]$ ls
lost+found  redhat
[user1@localhost mnt]$ cd redhat/
[user1@localhost redhat]$ touch file
touch: cannot touch `file': Permission denied
[user1@localhost redhat]$ ls
[user1@localhost redhat]$
可以看到,user1是other,user1对redhat这个目录果然没有写入的权限。

如果我们想要给user1对这个目录有一个rwx的权限。除了开放other的权限,我们还可以使用文件的ACL功能。
现在我们就给user1对该目录设置ACL权限。
#setfacl   -m   u:user1:rwx  /mnt/redhat/
-m         修改     
u           用户
user1     指定用户
rwx       指定权限
/redhat  指定目录
[root@localhost ~]#
[root@localhost ~]# cd /mnt/
[root@localhost mnt]#
[root@localhost mnt]# setfacl -m u:user1:rwx /mnt/redhat/
[root@localhost mnt]#
[root@localhost mnt]# ll
total 14
drwx------  2 root root 12288 Feb 26 21:53 lost+found
drwxrwxr-x+ 2 root root  1024 Feb 26 22:11 redhat
[root@localhost mnt]#

我们已经给redhat目录设置了ACL权限,通过ll可以看到,redhat目录的权限位后面多了一个加号,这个加号就代表不要看表面的权限,说明还有更深的权限隐藏在里面。

如何去查看这个文件的具体权限呢
#Getfacl  /mnt/redhat
[root@localhost mnt]#
[root@localhost mnt]# getfacl /mnt/redhat
getfacl: Removing leading '/' from absolute path names
# file: mnt/redhat
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x

[root@localhost mnt]#
我们可以看到文件的拥有人和拥有组都是root,user的权限是rwx,group的权限也r-x,other的权限是r-x。而且最重要的是user:user1:rwx,也就是user1这个用户对该目录也有rwx的权限。Mask代表用户的实际权限。

现在我们利用user1到redhat目录里面尝试去写入。
[root@localhost ~]#
[root@localhost ~]# su - user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /mnt/redhat/
[user1@localhost redhat]$
[user1@localhost redhat]$ mkdir file
[user1@localhost redhat]$ ls
file
[user1@localhost redhat]$
可以看到,刚才我们是不可以往里面写入的,但是现在我们就写入成功了。

刚才我们对user1这个用户做了文件的ACL权限。
现在我们对组来做文件的ACL权限。
#setfacl  -m  g:user1:rwx   /mnt/redhat/
[root@localhost ~]#
[root@localhost ~]# setfacl -m g:user1:rwx /mnt/redhat/
[root@localhost ~]#
[root@localhost ~]# getfacl /mnt/redhat/
getfacl: Removing leading '/' from absolute path names
# file: mnt/redhat
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
group:user1:rwx
mask::rwx
other::r-x
[root@localhost ~]#
现在user1这个组里面的成员对/mnt/redhat目录也有rwx权限了。

下面还有个关于文件ACL功能的问题
刚才我们用user1在/mnt/redhat目录下面创建了一个file的文件夹,说明我们对redhat这个目录有rwx的权限,但是如果在redhat目录下面还有一个文件夹,我们是否对它有rwx的权限呢。试下,
[root@localhost ~]#
[root@localhost ~]# cd /mnt/redhat/
[root@localhost redhat]# ls
file
[root@localhost redhat]# mkdir file1
[root@localhost redhat]# cd
[root@localhost ~]#
[root@localhost ~]# su - user1
[user1@localhost ~]$ cd /mnt/redhat/
[user1@localhost redhat]$ cd file1
[user1@localhost file1]$ touch 1.txt
touch: cannot touch `1.txt': Permission denied
[user1@localhost file1]$
很显然,我们对redhat目录下面的子目录是没有rwx的权限的。也就是说文件的ACL功能只对当前目录生效,并不可以对子目录生效。

看下这条命令的作用,
# setfacl -m d:u:user2:rwx /mnt/redhat/
[root@localhost ~]#
[root@localhost ~]# setfacl -m d:u:user2:rwx /mnt/redhat/
[root@localhost ~]#
这个时候,我们同样给user2一个rwx的权限。
[root@localhost ~]#
[root@localhost ~]# su - user2
[user2@localhost ~]$
[user2@localhost ~]$ cd /mnt/redhat/
[user2@localhost redhat]$
[user2@localhost redhat]$ mkdir file100
mkdir: cannot create directory `file100': Permission denied
[user2@localhost redhat]$
但是现在我们不可以往/mnt/redhat目录里面写入数据,就是因为多了一个d,这个d代表default。

我们现在来看看它的用处是什么。
[root@localhost ~]#
[root@localhost ~]# cd /mnt/redhat/
[root@localhost redhat]# mkdir test
[root@localhost redhat]# ll
total 4
drwxrwxr-x  2 user1 user1 1024 Feb 26 22:44  file
drwxr-xr-x   2 root  root  1024 Feb 26 22:46 file1
drwxrwxr-x+ 2 root  root  1024 Feb 26 22:58 test
[root@localhost redhat]#
现在可以看到,test这个目录权限位上面多了一个加号,看下它的具体权限。

[root@localhost redhat]#
[root@localhost redhat]# getfacl test/
# file: test
# owner: root
# group: root
user::rwx
user:user2:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:user2:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@localhost redhat]#
可以看到,user2这个用户对该目录有rwx的权限。尝试往test目录里面写入数据。

[root@localhost ~]#
[root@localhost ~]# su - user2
[user2@localhost ~]$
[user2@localhost ~]$ cd /mnt/redhat/
[user2@localhost redhat]$
[user2@localhost redhat]$ cd test/
[user2@localhost test]$
[user2@localhost test]$ touch 1.txt
[user2@localhost test]$ ls
1.txt
[user2@localhost test]$

写入成功了,刚才我们只是对/redhat目录做了文件的ACL功能,为什么现在user2对其子目录会有rwx的权限呢,这个就是因为刚才d参数的含义,就是递归的含义,对当前目录无效果,对子目录才有效果。

不管是任何用户向/mnt/redhat目录建立的数据,user2都会继承它们的权限。
这条命令只可以针对目录来做ACL权限。不可以对文件做,因为对文件做没有意义。文件不可能有下一级目录的。
如果文件的拥有人和拥有组和文件的ACL权限发生冲突的时候,以拥有人和拥有组为准,其实文件的ACL功能只对other人有意义。

如何移除文件的ACL权限呢
#setfacl -k /mnt/redhat/
移除文件的默认ACL属性

#setfacl –b /mnt/redhat
移除文件的所有ACL权限

#setfacl –x u:user1 /mnt/redhat
移除user1对文件的ACL权限

当我们在复制文件的时候,如果使用-p的参数,也一样可以将文件的ACL权限给复制过去。
 
至此,有关linux下文件ACL权限的内容就介绍完了,希望对大家有所帮助。

相关文章推荐

Linux账号管理与ACL权限设置.pptx

  • 2014年12月09日 23:33
  • 2.82MB
  • 下载

SSH实现OA系统,基于ACL权限管理

  • 2011年06月13日 18:59
  • 14.72MB
  • 下载

您未被授权查看该页 您不具备查看该目录或页面的权限,因为访问控制列表 (ACL) 对 Web 服务器上的该资源进行了配置

今天 帮朋友网站打不开,帮去看了 下IIS,特把一些常见问题收集起来, -----------------------------------------------------------...

权限管理-ACL权限-简介与开启

  • 2015年10月14日 23:23
  • 945KB
  • 下载

权限管理-ACL权限-简介与开启

  • 2014年08月21日 14:11
  • 422KB
  • 下载

鸟哥私房菜 第十四章 Linux账号管理与ACL权限设置

Linux账号管理与ACL权限设置   Linux的账号与用户组 用户的标识符:UID与GID 每个登录的用户至少都会取得两个ID,一个是用户ID,即UID,一个是用户组ID,...

添加伪静态功能后,acl权限控制失效问题

权限和伪静态,都是用路由前的扩展点,由于伪静态可以分析路由,然后在到权限来判断是否有权限执行路由,所以在配置的时候要伪静态在前,权限在后。 ...

权限管理之基于ACL的实现:自定义JSTL函数实现即时认证

实现即时认证(即只有拥有相应的权限,才能做相应的操作) 在JSP页面上,调用JSTL自定义函数做即时认证,只有通过认证之后,才显示相应的菜单或者功能按钮   自定义JSTL函数的定义和使用过程 第一步...

Linux基础之权限管理ACL

今天我们来了解一下在Linux下怎样实现灵活的权限管理——ACL。下图是本篇文章ACL的主要内容。 ACL是什么 Linux下的默认权限分为三种,即owner(所有者),group(...

Linux 账号管理与 ACL 权限配置

Linux 操作系统上面,关于账号与群组,其实记录的是 UID/GID 的数字而已;使用者的账号/群组与 UID/GID 的对应,参考 /etc/passwd 及 /etc/group 两个文件/et...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RHCE中ACL权限
举报原因:
原因补充:

(最多只允许输入30个字)