一文看懂Linux访问控制列表

本文引见了Linux访问控制列表(ACL),它相比规范的Linux权限提供了更大的灵敏性。

经常在Linux与微软Windows之间极速切换的一些人意识到两者之间基本色的区别。其中一个区别是权限。规范的Linux权限十分便捷:指定一个用户、一个用户组,而后指定其余任何用户或用户组(称为“others”),并依据须要授予读取、写入和口头等权限。Windows的权限则要复杂得多,有嵌套、更多的访问级别和共享(Share)权限组合。但是从许多方面来看,Windows权限在大规模环境下更灵敏、更适用。

本文引见Linux访问控制列表(ACL),它相比规范的Linux权限提供了更大的灵敏性。我将探讨为多个独立用户和多个用户组检查和性能ACL。你选用的Linux发行版很或许曾经启用了ACL(ACL实践上是文件系统的一项性能)。

你可以经常使用chmod命令来性能规范的Linux权限。该命令可以设置以下三种访问级别的恣意组合:读取、写入和口头。你可以将这些访问级别授予三种身份:

图1:ls -l命令显示规范权限、一切权和组关联

关于用户和用户组较少的独立系统而言,这种方法绰绰缺乏。但是,在共享系统、启用了文件共享性能的系统或SSH远程访问频繁的设备上,这种方法却变得十分费事又蠢笨。

这时刻文件系统ACL性能就能派上用场。它准许你性能具备不同访问级别的多个用户及/或用户组。

ACL准许你指定多个用户帐户,并为它们提供不同的访问级别。这也象征着你不用将文件的一切权授予其中一个用户。它为用户组提供了雷同的灵敏性。

ACL依然可以识别读取、写入和口头这三个规范访问级别,因此你不用从新学习曾经了解的关于Linux权限的一切常识。实践上,ACL与规范权限协同上班,因此你仍将经常使用基本的用户(u)、用户组(g)和其余(o)等身份。你是在补充惯例权限,而不是交流惯例权限。

当天的现代Linux发行版通常自动状况下支持ACL。ACL是文件系统的一项性能。规范的文件系统是ext4、XFS和Btrfs。它们都支持ACL。

你或许不须要审核自己的Linux发行版能否支持ACL,但是假设你想确认,可以经常使用以下命令:

tune2fs -l /dev/sda1 | grep -i "Default mount options"

估量输入中会看到列出的acl。

图2:tune2fs命令显示文件系统设置,包含能否启用了ACL

留意,假设针对资源性能了ACL,ls -l输入将显示+字符。在上方这个例子中,ACL被运行到file1.txt。

图3:留意file1.txt的权限字符串末尾的+字符,示意运行了ACL

ACL性能命令是setfacl。它依赖规范的Linux命令语法:

command -options argument

参数将是你运行访问控制的那个文件或目录。

setfacl命令有很多选项。以下列表含有一些最经常出现的选项:

但是,setfacl还依赖其余参数来定义新的访问控制能否运行于用户或用户组。

假设联合起来,这些设置准许治理员成功极端牢靠而适用的权限性能。

上方的命令示例简明引见了如何经常使用setfacl。前面会引见更详细的示例。

假设为用户django性能ACL,将读取(r)权限授予sample.txt资源,请输入:

setfacl -m u:django:r sample.txt

针对用户组engineering的相似示例,如下所示:

setfacl -m g:engineering:r sample.txt

一旦你性能了ACL设置,须要审核它们以确保它们是正确的。这时刻getfacl命令就有了用武之地。

用于治理ACL的另一个相关命令是getfacl,它可以显示的ACL设置。

基本语法是getfacl和你想要检查的那个文件或目录名:

getfacl / dev-projects

但是与大少数Linux命令一样,getfacl支持许多有用的选项来修正输入。这些包含:

在审计或性能访问控制时,经常使用getfacl审核ACL设置。

图4:getfacl命令显示规范设置和ACL设置

上方你将看到ACL的两个用例,包含场景和相关命令。思考一下在你的环境中相似的状况会如何出现。

我将从一个便捷的示例开局入手:sales组关于/sales目录须要领有rwx权限,marketing组应该只要r-x权限。其他人不须要访问。(请记住,这些组须要口头权限能力cd到目录中。)

先向开售组授予规范的rwx权限:

chown –R : sales /saleschmod – r 770 /sales
setfacl -m g:marketing:r-x /sales

请记住,ACL与规范权限协同上班,因此不要遗记经常使用ls -l命令用于这两个系统。除了显示ACL条目外,getfacl命令还显示规范权限。

构想另一种状况,你须要为不同的用户和组授予不同的访问级别。假定你有一个/dev-projects目录,须要满足以下要求:

规范权限不可满足这类需求,但ACL可以轻松满足。

chown -R root:developers /dev-projectschmod - R 770 /dev-projects

接上去,为额外用户和用户组性能ACL条目:

setfacl -R u:alex:r-x /dev-projectssetfacl -R u:silas:r-x /dev/projectssetfacl -R g:contract-dev-team:r-x /dev/projects

经过经常使用getfacl和ls -l显示设置来审核结果。

访问控制列表(ACL)裁减了Linux权限的性能,准许对不同的用户和用户组授予不同的访问级别。只管这使缺点排查起来变得更复杂了,但为了增强灵敏性是值得的。

ACL性能是文件系统的一项性能。当天的现代文件系统支持ACL,或许曾经启用了它。确保创立一种依据访问需求组织资源、从而有效地利用ACL的目录基础设备。普通来说,开售团队所需的一切资源都应该存在于一个父目录中,营销团队所需的一切资源都存在于另一个父目录中。

ACL在大型部署环境中变得尤为关键,比如支持访问需求各异的许多用户和资源的关键文件主机。如今细心审核你的大型部署环境,看看ACL能否有助于更有效地控制资源访问。在排检查似奥秘的访问疑问时,别忘了思考ACL。

您可能还会对下面的文章感兴趣: