doas

出自 Arch Linux 中文维基

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
注意: 持久化默認禁用,因為它比較新,有潛在的危險。在最初的 doas 中,一個內核 API 被用來設置和清除超時。這個 API 是 OpenBSD 特有,其他作業系統上沒有類似的 API。作為一種變通方法,持久化是使用類似於 sudo 的時間戳文件實現。

從 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命令。

注意: 默認情況下 sudo 會保留一些環境變量,而 doas 不會,最明顯的是 XAUTHORITY、LANG 和 LC_ALL。這意味著你將無法在 X 下啟動圖形應用程式,也無法在沒有額外配置的情況下訪問用戶的區域設置。例如,要允許 wheel 組的成員運行圖形應用程式,並使用 setenv 訪問用戶的 locale:
/etc/doas.conf
permit setenv { XAUTHORITY LANG LC_ALL } :wheel

Bash tab 補全[編輯 | 編輯原始碼]

默認情況 Bash 只對當前或參考目錄下的文件和目錄進行 tab 補全。要讓 Bash 像完成單獨的命令一樣完成參數(同時利用其他命令的 tab 補全設置),可以在用戶的 .bashrc 或全局的 /etc/bash.bashrc 中添加以下內容:

~/.bashrc
complete -cf doas