※実際にWordPressなど複雑なプログラムを設置し、問題ないかを確認する。
複数人で作業することを想定して、所有者と権限を調整する。
また、FTPソフトで作成したファイルとApache(PHP)で作成したファイルを、相互に編集できるようにする。
■変更前の挙動
username1(FTPソフト)が作成したファイルは以下となる。
所有者 ... username1:username1
権限 ... 644
username1(FTPソフト)が作成したディレクトリは以下となる。
所有者 ... username1:username1
権限 ... 755
username2(FTPソフト)が作成したファイルは以下となる。
所有者 ... username2:username2
権限 ... 644
username2(FTPソフト)が作成したディレクトリは以下となる。
所有者 ... username2:username2
権限 ... 755
Apache(PHP)が作成したファイルは以下となる。
所有者 ... apache:apache
権限 ... 644
Apache(PHP)が作成したディレクトリは以下となる。
所有者 ... apache:apache
権限 ... 755(作成時に指定する)
■変更後の挙動
username1(FTPソフト)が作成したファイルは以下となる。
所有者 ... username1:apache
権限 ... 664
username1(FTPソフト)が作成したディレクトリは以下となる。
所有者 ... username1:apache
権限 ... 775
username2(FTPソフト)が作成したファイルは以下となる。
所有者 ... username2:apache
権限 ... 664
username2(FTPソフト)が作成したディレクトリは以下となる。
所有者 ... username2:apache
権限 ... 775
Apache(PHP)が作成したファイルは以下となる。
所有者 ... apache:apache
権限 ... 664
Apache(PHP)が作成したディレクトリは以下となる。
所有者 ... apache:apache
権限 ... 775(作成時に指定する)
■具体的な設定
FTPソフトで作成する際の、ファイルの権限を変更する。
(VSFTPDの設定ファイルを編集する。)
# vi /etc/vsftpd/vsftpd.conf
local_umask=022
↓
local_umask=002
# systemctl restart vsftpd
Apache(PHP)で作成する際の、ファイルの権限を変更する。
(ファイルを新規に作成し、umaskの設定を記述する。)
# vi /etc/systemd/system/httpd.service
.include /lib/systemd/system/httpd.service
[Service]
UMask=002
# systemctl --system daemon-reload
# systemctl restart httpd
ディレクトリにsetgidを設定し、上位ディレクトリのグループを引き継ぐようにする。
# chmod g+s /var/www
# chmod g+s /var/www/html
これで「変更後の挙動」になる。
ただ、例えばFTP経由でディレクトリを作成し、パーミッションの変更画面を開き、何も変更せずにOKとすると。
drwxrwsr-x
↓
drwxrwxr-x
のようにパーミッションが変更されてしまう。(「s」が無くなる。)
問題になることは少ないかもしれないが、良い解決方法があるか引き続き確認したい。