web-dev-qa-db-ja.com

NixOSで、sudoersファイルにユーザーを追加するにはどうすればよいですか?

インストールしてNixOSを使い始めようとしています。また、ユーザーをsudoersファイルに追加しようとしています。

Rootとしてすべてのコマンドを実行しないように、NixOSマニュアルの 第7章ユーザー管理 に従ってユーザーを作成しました。つまり、私は走った

# useradd -m matthew
# su - matthew -c "true"
# passwd matthew
Enter new UNIX password: ***
Retype new UNIX password: ***

そしてまた、私は追加しました

users.extraUsers.matthew = {
    isNormalUser = true;
    home = "/home/matthew";
    extragroups = [ "wheel" "networkmanager" ];
}

/etc/nixos/configuration.nixへ。しかし、それでもSudomatthewとして実行することはできません。たとえば、SudoでSudoのマニュアルページを開こうとすると、matthew is not in the sudoers fileエラーが発生します。

$ Sudo man Sudo
[Sudo] password for matthew:
matthew is not in the sudoers file. This incident will be reported.

次に、他のディストリビューションのsudoersファイルにユーザーを追加する方法、つまり$ visudoで編集する方法について advice を試しました。しかし、それを実行すると、nixosはそのファイルを編集しないように指示します。つまり、実行中

$ visudo

最初の行の読み取りで/etc/sudoers.tmpを開きます

# Don't edit this file. Set the NixOS option ‘security.Sudo.configFile’ instead.

NixOSオプション「security.Sudo.configFile」を設定するにはどうすればよいですか?

7
mherzl

まず、useraddを使用してユーザーを追加し、users.extraUsersを編集することは冗長です。 NixOSでuseraddを気にすることはありません。

Sudo構成に関しては、属性を、通常sudoerに入れるものを含む文字列に設定します。

...
security.Sudo.configFile = ''
   Sudoers config goes here
''
...
5
Emmanuel Rosa

wheelグループにユーザーを追加するだけで、Sudo権限を取得できます。

変更後新しいLinuxグループにユーザーを追加しました。これらの変更を有効にするには、ログアウトしてこれらのユーザーにログインする必要があります(新しいグループ)。

2

私の推測では、あなたの場合、同じユーザーを強制的に(useraddを使用して)宣言的に(configuration.nixで)作成したという事実から問題が発生すると思います。

まず、nixos-rebuild switchを変更するたびに、必ず/etc/nixos/configuration.nixを実行してください。第2に、それでも不十分な場合は、ユーザーがすでに作成されているため、宣言的に渡したオプションを使用できない可能性があります。その場合、まずユーザーを削除してnixos-rebuild switchを実行すると、問題が解決するはずです。

2
Zimm i48