MC, 2025
Ilustracja do artykułu: Python su – jak zarządzać użytkownikami w systemie?

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!

Imię:
Treść: