Linux
如何驗證使用者是否在組中
我們將以下使用者添加到組 white_house
指甲, 王牌, karter
usermod -a -G white_house kuku usermod -a -G white_house trump usermod -a -G white_house karter
眾所周知,我們可以通過以下方式驗證使用者是否已添加到組中
grep white_house /etc/group
但是是否可以通過一些命令行或更優雅的方式來驗證它?
你可以使用 getent
getent group white_house
或者,如果您想檢查可以使用的特定使用者組
groups
groups karter
以下 shell 函式接受兩個參數:
- 使用者名
- 組名
它使用 詢問有關該組的資訊
getent group
,然後將該結果傳遞給 awk。awk 獲取使用者列表(欄位 4,以冒號分隔)並進一步將其拆分為“使用者”數組,以逗號分隔。然後它在單獨的行上列印該數組的每個元素(使用者名),grep
然後檢查給定的使用者名。如果找到使用者,則 grep(以及整個函式)返回 0/success;否則,它返回 1/失敗。grep 標誌的意思是:
-F
– 將搜尋文本視為固定字元串,而不是正則表達式-x
– 要求整行匹配搜尋文本(避免誤報匹配,例如“john”和“johnson”-q
– 不會在螢幕上列印任何內容,但會適當地設置返回碼function useringroup { getent group "$2" | awk -F: '{split($4, users, ","); for (name in users) print users[name]}' | grep -Fxq "$1" }
像這樣使用它:
useringroup myuser mygroup && echo myuser is in mygroup || echo myuser is not in mygroup