doas
OpenDoas 是 OpenBSD 的 doas 命令的便携版本,与 sudo 相比,它以体积小而闻名。与 sudo 一样,doas 用于假定系统中另一个用户的身份。
安装[编辑 | 编辑源代码]
安装 opendoas包。
使用[编辑 | 编辑源代码]
要以非特权用户的身份开始使用 doas,必须对它进行适当配置。参见#配置。
要使用 doas,只需在命令及其参数前加上 doas
和一个空格:
$ doas cmd
例如,要使用 pacman:
$ doas pacman -Syu
要进入具有 root 提示的交互式 shell:
$ doas -s
更多内容参见 doas(1):
配置[编辑 | 编辑源代码]
安装 OpenDoas 会附带 PAM 模块,但没有包括默认配置或示例。
为了允许 wheel 组的成员以其他用户的身份运行命令,请创建一份具有以下内容的配置文件:
/etc/doas.conf
permit :wheel
/etc/doas.conf
的所有者和组应均是 0
,文件权限应设置为 0400
:
# chown -c root:root /etc/doas.conf # chmod -c 0400 /etc/doas.conf
要检查 /etc/doas.conf
是否存在语法错误,请运行:
# doas -C /etc/doas.conf && echo "config ok" || echo "config error"
/etc/doas.conf
没有语法错误!允许 plugdev
组的成员作为根用户无需密码运行 smartctl。
/etc/doas.conf
permit nopass :plugdev as root cmd /usr/bin/smartctl
/etc/doas.conf
的一般语法形式为:
permit|deny [options] identity [as target] [cmd command [args ...]]
更多细节请阅读 doas.conf(5)。
提示与技巧[编辑 | 编辑源代码]
doas 持久化[编辑 | 编辑源代码]
doas 提供持久化支持:在用户成功认证后,在一段时间内不再要求输入密码。默认情况下是禁用的,用 persist
选项启用它:
/etc/doas.conf
permit persist :wheel
从 sudo 平滑过渡到 doas[编辑 | 编辑源代码]
为了从 sudo 平滑过渡到 doas 并保持向下兼容,可以在环境中添加:
alias sudo='doas' alias sudoedit='doas rnano'
或者,将 doas 链接到 sudo 通常所在位置(但是它无法提供sudoedit
命令):
# ln -s $(which doas) /usr/bin/sudo
doas-sudo-shimAUR 或许可以帮您平滑过渡,可惜无法提供sudoedit
命令。
/etc/doas.conf
permit setenv { XAUTHORITY LANG LC_ALL } :wheel
Bash tab 补全[编辑 | 编辑源代码]
默认情况 Bash 只对当前或参考目录下的文件和目录进行 tab 补全。要让 Bash 像完成单独的命令一样完成参数(同时利用其他命令的 tab 补全设置),可以在用户的 .bashrc
或全局的 /etc/bash.bashrc
中添加以下内容:
~/.bashrc
complete -cf doas