Linux 使用者(User)查詢篇(轉)

ba發表於2007-08-11
Linux 使用者(User)查詢篇(轉)[@more@]一、使用者查詢工具的原理;

在使用者管理中,使用者查詢是透過幾個常用的工具來完成的,比如id 、finger、groups、users ... ... ,我們都知道使用者的配置檔案是/etc/passwd,使用者組的配置檔案是/etc/groups 檔案,我們對使用者的查詢除了透過查詢工具以外,我們還能直接檢視使用者和使用者組的配置檔案來達到查詢的目的;

使用者查詢工具的原理也是讀取與使用者和使用者組有關的配置檔案,然後按一定的規則和條件輸出,使用者和使用者組配置檔案很重要,所以您有必要先讀一下關有使用者管理的文件

二、使用者(User)和使用者組(Group)查詢工具;

1、id 工具: 查詢使用者所對應的UID 和GID 及GID所對應的使用者組;

id 工具是用來查詢使用者資訊,比如使用者所歸屬的使用者組,UID 和GID等;id 用法極為簡單;我們舉個例子說明一下;

語法格式: id [引數] [使用者名稱]

至於有哪些引數,自己查一下 id --help 或man id ;如果id後面不接任何引數和任何使用者,預設顯示當前操作使用者的使用者名稱、所歸屬的使用者組、UID和GID等;

例項一:不加任何引數和使用者名稱;

[beinan@localhost ~]$ id
uid=500(beinan) gid=500(beinan) groups=500(beinan)

註解:在沒有加任何引數的情況下,查詢的是當前操作使用者的使用者名稱、UID 、GID 和所處的主使用者組和附屬使用者組;在本例中,使用者名稱是beinan,UID是500,所歸屬的主使用者組是beinan,GID是500 ;

例項二: id 後面接使用者名稱;

如果我們想查詢系統中使用者的UID和GID 相應的內容,可以直接接使用者名稱,但使用者名稱必須是真實的 ,能在/etc/passwd中查到的;

[beinan@localhost ~]$ id linuxsir
uid=505(linuxsir) gid=502(linuxsir) groups=502(linuxsir),0(root),500(beinan)

註解:查詢使用者linuxsir 的資訊,使用者linuxsir ,UID 為505,所歸屬的主使用者組是linuxsir,主使用者組的GID是502;同時linuxsir使用者也是GID為0的root使用者組成員,也是GID為500使用者組beinan的成員;

這個例子和例項一在使用者組方面有所不同,我們在 《Linux 使用者(user)和使用者組(group)管理概述》 中有提到;使用者和使用者組的對應關係,可以是一對一、一對多、多對一、或多對多的交叉關係,請參考之;另外您還需要掌握《使用者(user)和使用者組(group)配置檔案詳解》一文;

2、finger 工具:用來查詢使用者資訊,側重使用者家目錄、登入SHELL等;

finger 工具側重於使用者資訊的查詢;查詢的內容包括使用者名稱(也被稱為登入名Login),家目錄,使用者真實的名字(Name)... ... 辦公地址、辦公電話;也包括登入終端、寫狀態、空閉時間等;

我們最常用finger 來查詢使用者家目錄、使用者真實名、所用SHELL 型別、以及辦公地址和電話,這是以引數 -l 長格式輸出的;而修改使用者的家目錄、真實名字、辦公地址及辦公電話,我們一般要能過chfn命令進行;

語法格式:

finger [引數選項] [使用者名稱]

-l 採用長格式(預設),顯示由-s選項所包含的所有資訊,以及主目錄、辦公地址、辦公電話、登入SHELL、郵件狀態、.plan、.project和.forward;
-m 禁止對使用者真實名字進行匹配;
-p 把.plan和.project檔案中的內容省略;
-s 顯示短格式,使用者名稱(也被稱為登入名Login)、真實名字(NAME)、在哪個終端登入(Tty)、寫狀態、空閒時間(Idle)、登入時間(Login Time)、辦公地點、辦公電話等;

至於finger 有哪些引數,您可以透過 finger --help 或man finger 來獲取,我們在本文中以例項講述最常用的引數;

例項一:不接任何引數,也不指定查詢使用者名稱;預設為加了-s引數;

[beinan@localhost ~]$ finger
Login Name Tty Idle Login Time Office Office Phone
beinan beinan sun tty1 1:39 Nov 2 08:27
linuxsir linuxsir open tty2 2 Nov 2 10:03 linuxsir o +1-389-866-771

等價命令

[beinan@localhost ~]$ finger -s

註解:不加任何引數,也沒有指定查詢哪個使用者,finger 會以預設以短格-s 來輸出登入本機的所有使用者的使用者名稱(也被稱為登入名Login)、真實名字(NAME)、在哪個終端登入(Tty)、寫狀態、空閒時間(Idle)、登入時間(Login Time)、辦公地點、辦公電話等;

在這個例子中,有beinan使用者登入,真實名字是beinan sun (這個名字是使用者的真實名字,如果在新增使用者時沒有設定,是不會顯示的),在tty1終端登入,空閉時間是1分39秒,登入時間是Nov /2/08:27 ,沒有辦公室名稱,沒有辦公電話;

請對照本例中beinan使用者記錄的解說,我們來看看本例中的 linuxsir使用者資訊;應該不難。

關於寫狀態,如果在Tty 後面 沒有任何輸出,表示正在寫入,如果有*出現,表示沒有寫入或被禁止,比如下面的例子,ftp使用者沒有透過終端登入系統,因為Tty是*,同時Tty後面還有一個* ,表示禁止寫入或沒有寫入狀態(當使用者沒有登入時);

[beinan@localhost ~]$ finger -s ftp
Login Name Tty Idle Login Time Office Office Phone
ftp FTP User * * No logins

我們可以以短格式的來查詢某個使用者資訊以短格式輸出,比如下面的例子;

[beinan@localhost ~]$ finger -s beinan

例項二:關於長格式的使用者資訊的輸出 -l 引數的例項;

finger -l 如果不加使用者名稱的情況下,可以列出所有透過tty登入的使用者資訊;如果您想查詢某個使用者,就直接指定使用者,可以指定一個或多個;什麼是tty登入?如果您在全屏文字介面操作的話,您可以透過按CTRL+F2或CTRL+F3 或CTRL+F4等, 以幾個不同的使用者登入到主機上,您就會看到,每個使用者都有不同的tty;

[beinan@localhost ~]$ finger -l
[beinan@localhost ~]$ finger -l beinan linuxsir 注:可以同時查詢幾個使用者資訊,以長格式輸出;

[beinan@localhost ~]$ finger beinan
Login: beinan Name: beinan sun
Directory: /home/beinan Shell: /bin/bash
On since Wed Nov 2 08:27 (CST) on tty1 2 hours 29 minutes idle
On since Wed Nov 2 10:50 (CST) on pts/0 from :0.0
No mail.
No Plan.

在本例中,所查詢的使用者是beinan,真實名字是beinan sun ,家目錄位於 /home/beinan ,所用SHELL型別是bash ;然後就是透過哪個終端登入的,登入時間,是不是有mail ,有Plan 等;

例項三:引數組合的例子;

[beinan@localhost ~]$ finger -lp beinan
Login: beinan Name: beinan sun
Directory: /home/beinan Shell: /bin/bash
On since Wed Nov 2 08:27 (CST) on tty1 2 hours 36 minutes idle
On since Wed Nov 2 10:50 (CST) on pts/0 from :0.0
No mail.

註解:查詢beinan使用者資訊,以長格式輸出,並且不輸出.Plan和.Project的內容;

例項四: finger -s 和w 及who的比較;

對於finger 就說這麼多吧,極為簡單的工具,當用到-s 引數時,您最好和w和who工具對照,看看finger -s 和w 及who的輸出有什麼異同,w和who是查詢哪些使用者登入主機的;而finger -s 呢,無論是登入還是不登入的使用者都可以查;但所查到的內容側重有所不同;自己看看例子;

[beinan@localhost ~]$ finger -s
Login Name Tty Idle Login Time Office Office Phone
beinan beinan sun tty1 3:03 Nov 2 08:27
beinan beinan sun pts/0 Nov 2 10:50 (:0.0)
linuxsir linuxsir open tty2 1:26 Nov 2 10:03 linuxsir o +1-389-866-771
[beinan@localhost ~]$ w
11:30:36 up 3:04, 3 users, load average: 0.30, 0.15, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
beinan tty1 - 08:27 3:03m 2:52 0.00s /bin/sh /usr/X11R6/bin/startx
linuxsir tty2 - 10:03 1:26m 0.01s 0.01s -bash
beinan pts/0 :0.0 10:50 0.00s 0.16s 0.00s w
[beinan@localhost ~]$ who
beinan tty1 Nov 2 08:27
linuxsir tty2 Nov 2 10:03
beinan pts/0 Nov 2 10:50 (:0.0)

3、查詢登入主機的使用者工具:w 、who 、users

w、who和users工具,是查詢已登入當前主機的使用者;另外finger -s 也同樣能查詢;側重點不一樣;請自己對比著看;畢竟簡單,這裡只是介紹 ;

[beinan@localhost ~]$ w
12:09:56 up 3:43, 7 users, load average: 0.16, 0.10, 0.04
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
beinan tty1 - 08:27 3:42m 3:09 0.00s /bin/sh /usr/X11R6/bin/startx
linuxsir tty2 - 10:03 2:06m 0.01s 0.01s -bash
beinan pts/0 :0.0 11:36 1:09 0.15s 0.15s bash
beinan pts/1 :0.0 11:37 1:12 0.21s 0.21s bash
beinan pts/2 :0.0 12:02 6:52 0.09s 0.09s bash
beinan pts/3 :0.0 12:05 12.00s 0.11s 0.06s ssh -p 17007
beinan pts/4 :0.0 12:06 0.00s 0.21s 0.00s w
[beinan@localhost ~]$ who
beinan tty1 Nov 2 08:27
linuxsir tty2 Nov 2 10:03
beinan pts/0 Nov 2 11:36 (:0.0)
beinan pts/1 Nov 2 11:37 (:0.0)
beinan pts/2 Nov 2 12:02 (:0.0)
beinan pts/3 Nov 2 12:05 (:0.0)
beinan pts/4 Nov 2 12:06 (:0.0)
[beinan@localhost ~]$ users
beinan beinan beinan beinan beinan beinan linuxsir

4、groups 使用者所歸屬的使用者組查詢;

groups 用法很簡單,就是查詢使用者所歸屬哪個或哪些使用者組;

語法格式: groups 使用者名稱

例項:

[beinan@localhost ~]$ groups beinan 注:查詢beinan所歸屬的使用者組;
beinan : beinan 注:beinan 是beinan使用者組下的成員;
[beinan@localhost ~]$ groups linuxsir 注:查詢linuxsir使用者所歸屬的使用者組;
linuxsir : linuxsir root beinan 注:linuxsir使用者是linuxsir使用者組、beinan使用者組、root使用者組成員;

groups 主要是查詢使用者所歸屬的使用者組名,最好和id命令相對比;這樣對這兩個工具都有所瞭解;

三、後記;

本文是很簡單的文件,花十分鐘就能看得完,但對我來說既然想寫入門級系列文件了,再簡單也得告訴初學者,不是嗎?寫本文的時候,我已經把查詢使用者的工具列為《Linux 使用者及使用者組管理工具介紹》的文件中,但寫著寫著發現文件太長了,所以只好把使用者的查詢做為獨立的一篇先發出來;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-948060/,如需轉載,請註明出處,否則將追究法律責任。

相關文章