Linux sudo command

sudoとは、引数に指定したコマンドをスーパーユーザまたは他のユーザとして実行するLinuxコマンドです。現在のユーザが実行権限を持っていないコマンドを実行するために利用します。sudoの使い方をご紹介します。

使い方

sudo [sudo-options] command [command-options]
sudo-options
sudo コマンドのオプション(後述)を指定する。
command
実行するコマンドを指定する。
$ sudo apt install make
スーパーユーザとしてコマンドを実行する場合、以下に示す管理および特権コマンドを指定することが多い。
command-options
実行するコマンドのオプションを指定する。

オプション

sudo コマンドには、以下に示すオプションを指定することができる。

-h
短いヘルプメッセージを標準出力に表示して終了する。(POSIXスタイル)
$ sudo -h
--help
短いヘルプメッセージを標準出力に表示して終了する。(GNUスタイル)
-u user
ユーザを指定する。(POSIXスタイル)

ユーザの指定を省略した場合、スーパーユーザ(rootユーザ)としてコマンドを実行する。

$ sudo -u tsuka vi .profile
--user=user
ユーザを指定する。(GNUスタイル)
$ sudo --user=tsuka vi .profile
-V
sudoコマンドおよびプラグインのバージョンを表示する。(POSIXスタイル)
$ sudo -V
Sudo version 1.8.31
Sudoers policy plugin version 1.8.31
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.31
--version
sudoコマンドおよびプラグインのバージョンを表示する。(GNUスタイル)
--
sudo がコマンドライン引数の処理を停止することを示す。コマンドの引数にハイフンで始まる文字列を渡したいときに利用する。

sudoは何の略?

sudoは「substitute user do」の略です。

sudoコマンドの読み方

sudoコマンドの読み方は「スードゥー(soo-doo)」です。

The official pronunciation is soo-doo (for su ‘do’). However, an alternate pronunciation, a homophone of ‘pseudo’, is also common.

sudoとsuの違い

sudoコマンドを実行すると、現在のユーザのパスワードを入力することが要求される。suコマンドを実行すると、切替先のユーザのパスワードを入力することが要求される。

sudoで実行できるコマンドは、sudoersファイルで細かく設定することができる。suで実行できるコマンドは、切替先のユーザが実行できるコマンドである。

sudoおよびsuコマンドを実行しても、カレント・ワーキング・ディレクトリは変わらない。ただし、su に - オプションを指定した場合に限り、カレント・ワーキング・ディレクトリが切替先ユーザのホームディレクトリに変わる。

sudoとsuの違い
sudo su
要求されるパスワード 現在のユーザのパスワード 切替先のユーザのパスワード
実行可能なコマンド sudoersファイルで設定したコマンド 切替先のユーザが実行できるコマンド
カレントディレクトリ 変わらない - オプションを指定した場合は切替先ユーザのホームディレクトリに変わる

Ubuntu

Ubuntuのデフォルト設定では、スーパーユーザ(rootユーザ)のアカウントはロックされているので、rootユーザでログインすることはできない。このため、rootユーザ権限が必要な操作はsudoコマンドを用いて実施することになる。

設定

デフォルトでは、スーパーユーザ(rootユーザ)のみがsudoコマンドを使用できる。どのユーザがsudoコマンドを使用できるかは、sudoersファイルで管理する。sudoersファイルは、テキストファイルで直接編集するのではなく、visudoコマンドで編集する。

visudo

visudo は sudoersファイルを編集するLinuxコマンドである。

visudo コマンドには、以下に示すオプションを指定することができる。

visudo [options] [[-f] sudoers]
-c
チェックオンリーモードを有効にする。チェックオンリーモードでは、sudoers ファイルに構文エラーがないかチェックされる。-q オプションが指定されていない限り、sudoers の状態を記述したメッセージが標準出力に出力される。チェックが正常に完了すると visudo は値 0 で終了し、エラーが発生すると visudo は値 1 で終了する。(POSIXスタイル)
--check
チェックオンリーモードを有効にする。チェックオンリーモードでは、sudoers ファイルに構文エラーがないかチェックされる。-q オプションが指定されていない限り、sudoers の状態を記述したメッセージが標準出力に出力される。チェックが正常に完了すると visudo は値 0 で終了し、エラーが発生すると visudo は値 1 で終了する。(GNUスタイル)
-f sudoers
sudoers ファイルの代替の場所を指定する。(POSIXスタイル)
--file=sudoers
sudoers ファイルの代替の場所を指定する。(GNUスタイル)
-h
短いヘルプメッセージを標準出力に表示して、コマンドを終了する。(POSIXスタイル)
--help
短いヘルプメッセージを標準出力に表示して、コマンドを終了する。(GNUスタイル)
-q
静粛モードを有効にする。静粛モードでは、構文エラーに関する詳細は表示されない。このオプションは -c オプションと組み合わせた場合のみ有効である。(POSIXスタイル)
--quiet
静粛モードを有効にする。静粛モードでは、構文エラーに関する詳細は表示されない。このオプションは --check オプションと組み合わせた場合のみ有効である。(GNUスタイル)
-V
visudo と sudoers の文法バージョンを表示して、コマンドを終了する。(POSIXスタイル)
--version
visudo と sudoers の文法バージョンを表示して、コマンドを終了する。(GNUスタイル)

visudo エディタでは、以下に示すコマンドを使用できる。

^G
Get Help
^O
Write OUt
^W
Where Is
^K
Cut Text
^J
Justify
^C
Current Position
M-U
Undo
M-A
Mark Text
^X
Exit
^R
Read File
^\
Replace
^U
Paste Text
^T
To Spell
^_
Go To Line
M-E
Redo
M-6
Copy Text

sudoersファイル

sudoers ファイルの例を以下に示す。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Linuxコマンド

参考文献

Sudo Project (2022) Sudo