UP | HOME

用户提权工具

Table of Contents

sudodoas 通过配置文件定义权限规则,使特定用户无需 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 命令且不记录日志

sudo