Linux

如何驗證使用者是否在組中

  • November 2, 2017

我們將以下使用者添加到組 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 函式接受兩個參數:

  1. 使用者名
  2. 組名

它使用 詢問有關該組的資訊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

引用自:https://unix.stackexchange.com/questions/402009