나중에 실행되도록 예약된 작업을 사용한 후에는 작업을 시작하는 대신 at
지정된 시간에 atd
"권한 거부"가 보고됩니다 . /var/spool/cron/at*에 대한 권한이 정확합니다:
root@server /var/spool/cron # ls -la
total 20
drwxr-xr-x 5 root root 4096 Okt 30 2014 .
drwxr-xr-x 6 root root 4096 Okt 30 2014 ..
drwxrwx--T 2 daemon daemon 4096 Nov 1 17:57 atjobs
drwxrwx--T 2 daemon daemon 4096 Nov 1 17:57 atspool
drwx-wx--T 2 root crontab 4096 Nov 1 17:34 crontabs
수동으로 보낸 명령을 실행하면 at
모든 것이 잘 작동합니다.
답변1
운영 체제 사양을 보지 않고도 SELinux가 작동 중일 수 있다고 생각합니다.
활성화되어 있는지 확인하세요. 이 getenforce
반환됩니다 Enforcing
. 그렇다면 루트로 실행하고 setenforce permissive
명령이 실행될 때 권한 거부 오류가 발생하는지 확인하십시오.
답변2
atd
실행 이유에 대한 답변을 찾고 있지만 작업이 실행되지 않고 로그에 다음이 표시됩니다.
Nov 16 05:28:00 yourserver atd[15038]: Cannot create output file: Permission denied
시스템은 데비안 10 버스터입니다.
atd
내가 알아차린 한 가지는 프로세스가 user 로 실행되고 있다는 것인데 daemon
, 이로 인해 다음과 같은 결과가 발생합니다.데비안은 왜 "daemon" 사용자로 "atd"를 실행합니까?
좋아요
man atd
파일 섹션에 몇 가지 유용한 정보가 있는 것으로 나타났습니다 .
/var/spool/cron/atjobs The directory for storing jobs; this should be mode 700, owner daemon.
/var/spool/cron/atspool The directory for storing output; this should be mode 700, owner daemon.
디렉터리에 이러한 권한과 소유권이 있는지 확인한 후에 모든 것이 예상대로 작동하기 시작했습니다.
이 특정 시스템의 경우 at
이 시스템이 자주 사용되지는 않는 것 같습니다(그래서 지금까지 문제가 발견되지 않았습니다). 시스템은 수년에 걸쳐 이전 Debian 버전에서 업그레이드되었으므로 atd
루트에서 데몬으로 실행을 변경할 때 디렉터리가 올바른(업데이트된) 권한과 소유권을 받지 못한 것 같습니다.