Linux使用入门教程之权限管理

我们知道,在Linux操作系统中,传统的权限管理分是以三种身份(属主、属組以及其它人)搭配三种权限(可读、可写以及可执行),并且搭配三种特殊权限(SUID,SGID,SBIT),来实现对系统的安全保护。但是,随着业务和需求的发展和扩大,仅有的这种模式已经不能满足当前复杂环境下的权限控制需求。

比如,当前有一个/data目录,现在需要A組成员能够可写,B組成员仅读,C組成员可读可写可执行,此时怎么办呢?

对于以上的需求,仅仅依托现有的传统权限管理模式,是无法实现的。为了解决该类型的问题,Linux 开发出了一套新的文件系统权限管理方法,叫做 文件访问控制列表 ACL(Access Control Lists)。通过使用 ACL,可以完美解决如上类型的需求问题。

那么下来来看,什么是访问控制列表?

什么是ACL

ACL 是 Access Control List 的缩写,主要目的是针对在传统的三种身份和三种权限之外,提供更加细化的局部权限设定。官方手册来讲,它主要针对用户、用户组、以及掩码方面控制权限。

简单去理解就是,ACL 可以针对单个用户、单个用户组来进行权限细化的控制。
而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。主要包括ReiserFS, EXT2/EXT3/ext4, JFS, XFS等文件系统。

Linux系统对访问控制(ACL)权限的实现

Linux实现Cisco风格ACL之空想

Linux ACL权限规划:getfacl,setfacl使用

文件系统是否支持ACL

需要注意的是,由于ACL是必须依托文件系统的,因此并不是每个文件系统都支持ACL。比如我们 win 平台的 NTFS 文件系统,FAT32 文件系统是不支持ACL的。在Linux平台上,常见的支持ACL的文件爱你系统有如下几类,如 EXT2/EXT3/ext4, JFS, XFS等等。

那么,如何查看你的系统是否支持 ACL 呢?

我们可以通过如下操作来查看:

[root@lh ~]# tune2fs -l /dev/vda1 | grep options

Default mount options:    user_xattr acl

[root@lh ~]# dumpe2fs /dev/vda1 | grep options

dumpe2fs 1.41.12 (17-May-2010)

Default mount options:    user_xattr acl

以上两条命令任选一个即可!

如果在输出的信息,默认挂载选项中有acl这个标识,就代表你的文件系统是支持的。

假设,你的文件系统不支持或者支持但是并没有显示这个acl标识怎么办呢?针对此种情况,我们可以通过使用tune2fs来为他添加,或者mount去添加都可以。

[root@lh ~]# tune2fs -o acl /dev/vda1

tune2fs 1.41.12 (17-May-2010)

ACL相关命令详解

介绍完了 ACL 是什么,也说了如何使文件系统支持 ACL 的功能,下面就来说说如何操作。

ACL的相关的操作主要有 3 个命令,分别是 getface、setfacl和chacl,常用的主要是getfacl 和 setfacl。

getfacl    查看文件/目录的ACL设定内容

setfacl    设置文件/目录的ACL内容

chacl      查看和更改文件/目录的ACL内容,由于日常有setfacl,因此chacl从来不用,故本文不作介绍

getfacl 一般都是直接在后面跟你所要查看的文件或者目录的路径,因此掌握如何查看即可。操作如下:

[root@lh ~]# getfacl /tmp

getfacl: Removing leading '/' from absolute path names

# file: tmp

# owner: root

# group: root

# flags: --t

user::rwx

group::rwx

other::rwx

[root@lh ~]# getfacl /etc/passwd

getfacl: Removing leading '/' from absolute path names

# file: etc/passwd

# owner: root

# group: root

user::rw-

group::r--

other::r--

setfacl 是使用最多的,基本 ACL 方面的操作都是它,因此它的选项也是蛮多的。首先来setfacl的使用语法:

setfacl [-bkRd] [{-m|-x} acl参数] 文件/目录路径

选项介绍:

-b :删除所有的 acl 参数

-k :删除预设的 acl 参数

-R :递归设置后面的 acl 参数

-d :设置预设的 acl 参数(只对目录有效,在该目录新建的文件也会使用此ACL默认值)

-m :设置(修改)后面 acl 参数

-x :删除后面指定的 acl 参数

ACL 参数主要由3部分组成,组成结构如下:

三种身份:对应身份名:三种权限

[u|g|o]:[用户名|用户组名]:[rwx]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17791.html