今回は「sudo」コマンドや「visudo」コマンドについて説明しようと思います。
「sudo」コマンドは現在操作しているユーザー以外のユーザー権限でコマンドを実行する際に使用されます。
主に「root」ユーザーの権限でしか実行できないコマンド(yumやuseradd等)を実行するために使用されます。
また、「sudo」コマンドを使用許可されているユーザー情報やコマンドは「/etc/sudoers」というファイルに記載されています。
sudoコマンドの書式とオプションを下記に示します。([]内は省略可能)
sudo [オプション] コマンド
オプション
-u・・・ユーザーを指定する。
-g・・・グループを指定する。
-n・・・パスワード入力画面を表示させない。
-l・・・ユーザーに許可されているコマンドを表示する。
-k・・・現在の認証情報を無効にする。
試しに仮想環境で「useradd」、「passwd」コマンドで「test」ユーザーという新規のユーザーを作成してみます。
そして「test」ユーザーでログインし、「sudo」コマンドで「ls」コマンドを実行してみます。
実行すると下記画像のように「sudo ls」コマンドをうまく実行できませんでした。
これは「test」ユーザーが新規作成されたばかりであり、「/etc/sudoers」ファイルに「test」ユーザーの情報が記載されていないためです。
「/etc/sudoers」の現在の内容を確認してみます。
「root ALL=(ALL) ALL」というパラメータが記載してありました。
このパラメータはそれぞれ「ユーザー名 ホスト名=(実行ユーザー名) コマンドパス」という意味が有ります。
つまり上記のパラメータは「root」ユーザーであれば「sudo」コマンドを使用すれば全てのコマンドが使用できるという意味になります。「/etc/sudoers」ファイルは「visudo」というコマンドで内容を編集できるので、「visudo」コマンドを使用して上記パラメータの下に「test ALL=(ALL) /usr/bin/ls」というパラメータを追加してみます。
※「visudo」コマンドは「root」ユーザーのみ使用可能なので注意してください
そして、再度testユーザーでログインし、「sudo ls」を実行してみると、下記画像のように無事実行完了しました。
無事コマンドを実行することができたのですが、先ほどの設定で実行許可されているコマンドは「ls」のみです。
なので、その他に許可したいコマンドが有れば「etc/sudoers」に追記する必要が有ります。
しかし例えば「test ALL=(ALL) ALL」と記載した場合、管理者ではない「test」ユーザーでも「sudo」コマンドを使用すればどんなコマンドでも実行できてしまうので、設定には注意が必要です。
基本的にLinuxの管理者アカウントである「root」ユーザーはどんなファイルでも削除でき、どんなコマンドでも実行できてしまうため頻繁にログインしない方が良いです。
そのために「sudo」コマンドを使用して、管理者権限のみ使用可能なコマンドを一部許可し、一般ユーザーでも使用できるように管理する必要が有ります。
今回はユーザー管理において重要な「sudo」コマンドについて説明させていただきました。
参考資料