我正在尝试启动我们公司创建的一项服务。在一种特定环境中,它因三个“权限被拒绝”错误而无法启动。我不确定它在哪些文件上失败,因此我想在尝试启动守护程序时记录所有与权限相关的错误。
我发现了审计,但我无法在整个磁盘上放置监视以查找与权限相关的特定错误。审核所有与权限相关的错误的最佳方法是什么?
答案1
你可以使用斯特雷斯查看与守护进程相关的进程的所有文件系统活动,并查看出现权限被拒绝错误时哪些进程失败。
如果错误来自启动服务的 shell 脚本,您可以运行sh -x /path/to/startup/script
(或者bash -x /path/to/startup/script
如果脚本以 开头#!/bin/bash
),shell 将在执行时打印每一行。
答案2
您可以尝试使用启动服务strace
并将输出仅过滤为与文件相关的操作。要查看该服务启动的所有子进程,我建议您尝试使用以下选项启动它:
strace -e trace=file -f /etc/init.d/your-service-startup-script start
这将产生大量输出,因此您可以使用-o <log filename>
after将其转发到文件strace
或通过管道将其传递grep
:
strace -e trace=file -f /etc/init.d/your-service-rc-script start 2>&1 | grep 'EACCES'
这将仅显示由于权限不足(权限被拒绝)而失败的文件系统调用。2>&1
有必要将strace
的stderr
文件描述符重定向到stdout
for grep
。
答案3
检查文件的运行权限。尝试:
chmod 7xx [脚本文件]。
另外,请确保文件所有者是正确的。尝试:
chown 组:用户 [脚本文件]