如何在Linux下设置访问控制列表(ACL)来控制用户的权限?
有了带门禁的Liunx,工作变得轻而易举。它可以定义任何用户、组和其他人的权限。无论是在用户不多的桌面计算机或虚拟Linux实例上,还是当用户不愿意在他们之间共享文件时,这种工作都非常棒。但是,如果您在一个大型组织中,并且为不同的用户运行NFS或Samba服务,那么您将需要灵活地选择和设置许多复杂的配置和权限,以满足组织的不同需求。
Linux(以及其他兼容POSIX的操作系统,如Unix)有一种称为访问控制列表(ACL)的权限控制方法,这是一种通用的范例,而不是权限分配。例如,默认情况下,您需要确认三个权限组:所有者、组和其他。使用ACL,您可以向其他用户或组添加权限,而不仅仅是“其他”或所有者不存在的组。您可以允许指定的用户A、B和C拥有写权限,而不是授予他们整个组写权限。
ACL支持各种Linux文件系统,包括ext2、ext3、ext4、XFS、Btfrs等。如果您不确定您的文件系统是否支持ACL,请参考文档。
使ACL在文件系统中有效
首先,我们需要安装工具来管理ACL。
在Ubuntu/Debian中:
$ sudo apt-get安装acl
在CentOS/Fedora/RHEL:
# yum -y安装acl
在Archlinux中:
# pacman -S acl
出于演示目的,我将使用ubuntu服务器版本,其他版本也差不多。
安装ACL后,我们需要激活我们的磁盘分区的ACL功能,以便我们可以使用它。
首先,我们检查ACL功能是否已经打开。
$ mount
您可以注意到,我的根分区中的ACL属性已经打开。万一不打开,需要编辑/etc/fstab文件,在打开acl分区的选项前加上ACL标记。
现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据)。如果您为其他分区打开ACL,您也必须重新挂载它。
$ sudo mount / -o重新装载
干得好!现在我们已经在系统中打开了ACL,让我们开始使用它。
ACL示例
基本acl由两个命令管理:setfacl用于添加或修改acl,getfacl用于显示分配的ACL。让我们做一些测试。
我为一个名为freeuser的假想用户创建了一个目录/shared。
$ ls -lh /
我想与另外两个用户test和test2共享这个目录,一个用户拥有完全权限,另一个用户拥有读取权限。
首先,为用户测试设置ACL:
$ sudo setfacl-m u:test:rwx/shared
现在user test可以在/shared目录下任意创建文件夹、文件和访问任何地方。
现在,我们向用户test2添加只读权限:
$ sudo setfacl-m u:test 2:rx/shared
请注意,test2需要execute (x)权限来读取目录。
让我解释一下setfacl命令的格式:
-m表示修改ACL。您可以添加新的,或修改现有的ACLu:来代表用户。您可以使用G来设置组权限。测试用户名:rwx需要设置的权限。
现在让我向您展示如何阅读ACL:
$ ls-LH/共享
你可以注意到在正常权限后面有一个+号。这表明ACL已经成功设置。要详细了解ACL,我们需要运行:
$ sudo getfacl /shared
最后,如果您需要删除ACL:
$ sudo setfacl -x u:测试/共享
如果要立即清除所有ACL条目:
$ sudo setfacl-b/共享
最后,当ACL文件或目录被设置为工作时,cp和mv命令将改变这些设置。对于cp,您需要添加“p”参数来复制ACL设置。如果这是不可行的,它会显示一个警告。mv默认为移动ACL设置,如果这不可行,它也会向您显示一个警告。
摘要
使用ACL可以让您对想要共享的文件有更多的权力和控制,尤其是在NFS/Samba服务中。另外,如果你的主管* * *享受主机,这个工具是必须的。
以上是Linux下设置访问控制列表控制用户权限的方法介绍。由于ACL的配置和使用比较复杂,初学者在使用时容易出错。希望本文介绍的方法能帮到你。