2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

Jak uruchomić zadanie cron jako określony użytkownik?

Chciałbym uruchomić zadanie cron jako określony użytkownik na mojej maszynie. Jak mogę określić użytkownika, jako którego ma być uruchamiane zadanie cron?

Zadania cron będą uruchamiane na serwerze (działającym na Ubuntu 10.0.4). Użytkownicy" są użytkownikami, którzy zostali stworzeni specjalnie do wykonywania określonych zadań po stronie serwera. Użytkownicy ci mają następujące cechy wspólne:

  • nie mogą się zalogować do systemu
  • mają ograniczony dostęp do określonych folderów/plików

Odpowiedzi (4)

80
80
80
2010-08-02 11:52:46 +0000

Zakładając, że nie możesz po prostu zalogować się i dodać go do crontaba tego użytkownika, umieść plik w /etc/cron.d. Powinien on być sformatowany jak normalny cronjob, ale z dodatkowym polem. Przed komendą do uruchomienia i po czasie, umieść użytkownika. Powinieneś być w stanie znaleźć przykłady już w swoim systemie.

Przykład:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

Jako root, aby edytować crona użytkownika1:

crontab -u user1 -e

Można też uruchomić polecenie z:

su user1 -c foo bar

Ale często same skrypty ograniczają sobie dostęp, gdy są uruchamiane jako root.

1
1
1
2013-04-27 16:49:38 +0000

Szukałem tego od kilku tygodni i to w końcu zadziałało…

Stwórz swój skrypt jako user1

ssh user1@ipaddress
nano hourly-event.sh

wpisz jakąś komendę

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

uczyń ją wykonywalną

chmod 755 hourly-event.sh

edytuj crontab dla user1

sudo crontab -u user1 -e

umieść linię na dole wskazującą na twój skrypt(y)

# m h dom mon dow command
* * * * * bash ./hourly-event.sh

wyjdź -… zapisywanie zmian (przy zapisie pojawi się katalog /tmp. .. it’s ok)

wait for the turn of the minute

open your newly created yay.txt

nano /home/user1/yay.txt

you should now have a nano window open with “YAY it works” as the first and only line if the bottom of your nano window say New File… well… i dunno

you can also check your newly crontab entry for user1 at: /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

Czasami możesz chcieć, aby użytkownik załadował swoje środowisko, szczególnie gdy używasz “rbenv”, “nvm”, tak jak poniżej:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(tutaj komenda source ~/.bash_profile załaduje Ci środowisko Ruby lub Node.