在 linux 下,对一个文件(或资源)可以进行操作的对象分为3类:
file owner 文件的拥有组
group 组,不一样是文件拥有组所在的组
other 其他用户
而对每一类别又分别定义了 read , write , execute/search 权限。
标准的 linux 文件权限可以满足绝大多数情况的要求,但它也有局限性。限制访问文件的权限仅限授予文件所有者、单组成员或其他任何人。某些用户可能不适合成为文件所属组的成员,授予所有人权限则更不是理想的操作。如下示例:
[student@server0 ~]$ ll test.txt
-rw-rw-r--. 1 student student 0 Dec 22 14:20 test.txt
这里说明了对于 test.txt 这个文件 student 用户拥有 read & write 权限, 属于 student 组的用户拥有 read&write 权限,其它任何用户对于这个文件只有 read 权限。
如果现在希望 nobody 这个用户也可以对 test.txt 文件进行读写操作,那么有以下几种方法:
1、给文件的 other 类别增加读写权限。
2、将 nobody 用户加入到 student 组。
3、设置 sudo ,是 nobody 能够以 student 的身份对 test.txt 进行操作。
第一种方法给了所有用户读写权限,有安全隐患。
第二种方法给了 nobody 用户过多的权限,它可以读写其他属于 student 组的文件。
第三种方法虽然可以达到只限定 nobody 用户一人拥有对 test.txt 文件的读写权限,但是需要对 sudoers 文件进行严格的格式控制,而且当文件数量和用户很多的时候,这种方法就相当不灵活了。
ACL (Access Control List 访问控制列表) 允许向文件分别细化权限。除标准的文件所有者、组所有者和其他用户的文件权限之外,还可向指定用户或指定组,以及由 UID 或 GUID 确定的用户和组授予权限。
文件所有者可以在单个文件或目录上设置 ACL 。 XFS 文件系统内置有 ACL 支持。在红帽企业 Linux 7 上创建的 ext4 文件系统默认启用了 acl 选项,而红帽企业 Linux 早期版本中创建的 ext4 文件系统则可能需要通过挂载请求包含 acl 选项,或者在超级块中设置此选项。
使用 getfacl 命令查看文件上的 ACL 权限。如下:
[student@server0 ~]$ getfacl test_acl.txt
# file: test_acl.txt
# owner: student
# group: student
user::rwx
user:nobody:rw-
user:gino:rwx #effective:rw-
group::rw-
group:nobody:rw-
mask::rw-
other::---
带 # 号的前三行为注释,指明文件名、所有者、所有组 (如果存在任何其它文件标志,如 setuid , setgid 。则会出现第四行注释来显示所设置的标志)
user::rwx 文件所有者权限。 student 用户拥有 read&write&execute 权限
user:nobody:rw- 指定用户权限。 与此文件相关联的每个指定用户均有一个条目。 nobody 用户只有 read&write 权限
user:gino:rwx 指定用户权限。 gino 指定了 read&write&execute ,但是其实只有 read&write 权限
group::rw- 组所有权限。 student 组具有 read&write 权限
group:nobody:rw- 指定组权限。 与此文件相关联的每个指定组均有一个条目。 nobody 组具有 read&write 权限
mask::rw- 掩码条目。显示可能为所有指定用户、组所有者和指定组提供的最大权限。(gino 用户无法执行此文件,即时条目已设置执行权限)
other::--- 其它条目。所有其它的 UID 和 GID 均无任何权限
使用 getfacl 命令查看目录的 ACL 权限。如下:
[student@server0 steamies]$ getfacl .
# file: .
# owner: root
# group: controller
# flags: -s-
user::rwx
user:james:---
group::rwx
group:sodor:rwx
mask::rwx
other::---
default:user::rwx
default:user:james:---
default:group::rwx
default:group:sodor:rwx
default:mask::rwx
default:other::---
带 # 号的前四行为注释,指明文件名、所有者、所有组、setgid
user::rwx 目录拥有者权限, read&write&execute
user:james:--- james 用户,没有任何权限
group::rwx 组所有权限。 read&write&execute
group:sodor:rwx 指定组权限。 read&write&execute
mask::rwx 掩码条目。
other::--- 其它条目。
default:user::rwx 默认用户条目。默认文件所有者 ACL 权限。文件所有者将获得 read&write&execute 权限,并在新子目录上执行操作。
default:user:james:--- 默认用户条目。 james 用户始终默认设置为没有任何权限
default:group::rwx 默认组条目。
default:group:sodor:rwx 默认指定组条目。
default:mask::rwx 默认 ACL 掩码条目。
default:other::--- 默认其他条目。
ACL 相关命令
设置文件或者目录的 ACL:http://blog.csdn.net/u011641885/article/details/50385363
获取文件或者目录的ACL:http://blog.csdn.net/u011641885/article/details/50385579
更改文件或者目录的ACL:http://blog.csdn.net/u011641885/article/details/50385612