ユーザーにスペースを含む複数のグループメンバーシップがあります。例:
- 私のメイン\スタッフ
- 私のメイン\スタッフマネージャー
- 私のメイン\スタッフスーパー
ユーザーグループは、以下を使用して返すことができます。
id -Gn username | grep -i -o '\bstaff\b'
残念ながら、ユーザーが "mydomain\staff admin" または "mydomain\staff super" のメンバーであるが "mydomain\staff" でない場合は、クエリが返されます。 "mydomain\staff" グループメンバーシップだけを検索するには?
要求に応じて、サンプル出力は次のようになります。
id -Gn username
次のように(すべて1行に):
mydomain\staff mydomain\staff 管理者 mydomain\staff super mydomain\他のグループ
ベストアンサー1
出力はスペースで区切られているためid -Gn
使用できません。
id
coreutils 8.22以降、GNU実装には-z
空白で区切られたリストの代わりにnullで区切られたリストを出力するオプションがあるので、これを行うことができます(すでにgrep
使用されているように見えるGNUを使用して)。
id -Gzn username | grep -Fxz 'mydomain\staff'
または:
id -Gzn username | grep -z '\\staff$'
staff
誰にでもフィールド(それは何でも)。
そうでない場合は、次のコマンドがあればgetent
問題をリバースエンジニアリングできます。
staff_members=$(getent group 'mydomain\staff' | cut -d : -f 4-)
case ",$staff_members," in
(*,username,*) printf '%s\n' 'username is member of mydomain\staff'
esac