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