doas

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

OpenDoas は OpenBSD の doas コマンドの移植版です。sudo と比べてサイズがかなり小さいことで知られています。sudo と同じように、doas はシステム上の他のユーザーとして実行したいときに使います。

インストール

opendoas パッケージをインストールしてください。

使用方法

非特権ユーザーで doas を使い始めるには、設定が必要です。#設定を見てください。

doas を使う時はコマンドとその引数の前に doas とスペースを追加します:

$ doas cmd

例えば pacman を使う場合:

$ doas pacman -Syu

root のインタラクティブシェルを開くには:

$ doas -s

詳しくは doas(1) を参照してください。

設定

PAM モジュールはインストールされますが、デフォルトの設定やサンプルは含まれていません。

wheel グループのメンバーに他のユーザーとしてコマンドの実行を許可するには、以下の内容の設定ファイルを作成します:

/etc/doas.conf
permit setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel

ノート:
  • 設定ファイルは改行で終わる必要があります。
  • setenv オプションは、OpenDoas の BSD 由来の 問題 を回避します。Linux では、/usr/local/bin は一般的に実行可能ファイルを上書きするために使われるので、パッケージの実行可能ファイルを含む /usr/bin の前に置かれます

/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 グループのメンバーが root ユーザーとして 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 の persist 機能

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'

または、代わりに、sudodoas へのシンボリックリンクにします。(ただし sudoedit コマンドは提供されません):

# ln -s $(which doas) /usr/bin/sudo

opendoas-sudoAUR はこのシンボリックリンクも提供します。

ノート: デフォルトでは、sudo はいくつかの環境変数を保持しますが、doas は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、wheel グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。
/etc/doas.conf
permit setenv { XAUTHORITY LANG LC_ALL } :wheel

Bash タブ補完

デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには(他のコマンドのタブ補完の設定も利用する)、次のようにユーザの .bashrc またはグローバルの /etc/bash.bashrc に追加します。

~/.bashrc
complete -cf doas

bash-completion がインストールされている場合は、以下を使用して、ターゲットコマンドの追加補完を可能にすることもできます。

~/.bashrc
complete -F _command doas
翻訳ステータス: このページは en:doas の翻訳バージョンです。最後の翻訳日は 2024-01-02 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。