/etc/cron.d/에서 심볼릭 링크를 사용할 수 있습니까?


25

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

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

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

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

답변:


27

에 따르면 man crond

주의 사항

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

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

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


1
또한 cron이 작업을 실행중인 사용자가 파일을 소유해야합니다. 예를 들어, 심볼릭 링크가 /etc/cron.d/bobsjob"bob"사용자가 소유 한 파일을 가리키는 경우 cron은 syslog 메시지와 함께 실패합니다 WRONG FILE OWNER (/etc/cron.d/bobsjob).
Craig Ringer

@CraigRinger cron 파일을 소유 한 "www-data"라는 사용자가 있는데 현재 syslog에 WRONG FILE OWNER 오류가 발생했습니다. "www-data"사용자를 사용하여 Cron을 실행하려면 어떻게해야합니까? 루트가 파일을 소유하고 싶지 않습니다.
CMCDragonkai

@CMCDragonkai를 sudo -u www-data crontab -ewww-data 사용자의 crontab에 추가하십시오. 그런 다음 user로 실행됩니다 www-data. 명시 적 사용자 열은 사용자 crontab에 없기 때문에 제거해야합니다.
Craig Ringer

파일이 내부에 배치 etc/cron.됩니까? 나는 crontab 도구가 작업을 다른 곳에 배치 할 것이라는 인상을 받았습니다.
CMCDragonkai

@CMCDragonkai 당신은 맞습니다. 전화 crontab -e는이 경우에 원하는 것이 아닙니다. 찾고 있지만 루트가 아닌 사용자로 사용자 crontab을 실행하는 방법을 찾지 못했습니다.
ACK_stoverflow

14

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


4

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

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

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

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

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


1
즉, 점을 포함 할 수 없습니다. 이것에주의하십시오. 링크 이름에 점이 생겼습니다. 그것은 나를 위해 비 실행중인 직업의 범인이었습니다. 또한 : 파일 자체는 반드시 CRLF로 끝나야합니다
Dr. Gianluigi Zane Zanettini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.