Portál AbcLinuxu, 21. května 2025 11:50
V tomto díle si představíme nástroj id
pro vypsání skutečného a efektivního UID, dále who
pro výpis přihlášených uživatelů, potom tty
pro výpis terminálu, který je otevřený jako standardní vstup a nakonec uname
sloužící k výpisu názvu systému.
id
je jednoduchý program, který slouží k výpisu informací o tom, jaké má uživatel UID a GID a v jakých skupinách (group) je zařazen. Tyto informace jsou vypsány jako ID čísla (UID, GID) i jako názvy.
Základní použití je bez argumentů (vypíše informaci o uživateli, který id
spustil) nebo s jedním argumentem udávajícím jméno uživatele, o němž chceme znát tyto informace.
$ id uid=1000(dave) gid=1000(dave) skupiny=1000(dave),6(disk),10(wheel),50(games),82(hal),91(video),92(audio),93(optical),98(power),108(vboxusers) $ id petr id: petr: Uživatel neexistuje $ id root uid=0(root) gid=0(root) skupiny=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),19(log)
Přepínačem -G zajistíme vypsání ID skupin, v nichž je daný uživatel zařazen. Pomocí přepínače -g lze vypsat pouze efektivní GID. Přepínač -u slouží k výpisu efektivního UID.
$ id -G 1000 6 10 50 82 91 92 93 98 108 $ id -g 1000 $ id -u root 0
Poslední dva standardní přepínače jsou -n a -r. Přepínač -n slouží k výpisu názvu místo ID (tam, kde je to relevantní) a přepínač -r vypíše reálné ID místo efektivního (opět tam, kde je to relevantní).
$ id -ur root 0 $ id -Gn dave disk wheel games hal video audio optical power vboxusers
Příkaz who
slouží k výpisu informací o tom, kdo je právě přihlášen do systému. Pomocí přepínačů lze zjistit další relevantní informace.
Takto vypadá výpis ze systému, kde má uživatel petr
(lokálně) spuštěnou relaci KDE, přičemž dave
je přihlášen z počítače archie.sh.cvut.cz.
$ who petr :0 2010-10-22 10:55 petr pts/0 2010-10-22 10:55 (:0) dave pts/9 2010-10-25 23:20 (archie.sh.cvut.cz)
Chcete-li vypsat informace jen o sobě, lze použít následující trik:
$ who am I watzkdav pts/17 Oct 25 23:26 (archie.sh.cvut.cz)
Pro výpis času a data posledního rebootu (tedy času, od kterého se počítá uptime – doba běhu systému) slouží přepínač -b:
$ who -b . system boot Sep 15 09:49
Přepínač -r vypíše číslo runlevelu, ve kterém se nacházíte.
# výpis z Arch Linuxu $ who -r úroveň běhu 3 2010-10-25 22:43 minulá=S # výpis ze SunOS $ who -r . run-level 3 Sep 15 09:49 3 0 S
Chcete-li vypsat pouze jména uživatelů, kteří jsou přihlášeni a počet těchto přihlášení, poslouží vám přepínač -q:
$ who -q jezdirad watzkdav muzikar # users=3
Přepínač -a aktivuje všechny ostatní přepínače, které neomezují výpis, proto výstup příkazu who -a
může být docela dlouhý.
Program tty
vypíše cestu k souboru reprezentujícímu znakové zařízení terminálu, ze kterého je spuštěn. Používá k tomu C funkci ttyname()
z unistd.h
. Není-li standardní vstup připojen k terminálu, vypíše informaci "není tty" (nebo "not a tty").
# v emulátoru terminálu $ tty /dev/pts/3 # na VT1 $ tty /dev/tty1
uname
je zkratka unix name. Tento nástroj slouží k výpisu názvu operačního systému. Díky přepínačům umí ovšem vypsat ještě i jiné informace, například jméno počítače (-n), typ hardwaru – nejčastěji architekturu (-m), verzi – jádra nebo systému (-r), název systému či jádra – výchozí volba (-s).
S přepínačem -a vypíše všechny tyto informace najednou:
$ uname -rs Linux 2.6.35-ARCH $ uname -a Linux archie 2.6.35-ARCH #1 SMP PREEMPT Tue Sep 21 09:22:09 CEST 2010 x86_64 Intel(R) Core(TM) i3 CPU M 350 @ 2.27GHz GenuineIntel GNU/Linux $ uname -m x86_64 $ uname -n archie # výpis ze Solarisu: $ uname -a SunOS dray6 5.10 Generic_142900-03 sun4v sparc SUNW,SPARC-Enterprise-T5120
who am I
mě dostalo. Je však zajímavé, že nevypisuje X sešny
Program čerpá údaje z /var/log/{u,w}tmp. Takže pokud tam nemáte X11 relace, stěžujte si na vaši distribuci. Mě tam záznamy zapisuje i emulátor terminálu:
$ who petr pts/0 2010-11-11 07:40 (:0.0) petr pts/1 2010-11-11 07:35 (:0.0)
su
na jiného uživatele a pak si porovnat výstupy příkazů
who am i whoami
Mně funguje obojí, Debian Testing/Unstable.Mně
who am I
v rxvt nefunguje, Debian Testing/Unstable who mom likes
who
s neznámými argumenty?
w
než who
.
echo "Zadej heslo: " stty -echo # vypneme vypisování znaků read heslo # přečteme heslo - znaky se při psaní nezobrazují stty echo # zase zapneme vypisování znaků
read
má parametr -s
. Tedy alespoň ten z GNU.
stty
by mělo bejt univerzálnější (je to ve standardu).
$> /sbin/runlevel N 2 $>
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.