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

Linux系统中可以针对组、用户、其他人设置不同的读写执行权限,但是还不够精准,若想给某个特定的用户设置一个独特的权限呢?而这个用户又不是该文件或目录的属组或属组,怎么破?

针对特定的某个用户设置权限的方法如下:

[[email protected] ~]# dmesg | grep -i acl     #查看系统是否可以设置ACL,若可以查到下面标红的字样,则代表没问题。
[    1.173259] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +‘ACL‘ +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    2.487295] SGI XFS with ‘ACL‘s, security attributes, no debug enabled

1、setfacl——设置ACL规则(针对单一用户或组设置)

setfacl的常用选项如下:

  • -m:设置后续的ACL参数给文件使用,不可与-x一起使用;
  • -x:删除后续的ACL参数,不可与-m一起使用;
  • -b:删除所有的ACL设置参数;
  • -k:删除默认的ACL参数;
  • -R:递归设置ACL,就是包括子目录都会被应用;
  • -d:设置默认ACL参数,只对目录有效,在该目录新建的数据会引用此默认值;

设置举例:

[[email protected] ~]# touch acl_test1      #创建一个测试文件
[[email protected] ~]# setfacl -m u:lv:rw acl_test1      #单独赋予用户“lv”读写权限
[[email protected] ~]# ll acl_test1 #查看文件属性,在权限栏最后多了一个“+”,这就是刚设置的ACL
-rw-rw-r--+ 1 root root 0 9月   3 08:45 acl_test1
[[email protected] ~]# setfacl -m u::rwx acl_test1     #若u后面不写用户,则表示设置该文件的属主权限
[[email protected] ~]# ll acl_test1       #会发现属主的权限变成了rwx。
-rwxrw-r--+ 1 root root 0 9月   3 08:45 acl_test1

2、getfacl——查看设置的ACL规则

选项和setfacl基本相同,可以通过man手册来查看具体的使用选项,最主要还是用来查看我们使用setfacl设置的ACL规则;

使用举例:

[[email protected] ~]# getfacl acl_test1      #使用getfacl查看设置的ACL权限
# file: acl_test1       #文件名
# owner: root          #文件属主
# group: root            #文件属组
user::rwx              #属主的权限
user:lv:rw-              #用户“lv”的权限
group::r--               #文件属组的权限
mask::rw-               #此文件默认的有效权限
#用户或群组所设置的权限必须要存在于mask的权限设置范围内才会生效
other::r--                 #其他任何人的权限

[[email protected] ~]# ll acl_test1     #使用“ll”命令查看后,进行比较
-rwxrw-r--+ 1 root root 0 9月   3 08:45 acl_test1

3、setfacl和getfacl综合使用举例:

#1、针对有效权限mask的设置方式
[[email protected] ~]# setfacl -m m:r acl_test1     #设置该文件的权限仅有读权限(r)。
[[email protected] ~]# getfacl acl_test1     #查看
# file: acl_test1
# owner: root
# group: root
user::rwx
user:lv:rw-         #effective:r--    #注释为有效权限只有r(读权限),哪怕用户后面有w(写权限),也不生效
group::r--
mask::r--   #是因为这里,这里有并且用户也具有的权限,才是有效权限,如这里的“r”权限。
other::r--
#2、针对特定群组的方式设置权限(删除了原本的文件,又新建了一个acl_test1):
[[email protected] ~]# setfacl -m g:mygroup:rx acl_test1     #设置mygroup组有rx权限
[[email protected] ~]# getfacl acl_test1     #查看
# file: acl_test1
# owner: root
# group: root
user::rw-
group::r--
group:mygroup:r-x                     #这里就是新设置的权限
mask::r-x
other::r--
#3、让myuser1在/usr/local下面一直具有rx的默认权限
[[email protected] ~]# setfacl -m d:u:myuser1:rx /usr/local/     #设置权限
[[email protected]st ~]# getfacl /usr/local/       #查看
getfacl: Removing leading ‘/‘ from absolute path names
# file: usr/local/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:myuser1:r-x               #就是这行咯
default:group::r-x
default:mask::r-x
default:other::r-x
#创建一个目录,并查看是否继承了默认权限
[[email protected] ~]# cd /usr/local/
[[email protected] local]# mkdir test
[[email protected] local]# ls -ld test/      #有“+”的权限,说明继承默认权限了
drwxr-xr-x+ 2 root root 6 9月   3 09:51 test/
[[email protected] local]# getfacl test      #使用getfacl查看
# file: test
# owner: root
# group: root
user::rwx
user:myuser1:r-x
group::r-x
mask::r-x
other::r-x
default:user::rwx
default:user:myuser1:r-x              #就是这行咯
default:group::r-x
default:mask::r-x
default:other::r-x
#以下为取消用户的某些ACL规则
[[email protected] local]# setfacl -x u:myuser1 /usr/local/     #取消myuser1用户对该目录的ACL规则
[[email protected] local]# setfacl -x d:u:myuser1 /usr/local/    #取消递归的ACL规则
[[email protected] local]# setfacl -m u:myuser1:- /usr/local    #使myuser1用户无法使用该目录,在权限字段使用“-”表示即可。

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14154700/2434932

时间: 2024-07-31 17:11:26

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

Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

博文说明[前言]: 本文将通过个人口吻介绍Linux字符集和系统语言设置,包括LANG,locale,LC_ALL,POSIX等命令及参数详解的相关知识,在目前时间点[2017年6月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献引用链接: 1.http://blog.csdn.net/z4213489/article/details/7937894[好文,必看]

linux route命令的使用详解

linux route命令的使用详解 --http://www.cnblogs.com/snake-hand/p/3143041.html 每天一个linux命令(53):route命令 --http://www.cnblogs.com/peida/archive/2013/03/05/2943698.html route命令用于显示和操作IP路由表.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现.在Linux系统中,设置路由通常是 为了解决以下问

Linux Crontab [定时任务] 命令与参数详解

crontab命令常用于Unix和Linux系统中,用于设置周期性被执行的指令. 该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供读取和执行. 通常,crontab储存的指令被守护进程激活,crond服务常常在后台运行. 通过设定的时间来检查是否有作业需要执行,这类作业一般称为:cron jobs. crontab 文件 crontab文件包含送交cron守护进程的一系列作业和指令. 每个用户可以拥有自己的crontab文件,同时操作系统保存一个针对整个系统的crontab文

Linux下高并发socket最大连接数所受的各种限制(详解)

1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄).可使用ulimit命令查看系统允许当前用户进程打开的文件数限制: [[email protected] ~]$ ulimit -n1024 这表示当前用户的每个进程最多允许同时打开1024个文件,这1024个文件中

Linux下FFMPEG--H264--编码&&解码的C实现与相关原理详解

FFMPEG是很强大的一套视频音频处理库,不过,强大的功能一般免不了复杂的实现,或者更加现实地说,"麻烦"的部署和使用流程 关于"FFMPEG怎么部署"这事就放在另一篇文章啦,下面入正题.. 编码encoder模块和解码decoder模块都有init初始化方法和资源free方法 init初始化方法主要是进行ffmpeg所必需的编解码器的初始化和部分功能方法的参数配置,而free资源释放方法则是相应地进行必要的回收 Encoder模块的实现和细节分析 #include

【转】Linux命令工具 top详解

Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制

Linux命令工具 top详解

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. 常在linux

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

linux cat命令使用方法详解--把档案串连接后传到基本输出

linux cat命令使用方法详解--把档案串连接后传到基本输出 日期:2011-12-05 点击:2324 来源: 未知 分享至: 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)参数:-n 或 --number 由 1 开始对所有输出的行数编号-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号-s 或 --squeeze-b