작은 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
있습니까?
편집 여기에 전체 스크립트가 있습니다. 루트가 아닌 사용자가 스크립트를 실행 한 파일을 어떻게 chown합니까?
#!/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
. 내가 편집 한 내용으로 루트가 아닌 사용자가 스크립트를 실행하는 사람에게 파일을 숨기는 방법을 설명 할 수 있다고 생각하십니까?
getent group $USER