Linux下查明用戶屬于哪個組的5種方法
譯文【51CTO.com快譯】將用戶添加到現(xiàn)有組是Linux管理員的典型任務(wù)之一。對于面對較龐大環(huán)境的一些管理員來說,這是日常活動。由于我面臨的環(huán)境龐大,由于工作需要,我每天都會在自己的環(huán)境中這么做。
這個重要的命令可以幫助你識別Linux系統(tǒng)上的現(xiàn)有組。
這些命令可幫助你識別用戶屬于哪些組。
/etc/passwd文件中列出了所有系統(tǒng)用戶,/etc/group文件中列出了組,實際的密碼存儲在/etc/shadow文件中。無論我們使用什么命令,它都會從這些文件獲取信息。
而且,每個命令有其獨特的功能,使用戶僅能獲得他們所需的信息。
Linux中有兩種類型的組:
- 主要組:主要組是與用戶帳戶關(guān)聯(lián)的主要組。每個用戶勢必是單個主要組的成員。
- 次要組:次要組用于向用戶授予額外權(quán)限。每個用戶可以成為多個次要組的成員。
什么是/etc/passwd文件?
“/etc/passwd”是個文本文件,包含登錄到Linux系統(tǒng)所需的每個用戶信息。它維護有關(guān)用戶的有用信息,比如用戶名、密碼、用戶ID、組ID、用戶信息、主目錄和shell。
如上所述,密碼文件中的每個用戶配置文件都是一行,含有七個字段。
- $ grep "daygeek" /etc/passwd
- daygeek:x:1000:1000:daygeek,,,:/home/daygeek:/bin/bash
什么是/etc/grou文件?
“/etc/group”是個文本文件,定義了用戶屬于哪些組。我們可以將多個用戶添加到同一個組。
Linux權(quán)限組織成用戶、組及其他三類,這使用戶可以訪問其他用戶的文件和文件夾。
它維護有關(guān)組的有用信息,比如組名稱、組密碼、組ID(GIT)和成員列表。如上所述,組文件中的每個組詳細信息都是一行,含有四個字段。
你可以使用以下七個命令來執(zhí)行此操作。
groups:顯示組的所有成員。
id:打印出指定用戶名的用戶和組信息。
lid或libuser-lid:顯示用戶的組或組的用戶。
getent:從Name Service Switc獲取條目。
compgen:compgen是bash內(nèi)置命令,會為用戶顯示所有的可用命令。
members:列出組的成員。
/etc/group file:另外,我們可以從/etc/group文件查看相應(yīng)用戶的組。
方法1:如何使用groups命令找出Linux中用戶屬于哪些組?
groups命令打印出特定用戶名的主要組及子組的名稱。
- $ groups daygeek
- daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare
如果你想檢查與當前用戶關(guān)聯(lián)的組列,只需運行不帶任何用戶名的“groups”命令。
- $ groups
- daygeek adm cdrom sudo dip plugdev lpadmin sambashare
方法2:如何使用id命令找出Linux中用戶屬于哪些組?
id命令代表身份。它打印真實有效的用戶、組和補充性的組信息,比如用戶名、UID、組名稱和GUID。
- $ id daygeek
- uid=1000(daygeek) gid=1000(daygeek) groups=1000(daygeek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)
如果你想檢查與當前用戶關(guān)聯(lián)的組列表,只需運行不帶任何用戶名的“id”命令。
- $ id
- uid=1000(daygeek) gid=1000(daygeek) groups=1000(daygeek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare)
方法3:如何使用lid命令找出Linux中用戶屬于哪些組?
lid或libuser-lid命令顯示了有關(guān)組的信息,包含用戶名或組名稱中所含的用戶。該命令需要sudo權(quán)限。
你應(yīng)該在較新的系統(tǒng)上運行l(wèi)ibuser-lid命令而不是lid命令。
- $ sudo libuser-lid daygeek
- adm(gid=4)
- cdrom(gid=24)
- sudo(gid=27)
- dip(gid=30)
- plugdev(gid=46)
- lpadmin(gid=116)
- daygeek(gid=1000)
- sambashare(gid=126)
方法4:如何使用getent命令找出Linux中用戶屬于哪些組?
getent命令顯示了Name Service Switch庫支持的數(shù)據(jù)庫的條目,這在/etc/nsswitch.conf中已有配置。
- $ getent group | grep daygeek
- adm:x:4:syslog,daygeek
- cdrom:x:24:daygeek
- sudo:x:27:daygeek,2gadmin
- dip:x:30:daygeek
- plugdev:x:46:daygeek
- lpadmin:x:116:daygeek
- daygeek:x:1000:
- sambashare:x:126:daygeek
如果你只想打印出特定用戶的相關(guān)組的名稱,請使用awk命令以及上述命令。
- $ getent group | grep daygeek | awk -F: '{print $1}'
- adm
- cdrom
- sudo
- dip
- plugdev
- lpadmin
- daygeek
- sambashare
運行以下命令,只打印出主要組的信息。
- $ getent group daygeek
- daygeek:x:1000:
方法5:如何使用/etc/group文件找出Linux下用戶屬于哪些組?
使用grep命令,你可以從/etc/group文件輕松打印出有關(guān)某個用戶的相關(guān)組的信息。
grep命令是指“全局正則表達式打印”,它從文件打印出匹配格式。
- $ grep daygeek /etc/group
- adm:x:4:syslog,daygeek
- cdrom:x:24:daygeek
- sudo:x:27:daygeek,2gadmin
- dip:x:30:daygeek
- plugdev:x:46:daygeek
- lpadmin:x:116:daygeek
- daygeek:x:1000:
- sambashare:x:126:daygeek
如果你只想打印出某個用戶的相關(guān)組的名稱,請使用awk命令以及上述命令。
- $ grep daygeek /etc/group | awk -F: '{print $1}'
- adm
- cdrom
- sudo
- dip
- plugdev
- lpadmin
- daygeek
- sambashare
方法6:如何使用Bash腳本找出Linux下用戶屬于哪些組?
你可以使用簡單的bash腳本來做到這一點。
- $ for user in $(cut -d":" -f1 /etc/passwd); do groups $user; done
- root : root
- daemon : daemon
- www-data : www-data nagcmd
- saned : saned scanner
- pulse : pulse audio
- avahi : avahi
- colord : colord
- hplip : lp
- geoclue : geoclue
- gnome-initial-setup : nogroup
- gdm : gdm
- daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare
- sshd : nogroup
- thanu : thanu
- renu : renu
- 2gadmin : 2gadmin sudo
- testuser : testuser
- demouser : demouser
- sudha : sudha
- suresh : suresh
- mysql : mysql
- ntp : ntp
- u1 : u1
- u2 : u2
- u3 : u3
- u4 : u4
- u5 : u5
- nagios : nagios nagcmd
針對特定的用戶使用下列腳本。
- $ for user in daygeek 2gadmin; do groups $user; done
- daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare
- 2gadmin : 2gadmin sudo
另外的補充方法1:如何使用compgen命令找出Linux下的所有組?
compgen是一個bash內(nèi)置命令,顯示了Linux系統(tǒng)下的所有組。
- $ compgen -g
- root
- daemon
- bin
- sys
- adm
- tty
- disk
- lp
- news
- uucp
- .
- .
- gdm
- daygeek
- sambashare
- thanu
- renu
- 2gadmin
- testuser
- demouser
- sudha
- suresh
- admin
- u1
- u2
- u3
- u4
- u5
- nagios
- nagcmd
另外的補充方法2:如何使用member命令列出Linux下的組成員?
member命令讓你可以列出Linux下一個組的成員。
- $ members sudo
- daygeek 2gadmin
原文標題:5 Methods to Find Out Which Group a User Belongs to in Linux,作者:Prakash Subramanian
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】