it-swarm-vi.com

Các thực tiễn được đề xuất liên quan đến quyền và thư mục Joomla và quyền sở hữu trên các hệ thống linux?

Trước đây, tôi đã gặp rắc rối với quyền và quyền sở hữu các tệp/thư mục Joomla trên các hệ thống linux.

Bao gồm các vấn đề

  • Không thể chuyển tệp đến máy chủ bằng các chương trình như WinSCP.
  • Không thể cài đặt phần mở rộng Joomla, plugin, v.v.
  • Các tập tin và thư mục không an toàn do các quyền và thiết lập quyền sở hữu nguy hiểm.

Các thực tiễn tốt nhất được đề xuất để thiết lập quyền và quyền sở hữu trong Joomla trên các hệ thống linux là gì?

25
TryHarder

Có một vài nguyên nhân tiềm ẩn cho sự cố cấp phép tệp và thư mục trên máy chủ Linux.

1. Quyền tệp và thư mục

Kiểm tra quyền truy cập thư mục được đặt thành 0755 và quyền truy cập tệp được đặt thành 0644. Lưu ý rằng quyền truy cập tệp và thư mục có thể được đặt lại thành các cài đặt bảo mật tiêu chuẩn này trên cơ sở toàn bộ trang web bằng cách sử dụng Công cụ quản trị Akeeba miễn phí hoặc phiên bản trả phí.

2. PHP Tham số

Kiểm tra tham số upload_max_filesize trong PHP Tab Thông tin trong Thông tin hệ thống là đủ. Bạn có thể thường xuyên ghi đè cài đặt mặc định trong môi trường lưu trữ được chia sẻ thông qua cài đặt PHP trong cPanel hoặc tùy chỉnh php.ini tập tin.

3. Đường dẫn không chính xác trong cấu hình.php

Bạn có thể có đường dẫn không chính xác được chỉ định cho các thư mục tmp và nhật ký. Chúng được chỉ định trong Cấu hình hệ thống hoặc có thể được cập nhật trực tiếp trong tệp configure.php nếu bạn thoải mái chỉnh sửa trực tiếp các tệp hệ thống. Nếu bạn không chắc chắn đường dẫn sẽ là gì, hãy tạo và tải lên tệp whereami.php (hoặc tương tự) với thư mục gốc của trang web của bạn với nội dung sau:

<?php
  print 'Current folder is ' . dirname(__FILE__);
?>

Duyệt đến [mywebsite].com/whereami.php để xem đường dẫn đến thư mục gốc.

Khi bạn có đường dẫn chính xác, hãy nhớ xóa whereami.php tập tin.

4. Không phù hợp PHP Trình xử lý tệp

Lưu trữ web của bạn có thể được cấu hình với trình xử lý tệp mặc định PHP nhưng lý tưởng nhất là sử dụng suPHP hoặc FastCGI hoặc tương tự để Joomla có thể tải lên và thực thi các tệp bằng quyền truy cập tệp an toàn.

Bạn có thể thấy trình xử lý PHP đang được sử dụng tại System -> System Information -> WebServer to PHP Interface.

Có một bài viết hay về giá trị tương đối của PHP tại: http://boomshadow.net/tech/php-handlers

Trong môi trường lưu trữ được chia sẻ, bạn thường không có quyền truy cập để thay đổi PHP được bật nhưng công ty lưu trữ web của bạn có thể thay đổi điều này cho bạn.

Đôi khi, khi quyền, tệp và thư mục được thay đổi thành 0777, nhưng điều này khiến trang web của bạn ở trạng thái dễ bị tổn thương và thường phải tránh quyền 0777.

Nếu công ty lưu trữ web của bạn không thể kích hoạt suPHP hoặc FastCGI, thì lựa chọn duy nhất khác có thể là tìm một công ty lưu trữ web mới.

5. Dung lượng đĩa

Kiểm tra bạn đã không vượt quá dung lượng ổ đĩa của bạn.

KIỂM TRA XỬ LÝ SỰ CỐ

Các thực tiễn tốt nhất được đề xuất để thiết lập quyền và quyền sở hữu trong Joomla trên các hệ thống linux là gì?

Xem 1 và 4.

Không thể chuyển tệp đến máy chủ bằng các chương trình như WinSCP.

Xem 1, 2, có thể 4 và 5.

Không thể cài đặt phần mở rộng Joomla, plugin, v.v.

Xem 1, 2, 3, 4 và 5.

Các tập tin và thư mục không an toàn do các quyền và thiết lập quyền sở hữu nguy hiểm.

Xem 1 và 4.

22
Neil Robertson

Vui lòng kiểm tra các mức cấp phép, nó phải là 644 và 755 cho các tệp và thư mục tương ứng.

Nhiều lần mức độ cho phép chỉ là tốt, ngay cả khi một số vấn đề phải đối mặt. Điều đó có nghĩa là bạn sẽ phải kiểm tra quyền sở hữu và nhóm các tệp và thư mục cụ thể . Thông thường, nhóm và quyền sở hữu có thể được thay đổi thành dữ liệu www cho Apache (được sử dụng trong các máy chủ web dựa trên Ubuntu).

Vui lòng kiểm tra tài liệu Joomla thú vị này dựa trên xác minh quyền truy cập tệp.

12
Shyam

Một giải pháp dễ dàng cho tôi là thường để cho PHP chạy trong chế độ (Fast-) CGI và đặt quyền sở hữu thư mục Joomla cho người dùng FTP. Vì vậy, bạn sẽ có thể tải lên và ghi đè các tệp qua FTP và Joomla cũng có thể ghi tệp.

Một cách để làm điều này trên môi trường lưu trữ được chia sẻ (nếu được phép), là thêm một cái gì đó như thế này vào tệp .htaccess của bạn:

AddHandler php53-cgi .php

Đồng thời xem tổng quan về các chế độ khác nha .

8
fruppel

Quyền phải là 644 và 755 như được giải thích bởi Shyam.

Các vấn đề bạn đang gặp phải rất có thể liên quan đến cách thiết lập máy chủ của bạn. Hầu hết thời gian điều này xảy ra trên các máy chủ được chia sẻ nơi Apache chạy dưới một người dùng khác với tài khoản FTP của bạn. Vì bạn thường tải lên Joomla bằng FTP, Apache không phải là chủ sở hữu của tệp và do đó không có quyền cần thiết để thay đổi tệp.

Có một chế độ FTP trong Joomla cho phép bạn bỏ qua vấn đề này. Bạn có thể kích hoạt nó trong cấu hình toàn cầu Joomla. Sau đó, nó sẽ thực hiện tất cả các truy cập tệp bằng người dùng FTP thay vì người dùng Apache thông thường.

Tuy nhiên, cách tốt hơn là yêu cầu Chủ nhà của bạn khắc phục sự cố. Họ có thể thiết lập PHP (Apache) để chạy dưới một người dùng đặc biệt, trong trường hợp như vậy sẽ là người dùng FTP của bạn. Sau đó, mọi thứ sẽ hoạt động tốt.

7
Bakual

Quyền phải là 644 và 755 như được giải thích bởi Shyam.

Trong Joomla bạn có thể tránh tất cả các vấn đề bạn đã đề cập, với các phương pháp sau.

Không thể chuyển tệp sang máy chủ bằng các chương trình như WinSCP.

  • Điều này có thể xảy ra do sự cho phép của (444) như Joomla configuration.php có quyền này theo mặc định nó không cho phép (để bảo mật).
  • Một tình huống khác cho cùng một lỗi này là khi bạn chuyển một trang web hoặc thư mục từ máy chủ này sang máy chủ khác.

Không thể cài đặt tiện ích mở rộng, plugin, v.v.

  • Điều này sẽ xảy ra do temp/log thư mục không đúng. (Yêu cầu 755)

  • Hoặc một lý do khác là temp/log đường dẫn sai trong configuration.php

Các tệp và thư mục không an toàn do các quyền và cài đặt quyền sở hữu nguy hiểm.

  • Điều quan trọng nhất là Joomla luôn khuyên bạn không nên sử dụng 777 cho tệp và thư mục nếu bạn không biết this .

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

7
Jobin Jose

Có, các quyền nên là 644 và 755 là được giải thích bởi Shyam , nhưng các áp phích khác quên đề cập rằng đây là nếu tệp được sở hữu bởi máy chủ web của bạn và nhóm là nhóm bạn thuộc về.

Chẳng hạn, trong FileZilla, bạn sẽ thấy các quyền như thế này:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM      www-data myGroup 

Các quyền drwxr-xr-x là 755 (chỉ cần bỏ qua dr hàng đầu để nó là wxr-xr-x). Quyền đọc có giá trị 4, Quyền ghi có giá trị 2 và quyền thực thi có giá trị 1 .. vì vậy, tất cả đều có tối đa 7 và đó là những gì chủ sở hữu của tệp này có. Nhóm đã đọc và thực thi quyền nhưng không ghi, vì vậy họ có 5 và mọi người cũng có 5 .. tạo quyền 755.

754 sẽ là chủ sở hữu đã đọc, viết, thực hiện. Nhóm đã đọc và thực thi và mọi người chỉ có quyền đọc.

Trong ví dụ trên, bạn có thể thấy rằng chủ sở hữu tệp là dữ liệu www (là nhóm máy chủ web mặc định cho nhiều máy chủ Apache) và Nhóm là nhóm mygroup, là nhóm (quản trị viên) mà tôi thuộc về.

Số đầu tiên là quyền của chủ sở hữu, số thứ hai là quyền của nhóm và số thứ ba là quyền của mọi người. Rõ ràng, bạn phải cẩn thận để cung cấp cho máy chủ web các quyền cần thiết ... và đảm bảo rằng các tệp cần khóa không thể được ghi hoặc thực hiện bởi bất kỳ ai (số thứ ba). Dưới đây là những con số có nghĩa là gì:

Giả sử Máy chủ web sở hữu các tệp, quản trị viên của bạn nằm trong nhóm và tất nhiên, mọi người đều là số thứ ba.

644: Mọi người đều có thể đọc được các tệp có quyền truy cập thành 644 và chỉ có thể ghi bởi chủ sở hữu tệp/thư mục.

755: Các tệp có quyền được đặt thành 755 đều có thể đọc và thực thi được bởi mọi người, nhưng chỉ có thể ghi bởi chủ sở hữu tệp/thư mục.

777: Các tệp có quyền được đặt thành 777 đều có thể đọc, ghi và thực thi được bởi mọi người. Donv sử dụng bộ quyền này, vì lý do bảo mật, trên máy chủ web của bạn trừ khi thực sự cần thiết và chỉ tạm thời. Đó là một thảm họa đang chờ xảy ra, đặc biệt là nếu một thư mục có các quyền đó .. điều đó có nghĩa là bất kỳ ai cũng có thể tải lên các tệp và thực thi chúng.

Dưới đây là các lệnh Linux để thiết lập Joomla! quyền được đề xuất từ ​​dòng lệnh. Quyền sử dụng tệp Joomla được đề xuất

Set ownership:   Sudo chown -R www-data:myName /path/to/your/domain.com
Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 755 {} \;
Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 644 {} \;

LƯU Ý - nhiều người sẽ chỉ cho bạn các lệnh này mà không có đường dẫn, nhưng tôi thích LUÔN LUÔN sử dụng đường dẫn hoàn chỉnh, bởi vì nếu bạn quên thay đổi thư mục thành Joomla gốc! thư mục cài đặt và chạy chúng mà không có đường dẫn, bạn vừa thay đổi quyền cho mọi tệp và thư mục trong thư mục trên cùng đó và tạo ra một mớ hỗn độn lớn.

Sau khi bạn chạy các lệnh này, bạn sẽ cần sửa quyền cho bất kỳ thư mục nào cần nhiều quyền hơn ... ví dụ: người dùng tải lên hình ảnh, v.v.

NẾU BẠN CHỈ SỬ DỤNG JOOMLA! giao diện và bạn không có quyền truy cập quản trị viên hoặc FTP vào máy chủ, sau đó SỬ DỤNG QUYỀN SỞ HỮU VÀ GIẤY PHÉP TRÊN.

DỪNG Ở ĐÂY NẾU BẠN LÀ NGƯỜI YÊU THÍCH .. Dưới đây chỉ dành cho những người thực sự hiểu quyền và quyền sở hữu làm gì.

Tuy nhiên, tôi thấy việc sở hữu và cấp phép theo cách đó rất không thuận lợi vì tôi thích sử dụng FileZilla và dòng lệnh Terminal trong hầu hết thời gian và tôi tải lên rất nhiều tệp theo cách thủ công. Nhưng tôi không thể ghi đè lên bất kỳ tệp nào vì tôi không sở hữu chúng và tôi không có quyền để viết. Tôi có thể đăng nhập FileZilla trong tài khoản máy chủ web, NHƯNG ... Tôi muốn FileZilla đăng nhập dưới tài khoản của mình, vì vậy tôi cũng có thể duyệt các thư mục khác, không chỉ các tệp mà máy chủ web có quyền truy cập vào ... SO ... Tôi thay đổi quyền sở hữu và quyền này:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM  drwxr-xr-x    myName www-data

Tôi biến mình thành chủ sở hữu và đặt máy chủ web vào Nhóm ... và tôi thay đổi quyền cho thư mục thành 775 và cho các tệp thành 664. Làm cho cuộc sống của tôi dễ dàng hơn nhiều ... nhưng tôi không khuyên dùng nó cho tất cả mọi người.

Nếu bạn làm theo cách của tôi, đây là các lệnh:

 Set ownership:   Sudo chown -R myName:www-data /path/to/your/domain.com
 Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 775 {} \;
 Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 664 {} \;  
5
bgies

Các câu trả lời khác cung cấp một lời giải thích tốt về những gì nên được thực hiện, tôi chỉ muốn thêm một tập lệnh để sửa các quyền nếu bạn đã tải lên một thành phần và không thể truy cập các tệp bằng ftp.

Trong trường hợp này tôi sẽ tải lên tệp này là fix.php đến máy chủ FTP và mở nó trong trình duyệt: http://example.com/fix.php

<?php
file_fix_directory(dirname(__FILE__));

function file_fix_directory($dir, $nomask = array('.', '..')) {
  if (is_dir($dir)) {
     // Try to make each directory world writable.
     if (@chmod($dir, 0777)) {
       echo "<p>Made writable: " . $dir . "</p>";
     }
  }
  if (is_dir($dir) && $handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
      if (!in_array($file, $nomask) && $file[0] != '.') {
        if (is_dir("$dir/$file")) {
          // Recurse into subdirectories
          file_fix_directory("$dir/$file", $nomask);
        }
        else {
          $filename = "$dir/$file";
            // Try to make each file world writable.
            if (@chmod($filename, 0666)) {
              echo "<p>Made writable: " . $filename . "</p>";
            }
        }
      }
    }

    closedir($handle);
  }

}

Tập lệnh này đặt tất cả các quyền của tệp thành 666 và tất cả thư mục thành 777. Thế giới có thể ghi là không bộ quyền tốt nhất cho Máy chủ được chia sẻ nhưng bạn sẽ có thể truy cập lại tệp của mình và sau đó có thể đặt lại tệp đến các giá trị chính xác với FTP.

4
Harald Leithner

Đi dự tiệc muộn. Tôi đến đây tìm kiếm cũng như những nơi khác để có một hướng dẫn dứt khoát về những thư mục cần có thể ghi cho j Joomla.

Xin lỗi mọi người là điềm báo của tin xấu.

Lời khuyên sử dụng quyền 755 cho tất cả các thư mục và 644 cho tất cả các thư mục ít nhất là vô trách nhiệm.

Làm cho tất cả các thư mục và chủ sở hữu tệp của bạn có thể ghi là tốt miễn là chủ sở hữu không phải là máy chủ web (Apache et al).

Tôi biết đây là thực hành được khuyến nghị phổ biến nhưng tôi có thể đảm bảo với bạn rằng nó không phải là thực hành tốt. Phần mềm cuối cùng bạn muốn cung cấp khả năng ghi vào các thư mục là chính máy chủ web. Đó là máy chủ web được tin tặc sử dụng để tận dụng lợi thế của việc khai thác chưa được vá (hoặc thậm chí được tìm thấy).

Bạn có nghĩ .htaccess sẽ cứu Kevin của bạn không? Hãy quên nó đi vì bạn đã cho phép máy chủ web ghi quyền truy cập, những người bạn hacker thân yêu của chúng tôi có thể tạo các tệp .htaccess của riêng họ cung cấp cho họ bất kỳ quyền nào họ muốn! như Oh Tôi không biết Umm tạo tập tin .jpg do máy chủ thực thi. Và bạn nghĩ rằng việc bảo vệ chống lại việc thực thi .php sẽ bao trùm A. của bạn.

Nhưng hãy chắc chắn rằng chỉ có các thư mục yêu cầu truy cập ghi thực sự có nó. 755 và 644 cho các thư mục sau.

public_html/images
public_html/cache
public_html/tmp

Và đảm bảo rằng bạn TẮT các tệp .htaccess bằng AllowOveride không cho tất cả các thư mục có thể ghi (như các thư mục ở trên)

Đối với những người bạn chia sẻ lưu trữ may mắn vì đây là yếu tố cấu hình bạn không thể kiểm soát.

Đừng nghĩ làm cho tệp .htaccess chỉ đọc sẽ giúp ích. Nếu bạn bè hacker của chúng tôi có thể tạo một thư mục mới (họ có thể) thì họ có thể tạo .htaccess của riêng họ.

Đối với những người bạn đang chạy chia sẻ lưu trữ cho tất cả những gì thiêng liêng, xin vui lòng nhận được manh mối về bảo mật.

Nếu bạn không hiểu về bảo mật, hãy thoát khỏi công việc lưu trữ mà bạn đang làm cho nó trở nên khó khăn với phần còn lại của chúng tôi.

Bây giờ trở lại tìm kiếm của tôi cho hướng dẫn dứt khoát về các thư mục cần truy cập ghi ...

1
DeveloperChris