标题(实在令人尴尬)说明了一切。首先要了解一些背景:
我正在Vultr上使用自定义ISO运行NixOS。
尝试的时间范围:
which sudo
没有显示sudo sudo
安装了nix-env -i sudo
sudo ...
时,我看到sudo: /home/agam/.nix-profile/bin/sudo must be owned by uid 0 and have the setuid bit set
sudo su
由于相同的原因而无法正常工作nix-env --uninstall sudo
)su
然后重复安装sudo ...
时,我看到sudo: /nix/var/nix/profiles/default/bin/sudo must be owned by uid 0 and have the setuid bit set
(因此错误与以前相同,但路径不同)[root@nixos:/home/agam]# chmod 4755 /nix/var/nix/profiles/default/bin/sudo
chmod: changing permissions of '/nix/var/nix/profiles/default/bin/sudo': Read-only file system
关于这里发生什么的任何线索吗?
我在这里看到的一些可能的选择是:
1. Vultr提供的自定义ISO ...缺少某些内容
2. sudo
在NixOS中应该工作的一些根本不同的方式
3.在使用Nix的过程中,我缺少了一些非常基本的知识(很可能是!)
一些细节:
[agam@nixos:~]$ nixos-version
18.09.1534.d45a0d7a4f5 (Jellyfish)
[agam@nixos:~]$ which sudo
/nix/var/nix/profiles/default/bin/sudo
[agam@nixos:~]$ nix-channel --list
nixos https://nixos.org/channels/nixos-18.09
编辑:可行的最后一组步骤:
security.sudo.enable = true;
/etc/nixos/configuration.nix
中添加一个sudoers部分: # Allow members of the "wheel" group to sudo:
security.sudo.configFile = ''
%wheel ALL=(ALL) ALL
'';
wheel
:usermod -a -G wheel agam
答案 0 :(得分:2)
在NixOS上安装sudo
的方法是添加到configuration.nix
中:
security.sudo.enable = true;
Nix本身根本无法创建像sudo这样的setuid二进制文件。否则,它不能是“安全且无策略的”-没有多用户支持。 nix
/ nix-
*工具旨在执行安全的存储操作,并且不允许特权提升。
为了支持sudo
之类的setuid二进制文件,NixOS在/run/wrappers
中的Nix存储之外维护了setuid包装器的目录。这仅是因为NixOS是使用root特权启动/切换/激活的。