W małym skrypcie bash, który uruchamiam, próbuję utworzyć nowy katalog, który jest tworzony. Dodałem:
sudo chown $USER:$USER /var/www/$sitename
sudo chmod 775 /var/www/$sitename
po wierszu, w którym I mkdir ( sudo mkdir /var/www/$sitename
).
Z jakiegoś powodu chown nie wykonuje się. Mogę go wykonać ręcznie, ale po zapisaniu w pliku nie działa. Zauważyłem, że „chown” nie jest podświetlony w tym samym kolorze co „mkdir” i „chmod”, ale nie mogę zrozumieć mojego problemu.
Dlaczego chown tu nie działa?
Czy to problem $USER:$USER
?
EDYCJA Oto pełny skrypt. Jak przełączyć plik na użytkownika, który nie wykonał roota?
#!/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
Zmienna jest ustawiana podczas logowania interaktywnego. Jak uruchomić skrypt - z sesji logowania lub przy użyciu crona lub demona?
echo USER is $USER
: co wydrukuje?
USER is root
. Czy wprowadzając dokonaną przez Ciebie edycję myślisz, że możesz wyjaśnić, w jaki sposób przeglądać plik komukolwiek, kto nie jest rootem, który wykonuje skrypt?
getent group $USER