2013-08-08 5 views
1

내 CentOS 6 상자에서 특정 사용자 계정으로 python 스크립트를 실행하는 데 작은 문제가 있습니다.비 루트 사용자로 python cron 스크립트 실행

내 cron.d/cronfile은 다음과 같습니다

5 17 * * * reports /usr/local/bin/report.py > /var/log/report.log 2>&1

계정 reports이 존재하고 해당 스크립트에 의해 액세스 할 수있는 모든 파일을 reports-chownedchgrped이다. 파이썬 스크립트는 chmod a+r입니다. python 스크립트는 #!/usr/bin/env python으로 시작합니다.

그러나 이것은 문제가 아닙니다. 문제는 로그 파일에 아무것도 표시되지 않는다는 것입니다. 파이썬 스크립트가 실행되기 시작하지 않습니다! 왜 이런 생각일까요?

사용자를 reports 대신 root으로 변경하면 제대로 실행됩니다. 그러나 프로덕션 서버에서는 root으로 실행할 수 없습니다. 당신은 질문이있는 경우

:

/E 문의하시기 바랍니다 : 나는 sudo -u reports python report.py을 할 경우 그것을 잘 작동합니다.

답변

0

cron 작업은 cron 작업이 설정된 사용자의 권한으로 실행됩니다. I.E. reports 사용자의 cron 테이블에있는 내용은 reports 사용자로 실행됩니다.

reports으로 로그인했을 때 스크립트가 실행되도록하려면 sudo이 필요하다면 스크립트는 cron 작업으로도 실행되지 않습니다. sudo없이 reports으로 로그인했을 때이 스크립트를 실행할 수 있습니까? 그렇지 않다면 크론 작업도 할 수 없습니다. 이해가 되니?

로그 확인 - 권한 오류가 발생합니까?

스크립트에 특정 priv가 필요한 이유는 많지만이 문제를 해결하는 가장 쉬운 방법은 reports 대신에 root 아래에 cron 작업을 설정하는 것입니다. 더 긴 방법은 권한 상승이 필요한 것을 정확하게보고 수정하는 것입니다. 그것은 파일 권한인가? 보호 된 명령? 특정 그룹에 reports을 추가하면 root 대신 reports에서 실행할 수 있습니다.

루트

+0

같이 설정 cron 작업은 내가 스와'하려고 할 때마다 때/경우 *주의 ULTRA 일 - reports'을 내가 그 라인을 따라 또는 뭔가 "현재 사용할 수 없습니다 보고서 계정에서 '얻을. 나는 내일 직장에서 확인하고 다시 게시 할 것이다. –

+0

이제 su - reports를하고 스크립트를 잘 실행할 수있다. 따라서 문제는 사용 권한이 아닙니다. 로그 파일에는 여전히 출력이 표시되지 않습니다. –