Mam kilka zadań crontab, które działają z uprawnieniami administratora, ale stwarza to pewne problemy. Na przykład wszystkie foldery utworzone w trakcie tego zadania cron znajdują się w katalogu głównym użytkownika i katalogu głównego grupy. Jak mogę sprawić, by działał z danymi www użytkownika i grupowymi danymi www, więc kiedy uruchamiam skrypty z mojej strony internetowej, mogę manipulować tymi folderami i plikami?
Mój serwer działa na Ubuntu.
Obecne zadanie crontab to:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
jako określonego użytkownika.cron
w systemach * nix nie wymaga logowania użytkownika w celu wykonania zadań określonych w crontab konkretnego użytkownika.EDYCJA: Zauważ, że ta metoda nie będzie działać z crontab -e, ale działa tylko wtedy, gdy edytujesz bezpośrednio / etc / crontab. W przeciwnym razie może pojawić się błąd, taki jak
/bin/sh: www-data: command not found
Tuż przed nazwą programu:
źródło
crontab -e
, ale działa tylko wtedy, gdy edytujesz/etc/crontab
bezpośrednio. Przeczytaj komentarz u góry tego pliku, aby uzyskać więcej informacji.sudo crontab -e
, widzę oferty pracy. Ale otwieram plik,/etc/crontab
nie ma pracy. Czy to jest dziwne?sudo crontab -e
Czy to zadziała, jeśli dodam ofertę pracy z określonym użytkownikiem?Ponieważ używasz Ubuntu, twój systemowy plik crontab znajduje się pod adresem
/etc/crontab
.Jako użytkownik root (lub używając sudo) możesz po prostu edytować ten plik i określić użytkownika, który powinien uruchomić to polecenie. Oto format wpisów w systemowej tabeli crontab i sposób wpisywania komendy:
Oczywiście uprawnienia do skryptu php i pliku dziennika powinny być ustawione tak, aby
www-data
użytkownik miał do nich dostęp.źródło
crontab -e
chociaż”; ale nie.Możesz także spróbować użyć
runuser
(jako root), aby uruchomić polecenie jako inny użytkownikZobacz też:
man runuser
źródło
runuser
nie jest zawarty w Ubuntu.Sugestia Mike'a brzmi jak „właściwy sposób”. Natknąłem się na ten wątek, chcąc określić użytkownika, który ma działać
vncserver
po ponownym uruchomieniu i chciałem zachować wszystkie moje zadania crona w jednym miejscu.Otrzymałem następujący błąd dla crona VNC:
W moim przypadku mogłem użyć
sudo
do określenia, kto ma uruchomić zadanie.źródło
sudo: sorry, you must have a tty to run sudo