はじめに
よくLinuxの手順書に chmod 644 ○○
とか chmod 755 ××
とか書いてあるのを見て、意味もわからず実行していませんか?
恥ずかしながら私はそうでした。
仕事ではなくプライベートな環境で実行することがほとんどなのであまり気にしていませんでしたが、やはり気になっているので、このあたりで意味をまとめることにします。
本記事の目標
以下のコマンドと出力結果の意味がわかるようになる。
$ ls -l
total 0
drwxr-xr-x 2 {ユーザー名} staff 64 4 12 00:14 bar
-rw-r--r-- 1 {ユーザー名} staff 0 4 12 00:14 foo.txt
$ chmod 666 foo.txt
$ ls -l
total 0
drwxr-xr-x 2 {ユーザー名} staff 64 4 12 00:14 bar
-rw-rw-rw- 1 {ユーザー名} staff 0 4 12 00:14 foo.txt
環境
- OS:macOS High Sierra 10.13.1
Linuxでなくてすみません。
MacもUNIX系のOSなのでお許しください。
「ls -l」とは?
ファイルやフォルダの情報を出力するコマンド。
-l
オプションを付けることで権限などの詳細な情報も出力されます。
出力結果の意味
# 左から順に、ファイルの種類, 権限, ハードリンク数, 所有者, グループ, サイズ(バイト), タイムスタンプ, ファイル名
$ ls -l
total 0
drwxr-xr-x 2 {ユーザー名} staff 64 4 12 00:14 bar
-rw-r--r-- 1 {ユーザー名} staff 0 4 12 00:14 foo.txt
bar
と foo.txt
は「staff」グループのユーザーによって4/12 00:14に作成されたことがわかります。
ファイルの種類
記号 | 意味 | 略 |
---|---|---|
- | ファイル | - |
d | フォルダ | directory |
l | シンボリックリンク | link |
bar
はフォルダなので d
, foo.txt
はファイルなので -
となっています。
権限の見方については次のセクションで説明します。
「chmod」とは?
ファイルやフォルダのアクセス権を変更するコマンド。
「change file modes or Access Control Lists」の略。
各記号の意味
記号は x
w
r
の3種類です。
記号があればその権限があり、 -
ならば権限がないということです。
記号 | 意味 | 略 |
---|---|---|
x | 実行権限 | execute |
w | 書き込み権限 | write |
r | 読み込み権限 | read |
数字と記号の対応表
数字は0〜7の8進数であり、記号と以下のように対応しています。
2進数の足し算のように、右から1ずつ足していくのがポイントです。
数字 | 記号 |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
x=1, w=2, r=4 と覚えるのもいいです。
例えば「6」なら4+2なので「rw-」となります。
よく使うモード
モードは数字3桁で表します。
左から順に「所有者」「グループ」「その他のユーザー」のアクセス権限を表します。
モードの組み合わせは8の3乗で512通りもあるため、ここではよく使うモードのみ抜粋して紹介します。
数字 | 記号 | 説明 | 主な用途 |
---|---|---|---|
600 | rw------- | 所有者のみ読み書き可 | TBD |
644 | rw-r--r-- | 所有者のみ書込可、他は読取専用 | |
666 | rw-rw-rw- | 全ユーザーが読み書き可 | |
700 | rwx------ | 所有者のみ読み書き実行可 | |
755 | rwxr-xr-x | 所有者のみ書込可、他は読みと実行のみ可 | |
777 | rwxrwxrwx | 全ユーザーが読み書き実行可 |
ls -l
で出力される権限もこの記号と同様の意味です。
おわりに
最初に紹介したコマンドと出力結果の意味はわかりましたでしょうか?
foo.txt
には所有者しか書き込み権限がなかったので、 chmod 666 foo.txt
を実行して全ユーザーにも書き込み権限を付与したということでした。
その結果を ls -l
で示しています。
これで権限にまつわる謎の数字やアルファベットも怖くありません!