こんにちは、フルスタックエンジニアのryuです。
今回の記事では、sudoコマンドの使い方を解説します。Linuxの一般ユーザーで、管理者権限が必要なコマンドを実行する際はsudoコマンドを使用します。今回はsudoコマンドの使い方やオプションなどを詳しく解説します。
目次
sudoコマンドの使い方解説!
sudoコマンドの使い方は?
今回の記事では、sudoコマンドの使い方を解説します。sudoコマンドは一般ユーザが管理者権限が必要なコマンドを実行するときに使用するコマンドです。
一般ユーザーにrootユーザーのパスワードを知らせる必要が無いため、セキュリティ向上になります。
では、sudoコマンドをLinuxで使ってみましょう。
sudoコマンドの基本的な書式
sudoコマンドは、以下のように実行します。
sudo [コマンド]
sudoコマンドの後に、管理者権限で実行したいコマンドを指定します。
次に具体的な事例を見ていきましょう。
sudoコマンドの事例
まず、userなどの一般ユーザでログインした状態で”apt-get”コマンドなど、管理者権限が必要なコマンドを実行してみます。
すると、以下のようなエラーが出ます。これは、管理者権限が無いため、実行が拒否されます。
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コマンドには、以下のようなオプションがあります。
オプション | 説明 |
---|---|
-l | 許可されているコマンドを表示 |
-h, –help | ヘルプメッセージを表示します。 |
-V, –version | sudoのバージョン情報を表示します。 |
-v, –validate | ユーザーの認証情報を再度要求し、その有効期限を延長します。 |
-k, –reset-timestamp | ユーザーの認証情報のタイムスタンプをリセットします。 |
-b, –background | バックグラウンドでコマンドを実行します。 |
-p, –prompt | カスタムプロンプトを指定してコマンドを実行します。 |
-u, –user | 別のユーザー名を指定してコマンドを実行します。 |
-g, –group | 別のグループを指定してコマンドを実行します。 |
-H, –set-home | HOME環境変数を変更せずにコマンドを実行します。 |
-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ファイルで設定したshutdownは実行できることができます。
sudo shutdown
コマンドが正常に実行されると思います。
このように、sudoersファイルを使用すれば、ユーザーやグループによって実行出来るコマンドを設定することができます。
sudoコマンドの使い方まとめ
今回の記事では、sudoコマンドの使い方を解説しました。まとめると以下の通りです。
- sudoコマンドで管理者として実行
- sudoersファイルで実行できるコマンドを設定
sudoコマンドとsudoersファイルは良く使うので覚えておきましょう!
さらにLinuxのコマンドの学習をしたい人に向けて、InfraAcademyというインフラ学習サービスのご紹介です。
「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」
そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!
入門から中級まで初心者でもわかりやすく学習を進めることができます。
- 【Linux入門講座1】ディレクトリと相対パス、絶対パス
- 【Linux入門講座2】ファイルの操作方法
- 【Linux入門講座3】ファイルのアクセス権限
- 【Linux入門講座4】ファイルの編集~vimの使い方をマスターする~
- 【Linux入門講座5】ユーザーとグループ
- 【Linux入門講座6】ネットワーク
- さらに講座あり
↓InfraAcademyの講座の一部です。
上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。
インフラエンジニアに必要な知識が学習できます。
参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】