
grep
特定の(通常の)ユーザーにメールログ()へのアクセスを許可したいと思います/var/log/maillog*
。
ログ権限は -only のままにしておく必要があるため、ログ権限を変更するつもりはありませんroot
。したがって、推奨される解決策は を使用することだと思いますsudoers
。
また、他の権限はできるだけ付与しないようにしたいのですが、理想的には、ユーザーにはメールログ (およびローテーションされたファイル) へのアクセス権のみを持たせます。
例えば:
username ALL= NOPASSWD: /bin/grep
基本的に、そのユーザーはgrep
システム上のあらゆるファイルにアクセスできるようになりますが、これは避けたいことです。
ここでの最善の解決策は何でしょうか?
参考までに: それ自体がそうである必要はありませんgrep
。ユーザーはメールログへの読み取りアクセス権のみを必要とし、おそらくgrep
それらにアクセスするためだけに使用します。
答え1
ファイルにACLを使用してユーザーに読み取り権限を与えることができます。
setfacl -m user:grepuser:r /var/log/maillog*
これは、ユーザーが希望するツールを使用できるという利点です。
これは、maillog に対しても logrotate 安全です*
答え2
ユーザーが検索する特定の文字列と、ユーザーがチェックに使用する特定のファイルを把握していない限り、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
) を保存したり、検索用の独自のスクリプトやエイリアスを作成したりすることはできません。さらに、ログ ローテーションが設定されている場合は、圧縮されたログを解析することはできません。
注記:しないでくださいコマンドに sudo アクセスを許可しますless
。ユーザーはプロセスから抜け出すことができ、たとえば、実行する!/bin/bash
とless
システムへのルート アクセスが付与されます。
cat
もう 1 つのオプションは、ファイルにルールを設定して、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
答え3
これは期待通りに動作するはずですsudo ユーザファイル:
%users ALL= /bin/cat /var/log/mail.log
%users ALL= /bin/cat /var/log/mail.err
(Ubuntu からのログ パス、必要に応じて変更)
一般的な出力専用ツールを使用すると、猫シンプルで安全です。特定のオプションを許可したり制限したりする必要はありません。グレップsudoersに直接追加します。また、任意のログをフィルタリングすることもできます。grep かどうかツール、すなわち。awk、sed。
よく分からない須藤CentOSではパスワードの入力を求められますが、呼び出しユーザー(目標使用者の場合、パスワードなし悪意のある第三者がユーザーのパスワードを知らずにユーザーのアカウントにアクセスした場合、これはセキュリティ上の利点となります。