LinuxのrootユーザとはLinuxの管理者のことだ。
rootは根っこ・根本・根元という意味がある。LinuxのrootユーザはそのLinuxシステムを好きに編集することができる最高権限をもったユーザだ。
このページではrootユーザについて初心者の方向けにご紹介しよう。
目次
Linuxのrootユーザとは?
rootユーザ = 管理者
「root」ユーザはLinuxやUnix Like Systemにおける「管理者権限」だ。
Windowsでいうところのadministrator(アドミニストレータ)と同じ意味になる。
セキュリティ上、最も守らなくてはならないユーザであり、パスワードは管理者以外に知られてはならない。これが漏れたら一発アウトだ。そのLinuxは諦めて、インストールし直した方がいい。
それくらい大事なユーザ権限だと考えよう。
rootとはUnix Like System上の唯一神
要するに、rootはUnix Like System上の「唯一神」である。
基本的にLinuxでは「rootの命令は絶対」だ。他のユーザのパスワードを変更したり、システムファイルのパーミッションを書き換えることもできるし、Logを自分で書き換えることもできる。
自分自身で「/」ディレクトリを削除することも可能である。安易に扱うにはとても危険な権限である。
rootでログインをしてはいけない
インストール後、とりあえずは普段使う一般ユーザを1人つくることだ。後述するが必要な時だけroot権限を借りるようにしよう。
先程も記述したがrootはその気になればシステム全体を削除することもできる。これはなにも意図的でなくても、誤操作でシステムファイルを削除してしまう可能性もあるからである。
「rm」コマンドのあと「*」などのワイルドカードを指定し、間違えてそのままエンターを押してしまった場合などの大事故が発生する。
root権限でこれを実行してしまった場合問「.hoge」などの最初がドットの隠しファイル以外、問答無用でそのディレクトリ内部のファイルが削除されてしまう。
オペレータがあなただけならば、困るのはあなただけかもしれないが、他人と共有しているサーバへログインしていた場合大惨事になるのは容易に想像できるだろう。
事故を防ぐためにも基本的に一般ユーザを使うことを意識しよう。root権限が必要な時を列挙すると
- インストール後の初期設定、および設定変更時
- パッケージインストール時
- ログの確認時
上記3つのとき以外は基本的には一般ユーザで操作をおこなう方がいいだろう。
実際にやってみよう
rootでログイン
rootで一度ログインしてみよう。 ログイン画面で、ユーザ名:root、パスワード:決めた物を入力すればログインできる。
コマンドコンソールだと入力を受け付けるプロンプトが一般ユーザはシェルによってことなるが「$」もしくは「%」である。rootをスーパーユーザと呼ぶが、スーパーユーザは「#」となる。スーパーユーザはなんとなくイメージがわかると思うが、スーパーなユーザなのでなんでもできるrootを指している。
#の状態で、「id」コマンドを打ってみよう。
必ずuid=0(root) gid=0(root)と0番がわりふられているはずである。uidはユーザIDで、gidはグループIDを意味している。
これはどのLinuxディストリビューションでも共通だ。
# id
ディレクトリに関して
ディレクトリに関して一般ユーザは「/home/<hoge>」とhomeディレクトリの下にユーザディレクトリがあり、一般ユーザのデータはそこに保存される。
しかし「root」の場合「/root」という専用ディレクトリが用意されている。昔はルートディレクトリ「/」がそのままスーパーユーザのトップディレクトリだったが、「セキュリティ上問題が発生しかねない」という理由で専用のディレクトリである/rootがもうけられた。
$ ls /
suとsudo
基本的に一般ユーザが書き込みを許されているのは「/home」「/tmp」ディレクトリだ。
しかし管理者としてシステム設定などを変更したい場合はroot権限を借りなくてはならない。そこで「su」と「sudo」というコマンドを使うことになる。どちらも一時的にroot権限を借りることには変わりないが使用方法が異なる。
su
一般的なsuの使い方の場合ユーザはroot権限を一時的に使えるようになる。プロンプトは「#」になりexitするまで持続する。
su使用時にきかれるパスワードは「rootのパスワード」である。
もしシステム管理者があなたしかいないのならばsuで問題ないかもしれないが、他人と共有する場合、他人にrootパスワードを知らせることになる。
「rootのパスワードは知られてはいけない」という観点からいうのならば、セキュアではない、よってsudoを使うほうがいいだろう。
$ su
sudo
sudoはコマンド単位で一時的にroot権限を使う方法だ。「スーパーユーザでDoするからsudo」という意味合いで覚えておこう。
また必要なパスワードは「あなたのパスワード」である。
コマンド単位で「誰にどのコマンドをrootで実行させることを許可するか」を指定できる。こうすることでrootパスワードを知られることなく、必要なコマンドをroot権限で実行できるようになる。
もちろん無差別に権限を割り振ってしまうと意味がなくなるので注意していただきたい。sudoを使うには「visudo」コマンドで設定ファイルを編集しなければならない。一度スーパーユーザになってから。
# visudo
設定ファイルが開かれるはずなので最後の行に
hoge localhost=/sbin/shutdown -h now
と追加する。これでユーザhogeでsudoを使用してシャットダウンが可能になる。
$ sudo shutdown -h now
基本的には下記のような記述を追加する。
ユーザ ホスト=(権限) コマンド
例えばユーザsaoriにすべてのコマンドの実行権限を与えたければ、
saori ALL=(ALL) ALL
のようにすればいい。
最近のディストリビューションの多くは、root権限になるのではなく、sudoの使用を推奨している。
まとめ
このページではLinuxのrootユーザについて一通りご紹介してきた。だいたいの内容はご理解いただけただろうか?
- rootユーザはほとんどなんでもできる強力な権限をもったユーザ
- rootになるのは避けて、安全にシステムを運用する
という2点を理解していただければと思う。
#visudoのところの説明のところ、もう少し詳しく説明していただきたいです。設定開いた後で詰まってます
コメントありがとうございます! 説明を追加してみました。ご確認下さい。
LINUXの独学にとても分かりやすく助かっています。
#visudoの部分で質問ですが
「takahashiにすべてのコマンドの実行権限を与えたければ」の画像は
「takahashi」ではなく「saori」ユーザにすべてのコマンドの実行権限を与えた例でよろしかったでしょうか。
あと本文中のスーパーユーザというのは、rootのことになりますでしょうか?
お役立ていただいているようで大変嬉しく思います。
おっしゃる通りでした。ご指摘ありがとうございます。修正しました。
スーパユーザというものはおっしゃる通りrootになります。こちらも追記しておきます。
すばらしい
簡潔でわかりやすい
ありがとうございます。引き続きLinuxを勉強する際にご使用いただけますと幸いです。
ありがとうございます。