/Linuxコマンド

ユーザーと権限

パーミッションと所有者

chmod・chown・umask の使い方と、rwx や 755 といった権限の読み方。

権限の読み方

ls -l の先頭10文字が権限です。

出力
-rwxr-xr--
│└┬┘└┬┘└┬┘
│ │  │  └ その他のユーザー(other)
│ │  └── グループ(group)
│ └───── 所有者(user)
└─────── 種類(- ファイル / d ディレクトリ / l リンク)
記号数字ファイルではディレクトリでは
r4読める中の一覧を見られる
w2書き換えられる中にファイルを作る・消す
x1実行できる中に入れる(cd できる)

数字は所有者・グループ・その他の順に、r+w+x を足して並べます。

数字記号よく使う場面
755rwxr-xr-x実行ファイル、公開するディレクトリ
644rw-r--r--普通のファイル
700rwx------自分だけのディレクトリ(~/.ssh)
600rw-------秘密鍵・パスワードを書いたファイル
775 / 664rwxrwxr-x / rw-rw-r--グループで共有するもの

chmod権限を変える

ファイルやフォルダの権限(読み・書き・実行)を変えます。「Permission denied」と言われたときによく使います。

bash
chmod <モード> <ファイル...>
bash
$ 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所有者を変える

ファイルやフォルダの所有者(持ち主)を変えます。

bash
$ sudo chown alice file.txt
$ sudo chown alice:alice file.txt      # 所有者:グループ
$ sudo chown -R alice: ~/project      # 「:」だけならその人のログイングループ
$ sudo chown -R 1000:1000 public/    # 数字のIDでも指定できる

chgrpグループを変える

ファイルやフォルダの所有グループを変えます。

bash
$ sudo chgrp -R docker ./data

umask新しいファイルの初期権限

新しく作るファイルの権限から「外す」ビットを指定します。

bash
$ umask
0022          # ファイルは 644、ディレクトリは 755 になる
$ umask 077   # 以降は 600 / 700 で作られる(このシェルの中だけ)

特殊な権限

名前記号意味
setuidrws------ファイルの所有者の権限で実行される(passwd など)
setgidrwxrws---ディレクトリなら、中に作ったファイルがそのグループになる
スティッキービットrwxrwxrwt自分のファイル以外は消せない(/tmp)
bash
$ chmod g+s shared/     # 共有ディレクトリでグループを揃える
$ ls -ld /tmp
drwxrwxrwt 12 root root 4096 ...