エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


パーミッション(属性)一括変更ツール・WordPress最適化済

      2017/03/12

ファイル、フォルダのパーミッション一括変換ツール

 

「パーミッション一括変更ツール(WordPress最適化済)」リリース!

 
WordPressのファイル、フォルダのパーミッション(属性)をまとめて変更するツール(PHPのプログラム)を作りました。
 
 パーミッション一括変更ツール(WordPress最適化済)ダウンロードページ
 
 
パーミッション一括変更ツール(WordPress最適化済)の機能
・WordPressのフォルダ内のファイル、フォルダのパーミッションの一覧を表示します。
・表示されたファイルを選択し、パーミッションを変更します。
 
 
パーミッション一括変更ツール(WordPress最適化済)の目的
WordPressのファイル、フォルダのパーミッションを変更し、セキュリティの向上を目的としています。
 
 
ちなみに、「WordPress最適化済」と書いてはいますが、WordPressでなくても何のサイトでも全く問題なく使えます。WordPressに限定するような処理は一切いれていません。というか、何をすれば WordPress限定にできるのか分かりません(笑)!
 
ただ、「WordPress最適化済」と対象を明確にしておく方が WordPressを使う方にとっては優しいかな、と。
「あ、これ、WordPressのパーミッションの変更用のツールなんだ!」と思ってもらえる方が WordPressユーザには使ってもらいやすいかな、と思ったというお話です。
 
 

「パーミッション一括変更ツール(WordPress最適化済)」の使い方

 
ファイルをダウンロードして、zipファイルを解凍して「chmod_wp.php」を取り出します。
取り出したファイルを WordPressがインストールされているフォルダに FTPでアップロードします。
 
http://{WordPressのURL}/chmod_wp.php にアクセスします。
 
20140924_wp_01
 
ファイルリストを作成する条件を設定し、「ファイルリスト表示」をクリックすると条件に合致するファイルの一覧が表示されます。
 
 
20140924_wp_02
 
表示されたファイルの一覧の中からパーミッション(属性)を変更したいファイルにチェックを入れ、「パーミッション」を設定し、「パーミッション変更実行」をクリックすることでパーミッション変更が実行されます。
確認画面はありませんのでご注意ください。
 
 
20140924_wp_03
 
実行修了すると、パーミッションの変更が処理されたファイルのパーミッションは赤字表示され、「設定されたパーミッション」も表示されますので、パーミッションが変更されたことを確認してください。
 
 
なお、万一の事故防止のため、指定するファイルのチェックと、パーミッションの値は毎回入力していただくようになっています。
 
 


 

「パーミッション一括変更ツール(WordPress最適化済)」初期設定について

 
「パーミッション一括変更ツール(WordPress最適化済)」は、WordPressがインストールしてあるフォルダに入れて、そのまま使えるようになっています。
WordPress最適化済なので!
 
ですが、違う設定で対応したい方には初期設定で変更できるポイントが 2カ所用意していますので、解説しておきます。
 
 

 
初期値の 1行目。
デフォルトのフォルダを「”.”」と設定していますので、WordPressがインストールしてあるルートフォルダにこのプログラム本体を置いて使うことを想定しています。
PHPの設定方法が分かる方はパスを適当に変更して使ってください。
 
初期値の 2行目。
このプログラムファイル本体である「chmod_wp.php」はプログラムの一覧には表示されない仕様にしています。
もし、プログラムのファイル名を「chmod_wp.php」から変更して使う場合はここを見直してください。
 
 

「パーミッション一括変更ツール(WordPress最適化済)」を使う上での注意事項

 
自己責任において使ってください
デバッグは行っていますが、不具合等により問題が発生したとしても当方は一切責任を負えませんので、自己責任において使用してください。
 
 
サーバによって使えないサーバもあります
このサイトのサーバであるロリポップサーバでは動作を確認しましたが、その他のサーバでも動作する保証はありません。
サーバによっては、FTPユーザと Apacheのユーザが違うなど PHPのプログラムからパーミッションの変更が行えない場合があります。その場合はあきらめるしかありません。(このサーバでは動きました、このサーバでは動きませんでした、の情報をいただけると嬉しいですっ!!)
 
ただ、その場合でもファイルのパーミッション一覧ツールとしては使えますので、FTPツールによるパーミッションの変更をしたのち、全てのファイルのパーミッションが正しく変更されているかの確認には利用できます。
 
 
PHP 5.3以上でしか動きません
プログラムに無名関数の処理を使っていますので、PHPのバージョン 5.3以上でないと動かないと思います。
環境がないために 5.2以下でどのようになるかは確認していませんが。
 
 
利用に際しては一度実験をしてください
実験セットファイル一式もおいておきますので、いきなり WordPressで動作確認をするのではなく、まず最初に実験セットで試してみることをおススメします。
 
 
設定変更が終わったらサーバから削除してください
chmod_wp.phpのプログラムは、パーミッションを変更するツールですので、使い終わったらサーバから削除しておきましょう。
そのままサーバに残しておいて、万一外部のユーザが勝手に使ってしまったは大変なことになってしまいますので。
 
 
万一の事態に備えてバックアップをしてください
プログラムを実行した際に、万一動かなくなる自体を想定し、バックアップを取っておくことをオススメします。
バックアップは BackWPupという便利なプラグインがあります。「BackWPupでWordPressのDBもファイルもバックアップ」に記事を書いていますので、参考にしてください。
 
 

「パーミッション一括変更ツール(WordPress最適化済)」開発の経緯

 
WordPressに限りませんが、Webサイトを運営するうえでファイルのパーミッションの設定はセキュリティを高める上で基本的なことでありながら重要な項目です。
 
FC2からWordPressに引越。インストールなど必要な全てを解説(セキュリティ対応のためのパーミッションの設定を再確認)」などセットアップやセキュリティの記事でもファイルのパーミッションの設定について言及しています。
 
 
ロリポップのサイト「http://lolipop.jp/security/#p-permission」にはロリポップサーバではどのようにパーミッションを設定するといいのかが書いてありますので、セキュリティ向上のためには正しくパーミッションを設定する必要があります。
ロリポップ以外のサーバではそれぞれのサーバの指定に合わせて設定すべきですが、ロリポップの設定は参考になるでしょう。
 
ちなみに、ロリポップが詳しく説明している理由は「ロリポップで非常に大きなハッキング騒動がありました。」の騒動があったことに要因があるのでしょう。
 
 
とはいえ、インストールした直後でも WordPressのファイルは 1200弱、フォルダは 130ほどあり、階層も深いものもあるなど、チェックするだけでも大変です。
 
運営をしているサイトが一つだけならば、一回限りの作業と腹をくくって力技でも問題ありませんが、業務などで定期的に WordPressサイトを構築している方なら何とかならないものか、と思ってもいて不思議ではありません。
 
SSHが使えるサーバならばコマンドで一括変更する方法もあるわけですが、ロリポップなどのレンタルサーバでは SSHが使えないものの方が多いため、FTPで一つずつ対応していく必要が出てきてしまうため、途中で面倒になって中途半端な設定のままにしている方も多いのではないでしょうか。
 
 
というわけで、自分自身で使いたくて、必要だったからこそ作ったアプリケーションです。
 
「必要だったから作ってみたシリーズ第4弾」です。
 
引き続き、必要なツールが出てきたら作っていきますのでよろしくお願いいたします。
「こんな感じのツールはないですか?」と要望があれば作るかもしれません。私自身が使いたいと思えば...
 
 

プログラムに関する解説

 
プログラムの中に出てくる、パーミッションを変更する chmod関数、10進数を 8進数に変換する octdec関数についての解説を「PHPパーミッション変更のchmod関数・モードを変数で指定する方法」で行っていますので、興味がある方はご覧ください。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Comment

  1. まみねこ より:

    めちゃくちゃありがたいです。
    WPをインストールしたサーバーのフォルダほぼ全てのパーミッションが700になってて、正常に表示されない状態でした。
    サーバーのコマンド?操作とかまったくわからないので、FTP内で手動でちまちま変えていました。

    かなり気が遠くなるな…と思っていた所、検索して記事みつけました。
    本当にありがとうございます。

    他にも何の記事か忘れてしまって恐縮なんですが、とても詳しく書かれていてすごく役に立った記憶があります。
    ありがとうございました。

    • エス技研 より:

      まみねこさん、コメントありがとうございます。
      お役に立てたと言うことで、すごく嬉しいですね。
       
      もともと私も WordPressのパーミッションを変えるのが大変だったので、作ったものなんです。
      WordPressをインストールした後にパーミッションが違う、って気がつくと途方に暮れますよね。
       
      ただ、このツールは使い終わったらサーバから消してくださいね。
      残したままにしておくと、ハッキングされるリスクなどになりますので。

  2. あんず より:

    初心者のため、コマンド等のやり方が分からず、パーミッション設定を1つ1つ変えていたんですが、めんどくさくなってしまい、一括変更出来ないかと色々探したところ、こちらの記事を見つけダウンロードさせて頂きました。
    数字を変更する段階で、早速数字を0に変更しようと思ったのですが、変更出来る数字が1~7となっていました。こちらのツールで0を指定することは可能でしょうか?

  3. エス技研 より:

    あんずさん、コメントありがとうございます。
     
    連絡の件ですが、現在配布しているプログラムは、「0」は選択できないようになってしまっていますが、chmod()関数は「0」を設定することもできます。
    そのため、お手数をおかけしますが、225行目の for文の「$ii = 1;」を「$ii = 0;」に変えていただければ、「0」も選択できるようになります。
     
    近いうちに配布しているプログラムも修正をしておこうと思います。

  4. あんず より:

    chmod()関数について教えて頂きありがとうございました。
    時間がかかってしまいましたが、無事関数を「$ii = 1;」から「$ii = 0;」に変えることが出来、お陰でパーミッションの数字設定欄に0が表示されるようになりました。すぐにファイルを指定し、「パーミッション変更実行」をしたのですが、「パーミッションの値が正しく設定されていません。」とエラーメッセージが表示され変更できませんでした。
    他に変更する箇所があれば教えて頂ければと思います。

    • エス技研 より:

      あんずさん、コメントありがとうございます。
      ご連絡いただいた件、chmodの入力で、数値が選択されていないと入力エラーにするという処理をしていました。
      「0」の場合もエラーとなっていました。
       
      その辺りの処理を変更したものを作成し、下記のダウンロードサイトにアップし直しましたので、改めてダウンロードしてみてもらえませんでしょうか?
      https://s-giken.info/chmod/index.php
       
      よろしくお願いします。

  5. あんず より:

    エス技研さん。ありがとうございます。
    先ほど、ダウンロードさせて頂き、パーミッションの設定を実行してみたところ、無事、0も設定することが出来、全てのパーミッションを設定することが出来ました!

    丁寧に教えて頂き、また、プログラムの修正もして頂き、とても助かりました。エス技研さんのお陰です。本当にありがとうございました。

    • エス技研 より:

      あんずさん、コメントありがとうございます。
      多くの方に使っていただこうと公開しているプログラムですので、ちょっとした対応でより使い勝手がよくなるような対応は今後も実施していこうと思っています。
      また何かお役に立てることがあればいいな、と思っています!

エス技研 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

PHPで正規表現の検証には preg_match_allが便利

PHPで正規表現の検証には preg_match_allが便利です。その便利さの使い方の解説です。

ECCUBEのポイント設定、ポイント付与率を一括で変更する方法解説

ECCUBEの商品個別に設定してあるポイントを一括で変更する方法を解説。ECCUBEには商品個別のポイントを一括して変更する機能がありません。SQLを作成して一括置換!

連想配列のキーも値もまとめてhtmlspecialchars()でサニタイズする関数の作成解説
連想配列のキーも値もまとめてhtmlspecialchars()でサニタイズする関数の作成解説

PHPの配列・連想配列のキーと値をまとめてhtmlspecialchars()関数でサニタイズ(無害化、無毒化)を行う関数を作成。連想配列のキーはarray_map()関数でのサニタイズは無理。

ファイル変更だけ!ECCUBEの本番から開発環境をコピーする手順を解説

ECCUBEを本番から開発環境をコピーする際の手順を解説。PGMメンテに必要な開発環境を構築する手順を解説。ECCUBEの仕組みは簡単なので作業は5分ほど。

include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由

include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。

指定した数で文字列を丸める関数substr、mb_substr、mb_strimwidthの違い
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い

文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。

JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()

JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。

CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説

CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。

Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace

ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。

Smartyのテンプレート内の処理で計算、加工をする方法

Smartyのテンプレート上で変数を計算する、加工する方法を解説します。