Ubuntu系LinuxにapacheやnginxといったWebサーバをパッケージ管理システムでインストールすると、通常は
/var/www
がホームディレクトリとなります。
コンテンツ系を/var
に余り入れたくないという好みの問題があるため、ここを変えていきます。
通常、www-dataは/usr/sbin/nologin
となっているためシェルでログインはできませんが、rubyでbundle install
を行う際にホームディレクトリを参照するケースがあるため、この措置を執ります。
さっくりとした手順
- 新たなホームディレクトリを作成して設定します。
- /etc/passwdファイルを書き換えます。
ディレクトリの作成と設定
- ディレクトリ作成
sudo mkdir -p /home/www-data
運用に合わせます。
- ディレクトリの所有者変更
sudo chown -R www-data:www-data /home/www-data
- 設定確認
ls -ld /home/www-data
所有者がwww-dataになっていることを確認します。
passwdファイルの書き換え
※システム全体のアカウントを制御する重要なファイルです。取り扱いは慎重に行ってください。※
- バックアップ作成
sudo cp -pi /etc/passwd /path/to/backup/directory/passwd.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- バックアップ作成確認
diff -u /path/to/backup/directory/passwd.$(date +%Y%m%d) /etc/passwd
エラーがなければバックアップは成功です。
- ファイル書き換え
sudo sed -i 's|/var/www|/home/www-data|' /etc/passwd
- 書き換え確認
diff -u /path/to/backup/directory/passwd.$(date +%Y%m%d) /etc/passwd
以下の差分を確認します。
-www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
+www-data:x:33:33:www-data:/home/www-data:/usr/sbin/nologin
差分がこの2つだけであることを確認できたら設定完了です。