![如何将用户对journalctl的sudo权限限制为特定单位?](https://linux22.com/image/86207/%E5%A6%82%E4%BD%95%E5%B0%86%E7%94%A8%E6%88%B7%E5%AF%B9journalctl%E7%9A%84sudo%E6%9D%83%E9%99%90%E9%99%90%E5%88%B6%E4%B8%BA%E7%89%B9%E5%AE%9A%E5%8D%95%E4%BD%8D%EF%BC%9F.png)
我想为我们的用户提供对journalctl
特定单元的访问权限。例如,httpd
.我最初的想法是指定这样的命令规范:
/usr/bin/journalctl -u httpd.service *
这将使他们能够访问有用的选项,例如--all
、--full
、--follow
等。但是,很快注意到它还允许他们指定不同的单位(例如,-u tomcat
)。
指定每个可接受的选项是做到这一点的唯一方法吗?或者我可以在文件上利用 ACL 之类的东西来进行更精细的访问吗?
答案1
您可以编写一个setuid
(或setgid
?)可执行文件来清理环境,然后运行该journalctl
命令。您必须解析journalctl
允许用户指定的选项,然后传递它们。
警告
永远不要编写setuid
脚本(任何以 hash-bang (" #!
") 开头的脚本)。如果您的setuid
脚本需要解释器,黑帽可以轻松破坏它。
对象的前 4 个字节setuid
必须是“ \177ELF
”。