アメリカは3連休で今日から仕事始まりなんですよね?昨日メモリアルデーだったということで。
昨日の私は何の日だったんだろう。
……燃えるゴミの日。
ファイル作成時のパーミッション
WordPressを使ってみて、今までに何度かパーミッションで悩まされていますが、こう思ったことはありませんか?自分で何も設定してない時のデフォルトのパーミッションって何なの?
私は思いました。なので今回それについて書いてみます。WordPress関連のファイルが入っているディレクトリを見てみた場合。
[username html]$ ls -l total 184 -rw-r--r-- 1 apache apache 395 Feb 22 14:31 index.php -rw-r--r-- 1 apache apache 19929 Feb 22 14:31 license.txt -rw-r--r-- 1 apache apache 13270 Feb 22 14:31 readme.html -rw-r--r-- 1 apache apache 3316 Feb 22 14:31 readme-ja.html -rw-r--r-- 1 apache apache 4663 Feb 22 14:31 wp-activate.php drwxr-xr-x 9 apache apache 4096 Feb 22 14:31 wp-admin -rw-r--r-- 1 apache apache 271 Feb 22 14:31 wp-blog-header.php -rw-r--r-- 1 apache apache 3522 Feb 22 14:31 wp-comments-post.php -rw-r----- 1 apache apache 4566 Feb 24 19:09 wp-config.php -rw-r--r-- 1 apache apache 4289 Feb 22 14:31 wp-config-sample.php drwxr-xr-x 8 apache apache 4096 May 24 13:09 wp-content -rw-r--r-- 1 apache apache 2718 Feb 22 14:31 wp-cron.php drwxr-xr-x 9 apache apache 4096 Feb 22 14:31 wp-includes -rw-r--r-- 1 apache apache 1997 Feb 22 14:31 wp-links-opml.php -rw-r--r-- 1 apache apache 2408 Feb 22 14:31 wp-load.php -rw-r--r-- 1 apache apache 29310 Feb 22 14:31 wp-login.php -rw-r--r-- 1 apache apache 7723 Feb 22 14:31 wp-mail.php -rw-r--r-- 1 apache apache 9899 Feb 22 14:31 wp-settings.php -rw-r--r-- 1 apache apache 18219 Feb 22 14:31 wp-signup.php -rw-r--r-- 1 apache apache 3700 Feb 22 14:31 wp-trackback.php -rw-r--r-- 1 apache apache 2719 Feb 22 14:31 xmlrpc.php全てのファイルは「-rw-r–r–(644)」、ディレクトリは「drwxr-xr-x(755)」になっています。
ちょっとまた昔作ったパーミッションの図出してくるけど
↑見方はこれを参照してね。
それでなぜこういう値になるのかというと、あらかじめ設定されている「umask値」というものが関係しているそうです。
umask
umask(User Mask)は簡単に言ってしまえば「許可したくない」値。ファイルの場合は「-rw-rw-rw-(666)」、ディレクトリの場合は「drwxrwxrwx(777)」から許可したくない値(umask値)を引いたものがパーミッションとなっています。
rootのumask値を確認してみました。
$ su Password: # umask 00221番左の桁は特殊なパーミッションのためのものなのでとりあえず気にしなくていいようで、この場合umask値は022になります。
umask値を引いた値がパーミッションになるので、所有者がrootで作成されたファイルは「666-022=644」、ディレクトリは「777-022=755」になります。
所有者がapacheになっているWordPress関連のファイルも同じパーミッションなので、apacheのumask値も022ってことになりますね。
umask値を変更してみる
失敗して何かあったら恐いので(笑)、WordPressと関係ないところで実験してみます。普段FTPソフトでログインしている一般ユーザーのumask値を確認してみると
$ umask 0002002だそうです。新規にファイル(ファイル名:file1)やディレクトリ(ディレクトリ名:dir1)を作成して確認してみます。
$ touch file1 $ mkdir dir1 $ ls -l total 56 drwxrwxr-x 2 username username 4096 May 27 14:19 dir1 -rw-rw-r-- 1 username username 0 May 27 14:19 file1file1は「-rw-rw-r–(664)」、dir1は「drwxrwxr-x(775)」。それぞれ002が引かれているので合っていますね。
じゃあこのumask値をrootと同じ022に変更してみます。umaskと打った後に指定したい値を入力すればOK。
$ umask 022これで値が変わったので、新規にfile2とdir2を作成してみます。
$ touch file2 $ mkdir dir2 $ ls -l total 60 drwxrwxr-x 2 username username 4096 May 27 14:19 dir1 drwxr-xr-x 2 username username 4096 May 27 14:22 dir2 -rw-rw-r-- 1 username username 0 May 27 14:19 file1 -rw-r--r-- 1 username username 0 May 27 14:22 file2file2は「-rw-r–r–(644)」、dir2は「drwxr-xr-x(755)」になりました!
apacheのumask値を変更する場合はhttpdを編集する
今回は一般ユーザーのホームディレクトリでちょこっと実験しただけですが、WordPress関連ファイルの所有者であるapacheのumask値を変更するのは上記方法ではできません。apacheユーザーでログインできるように設定していないですし。apacheのumask値の確認はfunctionsでできました。
# vi /etc/rc.d/init.d/functionsこのファイルの9行目
# Make sure umask is sane umask 022ただしfunctionsは沢山の関数が定義されている大元のファイルなので、ここを直接編集するのは危険だそうです。シェルを勉強していない私にはうまく説明できませんが、「/etc/sysconfig/httpd」ファイルに追記することで変更が可能になるようです。
ここから先はネット上を調べて回った&社内の人に聞いたメモ!実際に私は実験していません。今のところapacheのデフォルトパーミッションを変更しなければいけないような状況にはなっていないし、今の私にはまだちょっと失敗が恐いのでここはスルーさせて…w
# echo "umask 002" >> /etc/sysconfig/httpd # /etc/init.d/httpd restartumaskを002に変更したい時のコマンド。
「>>」は追加の意味になり、”"間のワードがファイルの最後の行に追記されます。1個だけの「>」だとファイル内の全てが”"間のワードに置き換わっちゃうので注意!
全てのサーバーがこの方法で対処できるとは限らないと思いますし、他の方法もあるかもしれません。ここは1つの方法として参考程度に留めていただければ。
——————–
毎回トップ画像に悩んでます。
マスクを描こうとした→口用マスクは風邪っぽい→顔全体を覆う仮面だとアノ○マスっぽい→アイマスクだと昼寝っぽい→んじゃマスカレードマスクで。
マスカレードマスクとか初めて描いたわ…イラレ難しー。