แก้ไขสิทธิ์สำหรับ / var / www และ wordpress


41

ฉันได้ตั้งค่าเซิร์ฟเวอร์ LAMP แล้วและฉันสามารถเข้าถึงผ่าน SSH และไปที่หน้า "ใช้งานได้" จากเว็บเบราว์เซอร์จากภายในเครือข่ายของฉัน (ผ่านที่อยู่ ip) และจากภายนอกโดยใช้ Dyndns

เรามีโครงการ Wordpress บางส่วนที่อยู่ในไดเรกทอรีย่อยใน / var / www / wordpress1 / var / www / wordpress2 ฯลฯ ฉันไม่สามารถเข้าถึงไดเรกทอรีย่อยเหล่านี้จากเบราว์เซอร์เพื่อตั้งค่า WP - หรือ (ฉันถือว่า) เพื่อดู เนื้อหาบนเบราว์เซอร์ ฉันได้รับข้อผิดพลาดต้องห้าม 403 บนเบราว์เซอร์ของฉัน

ฉันคิดว่านี่เป็นปัญหาสิทธิ์ คุณช่วยบอกการตั้งค่าที่เหมาะสมสำหรับการอนุญาตให้:

  1. อนุญาตให้นักพัฒนาและฉันอ่าน / เขียน
  2. เพื่ออนุญาตให้ WP ติดตั้งและทำสิ่งนั้น
  3. อนุญาตให้ผู้เยี่ยมชมเข้าถึงไซต์ผ่านทางเว็บ

ฉันควรพูดถึงว่าโฟลเดอร์ย่อยนั้นเป็นลิงค์ไปยังโฟลเดอร์ในฮาร์ดดิสก์ภายในอื่น - ฉันไม่คิดว่ามันจะสร้างความแตกต่าง แต่ฉันคิดว่าฉันควรเปิดเผย

total 12
drwxr-xr-x  2 root root 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root root 4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 root root   43 2012-07-11 20:45 admin_media ->     /root/django_src/django/contrib/admin/media
-rw-r--r--  1 root root  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 root root   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 root root   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

นี่คือผลลัพธ์ของการใช้ chown -R www-data:www-data /var/www

total 12
drwxr-xr-x  2 www-data www-data 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root     root     4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 www-data www-data   43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media
-rw-r--r--  1 www-data www-data  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 www-data www-data   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 www-data www-data   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

ฉันยังไม่สามารถเข้าถึงผ่านเบราว์เซอร์


ls -la /var/wwwกรุณาโพสต์ผลของคำสั่งที่
SirCharlo

กรุณาใส่ข้อมูลในคำถามของคุณ!
Jorge Castro

ตกลงจะเอาสองสำหรับผมที่จะจำวิธีการโพสต์รหัส ...
dpbklyn

ตกลงลองดีchown -R www-data:www-data /var/www
SirCharlo

2
ฉันคิดว่าปัญหาของคุณตอนนี้คือคุณกำลังใช้ลิงก์ Apache จะไม่ติดตามลิงก์ สิ่งที่คุณจะทำคือย้ายไฟล์เหล่านั้นไปที่ / var / www และกำหนดค่า apache ให้ใช้ vitrualhosts ดูhelp.ubuntu.com/10.04/serverguide/httpd.htmlสำรองหากคุณต้องการใช้/hdd/web/wordpressจะเป็นการกำหนดค่า Apache (ไดเรกทอรีราก) อย่างถูกต้อง คุณสามารถกำหนดค่า apache ให้ใช้ลิงก์ได้ แต่ฉันไม่แนะนำ ดูเพิ่มเติมhelp.ubuntu.com/community/WordPress
Panther

คำตอบ:


81

ก่อนอื่นคุณควรตรวจสอบให้แน่ใจว่าชื่อผู้ใช้ของคุณรวมอยู่ในwww-dataกลุ่ม ถ้าไม่คุณสามารถเพิ่มชื่อผู้ใช้ของคุณเป็นwww-dataกลุ่ม

sudo adduser $USER www-data

หลังจากนั้นคุณควรเปลี่ยนความเป็นเจ้าของ / var / www เป็นชื่อผู้ใช้ของคุณ

sudo chown $USER:www-data -R /var/www

ขั้นตอนถัดไปสำหรับการปฏิบัติทั่วไปคุณควรเปลี่ยนการอนุญาตเป็น 755 (rwxr-xr-x) ไม่แนะนำให้เปลี่ยนการอนุญาตเป็น 777 เพื่อความปลอดภัย

sudo chmod u=rwX,g=srX,o=rX -R /var/www

เกี่ยวข้องกับการอนุญาตเฉพาะสำหรับwordpressหรือlaravelหรือเฟรมเวิร์กอื่นจากนั้นคุณสามารถอ่านเอกสารตามลำดับ

หวังว่ามันจะช่วย ...


1
ไม่ทำงานสำหรับฉันฉันเพิ่มที่จะใช้sudo chown www-data:www-data -R mywordpressdirectory/
Louis

หลังจากเปลี่ยนความเป็นเจ้าของคุณควรเปลี่ยนสิทธิ์ด้วย คุณเปลี่ยนการอนุญาตเป็น 755 หรือไม่
metamorph

1
chmodที่เขาทำกับ เขาเปลี่ยนการอนุญาตเป็น 755 ด้วยบิตที่เหนียว (เพื่อรักษาไฟล์ใหม่ที่เป็นเจ้าของข้อมูล www)
Zachary Dahan

คำอธิบายที่ดีที่สุดที่ฉันสามารถหาได้สั้นและหวาน ขอบคุณ
Banago

1
ดังนั้นคุณจะไม่สามารถติดตั้ง / ลบปลั๊กอิน / ธีมและอื่น ๆ จากแผงควบคุมได้เนื่องจาก WordPress จะไม่ได้รับอนุญาตให้เขียน
Igor Skoldin

3

เห็นได้ชัดว่านี่คือวิธีที่แนะนำใน Ubuntu Server Guide:

บทที่ 11 เว็บเซิร์ฟเวอร์

1.4 การอนุญาตให้เขียนร่วมกัน

เพื่อให้ผู้ใช้มากกว่าหนึ่งรายสามารถเขียนไปยังไดเรกทอรีเดียวกันได้จำเป็นต้องให้สิทธิ์การเขียนแก่กลุ่มที่พวกเขาแบ่งปันด้วย ตัวอย่างต่อไปนี้ให้สิทธิ์การเขียนร่วมกับ / var / www / html ไปยังกลุ่ม "webmasters"

ผมใช้ข้อมูล www เพียงแทนที่ "ผู้ดูแลเว็บ" ด้วยกลุ่มของคุณให้แน่ใจว่าคุณเพิ่มผู้ใช้ในกลุ่มแน่นอน

sudo chgrp -R webmasters /var/www/html
sudo find /var/www/html -type d -exec chmod g=rwxs "{}" \;
sudo find /var/www/html -type f -exec chmod g=rws "{}" \;

ฉันเพิ่งทดสอบกับ Dreamweaver จากเดสก์ท็อป mac ของฉันและอัปโหลดและแทนที่ไฟล์ที่เพิ่มไฟล์ ฯลฯ และมันยังคงสิทธิ์ที่ถูกต้องโดยมีข้อยกเว้นหนึ่งประการผู้ใช้ภายในเครื่องกลายเป็นเจ้าของไฟล์ใหม่พร้อมกับ www-data แต่ไฟล์ใด ๆ ไดเรกทอรี html ยังคงความเป็นเจ้าของในฐานะรูท แต่สามารถแก้ไขได้โดยผู้ใช้ท้องถิ่น

$ls -l
$-rw-rw-r-- 1 localUser www-data 11505 May 28 09:56 index2.html
$-rw-rwSr-- 1 root  www-data 11535 May 28 09:58 index.html

หวังว่าสิ่งนี้จะช่วยล้างสิ่งต่างๆและช่วยให้ผู้ที่เหนื่อยล้าทำให้ฉันรู้ว่าฉันเบื่อหน่ายกับสถานการณ์นี้อยู่เสมอ แต่ตอนนี้มันชัดเจนสำหรับฉันแล้ว

โอ้และฉันขอแนะนำให้ใช้ sftp พร้อมปุ่มเพื่อเข้าถึง ftp ของคุณใช้งานได้ดีสำหรับฉันและไม่จำเป็นต้องใช้ PureFTP หรือวิธีการที่ไม่ปลอดภัยอื่น ๆ ในการส่งไฟล์ไปยังเว็บไซต์ มีบทเรียนเล็กน้อยเกี่ยวกับการรักษาความปลอดภัยเซิร์ฟเวอร์ของคุณด้วยปุ่ม ssh:

วิธีกำหนดค่าการรับรองความถูกต้องโดยใช้คีย์ SSH บนเซิร์ฟเวอร์ Linux


1) ที่ปล่อยบิต setgid บนไฟล์ ดูเหมือนแปลกไม่ทำอะไรเลยเปิดประตูสู่ปัญหาด้านความปลอดภัยหากผู้ใช้สามารถทำให้ไฟล์ปฏิบัติการและเรียกใช้พวกเขา แต่ถ้าคุณมีความสุขอยู่กับ setgid ไฟล์แทนที่ซับซ้อนfinds sudo chmod -R g=srwX /var/www/htmlมีเพียง
temoto

2) find -exec chmodจะวางไข่โปรแกรมแยกต่างหากสำหรับแต่ละไฟล์ซึ่งใช้เวลานานและทำให้เกิดแรงกดดันต่อระบบหากคุณมีไฟล์จำนวนมาก sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rwการแก้ไข: xargs chmodจะพยายามที่จะกินเป็นเส้นทางไฟล์จำนวนมากที่สุดเท่าที่จะเช่นเดียวของ
temoto

0

ตรวจสอบว่ามีการดำเนินการ Apache สิทธิและ/hdd/web/media/hdd/web/wordpress

วิ่ง:

chmod o+x /root /root/site /root/site/about

นอกจากนี้ Apache จะต้องมีการกำหนดค่าเพื่อให้สามารถเข้าถึงไดเรกทอรีในระบบไฟล์ สิ่งนี้จะต้องทำโดยผู้ดูแลระบบโดยการแทรกคำสั่งในไฟล์กำหนดค่า apache (httpd.conf)

เนื่องจากไดเรกทอรีจริงอยู่ในเว็บรูทจึงต้องสามารถเข้าถึงได้ แต่ FollowSymLinks อาจไม่ได้เปิดใช้งานสำหรับไดเรกทอรี - สิ่งนี้จะต้องถูกเพิ่มไปยังคำสั่งด้วย

ดูhttp://httpd.apache.org/docs/2.0/mod/core.html#directory


ขอบคุณทุกคน ... ฉันตัดสินใจที่จะไปกับเส้นทางที่มีความต้านทานน้อยที่สุด ... ลบ symlink ออก ทำงานได้อย่างสมบูรณ์แบบ
dpbklyn

0

การอ่านคู่มือแนะนำการติดตั้งสำหรับ Ubuntu ..

chown -R www-data /usr/share/wordpress

บางทีการติดตั้งด้วยวิธีนี้อาจทำได้ง่ายกว่าแทนที่จะพยายามแตกไฟล์ใน /var/www

https://help.ubuntu.com/community/WordPress ...

เวิร์ดเพรสทำงานบน apache ได้ไหม ... ถ้าคุณต้องการที่จะทำอย่างนั้น .. คุณแสดงให้เห็นว่าเป็น @metamorph และจากนั้นให้ permisson ใน apache2 httpd.confเช่นนี้:

<VirtualHost *:80>
        ServerName site
        ServerName site.domain
        DocumentRoot /srv/www/wordpress.site

        DirectoryIndex index.php

</VirtualHost>

default-server.confแล้วก็

<Directory "/srv/www/wordpress.site">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

อาจเป็นการดีที่สุดที่จะทำทีละขั้นตอนhttps://help.ubuntu.com/community/WordPress

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.