web関連

vpsでファイルのアップロードできない時のパーミッションの変更

vpsでファイルのアップロードできない時のパーミッションの変更

さくらのVPSでWordpressを立ててみたがSFTPでファイルのアップロードができなかったので調べることにしました。

同じくVPSでWordpressを運用しているサイトがあったので見比べてみたがどうやらファイルのパーミッションっぽい

これを↓

//今回VPSで運用していくサイト
rwxr-xr-x(アップロードできない、755)

こうする↓のが目的

//VPSで運用中のサイト
rwxrwxr-x(アップロードできる、775)

という事で権限周りの調整をします。

パーミッションのみかた

まずは現在のパーミッションの確認をします。

r(read)=4
読み込みok
w(write)=2
書き込みok
x(execute)=1
実行ok
所有者(owner)
ファイルを作成したユーザー
所有グループ(group)
複数のユーザー所属できるグループ
その他(other)
所有者と所有グループに所属しないユーザー(サイトを見ている一般ユーザーとか)

「r=4」「w=2」「x=1」とそれぞれに数字が振られておりそれらを足した数がFTPとかでよく見る「775」「664」の数値となっている。
基本的に頭から3つずつで「所有者」「所有グループ」「その他」とわかるのだが、FTPのソフトによってはパーミッションの頭に「d=directory」とファイルの種類がついていたりする。

今回は所有グループに書き込み「w」の権限を与えることを目的にします。

書き込み権限の付与

まず、cd(移動)コマンドを使って該当のディレクトリに入り、パーミッション等の確認をします。

cd /var/www
ls -l

上記コードを入力すると以下の画像のように出力されます。

パーミッション、ユーザー、グループ、etcが確認できるかと思われます。
今回、ディレクトリは775、ついでにファイルは664に変更します。

僕は、パーミッションの変更をrootでしかできないのでsu -(ユーザー切り替え)コマンドでroot権限で作業をします。
root権限になったら以下のコマンドを入力します。
↓は「html」ディレクトリ以下の、ディレクトリとファイルのパーミッションの一括置換のコマンドです。

//ファイルのパーミッション一括置換
find /var/www/html -type f -exec chmod 664 {} ;
//ディレクトリのパーミッション一括置換
find /var/www/html -type d -exec chmod 775 {} ;

確認のために再度ls -lコマンドで権限を確認します。

無事パーミッションが「rwxrwxr-x(775)」になったことが確認できたら完了です。

補足:特定のディレクトリやファイルの権限変更

パーミッションを変えても画像がアップロードできない時は権限の問題かも…
root権限は危ないから別のユーザー作っていたりするとそのユーザーにアップロードの権限が振られていない事があった
なのでls -lで対象のディレクトリを確認して権限の変更が必要

//現在の権限を確認する
ls -l
//対象のディレクトリやファイルの権限を変える
chown -R ユーザー名:グループ名 file名

僕の場合ユーザー名はapacheでグループもapacheになっていたので、ユーザー名は変えずにグループを変更するためにchown -R apache:(sftpでログインするuser名) 対象file名で変更かけたらアップロードできた。

コマンドだけで操作するssh接続の恐怖が半端ない VPSとか触ったことが今までなかったから「Linux」とはなんぞや状態... いつかはVPSを使い倒せるくらいのスキルを身につけたい