配置 Linux 的访问控制列表(ACL)
使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。
Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的"other"或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。
ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。如果你不确定你的文件系统是否支持ACL,请参考文档。
在文件系统使ACL生效首先,我们需要安装工具来管理ACL。
Ubuntu/Debian 中:
$ sudo apt-get install acl
CentOS/Fedora/RHEL 中:
# yum -y install acl
Archlinux 中:
# pacman -S acl
出于演示目的,我将使用ubuntu server版本,其他版本类似。
安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。
首先,我们检查ACL功能是否已经开启。
$ mount
你可以注意到,我的root分区中ACL属性已经开启。万一你没有开启,你需要编辑/etc/fstab文件,在你需要开启ACL的分区的选项前增加acl标记。
现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据),如果你对其它分区开启ACL,你必须也重新挂载它。
$ sudo mount / -o remount
干的不错!现在我们已经在我们的系统中开启ACL,让我们开始和它一起工作。
ACL 范例基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。让我们来做一些测试。
我创建一个目录/shared给一个假设的用户,名叫freeuser
$ ls -lh /
我想要分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。
首先,为用户test设置ACL:
$ sudo setfacl -m u:test:rwx /shared
现在用户test可以随意创建文件夹,文件和访问在/shared目录下的任何地方。
现在我们增加只读权限给用户test2:
$ sudo setfacl -m u:test2:rx /shared
注意test2读取目录需要执行(x)权限
让我来解释下setfacl命令格式:
你可以注意到,正常权限后多一个+标记。这表示ACL已经设置成功。要具体看一下ACL,我们需要运行:
$ sudo getfacl /shared
最后,如果你需要移除ACL:
$ sudo setfacl -x u:test /shared
如果你想要立即擦除所有ACL条目:
$ sudo setfacl -b /shared
最后,在设置了ACL文件或目录工作时,cp和mv命令会改变这些设置。在cp的情况下,需要添加“p”参数来复制ACL设置。如果这不可行,它将会展示一个警告。mv默认移动ACL设置,如果这也不可行,它也会向您展示一个警告。
使用ACL让在你想要分享的文件上拥有更多的能力和控制,特别是在NFS/Samba服务。此外,如果你的主管共享主机,这个工具是必备的。
原文发布时间:2014-10-07
本文来自云栖合作伙伴“linux中国”
9.9 Linux ACL权限设置(setfacl和getfacl) 通过上一节的学习,我们知道了什么是 ACL 权限,也了解了如何配置 Linux 系统使其开启 ACL 权限,本节来学习 ACL 设定文件访问权限的具体方法。
ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定的权限 设置ACL权限:setfacl查看ACL权限:getfacl 比如:某一目录权限为 drwx------ 2 root root 4096 03-10 13:51.
相关文章
- Linux下使用acme.sh 配置https 免费证书
- 【Linux】linux之如何清理磁盘空间
- 查看Linux版本信息
- Linux下更新firefox版本
- Linux好用的工具
- Linux修改用户组
- chkconfig用法 LINUX
- linux配置nginx
- WarningTemplate OS Linux: /etc/passwd has been changed on {HOST.NAME}{monitor:vfs.file.cksum[/etc/passwd].diff(0)}>0Unknown
- Linux firewall防火墙详解(二)——firewall配置
- linux fedora35中配置软件存储库:添加、启用、禁用
- linux shell参数传递、获取方式
- Linux 用户管理命令id、su
- Linux centos7安装Git及 Jenkins配置Git
- [Linux] IP 地址配置, 网络地址配置文件
- 【Linux安装Redis】Linux安装与配置Redis
- 【Linux 内核】调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )
- 【Linux 内核】编译 Linux 内核 ③ ( 安装 ncurses | 安装 flex | 安装 bison | 打开 Linux 内核编译配置菜单 )
- wxWidgets笔记_1_linux环境下wxwidgets的安装与配置
- L56.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- swapoff和sync
- L51.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- mkfs和dumpe2fs
- L2.linux命令每日一练 -- 第一章 Linux命令行简介
- 【Linux之Shell脚本实战】Centos最小化安装环境配置脚本
- 【Linux网络配置实战】服务器Network静态路由配置
- Linux基础命令-alias设置别名
- Linux中环境变量 export source ~/.bashrc Linux中filezilla下载ftp文件
- 02 从头开始atac项目 ubuntu20 install r4.2 Linux系统环境配置 服务器版本的rstudio r install in linux /ubuntu/centos
- kali linux 设置不休眠
- CentOS 6.3 源码安装LAMP(Linux+Apache+Mysql+Php)环境
- Linux【实操篇】—— 磁盘分区、网络配置
- GitlabCICD技术----卸载Linux虚拟机类型的gitlab-runner
- Linux系统安全基线配置要求评估检测示例表
- 2022国赛21:linux dns主从及rndc配置
- Linux用户密码管理