「Doas」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (add ru page link.) |
(Drop removed package→sudo から doas への移行) |
||
| (他の1人の利用者による、間の6版が非表示) | |||
| 4行目: | 4行目: | ||
[[en:doas]] |
[[en:doas]] |
||
[[ru:doas]] |
[[ru:doas]] |
||
| + | [[zh-hans:Doas]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ユーザーとグループ}} |
{{Related|ユーザーとグループ}} |
||
| 27行目: | 28行目: | ||
$ doas pacman -Syu |
$ doas pacman -Syu |
||
| + | 別のユーザーとして対話型シェルに入るには({{ic|-u ''user''}} を省略すると、デフォルトで root になります): |
||
| − | root のインタラクティブシェルを開くには: |
||
| − | $ doas - |
+ | $ doas -su ''user'' |
| − | 詳しくは |
+ | 一部のコマンドを実行するには、別のユーザーとしてログインする必要があります。詳しくは [[Sudo#ログインシェル]] を参照してください。 |
| + | |||
| + | 詳細については、 {{man|1|doas}} を参照してください。 |
||
== 設定 == |
== 設定 == |
||
| 40行目: | 43行目: | ||
{{hc|/etc/doas.conf| |
{{hc|/etc/doas.conf| |
||
| + | permit setenv {{{{ic|PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin}}}} :wheel |
||
| − | permit :wheel |
||
| + | |||
| + | }} |
||
| + | |||
| + | {{Note| |
||
| + | * 設定ファイルは改行で終わる必要があります。 |
||
| + | * {{ic|setenv}} オプションは、OpenDoas の BSD 由来の [https://github.com/Duncaen/OpenDoas/issues/117 問題] を回避します。Linux では、{{ic|/usr/local/bin}} は一般的に実行可能ファイルを上書きするために使われるので、パッケージの実行可能ファイルを含む {{ic|/usr/bin}} の前に置かれます |
||
}} |
}} |
||
| − | {{Note|設定ファイルは改行で終わる必要があります。}} |
||
{{ic|/etc/doas.conf}} の所有者および所有グループは {{ic|0}} に、ファイルのパーミッションは {{ic|0400}} に設定してください: |
{{ic|/etc/doas.conf}} の所有者および所有グループは {{ic|0}} に、ファイルのパーミッションは {{ic|0400}} に設定してください: |
||
| 66行目: | 74行目: | ||
詳しくは {{man|5|doas.conf}} を読んでください。 |
詳しくは {{man|5|doas.conf}} を読んでください。 |
||
| − | |||
| − | また、''doas'' コマンドの[[Bash#タブ補完|タブ補完]]を設定すると良いでしょう。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
| 75行目: | 81行目: | ||
''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 への移行 === |
||
| 88行目: | 96行目: | ||
alias sudoedit='doas rnano' |
alias sudoedit='doas rnano' |
||
| − | または、代わりに、''sudo'' を ''doas'' へのシンボリックリンクにします。({{ |
+ | または、代わりに、''sudo'' を ''doas'' へのシンボリックリンクにします。(ただし {{ic|sudoedit}} コマンドは提供されません): |
| − | # ln -s |
+ | # ln -s /usr/bin/doas /usr/local/bin/sudo |
| − | |||
| − | {{AUR|opendoas-sudo}} はこのシンボリックリンクも提供します。 |
||
{{Note|デフォルトでは、''sudo'' はいくつかの環境変数を保持しますが、''doas'' は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、''wheel'' グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。 |
{{Note|デフォルトでは、''sudo'' はいくつかの環境変数を保持しますが、''doas'' は保持しません。特に XAUTHORITY、LANG、LC_ALL は保持しません。これは、X でグラフィカルなアプリケーションを起動したり、 ユーザーのロケールにアクセスしたりすることが、さらなる設定なしではできないことを意味します。例えば、''wheel'' グループのメンバーがグラフィカルなアプリケーションを実行したり、setenv オプションを使用してユーザーのロケールにアクセスできるようにするには、次のようにします。 |
||
| 102行目: | 108行目: | ||
=== Bash タブ補完 === |
=== Bash タブ補完 === |
||
| − | デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには |
+ | デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには(他のコマンドのタブ補完の設定も利用する)、次のようにユーザの {{ic|.bashrc}} またはグローバルの {{ic|/etc/bash.bashrc}} に追加します。 |
{{hc|~/.bashrc| |
{{hc|~/.bashrc| |
||
complete -cf doas |
complete -cf doas |
||
}} |
}} |
||
| + | |||
| − | {{TranslationStatus|doas|2022-09-12|736536}} |
||
| + | {{Pkg|bash-completion}} がインストールされている場合は、以下を使用して、ターゲットコマンドの追加補完を可能にすることもできます。 |
||
| + | {{hc|~/.bashrc| |
||
| + | complete -F _command doas |
||
| + | }} |
||
| + | |||
| + | {{TranslationStatus|doas|2025-05-07|736536}} |
||
2025年9月4日 (木) 21:33時点における最新版
OpenDoas は OpenBSD の doas コマンドの移植版です。sudo と比べてサイズがかなり小さいことで知られています。sudo と同じように、doas はシステム上の他のユーザーとして実行したいときに使います。
インストール
opendoas パッケージをインストールしてください。
使用方法
非特権ユーザーで doas を使い始めるには、設定が必要です。#設定を見てください。
doas を使う時はコマンドとその引数の前に doas とスペースを追加します:
$ doas cmd
例えば pacman を使う場合:
$ doas pacman -Syu
別のユーザーとして対話型シェルに入るには(-u user を省略すると、デフォルトで root になります):
$ doas -su user
一部のコマンドを実行するには、別のユーザーとしてログインする必要があります。詳しくは Sudo#ログインシェル を参照してください。
詳細については、 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 /usr/bin/doas /usr/local/bin/sudo
Bash タブ補完
デフォルトでは、bash はカレントまたは参照ディレクトリ内のファイルとディレクトリのみをタブで補完します。引数を別のコマンドのように補完するようにするには(他のコマンドのタブ補完の設定も利用する)、次のようにユーザの .bashrc またはグローバルの /etc/bash.bashrc に追加します。
~/.bashrc
complete -cf doas
bash-completion がインストールされている場合は、以下を使用して、ターゲットコマンドの追加補完を可能にすることもできます。
~/.bashrc
complete -F _command doas