インストールして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
へ。しかし、それでもSudo
をmatthew
として実行することはできません。たとえば、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」を設定するにはどうすればよいですか?
まず、useradd
を使用してユーザーを追加し、users.extraUsersを編集することは冗長です。 NixOSでuseradd
を気にすることはありません。
Sudo構成に関しては、属性を、通常sudoerに入れるものを含む文字列に設定します。
...
security.Sudo.configFile = ''
Sudoers config goes here
''
...
wheel
グループにユーザーを追加するだけで、Sudo権限を取得できます。
変更後新しいLinuxグループにユーザーを追加しました。これらの変更を有効にするには、ログアウトしてこれらのユーザーにログインする必要があります(新しいグループ)。
私の推測では、あなたの場合、同じユーザーを強制的に(useradd
を使用して)宣言的に(configuration.nix
で)作成したという事実から問題が発生すると思います。
まず、nixos-rebuild switch
を変更するたびに、必ず/etc/nixos/configuration.nix
を実行してください。第2に、それでも不十分な場合は、ユーザーがすでに作成されているため、宣言的に渡したオプションを使用できない可能性があります。その場合、まずユーザーを削除してnixos-rebuild switch
を実行すると、問題が解決するはずです。