【问题标题】:Automated ACL Check in shell script自动 ACL 签入 shell 脚本
【发布时间】:2013-03-18 17:14:07
【问题描述】:

我想从你那里得到一些关于如何实现它的想法。让我解释一下我的问题:

场景: 我们有一个系统,它必须设置一些特定的 ACL 才能运行它。因此,在运行之前,如果我可以运行某种预检查以验证所有设置是否正确,那就太好了。

目标: 创建一个脚本,在启动系统警报之前检查这些 ACL,以防其中一个错误基于文件/文件夹及其 ACL 列表。

问题: 由于 getfacl 结果不是一个简单的返回,我发现进行这种检查的唯一方法是解析结果并分析它的每一部分,这并不像我想要的那样优雅。

我怀疑你们中的许多人必须做一些 ACL 检查,但可以肯定的是你们可以为我的事业做出贡献:)

提前谢谢大家

【问题讨论】:

  • 要运行预检查,您需要一份工作 ACL 的副本吗?
  • 是的萨蒂什!但是,正如我在下面的答案中对 larsks 所说的那样,如果它有更多的赠款超过运行所需的最低限度,那就无所谓了。在这种情况下,使用复制到特定文件的简单比较将不起作用。但请继续,我只是假设你会建议:)
  • 简单的方法是获取 getfacl 的输出并根据您的需要进行修改,然后与您安装应用程序的位置进行比较。

标签: linux shell unix acl


【解决方案1】:

如何使用Python模块pylibacl

>>> import posix1e
>>> acl1 = posix1e.ACL(file="file1.txt")
>>> print acl1
user::rw-
group::r--
other::r--

【讨论】:

【解决方案2】:

由于 getfacl 结果不是简单的返回,我发现进行此类检查的唯一方法是解析结果并分析它的每一部分,这并不像我希望的那样优雅。

你到底想做什么?如果您只是将调用getfacl 的结果与所需的ACL 进行比较,那应该很容易。例如,假设您已将所需的 ACL 存储在名为 acl-i-want 的文件中,您可以执行以下操作:

   getfacl /path > acl-i-have
   if ! diff -q acl-i-have acl-i-want; then
      echo "ACLs are different."
   fi

【讨论】:

  • 不是那么容易...假设我们有比运行该应用程序所需的最低要求更多的 ACL(需要读取,但它也具有执行权限)?在这种情况下,检查结果应该是OK的。
猜你喜欢
  • 2017-02-24
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
相关资源
最近更新 更多