sudo 或 acl 或 setuid/setgid?

sudo 或 acl 或 setuid/setgid?

出於我不太明白的原因,每個人都希望 sudo 滿足所有一切。在工作中,我們甚至有盡可能多的條目來讀取日誌檔案(頭/尾/貓/更多,...)。

我認為,sudo 在這裡失敗了。

我寧願混合使用 setgid/setuid 目錄並到處添加 ACL,但我確實需要在啟動之前知道什麼是最佳實踐。

我們的伺服器有%admin,%product,%dba,%users - 即許多群組和許多用戶。每個服務(mysql,apache,...)都有自己的安裝權限的方式,但 %生產組的成員必須能夠查閱設定檔甚至日誌檔。仍然有解決方案將它們添加到正確的群組(mysql...)並設定良好的權限。但我不想對所有用戶進行 usermod 操作,我不想修改標準權限,因為它可能會在每次升級後發生變化。

另一方面,在目錄上設定 acls 和/或混合 setuid/setgid 是我可以輕鬆完成的事情,而不會「破壞」標準發行版。

你怎麼看待這件事 ?

以 mysql 為例,它看起來像這樣:

setfacl d:g:production:rx,d:other::---,g:production:rx,other::--- /var/log/mysql /etc/mysql

您認為這是好的做法還是我應該定義 usermod -G mysql 並使用標準權限系統?

謝謝

答案1

最佳實務:維護 sudoers 檔案並使用 sudo。

在我的個人電腦上,我更喜歡 setuid/gid,但我的電腦上只有我一個;我不會對任何明顯危險的事情這樣做rm

答案2

最佳實踐(也是最常見的)傾向於使用sudo. Sudo 為您提供細粒度的控制,並且該配置可以同時處理多台機器。

使用 ACL 可以補充這一點 -sudo以 root 身分處理操作; ACL 授予使用者和群組或取消目錄和檔案的權限。我不會指望 setgid 和 setuid 會做任何合理的事情。

我還會實現輪組;這將有助於提高安全性。檢查你的su程式是否支援輪組。

還有一件事:如果您有viewless作為讀取日誌檔案的一種方式,那麼您將面臨風險:這兩個程式都提供 shell 存取。

答案3

在我看來, sudoers 選項比 setuid/setguid/ACL 更緊湊一些。

如果不對使用者進行分組,您的 ACLS 將會很長。如果您將使用者分組,您將回到開始的地方。

更大的問題是,如果沒有某種集中管理,存取控制就會擴散到整個檔案系統。當然,您可以使用 ie 巨集、範本、設定管理等輕鬆解決這個問題。但這是一個完全不同的層,對降低複雜性沒有任何作用。

在我的 Drupal 小商店中,我對所有工作文件廣泛使用 ACL,但對所有管理存取使用 sudo。我使用的設定管理層是 Ansible,它的好處是我可以輕鬆地對使用者、他們的角色進行模板化,從而確定他們獲得的群組、在什麼機器上等等。 Sudoers 的管理方式類似。對我來說這似乎是最佳實踐,因為它是最透明的。

當然,我可能沒有您那麼多的使用者或群組。我可以設想將 ACL 放入組態管理中。但在我的一生中,我沒有看到一種以這種方式管理許多機器、許多使用者和許多群組的直接方法。

相關內容