私が実行している小さなbashスクリプトで、作成された新しいディレクトリを変更しようとしています。私は追加しました:
sudo chown $USER:$USER /var/www/$sitename
sudo chmod 775 /var/www/$sitename
mkdir(sudo mkdir /var/www/$sitename
)の行の後。
何らかの理由で、chownが実行されていません。手動で実行できますが、ファイルに書き込んでも動作しません。「chown」が「mkdir」および「chmod」と同じ色で強調表示されていないことに気付きましたが、問題を理解できません。
ここでchownが機能しないのはなぜですか?
それは問題$USER:$USER
ですか?
編集これ が完全なスクリプトです。root以外のユーザーがスクリプトを実行した場合、どのようにファイルを変更しますか?
#!/bin/sh
#!/bin/bash
# New Site
cd /etc/apache2/sites-available/
echo "New site name (test.my):"
read sitename
echo "<VirtualHost *:80>
ServerAdmin admin@$sitename
ServerName $sitename
ServerAlias $sitename
DocumentRoot /var/www/$sitename
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/$sitename>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>" > $sitename.conf
sudo mkdir /var/www/$sitename
sudo chown $USER:$USER /var/www/$sitename
echo USER is $USER
sudo chmod 775 /var/www/$sitename
sudo a2ensite $sitename.conf
sudo apachectl restart
echo "New site created"
$USER
変数は対話型ログイン中に設定されます。ログインセッションから、またはcronを使用して、またはデーモンからスクリプトをどのように実行しますか?
echo USER is $USER
、何が出力されますか?
USER is root
。私が行った編集で、root以外のユーザーがスクリプトを実行するようにファイルを変更する方法を説明できると思いますか?
getent group $USER