Piszę skrypt, aby sprawdzić uprawnienia plików w katalogach użytkownika, a jeśli nie są akceptowane, będę je ostrzegał, ale chcę sprawdzić uprawnienia nie tylko zalogowanych użytkownik, ale także grupa i inne. Jak mogę to zrobić? Wydaje mi się, że .access() w Pythonie może tylko sprawdzić uprawnienia dla użytkownika uruchamiającego skrypt.Sprawdzanie uprawnień do plików w systemie Linux za pomocą Pythona
Odpowiedz
Masz rację, że os.access, podobnie jak bazowy system access, sprawdza konkretnego użytkownika (rzeczywiste, a nie efektywne identyfikatory, aby pomóc w sytuacjach suid).
os.stat to właściwy sposób na uzyskanie bardziej ogólnych informacji o pliku, w tym uprawnień dla użytkownika, grupy i innych osób. Atrybut obiektu zwracany przez ma bity uprawnień dla pliku.
Aby pomóc w interpretacji tych bitów, można użyć modułu stat. W szczególności będziesz chciał zdefiniować maski bitowe here, a użyjesz operatora &
(bit-i), aby użyć ich do zamaskowania odpowiednich bitów w tym atrybucie st_mode
- na przykład, jeśli potrzebujesz tylko Prawda/Fałsz sprawdzić, czy dany plik jest grupa postaci czytelnej, jedno podejście jest: pielęgnacja
import os
import stat
def isgroupreadable(filepath):
st = os.stat(filepath)
return bool(st.st_mode & stat.S_IRGRP)
Weź udział: wywołanie os.stat
może być nieco kosztowne, więc upewnij się, aby wyodrębnić wszystkie informacje ci zależy z jednej rozmowy, zamiast powtarzaj połączenia dla każdego interesującego ;-).
Użyj os.access()
z flagami os.R_OK
, os.W_OK
i os.X_OK
.
Edytuj: Jeśli chcesz sprawdzić uprawnienia do katalogów w systemie Windows, sprawdź kod this related question.
Ty zrobił przeczytać pytanie, os.access sprawdza tylko uprawnienia bieżący użytkownik. –
Możesz sprawdzić uprawnienia do plików poprzez os.stat(path)
w połączeniu z modułem stat
w celu interpretacji wyników.
Wystarczy, aby pomagać innym ludziom jak ja, którzy przyjechali tu na coś innego:
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.
to zobaczyć więcej szczegółów: https://stackoverflow.com/a/5337329/1814774
- 1. Jak wyszukać plik wykonywalny za pomocą Pythona w systemie Linux?
- 2. Tworzenie GUI za pomocą Pythona w systemie Linux
- 3. Przesyłanie plików za pomocą TCP w systemie Linux
- 4. Utrzymanie uprawnień do plików w aktualizacjach SVN?
- 5. Sprawdzanie poczty e-mail za pomocą Pythona
- 6. Zmiana uprawnień do grupy w systemie Linux w celu dopasowania uprawnień właściciela
- 7. Używanie funkcji Headless FireFox do zapisywania wszystkich plików HTML za pomocą wiersza poleceń w systemie Linux
- 8. Wywoływanie Pythona IDLE w systemie Linux
- 9. Przenoszenie plików w systemie Linux w C
- 10. Zmienianie uprawnień do plików wielu plików za pośrednictwem terminala Unixowego
- 11. Dlaczego PyUSB/libusb wymaga uprawnień root (sudo) w systemie Linux?
- 12. Jak odtwarzać dźwięk w systemie Linux za pomocą C?
- 13. Sprawdzanie uprawnień właściciela pliku
- 14. Modyfikowanie uprawnień do plików subversion
- 15. Jak zmienić uprawnienia dostępu do plików w systemie Linux?
- 16. Uprawnienia do plików w systemie Linux/Unix z .NET Core
- 17. jak zip poszczególnych folderów w systemie Linux za pomocą Shell
- 18. Jak uniknąć łzawienia za pomocą pygame w systemie Linux/X11
- 19. kompilacji F Program # w systemie Linux za pomocą wiersza poleceń
- 20. Kopiowanie uprawnień do plików, ale nie plików
- 21. Usunięcie wszystkich plików kopii zapasowych w systemie Linux za pomocą skryptu powłoki rekursywnie
- 22. Sprawdzanie uprawnień przy użyciu Global.asax
- 23. Jak przesłać wiele plików w tym samym czasie do plików w chmurze za pomocą Pythona?
- 24. ścieżka do pliku Java w systemie Linux
- 25. Usuwanie wszystkich plików w katalogu za pomocą Pythona
- 26. Powershell Sprawdzanie lokalnych uprawnień administratora
- 27. Instalator Windows dla aplikacji Pythona utworzonej w systemie Linux
- 28. Błędy Tomcat w systemie Linux
- 29. Łączenie dwóch plików w różnych folderach w systemie Linux
- 30. zmiana uprawnień plików w pythonie
Cudownie, właśnie to miałem nadzieję znaleźć. Dziękuję Ci bardzo. Właśnie zacząłem zbierać pythona dla małego projektu w pracy, więc możesz powiedzieć, że wciąż się uczę. Dzięki wielkie! – jphenow
Bardzo ładne narzędzie. Dzięki! – zerocog