Рекомендуемая практика в отношении прав доступа к файлам и каталогам Joomla и права собственности на Linux-системы?

В прошлом у меня часто возникали проблемы с разрешениями и владением файлами /каталогами Joomla в Linux-системах.

Проблемы включены

  • Невозможно передать файлы на сервер с помощью таких программ, как WinSCP.
  • Невозможно установить расширения Joomla, плагины и т. д.
  • Небезопасные файлы и папки из-за опасных прав и прав собственности настройки.

Каковы рекомендуемые рекомендации по настройке разрешений и полномочий в Joomla для Linux-систем?

25 голосов | спросил TryHarder 23 AMpWed, 23 Apr 2014 09:00:02 +040000Wednesday 2014, 09:00:02

8 ответов


22

Существует несколько потенциальных причин проблем с правами на доступ к файлам и папкам на хостинге Linux.

1. Разрешения для файлов и папок

Проверить права доступа к папке установлены на 0755, а разрешения для файлов - на 0644. Обратите внимание, что разрешения на доступ к файлам и папкам могут быть сброшены в эти стандартные безопасные настройки на основе всей сети с использованием бесплатной или платной версии инструментов администрирования Akeeba.

2. Параметры PHP

Проверить параметр upload_max_filesize на вкладке «Информация о PHP» в Системной информации. Вы часто можете переопределять настройки по умолчанию в среде общедоступного хостинга с помощью настроек PHP в cPanel или пользовательского файла php.ini.

3. Неправильные пути в файле конфигурации.php

У вас могут быть неправильные пути, указанные для папок tmp и logs. Они указаны в Системной конфигурации или могут быть обновлены непосредственно в файле configuration.php, если вам удобно редактировать системные файлы напрямую. Если вы не уверены в том, каким должен быть путь, создайте и загрузите файл whereami.php (или аналогичный) в корневую папку вашего сайта со следующим содержанием:

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

Перейдите в [mywebsite].com/whereami.php, чтобы увидеть путь к корневой папке.

Как только у вас будет правильный путь, не забудьте удалить файл whereami.php.

4. Неподходящий обработчик файлов PHP

Ваш веб-хостинг может быть настроен с помощью обработчика файлов PHP по умолчанию, но в идеале должен использоваться suPHP или FastCGI или аналогичный, чтобы Joomla мог загружать и выполнять файлы с использованием безопасных разрешений на файл.

Вы можете видеть, какой обработчик PHP используется в System -> System Information -> WebServer to PHP Interface.

Существует хорошая статья об относительных достоинствах обработчиков файлов PHP: http://boomshadow.net /технологии /PHP-обработчики

В общедоступной среде хостинга обычно нет доступа к изменению того, какой обработчик PHP-файлов включен, но ваша веб-хостинговая компания может изменить это для вас.

Иногда в процессе работы права доступа к файлам и папкам меняются на 0777, но это приводит к тому, что ваш сайт находится в уязвимом состоянии, и обычно разрешается разрешение на использование файлов 0777.

Если ваша веб-хостинговая компания не может включить suPHP или FastCGI, единственным вариантом может быть поиск новой веб-хостинга.

5. Дисковое пространство

Убедитесь, что вы не превысили квоту на дисковое пространство.

СПИСОК ПРОВЕРКИ НЕИСПРАВНОСТЕЙ

  

Каковы рекомендуемые рекомендации по настройке разрешений и   владельцы в Joomla на Linux-системах?

См. 1 и 4.

  

Невозможно передать файлы на сервер с помощью таких программ, как   WinSCP.

См. 1, 2, возможно 4 и 5.

  

Невозможно установить расширения, плагины и т. д. Joomla.

См. 1, 2, 3, 4 и 5.

  

Незащищенные файлы и папки из-за опасных прав и прав собственности   настройки.

См. 1 и 4.

ответил Neil Robertson 23 PMpWed, 23 Apr 2014 14:00:46 +040000Wednesday 2014, 14:00:46
12

Проверьте уровни разрешений, должно быть 644 и 755 для файлов и папок соответственно.

Много раз уровни разрешений просто прекрасны, даже когда возникают некоторые проблемы. Это означает, что вам нужно проверить принадлежность и группу определенных файлов и папок . Обычно группа и собственность могут быть изменены на www-data для apache (используется на веб-серверах на основе Ubuntu).

Не забудьте проверить этот интересный документ Joomla на основе проверки прав доступа к файлам.

ответил Shyam 23 AMpWed, 23 Apr 2014 09:06:26 +040006Wednesday 2014, 09:06:26
8

Простое решение для меня - часто позволять PHP работать в режиме быстрого доступа (CGI) и устанавливать права собственности на каталог Joomla на пользователя FTP. Таким образом, вы сможете загружать и перезаписывать файлы через FTP, а Joomla также сможет записывать файлы.

Способ сделать это в среде общедоступного хостинга (если это разрешено) заключается в том, чтобы добавить что-то вроде этого в ваш .htaccess файл:

AddHandler php53-cgi .php

Также см. обзор различных режимов .

ответил fruppel 23 AMpWed, 23 Apr 2014 11:33:21 +040033Wednesday 2014, 11:33:21
7

Разрешения должны быть 644 и 755, как объясняется Shyam.

В Joomla вы можете избежать всех проблем, о которых вы упомянули, со следующими методами.

Невозможно передать файлы на сервер с помощью таких программ, как WinSCP.

  • Это может произойти из-за разрешения (444), такого как Joomla configuration.php, иметь это разрешение, по умолчанию оно не разрешено (для обеспечения безопасности).
  • Другая ситуация для этой же ошибки заключается в том, что вы переносите сайт или папки с одного сервера на другой.

Невозможно установить расширения Joomla, плагины и т. д.

  • Это произойдет из-за плохого разрешения папки temp/log (требуется 755)

  • Или другая причина - неправильный путь temp/log в configuration.php

Незащищенные файлы и папки из-за опасных прав доступа и настроек владельца.

  • Это наиболее важно. Joomla всегда рекомендует не использовать 777 для файла и папки, если вы не знаете этого .

Надеюсь, что это поможет.

ответил Jobin Jose 23 AMpWed, 23 Apr 2014 11:22:13 +040022Wednesday 2014, 11:22:13
7

Разрешения должны быть 644 и 755, как объясняется Shyam.

Проблемы, с которыми вы сталкиваетесь, скорее всего связаны с тем, как настроен ваш сервер. В большинстве случаев это происходит на общих хостах, где Apache работает под другим пользователем, чем ваша учетная запись FTP. Поскольку вы обычно загружаете Joomla с помощью FTP, Apache не является владельцем файла и, следовательно, не имеет необходимых прав для его изменения.

В Joomla есть режим FTP, который позволяет обойти эту проблему. Вы можете включить его в глобальной конфигурации Joomla. Затем он будет осуществлять доступ к файлам с помощью пользователя FTP вместо обычного пользователя Apache.

Лучше всего попросить вашего хоста исправить проблему. Они могут настроить PHP (Apache) для запуска под специальным пользователем, который в таком случае должен быть вашим FTP-пользователем. Тогда все будет нормально работать.

ответил Bakual 23 AMpWed, 23 Apr 2014 10:58:57 +040058Wednesday 2014, 10:58:57
5

Да, разрешения должны быть 644 и 755 как объяснены Shyam , но другие плакаты забывают упомянуть что это, если файл принадлежит вашему веб-серверу, а группа - это группа, к которой вы принадлежите.

Например, в FileZilla вы увидите права на что-то вроде этого:

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

Разрешения drwxr-xr-x равны 755 (просто игнорируйте ведущий dr, так что это wxr-xr-x). Разрешения для чтения стоят 4, разрешения на запись стоят 2, а разрешения на выполнение - 1, поэтому их все составляют до 7, и это то, что владелец этого файла имеет. Группа имеет права на чтение и выполнение, но не запись, поэтому у них есть 5, и у всех также есть 5 .. создание разрешений 755.

754 будут владельцами, которые будут читать, писать, исполнять. Группа читает и выполняет, и у всех только есть разрешения на чтение.

В приведенном выше примере вы можете видеть, что владельцем файла является www-data (который является группой веб-серверов по умолчанию для многих серверов Apache), а Group является группой myGroup, которая является Группой (админы), которой я принадлежу к.

Первое число - это разрешения владельцев, второе - разрешения групп, а третье число - разрешения каждого пользователя. Очевидно, что вам нужно быть осторожным, чтобы предоставить веб-серверу необходимые ему разрешения ... и убедитесь, что файлы, которые необходимо заблокировать, не могут быть написаны или выполнены кем угодно (третьим номером). Ниже приведены значения чисел:

Предполагая, что веб-сервер владеет файлами, ваш администратор находится в группе, и, конечно же, все являются третьим номером.

644: Файлы с разрешениями, установленными на 644, могут быть прочитаны всеми и могут быть записаны только владельцем файла /папки.

755: Файлы с разрешениями, установленными на 755, являются читабельными и исполняемыми всеми, но могут быть записаны только владельцем файла /папки.

777: Файлы с разрешениями, заданными для 777, являются читабельными, записываемыми и исполняемыми всеми. Не используйте этот набор разрешений по соображениям безопасности на своем веб-сервере, если это абсолютно необходимо, и только временно. Это катастрофа в ожидании, особенно если каталог имеет эти разрешения .. это означает, что любой может загружать файлы и выполнять их.

Вот команды Linux для настройки Joomla! Рекомендуемые разрешения из командной строки. Рекомендуемые разрешения для файлов Joomla

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

ПРИМЕЧАНИЕ. Многие люди покажут вам эти команды без пути, но я предпочитаю, чтобы ВСЕГДА использовали полный путь, потому что если вы забыли сменить каталоги на корневой каталог Joomla! установочный каталог и запустить их без пути, вы только что изменили разрешения для каждого файла и каталога в этом верхнем каталоге и создали огромный беспорядок.

После запуска этих команд вам нужно будет исправить разрешения для любых каталогов, которым требуется больше разрешений ... например ... пользователи загружают изображения и т. д.

ЕСЛИ ВЫ ТОЛЬКО ИСПОЛЬЗУЕТЕ ЖУРНАЛ! интерфейс, и у вас нет доступа администратора или FTP к серверу, а затем ИСПОЛЬЗУЙТЕ СОБСТВЕННОСТЬ И РАЗРЕШЕНИЯ ВЫШЕ.

ОСТАНОВИТЕСЬ ЗДЕСЬ, ЕСЛИ ВЫ НАЙДЕТЕСЬ. Ниже приведено только для людей, которые действительно понимают, какие разрешения и права собственности действуют.

Однако, я считаю, что права собственности и разрешения очень неудобны, потому что я предпочитаю использовать FileZilla и командную строку сеанса терминала большую часть времени, и я загружаю много файлов вручную. Но я не могу перезаписать какие-либо файлы, потому что я их не владею, и у меня нет прав на запись. Я мог бы иметь FileZilla войти под учетной записью веб-сервера, НО ... Я хочу, чтобы FileZilla регистрировался под моей учетной записью, поэтому я могу просматривать другие каталоги, а не только файлы, к которым имеет доступ веб-сервер ... SO ... Я изменяю права собственности и разрешения на это:

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

Я делаю себя владельцем и помещаю веб-сервер в группу ... и я меняю разрешения для каталогов на 775, а для файлов на 664. Делает мою жизнь намного проще ... но я не рекомендую его всем.

Если вы сделаете это по-своему, это команды:

 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 {} \;  
ответил bgies 23 PMpWed, 23 Apr 2014 17:28:29 +040028Wednesday 2014, 17:28:29
4

Другие ответы дают хорошее объяснение того, что должно быть сделано, я хочу добавить скрипт для исправления разрешений, если вы уже загрузили компонент и не можете получить доступ к файлам с ftp.

В этом случае я бы загрузил этот файл как fix.php на FTP-сервер и открыл его в браузере: 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);
  }

}

Этот скрипт устанавливает все разрешения файла на 666, а для всех каталогов - 777. Всемирный доступный для записи не лучший набор разрешений для общего хоста, но вы сможете снова получить доступ к своим файлам и затем установите для него правильные значения с помощью FTP.

ответил Harald Leithner 23 PMpWed, 23 Apr 2014 12:55:43 +040055Wednesday 2014, 12:55:43
1

Поздняя вечеринка. Я приехал сюда так же хорошо, как и другие места для окончательного руководства о том, какие папки нужно записывать для joomla.

Прошу прощения, чтобы быть предвестником плохих новостей.

Совет по использованию разрешений 755 для всех каталогов и 644 для всех папок безответственен, по крайней мере, .

Создание всех ваших файлов и файлов, которые можно записать в файл, является прекрасным, если владелец не является веб-сервером (apache и др.).

Я знаю, что это распространенная рекомендуемая практика, но я могу заверить вас в ее не очень хорошей практике. Последним программным обеспечением, которое вы хотите предоставить для записи в папки, является сам веб-сервер. Его веб-сервер, который используется хакерами, использует этот эксплойт, который еще не был исправлен (или даже найден).

Как вы думаете .htaccess спасет Кевина? Забудьте об этом, потому что вы разрешили доступ к веб-серверу, наши дорогие друзья-хакеры могут создавать свои собственные файлы .htaccess, предоставляя им любые разрешения, которые они хотят! например О, я не знаю, что Umm make .jpg файлы исполняемые сервером. И вы считали, что защита от выполнения .php будет охватывать ваш A.

Но убедитесь, что на нем есть только папки, требующие доступа к записи. 755 и 644 для следующих папок.

public_html/images
public_html/cache
public_html/tmp

И убедитесь, что вы отключили файлы .htaccess с AllowOveride для всех записываемых папок (например, выше)

Для тех из вас, кто находится на общем хостинге, удачи, так как это элемент конфигурации, который вы не можете контролировать.

Не думаю, что создание файла .htaccess только для чтения поможет. Если наши друзья-хакеры могут создать новую папку (они могут), тогда они могут создать свой собственный .htaccess.

Для тех из вас, кто использует общий хостинг для всех, что является священным, ознакомьтесь с информацией о безопасности.

Если вы не понимаете безопасности, пожалуйста, выйдите из хостингового бизнеса, который вы делаете жестким для остальных из нас.

Теперь вернемся к поиску окончательного руководства по папкам, требующим доступа для записи ...

ответил DeveloperChris 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2016 02:09:18 +0300 2016, 02:09:18

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132