Scroll to navigation

SU(1) Polecenia użytkownika SU(1)

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, takich 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 inną konfigurację PAM. Jeśli sesja PAM nie jest wymagana, zalecana 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:

• 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 domowy na należący do 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 lepszy poziom bezpieczeństwa, gdyż użytkownik nie dzieli go z pierwotną sesją. Można w ten sposób uniknąć wstrzyknięcia TIOCSTI ioctl terminala i innych ataków na deskryptory plików terminala. Całą sesję można również przenieść w tło (np. su --pty - użytkownik -c aplikacja &). Jeśli pseudoterminal jest włączony, to su działa jako pośrednik pomię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 "data" | 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. 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

Jeśli użytkownik docelowy ma ograniczoną powłokę (tzn. nie wypisaną w /etc/shells), to opcja --shell i zmienne środowiskowe SHELL są ignorowane, chyba że wywołującym użytkownikiem jest root.

--session-command=polecenie

Jak -c, lecz nie tworzy nowej sesji (niezalecane).

-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 kończy pracę.

-V, --version

Wyświetla informacje o wersji i kończy działanie.

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

Raporty o błędach proszę zgłaszać pod adresem <https://github.com/util-linux/util-linux/issues>.

DOSTĘPNOŚĆ

Polecenie su jest częścią pakietu util-linux i można je pobrać ze strony Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

11 maja 2022 r. util-linux 2.38.1