doas

提供: ArchWiki
2022年2月24日 (木) 14:19時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (translate.)
ナビゲーションに移動 検索に移動

関連記事

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

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 :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 グループのメンバーが 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 コマンドのタブ補完を設定すると良いでしょう。

ヒントとテクニック

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(8) は提供しません):

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

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

ノート: By default sudo preserves some environment variables while doas does not, most notably XAUTHORITY, LANG and LC_ALL. This means you will not be able to start graphical applications under X nor to access the user's locale without further configuration. For instance, to allow members of the wheel group to run graphical applications and to access the user's locale using the setenv option:
/etc/doas.conf
permit setenv { XAUTHORITY LANG LC_ALL } :wheel

Bash tab completion

By default bash will only tab complete files and directories within the current or referenced directory. To tell bash to complete arguments as if they were separate commands (also leveraging the tab completion settings of other commands) the following can be added to either the users .bashrc, or the global /etc/bash.bashrc:

~/.bashrc
complete -cf doas