「Doas」の版間の差分
(→sudo から doas への移行: 情報を更新) |
(→ヒントとテクニック: 同期) |
||
| 79行目: | 79行目: | ||
''doas'' には永続機能があります: ユーザーが認証成功した後、しばらくはパスワードを要求しなくなります。デフォルトでは無効になっているので、{{ic|persist}} オプションで有効にしてください: |
''doas'' には永続機能があります: ユーザーが認証成功した後、しばらくはパスワードを要求しなくなります。デフォルトでは無効になっているので、{{ic|persist}} オプションで有効にしてください: |
||
| − | {{hc|/etc/doas.conf| |
+ | {{hc|/etc/doas.conf|2= |
| − | permit persist :wheel |
+ | permit '''persist''' setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel |
}} |
}} |
||
| + | {{ic|doas -L}} を実行すると、自動的なタイムアウト前に保存されていた認証情報がクリアされます。 |
||
| − | {{Note|永続機能がデフォルトで無効になっているのは、新しい機能であり危険性を孕んでいるからです。オリジナルの ''doas'' ではカーネル API を使ってタイムアウトを設定・消去していました。この API は OpenBSD 特有のもので、他のオペレーティングシステムでは類似の API は存在しません。そのため、''sudo'' と同じようにタイムスタンプファイルを使って実装されています。}} |
||
| + | |||
| + | {{Note|永続的機能はデフォルトで無効になっています。これは潜在的に危険であるためです。元の ''doas'' では、カーネル API を使ってタイムアウトの設定と解除を行っています。この API は OpenBSD 特有のもので、他のオペレーティングシステムには同様の API が存在しません。そのため、代替手段として、''sudo'' と同様にタイムスタンプファイルを使って永続機能が実装されています。}} |
||
=== sudo から doas への移行 === |
=== sudo から doas への移行 === |
||
| 96行目: | 98行目: | ||
# ln -s $(which doas) /usr/bin/sudo |
# ln -s $(which doas) /usr/bin/sudo |
||
| + | もう1つの方法は、いくつかの sudo オプションをエミュレートする {{AUR|doas-sudo-shim}} をインストールすることです。 |
||
| − | {{AUR|opendoas-sudo}} はこのシンボリックリンクも提供します。 |
||
{{Note|デフォルトでは、''sudo'' はいくつかの環境変数を保持しますが、''doas'' は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、''wheel'' グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。 |
{{Note|デフォルトでは、''sudo'' はいくつかの環境変数を保持しますが、''doas'' は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、''wheel'' グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。 |
||
| 117行目: | 119行目: | ||
}} |
}} |
||
| − | {{TranslationStatus|doas| |
+ | {{TranslationStatus|doas|2025-05-07|736536}} |
2025年5月7日 (水) 03:05時点における版
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
/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"
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 setenv {PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin} :wheel
doas -L を実行すると、自動的なタイムアウト前に保存されていた認証情報がクリアされます。
sudo から doas への移行
後方互換を保ちつつ sudo から doas にスムーズに移行するために、以下の設定を追加すると良いかもしれません:
alias sudo='doas' alias sudoedit='doas rnano'
または、代わりに、sudo を doas へのシンボリックリンクにします。(ただし sudoedit コマンドは提供されません):
# ln -s $(which doas) /usr/bin/sudo
もう1つの方法は、いくつかの sudo オプションをエミュレートする doas-sudo-shimAUR をインストールすることです。
Bash タブ補完
デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには(他のコマンドのタブ補完の設定も利用する)、次のようにユーザの .bashrc またはグローバルの /etc/bash.bashrc に追加します。
~/.bashrc
complete -cf doas
bash-completion がインストールされている場合は、以下を使用して、ターゲットコマンドの追加補完を可能にすることもできます。
~/.bashrc
complete -F _command doas