Moja LAMPA jest skonfigurowana do pracy user:www-data
i wszystkie pliki i foldery są tworzone z tymi uprawnieniami.
Mam konfigurację crontab jako użytkownik @ ubuntu.
Więc robię crontab -e
i używam tego polecenia:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Zasadniczo to polecenie po prostu tworzy plik pamięci podręcznej w określonym miejscu (nie ma z tym problemów), ale ten plik pamięci podręcznej jest tworzony z użytkownikiem: uprawnienia użytkownika, a nie user:www-data
uprawnienia.
Jak mogę sprawić, że domyślnie utworzy plik z user:www-data
uprawnieniami?
Nie mogę przejść i za chown
każdym razem plik jest odtwarzany.
Dzięki.
awstats
lubphp5
sessionclean), znajdują się w/etc/cron.*
katalogach i dlatego nie są widocznecrontab -e
(nawet przy podawaniu danych www użytkownika ).Odpowiedzi:
Możesz napisać swój wpis w systemie crontab
/etc/crontab
, który wymaga dodatkowego argumentu określającego, że użytkownik ma być uruchamiany (zwykle root, ale może to być www-data).Twoja linia stałaby się:
Lub możesz edytować tabelę danych www użytkownika za pomocą
su
:źródło
/etc/cron.d
z nazwy opisowej, na przykład ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
Możesz również uruchomić crontab z
-u
argumentem, aby edytować crontab dla konkretnego użytkownika:źródło
Aby uruchomić crontab jako dane www użytkownika, możesz użyć następującego polecenia:
Następnie piszesz wiersz, na przykład, aby uruchamiać plik php co 15 minut:
Podczas zapisywania edytor zapyta:
Zapisz to, bez obaw.
crontab -e
otwiera plik w / tmp zamiast rzeczywistego pliku crontab, aby mógł sprawdzić, czy w nowym pliku crontab nie ma błędów, i zapobiec nadpisaniu pliku crontab tymi błędami. Jeśli nie ma żadnych błędów, twój aktualny plik crontab zostanie zaktualizowany. Jeśli crontab -e właśnie napisał prosto do twojego prawdziwego pliku crontab, wtedy ryzykowałbyś zdmuchnięciem całego pliku crontab.Aby sprawdzić, czy działa cronjob, możesz sprawdzić dzienniki cron. zwykle w /var/log/cron.log lub wykonanie następującego polecenia:
źródło
Chciałbym dodać inne podejście. Jak wspomnieli inni, Ubuntu (tutaj 16.04) i crontab www-data wydają się niewiarygodne (może to kwestia bezpieczeństwa?).
W każdym razie w naszej firmie lubimy mieć wszystkie cronjoby na serwerze łatwo dostępne, więc niczego nie przegapisz. Jednocześnie nie chcemy uruchamiać wszystkiego (naprawdę nic!) Jako root.
Dlatego biegniemy
Jak zwykle, a następnie określamy polecenie jako
Spowoduje to wykonanie polecenia / path / to / jako danych www, jednocześnie zachowując cronjob w głównym pliku cronjobs (i to zawsze będzie działać poprawnie). Ma tę zaletę, że może zapisywać pliki dziennika jako root (dla maksymalnego bezpieczeństwa) przy użyciu potoków.
Zauważ, że przekazujemy naszą preferowaną powłokę, może to być również / bin / sh dla prostszej powłoki (lubimy pełne możliwości bash). Www-data nie ma określonej powłoki, więc bez niej pojawią się błędy. Zwykle cron uruchamia zadania tylko z / bin / sh.
źródło