
Ich arbeite an einem Python-Skript und habe eine Datei im Ordner /var/log/ mit 664 Berechtigungen erstellt
Das Python-Skript kann keine Protokolle in die erstellte Datei schreiben. Ich weiß nicht warum, da der Dateieigentümer Ubuntu ist (der Standardbenutzer von AWS).
sehr sorgfältig habe ich Lese- und Schreibrechte für die Datei vergeben
Geplanter Crontab konnte die App aufgrund eines Berechtigungsverweigerungsproblems nicht ausführen. Irgendwelche Ideen?
i) der Befehl, den Sie zum Einrichten der Crontab verwendet haben - crontab -e
ii) die Crontab-Zeile, die das Python-Skript ausführt - */30 * * * * python3 /home/ubuntu/message_initiator.py
iii) die genaue Fehlermeldung -Permission denied: '/var/log/ice-message-initiator.log'
Antwort1
Wenn du läufst
ll -d /var/log
Dann sehen Sie, dass es root
(möglicherweise mit syslog
als Gruppe) im Besitz von ist und die Berechtigungen 755 oder 775 hat, was bedeutet, dass andere das Verzeichnis zwar lesen und durchsuchen können, es aber nur root
(und möglicherweise syslog
) ändern können. ice-message-initiator.log
ist in /var/log
und hat, obwohl ubuntu
es sein Besitzer ist, ubuntu
keine Änderungsberechtigung, /var/log
was bedeutet, dass es seinen Inhalt nicht ändern kann, egal ob es sich um Dateien oder Verzeichnisse handelt. Der Fehler tritt nicht auf, weil der ubuntu
Benutzer die Datei nicht lesen kann, sondern weil er nicht in die Datei schreiben kann, da er keine Änderungsberechtigung für das übergeordnete Verzeichnis hat /var/log
.
Damit Ihr Cronjob funktioniert, müssen Sie ihn entweder als ausführen root
oder die Protokolldatei in ein Unterverzeichnis (z. B.) schreiben lassen /var/log/ice
und ubuntu
ihm Änderungsberechtigungen erteilen.