특정 사용자가 crontab을 사용할 수 있는지 확인하고 싶습니다. 쉘 스크립트에서 이 유효성 검사를 사용하고 싶습니다.
이를 수행하는 올바른 방법은 무엇입니까?
답변1
VISUAL=true EDITOR=true crontab -e 2>/dev/null
이 명령은 자동이지만 종료 상태는 스크립트(및 이를 실행하는 사용자)를 사용할 수 있는지 여부를 나타냅니다 crontab
.
다른 사용자 추가를 테스트하려면 -u username
( crontab
지원하는 경우) 스크립트에 -u
다른 사용자를 대신하여 실행할 수 있는 충분한 권한이 있는 경우에만 작동합니다. 권한 이 없는 스크립트는 다른 사용자가 사용할 수 없는 것처럼 crontab
종료 상태를 갖습니다 .1
crontab
sudo -u username …
sudo
아니면 아닐지도 몰라구성에 따라 환경을 설정할 수 있습니다.
결점:
- 지원할
crontab
수도 있고 지원하지 않을 수도 있습니다-e
(POSIX에서는 선택 사항이라고 말합니다). - 이 방법은 "사용자가 사용할 수 있는지
crontab
"를 정확하게 확인하는 것이 아니라 "스크립트가crontab
사용자를 대신하여 사용할 수 있는지"를 확인하는 것입니다. 이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다. "특정 사용자"가 "스크립트를 실행하는 사용자"를 의미하는 경우에는 그럴 필요가 없으며-u
메서드는 제대로 작동합니다.
이점:
/etc/cron.allow
and를 분석할 필요가 없습니다/etc/cron.deny
(사용된 경우 구현 정의 디렉터리에 있음). 최종 답변을 구성하기 위해 논리를 구축할 필요가 없습니다.crontab
그것은 당신을 위해 모든 것을 스스로 할 것입니다.
노트:
- 내 Kubuntu 18.04.5 LTS에서 이전에
crontab
확인했지만VISUAL
EDITOR
POSIX 사양만 언급되었습니다EDITOR
. 이것이 바로 이 답변이 두 가지 변수를 설정하는 이유입니다. - 더 좋아 보일 수도 있지만
crontab -l
crontab이 없으면 명령은 실패를 반환합니다(적어도 내 Kubuntu에서는 그렇게 작동합니다). VISUAL=true crontab -e
내 Kubuntu 18.04.5 LTS에서 crontab 이 존재하지 않으면아니요빈 것을 설치하십시오. 다른 구현에 대해서는 잘 모르겠습니다. crontab이 없으면 빈 crontab을 설치하면 부작용이 발생할 수 있습니다.