ユーザー権限を理解する
【連載コラム:Linuxを学ぼう(9)】
サーバーを扱う上で必須と言える技術が「Linux」。今回はユーザーの権限について解説します。
サーバーを管理する上で必須の技術「Linux」の学習の仕方を解説するこのコラムの今回は、サーバー構築の作業などで重要となる「ユーザー権限」について解説します。
目次
LinuxはマルチユーザーOS
Linuxは「マルチユーザー」と呼ばれる種類のOSです。
これは1台のマシン上で動作しているLinuxのシステムを、複数のユーザーが同時に利用できるという意味です。その方法の1つが、前回解説したSSHでリモートログインして各種コマンドを実行して操作する、という方法です。リモートログインして対話的に操作する以外にも、プログラムをバックグラウンドで連続して実行したりすることができます。
この方法はLinuxをサーバーとして動作させる場合などに利用されています。これも、マルチユーザー、そしてマルチプロセスであるLinuxの特徴です。
特権ユーザーroot
Linuxは様々なユーザーが同時に利用できるマルチユーザーOSですが、ユーザーの中で特に強いシステム権限を持ったユーザーがいます。これを「特権ユーザー」や「スーパーユーザー」と呼びます。Linuxの場合、特権ユーザーのユーザー名は「root」となっています。
ユーザーrootのシステム権限は非常に強く、Linuxのシステムのすべてをコントロールできるようになっています。システムの設定の変更などもroot権限を使って行うことになります。
そのため、勝手にroot権限を利用できないようセキュリティを固めておく必要があります。
一般ユーザー
前回ログインする際に使ったのは、linucというユーザーでした。このユーザーはLinuxを各種操作するために作られた一般ユーザーになります。一般ユーザーは基本的に許可された範囲内でしか操作を行うことができません。必要に応じて、特権ユーザ−rootに切り替えたり、sudoコマンドなどを使って一部のコマンドをroot権限で実行します。
suコマンド
ユーザーrootとして各種操作を行うには、最初からユーザーrootでログインするか、suコマンドを使ってユーザーを切り替えます。
suコマンドは「substitute」、「替える」という意味の単語から取られています。「switch user」の頭文字を取ったと言われることもあります。
sudoコマンド
sudoコマンドは、引数にその他のコマンドを指定すると、そのコマンドをroot権限で実行します。特定のユーザーに対して制限無くsudoコマンドを実行させたり、特定のコマンドのみ実行させるなど、様々な設定が行えます。
これらは/etc/sudoersという設定ファイルに記述します。
root権限をどう扱うか
前述したとおり、root権限はセキュリティの要でもあります。そのため、どのように扱うのかは場合によって異なります。
いくつかの考え方を挙げてみましょう。
rootでログインさせる
root権限を使う時はrootでログインし、suコマンドやsudoコマンドを使わない方法です。
rootのパスワードは設定せず、SSHの公開鍵認証でログインさせるなど、ログイン手段を絞り込む方法はありますが、ログインできれば何でもできてしまう点であまり好まれません。
sudoコマンドをフル活用する
sudoコマンドは細かい実行権限の制御が行えるので、必要最小限の実行許可のみ与える方法です。システムの設定は初期設定のみ行い、その後は極力設定変更も加えないで済むのであれば実現可能です。
運用上root権限を使わない
root権限は設定の変更等のために必要となるので、動いている間は設定を変更しないコンテナなどであれば、システム内部のroot権限を気にする必要がありません。設定変更はコンテナイメージに対して行い、新たに起動し直すだけになります。
このような考え方は「使い捨てインフラ」と呼ばれます。やや特殊な例なので応用として頭の片隅に置いておくとよいでしょう。
次回はsuコマンドの使い方について解説します。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
バックナンバー
第20回:Webサーバーを動かす
第19回:Webサーバーをインストールする
第17回:ネットワークの状態確認を理解する
第15回:ファイルのアクセス権を理解する
第14回:パッケージをアップデートする dnf編
第13回:PAMを理解する
第12回:グループとは何かを理解する
第11回:sudoコマンドについて理解する
第10回:suコマンドで特権ユーザーになる
第9回:ユーザー権限を理解する
第8回:SSHによるリモートログイン
第6回:Linuxイストールの実際
第5回:Linuxインストールの準備
第3回:学習環境を用意する
第2回:Linuxをどう学ぶのか
第1回:Linuxを学ぼう