Linux

【Linux】sudoコマンドの使い方を解説!管理者権限でコマンドを実行してみよう

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、sudoコマンドの使い方を解説します。Linuxの一般ユーザーで、管理者権限が必要なコマンドを実行する際はsudoコマンドを使用します。今回はsudoコマンドの使い方やオプションなどを詳しく解説します。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

sudoコマンドの使い方解説!

sudoコマンドの使い方は?

今回の記事では、sudoコマンドの使い方を解説します。sudoコマンドは一般ユーザが管理者権限が必要なコマンドを実行するときに使用するコマンドです。

一般ユーザーにrootユーザーのパスワードを知らせる必要が無いため、セキュリティ向上になります。

では、sudoコマンドをLinuxで使ってみましょう。

sudoコマンドの基本的な書式

sudoコマンドは、以下のように実行します。

sudo [コマンド]

sudoコマンドの後に、管理者権限で実行したいコマンドを指定します。

次に具体的な事例を見ていきましょう。

sudoコマンドの事例

まず、userなどの一般ユーザでログインした状態で”apt-get”コマンドなど、管理者権限が必要なコマンドを実行してみます。

sudoを使わないとエラーが表示

すると、以下のようなエラーが出ます。これは、管理者権限が無いため、実行が拒否されます。

E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

一般ユーザーが管理者権限を使って、コマンドを実行するためには”sudo”を使用します。使い方は以下の通りです。

sudo apt-get install bind9

コマンドを入力すると、userのパスワードの入力が求められるので、入力して実行します。

sudoコマンドの使い方

パスワードを入力すると、管理者権限でコマンドは実行されます。

このように、パッケージインストールなど、管理者権限が必要なコマンドを一般ユーザーで実行する際はsudoコマンドを使用します。

sudoコマンドのオプション

sudoコマンドのオプション一覧

sudoコマンドには、以下のようなオプションがあります。

オプション説明
-l許可されているコマンドを表示
-h, –helpヘルプメッセージを表示します。
-V, –versionsudoのバージョン情報を表示します。
-v, –validateユーザーの認証情報を再度要求し、その有効期限を延長します。
-k, –reset-timestampユーザーの認証情報のタイムスタンプをリセットします。
-b, –backgroundバックグラウンドでコマンドを実行します。
-p, –promptカスタムプロンプトを指定してコマンドを実行します。
-u, –user別のユーザー名を指定してコマンドを実行します。
-g, –group別のグループを指定してコマンドを実行します。
-H, –set-homeHOME環境変数を変更せずにコマンドを実行します。
-S, –stdin標準入力からパスワードを入力します。
-s, –shell指定されたシェルでコマンドを実行します。

“-l”オプションの実例

sudoコマンドで、“-l”オプションを使用すると、許可されているコマンドが表示されます。

sudo -l
→User user may run the following commands on DESKTOP-EOJNUFD:
    (ALL : ALL) ALL

現状は、userはすべてのコマンドが許可されています。これは、セキュリティ上良くないので、設定ファイルを編集してsudoコマンドが使えるコマンドを設定します。

“-u”オプションの実例

“-u”オプションでは、ユーザーを指定します。以下のように実行します。

sudo -u user vi test.txt

上記の例では、userのみ書き込み可能なtest.txtファイルをsudoコマンドを使って別のユーザーでも書き込めるようにしています。

sudoコマンドが使えるコマンドを設定する

現状sudoコマンドを使うと、全てのコマンドを実行することができます。これでは、セキュリティ上良くありません。

そこで、sudoコマンドが使えるコマンドを設定して、実行できるコマンドを制限します。

sudoersファイルの設定

sudoコマンドが使えるコマンドを設定する場合は、”sudoers”ファイルに設定を行います。これは管理者で設定を行いましょう。

vi /etc/sudoers

ファイルの中に以下のような設定があります。これは、sudoを実行できるコマンドにすべてのコマンドが使えるように設定されています。

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

例えば、userにshutdownコマンドが実行できるように設定してみましょう。

//文法 ユーザー名 ホスト名=(実行ユーザー名) コマンド
user ALL=(ALL) /sbin/shutdown

//↓これはコメントアウト
#%sudo   ALL=(ALL:ALL) ALL

ホスト名と実行ユーザーの部分は”ALL”を設定しましょう。これでuserは、sudoを使っても”shutdown”コマンドしか使用できません。”%sudo ~”はsudoを実行できるグループでは全て許可するので、コメントアウトしておきましょう。最後にsudoを再起動して確認しましょう。

/etc/init.d/sudo restart

sudoコマンドで確認する

最後にsudoコマンドで実際に確認してみましょう。userでログインします。そして、先ほど実行できたapt-getコマンドを実行してみます。

すると、実行が拒否されます。

 sudo apt-get install bind9
→Sorry, user user is not allowed to execute '/usr/bin/apt-get install bind9' 
 as root on DESKTOP-EOJNUFD.localdomain.

sudoersの確認

実行が拒否されることを確認したら、次は許可されたコマンドを実行してみましょう。sudoersファイルで設定したshutdownは実行できることができます。

 sudo shutdown

コマンドが正常に実行されると思います。

このように、sudoersファイルを使用すれば、ユーザーやグループによって実行出来るコマンドを設定することができます。

sudoコマンドの使い方まとめ

今回の記事では、sudoコマンドの使い方を解説しました。まとめると以下の通りです。

  • sudoコマンドで管理者として実行
  • sudoersファイルで実行できるコマンドを設定

sudoコマンドとsudoersファイルは良く使うので覚えておきましょう!

さらにLinuxのコマンドの学習をしたい人に向けて、InfraAcademyというインフラ学習サービスのご紹介です。

「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」

そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!

入門から中級まで初心者でもわかりやすく学習を進めることができます。

↓InfraAcademyの講座の一部です。

上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。

インフラエンジニアに必要な知識が学習できます。

InfraAcademyで学習を始める

参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST