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

一 ACL 权限简介   Linux 下用户对文件的操作权限有 r-读, w-写, x-可执行三种,而对linux 下的文件而言,用户身份分为:所有者, 所属组, 其它人, 且文件的所有者,所属...
  • zgf19930504
  • zgf19930504
  • 2016年07月30日 10:50
  • 1012

acl权限控制详解

ACL详解   Linux权限非常的一重要,正常情况下一个文件或目录有三种角色,分别为:目录或文件拥有者(User)、所属群组(Group)、其他用户(Other),每个角色对应:读、写、...
  • baidu_28367801
  • baidu_28367801
  • 2015年06月24日 10:44
  • 2458

Linux中ACL权限设置

ACL权限设置 简介 ACL的功能是应对复杂用户环境的权限问题。 系统是否支持ACL是与文件系统有关的,在CentOS7之前的系统版本中用户自己手动创建的分区默认是不支持ACL的,...
  • a5548743
  • a5548743
  • 2017年05月30日 12:02
  • 648

linux之ACL权限学习笔记

在linux中我们接触到的常见的权限有三种身份(owner,group,others)搭配三种权限(r,w,x,分别可用数字4 2 1表示)。       现在描述一个场景:       讲授linu...
  • jiaobuchong
  • jiaobuchong
  • 2015年02月28日 21:42
  • 674

权限管理 访问控制模型ACL和RBAC

1.ACL  ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那些操作。当系统试图访问这项资源时,会首先...
  • aoshilang2249
  • aoshilang2249
  • 2017年06月07日 10:42
  • 678

acl权限和设置方法

ACL主要目的是提供传统的权限之外的具体权限的设置。ACL可以针对单一用户,单一文件或目录来进行r,w,x的权限设置。对于需要特殊权限的使用状况非常有帮助。      ACL主要可以针对以下几个项目来...
  • Erica_1230
  • Erica_1230
  • 2016年03月27日 10:31
  • 2238

Linux学习记录--ACL权限控制

ACL权限控制 ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定的权限 比如:某一目录权...
  • tiankefeng19850520
  • tiankefeng19850520
  • 2014年03月10日 16:06
  • 1238

ACL最大有效权限与删除-linux34

ACL最大有效权限与删除上节我们学习了ALC权限的查看与设定,这节课我们继续学习ACL的mask权限和删除命令。 一、最大有效权限mask 首先我们用getfacl命令查看上节课我们学习时建立的p...
  • xinyuezh
  • xinyuezh
  • 2015年12月30日 08:04
  • 1262

php zend_acl权限管理

1. 误区 许多人认为ACL的“resource” ,“privilege” 和controller,action相似。这是不正确的。 在Zend中resource可以是任何事物:一个controll...
  • u014609625
  • u014609625
  • 2015年01月27日 14:35
  • 490

「学习笔记——Linux」Linux账号管理与ACL权限设定

Linux账号管理与ACL权限设定 Table of Contents 1 Linux的账号与群组 1.1 UID和GID1.2 /etc/passwd结构1.3 /etc/shadow结构1...
  • on_1y
  • on_1y
  • 2013年02月16日 18:10
  • 1938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RHCE中ACL权限
举报原因:
原因补充:

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