先日、dockerでwordpressのローカル環境を構築して、プラグインを使おうと思ったら
困ったエラーに遭遇しました。
ディレクトリを作成できませんでした。
色々調べてみると権限周りの問題だったみたいです。
パーミッションについてあまり詳しくなかったので、これを機にちゃきちゃき学習してみようと思います。
そもそもパーミッションとは
パーミッション(権限)がファイルごとに割り当てられています。
まずはその確認方法から。
$ ls -l
のコマンドで、上記のような出力が確認出来ます。
drwx------+ 5 irico staff 160 9 17 09:15 Pictures
drwxr-xr-x 25 irico staff 800 3 10 13:38 Project
パーミッション 読み方
先頭の文字列がパーミッション方式を表示してる。
1文字目
ファイルの種類を表している。
1文字目 | 意味 |
---|---|
- | 通常ファイル |
d | ディレクトリ |
l | シンボリックリンク |
2~10文字目
ここが肝心要のパーミッションを示していて、3文字ずつで3つのグループに別れている。
2~4文字目 ・・・ユーザークラス
5~7文字目 ・・・グループクラス
8~10文字目 ・・・その他のユーザークラス
ユーザークラスとはファイルやディレクトリや所有者を指し、
グループクラスは同じサーバーを利用できるユーザー全体、
その他は上記以外の全ての第三者を指す。
文字位置 | 意味 |
---|---|
1文字目 | リード(r / -) |
2文字目 | ライト(w / -) |
3文字目 | 実行(x / -) |
-
リードはファイル・ディレクトリを読む権利。
r
表記があれば許可される。 -
ライトはファイル・ディレクトリの変更権利。
w
表記があれば許可される。 -
実行はファイルの実行権利・ディレクトリに入り中のファイルにアクセスする権利。
x
表記があれば許可される。
11文字目(ない場合もある)
11文字目 | 意味 |
---|---|
(スペース) | 通常のUnixのみ |
.(ドット) | SELinuxアクセス可 |
+(プラス) | その他のアクセス権もあり |
ここは本件にあまり関係なさそうだったのでさらっと見ておいた。後ほど調査。
例
drwx------
この場合は、
1文字目でディレクトリである事がわかり、
2~4文字目でユーザークラスにリード/ライト/実行の権利がある事がわかり、
5~10文字目でグループクラス/その他ユーザークラスに何も権利がない事がわかる。
パーミッションを変更しよう
chmod
コマンドを使用します。
細かいコマンドについての説明は、こちらがわかりやすかったです。
$chmod 権限の設定 ファイルパス
で指定でき、権限設定は数値3桁で指定していきます。
数値 | パーミッション |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
例えば 777
だったら、 rwxrwxrwx
となるので、
全てのユーザーに全ての権限を許すということになります。
実際に、wordpressの今回のエラー解決法をググっていたら、下記のような記事がでてきました。
https://www.dreamhive.co.jp/201706/3929
755かそれ以上(一部のサーバーでは777)に設定する必要があります。
なかなかセキュリティ的に危険なコマンドでもあるかと思うので、慎重に使っていきたいですね。
参考にさせていただいたリンク
https://qiita.com/shisama/items/5f4c4fa768642aad9e06
https://eng-entrance.com/linux-permission-basic
https://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=%A5%D1%A1%BC%A5%DF%A5%C3%A5%B7%A5%E7%A5%F3%A4%CErwx%A4%CE%B8%E5%A4%ED%A4%CE%CA%B8%BB%FA
https://qiita.com/ntkgcj/items/6450e25c5564ccaa1b95