`tail -n 40 /var/log/apache2/error.log` 不带 `sudo`

`tail -n 40 /var/log/apache2/error.log` 不带 `sudo`

一天中我多次需要检查我的 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(使文件可由“其他人”读取,即不是所有者/组)可能会起作用,但安全性反对这一点。

选一个:

  1. ls -l /var/log/apache2/error.log...在我的(Debian)系统上,它的组是adm,而且它是g+r。该adm组的存在基本上是为了允许读取日志文件。因此,将自己添加到该组将使我可以阅读它(以及其他日志)。在 Debian 上,就是这样sudo adduser anthony adm(当然anthony是我的用户名)。注意:您必须注销并重新登录才能使新组生效。在一个终端中,newgrp adm应该可以工作。

  2. 使用 POSIX ACL 授予您自己对该特定文件的读取权限。sudo setfacl -m u:anthony:r /var/log/apache2/error.log(使用您的用户名代替anthony)。尽管根据日志轮换在您的系统上的工作方式,您可能需要在轮换后重新运行它(但您可以配置例如 lograte 来为您执行此操作)。

  3. Prem 的答案中重新配置 sudo 的各种方法。

答案3

运行sudo visudo并添加这一行:

Defaults    timestamp_timeout=-1

-1= 密码永不超时

另请参阅男人 5 sudoers

虽然上述解决方案存在安全隐患,但请遵循此关联设置sudo为无需密码即可运行特定命令。

相关内容