it-swarm-id.com

Praktik yang disarankan mengenai izin file / direktori Joomla dan kepemilikan pada sistem linux?

Di masa lalu saya sering mengalami masalah dengan izin dan kepemilikan file/direktori Joomla di sistem linux.

Termasuk masalah

  • Tidak dapat mentransfer file ke server menggunakan program seperti WinSCP.
  • Tidak dapat menginstal ekstensi Joomla, plugin, dll.
  • File dan folder tidak aman karena izin berbahaya dan pengaturan kepemilikan.

Apa praktik terbaik yang disarankan untuk mengatur izin dan kepemilikan di Joomla pada sistem linux?

25
TryHarder

Ada beberapa penyebab potensial untuk masalah izin file dan folder pada hosting Linux.

1. Izin File dan Folder

Periksa izin folder diatur ke 0755 dan izin file diatur ke 0644. Perhatikan bahwa izin file dan folder dapat diatur ulang ke pengaturan aman standar ini di seluruh situs menggunakan versi gratis atau versi berbayar dari Alat Admin Akeeba.

2. PHP Parameter

Periksa parameter upload_max_filesize di tab Informasi PHP di Informasi Sistem sudah mencukupi. Anda sering dapat mengganti pengaturan default di lingkungan hosting bersama melalui pengaturan PHP di cPanel atau file php.ini Khusus.

3. Paths salah dalam configuration.php

Anda mungkin memiliki jalur yang salah yang ditentukan untuk folder tmp dan log. Ini ditentukan dalam Konfigurasi Sistem atau dapat diperbarui secara langsung dalam file configuration.php jika Anda merasa nyaman mengedit file sistem secara langsung. Jika Anda tidak yakin akan seperti apa jalurnya, buat dan unggah file whereami.php (Atau serupa) ke folder root situs web Anda dengan konten berikut:

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

Telusuri ke [mywebsite].com/whereami.php Untuk melihat path ke folder root.

Setelah Anda memiliki jalur yang benar, ingatlah untuk menghapus file whereami.php.

4. Penangan File PHP Tidak Cocok

Hosting web Anda mungkin dikonfigurasikan dengan penangan file default PHP tetapi idealnya harus menggunakan suPHP atau FastCGI atau serupa sehingga Joomla dapat mengunggah dan mengeksekusi file menggunakan izin file aman.

Anda dapat melihat apa yang digunakan pawang PHP di System -> System Information -> WebServer to PHP Interface.

Ada artikel bagus tentang manfaat relatif dari penangan file PHP di: http://boomshadow.net/tech/php-handlers

Dalam lingkungan hosting bersama, Anda biasanya tidak memiliki akses untuk mengubah file handler PHP mana yang diaktifkan tetapi perusahaan hosting web Anda mungkin dapat mengubahnya untuk Anda.

Kadang-kadang sebagai penyelesaian, izin file dan folder diubah menjadi 0777 tetapi ini membuat situs web Anda dalam keadaan rentan dan izin file 0777 umumnya harus dihindari.

Jika perusahaan hosting web Anda tidak dapat mengaktifkan suPHP atau FastCGI, satu-satunya pilihan lain adalah menemukan perusahaan hosting web baru.

5. Ruang Disk

Periksa Anda belum melampaui kuota ruang disk Anda.

DAFTAR PERIKSA MASALAH

Apa praktik terbaik yang disarankan untuk mengatur izin dan kepemilikan di Joomla pada sistem linux?

Lihat 1 dan 4.

Tidak dapat mentransfer file ke server menggunakan program seperti WinSCP.

Lihat 1, 2, mungkin 4, dan 5.

Tidak dapat menginstal ekstensi Joomla, plugin, dll.

Lihat 1, 2, 3, 4 dan 5.

File dan folder tidak aman karena izin berbahaya dan pengaturan kepemilikan.

Lihat 1 dan 4.

22
Neil Robertson

Silakan periksa level izin, masing-masing harus 644 dan 755 untuk file dan folder.

Sering kali tingkat izinnya baik-baik saja, bahkan ketika beberapa masalah dihadapi. Ini berarti bahwa Anda harus memeriksa kepemilikan dan grup file dan folder tertentu . Biasanya grup dan kepemilikan dapat diubah menjadi www-data untuk Apache (digunakan di server web berbasis ubuntu).

Jangan ragu untuk memeriksa dokumen Joomla menarik ini berdasarkan memverifikasi izin file.

12
Shyam

Solusi mudah bagi saya adalah dengan sering membiarkan PHP berjalan dalam mode (Cepat-) CGI dan untuk mengatur kepemilikan direktori Joomla kepada pengguna FTP. Jadi Anda akan dapat mengunggah dan menimpa file melalui FTP dan Joomla akan dapat menulis file juga.

Cara untuk melakukan ini pada lingkungan hosting bersama (jika diizinkan), adalah menambahkan sesuatu seperti ini ke file .htaccess Anda:

AddHandler php53-cgi .php

Lihat juga ikhtisar tentang mode yang berbeda .

8
fruppel

Izin harus 644 dan 755 seperti yang dijelaskan oleh Shyam.

Masalah yang Anda hadapi kemungkinan besar terkait dengan cara server Anda diatur. Sebagian besar waktu ini terjadi pada host bersama di mana Apache berjalan di bawah pengguna yang berbeda dari akun FTP Anda. Karena Anda biasanya mengunggah Joomla menggunakan FTP, Apache bukan pemilik file dan karenanya tidak memiliki izin yang diperlukan untuk mengubahnya.

Ada mode FTP dalam Joomla yang memungkinkan Anda untuk melewati masalah ini. Anda dapat mengaktifkannya di konfigurasi global Joomla. Kemudian akan melakukan semua pengaksesan file menggunakan pengguna FTP alih-alih pengguna Apache biasa.

Namun cara yang lebih baik adalah meminta Host Anda untuk memperbaiki masalah ini. Mereka dapat mengatur PHP (Apache) untuk dijalankan di bawah pengguna khusus, yang dalam hal ini adalah pengguna FTP Anda. Maka semuanya akan berfungsi dengan baik.

7
Bakual

Izin harus 644 dan 755 seperti yang dijelaskan oleh Shyam.

Di Joomla Anda dapat menghindari semua masalah yang Anda sebutkan, dengan metode berikut.

Tidak dapat mentransfer file ke server menggunakan program seperti WinSCP.

  • Ini mungkin terjadi karena izin (444) seperti Joomla configuration.php dapatkan izin ini yang tidak diizinkan secara default (untuk keamanan).
  • Situasi lain untuk kesalahan yang sama ini adalah ketika Anda mentransfer situs atau folder dari satu server ke yang lain.

Tidak dapat menginstal ekstensi Joomla, plugin dll.

  • Ini akan terjadi karena temp/log folder izin buruk. (Diperlukan 755)

  • Atau alasan lain adalah temp/log path salah dalam configuration.php

File dan folder tidak aman karena izin berbahaya dan pengaturan kepemilikan.

  • Ini yang paling penting, Joomla selalu menyarankan untuk tidak menggunakan 777 untuk file dan folder jika Anda tidak mengetahui ini .

Semoga ini bisa membantu ..

7
Jobin Jose

Ya, izin harus 644 dan 755 sebagai dijelaskan oleh Shyam , tetapi poster lain lupa menyebutkan bahwa ini adalah jika file tersebut dimiliki oleh server web Anda, dan grup tersebut adalah grup milik Anda.

Misalnya, di FileZilla Anda akan melihat izin seperti ini:

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

Izin drwxr-xr-x adalah 755 (abaikan saja dr terkemuka jadi itu wxr-xr-x). Izin baca bernilai 4, Izin menulis bernilai 2 dan jalankan izin bernilai 1 .. sehingga memiliki semuanya hingga 7, dan itulah yang dimiliki oleh pemilik file ini. Grup telah membaca dan mengeksekusi izin tetapi tidak menulis, sehingga mereka memiliki 5, dan semua orang juga memiliki 5. membuat izin 755.

754 adalah pemilik yang telah membaca, menulis, mengeksekusi. Grup telah membaca dan mengeksekusi, dan semua orang hanya memiliki izin baca.

Pada contoh di atas, Anda dapat melihat bahwa pemilik file adalah www-data (yang merupakan grup server web default untuk banyak server Apache) dan Grup adalah grup myGroup, yang merupakan Grup (admin) yang menjadi milik saya.

Angka pertama adalah izin pemilik, yang kedua adalah izin grup, dan angka ketiga adalah izin semua orang. Jelas, Anda harus berhati-hati untuk memberikan izin yang dibutuhkan server web ... dan pastikan file yang perlu dikunci tidak dapat ditulis atau dieksekusi oleh sembarang orang (nomor ketiga). Berikut ini arti angka-angkanya:

Dengan anggapan Webserver memiliki file, admin Anda ada di grup, dan tentu saja, semua orang adalah nomor ketiga.

644: File dengan izin yang diatur ke 644 dapat dibaca oleh semua orang dan hanya dapat ditulis oleh pemilik file/folder.

755: File dengan izin yang diatur ke 755 dapat dibaca dan dieksekusi oleh semua orang, tetapi hanya dapat ditulisi oleh pemilik file/folder.

777: File dengan izin yang diatur ke 777 dapat dibaca, ditulis, dan dieksekusi oleh semua orang. Jangan gunakan rangkaian izin ini, karena alasan keamanan, di server web Anda kecuali benar-benar diperlukan, dan hanya sementara. Ini adalah bencana yang menunggu untuk terjadi, terutama jika direktori memiliki izin tersebut .. itu berarti siapa pun dapat mengunggah file dan menjalankannya.

Berikut adalah perintah Linux untuk mengatur Joomla! izin yang disarankan dari baris perintah. Izin File Joomla yang Direkomendasikan

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

CATATAN - banyak orang akan menunjukkan kepada Anda perintah-perintah ini tanpa path, tetapi saya lebih suka SELALU menggunakan path lengkap, karena jika Anda lupa mengubah direktori ke root Joomla! direktori instalasi dan jalankan tanpa path, Anda baru saja mengubah izin untuk setiap file dan direktori di direktori teratas itu, dan membuat kekacauan besar.

Setelah Anda menjalankan perintah ini, Anda harus memperbaiki izin untuk direktori apa pun yang membutuhkan izin lebih banyak ... misalnya ... pengguna mengunggah gambar dll.

JIKA ANDA HANYA MENGGUNAKAN JOOMLA! antarmuka, dan Anda tidak memiliki akses admin atau FTP ke server, lalu GUNAKAN KEPEMILIKAN dan IZIN DI ATAS.

BERHENTI DI SINI JIKA ANDA ADALAH NOVICE .. Di bawah ini hanya untuk orang yang benar-benar memahami apa yang dilakukan izin dan kepemilikan.

Namun, saya merasa memiliki kepemilikan dan izin seperti itu sangat tidak mudah karena saya sering menggunakan FileZilla dan baris perintah sesi Terminal, dan saya mengunggah banyak file secara manual. Tetapi saya tidak dapat menimpa file apa pun karena saya tidak memilikinya dan saya tidak punya izin untuk menulis. Saya dapat meminta FileZilla masuk di bawah akun server web, TAPI ... Saya ingin FileZilla masuk di akun saya, jadi saya juga dapat menelusuri direktori lain, bukan hanya file yang dapat diakses oleh server web ... SO ... Saya mengubah kepemilikan dan izin untuk ini:

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

Saya menjadikan diri saya pemilik, dan meletakkan server web di Grup ... dan saya mengubah izin untuk direktori menjadi 775, dan untuk file menjadi 664. Membuat hidup saya jauh lebih mudah ... tapi saya tidak merekomendasikannya untuk semua orang.

Jika Anda melakukannya dengan cara saya, ini adalah perintahnya:

 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

Jawaban lain memberikan penjelasan yang baik tentang apa yang harus dilakukan, saya hanya ingin menambahkan skrip untuk memperbaiki izin jika Anda sudah mengunggah komponen dan tidak dapat mengakses file dengan ftp.

Dalam hal ini saya akan mengunggah file ini sebagai fix.php ke server FTP dan membukanya di browser: 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);
  }

}

Skrip ini menyetel semua izin file ke 666 dan semua direktori menjadi 777. World writable --- tidak set izin terbaik untuk Host bersama tetapi Anda akan dapat mengakses file Anda lagi dan kemudian dapat mengaturnya ke nilai yang benar dengan FTP.

4
Harald Leithner

Terlambat ke pesta. Saya datang ke sini mencari serta tempat-tempat lain untuk panduan yang pasti tentang folder apa yang harus ditulis untuk joomla.

Maaf, orang-orang yang menjadi pertanda berita buruk.

Saran untuk menggunakan izin 755 untuk semua direktori dan 644 untuk semua folder setidaknya tidak bertanggung jawab.

Membuat semua folder dan file Anda dapat ditulisi oleh pemilik adalah sah saja asalkan pemiliknya bukan server web (Apache et al).

Saya tahu ini adalah praktik yang disarankan umum tetapi saya dapat meyakinkan Anda bahwa ini bukan praktik yang baik. Bagian terakhir dari perangkat lunak yang ingin Anda beri kemampuan untuk menulis ke folder adalah server web itu sendiri. Ini adalah server web yang digunakan oleh peretas untuk mengambil keuntungan dari eksploitasi yang belum ditambal (atau bahkan ditemukan).

Apakah menurut Anda .htaccess akan menyelamatkan Kevin Anda? Lupakan saja karena Anda mengizinkan akses tulis server web, teman-teman peretas kami yang terkasih dapat membuat file .htaccess mereka sendiri dengan memberikan izin apa pun yang mereka inginkan! seperti Oh, saya tidak tahu Umm membuat file .jpg dapat dieksekusi oleh server. Dan Anda berpikir melindungi terhadap eksekusi .php akan menutupi A. Anda.

Tetapi pastikan hanya folder yang membutuhkan akses tulis yang benar-benar memilikinya. 755 dan 644 untuk folder berikut.

public_html/images
public_html/cache
public_html/tmp

Dan pastikan Anda mematikan file .htaccess dengan tidak ada AllowOveride untuk semua folder yang dapat ditulisi (seperti yang di atas)

Bagi Anda yang menggunakan shared hosting semoga sukses karena ini adalah elemen konfigurasi yang tidak dapat Anda kontrol.

Jangan berpikir membuat file .htaccess hanya membaca akan membantu. Jika teman-teman peretas kami dapat membuat folder baru (mereka dapat) maka mereka dapat membuat .htaccess mereka sendiri.

Bagi Anda yang menjalankan shared hosting untuk semua yang sakral, silakan dapatkan petunjuk tentang keamanan.

Jika Anda tidak mengerti keamanan, silakan keluar dari bisnis hosting yang Anda buat sulit bagi kita semua.

Sekarang kembali ke pencarian saya untuk panduan definitif pada folder yang membutuhkan akses tulis ...

1
DeveloperChris