Można ustawić użytkownikowi os.setuid(), i można dostać uid z pwd. tak:
>>> import pwd, os
>>> uid = pwd.getpwnam('root')[2]
>>> os.setuid(uid)
Oczywiście działa to tylko wtedy, gdy użytkownik lub plik wykonywalny ma na to zgody. Dokładnie, jak to ustawić, nie wiem. Oczywiście działa, jeśli jesteś rootem. Myślę, że możesz potrzebować flagi setuid na pliku wykonywalnym Pythona, a to zostawiłoby lukę bezpieczeństwa. możliwe, że jest permittable, jeśli użytkownik, którego ustawiłeś, jest dedykowanym użytkownikiem z ograniczonym dostępem, który nie może nic zrobić, z wyjątkiem tego, co musisz zrobić.
Zabezpieczenia Unix, oparte na użytkownikach i ustawieniach i innych rzeczach, nie są zbyt dobre ani praktyczne i łatwo można zostawić duże luki w zabezpieczeniach. Bardziej bezpieczną opcją jest wykonanie typowego serwera-klienta, więc masz demona, który robi wszystko, a klient z nim rozmawia. Demon może wtedy działać z wyższymi poziomami bezpieczeństwa niż użytkownicy, ale użytkownicy będą musieli podać nazwę i hasło podczas uruchamiania skryptu lub identyfikować się z kluczem publicznym lub prywatnym lub salsuchami.
Czy Twoi inni użytkownicy nie mają uprawnień do uruchomienia 'python'? – Arkady
To nie jest kwestia uruchomienia Pythona. Skrypt musi robić rzeczy, które wymagają pewnych uprawnień. Nie chcę przyznawać wszystkim użytkownikom tych uprawnień. Skrypt działa jak coś w rodzaju kontrolowanego dawcy uprawnień, ale najpierw skrypt potrzebuje uprawnień ... – johannix
@johannix Natknąłem się również na dokładny problem. Czy znalazłeś jakieś obejście? – Anubis