概要
運用中などにしばしば、権限が不足しており「ダウンロードできない」「操作できない」などのエラーが発生することがあります。エラーが権限の問題の場合は適宜調整が必要になります。
前提知識
アクセス権(パーミッション)の表し方には、3桁の数字で表す方法と、9文字の英字で表す2種類があります。
具体的には「777」や「rwxrwxrwx」 という風に表されます
以下のA,B,Cのファイルがあった場合、各数字と英字の対応表は以下の様になります。
x@iMac-PC-0079 test % ls -l
total 0
-drwxr--r-- 1 test staff 0 7 15 13:56 A
-rw-rw-r-- 1 test staff 0 7 15 13:47 B
-rw-r--r-- 1 test staff 0 7 15 13:47 C
ファイル(ディレクトリ)名 | 英字 | 数字 |
---|---|---|
A | drwxr--r-- | 744 |
B | -rw-rw---x | 661 |
C | -rw-r----- | 640 |
※dはディレクトリを表す意味です。dが付いているとそれはディレクトリであると分かります。
ただのファイルであれば、「-」で置き換えられます
それぞれの文字が何を示すかというと、以下の様になっています
英字 | 数字 | 意味 |
---|---|---|
r:(read) | 4 | 読み込み権限 |
w:(write) | 2 | 書き込み権限 |
x:(excute) | 1 | 実行権限 |
r=4(読み込み権限)
w=2(書き込み権限)
x=1(実行権限)
この3点を覚えておくだけで権限周りはグッと理解度が深まるので、必ず覚えておきましょう。
パーミッションの書き方
rwxr--r--
上記の様なパーミッションがあったとします。
この9文字を3文字ずつ区切ると「rwx」「r--」「r--」となり、それぞれ「所有者の権限」「グループの権限」「その他の権限」になります。
rwx | r-- | r-- |
---|---|---|
所有者の権限 | グループの権限 | その他の権限 |
7(全ての権限が付与) | 4(読み取り権限のみ) | 4(読み取り権限のみ) |
そのため以下の様なディレクトリの場合はtestユーザー(所有者)には全ての権限が付与されており、staff(グループ)には読み取り権限のみ、その他のユーザーにも読み取り権限のみが付与されています。
つまりこのディレクトリを削除したり、実行できるのは testユーザーのみ になります。staffグループに所属しているhogeユーザーが削除しようとしても staffグループには読み込み権限しか付与されていない 為できません。
-drwxr--r-- 1 test staff 0 7 15 13:56 A
アクセス権の対象も英字で表せます
chmodなどで使うので覚えておきましょう
英字 | 意味 |
---|---|
u | 所有者(user) |
g | グループ(group) |
o | その他(other) |
a | 上の3つすべて(all) |
chmod(change mode)
ファイルやディレクトリのアクセス権(パーミッション)を変更する
chmod {パーミッション} {ファイルorディレクトリ}
例)testというファイルの権限を777(全許可)に変える場合
x@iMac-PC-0079 test % ls -l test
-rwxrwxrwx 1 x staff 0 7 15 14:50 test
x@iMac-PC-0079 test % chmod 777 test
x@iMac-PC-0079 test % ls -l test
-rwxrwxrwx 1 x staff 0 7 15 14:50 test
例)先ほどのtestからグループの実行権限を削除してみる
x@iMac-PC-0079 test % chmod g-x test
x@iMac-PC-0079 test % ls -l test
-rwxrw-rwx 1 x staff 0 7 15 15:24 test
例)testからグループの実行権限を追加してみる
x@iMac-PC-0079 test % chmod g+x test
x@iMac-PC-0079 test % ls -l test
-rwxrwxrwx 1 x staff 0 7 15 15:24 test
例)ディレクトリごと権限を変更したい場合
x@iMac-PC-0079 test % ls -l
total 0
-rwxr--r-- 1 x staff 0 7 15 13:56 A
-rw-rw-r-- 1 x staff 0 7 15 13:47 B
-rw-r--r-- 1 x staff 0 7 15 13:47 C
x@iMac-PC-0079 test % chmod -R 755 ~/test
x@iMac-PC-0079 test % ls -l
total 0
-rwxr-xr-x 1 x staff 0 7 15 13:56 A
-rwxr-xr-x 1 x staff 0 7 15 13:47 B
-rwxr-xr-x 1 x staff 0 7 15 13:47 C
chown(change owner)
ファイルやディレクトリの所有者を変更する(同時にグループも変更可能)
chown {[所有者]or[所有者:グループ]} {ファイルorディレクトリ}
例) /chroot/user/prをcreator(所有者)apache(グループ)に変更する
[root@web01 ~]# chown creator:apache /chroot/user/pr
[root@web01 ~]# ll /chroot/user/
total 0
drwxrwxr-x 2 creator apache 6 Jul 7 16:29 pr
例)所有者をhomepageに変更する
[root@web01 ~]# chown homepage /chroot/user/pr
[root@web01 ~]# ll /chroot/user/
total 0
drwxrwxr-x 2 homepage apache 6 Jul 7 16:29 pr
ディレクトリごと権限を変更したい場合
chmodと同じように、「-R」オプションをつけます
chgrp(change group)
ファイルやディレクトリのグループを変更する(同時にグループも変更可能)
⚠️chgrpコマンドはグループしか変えられません
chgrp {グループ} {ファイルorディレクトリ}
例)グループをnginxに変更する
[root@web01 ~]# chgrp nginx /chroot/user/pr
[root@web01 ~]# ll /chroot/user/
total 0
drwxrwxr-x 2 homepage nginx 6 Jul 7 16:29 pr
ディレクトリごと権限を変更したい場合
chmodと同じように、「-R」オプションをつけます