我想授予特定(常规)用户grep
访问我的邮件日志的权限(/var/log/maillog*
)。
我不准备更改日志权限,因为它们应该保留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
获得系统的 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
答案3
这应该可以按预期工作sudoers文件:
%users ALL= /bin/cat /var/log/mail.log
%users ALL= /bin/cat /var/log/mail.err
(来自 Ubuntu 的日志路径,如果需要可更改)
使用通用的、仅输出的工具,如猫简单又安全。您无需像使用grep直接在 sudoers 中。它还允许使用任何grep 或 not工具,即awk,sed。
不确定如何须藤在 CentOS 中配置,但如果提示输入密码呼叫用户(不是目标用户),我会避免使用禁止密码。如果任何敌对方在不知道用户密码的情况下访问了用户的帐户,那么这可能是一个安全优势。