우분투14.04
서비스(로그인 없음) 계정(named)에 대해 crontab을 설정할 때 나타나는 동작을 이해하지 못합니다 curator
.
루트로 로그인하면 다음과 같은 결과가 나타납니다.
# crontab -u curator -l
The user curator cannot use this program (crontab)
그러나 사용자 계정으로 전환하면 정상적으로 작동합니다.
# su -s /bin/bash curator
curator@host$ crontab -l
no crontab for curator
/etc/cron.allow
시스템에 빈 파일이 있고 파일이 없습니다. /etc/cron.deny
에 따르면 man crontab
:
/etc/cron.allow 파일이 존재하는 경우 이 명령을 사용하려면 해당 파일에 나열되어야 합니다(한 줄에 한 명의 사용자). /etc/cron.allow 파일은 없지만 /etc/cron.deny 파일은 있는 경우 이 명령을 사용하려면 /etc/cron.deny 파일에 나열되어서는 안 됩니다.
첫 번째 명령을 실행할 때 발생하는 오류를 이해하지만 crontab
명시적으로 사용자 계정으로 전환하면 명령을 실행할 수 있는 이유는 무엇입니까?
사용자를 추가하면 /etc/cron.allow
두 명령이 모두 제대로 작동했습니다.
답변1
crontab 소스를 확인한 결과 사용자가 열 수 없는 경우 /etc/cron.allow
(예: 이후 chmod 0 /etc/cron.allow
) crontab은 사용자가 해당 소스를 사용할 수 있다고 생각한다는 사실을 발견했습니다(마치 cron.allow
존재하지 않는 것처럼).
그러나 루트는 모든 파일을 읽을 수 있으므로 crontab 검사 코드는 예상대로 작동합니다. 따라서 먼저 권한을 확인 /etc/cron.allow
하고 SELinux/AppArmor 감사 로그를 확인하는 것이 좋습니다.