doas - Arch Linux 中文维基

跳至內容

# doas

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 Doas，最近一次同步於 2022-11-27，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Users and groups
- sudo
- List of applications/Security#Privilege elevation

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

分類：​

- 安全
- 命令

doas
新增話題