Centos

非root使用者對郵件日誌的Grep訪問

  • August 22, 2015

我想授予grep對我的郵件日誌 ( ) 的特定(正常)使用者訪問權限/var/log/maillog*

我不准備更改日誌權限,因為它們應該保持root-only,所以我認為首選的解決方案是通過sudoers.

另外:我想授予盡可能少的其他權限,理想情況下,使用者只能訪問郵件日誌(和旋轉文件)。

例如:

username ALL= NOPASSWD: /bin/grep 

允許該使用者基本上grep訪問系統上的任何文件,這是我想避免的。

這裡最好的解決方案是什麼?

僅供參考:它本身不需要grep:使用者只需要對郵件日誌的讀取權限,並且可能只會用於grep訪問它們。

您可以在文件上使用 acl 向使用者授予讀取權限

setfacl -m user:grepuser:r /var/log/maillog*

這是允許使用者使用他們希望使用的任何工具的優勢。

這對於郵件日誌也是 logrotate 安全的*

除非您知道使用者將搜尋哪些特定字元串以及他們將使用哪些特定文件進行檢查sudo,否則這不是一個好的解決方案。如果您創建這樣的規則:

blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*

使用者將能夠執行如下命令:

grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog

他們將能夠讀取系統上的任何文件。您可以在此處找到有關此問題的更多資訊:

http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/

如果您知道使用者將檢查哪些字元串和文件,您可以為每個場景定義單獨的規則。例如:

Cmnd_Alias  MAILLOGA = /bin/grep 'Connection refused' /var/log/maillog
Cmnd_Alias  MAILLOGB = /bin/grep 'Connection refused' /var/log/maillog.1
Cmnd_Alias  MAILLOGC = /bin/grep 'imap-login' /var/log/maillog
Cmnd_Alias  MAILLOGD = /bin/grep 'imap-login' /var/log/maillog.1
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

但是,這可能很麻煩,並且可能導致 sudo 配置過大。

或者,grep您可以通過命令授予他們訪問文件的權限,而不是more他們可以互動地搜尋文件:

Cmnd_Alias  MAILLOG = /bin/more /var/log/mailllog
Cmnd_Alias  MAILLOG1 = /bin/more /var/log/mailllog.1
Cmnd_Alias  MAILLOG2 = /bin/more /var/log/mailllog.2
Cmnd_Alias  MAILLOG3 = /bin/more /var/log/mailllog.3
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

然而,這不允許使用者保留他們的搜尋歷史(例如.bash_history)或創建他們自己的腳本或搜尋別名。另外,如果您有日誌輪換,他們將無法解析壓縮日誌。

注意:不要授予對less命令的 sudo 訪問權限。使用者可以中斷該程序,例如,執行!/bin/bashless授予他們對系統的 root 訪問權限。

另一種選擇是為他們制定cat文件規則,以便他們可以grep按照自己的意願將它們傳輸到文件中。例如:

sudo cat /var/log/maillog | grep "anything can go here"

最後,最簡單且可能是最好的解決方案是通過更改日誌文件的權限授予他們對日誌的讀取權限。你可以這樣做:

groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz

然後他們可以使用他們想要分析文件的任何工具(例如grep, zgrep, less, more,view等)。

引用自:https://serverfault.com/questions/715955