このようなユーザーを追加する場合:
Sudo adduser someuser --ingroup Sudo
追加されたユーザーはSudo
を使用できますが、/etc/group
Sudoにも/etc/sudoers
にもありません
では、どのように機能しますか?
adduser
コマンドは、ユーザーのプライマリグループをSudo
に設定します。
man adduser
から:
By default, each user in Debian GNU/Linux is given a corresponding
group with the same name. [ ... ] Users' primary
groups can also be overridden from the command line with the --gid or
--ingroup options to set the group by id or name, respectively.
[ ... ]
--ingroup GROUP
Add the new user to GROUP instead of a usergroup or the default
group defined by USERS_GID in the configuration file. This
affects the users primary group. To add additional groups, see
the add_extra_groups option
プライマリグループは通常、ユーザーと同じ名前とIDを持っています。次のように、/etc/group
ではなく/etc/passwd
に保存されます。
bytecommander:x:1000:1000:ByteCommander,,,:/home/bytecommander:/bin/bash
4番目の:
で区切られたフィールドには、ユーザーのプライマリグループのGID(グループID)が含まれます。
これで、/etc/group
にはすべてのグループのリストが含まれ、このグループを追加の(プライマリではない)グループとして持つユーザーを次のように関連付けます。
Sudo:x:27:bytecommander
プライマリグループと追加グループの違いは、id
コマンドの出力でも確認できます(私によるフォーマット):
$ id
uid=1000(bytecommander)
gid=1000(bytecommander)
groups=1000(bytecommander),27(Sudo)
Sudo
の使用にとって重要なのは、Sudo
グループのメンバーシップのみであり、プライマリメンバーシップとセカンダリメンバーシップを区別しません。責任のある設定行は/etc/sudoers
にあり、次のようになります。
%Sudo ALL=(ALL:ALL) ALL
この行は、Sudo
グループのすべてのメンバーに、各ユーザーを手動で指定することなく、任意のユーザーとしてコマンドを実行するための完全なアクセス許可を自動的に付与します。
adduser
の--ingroup
オプションは、追加されたユーザーのプライマリグループを変更/追加します。ユーザーのプライマリグループは、/etc/passwd
ファイルの:
で区切られて保存されます4番目のフィールド、数値GID。
Sudo
は/etc/passwd
ファイルを読み取り、ユーザーsomeuser
がプライマリグループSudo
を持っていることを確認しているので、Sudo
コマンドは完全に機能しています。
現在、/etc/group
のSudo
グループエントリは、/etc/group
がプライマリではなくセカンダリグループメンバーシップのみを格納するため、まだメンバーシップを表示しません。