Вопрос или проблема
Я пытался установить users.users.root.hashedPassword = "*";
аналогично sudo passwd -d root
или
user { 'root':
password => '*',
require => Package[ruby-shadow],
}
в Puppet, но после sudo nixos-rebuild switch
я все равно могу использовать su -
со старым паролем.
Вам нужно установить mutableUsers
в false
и пароль пользователя.
users = {
# объявление обычных пользователей здесь
mutableUsers = false;
extraUsers = {
root = {
hashedPassword = "*";
};
user = {
hashedPassword = "user-password";
};
};
};
Манул: man configuration.nix
users.users.<name?>.hashedPassword
Указывает захешированный пароль для пользователя. Опции
hashedPassword, password и passwordFile управляют тем, какой пароль установлен для пользователя. hashedPassword переопределяет и password, и passwordFile. password переопределяет passwordFile. Если ни одна из этих трех опций не установлена, пользователю не будет назначен пароль, и он не сможет выполнять вход по паролю. Если опция users.mutableUsers равна true, пароль, заданный в одной из трех опций, будет установлен только при создании пользователя в первый раз. После этого вы можете свободно менять пароль с помощью обычных команд управления пользователями. Если users.mutableUsers равен false, вы не сможете менять пароли пользователей, они всегда будут установлены в соответствии с опциями пароля.
Вы можете установить метку для тестирования нового генератора (обозначенную noroot
):
nixos-rebuild switch -p noroot -I nixos-config=/etc/nixos/configuration.nix
Ответ или решение
Чтобы отключить пароль для пользователя root в системе NixOS, необходимо выполнить несколько шагов, обеспечивающих корректную конфигурацию. Этот процесс требует осторожности и точности, так как управление учетными записями пользователей в NixOS осуществляется через настройки в файле конфигурации. Вот подробная процедура для отключения пароля root:
Шаг 1: Откройте файл конфигурации
Откройте файл /etc/nixos/configuration.nix
с помощью вашего любимого текстового редактора:
sudo nano /etc/nixos/configuration.nix
Шаг 2: Настройка параметров пользователей
Внутри конфигурационного файла вам необходимо внести следующие изменения:
-
Установите параметр
mutableUsers
вfalse
. Это важно, так как он отвечает за то, могут ли пароли пользователей изменяться после их первоначальной настройки. -
Настройте пользователя root, установив его
hashedPassword
в*
. Это значение будет означать, что у пользователя root нет действующего пароля.
Ваши настройки должны выглядеть примерно так:
{
users = {
mutableUsers = false;
extraUsers = {
root = {
hashedPassword = "*";
};
user = {
hashedPassword = "user-password"; # Установите пароль для обычного пользователя
};
};
};
}
Шаг 3: Примените изменения
После редактирования файла сохраните изменения и закройте редактор. Теперь вам нужно применить новые настройки, выполнив команду:
sudo nixos-rebuild switch
Шаг 4: Проверьте изменения
После завершения процесса пересборки системы вы можете проверить, что доступ к учетной записи root теперь заблокирован. Для этого попытайтесь выполнить команду:
su -
Если вы успешно настроили все правильно, система не должна позволить вам войти под пользователем root, используя старый пароль. Вместо этого вы должны увидеть сообщение об ошибке.
Дополнительная информация
- Убедитесь, что вы имеете доступ к учетной записи с правами
sudo
, чтобы в будущем выполнять административные команды. - Для тестирования новой конфигурации вы можете использовать метку, чтобы создать изолированную среду (например, с меткой
noroot
):
nixos-rebuild switch -p noroot -I nixos-config=/etc/nixos/configuration.nix
Заключение
Следуя этим шагам, вы сможете успешно отключить пароль для пользователя root в NixOS. Применение изменения параметров конфигурации обеспечит безопасность вашей системы, ограничив потенциальные риски, связанные с доступом к суперпользователю. Всегда помните, что управление учетными записями является критически важной частью обеспечения безопасности вашего окружения.