Linuxは1つのマシンへ複数のユーザが同時にログインして操作することを前提として作られているので、ファイルの誤操作や上書きを防ぐための仕組みが必要となります。
本記事ではそんなファイルの保護を実現するためのパーミッションの仕組みと管理者権限を持つスーパーユーザであるrootユーザについて分かりやすいように解説いたします。


目次 [表示]
【Linux】パーミッションの基本
まずはLinuxにおける「パーミッション」の基本についてしっかり押さえておきましょう。
オーナーとグループ
Linuxで使われるファイル全てにオーナーが設定されており、そのオーナーはファイルへのアクセス権限を自由に設定することができます。
以下はlsコマンドに「-l」オプションを付けてファイルのオーナーを確認した例。
上の例でいうとsampleファイルは「taroというユーザがオーナーで、suzukiというグループに所属している」という意味になります。
「グループ」とはユーザをまとめた集まりのこと。ユーザはいくつものグループに所属することが可能。「groupコマンド」で自分がどのグループに所属しているか確認することができる。
パーミッション
各ファイルには「誰にどのような操作を許可するか」という権限を規定する情報が設定されており、この情報を”パーミッション”と呼びます。
以下「rwxr-xr-x」の部分はファイルモードと呼ばれ、ファイルのパーミッションを表現。
この9文字は3文字ごとに1つのブロックになっており、それぞれがオーナー・グループ・その他ユーザに対するパーミッションを意味してます。
以下の図は各記号の意味をまとめたものです。
r | 読み取り(read) |
---|---|
w | 書き込み(write) |
x | 実行(execute) |
先ほどの例はファイルの「オーナーには読み書き実行権限全てが与えられており、グループとその他ユーザには読み・実行の権限のみ与えられている」という意味になります。
【chmodコマンド】パーミッションの変更について
「chmod」は先ほどの9文字で表現されていたファイルモードを変更するコマンド。
chmodコマンドには「シンボルモード」による指定と「数値モード」による指定の2種類があるので、それぞれについて以下で解説します。
なお、ファイルのパーミッションはオーナーもしくは後述するスーパーユーザしか変更することができません。
シンボルモードによるパーミッションの変更
シンボルモードの指定は「誰にどのような権限を追加もしくは禁止するのか」が直感的。
最初の[ugoa]の部分はどのユーザに対するパーミッションを変更するのかを指定。
それぞれの記号の意味は以下の通り。
u | オーナー |
---|---|
g | グループ |
o | その他ユーザー |
a | ugo全て |
次の[+-=]の部分は権限を追加するのか禁止するのかの操作を表しています。
+ | 権限を追加する |
---|---|
– | 権限を禁止する |
= | 指定した権限と等しくする |
なお、最後の[rwx]の部分は前章で解説した通り、読み書き実行権限を表したものです。
数値モードによるパーミッションの変更
シンボルモードとは異なり、数値モードは元のパーミッションに関わらず新しいパーミッションの値へと変更する方式です。
パーミッションを数値で表現するにはrwxのうち許可する操作を以下の数字に置き換えてそれを足し算します。
読み取り(r) | 4 |
---|---|
書き込み(w) | 2 |
実行(x) | 1 |
足した値をオーナー・グループ・その他ユーザの順に3つ並べてパーミッションを表現。
例えば「755」はオーナーには読み書き実行権限の全て、グループとその他ユーザには読み・実行権限のみ与えられているということになります。
スーパーユーザとsuとsudoコマンドの違いについて
Linuxのユーザの中には「スーパーユーザ(rootユーザとも)」と呼ばれる管理者権限を持つ特別なユーザが存在します。
スーパーユーザはあらゆる操作が許可された強い権限を持つユーザであり、ファイルのパーミッションの影響を受けずに全てのファイルの読み込み・書き込み・削除が可能です。
本章では一般ユーザからスーパーユーザに変わる方法であるsuとsudoコマンドについて順に解説していきます。
スーパーユーザで操作を誤るとLinuxシステム自体を破壊してしまう恐れもあるため乱用は禁物です。スーパーユーザの利用は必要最小限に留めておきましょう。
suコマンド
「suコマンド」はログアウトせずとも一時的に別のユーザになるため(主にスーパーユーザに変わるため)のコマンドです。
なお、スーパーユーザとして作業を終えたら、exitコマンドで元の一般ユーザに戻れます。
sudoコマンド
「sudoコマンド」は一般ユーザでログインしている時にスーパーユーザでないと実行できないコマンドを実行するために使用されます。
sudoコマンドを実行すると上の例のように現在ログインしているユーザのパスワードが要求されるので、正しく入力すれば実行されるはずです。
suとsudoどちらを使うべきか?
結論sudoコマンドを基本的に使用しましょう。
というのも、スーパーユーザでの操作は致命的な問題を引き起こす可能性があるため、むやみに使用すべきではないからです。
なお、sudoコマンドも危険を伴うことに変わりないため、使用する場合は逐一注意して実行するようにしましょう。
【Linux】パーミッションのまとめ
- Linux上の各ファイルには必ずオーナーが存在する。
- 各ファイルには「誰にどのような操作を許可するか」という権限を規定する情報(パーミッション)が設定されている。
- chmodコマンドでパーミッションの変更が可能。(オーナーもしくはスーパーユーザのみ変更が許可される)
- Linuxのユーザの中にはスーパーユーザと呼ばれる管理者権限を持つ特別なユーザが存在。
- su/sudoコマンドでスーパーユーザに切り替わることができる。
- 基本的には危険性を考慮してsudoコマンドを使用したほうが無難。
Linuxにおけるパーミッションの基本について理解できましたでしょうか?
本記事で扱った内容はあくまで基本的な部分だけなので、良質な書籍やサイトでの学習を通じて更に理解を深めていってもらえればと思います。
ここまで記事を読んでいただきありがとうございました。当ブログでは他にもLinuxに関する記事を公開しているので、気になる記事がないか併せて確認してみてください。
https://engineer-life.dev/linux-learning-method/