SU(1) | Příručka uživatele | SU(1) |
su - spustí shell pod jiným uživatelským a skupinovým ID
su [přepínače] [-] [uživatel [argument…]]
su dovoluje příkazům běžet se změněným ID uživatele a skupiny.
Je-li zavolán bez udání uživatele, su spustí interaktivní shell jako root. Je-li uživatel zadán, lze zadat další argumenty a ty budou v takovém případě předány shellu.
Z důvodu zpětné kompatibility su ve výchozí podobě nemění pracovní adresář a z proměnných prostředí pouze změní HOME a SHELL (a USER a LOGNAME, není-li cílový uživatel root). Doporučuje se vždy použít přepínač --login (namísto jeho zkratky -), aby se zamezilo vedlejším účinkům způsobeným pomícháním prostředí.
Tato verze su používá pro autentizaci, autorizaci a správu relace PAM. Některé možnosti nastavení nacházející se v jiných implementacích su, jako podpora skupiny wheel, se musí nastavit přes PAM.
su je navrženo pro neprivilegované uživatele. Doporučené řešení pro privilegované uživatele (např. skripty spouštěné rootem) je použít program bez SUID runuser(1), který nepotřebuje autentizaci a přitom poskytuje samostatné nastavení PAM. Není-li relace PAM vůbec potřeba, pak doporučeným řešením je příkaz setpriv(1).
Pamatujte, že su ve všech případech používá PAM (pam_getenvlist(3)), aby upravil konečné prostředí. Přepínače příkazové řádky jako --login nebo --preserve-environment ovlivňují prostředí před tím, než je změněno systémem PAM.
Od verze 2.38 su resetuje omezení zdrojů procesu RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS a RLIMIT_NOFILE.
-c, --command=příkaz
-f, --fast
-g, --group=skupina
-G, --supp-group=skupina
-, -l, --login
-m, -p, --preserve-environment
-P, --pty
Tato funkce je převážně navržena pro interaktivní relace. Pokud standardní vstup není terminál, ale například rourou (př. echo "date" | su --pty), pak příznak ECHO pseudoterminálu bude vypnut, aby se předešlo zaneřádění výstupu.
-s, --shell=shell
Je-li shell cílového uživatele omezený (tj. neuvedený v /etc/shells), přepínač --shell a proměnná prostředí SHELL jsou ignorovány, pokud volajícím není root.
--session-command=příkaz
-w, --whitelist-environment=seznam
-h, --help
-V, --version
Po přijetí signálu SIGINT, SIGQUIT nebo SIGTERM su ukončí svého potomka a poté ukončí sebe přijatým signálem. Potomek bude ukončen signálem SIGTERM. Při neúspěšném pokusu bude po 2 sekundách prodlení potomek zabit signálem SIGKILL.
su čte konfigurační soubory /etc/default/su a /etc/login.defs. Následující konfigurační položky jsou relevantní pro su:
FAIL_DELAY (číslo)
ENV_PATH (řetězec)
ENV_ROOTPATH (řetězec), ENV_SUPATH (řetězec)
ALWAYS_SET_PATH (pravdivostní hodnota)
Proměnná prostředí PATH se může lišit na systémech, kde /bin a /sbin jsou začleněny do /usr. Tato proměnná je rovněž ovlivněna přepínačem příkazové řádky --login a nastavením systému PAM (např. pam_env(8)).
Nástroj su běžně vrací návratovou hodnotu příkazu, který spustil. Byl-li příkaz zabit signálem, su vrátí číslo signálu plus 128.
Návratová hodnota vyrobená nástrojem su samotným:
1
126
127
/etc/pam.d/su
/etc/pam.d/su-l
/etc/default/su
/etc/login.defs
Z bezpečnostních důvodů su vždy zaprotokoluje selhané pokusy o přihlášení to souboru btmp, avšak vůbec nezapisuje do souboru lastlog. Následující řešení pomocí nastavení PAM lze použít k ovlivnění chování su. Chcete-li používat modul pam_lastlog(8) pro vypisování varování o selhaných přihlašovacích pokusech, pak pam_lastlog(8) musí být nastaven tak, aby rovněž aktualizoval soubor lastlog. Například:
session required pam_lastlog.so nowtmp
Tento nástroj su byl odvozen z su v balíku coreutils, který byl založen na implementaci Davida MacKenzie. Verze v util-linux byl přepsána Karlem Žákem.
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
Pro hlášení chyb (anglicky) použijte systém pro sledování problémů na <https://github.com/util-linux/util-linux/issues>.
Příkaz su je součástí balíku util-linux, který lze stáhnout z archivu jádra Linuxu <https://www.kernel.org/pub/linux/utils/util-linux/>.
2024-12-05 | util-linux 2.39.3 |