Dans un petit script bash que j'exécute, j'essaie de visualiser un nouveau répertoire créé. J'ai ajouté:
sudo chown $USER:$USER /var/www/$sitename
sudo chmod 775 /var/www/$sitename
après la ligne où je mkdir ( sudo mkdir /var/www/$sitename
).
Pour une raison quelconque, le chown n'est pas en cours d'exécution. Je peux l'exécuter manuellement mais lorsqu'il est écrit dans le fichier, cela ne fonctionne pas. J'ai remarqué que "chown" n'est pas surligné de la même couleur que "mkdir" et "chmod" mais je n'arrive pas à comprendre mon problème.
Pourquoi chown ne fonctionne-t-il pas ici?
Est-ce un problème avec $USER:$USER
?
EDIT Voici le script complet. Comment pourrais-je chown le fichier à n'importe quel utilisateur non root a exécuté le script?
#!/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
est définie lors de la connexion interactive. Comment exécutez-vous votre script - à partir de la session de connexion ou en utilisant cron ou à partir du démon?
echo USER is $USER
, qu'est-ce que cela imprime?
USER is root
. Avec la modification que j'ai effectuée, pensez-vous pouvoir expliquer comment chowner le fichier à l'utilisateur non root qui exécute le script?
getent group $USER