現在のユーザーが特定のグループに属しているかどうかを確認する方法は?

現在のユーザーが特定のグループに属しているかどうかを確認する方法は?

入ると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を共有することはめったにありません。 )。

おすすめ記事