/etc/cron.d/에서 심볼릭 링크를 사용할 수 있습니까? 특정 프로젝트에서

특정 프로젝트에서 svn cron 구성을 통해 배포 할 수있는 구성 메커니즘을 구현하려고합니다.

나는 즉시 내가해야 할 일은 /etc/cron.d/에서 프로젝트의 cron 파일 (차례로 vcs에 의해 제어 됨)에 대한 특정 symlinks이지만 작동하지 않는 것 같습니다.

symlinks가 지원되지 않았다고 말하는 다른 포럼 메시지와 다른 링크를 발견했습니다. 무엇 이니?

이것을 달성 할 수있는 다른 방법이나 다른 좋은 방법이 있습니까?



답변

에 따르면 man crond

주의 사항

모든 crontab 파일은 일반 파일이거나 일반 파일에 대한 심볼릭 링크 여야하며 소유자 이외의 다른 사람이 실행할 수 있거나 쓸 수 없어야합니다. crond 명령 줄에서 -p 옵션을 사용하여이 요구 사항을 무시할 수 있습니다. inotify 지원이 사용 중이면 cron 데몬이 심볼릭 크론 탭의 변경 사항을 자동으로 알 수 없습니다. cron 데몬은 SIGHUP 신호를 수신하여 crontab을 다시로드해야합니다. 이것은 inotify API의 한계입니다.

sendmail이 설치되지 않은 경우 메일 대신 syslog 출력이 사용됩니다.

그것은 나에게서 살아있는 쓰레기를 짜증나게했다. 간단히 말해서 당신은 심볼릭 링크를 사용할 수 있지만, 그렇지 않다면 스위치 regular files or symlinks to a regular file를 사용해야한다 -p.


답변

이것은 보안에 영향을 미칩니다. /etc/cron.d/의 스크립트는 루트 권한으로 루트에 의해 실행됩니다. 시스템이 그렇게 손상 될 수 있기 때문에 루트가 아닌 사용자가 소유하고 쓸 수있는 스크립트를 심볼릭 링크하는 것은 좋지 않습니다.


답변

귀하의 Ubuntu 버전에 대한 cron 맨 페이지를 확인하고 싶습니다 (이 포럼에서 Ubuntu를 사용한다고 가정합니다!) :

이 디렉토리의 파일은 루트가 소유해야하고 실행 파일 일 필요는 없으며 (/ etc / crontab과 같은 구성 파일) run-parts (8)에서 사용하는 것과 동일한 명명 규칙을 따라야합니다. 대문자, 소문자, 숫자, 밑줄 및 하이픈으로 만 구성됩니다. 즉, 점을 포함 할 수 없습니다.

Florian이 지적한 것처럼 루트가 아닌 사용자가이 파일을 쓸 수있는 경우 작업이 루트 (파일에서 작업 소유자로 지정된 사람)에 의해 실행되므로 보안상의 문제가됩니다. 따라서

이 디렉토리에는 / etc / crontab에서 사용 된 형식에 따라 작업을 정의하는 모든 파일이 포함될 수 있습니다. 즉, 사용자 cron 스풀과 달리 이러한 파일은 작업 정의에서와 같이 작업을 실행할 사용자 이름을 제공해야합니다.

즉, 명령을 실행하기 전에 사용자 이름을 입력하십시오.


답변