Quyền chính xác cho / var / www và wordpress


41

Tôi đã thiết lập máy chủ LAMP và tôi có quyền truy cập qua SSH và đến trang "nó hoạt động" từ trình duyệt web từ bên trong mạng của tôi (thông qua địa chỉ IP) và từ bên ngoài bằng dyndns.

Chúng tôi có một số dự án Wordpress nằm trong thư mục con trong / var / www / wordpress1 / var / www / wordpress2, v.v. Tôi không thể truy cập các thư mục con này từ trình duyệt để thiết lập WP - hoặc (tôi giả sử) để xem nội dung trên trình duyệt. Tôi gặp lỗi 403 Cấm trên trình duyệt của mình.

Tôi cho rằng đây là một vấn đề quyền. Bạn có thể vui lòng cho tôi biết các cài đặt thích hợp cho các quyền:

  1. Cho phép các nhà phát triển và tôi đọc / ghi.
  2. để cho phép WP thiết lập và làm việc của nó
  3. Cho phép khách truy cập truy cập (các) trang web thông qua web.

Tôi cũng nên đề cập rằng thư mục con thực sự là các liên kết sim đến thư mục trên một hdd nội bộ khác - tôi không nghĩ rằng điều này sẽ tạo ra sự khác biệt, nhưng tôi nghĩ tôi nên tiết lộ.

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

Đây là kết quả của việc sử dụng 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

Tôi vẫn không thể truy cập thông qua trình duyệt.


Xin vui lòng gửi đầu ra của lệnh ls -la /var/www.
SirCharlo

xin vui lòng đặt thông tin đó trong câu hỏi của bạn!
Jorge Castro

OK, phải mất một giây để tôi nhớ cách đăng mã ...
dpbklyn

Ok, hãy thửchown -R www-data:www-data /var/www
SirCharlo

2
Tôi nghĩ vấn đề của bạn bây giờ là bạn đang sử dụng các liên kết. Apache sẽ không theo liên kết. Những gì bạn sẽ làm là di chuyển các tệp đó đến / var / www và định cấu hình apache để sử dụng vitrualhosts. Xem help.ubfox.com/10.04/serverguide/httpd.html Các lựa chọn thay thế, nếu bạn muốn sử dụng /hdd/web/wordpresssẽ là cấu hình Apache (thư mục gốc) đúng cách. Bạn có thể cấu hình apache để sử dụng các liên kết, nhưng tôi không khuyên điều đó. Xem thêm trợ giúp.ubfox.com/community/WordPress
Panther

Câu trả lời:


81

Đầu tiên, bạn nên đảm bảo rằng tên người dùng của bạn được bao gồm trong www-datanhóm. Nếu không, bạn có thể thêm tên người dùng của mình dưới dạng www-datanhóm

sudo adduser $USER www-data

Sau đó, bạn nên thay đổi quyền sở hữu / var / www thành tên người dùng của bạn

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

Bước tiếp theo, đối với thực tiễn chung , bạn nên thay đổi quyền thành 755 (rwxr-xr-x), không khuyến nghị thay đổi quyền thành 777 vì lý do bảo mật

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

Liên quan đến sự cho phép cụ thể đối với wordpress hoặc laravel hoặc khung khác, sau đó bạn có thể đọc tài liệu tương ứng.

Hy vọng nó giúp...


1
không làm việc cho tôi, tôi thêm vào sử dụngsudo chown www-data:www-data -R mywordpressdirectory/
Louis

Sau khi thay đổi quyền sở hữu, bạn cũng nên thay đổi quyền. Bạn đã thay đổi sự cho phép của bạn thành 755?
biến thái

1
Anh đã làm với chmod. Anh ấy đang thay đổi quyền thành 755 với các bit dính (để giữ các tệp mới thuộc sở hữu của dữ liệu www.)
Zachary Dahan

Lời giải thích tốt nhất tôi có thể tìm thấy, ngắn gọn và ngọt ngào. Cảm ơn.
Banago

1
Do đó, bạn sẽ không thể cài đặt / xóa plugin / chủ đề, v.v. khỏi bảng quản trị vì WordPress sẽ không có quyền ghi.
Igor Skoldin

3

Rõ ràng đây là cách nó được khuyến nghị trong Hướng dẫn máy chủ Ubuntu:

Chương 11. Máy chủ web.

1.4. Chia sẻ quyền viết

Để có nhiều hơn một người dùng có thể ghi vào cùng một thư mục, sẽ cần phải cấp quyền ghi cho một nhóm mà họ chia sẻ chung. Ví dụ sau đây cấp quyền chia sẻ ghi cho / var / www / html cho nhóm "quản trị trang web"

Tôi sử dụng dữ liệu www . Chỉ cần thay thế "quản trị trang web" với nhóm của bạn, hãy chắc chắn rằng bạn đã thêm người dùng vào nhóm tất nhiên.

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 "{}" \;

Tôi vừa thử nghiệm nó với Dreamweaver từ máy tính để bàn mac của tôi và tải lên và thay thế các tệp được thêm vào, v.v. và nó vẫn giữ quyền chính xác với một ngoại lệ, người dùng cục bộ trở thành chủ sở hữu của các tệp mới cùng với dữ liệu www, nhưng bất kỳ tệp nào được tạo bởi root trong thư mục html giữ quyền sở hữu của họ dưới dạng root nhưng có thể chỉnh sửa bởi người dùng cục bộ.

$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

Hy vọng điều này sẽ làm sáng tỏ mọi thứ và giúp đỡ người mệt mỏi, vì tôi biết tôi luôn mệt mỏi với tình huống này, nhưng bây giờ thì rõ ràng với tôi.

Oh và tôi thực sự khuyên bạn nên sử dụng sftp với các khóa để truy cập ftp của bạn, hoạt động rất tốt cho tôi và không cần PureFTP hoặc bất kỳ phương pháp không an toàn nào khác để gửi các tệp đến trang web. Có một vài hướng dẫn tốt trên trang web Digital Ocean về việc bảo vệ máy chủ của bạn bằng các phím ssh:

Cách định cấu hình xác thực dựa trên khóa SSH trên máy chủ Linux


1) để lại các bit setgid trên các tệp. Trông có vẻ kỳ quặc, không làm gì cả, mở ra cánh cửa cho các vấn đề bảo mật nếu người dùng có thể làm cho các tệp thực thi và chạy chúng. Nhưng nếu bạn hài lòng với setgid trên các tệp, hãy thay thế finds phức tạp bằng sudo chmod -R g=srwX /var/www/html.
temoto

2) find -exec chmodsẽ sinh ra một chương trình riêng cho mỗi tệp, việc này sẽ tốn thời gian và gây áp lực không cần thiết cho hệ thống nếu bạn có nhiều tệp. Giải pháp : sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rw. xargs sẽ cố gắng cung cấp càng nhiều đường dẫn tệp càng tốt cho một thể hiện của chmod.
temoto

0

Kiểm tra xem Apache đã thực thi quyền cho /hdd/web/media/hdd/web/wordpress.

Chạy:

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

Hơn nữa, Apache phải được cấu hình để cho phép truy cập vào thư mục trên hệ thống tệp. Điều này phải được thực hiện bởi quản trị viên hệ thống bằng cách chèn một lệnh trong tệp cấu hình apache (httpd.conf).

Vì thư mục thực nằm trong web root nên nó có thể truy cập được, nhưng FollowSymLinks có thể chưa được kích hoạt cho thư mục - điều này cũng phải được thêm vào lệnh.

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


Cảm ơn tất cả ... Tôi đã quyết định đi theo con đường ít kháng cự nhất ... đã loại bỏ các liên kết tượng trưng. Tất cả đều hoạt động hoàn hảo.
dpbklyn

0

Đọc xung quanh hướng dẫn cài đặt cho Ubuntu ..

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

Có lẽ có thể dễ dàng hơn để cài đặt nó theo cách này thay vì cố gắng giải nén các tệp trên /var/www

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

bất cứ cách nào wordpress chạy trên apache ... phải không? nếu bạn muốn làm theo cách đó .. bạn hiển thị làm như @metamorph và sau đó cung cấp permisson trên apache2 httpd.confnhư thế này:

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

        DirectoryIndex index.php

</VirtualHost>

và sau đó default-server.conf.

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

Có lẽ tốt nhất là thực hiện từng bước https://help.ubfox.com/community/WordPress

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.