Не получается заставить sudo работать под NixOS - PullRequest
2 голосов
/ 16 марта 2019

Название (смущающее как оно есть) говорит обо всем. Сначала немного контекста:

Я использую NixOS, используя собственный ISO на Vultr.

Сроки попыток:

  • 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. Пользовательский ISO-образ, предоставленный Vultr, ... что-то упустил 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. Как указано в ответе, enable sudo first:
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

1 Ответ

2 голосов
/ 16 марта 2019

Чтобы установить sudo на NixOS, добавьте configuration.nix:

security.sudo.enable = true;

Nix сам по себе просто не способен создавать двоичные файлы setuid, такие как sudo. В противном случае он не может быть «безопасным и без политики» - нет многопользовательской поддержки. Инструменты nix / nix-* предназначены для выполнения операций безопасного хранения и не позволяют повышения привилегий.

Чтобы поддерживать двоичные файлы setuid, такие как sudo, NixOS поддерживает каталог оболочек setuid вне хранилища Nix в /run/wrappers. Это возможно только потому, что NixOS запускается / переключается / активируется с правами root.

...