วิธีทำให้ Apache ทำงานเป็นผู้ใช้ปัจจุบัน


43

ฉันคิดว่าสำหรับเครื่องพัฒนามันสะดวกกว่าที่จะเรียกใช้ Apache ในฐานะผู้ใช้ปัจจุบันเพื่อลดความยุ่งยากของสิทธิ์ ฉันจะทำอย่างไร ฉันคิดว่ามัน suexec แต่ฉันจะกำหนดค่าใน Ubuntu + Apache ได้อย่างไร

คำตอบ:


28

ฉันจะเพิ่มผู้ใช้ในwww-dataกลุ่มด้วย ...

sudo adduser {username} www-data

ง่ายและมีประสิทธิภาพ ไม่ยุ่งกับไฟล์ปรับแต่งหรือการอนุญาต


6
ฉันทำมันตลอดเวลา แต่สิ่งนี้จะไม่แก้ไขปัญหาการปฏิเสธสิทธิ์บางประการเนื่องจากสิทธิ์ของกลุ่มจะไม่เหมือนกับสิทธิ์ของผู้ใช้สำหรับไฟล์ทั้งหมด
Kostanos

1
สิ่งนี้จะไม่แก้ไขหาก CHMOD ไม่อนุญาตให้กลุ่มเขียน
GusDeCooL

ปัญหาสำหรับฉันคือฉันมีการติดตั้งในเครื่อง เมื่อฉันสร้างไฟล์ด้วย IDE ของฉันพวกเขามี 'ผู้ใช้ / กลุ่ม' ของฉันและบางครั้ง apache ไม่สามารถอ่านไฟล์เหล่านั้นได้
Postadelmaga

สิ่งนี้เพียงอย่างเดียวไม่สามารถแก้ไขปัญหาการอนุญาตได้มากเนื่องจากกลุ่มหลักของคุณไม่ใช่ข้อมูล www และแอปพลิเคชัน php บางตัวต้องมีสิทธิ์ในการเขียนแบบกลุ่ม (joomla, wordpress)
Eric

2
นี่ไม่ได้แก้ปัญหาที่คุณสร้างไฟล์และ www-data ไม่สามารถลบ / แก้ไขได้เพราะกลุ่มหลักของคุณไม่ใช่ www-data
billy

56

แก้ไขไฟล์ต่อไปนี้เป็น root: / etc / apache2 / envvars

ใช้คำสั่ง:

sudo nano /etc/apache2/envvars

เปลี่ยนผู้ใช้และกลุ่มเป็นตัวคุณเองหากมีผู้ใช้เพียงคนเดียวและคุณจะไม่มีปัญหาสิทธิ์อีกต่อไป

IE หากคุณลงชื่อเข้าใช้และใช้งานเซิร์ฟเวอร์ในฐานะผู้ใช้ 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

เฮ้สำหรับเรื่องที่คุณสามารถเปลี่ยนผู้ใช้ที่เป็นผู้ใช้ปัจจุบันฉันแน่ใจว่าอย่างใด จากนั้นติดตั้ง user_dir ให้คุณทุกคนมีเว็บเท่านั้นที่คุณสามารถควบคุมได้อย่างสมบูรณ์

รีสตาร์ทเซิร์ฟเวอร์ (หากไม่แน่ใจเพียงรีบูทหรือ goole) และคุณพร้อมที่จะไป


3
มันใช้งานได้เป็นเสน่ห์! ขอขอบคุณ. เพียงฉันจะเพิ่ม:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos

3
คุณอาจต้องใช้ด้วยเช่นกันsudo chown big_dog.big_dog -R /var/log/apache2
Kostanos

ใน OpenSUSE-Tumbleweed (และอื่น ๆ ) ไฟล์อยู่ที่/etc/apache2/uid.conf
Dilawar

คุณไม่จำเป็นต้องเปลี่ยนไฟล์ envvars ฉันแค่อัพเดตตัวแปรสภาพแวดล้อมก่อนเริ่ม Apache ด้วยสคริปต์ ด้วยวิธีนี้คุณไม่ได้ล็อคผู้ใช้คนเดียว แต่ใครเคยเรียกใช้สคริปต์เรียกใช้ apache ฉันเคยexport APACHE_RUN_USER=#$(id -u)ให้รหัสผู้ใช้และใช้id -gในกลุ่มในสคริปต์และในตอนท้ายฉันเรียก apache ให้ทำงาน
inblueswithu

1

ทำไมคุณจะทำเช่นนี้ฉันกำลังดิ้นรนกับปัญหาใบอนุญาตที่ผ่านมา แต่นี่คือกระบวนการ dev ของฉันตั้งแต่วันนี้:

  • ติดตั้งกล่อง linux ใหม่ (เสมือนหรือในพื้นที่เช่นแล็ปท็อป)
  • เรียกใช้sudo apt-get install lamp-server^proc มาตรฐานเพื่อรับหลอด
  • ทำให้ sym เชื่อมโยงไปยัง dir บ้านของฉันที่โครงการเป็นเช่นนี้:

    ln -s /home/user/html /var/www/html

  • ทำลิงค์ sym ไปยังไฟล์ config ของโฮสต์

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

แค่นั้นแหละ :)

มันทำงานเป็น aspected ไม่มีปัญหากับ perms ผู้ใช้หรือสิ่งที่คล้ายกับเซิร์ฟเวอร์ apache สำหรับ mysql ฉันมีกระบวนการอีกต่อไปเล็กน้อย ..

hth ไชโย


ซึ่งไม่ได้แก้ไขปัญหาการอนุญาตใด ๆ ที่ระบุไว้ในคำตอบอื่น ๆ ส่วนใหญ่
HörmannHH

0

ด้วยการแก้ไขปัญหา "คุณควรทำสิ่งนี้" คุณสามารถค้นหาตำแหน่งที่ผู้ใช้งาน Apache ตั้งค่าไว้โดยการเรียกใช้:

grep www- /etc/apache2/apache2.conf

เป็นกรณีของการแก้ไขอินสแตนซ์เหล่านั้นใน/etc/apache2/apache2.confและโหลด Apache ( sudo /etc/init.d/apache2 reload) อีกครั้ง


apache2.confไม่มีwww-สำหรับฉัน
Jiew Meng

grep -HR "www-" /etc/apache2/ฉันมีความรู้สึกคุณหมายถึงสิ่งที่ต้องการ หากคุณรู้อยู่แล้วว่าอยู่ใน apache2.conf ให้แก้ไขไฟล์นั้น ในกรณีของฉันมันไม่ได้มี แต่ใน / etc / apache2 / envvars ตามที่คำตอบของ Eric ชี้
Mike

นั่นเป็นเพราะapache.confรูปลักษณ์สำหรับและ${APACHE_RUN_USER} ${APACHE_RUN_GROUP}ไม่ได้www-dataโดยตรง
Yahya Uddin

0

สร้างกลุ่มผู้ใช้ใหม่webdevและเพิ่มwww-dataผู้ใช้เข้าไป

sudo addgroup webdev
sudo adduser www-data webdev

จากนั้นไปข้างหน้าและเพิ่มผู้ใช้ของคุณในกลุ่มนั้นและทำให้เป็นกลุ่มเริ่มต้นสำหรับผู้ใช้เล็กน้อย

sudo adduser {your-user} webdev
sudo addgroup webdev

สิ่งสุดท้ายที่ต้องทำคือการทำให้แน่ใจว่ากลุ่ม webdev มีสิทธิ์ rwx ในไฟล์

sudo chmod 775 -R /path/to/project

ตอนนี้สิ่งเดียวที่สามารถเกิดขึ้นได้คือสำหรับ www-data จะสร้างไฟล์บันทึกใหม่และคุณไม่สามารถ rwx ได้


1
อะไรคือข้อดีของสิ่งนี้มากกว่าแค่การเพิ่มผู้ใช้ของฉันเองในwww-dataกลุ่มโดยเฉพาะอย่างยิ่งเมื่อเราพูดถึงสภาพแวดล้อมการพัฒนา?
ด่าน

ถ้าคุณทำเช่นนี้และตั้งค่าสิทธิ์ 775 เป็น public_html หรือ / var / www คุณจะไม่มีปัญหากับสิทธิ์ในเครื่อง dev ของคุณ aproaches อื่น ๆ ปล่อยให้คุณทำตามขั้นตอนเพิ่มเติมเพื่อทำหรือไม่มีประสิทธิภาพเท่าที่ฉันไม่ต้องการ ดังนั้นในความคิดของฉันนี่เป็นวิธีที่ดีที่สุดในการจัดการกับเครื่อง dev สำหรับเซิร์ฟเวอร์ที่มีประสิทธิผลฉันจะแนะนำการตั้งค่าอื่น ด้วย aproach นี้คุณสามารถเพิ่มผู้ใช้ได้อย่างง่ายดาย
โทมัส Venturini
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.