將用戶添加到現有組是Linux管理員的典型任務之一。對于面對較龐大環境的一些管理員來說,這是日常活動。由于我面臨的環境龐大,由于工作需要,我每天都會在自己的環境中這么做。
這個重要的命令可以幫助你識別Linux系統上的現有組。
這些命令可幫助你識別用戶屬于哪些組。
/etc/passwd文件中列出了所有系統用戶,/etc/group文件中列出了組,實際的密碼存儲在/etc/shadow文件中。無論我們使用什么命令,它都會從這些文件獲取信息。
而且,每個命令有其獨特的功能,使用戶僅能獲得他們所需的信息。
Linux中有兩種類型的組:
主要組:主要組是與用戶帳戶關聯的主要組。每個用戶勢必是單個主要組的成員。
次要組:次要組用于向用戶授予額外權限。每個用戶可以成為多個次要組的成員。
什么是/etc/passwd文件?
“/etc/passwd”是個文本文件,包含登錄到Linux系統所需的每個用戶信息。它維護有關用戶的有用信息,比如用戶名、密碼、用戶ID、組ID、用戶信息、主目錄和shell。
如上所述,密碼文件中的每個用戶配置文件都是一行,含有七個字段。
$ grep “daygeek” /etc/passwd
daygeek:x:1000:1000:daygeek,,,:/home/daygeek:/bin/bash
什么是/etc/grou文件?
“/etc/group”是個文本文件,定義了用戶屬于哪些組。我們可以將多個用戶添加到同一個組。
Linux權限組織成用戶、組及其他三類,這使用戶可以訪問其他用戶的文件和文件夾。
它維護有關組的有用信息,比如組名稱、組密碼、組ID(GIT)和成員列表。如上所述,組文件中的每個組詳細信息都是一行,含有四個字段。
你可以使用以下七個命令來執行此操作。
groups:顯示組的所有成員。
id:打印出指定用戶名的用戶和組信息。
lid或libuser-lid:顯示用戶的組或組的用戶。
getent:從Name Service Switc獲取條目。
compgen:compgen是bash內置命令,會為用戶顯示所有的可用命令。
members:列出組的成員。
/etc/group file:另外,我們可以從/etc/group文件查看相應用戶的組。
方法1:如何使用groups命令找出Linux中用戶屬于哪些組?
groups命令打印出特定用戶名的主要組及子組的名稱。
$ groups daygeek
daygeek : daygeek adm cdrom sudo dip plugdev lpadmin sambashare
如果你想檢查與當前用戶關聯的組列,只需運行不帶任何用戶名的“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)
如果你想檢查與當前用戶關聯的組列表,只需運行不帶任何用戶名的“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命令顯示了有關組的信息,包含用戶名或組名稱中所含的用戶。該命令需要sudo權限。
你應該在較新的系統上運行libuser-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庫支持的數據庫的條目,這在/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
如果你只想打印出特定用戶的相關組的名稱,請使用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文件輕松打印出有關某個用戶的相關組的信息。
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
如果你只想打印出某個用戶的相關組的名稱,請使用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內置命令,顯示了Linux系統下的所有組。
$ 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
責任編輯:ct
評論
查看更多