In einem kleinen Bash-Skript, das ich ausführe, versuche ich, ein neues Verzeichnis zu erstellen, das erstellt wird. Ich habe hinzugefügt:
sudo chown $USER:$USER /var/www/$sitename
sudo chmod 775 /var/www/$sitename
nach der Zeile, in der ich mkdir ( sudo mkdir /var/www/$sitename
).
Aus irgendeinem Grund wird das Chown nicht ausgeführt. Ich kann es manuell ausführen, aber wenn es in die Datei geschrieben wird, funktioniert es nicht. Ich habe festgestellt, dass "chown" nicht in der gleichen Farbe wie "mkdir" und "chmod" hervorgehoben ist, aber ich kann mein Problem nicht herausfinden.
Warum funktioniert Chown hier nicht?
Ist es ein Problem mit $USER:$USER
?
BEARBEITEN Hier ist das vollständige Skript. Wie würde ich die Datei an den Nicht-Root-Benutzer weiterleiten, der das Skript ausgeführt hat?
#!/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
Die Variable wird während der interaktiven Anmeldung festgelegt. Wie führen Sie Ihr Skript aus - von der Anmeldesitzung oder mit cron oder vom Daemon?
echo USER is $USER
, was wird gedruckt?
USER is root
. Glauben Sie, dass Sie mit der von mir vorgenommenen Bearbeitung erklären können, wie die Datei an den Benutzer weitergeleitet wird, der das Skript ausführt?
getent group $USER