パーミッションとは、ファイルやディレクトリへの操作権限のことです。
今回、Linuxでのパーミッションの調べ方を記録しました。
はじめに
前回の記事1では、書き込みが許されていないディレクトリ"/etc/profile.d"に遭遇し、パーミッションという概念を思い知らされました。
パーミッションのことを知っておかなければ、Linuxの中を自由に探索することができません。
そこで今回は、パーミッションとは何か、どうやって調べるのかを記録します。
パーミッションを理解する
パーミッションとは
パーミッションとは、Archwikiによると2、
File systems use permissions and attributes to regulate the level of interaction that system processes can have with files and directories.
つまり、ファイルに対する操作権限を制御するもの、だそうです。
例えば、前回私はOS起動時の自動操作を設定するため、"/etc/profile.d"ディレクトリに新しくファイルを追加しようとしました。
しかし、その時表示されたエラーは、
E212: Can't open file for writing
つまり、あなたはファイルに書き込めませんよ、と言われてしまったわけです。
このように、読み込みや書き込みの権限は、ファイルごとに決まっています。
これがパーミッションです。
パーミッションの調べ方 | ls -l
次に、どうすればパーミッションを見ることができるのかを調べました。
すると、どうやらls
コマンドのオプション-l
でパーミッションを見れるようです。
それでは"/etc/profile.d"ディレクトリのパーミッションを確認してみます。
/etc$ ls -l
~ drwxr-xr-x 2 root root 4096 Jan 15 22:33 profile.d ~
とても面白そうな文字列が表示されましたが、何を意味しているのかさっぱりわかりません。
lsコマンドのマニュアル3から、" -l "オプションで表示される情報を調べました。
If the -l option is specified, the following information shall be written for files other than character special and block special files:
"%s %u %s %s %u %s %s\n", [file mode], [number of links], [owner name], [group name], [size], [date and time], [pathname]
つまり、ls -l
コマンドを実行すると、左から順に
[ファイルモード]、[リンク数]、[オーナー名]、[グループ名]、[サイズ]、[日時]、[パス名]
が表示されるということです。
ここで着目すべきは「ファイルモード」と「オーナー名」、「グループ名」です。
「ファイルのモード」は、最初の文字列 "drwxr-xr-x" のことで、まさしくファイルに対する操作権限を示しています。
"drwxr-xr-x"の文字列は、4つに分けて捉えます。
d / rwx / r-x / r-x
これらは左から順に、
ファイル種類 / オーナーの権限 / グループの権限 / その他ユーザーの権限
を示しています。
一番左の"ファイル種類"は今はあまり重要ではありません。"d"とあればディレクトリ、"-"とあれば普通のファイルだそうです。
大事なのは3つの"rwx"の文字列です。
"r"は読み込み、
"w"は書き込み、
"x"は実行、の権限を示しています。
例えば
"rwx"は読み込み、書き込み、実行のすべてが許可されていることを意味し、
"r-x"では書き込みが許可されていません。
この権限がオーナー、グループ、その他ユーザーに割り当てられています。
オーナーとグループの定義は
drwxr-xr-x 2 root root 4096 Jan 15 22:33 profile.d
この左から3、4つ目のかたまりがそれぞれ[オーナー名]、[グループ名]を定義しています。
この場合は、オーナーが"root"、グループが"root"グループということなので、許可されている権限は、
"root" : rwx
"root"グループ : r-x
その他ユーザー : r-x
ということになります。
つまり、書き込み"w"が許可されているのは"root"権限のみであるわけです。
もしもこのディレクトリに書き込みを行いたいのであれば、
$ sudo vim XXX.txt
のように、sudo
コマンドでroot権限を取得する必要があります。
おわりに
今回は、ls -l
コマンドによるパーミッションの調べ方を記録しました。
Linuxの中のファイルを探索して回るときには、私はよくls -l
を使用するので、パーミッションに目を向けてみるのも面白そうです。
また、このパーミッションは変更させることもできます。
気が向いたときにもっと深くまで遊んでみたいと思います。