私のUbuntuサーバーには2つのユーザーアカウントがあります。 1 つは sudo グループの一部で、もう 1 つは標準ユーザーです。デモ目的で次のユーザー名を使用します。
- admin_user(sudoグループ権限)
- Standard_user(管理者権限なし)
にあるWordPressをホストするようにサーバーを設定しています/var/www/example.com
。サーバーへのFTPアクセスを許可するようにVSFTPDとSFTPも設定し、各ユーザーは現在ホームディレクトリにルートを設定しています。このガイドに従ってくださいここ、WordPressでは、FTPアクセスに別のアカウントを使用し、サーバープロセス自体(NGINXまたはApache)を実行するには、別のアカウントを使用することをお勧めします。
「通常、すべてのファイルはWebサーバーのユーザー(ftp)アカウントによって所有されている必要があり、そのアカウントで書き込み可能である必要があります。なし)WordPress書き込み権限を必要とするすべてのファイルは、WordPressが使用するユーザーアカウントが所有する必要があります(サーバーアカウントとは異なる可能性があります)。別のユーザーグループで実行できます。WordPressがFTPアカウントで実行されている場合は、そのアカウントに書き込み権限が必要です。つまり、ファイルの所有者でなければなりません。フォルダの場合は755、フォルダの場合は664の代わりに775)。
次のコマンドを実行すると、sudo apachectl -S
Apache2が実行されていることがわかります。
User: name="www-data" id=33
Group: name="www-data" id=33
sudo ps -aux | egrep apache2 '(httpd|apache2|apache)'
これも確認されました。
これを念頭に置いて、次のコマンドを実行してWebルートの所有者とグループを変更しました。
sudo chown -R admin_user:www-data /var/www/example.com
WordPress強化ガイドで「ファイル権限の変更」をご覧ください。ここ次のコマンドを実行しました。
find /var/www/example.com/ -type d -exec chmod 755 {} \;
find /var/www/example.com/ -type f -exec chmod 644 {} \;
FTP/SFTP経由で管理者としてログインすると、削除、新規ファイルの作成、権限の変更が可能です。ファイル/ディレクトリの所有者だけが権限を変更できます。これがUnix権限がどのように機能するかです。一般的な状況では、FTPを介してサーバーを管理するユーザーは1人だけで、これは完全に機能します。ただし、標準ユーザーもWebルートのファイル/ディレクトリを削除して書き込みできることを願っています。 www-dataグループ(apache2プロセスが実行されているのと同じグループ)にStandard_userを追加し、そのグループによりオープンな権限セットを付与するのは安全で十分であると思いますか?
sudo usermod -a -G www-data standard_user
find /var/www/example.com/ -type d -exec chmod 775 {} \;
find /var/www/example.com/ -type f -exec chmod 664 {} \;
次に、特定のファイルに対する権限を設定します。
sudo chmod 440 /var/www/example.com/wp-config.php
sudo chmod 664 /var/www/example.com/.htaccess
追加の質問として、Webルートの所有者をroot
ユーザーアカウントに設定し、グループの横に追加のadmin_user
アカウントを追加することは安全であると考えられますか?www-data
standard_user
sudo usermod -a -G www-data admin_user
sudo chown -R root:www-data /var/www/example.com
アップデート1
上記のように設定された権限でWebブラウザを通じてWordPressテーマをアップロードしようとしましたが、WordPressがすぐにFTP接続を要求して権限の問題が現れました。インターネットでちょっと読んでみると、以下のように所有者とグループを設定してファイルにwww-data
挿入するよう指示があるようです。define('FS_METHOD', 'direct');
wp-config.php
これガイドのような。しかし、これは安全と見なされますか?