作者:北南南北
贊助:
來自:LinuxSir.Org
摘要: 本文主要介紹在使用者管理中,查詢使用者的幾種工具介紹 id 、finger、groups 以及 w、who、users ;
目錄索引
一、使用者查詢工具的原理;
二、使用者(User)和使用者組(Group)查詢工具;
1、id 工具: 查詢使用者所對應的UID 和GID 及GID所對應的使用者組;
2、finger 工具:用來查詢使用者資訊,側重使用者家目錄、登入SHELL等;
3、查詢登入主機的使用者工具:w 、who 、users
4、groups 使用者所歸屬的使用者組查詢;
三、後記;
四、參與修正本文;
五、致謝;
六、相關文檔;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一、使用者查詢工具的原理;
在使用者管理中,使用者查詢是通過幾個常用的工具來完成的,比如id 、finger、groups、users ... ... ,我們都知道使用者的設定檔是/etc/passwd,使用者組的設定檔是/etc/groups 檔案,我們對使用者的查詢除了通過查詢工具以外,我們還能直接查看使用者和使用者組的設定檔來達到查詢的目的;
使用者查詢工具的原理也是讀取與使用者和使用者組有關的設定檔,然後按一定的規則和條件輸出,使用者和使用者組設定檔很重要,所以您有必要先讀一下關有使用者管理的文檔:
《Linux 使用者(user)和使用者組(group)管理概述》
《使用者(user)和使用者組(group)設定檔詳解》
二、使用者(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 xmbnnbdl@linuxsir.org -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 使用者及使用者組管理工具介紹》的文檔中,但寫著寫著發現文檔太長了,所以只好把使用者的查詢做為獨立的一篇先發出來;
我的下一篇文檔計劃是接著寫使用者管理的相關工具,比如使用者的添加、刪除、修改等工具;如果順利的話,會在這兩天完成,不過這僅僅是計劃;因為在寫超級許可權控制的時候,我也說過用一到兩天,而我卻寫十二天;
四、參與修正本文;
在以後本文檔中,我想讓大家來參與修正,畢竟一個人寫的東西肯定會存在問題,幾個腦袋總比一個腦袋要好的多吧;請大家多多指點;比如本文中關於使用者查詢工具工作原理可能表達不太準確或不足;另外w、who查詢線上使用者的原理沒有提到,如果哪位弟兄有時間可以把查詢線上使用者的工具獨列出來寫成文檔;謝謝;
五、致謝;
六、相關文檔;
《Linux 使用者(user)和使用者組(group)管理概述》
《使用者(user)和使用者組(group)設定檔詳解》
《Linux 使用者(User)查詢篇》
《Linux 使用者管理工具介紹》
《Linux 系統中的超級許可權的控制》
《在Linux系統中,大量新增使用者的操作流程》