L'utilisateur x ne peut pas utiliser ce programme (crontab)

9

Ubuntu 14.04

Je ne comprends pas le comportement que je vois avec la configuration de crontab pour un compte de service (sans connexion) (nommé curator).

Lorsque je suis connecté en tant que root, voici ce que j'obtiens:

# crontab -u curator -l
The user curator cannot use this program (crontab)

Mais, lorsque je passe au compte de l'utilisateur, cela fonctionne très bien:

# su -s /bin/bash curator
curator@host$ crontab -l
no crontab for curator

Il y a un /etc/cron.allowfichier vide et aucun /etc/cron.denyfichier sur le système. Selon man crontab:

Si le fichier /etc/cron.allow existe, vous devez y être répertorié (un utilisateur par ligne) pour pouvoir utiliser cette commande. Si le fichier /etc/cron.allow n'existe pas mais que le fichier /etc/cron.deny existe, vous ne devez pas figurer dans le fichier /etc/cron.deny pour utiliser cette commande.

Je comprends l'erreur lorsque j'exécute la première commande, mais pourquoi me permet-elle de s'exécuter crontablorsque je passe explicitement au compte de l'utilisateur?

L'ajout de l'utilisateur à /etc/cron.allowfait fonctionner correctement les deux commandes.

Adam Michalik
la source
1
Il dit simplement qu'il n'y a pas de crontab. Que se passera-t-il si vous essayez d'en créer un via crontab -e(en tant que curateur d'utilisateurs)?
Fiximan
1
Impossible de reproduire ce problème sur l'image trusty64 vagabonde; avec un cron.allowfichier vide , le root crontab -u vagrant -let crontab -lcomme vagrantrésultat dans un are not allowed to use this programmessage (différent du message que vous citez).
thrig

Réponses:

11

J'ai vérifié les sources de crontab et j'ai découvert que si l'utilisateur ne peut pas ouvrir /etc/cron.allow(par exemple après chmod 0 /etc/cron.allow), crontab pense que l'utilisateur est autorisé à l'utiliser (comme s'il cron.allown'existait pas).

Mais root peut lire n'importe quel fichier, donc le code de vérification crontab fonctionne comme prévu. Je vous recommande donc de vérifier d'abord les autorisations /etc/cron.allow, et peut-être les journaux d'audit SELinux / AppArmor.

Michael Zarubin
la source
Cela semble être le cas - j'ai vérifié que cela chmod -r /etc/cron.allowprovoque effectivement le comportement décrit sur mon système Ubuntu 14.04
steeldriver
Spot on! Mes /etc/cron.allowautorisations étaient 600, après l'avoir changé à la 644fois rootet curatorvu le not allowed to use this program (crontab)message. Ensuite, après avoir ajouté curatoraux /etc/cron.allowdeux, vous pouvez utiliser la crontab du conservateur.
Adam Michalik