Portál AbcLinuxu, 13. června 2024 06:01

Unixové nástroje – 20 (id, who, tty, uname)

11. 11. 2010 | David Watzke
Články - Unixové nástroje – 20 (id, who, tty, uname)  

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.

Obsah

id

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

who

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ý.

tty

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

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

Seriál Unixové nástroje (dílů: 27)

První díl: Unixové nástroje – 1 (úvod, cat, head, tail), poslední díl: Unixové nástroje – 26 (triky pro práci v Bashi).
Předchozí díl: Unixové nástroje – 19 (alias, type, expr)
Následující díl: Unixové nástroje – 21 (awk)

Odkazy a zdroje

http://www.opengroup.org/onlinepubs/9699919799/utilities/id.html
http://www.opengroup.org/onlinepubs/9699919799/utilities/who.html
http://www.opengroup.org/onlinepubs/9699919799/utilities/tty.html
http://www.opengroup.org/onlinepubs/9699919799/utilities/uname.html

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

Dragon Jake avatar 11.11.2010 01:18 Dragon Jake | blog: Drakův zápisník | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Odpovědět | Sbalit | Link | Blokovat | Admin
A hele, tady se někdo přihlásil na FEL ;)

Jinak who am I mě dostalo. Je však zajímavé, že nevypisuje X sešny
11.11.2010 07:52 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)

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)
11.11.2010 08:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Zkuste se přihlásit, udělat su na jiného uživatele a pak si porovnat výstupy příkazů
who am i
whoami
11.11.2010 08:54 Jurko (debian lenny)
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
whoami - pouzivam a funguje
who am i - nech robim, co robim, tak tento prikaz mi nedava ziadny output
Ruža Becelin avatar 11.11.2010 13:26 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Zkousel jsem "who am I"

- funguje v xterm a gnome-terminal
- nefunguje v konsole, rxvt
Luboš Doležel (Doli) avatar 11.11.2010 13:28 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Mně funguje obojí, Debian Testing/Unstable.
11.11.2010 13:50 Pev | skóre: 28
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Mně funguje obojí, Debian Testing/Unstable.
Mně who am I v rxvt nefunguje, Debian Testing/Unstable :-(.
Luboš Doležel (Doli) avatar 11.11.2010 13:58 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Příloha:
rxvt 2.6.4, viz přílohu
Ruža Becelin avatar 11.11.2010 14:24 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Zajimave:

Fedora 12, rxvt 2.7.10, coreutils 7.6 - nefunguje

CentOS 5.5, rxvt 2.7.10, coreutils 5.97 - funguje
Ruža Becelin avatar 11.11.2010 14:47 Ruža Becelin | skóre: 40 | blog: RuzaBecelinBlog
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Divne, v Konsole mi to zacalo fungovat, ale v rxvt porad ne...
David Watzke avatar 11.11.2010 14:42 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Odpovědět | Sbalit | Link | Blokovat | Admin
Ještě taková legrácka: na GNU funguje who mom likes :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
11.11.2010 15:08 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
A vypisuje to něco jiného, než obyčejné who s neznámými argumenty?
11.11.2010 15:21 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Nebo s jakýmikoli jinými dvěma argumenty. Na Linuxu mám ale stejně raději w než who.
11.11.2010 18:10 imploder | skóre: 11
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Odpovědět | Sbalit | Link | Blokovat | Admin
Užitečná věc na získání hesla v shellovém skriptu (bez zobrazování znaků):
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ů
Jendа avatar 11.11.2010 21:46 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
read má parametr -s. Tedy alespoň ten z GNU.
David Watzke avatar 11.11.2010 21:48 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Správnej dodatek, standard to nezmiňuje. stty by mělo bejt univerzálnější (je to ve standardu).
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
D.A.Tiger avatar 12.11.2010 11:32 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Unixové nástroje – 20 (id, who, tty, uname)
Odpovědět | Sbalit | Link | Blokovat | Admin
jen detail, ale podobnou službu jako příkaz who -r udělá příkaz runlevel (lepe se s tím - podle mě - pracuje ve skriptech) :
$> /sbin/runlevel
N 2
$> 
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.