
現在、私は小さな Ubuntu Server 12.04 マシン (テスト環境) を所有しており、約 3 人の非ルート ユーザーを作成しています。各ユーザーにpublic_html
は、自分のディレクトリが与えられますhome
。これにより、複数のアプリを名前付き仮想ホストとして展開できます。各ユーザーは、次のように設定された Apache グループに属しますwww-data
。
sudo usermod -a -G www-data [username]
sudo chown -R [username]:www-data /home/[username]/public_html
sudo chmod 2750 /home/[username]/public_html
現在、ルート ユーザーとして、プロンプトの表示されたユーザーの の下に VirtualHost のフォルダーを自動的に作成しpublic_html
、 に関連付けられたエントリを作成する bash スクリプトを作成中です/etc/apache2/sites-available/
。 スクリプト ( で実行) は、ユーザー ( ) と目的の仮想ホスト名 ( )sudo
の入力を要求します。 これまで、いくつかのチェックを実行した後、最終的に次のようになります...$uzer
$vhost
mkdir -vp /home/$uzer/public_html/$vhost
mkdir -vp /home/$uzer/public_html/$vhost/www
mkdir -vp /home/$uzer/public_html/$vhost/logs
mkdir -vp /home/$uzer/public_html/$vhost/backups
新しく作成したフォルダーの所有権を変更する必要があるため、次の操作を実行する必要があるかどうかわかりません。
chown -vR $uzer:www-data /home/$uzer/public_html/$vhost
chmod 2750 /home/$uzer/public_html/$vhost
私の質問:
- 私のフォルダ構造は正しいですか/理想的ですか?
- 再帰 ( ) オプションを使用したことはわかっていますが、、およびについても
-R
同じことを繰り返す必要がありますか?$vhost/www
$vhost/logs
$vhost/backups
- 上記の chmod はおそらく冗長であると考えるのは正しいでしょうか?
mkdir
ユーザーとしてコマンドを実行する方法はありますか$uzer
?
答え1
Q: フォルダ構造は正しいですか/理想的ですか?
A: フォルダ構造は問題ないようです。
Q: 再帰 (-R) オプションを使用したことはわかっていますが、$vhost/www、$vhost/logs、$vhost/backups でも同じことを繰り返す必要がありますか?
A: これらのディレクトリで実行するのは冗長です
Q: 上記の chmod はおそらく冗長であると考えるのは正しいでしょうか?
はい、技術的には冗長です。ディレクトリを作成する最初の sudo は「グループ ID ビットの設定」を設定していますが、そのビット (2750 の 2) を設定することは保証されません。ユーザーがファイルをディレクトリに移動したり、誤ってファイルのグループを変更したりして、このビットがオンになっているディレクトリを見たことがあるため、そのままにしておきます。
ユーザー $uzer として mkdir コマンドを実行する方法はありますか?
root$ su -u $user -c "mkdir ..."
また、スイッチを使用すると、/www、/log、および /backups の chmod の手順を省略できますmkdir --mode=...
。
例えば
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/www
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/logs
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/backups
答え2
- 実際のところ、どのようなフォルダー構造を使用しているかは問題ではありません。
- chown でオプションを使用している場合
-R
、コマンドを実行している時点で存在するファイルとディレクトリにのみ影響します。 chmod
いいえ。手動で変更を行う場合は、常にコマンドを使用して権限を変更する必要があるためです。/etc/sudoers
コマンドを使用して、$user が任意のディレクトリを作成できるように file に要求できますmkdir
。