Provided by: util-linux-locales_2.41.2-4ubuntu1_all 

NAZWA
su - uruchamia polecenie ze zmienionymi identyfikatorami użytkownika i grupy
SKŁADNIA
su [opcje] [-] [użytkownik [argument...]]
OPIS
su pozwala uruchomić polecenie ze zmienionymi identyfikatorami użytkownika i grupy.
Wywołany bez określenia użytkownika, su domyślnie uruchomi powłokę interaktywną jako root. Wskazując
użytkownika można podać dodatkowe argumenty, które zostaną przekazane do powłoki.
Ze względu na kompatybilność, su domyślnie nie zmienia bieżącego katalogu, lecz ustawia jedynie zmienne
środowiskowe HOME (katalog domowy) i SHELL (powłoka), a jeśli docelowym użytkownikiem nie jest root,
dodatkowo USER (użytkownik) i LOGNAME (nazwa logowania). Zaleca się zawsze korzystać z opcji --login
(zamiast jej skrótu -), aby uniknąć efektów ubocznych spowodowanych mieszanym środowiskiem.
Niniejsza wersja su do uwierzytelniania oraz do zarządzania kontami i sesją używa PAM. Część opcji
konfiguracyjnych, które istnieją w innych implementacjach su, takie jak obsługa grupy wheel, należy
ustawić za pomocą PAM.
su jest przeznaczony głównie dla użytkowników nieuprzywilejowanych; zalecanym rozwiązaniem dla
użytkowników uprzywilejowanych (np. skryptów wykonywanych przez roota) jest korzystanie z polecenia
runuser(1), które nie wykorzystuje uprawnienia ustawienia ID użytkownika podczas wykonania (suid), nie
wymaga uwierzytelnienia i udostępnia oddzielną konfigurację PAM. Jeśli sesja PAM nie jest wymagana,
zaleca się użycie polecenia setpriv(1).
Proszę zauważyć, że su we wszystkich przypadkach używa PAM (pam_getenvlist(3)) do końcowej zmiany
środowiska. Opcje wiersza poleceń takie jak --login i --preserve-environment wpływają na środowisko przed
jego zmianą przez PAM.
Od wersji 2.38 su resetuje limity zasobów procesu: RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS
oraz RLIMIT_NOFILE.
OPCJE
-c, --command polecenie
Przekazuje polecenie do powłoki za pomocą opcji -c.
-f, --fast
Przekazuje -f powłoce, co może, ale nie musi być przydatne, w zależności od powłoki.
-g, --group grupa
Określa podstawową grupę. Opcja jest dostępna tylko dla użytkownika root.
-G, --supp-group grupa
Określa dodatkową grupę. Opcja jest dostępna tylko dla użytkownika root. Pierwsza podana grupa
dodatkowa jest używana jako grupa podstawowa, jeśli nie podano jej opcją --group.
-, -l, --login
Uruchamia powłokę jako powłokę logowania ze środowiskiem podobnym do rzeczywistego logowania.
Proszę zauważyć, że w systemach korzystających z systemd, nowa sesja może być zdefiniowana jako
rzeczywisty punkt wejściowy do systemu. Jednak su nie tworzy rzeczywistej sesji (poprzez PAM) z tego
punktu widzenia. Aby zainicjować pełną, rzeczywistą sesję trzeba użyć narzędzi takich jak systemd-run
lub machinectl.
su:
• czyści wszystkie zmienne środowiskowe z wyjątkiem TERM i zmiennych podanych opcją
--whitelist-environment
• inicjuje zmienne środowiskowe HOME, SHELL, USER, LOGNAME i PATH
• zmienia katalog na katalog domowy docelowego użytkownika
• ustawia argv[0] powłoki na "-", aby uczynić z powłoki powłokę logowania
-m, -p, --preserve-environment
Zachowuje całe środowisko, tzn. nie ustawia HOME, SHELL, USER ani LOGNAME. Opcja jest ignorowana,
jeśli podano także --login.
-P, --pty
Tworzy pseudoterminal dla sesji. Niezależny terminal zapewnia lepsze bezpieczeństwo, ponieważ
użytkownik nie dzieli terminala z pierwotną sesją. W ten sposób unika się wstrzyknięcia ioctl TIOCSTI
terminala oraz innych ataków na deskryptory pliku terminala. Całą sesję można też przenieść w tło
(np. su --pty - użytkowik -c aplikacja &). Jeśli włączono pseudoterminal, to su działa jako pośrednik
między sesjami (synchronizuje standardowe wejście i wyjście).
Funkcja ta jest zaprojektowana głównie z myślą o powłokach interaktywnych. Jeśli standardowym
wejściem nie jest terminal, lecz na przykład potok (np. echo "date" | su --pty), to flaga ECHO
pseudoterminala jest wyłączana, aby uniknąć zabałaganionego wyjścia.
-s, --shell powłoka
Uruchamia podaną powłokę zamiast domyślnej. Jeśli użytkownik docelowy ma ograniczoną powłokę (tzn.
niewypisaną w /etc/shells), to opcja --shell i zmienne środowiskowe SHELL są ignorowane, chyba że
wywołującym użytkownikiem jest root.
Powłoka do uruchomienia jest wybierana zgodnie z podanymi regułami, w kolejności:
• powłoka podana opcją --shell
• powłoka ze zmiennej środowiskowej SHELL, jeśli podano opcję --preserve-environment
• powłoka podana we wpisie passwd docelowego użytkownika
• /bin/sh
--session-command=polecenie
Jak -c, lecz nie tworzy nowej sesji (niezalecane).
-T, --no-pty
Nie tworzy pseudoterminala; przeciwieństwo --pty i -P. Proszę zauważyć, że działanie bez
pseudoterminala stanowi ryzyko eskalacji przywilejów poprzez wstrzyknięcie polecenia
TIOCSTI/TIOCLINUX ioctl.
-w, --whitelist-environment lista
Nie resetuje zmiennych środowiskowych określonych w liście (używającej przecinka jako separatora)
przy czyszczeniu środowiska do --login. Biała lista jest ignorowana w przypadku zmiennych
środowiskowych HOME, SHELL, USER, LOGNAME i PATH.
-h, --help
Wyświetla ten tekst i wychodzi.
-V, --version
Wyświetla wersję i wychodzi.
SYGNAŁY
Po otrzymaniu jednego z sygnałów SIGINT, SIGQUIT lub SIGTERM, su używa go do zakończenia procesu
potomnego, a później siebie samego. Jeśli proces potomny jest kończony sygnałem SIGTERM, to po nieudanej
próbie i odczekaniu 2 sekund, proces jest zabijany za pomocą SIGKILL.
PLIKI KONFIGURACYJNE
su odczytuje pliki konfiguracyjne /etc/default/su i /etc/login.defs. Istotne dla su są następujące
pozycje konfiguracji:
FAIL_DELAY (liczba)
Odstęp w sekundach po nieudanym uwierzytelnieniu. Musi być to całkowita liczba nieujemna.
ENV_PATH (łańcuch)
Określa zmienną środowiskową PATH dla zwykłego użytkownika. Wartością domyślną jest
/usr/local/bin:/bin:/usr/bin.
ENV_ROOTPATH (łańcuch), ENV_SUPATH (łańcuch)
Określa zmienną środowiskową PATH dla roota. ENV_SUPATH ma pierwszeństwo. Wartością domyślną jest
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.
ALWAYS_SET_PATH (wartość logiczna)
Jeśli jest ustawiona na yes, to w przypadku gdy nie podano --login ani --preserve-environment, su
inicjuje PATH.
Zmienna środowiskowa PATH może być odmienna w systemach, w których /bin i /sbin połączono z /usr; na
tę zmienną ma też wpływ opcja wiersza poleceń --login oraz ustawienia systemu PAM (np. pam_env(8)).
STATUS ZAKOŃCZENIA
su zwykle kończy się ze statusem zakończenia wykonywanego polecenia. Jeśli polecenie zabito sygnałem, su
zwróci numer sygnału zwiększony o 128.
Statusy zakończenia generowane przez sam program su:
1
Ogólny błąd przed wykonaniem żądanego polecenia
126
Żądane polecenie nie mogło być wykonane
127
Nie znaleziono żądanego polecenia
PLIKI
/etc/pam.d/su
domyślny plik konfiguracyjny PAM
/etc/pam.d/su-l
plik konfiguracyjny PAM, jeśli podano --login
/etc/default/su
plik konfiguracyjny logindef przypisany do polecenia
/etc/login.defs
globalny plik konfiguracyjny logindef
UWAGI
Ze względów bezpieczeństwa, su zawsze odnotowuje nieudane próby logowania w pliku btmp, lecz w ogóle nie
pisze do pliku lastlog. To rozwiązanie można wykorzystać do kontroli zachowania su poprzez konfigurację
PAM. Jeśli moduł pam_lastlog(8) ma wypisywać ostrzeżenie o nieudanych próbach logowania, należy
skonfigurować pam_lastlog(8) tak, aby aktualizował również plik lastlog. Przykładowo:
session required pam_lastlog.so nowtmp
HISTORIA
To polecenie su pochodzi z su coreutils, które powstało w oparciu o implementację Davida MacKenziego.
Wersję util-linux zrefaktoryzował Karel Zak.
ZOBACZ TAKŻE
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
ZGŁASZANIE BŁĘDÓW
Problemy należy zgłaszać w systemie śledzenia błędów <https://github.com/util-linux/util-linux/issues>.
DOSTĘPNOŚĆ
Polecenie su jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux
<https://www.kernel.org/pub/linux/utils/util-linux/>.
util-linux 2.41.2 2025-10-17 SU(1)