Ich schreibe ein Skript, um die Berechtigungen von Dateien in Benutzerverzeichnissen zu überprüfen, und wenn sie nicht akzeptabel sind, werde ich sie warnen, aber ich möchte die Berechtigungen nicht nur der eingeloggten überprüfen Benutzer, aber auch Gruppe und andere. Wie kann ich das machen? Es scheint mir, dass .access() in Python nur die Berechtigungen für den Benutzer überprüfen kann, der das Skript ausführt.Überprüfen von Dateiberechtigungen in Linux mit Python
Antwort
Sie haben Recht, dass os.access, wie der zugrunde liegende access syscall, nach einem bestimmten Benutzer (echte statt effektive IDs, um mit suid Situationen zu helfen) überprüft.
ist der richtige Weg, um allgemeinere Informationen über eine Datei zu erhalten, einschließlich Berechtigungen pro Benutzer, Gruppe und andere. Das st_mode
Attribut des Objekts, das os.stat
zurückgibt, hat die Berechtigungsbits für die Datei.
Um die Interpretation dieser Bits zu erleichtern, können Sie das Modul stat verwenden. Insbesondere möchten Sie die Bitmasken definiert here, und Sie verwenden die &
-Operator (Bit-und), um sie verwenden, um die relevanten Bits in diesem st_mode
Attribut maskieren - zum Beispiel, wenn Sie nur eine True/False benötigen überprüfen, ob eine bestimmte Datei ist gruppen lesbar, ein Ansatz ist:
import os
import stat
def isgroupreadable(filepath):
st = os.stat(filepath)
return bool(st.st_mode & stat.S_IRGRP)
pflegen: der os.stat
Anruf kann etwas teuer sein, so stellen Sie sicher, dass alle Informationen, die Sie über mit einem einzigen Anruf kümmern zu extrahieren, anstatt Wiederhole die Anrufe für jedes Bit von Interesse ;-).
Verwenden Sie os.access()
mit Flags os.R_OK
, os.W_OK
und os.X_OK
.
Bearbeiten: Überprüfen Sie this related question, wenn Sie Verzeichnisberechtigungen unter Windows testen.
Sie die Frage nur knapp sein Ziel zu lesen, prüft os.access nur Berechtigungen für der aktuelle Benutzer. –
Sie können die Dateiberechtigungen über os.stat(path)
in Verbindung mit dem Modul stat
überprüfen, um die Ergebnisse zu interpretieren.
Gerade andere Leute wie mich zu helfen, die für etwas ein bisschen anders hier kam:
import os
import stat
st = os.stat(yourfile)
oct_perm = oct(st.st_mode)
print(oct_perm)
>>> 0o100664 //the last 3 or 4 digits is probably what you want.
dies Siehe für weitere Informationen: https://stackoverflow.com/a/5337329/1814774
- 1. Linux lesen Dateiberechtigungen
- 2. Android/Linux-Dateiberechtigungen Problem
- 3. Überprüfen Sie die Dateiberechtigungen
- 4. sed Befehl Dateiberechtigungen zu ändern linux
- 5. Linux-Dateiberechtigungen (in-depth) - numerisch in String-Notation und umgekehrt; zusätzliche Dateiberechtigungen
- 6. Warum zeigen sich Dateiberechtigungen in Python und bash anders?
- 7. Dateiberechtigungen mit Git beibehalten
- 8. php - Ändern von Dateiberechtigungen
- 9. Überprüfen von Peer in SSL mit Python
- 10. Dateiberechtigungen Problem mit Silverlight
- 11. Verwalten von Dateiberechtigungen mit Npm OSX
- 12. Wie lautet die Python-Methode zum rekursiven Festlegen von Dateiberechtigungen?
- 13. Sichere Python-Umgebung in Linux
- 14. über Dateiberechtigungen in C#
- 15. WCF-Dateiberechtigungen?
- 16. Überprüfen von Benutzeroptionen - Python
- 17. Linux-Tools zum Überprüfen von Windows-DLLs
- 18. Aktualisieren von Dateiberechtigungen nur in git
- 19. Bearbeiten von Windows-Dateiberechtigungen in Java
- 20. Wie programmiere ich programmgesteuert Dateiberechtigungen?
- 21. Wie interagiert Python mit Linux?
- 22. Linux-Befehl entspricht von Hash() in Python
- 23. Authentifizieren Benutzer in Linux mit Python 3
- 24. Maxlen von Deque in Python überprüfen 2.6
- 25. Erstellen eines Benutzers in Linux mit Python
- 26. Überprüfen, ob Datei existiert in einem Verzeichnis von Regex Linux
- 27. Überprüfen der Monotonie von Untersequenzen in Python
- 28. Python-Interpreter mit Linux-Bildschirm
- 29. Überprüfen Länge der Zeichenfolge - Linux
- 30. entfernen explizite Unix-Dateiberechtigungen
Wunderbar, genau das habe ich mir erhofft. Vielen Dank. Ich habe gerade damit begonnen, Python für ein kleines Projekt bei der Arbeit aufzuheben, also kann ich sagen, dass ich noch lerne. Vielen Dank! – jphenow
Sehr nettes Dienstprogramm. Vielen Dank! – zerocog