우리 회사에서 만든 서비스를 출시하려고 합니다. 한 특정 환경에서는 3개의 "권한 거부" 오류로 인해 시작하지 못했습니다. 어떤 파일이 실패하는지 확실하지 않으므로 데몬을 시작하려고 할 때 모든 권한 관련 오류를 기록하고 싶습니다.
찾았어요심사, 그러나 특정 권한 관련 오류를 찾기 위해 전체 디스크에 감시를 배치할 수는 없습니다. 모든 권한 관련 오류를 감사하는 가장 좋은 방법은 무엇입니까?
답변1
당신이 사용할 수있는스트레스데몬 관련 프로세스에 대한 모든 파일 시스템 활동을 확인하고 권한 거부 오류로 인해 실패한 프로세스를 확인하세요.
서비스를 시작하는 쉘 스크립트에서 오류가 발생한 경우, 쉘을 실행할 수 있습니다 sh -x /path/to/startup/script
(또는 bash -x /path/to/startup/script
스크립트가 로 시작하는 경우 #!/bin/bash
). 쉘은 실행될 때 각 행을 인쇄합니다.
답변2
strace
StartService를 사용해 보고 출력을 파일 관련 작업으로만 필터링 할 수 있습니다 . 이 서비스에 의해 시작된 모든 하위 프로세스를 보려면 다음 옵션을 사용하여 시작해 보는 것이 좋습니다.
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
grep
답변3
파일의 실행 권한을 확인하세요. 노력하다:
chmod 7xx [스크립트 파일].
또한 파일 소유자가 올바른지 확인하세요. 노력하다:
chown 그룹:사용자[스크립트 파일]