【问题标题】:Can't seem to get sudo working under NixOS似乎无法让 sudo 在 NixOS 下工作
【发布时间】:2019-03-15 21:51:43
【问题描述】:

标题(虽然很尴尬)说明了一切。首先是一些上下文:

我在 Vultr 上使用自定义 ISO 运行 NixOS。

尝试的时间范围:

  • which sudo 没有显示 sudo
  • 使用nix-env -i sudo 安装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. 将 sudoers 部分添加到 /etc/nixos/configuration.nix
  # Allow members of the "wheel" group to sudo:
  security.sudo.configFile = ''
    %wheel ALL=(ALL) ALL
  '';
  1. 将自己添加到wheel:
usermod -a -G wheel agam

【问题讨论】:

  • stackoverflow 用于编程问题。尝试超级用户。
  • 当然,我会这样做的。我在 SO 上看到了 很多 与 Nix/NixOS 相关的问题,所以认为这很好,但我同意这可以被视为 sysadmin-y 的事情也是。

标签: nixos


【解决方案1】:

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

security.sudo.enable = true;

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

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

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 2015-09-20
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2017-07-26
    相关资源
    最近更新 更多