Das Problem
Ein nicht privilegierter Benutzer kann seine Crontab-Datei nicht mit dem Befehl „crontab -e“
bearbeiten$ crontab -e no crontab for oracle - using an empty one /tmp/crontab.Lm34gsJV: Permission denied $
Die Lösung
Dies kann hauptsächlich aufgrund einer falschen Berechtigung für das /tmp-Verzeichnis passieren. Wenn ein Benutzer versucht, die Crontab mit dem Befehl „crontab -e“ zu bearbeiten, wird eine temporäre Crontab-Datei im /tmp-Verzeichnis erstellt, die die eigentliche Crontab-Datei überschreibt, wenn der Benutzer die Änderungen speichert. Falsche Berechtigungen des Gruppenbesitzers (Root) auf / können ebenfalls diesen Fehler verursachen. Um das Problem zu lösen, überprüfen Sie die folgenden 2 Dinge auf dem Server.
Überprüfen Sie die Berechtigung von /tmp
1. Stellen Sie sicher, dass die Berechtigungen des /tmp-Verzeichnisses „drwxrwxrwt. sind ”
# ls -ld /tmp/ drwxr-xr-x. 13 root root 4096 May 14 10:48 /tmp/
Wie Sie in der obigen Ausgabe sehen können, handelt es sich um eine falsche Berechtigung.
2. Stellen Sie die korrekten Berechtigungen wie folgt wieder her:
# chmod 1777 /tmp
Das Verzeichnis muss weltweit Lese-, Schreib- und Ausführungsberechtigungen zulassen. Auch das „Sticky“-Bit wird gesetzt, damit nur der Eigentümer einer Datei diese löschen kann; andernfalls könnte jeder Benutzer jede beliebige Datei im Verzeichnis löschen.
3. Versuchen Sie, eine neue Datei in /tmp/zu erstellen, um Folgendes zu überprüfen:
# touch /tmp/test_file
Überprüfen Sie die SELinux-Berechtigungen
1. Sie können auch überprüfen, ob SELinux auf dem System aktiviert ist. SELinux kann in einigen Fällen, wenn es falsch eingestellt ist, zu Problemen führen. So überprüfen Sie, ob SELinux aktiviert ist:
# getenforce Enforcing
2. Lassen Sie uns SELinux vorübergehend deaktivieren, um zu prüfen, ob das Problem behoben wird.
# setenforce 0
3. Überprüfen Sie die Einstellungen, indem Sie die Crontab des Benutzers bearbeiten.
# crontab -e
4. Wenn es gut funktioniert, möchten Sie vielleicht SELinux wieder aktivieren und „restorecon verwenden ” um die korrekte Berechtigung des Verzeichnisses /tmp wiederherzustellen.
# setenforce 1 # restorecon -v /tmp