一天中我多次需要检查我的 Apache 日志:
sudo tail -n 40 /var/log/apache2/error.log
然后我必须提供我的密码。
这是一个笨拙的工作流程,所以我将其添加PATH=$HOME/shortcuts:$PATH
到我的~/.profile
并创建~/shortcuts/1
它就可以了。
但是,我需要以某种方式避免每次都必须输入密码。 (几乎每次,似乎都有10分钟的记忆)。
我不能只是chmod u+r /var/log/apache2/error.log
——我认为某些中间文件夹必须设置限制性权限。
解决这个问题的正确方法是什么?
答案1
对于这个具体问题,我可以想到很多解决方案:
(A) 配置 sudo 访问权限,以便您的用户名在执行 tail 命令(或所有命令,如果您需要)时不需要密码,
请参阅 sudo 和 sudoers 文档了解此内容。
(B) 将 sudo 访问配置为负超时。默认超时时间为 5 分钟,之后您将必须重新输入密码。
通过将超时设置为负值,您可能只需输入密码一次,之后 sudo 就不会再纠缠您了。
(C) 使用 tmux(或 screen)并在一个窗格(或一个窗口)中运行 tail 命令。
无论何时您想查看日志,都可以查看该窗格(或窗口)。
(D) 运行一个后台进程,将“tail -f”输出发送到 /tmp/ApacheError 中的文件,该文件是您要访问的日志的精确副本。根据您的系统设置,可能还需要“tee”。
现在访问 /tmp/ApacheError 中的日志,该日志对所有用户都有读取权限。
(E) 考虑使用 apache 日志过滤器,它可用于将重复输出发送到 /tmp/ApacheError ,这需要参考 Apache 文档。
现在访问 /tmp/ApacheError 中的日志,该日志对所有用户都有读取权限。
(A)和(B)是安全风险。 (C) 需要 tmux(或 screen),但可能不可用。 (D) 是安全的。 (E) 可能需要更多的研究。
答案2
chmod u+r
没有做你明显认为它会做的事情;它实际上所做的是使文件可读所有者。我猜,这已经是了。
chmod o+r
(使文件可由“其他人”读取,即不是所有者/组)可能会起作用,但安全性反对这一点。
选一个:
ls -l /var/log/apache2/error.log
...在我的(Debian)系统上,它的组是adm
,而且它是g+r
。该adm
组的存在基本上是为了允许读取日志文件。因此,将自己添加到该组将使我可以阅读它(以及其他日志)。在 Debian 上,就是这样sudo adduser anthony adm
(当然anthony
是我的用户名)。注意:您必须注销并重新登录才能使新组生效。在一个终端中,newgrp adm
应该可以工作。使用 POSIX ACL 授予您自己对该特定文件的读取权限。
sudo setfacl -m u:anthony:r /var/log/apache2/error.log
(使用您的用户名代替anthony
)。尽管根据日志轮换在您的系统上的工作方式,您可能需要在轮换后重新运行它(但您可以配置例如 lograte 来为您执行此操作)。Prem 的答案中重新配置 sudo 的各种方法。
答案3
运行sudo visudo
并添加这一行:
Defaults timestamp_timeout=-1
-1= 密码永不超时
另请参阅男人 5 sudoers
虽然上述解决方案存在安全隐患,但请遵循此关联设置sudo
为无需密码即可运行特定命令。