Linux共通

【Linux初心者向け】su,sudoコマンドについて解説

 

一般ユーザの権限で管理者ユーザのコマンドを使いたい時どうしますか?

一般ユーザで変更作業等をしたい時に管理者でしか使えないコマンドを使う場面がよくあります。

今回紹介するsuとsudoを利用することで一般ユーザのままで管理者コマンドを利用することができ、時間が大幅に短縮されます。ただ管理者権限のコマンドを扱うことになるので、管理者が扱う一般ユーザやグループを定義する必要があります。

この記事でわかる事

su,sudoコマンドについて紹介します。

su,sudoを利用するにあたり利用許可を設定ファイルを利用して紹介します。

それでは、su,sudoについて紹介していきます。

suコマンド

一般ユーザでログインしているときに、一時的にスーパーユーザに変身するには、「su」コマンドを使います。

一時的に他のユーザに切り替えるにも「su」コマンドを使用します。

書式

su [オプション] [ユーザ名]

オプション

オプション 説明
-c command 指定したユーザでcommandコマンドを実行し。実行後はもとのユーザに戻ります。
- 元のユーザの環境変数を引き継がせません(新たなログインと同じ)
-s  shell 変身後のシェルをshellにします

sudoコマンド

sudoコマンドは、指定したユーザ権限で特定のコマンドを実行します。主に一般ユーザが管理者ユーザの権限でコマンドやファイルを実行する際に利用します。

sudo コマンドにより、管理者コマンドを、指定したユーザが一時的に利用できます。

書式

sudo [オプション] [-u ユーザ名] 実行するコマンド

オプション

オプション 説明
-l sudo を実行しているユーザが、現在ログインしているホストで許可されているコマンドを表示する
-u ユーザ名 「-u ユーザ名」で、root以外のユーザとして指定したコマンドを実行する

実行例

スーパユーザに変身する

それでは、現在ユーザmitsublogでログインして、一時的にスーパーユーザになってみます。

suコマンドでrootユーザに

mitsublog@mitsublog:~$ su
パスワード:
root@mitsublog:/home/mitsublog#

上記のように「su」コマンドを引数なしで実行すると、スーパーユーザに変身できます。ただし、その際にはスーパーユーザのパスワードが要求されています。

システムの設定ファイルの書き換えやコンピュータのシャットダウンなどシステム関連に関連する作業は、スーパユーザが行うことができます。

idが変わる

「su」コマンドを実行するとユーザが変わることがご説明したました。その他にidも変わります。これはユーザ1つ1つに割り振られており、idコマンドで確認できます。

これは、ユーザ名の前に「-」(ハイフン)を指定しない場合の例です。-を指定すると環境を引き継がず新たのシェルで指定したユーザでできます。

新規ログインと同様の状態で、スーパユーザに変身

「su」 コマンドで別のユーザに変身する場合、普通にログインした場合と違い、変身前のユーザの環境変数が引き継がれます。変身前のユーザの環境変数を引き継ぎたくない場合は、次のように「-」オプションを指定します。

$su -

この場合、カレントディレクトリもユーザuserのホームディレクトリに移動し、新規ログインし直した場合も同じ状態になります。スーパーユーザーに変身して作業を行うような場合、変身前のユーザの環境変数を引き継いでるとは思わぬトラブルを招いてしまうことも考えられます。こうしたトラブルを防止するためには、スーパーユーザに変身するときは-オプションを指定することをおすすめします。

ユーザ名を省略すると、rootユーザになります。ユーザ名の前に「-」を使用しないとユーザIDだけが変わり、ログイン環境は前のユーザのままです。「-」を使用すると、ユーザIDだけが変わりが変わるとともに新しいユーザの環境を使用します。

以下は、ユーザ名の前に「-」(ハイフン)を指定した例です。実行ユーザIDと実行グループIDがrootで新規にシェルを起動します。

su -による一時的に環境変更

mitsublog@mitsublog:~$ id
uid=1000(mitsublog) gid=1000(mitsublog) groups=1000(mitsublog),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),121(lpadmin),132(sambashare)
mitsublog@mitsublog:~$ su -
パスワード:
root@mitsublog:~# id
uid=0(root) gid=0(root) groups=0(root)
root@mitsublog:~#

root権限でコマンドを実行:sudo

sudoコマンドを利用するには/etc/sudoersにsudoコマンドを利用して変身できるユーザを記述する必要があります。

visudoによる/etc/sudoersファイルの設定例

ユーザ名を省略すると、rootユーザになります。また、sudoコマンドは/etc/sudoersファイルを参照して、ユーザがコマンドの実行権限を持っているかどうかを判定します。したがって、sudoコマンドの利用・設定をするには/etc/sudoersファイルを編集します。rootユーザでvisudo コマンドを実行すると、/etc/sudoersファイルが開きます。/etc/sudoersにて設定を下記セクションに追記します。99行目に記載がありますが、こちらにユーザ名を追記します。

書式は下記となります。

/etc/sudoers書式

ユーザ名 ホスト名=(実行ユーザ名)コマンド

ユーザの記述例

mitsuユーザの記述例となります。

# User privilege specification
root ALL=(ALL:ALL) ALL

グループの記述例

書式は下記となります。

グループ書式

%グループ名 ホスト名=(実行ユーザ名)コマンド

グループの記述例です。

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

グループ「wheel」に属させる方法

次に,ユーザmitsuを「wheel」グループに属させます。usermodコマンドは、ユーザ情報を変更します。

usermodによるグループにユーザを追加

$usermod -g wheel mitsu

設定完了後、無事反映されていたら「id」コマンドで確認できます。groups=1002(mitsu)と新たに2223(wheel)が追記されます。

idコマンド実行結果

uid=1002(mitsu) gid=2223(wheel) groups=2223(wheel)

 

上記により、ユーザ「mitsu」は「sudo」コマンドを使用し、管理者権限のコマンドも実行できます。

※sudoコマンドの実行履歴は,/var/log/secureファイルに記録されます。

まとめ

今回は以上となります。それではまとめとなります。

本記事は以上となります。まとめに入ります。

まとめ

su,sudoコマンドによるユーザ切り替えについて

sudoを利用するには設定ファイルを編集し指定したユーザが実行できるように記述する必要があります。

suはユーザを切り替えるコマンドです。主にrootユーザに切り替えて利用します。ですが、root権限でログインしたくない場合や、特定のユーザにのみroot権限でコマンドを実行できるようにするにはsudoコマンドを利用します。

技術現場suやsudoは使われますので、ぜひ覚えておきましょう。

  • この記事を書いた人
  • 最新記事

ミツ

サーバ初心者向け「server-beginner」を運営する「ミツ」と申します。 Linux系やwindows系などのサーバに関する部分をメインで執筆していきますので、興味ある方はぜひご覧いただけますと幸いです。 <経歴> 専門学校卒業後、ネットワーク、インフラ、プログラミングを一通り経験。 当メディアでは主にLinux分野に関する内容を発信していきます。

-Linux共通