2013-03-18 122 views
1

我想從你的一些想法如何實現。讓我稍微解釋一下我的問題:自動ACL檢查外殼腳本

場景: 我們有一個系統,必須設置一些特定的ACL才能運行它。所以,在運行之前,如果我可以運行某種預檢來驗證所有設置是否正確,那將是非常好的。

目標: 創建一個腳本,在啓動系統警報之前檢查這些ACL,以防其中一個錯誤發生在文件/文件夾列表及其ACL中。

問題: 由於getfacl結果不是一個簡單的返回,我發現做這種檢查的唯一方法是解析結果並分析每個結果,而不是像我希望的那樣優雅。

我懷疑很多的,你必須做一些事情的ACL檢查,但可以肯定你們能有助於我的事業:)

謝謝大家提前

+1

運行前檢查你需要工作ACL某處權的副本? – Satish 2013-03-19 15:12:26

+0

是薩蒂什!但是,正如我在下面的答案中對larsks所說的,如果它有更多的授予運行所需的最小數量,那麼它並不會成爲問題。在這種情況下,使用複製到特定文件的簡單比較將不起作用。但請繼續,我只是假設你會提示:) – RLM 2013-03-19 17:48:24

+0

簡單的方法是獲取getfacl的輸出並根據需要進行修改,並與安裝應用程序的位置進行比較。 – Satish 2013-03-19 18:29:36

回答

1

如何使用Python模塊pylibacl

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

有趣...這對我來說是新的!你能指出我的一些很好的文檔嗎? – RLM 2013-03-18 20:44:50

+1

http://pylibacl.k1024.org/module.html – Satish 2013-03-18 20:47:12

+0

下面是一個示例腳本:https://github.com/iustin/pylibacl/blob/master/test/test_acls.py – Satish 2013-03-18 20:56:29

1

由於getfacl結果不是一個簡單的返回,我發現要做這種檢查的唯一方法是解析結果並分析它的每一部分,而不是將其作爲el盡我所願。

你究竟想要做什麼?如果您只是將調用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 
+0

不是那麼容易... supouse我們有更多的ACL(需要讀取,但它也有執行權限)比運行該應用程序所需的最低限度?在這種情況下,檢查結果應該是OK的。 – RLM 2013-03-18 20:46:56