ในสคริปต์ทุบตีเล็ก ๆ ที่ฉันใช้ฉันพยายามที่จะ chown ไดเรกทอรีใหม่ที่สร้างขึ้น ฉันได้เพิ่ม:
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 หรือจาก daemon?
echo USER is $USER
ว่าจะพิมพ์ออกมาเป็นอย่างไร
USER is root
เห็นได้ชัดว่า ด้วยการแก้ไขที่ฉันทำคุณคิดว่าคุณสามารถอธิบายวิธีการ chown ไฟล์ที่ผู้ใช้ที่ไม่ใช่รูทรันสคริปต์หรือไม่?
getent group $USER