SU(1)                        Polecenia uzytkownika                       SU(1)

NAZWA
       su - uruchamia polecenie ze zmienionymi identyfikatorami uzytkownika i
       grupy

SKLADNIA
       su [opcje] [-] [uzytkownik [argument...]]

OPIS
       su pozwala uruchomic polecenie ze zmienionymi identyfikatorami
       uzytkownika i grupy.

       Wywolany bez okreslenia uzytkownika, su domyslnie uruchomi powloke
       interaktywna jako root. Wskazujac uzytkownika mozna podac dodatkowe
       argumenty, ktore zostana przekazane do powloki.

       Ze wzgledu na kompatybilnosc, su domyslnie nie zmienia biezacego
       katalogu, lecz ustawia jedynie zmienne srodowiskowe HOME (katalog
       domowy) i SHELL (powloka), a jesli docelowym uzytkownikiem nie jest
       root, dodatkowo USER (uzytkownik) i LOGNAME (nazwa logowania). Zaleca
       sie zawsze korzystac z opcji --login (zamiast jej skrotu -), aby
       uniknac efektow ubocznych spowodowanych mieszanym srodowiskiem.

       Niniejsza wersja su do uwierzytelniania oraz do zarzadzania kontami i
       sesja uzywa PAM. Czesc opcji konfiguracyjnych, ktore istnieja w innych
       implementacjach su, takie jak obsluga grupy wheel, nalezy ustawic za
       pomoca PAM.

       su jest przeznaczony glownie dla uzytkownikow nieuprzywilejowanych;
       zalecanym rozwiazaniem dla uzytkownikow uprzywilejowanych (np. skryptow
       wykonywanych przez roota) jest korzystanie z polecenia runuser(1),
       ktore nie wykorzystuje uprawnienia ustawienia ID uzytkownika podczas
       wykonania (suid), nie wymaga uwierzytelnienia i udostepnia oddzielna
       konfiguracje PAM. Jesli sesja PAM nie jest wymagana, zaleca sie uzycie
       polecenia setpriv(1).

       Prosze zauwazyc, ze su we wszystkich przypadkach uzywa PAM
       (pam_getenvlist(3)) do koncowej zmiany srodowiska. Opcje wiersza
       polecen takie jak --login i --preserve-environment wplywaja na
       srodowisko przed jego zmiana przez PAM.

       Od wersji 2.38 su resetuje limity zasobow procesu: RLIMIT_NICE,
       RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS oraz RLIMIT_NOFILE.

OPCJE
       -c, --command polecenie
           Przekazuje polecenie do powloki za pomoca opcji -c.

       -f, --fast
           Przekazuje -f powloce, co moze, ale nie musi byc przydatne, w
           zaleznosci od powloki.

       -g, --group grupa
           Okresla podstawowa grupe. Opcja jest dostepna tylko dla uzytkownika
           root.

       -G, --supp-group grupa
           Okresla dodatkowa grupe. Opcja jest dostepna tylko dla uzytkownika
           root. Pierwsza podana grupa dodatkowa jest uzywana jako grupa
           podstawowa, jesli nie podano jej opcja --group.

       -, -l, --login
           Uruchamia powloke jako powloke logowania ze srodowiskiem podobnym
           do rzeczywistego logowania.

           Prosze zauwazyc, ze w systemach korzystajacych z systemd, nowa
           sesja moze byc zdefiniowana jako rzeczywisty punkt wejsciowy do
           systemu. Jednak su nie tworzy rzeczywistej sesji (poprzez PAM) z
           tego punktu widzenia. Aby zainicjowac pelna, rzeczywista sesje
           trzeba uzyc narzedzi takich jak systemd-run lub machinectl.

           su:

           o   czysci wszystkie zmienne srodowiskowe z wyjatkiem TERM i
               zmiennych podanych opcja --whitelist-environment

           o   inicjuje zmienne srodowiskowe HOME, SHELL, USER, LOGNAME i PATH

           o   zmienia katalog na katalog domowy docelowego uzytkownika

           o   ustawia argv[0] powloki na "-", aby uczynic z powloki powloke
               logowania

       -m, -p, --preserve-environment
           Zachowuje cale srodowisko, tzn. nie ustawia HOME, SHELL, USER ani
           LOGNAME. Opcja jest ignorowana, jesli podano takze --login.

       -P, --pty
           Tworzy pseudoterminal dla sesji. Niezalezny terminal zapewnia
           lepsze bezpieczenstwo, poniewaz uzytkownik nie dzieli terminala z
           pierwotna sesja. W ten sposob unika sie wstrzykniecia ioctl TIOCSTI
           terminala oraz innych atakow na deskryptory pliku terminala. Cala
           sesje mozna tez przeniesc w tlo (np. su --pty - uzytkowik -c
           aplikacja &). Jesli wlaczono pseudoterminal, to su dziala jako
           posrednik miedzy sesjami (synchronizuje standardowe wejscie i
           wyjscie).

           Funkcja ta jest zaprojektowana glownie z mysla o powlokach
           interaktywnych. Jesli standardowym wejsciem nie jest terminal, lecz
           na przyklad potok (np. echo "date" | su --pty), to flaga ECHO
           pseudoterminala jest wylaczana, aby uniknac zabalaganionego
           wyjscia.

       -s, --shell powloka
           Uruchamia podana powloke zamiast domyslnej. Jesli uzytkownik
           docelowy ma ograniczona powloke (tzn. niewypisana w /etc/shells),
           to opcja --shell i zmienne srodowiskowe SHELL sa ignorowane, chyba
           ze wywolujacym uzytkownikiem jest root.

           Powloka do uruchomienia jest wybierana zgodnie z podanymi regulami,
           w kolejnosci:

           o   powloka podana opcja --shell

           o   powloka ze zmiennej srodowiskowej SHELL, jesli podano opcje
               --preserve-environment

           o   powloka podana we wpisie passwd docelowego uzytkownika

           o   /bin/sh

       --session-command=polecenie
           Jak -c, lecz nie tworzy nowej sesji (niezalecane).

       -T, --no-pty
           Nie tworzy pseudoterminala; przeciwienstwo --pty i -P. Prosze
           zauwazyc, ze dzialanie bez pseudoterminala stanowi ryzyko eskalacji
           przywilejow poprzez wstrzykniecie polecenia TIOCSTI/TIOCLINUX
           ioctl.

       -w, --whitelist-environment lista
           Nie resetuje zmiennych srodowiskowych okreslonych w liscie
           (uzywajacej przecinka jako separatora) przy czyszczeniu srodowiska
           do --login. Biala lista jest ignorowana w przypadku zmiennych
           srodowiskowych HOME, SHELL, USER, LOGNAME i PATH.

       -h, --help
           Wyswietla ten tekst i wychodzi.

       -V, --version
           Wyswietla wersje i wychodzi.

SYGNALY
       Po otrzymaniu jednego z sygnalow SIGINT, SIGQUIT lub SIGTERM, su uzywa
       go do zakonczenia procesu potomnego, a pozniej siebie samego. Jesli
       proces potomny jest konczony sygnalem SIGTERM, to po nieudanej probie i
       odczekaniu 2 sekund, proces jest zabijany za pomoca SIGKILL.

PLIKI KONFIGURACYJNE
       su odczytuje pliki konfiguracyjne /etc/default/su i /etc/login.defs.
       Istotne dla su sa nastepujace pozycje konfiguracji:

       FAIL_DELAY (liczba)
           Odstep w sekundach po nieudanym uwierzytelnieniu. Musi byc to
           calkowita liczba nieujemna.

       ENV_PATH (lancuch)
           Okresla zmienna srodowiskowa PATH dla zwyklego uzytkownika.
           Wartoscia domyslna jest /usr/local/bin:/bin:/usr/bin.

       ENV_ROOTPATH (lancuch), ENV_SUPATH (lancuch)
           Okresla zmienna srodowiskowa PATH dla roota. ENV_SUPATH ma
           pierwszenstwo. Wartoscia domyslna jest
           /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

       ALWAYS_SET_PATH (wartosc logiczna)
           Jesli jest ustawiona na yes, to w przypadku gdy nie podano --login
           ani --preserve-environment, su inicjuje PATH.

           Zmienna srodowiskowa PATH moze byc odmienna w systemach, w ktorych
           /bin i /sbin polaczono z /usr; na te zmienna ma tez wplyw opcja
           wiersza polecen --login oraz ustawienia systemu PAM (np.
           pam_env(8)).

STATUS ZAKONCZENIA
       su zwykle konczy sie ze statusem zakonczenia wykonywanego polecenia.
       Jesli polecenie zabito sygnalem, su zwroci numer sygnalu zwiekszony o
       128.

       Statusy zakonczenia generowane przez sam program su:

       1
           Ogolny blad przed wykonaniem zadanego polecenia

       126
           Zadane polecenie nie moglo byc wykonane

       127
           Nie znaleziono zadanego polecenia

PLIKI
       /etc/pam.d/su
           domyslny plik konfiguracyjny PAM

       /etc/pam.d/su-l
           plik konfiguracyjny PAM, jesli podano --login

       /etc/default/su
           plik konfiguracyjny logindef przypisany do polecenia

       /etc/login.defs
           globalny plik konfiguracyjny logindef

UWAGI
       Ze wzgledow bezpieczenstwa, su zawsze odnotowuje nieudane proby
       logowania w pliku btmp, lecz w ogole nie pisze do pliku lastlog. To
       rozwiazanie mozna wykorzystac do kontroli zachowania su poprzez
       konfiguracje PAM. Jesli modul pam_lastlog(8) ma wypisywac ostrzezenie o
       nieudanych probach logowania, nalezy skonfigurowac pam_lastlog(8) tak,
       aby aktualizowal rowniez plik lastlog. Przykladowo:

          session required pam_lastlog.so nowtmp

HISTORIA
       To polecenie su pochodzi z su coreutils, ktore powstalo w oparciu o
       implementacje Davida MacKenziego. Wersje util-linux zrefaktoryzowal
       Karel Zak.

ZOBACZ TAKZE
       setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)

ZGLASZANIE BLEDOW
       Problemy nalezy zglaszac w systemie sledzenia bledow
       <https://github.com/util-linux/util-linux/issues>.

DOSTEPNOSC
       Polecenie su jest czescia pakietu util-linux, ktory mozna pobrac ze
       strony Archiwum jadra Linux
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.41                   2025-03-29                             SU(1)