4.9 特权提升工具(sudo、doas 等)

doas
对于大部分用户来说,掌握 sudo su 这一基础命令即可满足日常需求。在使用时可以将 sudo 直接替换为 doas,二者在基本使用场景下具有功能等价性。
OpenBSD 项目认为 sudo 软件配置复杂、代码质量较差、漏洞较多,故自行开发了 doas。因此,FreeBSD 也可以使用。
安装 doas
使用 pkg 安装:
或者使用 Ports 安装:
查看 doas 安装后的信息
配置 doas
由上可知,示例配置文件位于 /usr/local/etc/doas.conf.sample。
而我们需要将配置文件放在 /usr/local/etc/doas.conf,该文件默认不存在,需要自行创建。
/usr/local/etc/doas.conf.sample内容如下,相比 sudo 而言,非常简单易懂:
让我们简单注释一下:
对于一般用户,只需要创建文件 /usr/local/etc/doas.conf,并写入
即可满足日常需求(你的用户须加入 wheel 组)。
sudo
安装 sudo
使用 pkg 安装:
或者使用 Ports 安装:
sudo 免密码配置
在 /usr/local/etc/sudoers.d/ 目录下新建两个文件:username(需要免密码的用户名)和 wheel。
文件
username内容如下:
文件
wheel内容如下:
多加一行,使用 sudo 时不需要输入密码:
故障排除与未竟事宜
xxx Is Not in the Sudoers File. This Incident Will Be Reported
需要在 sudoers 中加入一行配置来解决该问题:
编辑 /usr/local/etc/sudoers,找到 root ALL=(ALL:ALL) ALL 这一行,通常位于第 94 行左右。在这行下面加一句:
然后保存退出即可。
sudo-rs
sudo-rs 是一款采用 Rust 编写的、以安全为导向并具备内存安全性的 sudo 与 su 的实现。
与 sudo 不共存的安装方案
即安装 sudo-rs 前必须先卸载 sudo,在该安装方式下二者不共存。
使用 pkg 安装:
或者使用 Ports 安装:
提供了命令 sudo、visudo 和 sudoedit。
与 sudo 共存的安装方案
即系统中同时存在 sudo 与 sudo-rs。
使用 pkg 安装:
还可以通过 Ports 来安装:
提供了命令 sudo-rs、visudo-rs 和 sudoedit-rs。
配置 sudo-rs
配置文件位于:/usr/local/etc/sudoers。
测试
附录:通过 mac_do 提权
参考文献:
K Rin. FreeBSD MAC 簡單介紹[EB/OL]. [2026-03-26]. https://sandb0x.tw/a/FreeBSD_MAC_%E7%B0%A1%E5%96%AE%E4%BB%8B%E7%B4%B9
FreeBSD Project. man mac_do(4)[EB/OL]. [2026-03-26]. https://man.freebsd.org/cgi/man.cgi?mac_do(4)
此部分内容较为简单,读者可自行了解,或直接向本书提交 PR。
提权工具配置文件结构
以下是本节介绍的提权工具配置文件路径总结:
课后习题
在 FreeBSD 中分别配置 doas、sudo、sudo-rs 三种提权工具,测试并记录三者的功能差异。
查看 FreeBSD Ports 中 doas 工具的源码实现,分析其设计如何在简单性与安全性之间做权衡。
修改 FreeBSD 中 doas 配置的 keepenv 选项,验证其行为变化。
最后更新于