Traffine I/O

日本語

2023-03-03

Linuxのsudoコマンド

sudo コマンド

sudoコマンドは、Linuxで管理者権限でコマンドを実行するための強力なツールです。rootユーザーまたはスーパーユーザーとしても知られる管理者権限を持つユーザーとしてコマンドを実行することができます。sudoコマンドは、rootユーザーとしてログインする必要がなく、システムの構成や管理タスクを安全に実行するための方法を提供するように設計されています。

Linux におけるユーザー特権

Linuxを使用する上で重要な点の一つは、ユーザー特権の理解です。ユーザー特権は、ユーザーがシステム上で実行できる操作を決定し、セキュリティを向上させ、不正なアクセスを防止するのに役立ちます。

Linuxには、通常のユーザーとスーパーユーザーの2種類のユーザーが存在します。通常のユーザーはシステムに制限されたアクセスしか持たず、特定の操作しか実行できません。一方、スーパーユーザー(ルートユーザー)はシステムに完全なアクセス権を持ち、どのような操作でも実行できます。

通常のユーザーは、sudoコマンドを使用して一時的に特権を昇格させ、スーパーユーザーのアクセス権が必要な操作を実行することができます。sudoコマンドを使用すると、通常のユーザーが自分自身のパスワードを入力した後、スーパーユーザーのセキュリティ特権でコマンドを実行できます。

スーパーユーザーはシステム全体を完全に制御し、システムファイルの変更やソフトウェアのインストールなど、どのような操作でも実行できます。スーパーユーザー特権を使用する際には注意が必要であり、誤った操作がシステムに深刻な影響を及ぼす可能性があるためです。

ユーザー特権の理解は、Linuxを使用する上で必須のスキルであり、セキュリティを向上させ、不正なアクセスを防止するのに役立ちます。通常のユーザーアカウントと必要に応じてsudoコマンドを使用することで、ユーザーはシステムを保護し、データが安全であることを確認することができます。

別のユーザーとしてコマンドを実行する

Linuxでsudoコマンドを使用することは、システム全体を完全に制御するrootユーザーを含め、別のユーザーとしてコマンドを実行する強力な方法です。これは、rootとしてログインせずに昇格した権限が必要なタスクを実行する必要があるシステム管理者にとって特に役立ちます。

sudoを使用するには、実行するコマンドの前にsudoという単語を付け、そのコマンドを実行するユーザーのユーザー名を続けます。例えば、rootユーザーとしてlsコマンドを実行する場合は、次のように入力します。

bash
$ sudo ls

次に、自分自身のパスワードを入力するように求められ、その後、指定されたユーザーとしてコマンドが実行されます。

sudoを使用することの主な利点の1つは、システムのアクションに対するより大きな制御と説明責任を可能にすることです。rootとしてログインし、損害を引き起こす可能性がある変更を行う代わりに、sudoを使用することで、管理者は特定のユーザーだけに必要なコマンドやアクションへのアクセスを制限できます。

さらにセキュリティを向上させるために、sudoを設定して特定のユーザーがコマンドを実行する前にパスワードを入力するようにすることもできます。これにより、不正なユーザーが機密情報にアクセスしたり、悪意のあるアクションを実行したりすることを防止できます。

rootユーザーとしてコマンドを実行するだけでなく、sudoを使用して他のユーザーとしてコマンドを実行することもできます。これは、複数のユーザーがいる環境で特に有用です。例えば、別のユーザーが所有するファイルにアクセスする必要がある場合、sudoを使用してそのユーザーとしてcatコマンドを実行し、ファイルの内容を読み取ることができます。

bash
$ sudo -u <username> cat <filename>

sudo コマンドのオプション

以下は、Linuxでのsudoコマンドの一般的に使用されるオプションです。

オプション 説明
-l ユーザーが sudo 特権で実行できるコマンドを一覧表示します。
-u デフォルトのユーザー(root)ではなく、指定されたユーザーとしてコマンドを実行します。
-s シェルまたはシェルスクリプトとしてコマンドを実行します。
-i 新しいログインシェルでコマンドを実行し、環境変数をターゲットユーザーの環境に設定します。
-k 最近認証された場合でも、ユーザーに再度パスワードを要求します。
-v ユーザーの現在の sudo タイムスタンプと、期限切れまでの残り時間を表示します。
-V sudo コマンドのバージョン番号と構成設定を表示します。
-h sudo コマンドの使用方法のヘルプを表示します。

これらはほんの一例であり、Linuxでのsudoコマンドにはさまざまなオプションがあります。それぞれのオプションは、必要に応じて他のオプションと組み合わせてsudoコマンドの動作をカスタマイズできます。

sudo 権限の表示と変更

sudo権限を表示するには、「visudo」コマンドを使用します。これにより、sudo設定ファイルがテキストエディタで開かれます。このファイルには、sudoを使用できるユーザーと、特権を持って実行できるコマンドがリストされています。設定ファイルの構文は重要であり、エラーがあるとシステムが予期せぬ動作をする可能性があります。

sudo設定ファイルを表示するには、ターミナルウィンドウで次のコマンドを入力します。

bash
$ sudo visudo

これにより、sudo設定ファイルがデフォルトのテキストエディタで開かれます。ファイルを表示し、必要に応じてユーザー権限を変更できます。

sudo権限を変更するには、同じvisudoコマンドを使用して設定ファイルをテキストエディタで開くことができます。ユーザーにsudo権限を付与するには、次の形式の新しい行をファイルに追加します。

bash
username ALL=(ALL:ALL) ALL

usernameを、sudo権限を付与するユーザー名に置き換えます。この行により、ユーザーは特権を持って任意のコマンドを実行できます。

ユーザーにsudo権限を付与して、特定のコマンドのみを実行できるようにするには、ユーザー名の後に認証されたコマンドを指定することができます。

bash
username ALL=/usr/bin/apt-get

この行は、ユーザーにapt-getコマンドを権限付きで実行する許可を与えます。

sudo コマンドのベストプラクティス

sudoコマンドは、Linuxユーザーが権限を持つコマンドを実行するための強力なツールです。ただし、セキュリティリスクやその他の問題を避けるために、sudoコマンドを責任を持って使用することが重要です。以下は、sudoコマンドのベストプラクティスです。

  • 必要な場合にのみ sudo を使用する
    管理タスク(ソフトウェアのインストールやシステム設定の変更など)を実行する場合を除き、権限付きでコマンドを実行することを避けてください。

  • 特定のユーザーにのみ sudo アクセスを付与する
    セキュリティ侵害のリスクを最小限に抑えるため、sudoアクセスを持つユーザーを制限してください。ジョブで必要な場合や特定のタスクを実行する場合にのみsudoアクセスを許可してください。

  • sudo 権限を変更するには visudo コマンドを使用する
    sudoersファイルを直接編集する代わりに、sudo権限を変更するにはvisudoコマンドを使用してください。visudoコマンドは、sudoersファイルの構文をチェックし、問題がある場合は修正するよう指示します。

  • ユーザーが実行できるコマンドを制限する
    ユーザーが権限付きで実行できるコマンドを制限し、システムへの意図しない影響を最小限に抑えてください。

  • -kオプションを使って sudo 特権の有効期間を制限する
    -kオプションを使って、sudo特権の有効期間を制限します。これにより、システムが放置された場合に、不正なアクセスのリスクを軽減できます。

  • sudo -iを使って特権付きのシェルを実行する
    sudo -iを使って、特権付きのシェルを実行します。これにより、各コマンドに対してsudoを使用する必要がなく、複数のコマンドを特権付きで実行できます。

  • sudo コマンドをログに記録する
    システムを設定して、sudoコマンドを中央のログサーバーに記録するようにします。これにより、sudoの活動を監視し、不正なアクセス試行を特定することが容易になります。

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!