「sudo」コマンドを利用することにより、管理者(スーパーユーザー)のパスワードを入力してログインしなくても、スーパーユーザーの権限でコマンドを実行することができます。
「sudo」コマンドの使い方(Linux)
以下では「test」ユーザーでログインし、「dnf」コマンドを実行した例となります。
$ dnf -y install wget エラー: このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しなければいけません。
上記のように「dnf」コマンドは
「test」ユーザーは「visudo」で事前にsudo権限を追加しておく必要があります。
※sudo権限に追加していない方はsudo権限へ追加を確認します。
以下ではスーパーユーザーに昇格せずに「test」ユーザーで「sudo」コマンドを実行し、自身のパスワードを入力することで、スーパーユーザーとしてコマンドが実行できた例となります。
$ sudo dnf -y install wget [sudo] test のパスワード: メタデータの期限切れの最終確認: 0:15:08 時間前の 2022年02月05日 16時27分16秒 に実施しました。 パッケージ wget-1.19.5-10.el8.x86_64 は既にインストールされています。 依存関係が解決しました。 行うべきことはありません。 完了しました!
※すでに「wget」はインストール済みとなります。
上記で一度「sudo」コマンドを実行すると少しの間はパスワードを実行せずにsudoコマンドを利用することが可能です。
※「xxxxxxは sudoers ファイル内にありません。この事象は記録・報告されます。」と言う警告で実行できなかった場合
このエラーは、一般ユーザにsudoコマンドの権限を付与していなかったのが原因となります。
ルート権限で「visudo」コマンドで以下を追加します。
「test」ユーザーにsudo権限を追加した例
単純な設定もれですが、環境構築時に忘れがちなのでここにメモしておきます。
$ visudo ------中略------ ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL %test ALL=(ALL) ALL ------中略------
スーパーユーザー以外のユーザーでコマンドを実行する
「sudo」コマンドではスーパーユーザー以外のユーザーとしてもコマンドを実行することが可能です。
実行するユーザーでコマンドを実行する場合、「-u」オプションを使用した後に指定します。
以下では「touch」コマンドを「user01」として実行した場合と、スーパーユーザーで実行した場合の例となります。
ユーザー「user01」で実行した例
$ sudo -u user01 touch ~user01/user01.txt [sudo] test のパスワード:
スーパーユーザーで実行した例
$ sudo touch ~user01/test.txt
以下で「user01」フォルダは以下に「root」権限と「user01」権限で作成したファイルが確認できます。
$ sudo -u user01 ls -l ~user01/ 合計 4 -rw-r--r-- 1 root root 0 2月 6 12:40 test.txt -rw-rw-r-- 1 user01 user01 18 2月 6 12:38 user01.txt
「sudo」コマンドでスーパーユーザーのパスワード変更が可能
「passwd」コマンドはスーパーユーザーや一般ユーザーのパスワード変更が可能なコマンドとなります。
ですが、スーパーユーザーのパスワードを忘れてしまった場合は、ログインもできなくなるので「passwd」コマンドが使用できずアクセスできないトラブルが発生する可能性があります。
ユーザーユーザーのパスワードを再設定する方法の一つとして「sudo」コマンドを使用することによりスーパーユーザーのパスワードを再設定することが可能です。
以下では「test」ユーザーでログイン後にスーパーユーザーのパスワード再設定を実行した例となります。
$ sudo passwd ユーザー root のパスワードを変更。 新しいパスワード:
sudoコマンドを実行できるユーザーは事前に一つは作成した方がおすすめな場合もあります。
「sudo」コマンドオプション
「sudo」コマンドのオプションは以下の通りとなります。
$ sudo --help sudo - 別のユーザーとしてコマンドを実行します usage: sudo -h | -K | -k | -V usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command] usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>] usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ... オプション: -A, --askpass パスワード要求のために補助プログラムを使用する -b, --background コマンドをバックグラウンドで実行する -B, --bell プロンプトと同時にベルを鳴らす -C, --close-from=num num 以上のすべてのファイル記述子を閉じる -E, --preserve-env コマンドを実行する時にユーザーの環境変数を維持する --preserve-env=list 指定の環境変数を維持する -e, --edit コマンドを実行するのではなくファイルを編集する -g, --group=group 指定したグループ名またはグループIDでコマンドを実行する -H, --set-home HOME 変数を変更先となるユーザーのホームディレクトリに設定する -h, --help このヘルプを表示して終了する -h, --host=host host でコマンドを実行する(プラグインがサポートしている場合) -i, --login 変更先のユーザーとしてログインシェルを実行する; コマンドを指定することもできます -K, --remove-timestamp タイムスタンプファイルを完全に削除する -k, --reset-timestamp 無効なタイムスタンプファイルです -l, --list ユーザーの権限を一覧表示するまたは指定したコマンドについて確認する ;長い表示にするには2回指定すること -n, --non-interactive 非対話モードで実行し、ユーザーに入力を求めない -P, --preserve-groups グループベクトルを保護する (変更先のユーザーのものに設定しない) -p, --prompt=prompt 指定したパスワードプロンプトを使用する -r, --role=role 指定した役割で SELinux セキュリティーコンテキストを作成する -S, --stdin 標準入力からパスワードを読み込む -s, --shell 変更先のユーザーとしてシェルを実行する; コマンドを指定することもできます -t, --type=type 指定したタイプで SELinux セキュリティーコンテキストを作成する -T, --command-timeout=timeout 指定した制限時間でコマンドの実行を中止する -U, --other-user=user リストモードで、ユーザーの権限を表示する -u, --user=user 指定したユーザー名またはユーザーIDでコマンドを実行する (またはファイルを編集する) -V, --version バージョン情報を表示して終了する -v, --validate コマンドを実行せずにユーザーのタイムスタンプを更新する -- コマンドライン引数の処理を終了する
「sudo」コマンドの使い方は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |