Zalecane praktyki dotyczące uprawnień do plików / katalogów Joomla i własności w systemach Linux?

26

W przeszłości często miałem problemy z uprawnieniami i własnością plików / katalogów Joomla w systemach Linux.

Problemy zawarte

  • Brak możliwości przesyłania plików na serwer za pomocą programów takich jak WinSCP.
  • Brak możliwości instalacji rozszerzeń Joomla, wtyczek itp.
  • Niebezpieczne pliki i foldery z powodu niebezpiecznych uprawnień i ustawień własności.

Jakie są zalecane najlepsze praktyki dotyczące ustawiania uprawnień i własności w Joomla na systemach Linux?

Próbuj dalej
źródło

Odpowiedzi:

22

Istnieje kilka potencjalnych przyczyn problemów z uprawnieniami do plików i folderów na hoście Linux.

1. Uprawnienia do plików i folderów

Sprawdź, czy uprawnienia do folderów są ustawione na 0755, a uprawnienia do plików na 0644. Pamiętaj, że uprawnienia do plików i folderów można zresetować do tych standardowych bezpiecznych ustawień w całej witrynie za pomocą bezpłatnej lub płatnej wersji Narzędzi administracyjnych Akeeba.

2. Parametry PHP

Sprawdź parametr upload_max_filesize w zakładce Informacje PHP w Informacje o systemie jest wystarczający. Często możesz zastąpić ustawienie domyślne we współdzielonym środowisku hostingowym za pomocą ustawień PHP w cPanel lub php.inipliku niestandardowym .

3. Niepoprawne ścieżki w pliku configuration.php

Możliwe, że określono niepoprawne ścieżki do folderów tmp i logów. Są one określone w konfiguracji systemu lub mogą być aktualizowane bezpośrednio w pliku configuration.php, jeśli wygodnie edytujesz pliki systemowe bezpośrednio. Jeśli nie masz pewności, jaka powinna być ścieżka, utwórz i prześlij plik whereami.php(lub podobny) do folderu głównego swojej witryny o następującej treści:

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

Przeglądaj, aby [mywebsite].com/whereami.phpzobaczyć ścieżkę do folderu głównego.

Gdy znajdziesz prawidłową ścieżkę, pamiętaj o usunięciu whereami.phppliku.

4. Nieodpowiednia obsługa plików PHP

Twój hosting może być skonfigurowany z domyślną obsługą plików PHP, ale najlepiej używać suPHP lub FastCGI lub podobnego, aby Joomla mogła przesyłać i uruchamiać pliki przy użyciu bezpiecznych uprawnień do plików.

Możesz zobaczyć, w którym programie obsługi PHP jest używany System -> System Information -> WebServer to PHP Interface.

Dobry artykuł na temat względnych zalet programów obsługi plików PHP znajduje się na stronie : http://boomshadow.net/tech/php-handlers

We współdzielonym środowisku hostingowym zazwyczaj nie masz dostępu do zmiany, która obsługa plików PHP jest włączona, ale Twoja firma hostingowa może to dla Ciebie zmienić.

Czasami w celu obejścia tego problemu uprawnienia do plików i folderów są zmieniane na 0777, ale powoduje to, że witryna jest w trudnej sytuacji i ogólnie należy unikać uprawnień do plików 0777.

Jeśli Twoja firma hostingowa nie może włączyć SuPHP lub FastCGI, jedyną inną opcją może być znalezienie nowej firmy hostingowej.

5. Miejsce na dysku

Sprawdź, czy nie przekroczyłeś limitu miejsca na dysku.

ROZWIĄZYWANIE PROBLEMÓW

Jakie są zalecane najlepsze praktyki dotyczące ustawiania uprawnień i własności w Joomla na systemach Linux?

Zobacz 1 i 4.

Brak możliwości przesyłania plików na serwer za pomocą programów takich jak WinSCP.

Zobacz 1, 2, ewentualnie 4 i 5.

Brak możliwości instalacji rozszerzeń Joomla, wtyczek itp.

Zobacz 1, 2, 3, 4 i 5.

Niebezpieczne pliki i foldery z powodu niebezpiecznych uprawnień i ustawień własności.

Zobacz 1 i 4.

Neil Robertson
źródło
1
W moim przypadku myślę, że programy obsługi PHP były dużą częścią problemu.
TryHarder
1
+1 Twoja odpowiedź tak naprawdę nie rozwiązała mojego problemu, ale zainspirowałem się do sprawdzenia moich ustawień PHP - tryb awaryjny i okazało się, że jest włączony - włączony. Dlatego wyłączenie go było rozwiązaniem. Więc dla przyszłych czytelników, jeśli żaden z powyższych nie
naprawi
12

Sprawdź poziomy uprawnień, powinno to być odpowiednio 644 i 755 dla plików i folderów.

Wiele razy poziomy uprawnień są w porządku, nawet jeśli napotyka się pewne problemy. Oznacza to, że będziesz musiał sprawdzić własność i grupę określonych plików i folderów . Zwykle grupę i własność można zmienić na dane www dla apache (używane w serwerach WWW opartych na Ubuntu).

Zachęcamy do zapoznania się z tym interesującym dokumentem Joomla opartym na weryfikacji uprawnień do plików.

Shyam
źródło
Czy Joomla zazwyczaj należy do grupy danych www?
TryHarder
1
Wraz z odpowiedzią Shyama korzystamy z modułu Apache SuPHP . Okazało się, że po zainstalowaniu rozszerzenia nie mogliśmy następnie modyfikować tych plików przez FTP i odwrotnie (problem z własnością pliku). SuPHP naprawił to dla nas, upewniając się, że skrypty PHP działają z uprawnieniami ich właścicieli.
Zachary Draper,
1
proces apache jest uruchamiany pod „www-data” grupą uniksową. To nie tylko Joomla, wszystkie aplikacje oparte na Apache.
Shyam,
Czy można opracować i uruchomić skrypt powłoki, aby automatycznie naprawić wszystkie uprawnienia do plików?
NivF007
1
Tak. gist.github.com/ssv445/11204300 Możesz uruchomić skrypt w cron.
Shyam,
8

Łatwym rozwiązaniem jest dla mnie często pozwalanie PHP na uruchamianie w trybie (szybkim) CGI i ustawianie własności katalogu Joomla dla użytkownika FTP. Będziesz mógł wgrywać i nadpisywać pliki przez FTP, a Joomla będzie mogła również zapisywać pliki.

Sposobem na to we współdzielonym środowisku hostingowym (jeśli jest to dozwolone) jest dodanie czegoś takiego do pliku .htaccess:

AddHandler php53-cgi .php

Zobacz także przegląd różnych trybów .

fruppel
źródło
7

Uprawnienia powinny wynosić 644 i 755, jak wyjaśnia Shyam.

W Joomla możesz uniknąć wszystkich wspomnianych problemów, stosując następujące metody.

Brak możliwości przesyłania plików na serwer za pomocą programów takich jak WinSCP.

  • Może się to zdarzyć z powodu pozwolenia (444), takiego jak Joomla, configuration.phpktóre ma to zezwolenie, którego domyślnie nie zezwala (dla bezpieczeństwa).
  • Inną sytuacją tego samego błędu jest przeniesienie witryny lub folderów z jednego serwera na inny.

Brak możliwości instalacji rozszerzeń Joomla, wtyczek itp.

  • Stanie się tak z powodu temp/logzłych uprawnień do folderu. (Wymagane 755)

  • Lub innym powodem temp/logjest niewłaściwa ścieżkaconfiguration.php

Niebezpieczne pliki i foldery z powodu niebezpiecznych uprawnień i ustawień własności.

  • Jest to najważniejsza Joomla zawsze zalecamy nie używać 777 dla pliku i folderu, jeśli nie są świadomi tego .

Mam nadzieję, że to pomaga ..

Jobin Jose
źródło
7

Uprawnienia powinny wynosić 644 i 755, jak wyjaśnia Shyam.

Problemy, które napotykasz, najprawdopodobniej są związane ze sposobem konfiguracji serwera. Najczęściej dzieje się tak na współdzielonych hostach, na których Apache działa pod innym użytkownikiem niż twoje konto FTP. Ponieważ zwykle przesyłasz Joomla za pomocą FTP, Apache nie jest właścicielem pliku, a zatem nie ma wymaganych uprawnień, aby go zmienić.

W Joomla jest tryb FTP, który pozwala ominąć ten problem. Możesz włączyć to w globalnej konfiguracji Joomla. Następnie wykona dostęp do wszystkich plików przy użyciu użytkownika FTP zamiast zwykłego użytkownika Apache.

Lepszym sposobem jest jednak poproszenie hosta o naprawienie problemu. Mogą skonfigurować PHP (Apache) do działania pod specjalnym użytkownikiem, którym w takim przypadku powinien być użytkownik FTP. Wtedy wszystko będzie działało dobrze.

Bakual
źródło
Użytkownik / grupa jest odpowiedzią, jak powiedziałeś, posiadanie specjalnego użytkownika dla PHP rozwiązuje to, szczególnie jeśli zbiega się z użytkownikiem FTP.
jackJoe
5

Tak, uprawnienia powinny wynosić 644 i 755, jak wyjaśnił Shyam , ale inni plakaty zapominają wspomnieć, że dzieje się tak, jeśli plik jest własnością twojego serwera, a grupa jest grupą, do której należysz.

Na przykład w FileZilla zobaczysz uprawnienia takie jak to:

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

Uprawnienia drwxr-xr-x wynoszą 755 (po prostu zignoruj ​​wiodącego dr, więc jest to wxr-xr-x). Uprawnienia do odczytu są warte 4, uprawnienia do zapisu są warte 2, a uprawnienia do wykonywania są warte 1 .. więc ich suma wynosi 7, i to właśnie ma właściciel tego pliku. Grupa ma uprawnienia do odczytu i wykonywania, ale nie może pisać, więc mają 5, a każdy ma również 5 .. co daje uprawnienia 755.

754 byliby właścicielami, którzy czytają, piszą, wykonują. Grupuj po przeczytaniu i wykonaniu, a każdy ma tylko uprawnienia do odczytu.

W powyższym przykładzie widać, że właścicielem pliku jest www-data (która jest domyślną grupą serwerów WWW dla wielu serwerów Apache), a grupa to grupa myGroup, czyli grupa (administratorzy), do której należę.

Pierwsza liczba to uprawnienia właścicieli, druga to uprawnienia grup, a trzecia to uprawnienia wszystkich. Oczywiście musisz uważać, aby dać serwerowi sieciowemu potrzebne uprawnienia ... i upewnić się, że pliki, które muszą zostać zablokowane, nie mogą zostać zapisane ani wykonane przez nikogo (trzeci numer). Poniżej znajduje się znaczenie liczb:

Zakładając, że serwer jest właścicielem plików, Twój administrator jest w grupie i oczywiście każdy jest trzecim numerem.

644: Pliki z uprawnieniami ustawionymi na 644 są odczytywane przez wszystkich i zapisywane tylko przez właściciela pliku / folderu.

755: Pliki z uprawnieniami ustawionymi na 755 są dostępne do odczytu i wykonywania dla wszystkich, ale tylko do zapisu przez właściciela pliku / folderu.

777: Pliki z uprawnieniami ustawionymi na 777 są dostępne do odczytu, zapisu i wykonywania przez wszystkich. Nie używaj tego zestawu uprawnień ze względów bezpieczeństwa na swoim serwerze internetowym, chyba że jest to absolutnie konieczne i tylko tymczasowo. To katastrofa, która czeka, szczególnie jeśli katalog ma te uprawnienia. Oznacza to, że każdy może przesyłać pliki i je wykonywać.

Oto polecenia Linuksa, aby skonfigurować Joomla! zalecane uprawnienia z wiersza poleceń. Zalecane uprawnienia do plików 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 {} \;

UWAGA - wiele osób pokaże te polecenia bez ścieżki, ale ZAWSZE wolę korzystać z pełnej ścieżki, ponieważ jeśli zapomnisz zmienić katalogi na root Joomla! katalog instalacyjny i uruchom je bez ścieżki, właśnie zmieniłeś uprawnienia do każdego pliku i katalogu w tym górnym katalogu i stworzyłeś ogromny bałagan.

Po uruchomieniu tych poleceń będziesz musiał naprawić uprawnienia do wszystkich katalogów, które potrzebują więcej uprawnień ... na przykład ... użytkowników przesyłających obrazy itp.

JEŚLI WYKORZYSTASZ TYLKO JOOMLA! interfejs, a nie masz dostępu administratora ani FTP do serwera, a następnie WYKORZYSTAJ WŁASNOŚĆ i PRAWA POWYŻEJ.

ZATRZYMAJ SIĘ TUTAJ, JEŚLI JESTEŚ URZĄDZENIEM. Poniższe informacje są przeznaczone tylko dla osób, które naprawdę rozumieją uprawnienia i własność.

Uważam jednak, że posiadanie i uprawnienia w ten sposób są bardzo nieprzydatne, ponieważ lubię korzystać z FileZilla i wiersza poleceń sesji terminalu przez większość czasu i przesyłam wiele plików ręcznie. Ale nie mogę nadpisać żadnych plików, ponieważ nie jestem ich właścicielem i nie mam uprawnień do pisania. Mógłbym zalogować FileZilla na koncie serwera WWW, ALE ... Chcę, aby FileZilla zalogował się na moim koncie, więc mogę przeglądać również inne katalogi, nie tylko pliki, do których serwer WWW ma dostęp ... SO ... Zmieniam własność i uprawnienia na to:

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

Staję się właścicielem i umieszczam serwer internetowy w grupie ... i zmieniam uprawnienia dla katalogów na 775, a dla plików na 664. Ułatwia mi życie ... ale nie polecam tego dla każdy.

Jeśli zrobisz to po swojemu, będą to następujące polecenia:

 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
źródło
„drwxr-xr-x to 755” - byłoby to 751 (brak permu odczytu dla publicznego), a nie 755. (Chociaż 755 byłoby bardziej „normalne” dla katalogów.)
MrWhite
4

Inne odpowiedzi stanowią dobre wyjaśnienie tego, co należy zrobić, chcę tylko dodać skrypt, aby naprawić uprawnienia, jeśli już przesłałeś komponent i nie możesz uzyskać dostępu do plików za pomocą ftp.

W takim przypadku załadowałbym ten plik jak fix.phpna serwer FTP i otworzyłem go w przeglądarce: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);
  }

}

Ten skrypt ustawia wszystkie uprawnienia do pliku na 666, a wszystkie katalogi na 777. Zapis na świecie nie jest najlepszym zestawem uprawnień dla współdzielonego hosta, ale będziesz mógł uzyskać dostęp do swoich plików ponownie, a następnie możesz ustawić prawidłowe wartości za pomocą FTP.

Harald Leithner
źródło
1

Późno na imprezę. Przyszedłem tutaj, szukając, jak również innych miejsc, ostatecznego przewodnika na temat tego, jakie foldery muszą być dostępne do zapisu dla Joomla.

Przepraszam, że jestem zwiastunem złych wiadomości.

Porada dotycząca korzystania z uprawnień 755 dla wszystkich katalogów i 644 dla wszystkich folderów jest co najmniej nieodpowiedzialna .

Uczynienie właściciela wszystkich folderów i plików do zapisu jest w porządku, o ile właścicielem nie jest serwer WWW (Apache i in.).

Wiem, że jest to powszechnie zalecana praktyka, ale zapewniam, że nie jest to dobra praktyka. Ostatnim oprogramowaniem, które chcesz umożliwić zapisywanie w folderach, jest sam serwer WWW. Jest to serwer sieciowy wykorzystywany przez hakerów do wykorzystywania tego exploita, który nie został jeszcze załatany (lub nawet znaleziony).

Czy uważasz, że .htaccess uratuje twojego Kevina? Zapomnij, ponieważ pozwoliłeś serwerowi na dostęp do zapisu, nasi drodzy przyjaciele hakerów mogą tworzyć własne pliki .htaccess, dające im dowolne uprawnienia! jak Oh nie wiem Umm sprawia, że ​​pliki .jpg mogą być wykonywane przez serwer. I myślałeś, że ochrona przed egzekucją .php pokryje twoje A.

Ale upewnij się, że faktycznie mają go tylko foldery wymagające dostępu do zapisu. 755 i 644 dla następujących folderów.

public_html/images
public_html/cache
public_html/tmp

I pamiętaj, aby WYŁĄCZYĆ pliki .htaccess z AllowOveride none dla wszystkich zapisywalnych folderów (takich jak te powyżej)

Dla tych z was na wspólnym hostingu powodzenia, ponieważ jest to element konfiguracji, którego nie można kontrolować.

Nie sądzę, że utworzenie pliku .htaccess tylko do odczytu pomoże. Jeśli nasi hakerzy mogą utworzyć nowy folder (mogą), mogą utworzyć własny .htaccess.

Dla tych z was, którzy prowadzą hosting dzielony dla wszystkiego, co święte, proszę uzyskać wskazówkę dotyczącą bezpieczeństwa.

Jeśli nie rozumiesz bezpieczeństwa, wyjdź z firmy hostingowej, którą utrudniasz nam.

Teraz wracam do wyszukiwania ostatecznego przewodnika po folderach wymagających dostępu do zapisu ...

DeveloperChris
źródło
Dzięki Chris, ale prawdopodobnie będę trzymać standardowych uprawnień do plików 755 i 644, podczas gdy jest to zalecane przez oficjalną stronę internetową Joomla i ekspertów ds. Bezpieczeństwa, takich jak Sucuri: docs.joomla.org/Security_and_Performance_FAQs blog.sucuri.net/2015/09/ …
Neil Robertson,
Tak, wiem, że jest to „zalecane”, ale kiedy zostaniesz wykorzystany i ustalisz, dlaczego zostałeś wykorzystany, zapewniam cię, że wyrzucisz „rekomendacje” przez okno i zaczniesz od zera. Zalecenia są ścieżką najmniejszego oporu. Nie najbezpieczniejszy.
DeveloperChris
Kroki od 1 do 10 z listy „Utrzymywanie bezpieczeństwa witryny Joomla” na stronie joomla.stackexchange.com/a/180/120 wraz ze standardowymi uprawnieniami do plików działały dobrze w przypadku około 50 witryn, których szukałem ostatnie kilka lat. Twój przebieg może się oczywiście różnić.
Neil Robertson
@NeilRobertson Zgadzam się z tą listą, ale jeśli istnieje exploit, który nie jest przez to uwięziony, twoją ostatnią linią obrony jest nieudzielanie uprawnień do zapisu na serwerze WWW (Apache i in.). Nawiasem mówiąc, to nie jest rada dotycząca Joomla. Ponadto większość osób nie może wdrożyć wielu zaleceń z tej listy. Po prostu nie mają zasobów lub korzystają z tańszego (nie najtańszego) hostingu.
DeveloperChris