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)