एक छोटी सी मारपीट स्क्रिप्ट में मैं चला रहा हूं जो एक नई निर्देशिका बनाने का प्रयास कर रहा है। मैंने जोड़ लिया है:
sudo chown $USER:$USER /var/www/$sitename
sudo chmod 775 /var/www/$sitename
लाइन के बाद जहां मैं mkdir ( sudo mkdir /var/www/$sitename
)।
किसी कारणवश चांस नहीं चल रहा है। मैं इसे मैन्युअल रूप से निष्पादित कर सकता हूं लेकिन जब फ़ाइल में लिखा जाता है तो यह काम नहीं करता है। मैंने देखा है कि "चॉक" को "mkdir" और "chmod" के समान रंग में हाइलाइट नहीं किया गया है, लेकिन मैं अपनी समस्या का पता नहीं लगा सकता।
यहाँ काम क्यों नहीं करता है?
क्या यह एक मुद्दा है $USER:$USER
?
EDIT यहाँ पूरी स्क्रिप्ट है। जो भी नॉन रूट यूजर स्क्रिप्ट निष्पादित करेगा, मैं फाइल को कैसे चाउंगा?
#!/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
चर इंटरैक्टिव लॉगिन के दौरान सेट किया गया है। आप अपनी स्क्रिप्ट कैसे चलाते हैं - लॉगिन सत्र से या क्रोन से या डेमन से?
echo USER is $USER
, यह क्या प्रिंट करता है?
USER is root
। आपके द्वारा किए गए संपादन से आपको लगता है कि आप समझा सकते हैं कि गैर-रूट उपयोगकर्ता को स्क्रिप्ट को निष्पादित करने के लिए फ़ाइल को कैसे चेंज करना है?
getent group $USER