- trixie 2.41-5
- testing 2.41.3-4
- unstable 2.41.3-4
- experimental 2.42~rc1-1
| SU(1) | Polecenia użytkownika | SU(1) |
NAZWA¶
su - uruchamia polecenie ze zmienionymi identyfikatorami użytkownika i grupy
SKŁADNIA¶
su [options] [-] [user|UID [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
-f, --fast
-g, --group grupa
-G, --supp-group grupa
-, -l, --login
Note that on systemd(1)-based systems, a new session may be defined as a real entry point to the system. However, su does not create a real session (by PAM) from this point of view. You need to use tools like systemd-run(1) or machinectl(1) to initiate a complete, real session.
su:
-m, -p, --preserve-environment
-P, --pty
The entire session can also be moved to the background (e.g., su --pty - user -c application &). If the pseudo-terminal is enabled, then su works as a proxy between the sessions (sync stdin and stdout).
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
Powłoka do uruchomienia jest wybierana zgodnie z podanymi regułami, w kolejności:
--session-command=polecenie
-T, --no-pty
-w, --whitelist-environment lista
-h, --help
-V, --version
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)
ENV_PATH (łańcuch)
ENV_ROOTPATH (łańcuch), ENV_SUPATH (łańcuch)
ALWAYS_SET_PATH (wartość logiczna)
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
126
127
PLIKI¶
/etc/pam.d/su
/etc/pam.d/su-l
/etc/default/su
/etc/login.defs
SECURITY NOTES¶
If su shares a terminal with the original session, it is potentially vulnerable to privilege escalation through TIOCSTI/TIOCLINUX ioctl command injection. There are two built-in ways to prevent this: Either you can use su with the -c option, which starts a new session via setsid(2) without a controlling terminal. Or, if your use case requires a controlling terminal, for example an interactive session, you can instruct su to use a pseudo terminal with the --pty or -P option.
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/>.
| 2026-02-28 | util-linux 2.42-rc1 |