我想为我们的用户提供对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
”。