在NixOS下似乎无法让sudo工作

时间:2019-03-15 21:51:44

标签: nixos

标题(实在令人尴尬)说明了一切。首先要了解一些背景:

我正在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
  • 想到了嗯,也许我应该以root身份安装它?
  • 因此,su然后重复安装
  • 现在,当我尝试sudo ...时,我看到sudo: /nix/var/nix/profiles/default/bin/sudo must be owned by uid 0 and have the setuid bit set (因此错误与以前相同,但路径不同)
  • 作为最后的手段,请尝试敲打锤子,并向NixOS致敬以阻止我:
[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

编辑:可行的最后一组步骤:

  1. 如答案中所建议,先启用 sudo:
security.sudo.enable =  true;
  1. /etc/nixos/configuration.nix中添加一个sudoers部分:
  # Allow members of the "wheel" group to sudo:
  security.sudo.configFile = ''
    %wheel ALL=(ALL) ALL
  '';
  1. 将自己添加到wheel
usermod -a -G wheel agam

1 个答案:

答案 0 :(得分:2)

在NixOS上安装sudo的方法是添加到configuration.nix中:

security.sudo.enable = true;

Nix本身根本无法创建像sudo这样的setuid二进制文件。否则,它不能是“安全且无策略的”-没有多用户支持。 nix / nix- *工具旨在执行安全的存储操作,并且不允许特权提升。

为了支持sudo之类的setuid二进制文件,NixOS在/run/wrappers中的Nix存储之外维护了setuid包装器的目录。这仅是因为NixOS是使用root特权启动/切换/激活的。