Le problème
Un utilisateur non privilégié ne peut pas modifier son fichier crontab à l'aide de la commande "crontab -e"
$ crontab -e no crontab for oracle - using an empty one /tmp/crontab.Lm34gsJV: Permission denied $
La solution
Cela peut se produire principalement en raison d'une mauvaise autorisation sur le répertoire /tmp. Lorsqu'un utilisateur essaie de modifier la crontab à l'aide de la commande "crontab -e", un fichier crontab temporaire est créé dans le répertoire /tmp, qui est écrasé sur le fichier crontab réel lorsque l'utilisateur enregistre les modifications. Des autorisations incorrectes de propriétaire de groupe (racine) sur / peuvent également provoquer cette erreur. Afin de résoudre le problème, vérifiez ci-dessous 2 éléments sur le serveur.
Vérifier l'autorisation de /tmp
1. assurez-vous que les autorisations du répertoire /tmp sont "drwxrwxrwt. ”
# ls -ld /tmp/ drwxr-xr-x. 13 root root 4096 May 14 10:48 /tmp/
Comme vous pouvez le voir dans la sortie ci-dessus, il s'agit d'une autorisation incorrecte.
2. Restaurez les bonnes autorisations comme ceci :
# chmod 1777 /tmp
Le répertoire doit autoriser les autorisations universelles de lecture, d'écriture et d'exécution. Le bit "collant" est également défini de sorte que seul le propriétaire d'un fichier puisse le supprimer ; sinon n'importe quel utilisateur pourrait supprimer n'importe quel fichier arbitraire dans le répertoire.
3. Essayez de créer un nouveau fichier dans /tmp/ pour vérifier :
# touch /tmp/test_file
Vérifier les autorisations SELinux
1. Vous pouvez également vérifier si SELinux est activé sur le système. SELinux dans certains cas, s'il est mal défini, peut créer un problème. Pour vérifier si SELinux est activé :
# getenforce Enforcing
2. Désactivons temporairement SELinux pour vérifier si le problème est résolu.
# setenforce 0
3. Vérifiez les paramètres en modifiant la crontab utilisateur.
# crontab -e
4. Si cela fonctionne correctement, vous pouvez réactiver SELinux et utiliser "restorecon ” pour restaurer l'autorisation correcte du répertoire /tmp.
# setenforce 1 # restorecon -v /tmp