Linux系統使用者與屬組管理(3)
Linux 是一套免費使用和自由傳播的類Unix作業系統,是一個基於POSIX和UNIX的多使用者、多工、支援多執行緒和多CPU的作業系統.它能執行主要的UNIX工具軟體、應用程式和網路協議.它支援32位和64位硬體.Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多使用者網路作業系統.
好了,終於要到了管理 Linux 賬號的時刻了,對於 Linux 有一定的熟悉度之後,再來就是要管理連上 Linux 的賬號問題了,這個賬號的問題可大可小,大到可以限制他使用 Linux 主機的各項資源,小到甚至一般賬號的密碼訂定守則都可以進行規定,管理員的工作中,相當重要的一環就是『管理賬號』啦,因為整個系統都是你在管理的,並且所有一般使用者的賬號申請,都必須要透過你的協助才行,所以你就必須要了解一下如何管理好一個伺服器主機的賬號啦,在管理 Linux 主機的賬號時,我們必須先來了解一下 Linux 到底是如何辨別每一個使用者的.
關於Linux UID賬號 (User Identity 使用者標識號)
超級使用者: UID=0
系統使用者: UID=500-65535 最大:1000-65535
普通使用者: UID:500-65535 最大:1000-65535
關於Linux GID賬號 (Group Identify 組標識號)
初始組(私有組),附加組(公共組)
Linux 使用者檔案解析
雖然我們登陸 Linux 主機的時候,輸入的是我們的賬號,但是其實 Linux 主機並不會直接認識你的『賬號名稱』的,他僅認識 ID (ID 就是一組號碼),由於計算機僅認識 0 與 1,所以主機對於數字比較有概念的,至於賬號只是為了讓人們容易記憶而已,而你的 ID 與賬號的對應就在 /etc/passwd 當中,為了安全起見 Linux 把使用者密碼單獨放在了 /etc/shadow 目錄下,且許可權是隻允許root能夠訪問,下面我們來介紹一下其這兩個配置檔案的具體引數吧.
◆/etc/passwd◆
這個檔案的構造是這樣的,每一行都代表一個賬號,有幾行就代表有幾個賬號在你的系統中,不過需要特別留意的是,裡頭很多賬號本來就是系統正常執行所必須要的,我們可以簡稱他為系統賬號,例如 bin,daemon,adm,nobody 等,這些賬號請不要隨意的刪除,這個檔案的內容有點像下面這個樣子.
[[email protected] ~]# head -n 3 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ....省略....
我們先來看一下每個Linux系統都會有的第一行,就是root這個系統管理員那一行好了,你可以明顯的看出來,每一行使用『:』分隔開,共有七個咚咚,分別是:
列號碼 | 本列作用 |
---|---|
第一列 | 使用者名稱:就是賬號,用來對應UID的:例如root的UID對應就是0 |
第二列 | 密碼位:密碼佔位符,這個欄位的密碼資料在/etc/shadow中 |
第三列 | 使用者UID:0=管理員,1-499=系統賬戶,500-65535=自定義賬戶 |
第四列 | 使用者GID:也就是使用者的組ID號,這個GID與/etc/group有關 |
第五列 | 使用者描述資訊:這一列可有可無,只是用來解釋賬號的意義而已 |
第六列 | 使用者家目錄:指定了使用者的家目錄儲存位置,系統預設生成 |
第七列 | 登陸預設Shell:指明系統預設的登陸shell是什麼 |
◆/etc/shadow◆
我們知道很多程式的執行都與許可權有關,而許可權與 UID/GID 有關,因此各程式當然需要讀取 /etc/passwd 來了解不同賬號的許可權,因此 /etc/passwd 的許可權需配置為 -rw-r--r-- 這樣的情況,雖然早期的口令也有加密過,但卻放置到 /etc/passwd 的第二個欄位上,這樣一來很容易被有心人士所竊取的,加密過的口令也能夠透過暴力破解法去 try and error (試誤) 找出來.
因為這樣的關係,所以後來發展出將口令移動到 /etc/shadow 這個檔案分隔開來的技術,而且還加入很多的口令限制引數在 /etc/shadow 裡頭,在這裡,我們先來了解一下這個檔案的構造吧,這個 /etc/shadow 檔案有點像下面這樣:
[[email protected] ~]# head -n 3 /etc/shadow
root:$6$TT4VWP5W$Libo7Yk8JzG15VQWKu:17699:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
....省略....
基本上,shadow 同樣以『:』作為分隔符,如果數一數,會發現共有九個欄位,這九個欄位的用途是這樣的:
列號碼 | 本列作用 |
---|---|
第一列 | 使用者名稱:這個檔案的第一欄就是賬號,必須要與/etc/passwd相同才行 |
第二列 | 密碼位:這個欄位內的資料才是真正的口令,而且是經過加密的口令 |
第三列 | 密碼最近更改時間:這個欄位記錄了『更改系統口令那一天』的日期 |
第四列 | 密碼最短有效期:賬號的口令在最近一次被更改後需要經過幾天后才能再次更改 |
第五列 | 密碼最長有效期:指定在最近一次更改口令後,經過多久需要再次更改的時間 |
第六列 | 密碼到期前的警告天數:當賬號口令過期時,系統會發出『警告』給這個賬號 |
第七列 | 密碼過期後的寬限天數:口令有效日期為『升級日期(第3欄位)』+『重新變更日期(第5欄位)』 |
第八列 | 密碼失效時間:賬號在此欄位規定的日期之後,將無法再使用,預設是9999999 |
第九列 | 系統保留:此配置沒有被使用,屬於系統保留欄位 |
Linux 屬組檔案解析
認識了賬號相關的兩個檔案 /etc/passwd 與 /etc/shadow 之後,你或許還是會覺得奇怪,那麼群組的配置檔案在哪裡?還有在 /etc/passwd 的第四欄不是所謂的 GID 嗎? 那又是啥? 此時就需要了解 /etc/group 與 /etc/gshadow 這兩個配置檔案嘍.
◆/etc/group◆
這個檔案就是在記錄 GID 與組名的對應了,他主要是實現組使用者的記錄工作, /etc/group 內容有點像以下這樣:
[[email protected] ~]# head -n 3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
....省略....
這個檔案每一行代表一個群組,也是以冒號『:』作為欄位的分隔符,共分為四欄,每一欄位的意義如下:
列號碼 | 本列作用 |
---|---|
第一列 | 組名稱:就是組名,在新建使用者的時候系統會為使用者分配一個預設組. |
第二列 | 密碼佔位符:通常不需要配置,這個配置通常是給『組管理員』使用的. |
第三列 | 組ID號(GID):就是群組的 ID 號碼. |
第四列 | 成員列表:顯示本組內的成員列表 |
◆/etc/gshadow◆
本配置檔案用於儲存組的密碼,等相關資訊/etc/gshadow的內容有點像這樣:
[[email protected] ~]# head -n 3 /etc/gshadow
root:::
bin:::
daemon:::
....省略....
這個檔案內同樣還是使用冒號『:』來作為欄位的分隔字元,而且你會發現,這個檔案幾乎與/etc/group一模一樣,是這樣沒錯不過,要注意的大概就是第二個欄位,第二個欄位是口令欄,如果口令欄上面是『!』時,表示該群組不具有群組管理員,至於第四個欄位也就是支援的賬號名稱,這四個欄位的意義為:
列號碼 | 本列作用 |
---|---|
第一列 | 使用者組:就是組名,本配置檔案必須與/etc/group檔案相對應. |
第二列 | 組密碼:這個段可以是空的或!,如果是空的或有!,表示沒有密碼 |
第三列 | 組管理者:這個欄位也可為空,如果有多個使用者組管理者用,分割 |
第四列 | 組內成員:如果有多個成員用,號分割 |
以系統管理員的角度來說,這個 gshadow 最大的功能就是建立群組管理員啦,那麼什麼是群組管理員呢?由於系統上面的賬號可能會很多,但是我們root可能平時太忙碌,所以當有使用者想要加入某些群組時,root或許會沒有空管理,此時如果能夠建立群組管理員的話,那麼該群組管理員就能夠將那個賬號加入自己管理的群組中,可以免去root的忙碌啦.
Linux 使用者管理命令
好啦!既然要管理賬號,當然是由新增與移除使用者開始的囉~底下我們就分別來談一談如何新增、移除與更改使用者的相關資訊吧~
◆useradd 新建使用者◆
useradd命令用於Linux中建立的新的系統使用者,useradd可用來建立使用者帳號,帳號建好之後,再用passwd設定帳號的密碼.而可用userdel刪除帳號,使用useradd指令所建立的帳號,實際上是儲存在/etc/passwd文字檔案中,在Slackware中,adduser指令是個script程式,利用交談的方式取得輸入的使用者帳號資料,然後再交由真正建立帳號的useradd命令建立新使用者,如此可方便管理員建立使用者帳號.在Red Hat Linux中,adduser命令則是useradd命令的符號連線,兩者實際上是同一個指令,其引數我們會在下面進行說明.
[[email protected] ~]# useradd --help
命令語法:[ user [選項] 使用者名稱 ]
-u UID #建立使用者時指定UID號
-g 組名 #指定一個初始組
-G 組名 #加入一個附加組
-d 目錄 #手動指定某目錄為家目錄
-s 型別 #指定預設Shell,預設/bin/bash
-M #強制不建立家目錄
-D #查詢預設配置引數
-m #強制建立家目錄
-c #指定說明資訊,可隨便寫
-r #建立一個系統的賬號
-e #指定賬號失效日期,格式為『YYYY-MM-DD』
-f #指定口令是否會失效,0為立刻失效
-1 #指定使用者永遠不失效
例項1:使用 useradd -M -r -s /sbin/nologin
引數建立一個系統使用者.
[[email protected] ~]# useradd -M -r -s /sbin/nologin lyshark
[[email protected] ~]# cat /etc/passwd |grep lyshark
lyshark:x:997:995::/home/lyshark:/sbin/nologin
例項2:使用 useradd -G
引數建立使用者並指定組.
[[email protected] ~]# groupadd admin
[[email protected] ~]# useradd -G admin wang
[[email protected] ~]# cat /etc/group |grep wang
admin:x:1000:wang
關於useradd命令的拓展
其實系統已經幫我們規定好非常多的預設值了,所以我們可以簡單的使用『 useradd 賬號 』來建立使用者即可,這些預設值主要會幫我們處理幾個專案:
在 /etc/passwd 裡面建立一行與賬號相關的資料,包括建立UID/GID/家目錄等.
在 /etc/shadow 裡面將此賬號的口令相關引數填入,但是尚未有口令.
在 /etc/group 裡面加入一個與賬號名稱一模一樣的組名.
在 /home 底下建立一個與賬號同名的目錄作為使用者家目錄,且許可權為700.
那麼我們在建立預設使用者的時候也會參考一些配置檔案,來完成預設引數的配置,現在我們可以使用下面的命令來直接獲取預設配置引數.
[[email protected] ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
這個資料其實是由/etc/default/useradd引數讀取出來的,你可以自行用VIM去觀察該檔案的內容,搭配上頭剛剛談過的執行結果,上面這些配置專案所造成的行為分別是:
[[email protected] ~]# vim /etc/default/useradd
GROUP=100
#新建立使用者時預設初始組的GID號(公有組機制)
#現在使用的是私有組機制(根據建立使用者名稱稱建立組)
HOME=/home
#新建立使用者的家目錄的預設位置
INACTIVE=-1
#密碼過期後寬限天數(過期停權),用天數表示:0代表密碼到期立刻失效;正數代表密碼到期後的寬限天數;-1 表示密碼永不失效。
EXPIRE=
#密碼失效時間,此處寫時間戳,到達時間戳時間後立刻失效,不填寫表示使用者密碼永不過期。
SHELL=/bin/bash
#此選項是建立使用者時預設的shell型別,/bin/bash 表示可以登入系統
SKEL=/etc/skel
#此選項是建立使用者時使用的模板目錄,/etc/skel中的檔案在使用者建立時都會被複制到使用者家目錄下。
GREATE_MAIL_SPOOL=yes
#此選項是是否給新使用者建立郵件緩衝(即新郵箱)
[[email protected] ~]# vim /etc/login.defs
MAIL_DIR /var/spool/mail
#指定新使用者的預設郵箱位置。比如xdl使用者的郵箱目錄位置:/var/spool/mail/lyshark
PASS_MAX_DAYS 99999
#這行指定的是密碼的有效期,也就是/etc/shadow檔案的第五欄位。代表多少天之後必須修改密碼,預設值是99999
PASS_MIN_DAYS 0
#這行指定的是兩次密碼的修改間隔時間,也就是/etc/shadow檔案的第四欄位。代表第一次修改密碼之後,幾天後才能再次修改密碼。預設值是0
PASS_MIN_LEN 5
#這行代表密碼的最小長度,預設不小於5位。但是我們現在使用者登入時驗證已經被PAM模組取代,所以這個選項並不生效
PASS_WARN_AGE 7
#這行代表密碼修改到期前的警告天數,也就是/etc/shadow檔案的第六欄位。代表密碼到底有效期前多少天開始進行警告提醒,預設值是7天
UID_MIN 500
#建立普通使用者的時候預設的起始UID號
UID_MAX 60000
#建立普通使用者,不用-u 指定時,預設最大的UID號。
#注:假如有一個使用者建立時通過 -u 指定了 UID 為 550,那麼下一次不指定-u 時,則起始UID 變成從551開始,500-549之間的那些會跳過不使用。
GID_MIN 500
#建立組的時候預設的起始GID號
GID_MAX 60000
#建立組的時候預設的最大的GID號
CREATE_HOME yes
#建立使用者時是否建立使用者家目錄預設 yes 建立
UMASK 077
#這行指定的是建立的使用者家目錄的預設許可權,因為umask值是077,所以新建的使用者家目錄的許可權是700
USERGROUPS_ENAB yes
#這行指定的是使用命令userdel刪除使用者時,是否刪除使用者的初始組,預設是刪除
ENCRYPT_METHOD SHA512
#這行指定Linux使用者的密碼使用SHA512雜湊模式加密,這是新的密碼加密模式,原先的Linux只能用DES或MD5方式加密
現在你知道啦,使用 useradd 這支程式在建立 Linux 上的賬號時,至少會參考:
/etc/default/useradd
/etc/login.defs
/etc/skel/*
這些檔案,不過最重要的其實是建立 /etc/passwd,/etc/shadow,/etc/group,/etc/gshadow還有使用者家目錄就是了~所以,如果你瞭解整個系統執行的狀態,也是可以手動直接修改這幾個檔案就是了.
◆passwd 設定密碼◆
passwd命令用於設定使用者的認證資訊,包括使用者密碼、密碼過期時間等,系統管理者則能用它管理系統使用者的密碼,只有管理者可以指定使用者名稱稱,一般使用者只能變更自己的密碼,其引數我們會在下面進行說明.
[[email protected] ~]# passwd --help
命令語法:[ passwd [選項] 使用者名稱 ]
-u UID #建立使用者時指定UID號
--stdin #非互動給予密碼
-l 使用者名稱 #鎖定使用者,使之無法登陸,會將 /etc/shadow 第二欄最前面加上 ! 使口令失效.
-u 使用者名稱 #解鎖使用者,是 Unlock 的意思
-S 使用者名稱 #檢視使用者賬號狀態(是否被鎖定).
-n #後面接天數,多久不可修改口令天數
-x #後面接天數,多久內必須要更動口令
-w #後面接天數,口令過期前的警告天數
-i #後面接『日期』,口令失效日期
例項1:使用 echo |passwd --stdin
引數非互動設定密碼.
[[email protected] ~]# echo "lyshark" |passwd --stdin lyshark
Changing password for user lyshark.
passwd: all authentication tokens updated successfully.
例項2:使用 passwd
引數修改lyshark使用者的密碼.
[[email protected] ~]# passwd lyshark
Changing password for user lyshark.
New password: 123123
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 123123
passwd: all authentication tokens updated successfully.
root果然是最偉大的人物,當我們要給予使用者口令時,通過root來配置即可,root可以配置各式各樣的口令,系統幾乎一定會接受,所以如同上面的範例,明明輸入的口令太短了,但是系統依舊可接受123123這樣的口令配置.
◆usermod 管理使用者◆
usermod命令用於修改使用者的基本資訊,usermod命令不允許你改變正在線上的使用者帳號名稱,當usermod命令用來改變userid,必須確認這名user沒在電腦上執行任何程式,你需手動更改使用者的crontab,也需手動更改使用者的at工作,採用NIS server須在server上更動相關的NIS設定,其引數我們會在下面進行說明.
[[email protected] ~]# usermod --help
命令語法:[ usermod [選項] 使用者名稱 ]
-u UID #建立使用者時指定UID號
-c #後面加賬號說明
-d 目錄 #結合 -m 直接對家目錄進行改名
-e #後面接日期,格式是 YYYY-MM-DD
-f #後面接天數
-g 組名 #修改指定初始組
-G #修改指定附加組
-a #與 -G 合用,新增次要組
-l 新名 舊名 #修改使用者名稱
-s shell #修改預設Shell
-u UID #修改使用者的指定UID
-L #凍結指定使用者,讓其無法登陸
-U #解除凍結
如果你仔細的比對,會發現 usermod 的選項與 useradd 非常類似,這是因為 usermod 也是用來微調 useradd 新增的使用者引數嘛,不過 usermod 還是有新增的選項,那就是 -L 與 -U,不過這兩個選項其實與 passwd 的 -l,-u 是相同的.
例項1:使用 usermod -m -d /home/hello wang
引數將原wang家目錄修改成hello.
[[email protected] home]# ls
wang
[[email protected] home]# usermod -m -d /home/hello wang
[[email protected] home]# ls
hello
例項2:使用 usermod -s /bin/bash
引數修改lyshark賬戶的預設shell.
[[email protected] ~]# usermod -s /bin/bash lyshark
◆userdel 刪除使用者◆
userdel命令用於刪除給定的使用者,以及與使用者相關的檔案,若不加選項,則僅刪除使用者帳號,而不刪除相關檔案,其引數我們會在下面進行說明.
[[email protected] ~]# userdel --help
命令語法:[ userdel [選項] 使用者名稱 ]
-f #強制刪除使用者,即使使用者已登陸
-r #同時刪除家目錄
這個功能就太簡單了,目的在刪除使用者的相關資料,而使用者的資料有:
使用者賬號/口令相關引數:/etc/passwd, /etc/shadow
使用者群組相關引數:/etc/group, /etc/gshadow
使用者個人檔案資料: /home/username, /var/spool/mail/username..
這個命令下達的時候要小心了,通常我們要移除一個賬號的時候,你可以手動的將 /etc/passwd 與 /etc/shadow 裡頭的該賬號取消即可,一般而言,如果該賬號只是『暫時不啟用』的話,那麼將 /etc/shadow 裡頭賬號失效日期 (第八欄位) 配置為 0 就可以讓該賬號無法使用,但是所有跟該賬號相關的資料都會留下來,使用userdel的時候通常是『你真的確定不要讓該使用者在主機上面使用任何資料了』
◆chage 查詢引數◆
chage命令是用來修改帳號和密碼的有效期限,其引數我們會在下面進行說明.
[[email protected] ~]# chage --help
命令語法:[ chage [選項] 使用者名稱 ]
-m #密碼可更改的最小天數
-M #密碼保持有效的最大天數
-w #使用者密碼到期前警告天數
-E #帳號到期時間
-d #上一次更改的日期
-l #列出該賬號的詳細口令引數
chage -d 0 #強制使用者下次登陸修改密碼
例項1:使用 chage -d 0 lyshark
強制使用者下次登陸修改密碼.
[[email protected] ~]# chage -l lyshark
Last password change : Nov 14, 2018
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
[[email protected] ~]# chage -d 0 lyshark
[[email protected] ~]# chage -l lyshark
Last password change : password must be changed
Password expires : password must be changed
Password inactive : password must be changed
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Linux 屬組管理命令
瞭解了賬號的新增、刪除、更動與查詢後,再來我們可以聊一聊群組的相關內容了,基本上,群組的內容都與這兩個檔案有關:/etc/group,/etc/gshadow,群組的內容其實很簡單,都是上面兩個檔案的新增、修改與移除而已,不過如果再加上有效群組的概念,那麼gpasswd則不可不知呢.
◆groupadd 新增屬組◆
groupadd命令用於建立一個新的工作組,新工作組的資訊將被新增到系統檔案中,其引數我們會在下面進行說明.
[[email protected] ~]# groupadd --help
命令語法:[ groupadd [選項] 組名 ]
-g #指定組GID
-r #建立系統群組
◆groupmod 修改屬組◆
groupmod命令更改群組識別碼或名稱,需要更改群組的識別碼或名稱時,可用groupmod指令來完成這項工作,其引數我們會在下面進行說明.
[[email protected] ~]# groupmod --help
命令語法:[ groupmod [選項] 組名 ]
-g #修改原有的GID數字
-n #修改原有的組名
◆groupdel 刪除屬組◆
groupdel命令用於刪除指定的工作組,本命令要修改的系統檔案包括/ect/group和/ect/gshadow,若該群組中仍包括某些使用者,則必須先刪除這些使用者後,方能刪除群組,其引數我們會在下面進行說明.
[[email protected] ~]# groupdel --help
命令語法:[ groupdel [選項] 組名 ]
◆gpasswd 新增成員◆
gpasswd命令是Linux下工作組檔案/etc/group和/etc/gshadow管理工具,其引數我們會在下面進行說明.
[[email protected] ~]# gpasswd --help
命令語法:[ gpasswd [選項] 組名 ]
-a #新增使用者到組
-d #從組刪除使用者
-A #指定管理員
-M #指定組成員
-r #刪除密碼
-R #限制使用者登入組
例項1:使用 gpasswd -a
新增lyshark使用者到root組.
[[email protected] ~]# gpasswd -a lyshark root
Adding user lyshark to group root
例項2:使用 gpasswd -d
從lyshark組中刪除root.
[[email protected] ~]# gpasswd -d lyshark root
Removing user lyshark from group root
例項3:使用 gpasswd -M
批量將使用者 a1,a2,a3,a4 新增到test組.
[[email protected] ~]# useradd a1
[[email protected] ~]# useradd a2
[[email protected] ~]# useradd a3
[[email protected] ~]# useradd a4
[[email protected] ~]# groupadd test
[[email protected] ~]# gpasswd -M a1,a2,a3,a4 test
[email protected] ~]# cat /etc/group |grep test
test:x:1008:a1,a2,a3,a4
Linux 使用者查詢命令
談了這麼多的賬號問題,總是該要談一談,那麼如何針對系統上面的使用者進行查詢吧?想幾個狀態,如果你在Linux上面操作時,剛好有其他的使用者也登陸主機,你想要跟他對談,該如何是好,你想要知道某個賬號的相關資訊,該如何查閱,下面我們就來看一看具體的查詢技巧吧.
◆su 切換身份命令◆
su命令用於切換當前使用者身份到其他使用者身份,變更時須輸入所要變更的使用者帳號與密碼,其引數我們會在下面進行說明.
[[email protected] ~]# su --help
命令語法:[ su - [選項] 使用者名稱 ]
-c 指令 #執行完指定的指令後,即恢復原來的身份
-f #使shell不用去讀取啟動檔案
-l #改變身份時連同環境變數一起切換
-m #改變身份不同步環境變數
-s shell #指定要執行的shell
例項1:使用 su -c
執行指令後自動退出.
[[email protected] ~]# su -c id lyshark
uid=1000(lyshark) gid=1000(lyshark) groups=1000(lyshark)
◆id 查詢使用者資訊◆
id命令可以顯示真實有效的使用者ID(UID)和組ID(GID),UID 是對一個使用者的單一身份標識,組ID(GID)則對應多個UID,id命令已經預設預裝在大多數Linux系統中,要使用它,只需要在你的控制檯輸入id,其引數我們會在下面進行說明.
[[email protected] ~]# id --help
命令語法:[ id [選項] 使用者名稱 ]
-g #顯示使用者所屬群組的ID
-G #顯示使用者所屬附加群組的ID
-n #顯示使用者,所屬群組或附加群組的名稱.
-r #顯示實際ID
-u #顯示使用者ID
例項1:使用 id
命令查詢指定使用者.
[[email protected] ~]# id lyshark
uid=1000(lyshark) gid=1000(lyshark) groups=1000(lyshark)
◆w 顯示登陸使用者列表◆
w命令用於顯示已經登陸系統的使用者列表,並顯示使用者正在執行的指令,執行這個命令可得知目前登入系統的使用者有那些人,以及他們正在執行的程式,單獨執行w命令會顯示所有的使用者,您也可指定使用者名稱稱,僅顯示某位使用者的相關資訊,其引數我們會在下面進行說明.
[[email protected] ~]# w --help
命令語法:[ w [選項] 使用者名稱 ]
-h #不列印頭資訊
-u #當顯示當前程序和cpu時間時忽略使用者名稱
-s #使用短輸出格式
-f #顯示使用者從哪登入
例項1:使用 w
命令檢視系統正在登陸的使用者.
[[email protected] ~]# w
14:40:07 up 3 min, 2 users, load average: 0.03, 0.09, 0.05
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root pts/0 192.168.1.20 14:37 7.00s 0.10s 0.00s w
lyshark pts/1 192.168.1.20 14:38 1:59 0.01s 0.01s -bash
例項2:使用 w -h lyshark
命令檢視lyshark使用者的登陸情況.
[[email protected] ~]# w -h lyshark
lyshark pts/1 192.168.1.20 14:38 4:31 0.01s 0.01s -bash
◆who 顯示登入系統資訊◆
who命令是顯示目前登入系統的使用者資訊,執行who命令可得知目前有那些使用者登入系統,單獨執行who命令會列出登入帳號,使用的終端機,登入時間以及從何處登入或正在使用哪個顯示器,其引數我們會在下面進行說明.
[[email protected] ~]# who --help
命令語法:[ who [選項] ]
-H #顯示各欄位的標題資訊列
-u #顯示使用者閒置時間(1分鐘內無操作顯示. 24小時不操作顯示old)
-m #與 who am i 引數效果相同
-q #只顯示登入系統的帳號名稱和總人數
-s #只負責解決相容性問題
-w #顯示使用者的資訊狀態列
例項1:使用 who -q
命令檢視系統登入使用者總人數.
[[email protected] ~]# who -q
root lyshark admin users wangrui
# users=5
◆last 顯示使用者最近登入資訊◆
last命令用於顯示使用者最近登入資訊,單獨執行last命令,它會讀取/var/log/wtmp的檔案,並把該給檔案的內容記錄的登入系統的使用者名稱單全部顯示出來,其引數我們會在下面進行說明.
[[email protected] ~]# last --help
命令語法:[ last [選項] [檔案目錄] ]
-H #顯示各欄位的標題資訊列
-a #把從何處登入系統的主機名稱或IP,顯示在最後一行
-d #將IP地址轉換成主機名稱
-f 記錄檔案 #指定記錄檔案
-n 顯示條數 #設定列出名單的顯示列數
-R #不顯示登入系統的主機名稱或IP地址
-x #顯示系統關機,重新開機,以及執行等級的改變等資訊
例項1:使用 last -f /var/log/wtmp
指定一個讀取檔案,來列印.
[[email protected] ~]# last -f /var/log/wtmp
lyshark pts/1 192.168.1.20 Wed Nov 14 14:38 still logged in
root pts/0 192.168.1.20 Wed Nov 14 14:37 still logged in
reboot system boot 3.10.0-862.el7.x Wed Nov 14 14:36 - 14:57 (00:21)
root pts/0 192.168.1.8 Tue Nov 6 11:02 - crash (8+03:34)
....省略....
wtmp begins Sat Oct 13 12:39:18 2018
例項2:使用 last -n 4
命令顯示前4行資料.
[[email protected] ~]# last -n 4
lyshark pts/1 192.168.1.20 Wed Nov 14 14:38 still logged in
root pts/0 192.168.1.20 Wed Nov 14 14:37 still logged in
reboot system boot 3.10.0-862.el7.x Wed Nov 14 14:36 - 14:58 (00:22)
root pts/0 192.168.1.8 Tue Nov 6 11:02 - crash (8+03:34)
wtmp begins Sat Oct 13 12:39:18 2018
◆lastlog 顯示最後登陸資訊◆
lastlog命令用於顯示系統中所有使用者最近一次登入資訊.
lastlog檔案在每次有使用者登入時被查詢,可以使用lastlog命令檢查某特定使用者上次登入的時間,並格式化輸出上次登入日誌/var/log/lastlog的內容,它根據UID排序顯示登入名、埠號(tty)和上次登入時間,如果一個使用者從未登入過,lastlog顯示 Never logged,注意需要以root身份執行該命令,其引數我們會在下面進行說明.
[[email protected] ~]# lastlog --help
命令語法:[ lastlog [選項] [檔案目錄] ]
-b 天數 #顯示指定天數前的登入資訊
-t 天數 #顯示指定天數以來的登入資訊
-u 使用者名稱 #顯示指定使用者的最近登入資訊
例項1:使用 lastlog -u root
查詢root的最後登入日期.
[[email protected] ~]# lastlog -u root
Username Port From Latest
root pts/0 192.168.1.20 Wed Nov 14 14:37:27 -0500 2018
Linux 使用者對話命令
◆write 線上傳送提示◆
write命令用於向指定登入使用者終端上傳送資訊,通過write命令可傳遞資訊給另一位登入系統的使用者,當輸入完畢後,鍵入EOF表示資訊結束,write命令就會將資訊傳給對方,如果接收資訊的使用者不只登入本地主機一次,你可以指定接收資訊的終端機編號.
例項1:使用 write
給lyshark使用者傳送訊息.
[[email protected] ~]# echo "hello lyshark" | write lyshark
例項2:使用 write
給lyshark使用者無線傳送亂碼.
while true
do
cat /var/log/messages |base64 |write lyshark
done
注意:若對方設定mesg n 則此時資訊將無法傳給對方.
◆wall 給所有人通知◆
wall命令用於向系統當前所有開啟的終端上輸出資訊,通過wall命令可將資訊傳送給每位同意接收公眾資訊的終端機使用者,若不給予其資訊內容,則wall命令會從標準輸入裝置讀取資料,然後再把所得到的資料傳送給所有終端機使用者.
例項1:使用 wall
給全部使用者傳送訊息.
[[email protected] ~]# wall hello linux admin
[[email protected] ~]#
Broadcast message from [email protected] (pts/0) (Wed Nov 14 15:28:01 2018):
hello linux admin
◆mail 傳送郵件◆
mail命令是命令列的電子郵件傳送和接收工具,操作的介面不像elm或pine那麼容易使用,但功能非常完整,其引數我們會在下面進行說明.
[[email protected] ~]# yum install -y mailx
[[email protected] ~]# mail --help
命令語法:[ mail [選項] [使用者] ]
-b 地址 #指定密件副本的收信人地址
-c 地址 #指定副本的收信人地址
-f 郵件檔案 #讀取指定郵件檔案中的郵件
-i #不顯示終端發出的資訊
-I #使用互動模式
-s 郵件主題 #指定郵件的主題
-u 使用者帳號 #讀取指定使用者的郵件
h #列出信件表頭
d #刪除郵件
s #將郵件儲存成檔案
q #退出
例項1:使用 mail
使用管道進行郵件傳送.
[[email protected] ~]# echo "hello,this is the content of mail." |mail -s "by root" lyshark
You have new mail in /var/spool/mail/root
例項2:使用 mail
使用檔案進行郵件傳送.
[[email protected] ~]# mail -s "by root" [email protected] < mail.txt
You have new mail in /var/spool/mail/root