Użytkownik x nie może korzystać z tego programu (crontab)

9

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.allowplik i nie ma /etc/cron.denypliku. 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, crontabgdy jawnie przełączam się na konto użytkownika?

Dodanie użytkownika do /etc/cron.allowpoprawnego działania obu poleceń.

Adam Michalik
źródło
1
Mówi tylko, że nie ma crontab. Co się stanie, jeśli spróbujesz go utworzyć crontab -e(jako kurator użytkownika)?
Fiximan
1
Nie można odtworzyć tego problemu na obrazie trusty64; z pustym cron.allowplikiem, zarówno, jak root crontab -u vagrant -li crontab -ljako vagrantwynik, powoduje wyświetlenie are not allowed to use this programwiadomości (która różni się od cytowanej wiadomości).
thrig 27.07.16

Odpowiedzi:

11

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óźniej chmod 0 /etc/cron.allow), crontab uważa, że ​​użytkownik może go używać (jakby cron.allownie 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.allowi być może dzienników kontroli SELinux / AppArmor.

Michael Zarubin
źródło
Wygląda na to, że tak - zweryfikowałem, że chmod -r /etc/cron.allowrzeczywiście powoduje to opisane zachowanie w moim systemie Ubuntu 14.04
steeldriver
Spot on! Moje /etc/cron.allowuprawnienia były 600, po zmianie na 644oba rooti curatorzobaczyłem not allowed to use this program (crontab)wiadomość. Następnie po dodaniu curatordo /etc/cron.allowobu można użyć crontab kuratora.
Adam Michalik