Ubuntu 14.04
Nie rozumiem zachowania, które widzę podczas konfigurowania crontab dla konta usługi (bez logowania) (o nazwie curator
).
Kiedy jestem zalogowany jako root, otrzymuję:
# crontab -u curator -l
The user curator cannot use this program (crontab)
Ale kiedy przełączę się na konto użytkownika, działa dobrze:
# su -s /bin/bash curator
curator@host$ crontab -l
no crontab for curator
W systemie jest pusty /etc/cron.allow
plik i nie ma /etc/cron.deny
pliku. Według man crontab
:
Jeśli istnieje plik /etc/cron.allow, musisz być w nim wymieniony (jeden użytkownik na linię), aby móc korzystać z tego polecenia. Jeśli plik /etc/cron.allow nie istnieje, ale plik /etc/cron.deny istnieje, oznacza to, że nie możesz być wymieniony w pliku /etc/cron.deny, aby użyć tej komendy.
Rozumiem błąd, gdy uruchamiam pierwsze polecenie, ale dlaczego pozwala mi na uruchomienie, crontab
gdy jawnie przełączam się na konto użytkownika?
Dodanie użytkownika do /etc/cron.allow
poprawnego działania obu poleceń.
crontab -e
(jako kurator użytkownika)?cron.allow
plikiem, zarówno, jakroot
crontab -u vagrant -l
icrontab -l
jakovagrant
wynik, powoduje wyświetlenieare not allowed to use this program
wiadomości (która różni się od cytowanej wiadomości).Odpowiedzi:
Sprawdziłem źródła crontab i stwierdziłem, że jeśli użytkownik nie może otworzyć
/etc/cron.allow
(na przykład późniejchmod 0 /etc/cron.allow
), crontab uważa, że użytkownik może go używać (jakbycron.allow
nie istniał).Ale root może odczytać dowolny plik, więc kod sprawdzający crontab działa zgodnie z oczekiwaniami. Dlatego polecam sprawdzenie pierwszych uprawnień
/etc/cron.allow
i być może dzienników kontroli SELinux / AppArmor.źródło
chmod -r /etc/cron.allow
rzeczywiście powoduje to opisane zachowanie w moim systemie Ubuntu 14.04/etc/cron.allow
uprawnienia były600
, po zmianie na644
obaroot
icurator
zobaczyłemnot allowed to use this program (crontab)
wiadomość. Następnie po dodaniucurator
do/etc/cron.allow
obu można użyć crontab kuratora.