如何在不将用户添加到 sudoers 文件的情况下授予用户对 root 拥有的文件夹的访问权限?

How can I give user access to folder owned by root without adding user to sudoers file?

我有一个目录属于 root (/var/log/apache2)。我希望用户对该文件夹具有只读访问权限 - 无需更改该文件夹的组所有者。是否可以在不将用户添加到 sudoers 文件的情况下执行此操作?

这取决于您的系统设置方式。

如果幸运的话,adm 组已经具有对这些文件的读取权限。如果是这样,那么只需将您的用户添加到 adm 组:

sudo usermod -aG adm SOMEUSER

adm 组通常用于提供对系统日志文件的读取访问权限,而无需授予用户超级权限。您的用户还可以阅读 adm 组有权访问的任何其他内容。

如果这些文件根本没有组访问权限(即它们显示 -rw------- 并且归 root/root 所有),那么下一个最佳选择是使用 setfacl 来提供您的用户对这些文件的读取权限:

sudo setfacl --modify u:SOMEUSER:rx /var/log/apache2    # let them in to the dir
sudo setfacl --modify u:SOMEUSER:r /var/log/apache2/*    # let them read the files

请注意,一旦 logrotate 随机播放这些文件,您的用户可能无法访问新的日志文件。您可能必须在 cron 作业中设置 setfacl 命令才能继续访问。

也可以扩展对该文件夹的权限,但要保持该更改涉及修改 /etc/logrotate.d/apache2 文件。由于您的包管理器可能创建了 /etc/logrotate.d/apache2(并且可能会在某个时候修改它)我不建议走那条路。