將用戶添加到現(xiàn)有組是Linux管理員的典型任務(wù)之一。對(duì)于面對(duì)較龐大環(huán)境的一些管理員來說,這是日常活動(dòng)。由于我面臨的環(huán)境龐大,由于工作需要,我每天都會(huì)在自己的環(huán)境中這么做。
這個(gè)重要的命令可以幫助你識(shí)別Linux系統(tǒng)上的現(xiàn)有組。
這些命令可幫助你識(shí)別用戶屬于哪些組。
/etc/passwd文件中列出了所有系統(tǒng)用戶,/etc/group文件中列出了組,實(shí)際的密碼存儲(chǔ)在/etc/shadow文件中。無論我們使用什么命令,它都會(huì)從這些文件獲取信息。
而且,每個(gè)命令有其獨(dú)特的功能,使用戶僅能獲得他們所需的信息。
Linux中有兩種類型的組:
主要組:主要組是與用戶帳戶關(guān)聯(lián)的主要組。每個(gè)用戶勢必是單個(gè)主要組的成員。
次要組:次要組用于向用戶授予額外權(quán)限。每個(gè)用戶可以成為多個(gè)次要組的成員。
什么是/etc/passwd文件?
“/etc/passwd”是個(gè)文本文件,包含登錄到Linux系統(tǒng)所需的每個(gè)用戶信息。它維護(hù)有關(guān)用戶的有用信息,比如用戶名、密碼、用戶ID、組ID、用戶信息、主目錄和shell。
如上所述,密碼文件中的每個(gè)用戶配置文件都是一行,含有七個(gè)字段。
$ grep “daygeek” /etc/passwd
daygeek:x:1000:1000:daygeek,,,:/home/daygeek:/bin/bash
什么是/etc/grou文件?
“/etc/group”是個(gè)文本文件,定義了用戶屬于哪些組。我們可以將多個(gè)用戶添加到同一個(gè)組。
Linux權(quán)限組織成用戶、組及其他三類,這使用戶可以訪問其他用戶的文件和文件夾。
它維護(hù)有關(guān)組的有用信息,比如組名稱、組密碼、組ID(GIT)和成員列表。如上所述,組文件中的每個(gè)組詳細(xì)信息都是一行,含有四個(gè)字段。
你可以使用以下七個(gè)命令來執(zhí)行此操作。
groups:顯示組的所有成員。
id:打印出指定用戶名的用戶和組信息。
lid或libuser-lid:顯示用戶的組或組的用戶。
getent:從Name Service Switc獲取條目。
compgen:compgen是bash內(nèi)置命令,會(huì)為用戶顯示所有的可用命令。
members:列出組的成員。
/etc/group file:另外,我們可以從/etc/group文件查看相應(yīng)用戶的組。
方法1:如何使用groups命令找出Linux中用戶屬于哪些組?
groups命令打印出特定用戶名的主要組及子組的名稱。
$ groups daygeek
daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare
如果你想檢查與當(dāng)前用戶關(guān)聯(lián)的組列,只需運(yùn)行不帶任何用戶名的“groups”命令。
$ groups
daygeek adm cdrom sudo dip plugdev lpadmin sambashare
方法2:如何使用id命令找出Linux中用戶屬于哪些組?
id命令代表身份。它打印真實(shí)有效的用戶、組和補(bǔ)充性的組信息,比如用戶名、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)
如果你想檢查與當(dāng)前用戶關(guān)聯(lián)的組列表,只需運(yù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)上運(yùn)行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)組的名稱,請(qǐng)使用awk命令以及上述命令。
$ getent group | grep daygeek | awk -F: ‘{print $1}’
adm
cdrom
sudo
dip
plugdev
lpadmin
daygeek
sambashare
運(yùn)行以下命令,只打印出主要組的信息。
$ getent group daygeek
daygeek:x:1000:
方法5:如何使用/etc/group文件找出Linux下用戶屬于哪些組?
使用grep命令,你可以從/etc/group文件輕松打印出有關(guān)某個(gè)用戶的相關(guān)組的信息。
grep命令是指“全局正則表達(dá)式打印”,它從文件打印出匹配格式。
$ 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
如果你只想打印出某個(gè)用戶的相關(guān)組的名稱,請(qǐng)使用awk命令以及上述命令。
$ grep daygeek /etc/group | awk -F: ‘{print $1}’
adm
cdrom
sudo
dip
plugdev
lpadmin
daygeek
sambashare
方法6:如何使用Bash腳本找出Linux下用戶屬于哪些組?
你可以使用簡單的bash腳本來做到這一點(diǎn)。
$ 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
針對(duì)特定的用戶使用下列腳本。
$ for user in daygeek 2gadmin; do groups $user; done
daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare
2gadmin : 2gadmin sudo
另外的補(bǔ)充方法1:如何使用compgen命令找出Linux下的所有組?
compgen是一個(gè)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
另外的補(bǔ)充方法2:如何使用member命令列出Linux下的組成員?
member命令讓你可以列出Linux下一個(gè)組的成員。
$ members sudo
daygeek 2gadmin
責(zé)任編輯:ct
評(píng)論
查看更多