飞牛NAS fnOS 配置 sudo 免密:SSH 告别每次输密码

fnOS(飞牛NAS)SSH 运维每次 sudo 都要输密码?本文用 visudo 与 /etc/sudoers.d 实现 sudo 免密,支持只对指定命令免密,附验证与撤销方法。

玩 NAS 的人都知道,飞牛 fnOS 虽然把 Web 界面做得非常易用,但总有一些操作绕不开 SSH 命令行:改配置、跑 Docker、写定时任务、看系统日志……只要敲到 sudo,系统就会让你输一遍管理员密码。单次操作还好,可要是写自动化脚本、批量执行命令,密码交互会直接卡住脚本,别提多难受了。

这篇文章就手把手教你给 fnOS 配置 sudo 免密,提供三种方法:新手友好的 visudo 直改法、可维护性最好的 /etc/sudoers.d 独立文件法,以及兼顾安全性的指定命令免密法。按需选择,一步到位。

写在前面:免密 sudo 的安全边界

先泼一盆冷水:sudo 免密等于把你的管理员账户变成了半个 root——任何拿到你 SSH 会话的人,都能不输密码执行任意特权命令。因此:

  • 只建议在家用单机 NAS、测试虚拟机上使用;
  • 多人共用、对外开放 SSH 的生产环境,不建议做全局免密;
  • 如果只是嫌 SSH 输密码麻烦,更推荐先配SSH 密钥登录(免的是登录密码,而不是 sudo 密码),安全得多。

方法三会给出兼顾便利与安全的折中方案,建议往下看完再动手。

准备工作:确认用户名与 SSH

fnOS 基于 Debian 深度定制,安装时创建的第一个管理员账号(默认形如 fnos)就是超级管理员,自带 SSH 权限,后面配置也以这个账号为例。

  1. 开启 SSH:fnOS 桌面 → 设置 → SSH,确认已开启并记住端口(默认 22)。
  2. 用终端软件(如 Windows Terminal、FinalShell、Termius)连上 NAS,执行 whoami 确认当前用户名。
  3. 验证 sudo 可用:输入 echo "你的密码" | sudo -S whoami,能输出 root 说明管理员权限正常(下面两步不需要,直接跳到对应方法)。

方法一:visudo 直接修改(新手友好)

先备份,再编辑:

sudo cp /etc/sudoers /etc/sudoers.bak
sudo visudo

fnOS 默认用 nano 打开(习惯 vim 可执行 sudo EDITOR=vim visudo)。在文件里找到这一行:

%Administrators ALL=(ALL:ALL) ALL

在它下方新增一行(把 fnos 换成你的用户名):

fnos ALL=(ALL) NOPASSWD:ALL

保存退出(nano:Ctrl+O 回车保存、Ctrl+X 退出)。visudo 退出前会自动做语法检查,有错误会提示你,不会让你保存坏配置。

为什么必须加在 %Administrators 那一行的后面?

sudo 的规则匹配是「最后一条匹配生效」:你的账号同时命中管理员组规则(要求密码)和免密规则时,后面的会覆盖前面的。把免密行加在组规则之后才会生效,加在它前面依旧会提示输密码——这是新手最容易踩的坑。

方法二:sudoers.d 独立文件(推荐)

更规范的做法是把规则写进 /etc/sudoers.d/ 下的独立文件,不碰主配置:

echo 'fnos ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/90-nopasswd-fnos
sudo chmod 440 /etc/sudoers.d/90-nopasswd-fnos

相比方法一,它有三个明显优势:

  • 系统升级不覆盖:fnOS 更新不会动 /etc/sudoers.d 下你自己加的文件;
  • 撤销一键搞定:sudo rm /etc/sudoers.d/90-nopasswd-fnos 即恢复原状;
  • 隔离清晰:主配置文件始终保持干净,排查问题时一目了然。

文件名前的 90- 是排序号,数字越大越后加载;记住规则文件必须以数字开头且不能带点号后缀,否则会被忽略。

方法三:只对指定命令免密(最推荐)

全局免密风险大,如果你只是想让自己常用的几条命令不再问密码,可以精确到命令:

sudo tee /etc/sudoers.d/90-fnos-cmds <<'EOF'
fnos ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /sbin/reboot, /sbin/poweroff
EOF
sudo chmod 440 /etc/sudoers.d/90-fnos-cmds

上面例子只对 systemctl(启停服务)、reboot、poweroff 三条命令免密,其它 sudo 命令照常要密码。需要哪条就补哪条,用 which 命令名 查绝对路径后写进去即可(比如 Docker 用户常加 /usr/bin/docker)。

验证是否生效

配置完后重新开一个 SSH 会话,执行:

sudo -l

输出里能看到 (root) NOPASSWD: ALL(方法一/二)或对应的命令白名单(方法三),说明规则已生效。再直接敲 sudo whoami,不再要密码、直接输出 root,就大功告成了。

想撤销怎么办

  • 方法一:再次 sudo visudo,删掉你加的那行即可(或恢复备份 sudo cp /etc/sudoers.bak /etc/sudoers);
  • 方法二/三:直接删除对应规则文件:sudo rm /etc/sudoers.d/90-nopasswd-fnos。

常见问题排查

1. 加了 NOPASSWD 还是要密码

九成是规则顺序问题:免密行必须位于 %Administrators ALL=(ALL:ALL) ALL 之后。其次检查用户名是否写错、是否登录的就是那个账号。

2. 提示 “xxx is not in the sudoers file”

说明当前账号不在管理员组,也没有对应 sudoers 规则。fnOS 的普通用户默认没有 sudo 权限,请用安装时创建的首位管理员账号操作,或在系统设置里把该用户提为管理员。

3. 手滑把 sudoers 改坏了怎么办

visudo 自带语法校验,正常保存不会出错;真遇到 sudo 完全无法使用的情况,先别慌:

  • 如果还能执行 sudo(部分场景),用 sudo visudo -c 检查语法、定位出错行;
  • 整个 sudo 都废了,可用 pkexec visudo 以图形授权方式修复(前提是桌面环境可用);
  • 最后的兜底:用 fnOS 安装 U 盘进入救援/单用户模式,挂载系统盘手动改回 /etc/sudoers。平时养成改前备份的习惯,就基本不会走到这一步。

小结

飞牛 fnOS 的 sudo 免密配置并不复杂,核心就一句话:在管理员组规则之后,为你的用户名追加一条 NOPASSWD 规则。个人强烈推荐方法三(指定命令免密)或方法二(sudoers.d 独立文件),兼顾顺手与安全。

如果你还在折腾飞牛的路上,这几篇应该也用得上:老硬件能跑多丝滑?D525 折腾飞牛NAS 的避坑记录、白嫖也能爽飞!不花一分钱,飞牛NAS 远程访问也能满速秒开。觉得有用的话,欢迎收藏转发,也欢迎在评论区交流你的折腾经验。

相关阅读:

原创文章,作者:Tech.laowang,如若转载,请注明出处:https://techlaowang.com/fnos-sudo-ssh/

赞 (2)
Tech.laowang的头像Tech.laowang
上一篇 11 月 30, 2025 2:34 上午
下一篇 9 月 5, 2026 11:30 上午

相关推荐

探索技术世界,获取软件解决方案与科学上网的专业知识分享——你可信赖的技术资源平台!