ユーザーと権限
パーミッションと所有者
chmod・chown・umask の使い方と、rwx や 755 といった権限の読み方。
権限の読み方
ls -l の先頭10文字が権限です。
-rwxr-xr--
│└┬┘└┬┘└┬┘
│ │ │ └ その他のユーザー(other)
│ │ └── グループ(group)
│ └───── 所有者(user)
└─────── 種類(- ファイル / d ディレクトリ / l リンク)| 記号 | 数字 | ファイルでは | ディレクトリでは |
|---|---|---|---|
r | 4 | 読める | 中の一覧を見られる |
w | 2 | 書き換えられる | 中にファイルを作る・消す |
x | 1 | 実行できる | 中に入れる(cd できる) |
数字は所有者・グループ・その他の順に、r+w+x を足して並べます。
| 数字 | 記号 | よく使う場面 |
|---|---|---|
755 | rwxr-xr-x | 実行ファイル、公開するディレクトリ |
644 | rw-r--r-- | 普通のファイル |
700 | rwx------ | 自分だけのディレクトリ(~/.ssh) |
600 | rw------- | 秘密鍵・パスワードを書いたファイル |
775 / 664 | rwxrwxr-x / rw-rw-r-- | グループで共有するもの |
chmod権限を変える
ファイルやフォルダの権限(読み・書き・実行)を変えます。「Permission denied」と言われたときによく使います。
chmod <モード> <ファイル...>$ chmod 755 deploy.sh
$ chmod +x script.sh # 全員に実行権限を付ける
$ chmod u+x,g-w file # 所有者に実行を付け、グループの書き込みを外す
$ chmod go-rwx secret.txt # グループとその他から全権限を外す
$ chmod -R u=rwX,go=rX public/ # ディレクトリにだけ x を付ける(大文字の X)
$ chmod 600 ~/.ssh/id_ed25519| 記号の書き方 | 意味 |
|---|---|
u g o a | 所有者・グループ・その他・全員 |
+ - = | 付ける・外す・その通りにする |
X | ディレクトリと、元々どこかに実行権限があるファイルにだけ x |
chown所有者を変える
ファイルやフォルダの所有者(持ち主)を変えます。
$ sudo chown alice file.txt
$ sudo chown alice:alice file.txt # 所有者:グループ
$ sudo chown -R alice: ~/project # 「:」だけならその人のログイングループ
$ sudo chown -R 1000:1000 public/ # 数字のIDでも指定できるchgrpグループを変える
ファイルやフォルダの所有グループを変えます。
$ sudo chgrp -R docker ./dataumask新しいファイルの初期権限
新しく作るファイルの権限から「外す」ビットを指定します。
$ umask
0022 # ファイルは 644、ディレクトリは 755 になる
$ umask 077 # 以降は 600 / 700 で作られる(このシェルの中だけ)特殊な権限
| 名前 | 記号 | 意味 |
|---|---|---|
| setuid | rws------ | ファイルの所有者の権限で実行される(passwd など) |
| setgid | rwxrws--- | ディレクトリなら、中に作ったファイルがそのグループになる |
| スティッキービット | rwxrwxrwt | 自分のファイル以外は消せない(/tmp) |
$ chmod g+s shared/ # 共有ディレクトリでグループを揃える
$ ls -ld /tmp
drwxrwxrwt 12 root root 4096 ...