服务因权限被拒绝而无法启动 - 哪些文件失败?

服务因权限被拒绝而无法启动 - 哪些文件失败?

我正在尝试启动我们公司创建的一项服务。在一种特定环境中,它因三个“权限被拒绝”错误而无法启动。我不确定它在哪些文件上失败,因此我想在尝试启动守护程序时记录所有与权限相关的错误。

我发现了审计,但我无法在整个磁盘上放置监视以查找与权限相关的特定错误。审核所有与权限相关的错误的最佳方法是什么?

答案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有必要将stracestderr文件描述符重定向到stdoutfor grep

答案3

检查文件的运行权限。尝试:

chmod 7xx [脚本文件]。

另外,请确保文件所有者是正确的。尝试:

chown 组:用户 [脚本文件]

相关内容