web-dev-qa-db-ja.com

SudoユーザーがSudoグループに含まれていませんか?

このようなユーザーを追加する場合:

Sudo adduser someuser --ingroup Sudo

追加されたユーザーはSudoを使用できますが、/etc/group Sudoにも/etc/sudoersにもありません
では、どのように機能しますか?

3
EdiD

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グループのすべてのメンバーに、各ユーザーを手動で指定することなく、任意のユーザーとしてコマンドを実行するための完全なアクセス許可を自動的に付与します。

2
Byte Commander

adduser--ingroupオプションは、追加されたユーザーのプライマリグループを変更/追加します。ユーザーのプライマリグループは、/etc/passwdファイルの:で区切られて保存されます4番目のフィールド、数値GID。

Sudo/etc/passwdファイルを読み取り、ユーザーsomeuserがプライマリグループSudoを持っていることを確認しているので、Sudoコマンドは完全に機能しています。

現在、/etc/groupSudoグループエントリは、/etc/groupがプライマリではなくセカンダリグループメンバーシップのみを格納するため、まだメンバーシップを表示しません。

2
heemayl