Linux下 ACL详解

Posted wenrulaogou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下 ACL详解相关的知识,希望对你有一定的参考价值。

1. 什么是ACL

ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置

ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。

如,某一个文件,不让单一的某个用户访问。或者只让某个用户访问

2. ACL的使用

  ACL使用两个命令来对其进行操作
    getfacl:查看某个文件/目录的ACL设置
    setfacl:设置某个文件/目录的ACL设置

2.1  getfacl的使用

getfacl:查看某个文件/目录的ACL设置

getfacl + 文件或目录的路径

2.2 setfacl的使用

setfacl:设置某个文件/目录的ACL设置

  -m:设置后续acl参数 (设定额外的ACL)
  -x:删除后续acl参数  (删除额外的ACL)
  -b:删除全部的acl参数
  -k:删除默认的acl参数
  -R:递归设置acl,包括子目录
  -d:设置默认acl

3. 为文件配置ACL

问题:

oldboy.txt 文件 希望oldboy用户对这个文件有读写权限  

www用户只能进行读取   其他用户没有权限

oldboy.txt

3.1 创建环境

首先创建三个测试用户
[[email protected]-50 oldboy]# useradd oldboy
[[email protected] oldboy]# useradd www
[[email protected] oldboy]# useradd LH  
[[email protected] oldboy]# touch oldboy.txt 创建测试文件
[[email protected] oldboy]# ll oldboy.txt         查看默认权限
-rw-r--r-- 1 root root 0 Aug  8 19:42 oldboy.txt
[[email protected]-50 oldboy]# getfacl oldboy.txt    查看acl权限
# file: oldboy.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

3.2 配置 其他用户没有权限

chmod 640 oldboy.txt 达成其他用户没有权限 LH此处代表的是其他用户  所以用LH用户测试
[[email protected] oldboy]# chmod 640 oldboy.txt   先将权限改为 其他用户都没有权限
[[email protected] oldboy]# ll oldboy.txt          检查  已修改
-rw-r----- 1 root root 0 Aug  8 19:42 oldboy.txt
登录LH用户测试
[[email protected]-50 ~]$ ll /oldboy/                  LH用户看不到oldboy.txt这个文件
total 20
-rw-r--r--  1 root   root     66 Aug  8 17:09 ett.txt
-rw-r-----. 1 root   root    292 Aug  6 13:51 id.txt
-rw-r--r--  1 root   root     27 Aug  6 13:37 info.txt
-rw-r--r--  1 root   root     24 Aug  6 12:51 nginx.log
-rw-r-----  1 root   root      0 Aug  8 19:42 oldboy.txt
d-wxr-xr-x  2 oldboy oldboy 4096 Aug  7 13:01 test

3.3 配置oldboy用户

setfacl -m u:oldboy:rw oldboy.txt
-m 表示 配置额外的ACL  
u:oldboy 表示为oldboy用户配置
:rw 表示配置rw(读写权限)
-m u:oldboy:rw  所以连起来 此处表示 额外为oldboy用户赋予rw权限  配置完后可以getfacl查看
退出到root用户 修改oldboy的权限
[[email protected]-50 oldboy]# setfacl -m u:oldboy:rw oldboy.txt
[[email protected] oldboy]# getfacl oldboy.txt 
# file: oldboy.txt
# owner: root
# group: root
user::rw-
user:oldboy:rw-
group::r--
mask::rw-
other::---
进入到oldboy用户测试  
[[email protected]-50 oldboy]$ vim oldboy.txt   可以读取 可以修改

3.4 配置www用户

继续 退出到root用户 修改www的权限
[[email protected]-50 oldboy]# setfacl -m u:www:r oldboy.txt  修改www用户的权限 使其可读
[[email protected] oldboy]# getfacl oldboy.txt 
# file: oldboy.txt
# owner: root
# group: root
user::rw-
user:oldboy:rw-
user:www:r--
group::r--
mask::rw-
other::---
进入到www权限
[[email protected]-50 ~]$ vim /oldboy/oldboy.txt 使用vim
进入编辑模式 底部会显示红字Warning: Changing a readonly file    (要修改一个只读文件)
到此处全部完成

 

以上是关于Linux下 ACL详解的主要内容,如果未能解决你的问题,请参考以下文章

linux下DNS服务器视图view及日志系统详解

ACL权限详解

ACL扩展访问控制列表详解

Linux的ACL规则设置——setfacl及getfacl命令的使用详解

Linux setfacl命令详解

Linux学习—ACL