落雨宸的时光机
216 字
1 分钟
0
救援 NixOS 的 sudo (/etc/pam.d/sudo 损坏)
2024-06-02

1. sudo 提示密码错误#

安装 NixOS 时,在 nixos-enter 后,sudo 有问题。无法输入密码,一但 sudo 就提示密码错误。

解决:编辑 /etc/pam.d/sudo,改成了以下允许所有用户使用 sudo:

#%PAM-1.0
auth        sufficient  pam_rootok.so
#auth       required    pam_unix.so
auth        required    pam_permit.so
#account        required    pam_unix.so
account     required    pam_permit.so
account     required    pam_warn.so
#session        required    pam_unix.so
session     required    pam_permit.so
password    required    pam_permit.so

2. Nix 无法更改 /etc/pam.d#

安装好以后,我靠,这个文件被链接到了 /nix/store 里。哭,改不了了!

解决:configuration.nix 添加以下内容:

security.pam.services.sudo.rootOK = true;

让 NixOS 重构 /etc/pam.d/sudo。

3. 急救技巧#

sudo 用不了的时候

nix-shell -p sudo#

vim /etc/sudoers#

root     ALL=(ALL:ALL)    SETENV: ALL
%wheel  ALL=(ALL:ALL)    NOPASSWD:SETENV: ALL

vim /etc/pam.d/sudo#

# Account management.
account required pam_unix.so # unix (order 10900)

# Authentication management.
auth sufficient pam_rootok.so # rootok (order 10200)
auth sufficient pam_unix.so likeauth try_first_pass # unix (order 11500)
auth required pam_deny.so # deny (order 12300)

# Password management.
password sufficient pam_unix.so nullok yescrypt # unix (order 10200)

# Session management.
session required pam_env.so conffile=/etc/pam/environment readenv=0 # env (order 10100)
session required pam_unix.so # unix (order 10200)
救援 NixOS 的 sudo (/etc/pam.d/sudo 损坏)
https://blog.lzc256.com/posts/recovering-sudo-in-nixos/
作者
落雨宸
发布于
2024-06-02
许可协议
CC BY-NC-SA 4.0