Python su – jak zarządzać użytkownikami w systemie?
Jeśli kiedykolwiek musiałeś zmieniać użytkownika w systemie Linux, to na pewno spotkałeś się z poleceniem su. A co, jeśli chciałbyś to zrobić automatycznie w skrypcie Pythona? W tym artykule przyjrzymy się, jak w Pythonie można korzystać z polecenia su, omówimy zagrożenia i podamy praktyczne przykłady jego użycia.
Co to jest su?
Polecenie su (skrót od "substitute user") pozwala na zmianę użytkownika w systemie Linux. Najczęściej używa się go do przełączania na użytkownika root:
su root
System poprosi wtedy o podanie hasła administratora. Po jego wpisaniu możemy wykonywać polecenia jako root.
Jak używać su w Pythonie?
W Pythonie mamy kilka sposobów na wywołanie polecenia su. Najprostszym podejściem jest wykorzystanie modułu subprocess.
import subprocess # Uruchomienie polecenia su subprocess.run(["su", "-", "root"], shell=True)
To polecenie otworzy nową sesję w terminalu i poprosi o hasło roota.
Python su – przykłady użycia
1. Wykonanie komendy jako root
Jeśli chcemy uruchomić pojedynczą komendę jako root, możemy to zrobić w następujący sposób:
import subprocess cmd = "ls /root" subprocess.run(["su", "-c", cmd], shell=True)
To polecenie wykona listowanie katalogu /root (zakładając, że mamy uprawnienia).
2. Automatyczne podanie hasła (z plikiem expect)
Python nie pozwala na podanie hasła bezpośrednio do su ze względów bezpieczeństwa, ale można użyć narzędzia expect:
import pexpect
child = pexpect.spawn("su - root")
child.expect("Password:")
child.sendline("moje_super_tajne_haslo")
child.interact()
Jest to jednak niebezpieczne, ponieważ hasło jest zapisane w kodzie!
3. Lepsza alternatywa – sudo
W wielu przypadkach lepiej jest używać sudo zamiast su, ponieważ można wtedy kontrolować dostęp użytkownika do konkretnych komend.
import subprocess subprocess.run(["sudo", "apt update"], shell=True)
Ten sposób jest bardziej bezpieczny i powszechnie stosowany w automatyzacji.
Podsumowanie
Choć Python umożliwia użycie polecenia su, nie zawsze jest to najlepsze rozwiązanie. Zamiast tego warto rozważyć użycie sudo lub odpowiednich uprawnień systemowych. Jeśli jednak konieczne jest użycie su, należy pamiętać o bezpieczeństwie i unikać przechowywania haseł w kodzie.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!