用户提权工具
Table of Contents
sudo 和 doas 通过配置文件定义权限规则,使特定用户无需 root 密码即可执行特权操作,并提供操作日志
doas
doas 是一款从 OpenBSD 移植的命令行工具,可作为类 Unix 系统中广泛使用的 sudo 的替代方案
doas 的作者是 Ted Unangst,首次出现于 OpenBSD 5.8 借助 doas,用户可以以提升的权限执行命令(通常以 root 身份),兼顾简便与安全 与 sudo 不同,doas 强调配置简洁与安全性,专注于精简的权限委派,摒弃了庞杂的配置选项
使用时可将 sudo 直接替换为 doas,二者在基本使用场景下功能等价。但 doas 除 NOPASSWD 外,不支持 sudo 的其他细粒度权限控制(如时间戳超时、命令参数限制、插件架构等)
安装 doas
使用 pkg 安装
$ pkg install doas
使用 ports 安装
$ cd /usr/ports/security/doas/ $ make install clean
使用 doas 进行共享管理
对于用户 user2,只需创建文件 /usr/local/etc/doas.conf 并写入:
permit nopass user2 as root
即可允许用户 user2 在执行 doas 时无需输入密码便获取 root 权限
对于 wheel 组用户,则写入以下行即可:
permit nopass :wheel
安装并配置好 doas 之后,即可执行特权命令:
$ doas ee /etc/rc.conf
如果不需要 doas 免密码,移除 nopass 即可
doas 示例配置文件
示例配置文件位于 /usr/local/etc/doas.conf.sample
# Sample file for doas # Please see doas.conf manual page for information on setting # up a doas.conf file. # Permit members of the wheel group to perform actions as root. permit :wheel # 允许 wheel 组成员 doas # Same without having to enter the password permit nopass :wheel # 允许 wheel 组成员 doas,但免密码 # Permit user alice to run commands as a root user. permit alice as root # 允许用户 alice doas # Permit user bob to run programs as root, maintaining # environment variables. Useful for GUI applications. permit keepenv bob as root # 允许用户 bob doas,并继承用户 bob 的环境变量,图形用户界面程序需要,但会降低安全性(参见查看安装后信息) # Permit user cindy to run only the pkg package manager as root # to perform package updates and upgrades. permit cindy as root cmd pkg args update # 仅允许用户 cindy 执行 pkg update permit cindy as root cmd pkg args upgrade # 仅允许用户 cindy 执行 pkg upgrade # Allow david to run id command as root without logging it permit nolog david as root cmd id # 允许 david 以 root 身份运行 id 命令且不记录日志