
入るとgroups
リストが出ますが、
$> groups
ecarroll cdrom floppy audio dip video plugdev netdev bluetooth docker
ログインしたユーザーが特定のグループに属しているかどうかを確認するには?
答え1
現在のプロセスの実際の gid、有効 gid、または指定されたグループ名と一致する補足 gid のいずれかを見つけるには、GNU システムで次の操作を実行できます。
if
gid=$(set -o pipefail; getent -- group "$group" | cut -d: -f3) &&
id -G | grep -qwe "$gid"
then
printf '%s\n' "current process credentials include $group's id ($gid)"
fi
または以下を使用してperl
:
perl -se 'if (@g = getgrnam($group)) {
for (split " ", $)) {exit if $_ == $g[2]}
}
exit 1' -- -group="$group"
与えられたオブジェクトが$user
与えられたグループのメンバーとしてリストされているか、またはデフォルトのgidがのIDと一致するかどうかを確認するために$group
同じことを行うことができますが、代わりにid -G -- "$user"
を使うことができます。しかし、そうでない場合でも、メンバーと言うことができますid -G
。同じGIDを持つ別のグループのメンバーである場合は、そのメンバーの1つとしてリストされます。$user
$group
passwd
そしてデータベースで次のことを覚えておいてくださいgroup
。鍵はIDではなくユーザー/グループ名であり、複数のユーザー/グループが同じIDを持つことができます。したがって、最初にIDを名前に変換して比較する方法は、一般的なケースでは間違っています(最近では、複数のユーザーが同じuidを共有することはめったにありません。 )。
答え2
1つのオプションは、次を使用することです。
groups | grep -E '(^| )mygroup($| )'