Czy w /etc/cron.d/ można używać dowiązań symbolicznych?

25

Próbuję wdrożyć mechanizm konfiguracji, który pozwala w pewnym projekcie wdrożyć za pośrednictwem svn konfigurację cron.

Natychmiast pomyślałem, że powinnam zrobić cerate dowiązania symboliczne z /etc/cron.d/ do pliku cron mojego projektu (który z kolei jest kontrolowany przez vcs), ale wydaje się, że to nie działa.

Znalazłem kilka starych wiadomości na forum, które informowały, że dowiązania symboliczne nie były obsługiwane, a inne, że tak. Który to jest?

Czy jest coś jeszcze lub inny dobry sposób na osiągnięcie tego?

Luís Faceira
źródło

Odpowiedzi:

27

Według man crond

UWAGI

Wszystkie pliki crontab muszą być zwykłymi plikami lub dowiązaniami symbolicznymi do zwykłych plików, nie mogą być wykonywalne ani zapisywalne dla nikogo innego niż właściciela. Wymaganie to można zastąpić, używając opcji -p w wierszu komend crond. Jeśli używana jest obsługa uwierzytelniania, zmiany w dowiązanych plikach crontab nie są automatycznie wykrywane przez demona cron. Demon cron musi odebrać sygnał SIGHUP, aby ponownie załadować crontabs. Jest to ograniczenie interfejsu API inotify.

Dane wyjściowe syslog będą używane zamiast poczty, gdy sendmail nie jest zainstalowany.

Zirytowało mnie to także bzdury. Krótko mówiąc, tak, możesz używać dowiązań symbolicznych, jeśli nie regular files or symlinks to a regular file, musisz użyć -pprzełącznika.

kim jestem
źródło
1
Przekonasz się również, że plik musi być własnością użytkownika, dla którego cron wykonuje zadania; na przykład, jeśli dowiązanie symboliczne /etc/cron.d/bobsjobwskazuje plik należący do użytkownika „bob”, cron zawiedzie z komunikatem syslog WRONG FILE OWNER (/etc/cron.d/bobsjob).
Craig Ringer
@CraigRinger Mam użytkownika o nazwie „www-data”, który jest właścicielem pliku cron, obecnie w syslog pojawia się błąd ZŁY WŁAŚCICIEL PLIKU. Jak mogę uruchomić Crona przy użyciu użytkownika „www-data”. Nie chcę, aby root był właścicielem pliku.
CMCDragonkai
@CMCDragonkai sudo -u www-data crontab -ei dodaj go do crontab użytkownika danych www. Następnie będzie działać jako użytkownik www-data. Pamiętaj, aby usunąć jawną kolumnę użytkownika, ponieważ nie istnieje ona w plikach crontab użytkownika.
Craig Ringer
Czy to umieści plik w środku etc/cron.? Miałem wrażenie, że narzędzie crontab umieściłoby to zadanie gdzie indziej.
CMCDragonkai
@CMCDragonkai Masz rację, dzwonienie crontab -enie jest tym, czego chcesz w tym przypadku. Szukam, ale nie znalazłem sposobu na uruchomienie crontab użytkownika jako użytkownik inny niż root.
ACK_stoverflow
14

Ma to wpływ na bezpieczeństwo. Skrypty w /etc/cron.d/ są uruchamiane przez użytkownika root z uprawnieniami administratora. Dobrym pomysłem jest łączenie skryptów tam, które są własnością i mogą być zapisywane dla użytkowników innych niż root, ponieważ może to zagrozić systemowi

Florian Heinle
źródło
4

Sprawdziłbym stronę cron dla twojej wersji Ubuntu (zakładam, że mówimy o Ubuntu na tym forum!):

Pliki w tym katalogu muszą należeć do roota, nie muszą być wykonywalne (są to pliki konfiguracyjne, podobnie jak / etc / crontab) i muszą być zgodne z tą samą konwencją nazewnictwa, z której korzystają części wykonawcze (8): muszą składają się wyłącznie z wielkich i małych liter, cyfr, znaków podkreślenia i łączników. Oznacza to, że nie mogą zawierać żadnych kropek.

Jak zauważa Florian, jeśli plik ten może być zapisywany przez użytkowników innych niż root, jest to dziura w zabezpieczeniach, ponieważ zadania będą uruchamiane przez użytkownika root (dla każdego, kto jest określony jako właściciel zadania w pliku). Dlatego też zauważcie, że

Ten katalog może zawierać dowolne pliki definiujące zadania zgodnie z formatem używanym w / etc / crontab, tj. W przeciwieństwie do bufora cron użytkownika, pliki te muszą zawierać nazwę użytkownika, aby uruchomić zadanie jak w definicji zadania.

tzn. wstaw nazwę użytkownika przed uruchomieniem polecenia.

piana
źródło
1
Oznacza to, że nie mogą zawierać żadnych kropek. zwróć na to uwagę. Miałem kropkę w nazwie linku. Był to dla mnie winowajca za niepracujące prace. Plus: sam plik MUSI kończyć się CRLF
Dr. Gianluigi Zane Zanettini