发布时间:2014-09-05 17:07:20作者:知识屋
Linux中的ACL功能是体现在对文件和目录的权限上,而且对于权限设置的精细度上有了非常大的提高;比如一个文件或者目录的所有者和所有者都是tangsir,权限为755,那么也就是说root用户和tangsir可以写入外,其余的人是没有权限的。但是如果我们配置了ACL功能的话,我们完全可以使另一个用户对此文件或者目录有写入的权限。
如何使文件或者目录具有ACL功能呢?我们可以通过配置分区来支持ACL功能。首先,我们要明白,是不是所有的分区都支持ACL功能呢?在RHEL5.X版本中,安装操作系统时所建立的分区是支持ACl功能的,安装操作系统任务完成后所建立的分区默认是不支持ACL功能的,那么如何实现这种分区支持ACL功能呢?我们可以使用三种方式来实现操作系统安装成功后所建立的分区支持ACL功能;
(1) 使用mount命令,此命令使一个分区临时生效,重启后ACL会失效。
mount –o remount,acl 分区
mount –o acl 分区 挂载点
以上两种语法的区别:上面的表示的是此分区已经建立且在使用了或者说已经被挂载了,但是还不支持ACL功能,我们通过此命令来实现不影响分区使用的情况下来支持ACL功能;下面表示的是在挂载分区的同时使其具备ACL功能。
例子:第一种情况:
[root@tangsir ~]# mount -o remount,acl /dev/sdb1
第二种情况:
[root@tangsir ~]# mount -o acl /dev/sdb2 /test2
用mount命令来查看信息:
[root@tangsir ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /test1 type ext3 (rw,acl)
/dev/sdb2 on /test2 type ext3 (rw,acl)
从挂载的信息中,我们得知了此分区支持ACL功能
(2) 使用tune2fs命令,此命令可以使分区永久支持ACL功能
例子:
[root@tangsir ~]# tune2fs -o acl /dev/sdb5
使用-l选项来查看分区配置的情况:
[root@tangsir ~]# tune2fs -l /dev/sdb5
tune2fs 1.39 (29-May-2006)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: 7e4472be-3a69-4060-b781-4184149d06ad
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal resize_inode dir_index filetype sparse_super large_file
Default mount options: acl è说明了该分区支持ACL功能
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
注意:使用tune2fs命令配置分区,用mount命令是查看不到的,只有通过修改/etc/fstab来支持分区ACL功能后才可以看到
(3) 通过修改/etc/fstab来实现分区支持ACl 功能
[root@tangsir ~]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
/dev/sdb5 /test3 ext3 defaults,acl 0 0
为了使配置生效要重启计算机或者使用mount –o remount PT 命令。
分区支持ACL功能后,我们要对文件或者目录具体设置ACL功能以及查看具体的ACL配置,这里要使用两个命令字:setfacel and getfacl 。为了更好的理解命令的用法和设置,我们通过具体的实例来分析。首先,我们来看看setfacl命令常用的选项;
-m:修改文件或目录的ACL rules
-x:删除文件或者目录指定的ACLrules
-d:指定文件或者目录默认的ACLrules
-k:删除文件或者目录默认的ACL rules
-b:删除文件或者目录所有的ACL rules
-R:递归渲染,对具体目录下所有的文件和目录全部渲染
具体实例:目录系统中的/dev/sdb1分区支持ACL功能,分区的挂载目录是/test1,目录中包含了h3cte和ccie两个目录,我们使用户tangsir对目录ccie有可读,可写,可执行的权限,并且配置用户tangsir对目录ccie有默认的可读,可写,可执行权限,也就是说用户tangsir在目录ccie中建立的目录或者文件时会自动继承ACL权限;
信息查看:
[root@tangsir ~]# df -H
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 21G 4.9G 15G 26% /
/dev/sda1 104M 12M 87M 12% /boot
tmpfs 246M 0 246M 0% /dev/shm
/dev/sdb1 2.5G 71M 2.3G 4% /test1
/dev/sdb2 1.7G 37M 1.6G 3% /test2
[root@tangsir ~]# ll /test1
总计32
drwxr-xr-x 2 root root 4096 07-29 11:27 ccie
drwxr-xr-x 2 root root 4096 07-29 11:27 h3cte
规则配置:
[root@tangsir test1]# setfacl -m u:tangsir:rwx ccie/
命令分析:-m 表示修改文件或者目录的ACL rules;u表示针对用户;tangsir是用户名;rwx是对目录的权限,字母和数字都可以表示;ccie/是具体的目录。
查看并用户测试:
[root@tangsir test1]# ll
总计32
drwxrwxr-x+ 2 root root 4096 07-29 11:27 ccie 目录权限的最后一位是一个“+”表示目录配置了ACL功能
drwxr-xr-x 2 root root 4096 07-29 11:27 h3cte
切换用户tangsir:
[root@tangsir ~]# su - tangsir
[tangsir@tangsir ~]$ mkdir /test1/ccie/ccm --可以创建目录,成功!!
[tangsir@tangsir ~]$ ll /test1/ccie/
总计8
drwxrwxr-x 2 tangsir tangsir 4096 07-29 11:38 ccm -- one
用户的默认的ACL配置:
[root@tangsir test1]# setfacl -m d:u:tangsir:rwx ccie/
创建目录或者文件并查看:
[root@tangsir test1]# su - tangsir
[tangsir@tangsir ~]$ mkdir /test1/ccie/ccm1
[tangsir@tangsir ~]$ ll /test1/ccie/
总计16
drwxrwxr-x 2 tangsir tangsir 4096 07-29 11:38 ccm
drwxrwxr-x+ 2 tangsir tangsir 4096 07-29 11:43 ccm1 ---two(自动继承了ACL功能)
注意比较one ,two ,看出两者的区别~~
具体实例:具体实例:目录系统中的/dev/sdb2分区支持ACL功能,分区的挂载目录是/test2,目录中包含了mvp和cca两个目录,建立用户组zu1,zu2,建立用户liugong ,xugong.
liugong属于组zu1,xugong属于zu2.配置zu1对mvp有执行的权限,zu2对cca有所有的权限。并实现zu2对cca目录有默认的ACl功能。(可读,可写,可执行)
组,用户的建立:
[root@tangsir ~]# groupadd zu1
[root@tangsir ~]# groupadd zu2
[root@tangsir ~]# usermod -G zu1 liugong
[root@tangsir ~]# gpasswd -a xugong zu2
正在将用户“xugong”加入到“zu2”组中
[root@tangsir ~]# ll /test2/
总计32
drwxr-xr-x 2 root root 4096 07-29 11:52 cca
drwx------ 2 root root 16384 07-29 10:33 lost+found
drwxr-xr-x 2 root root 4096 07-29 11:52 mvp
配置zu1对mvp有执行的权限:
[root@tangsir test2]# setfacl -m g:zu1:x mvp/
zu2对cca有所有的权限:
[root@tangsir test2]# setfacl -m g:zu2:7 cca/
root@tangsir test2]# setfacl -m d:g:zu2:7 cca/
ACL功能查看:
[root@tangsir test2]# ll
总计32
drwxrwxr-x+ 2 root root 4096 07-29 11:52 cca
drwx------ 2 root root 16384 07-29 10:33 lost+found
drwxr-xr-x+ 2 root root 4096 07-29 11:52 mvp
用户测试:
[root@tangsir ~]# su - liugong
[liugong@tangsir ~]$ cd /test2/mvp/
[liugong@tangsir mvp]$ touch jilu.txt
touch: 无法触碰 “jilu.txt”: 权限不够
liugong对mvp目录只有执行权限,效果正确~
[xugong@tangsir ~]$ cd /test2/cca/
[xugong@tangsir cca]$ mkdir keke && touch diligence
[xugong@tangsir cca]$ ll
总计12
-rw-rw-r--+ 1 xugong xugong 0 07-29 12:14 diligence
drwxrwxr-x+ 2 xugong xugong 4096 07-29 12:14 keke
getfacl 命令来查看文件或者目录的ACL;
[root@tangsir test1]# ll
总计32
drwxrwxr-x+ 4 root root 4096 07-29 11:43 ccie
drwxr-xr-x 2 root root 4096 07-29 11:27 h3cte
drwx------ 2 root root 16384 07-29 10:31 lost+found
[root@tangsir test1]# getfacl ccie
# file: ccie 文件或者目录的名称
# owner: root 文件或者目录的属主
# group: root 文件或者目录属组
user::rwx 属主的权限
user:tangsir:rwx 用户tangsir的权限
group::r-x 属组的权限
mask::rwx 文件或者目录最大权限
other::r-x 其他人的权限
default:user::rwx
default:user:tangsir:rwx 用户tangsir对目录或者文件的默认权限
default:group::r-x
default:mask::rwx
文件或者目录ACL的删除:
[root@tangsir test1]# getfacl ccie
# file: ccie
# owner: root
# group: root
user::rwx
user:tangsir:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:tangsir:rwx
default:group::r-x
default:mask::rwx
[root@tangsir test1]# setfacl -x u:tangsir ccie—删除指定的ACL
[root@tangsir test1]# setfacl -b ccie --删除全部的ACl
[root@tangsir test1]# getfacl ccie
# file: ccie
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
注意:文件或者目录配置了ACL以后,由于系统管理的需要要将配置了ACL的目录进行复制操作,那么cp命令后必要加上“-P”选项,如果是剪切的话,就不需要了,因为默认mv命令会保留原ACL。当然前提必须是目标目录必须也要支持ACL功能才行~~
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能