Izin yang benar untuk / var / www dan wordpress


41

Saya telah menyiapkan server LAMP dan saya memiliki akses melalui SSH dan ke halaman "berfungsi" dari browser web dari dalam jaringan saya (melalui alamat ip) dan dari luar menggunakan dyndns.

Kami memiliki beberapa proyek Wordpress yang berada di subdirektori di / var / www / wordpress1 / var / www / wordpress2, dll. Saya tidak dapat mengakses sub direktori ini dari browser untuk mengatur WP - atau (saya berasumsi) untuk melihat konten di browser. Saya mendapatkan kesalahan 403 Terlarang di browser saya.

Saya berasumsi bahwa ini adalah masalah izin. Bisakah Anda memberi tahu saya pengaturan yang tepat untuk izin untuk:

  1. Izinkan pengembang dan saya membaca / menulis.
  2. untuk memungkinkan WP mengatur dan melakukan hal tersebut
  3. Izinkan pengunjung mengakses situs melalui web.

Saya juga harus menyebutkan bahwa subfolder sebenarnya simlink ke folder pada hdd internal lain - saya tidak berpikir ini akan membuat perbedaan, tapi saya pikir saya harus mengungkapkannya.

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

Ini adalah hasil penggunaan 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

Saya masih tidak dapat mengakses melalui browser.


Silakan kirim output dari perintah ls -la /var/www.
SirCharlo

harap cantumkan informasi itu dalam pertanyaan Anda!
Jorge Castro

OK, butuh satu detik bagi saya untuk mengingat bagaimana memposting kode ...
dpbklyn

Ok, coba sajachown -R www-data:www-data /var/www
SirCharlo

2
Saya pikir masalah Anda sekarang adalah Anda menggunakan tautan. Apache tidak akan mengikuti tautan. Apa yang akan Anda lakukan adalah memindahkan file-file itu ke / var / www dan mengkonfigurasi apache untuk menggunakan vitrualhosts. Lihat help.ubuntu.com/10.04/serverguide/httpd.html Alternatif, jika Anda ingin menggunakannya /hdd/web/wordpressadalah mengkonfigurasi Apache (direktori root) dengan benar. Anda dapat mengonfigurasi apache untuk menggunakan tautan, tetapi saya tidak menyarankannya. Lihat juga help.ubuntu.com/community/WordPress
Panther

Jawaban:


81

Pertama, Anda harus memastikan bahwa nama pengguna Anda termasuk dalam www-datagrup. Jika tidak, Anda dapat menambahkan nama pengguna Anda sebagai www-datagrup

sudo adduser $USER www-data

Setelah itu, Anda harus mengubah kepemilikan / var / www menjadi nama pengguna Anda

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

Langkah selanjutnya, untuk praktik umum , Anda harus mengubah izin menjadi 755 (rwxr-xr-x), tidak menyarankan mengubah izin menjadi 777 karena alasan keamanan

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

Terkait dengan izin khusus untuk wordpress atau laravel atau framework lain, maka Anda dapat membaca dokumentasi masing-masing.

Semoga ini bisa membantu ...


1
tidak bekerja untuk saya, saya tambahkan menggunakansudo chown www-data:www-data -R mywordpressdirectory/
Louis

Setelah mengubah kepemilikan, Anda juga harus mengubah izin. Apakah Anda mengubah izin Anda ke 755?
metamorph

1
Dia melakukannya dengan chmod. Dia mengubah izin menjadi 755 dengan bit lengket (untuk menyimpan file baru yang dimiliki oleh www-data.)
Zachary Dahan

Penjelasan terbaik yang bisa saya temukan, pendek dan manis. Terima kasih.
Banago

1
Dengan demikian Anda tidak akan dapat menginstal / menghapus plugin / tema dll dari panel admin karena WordPress tidak akan memiliki izin menulis.
Igor Skoldin

3

Rupanya inilah yang direkomendasikan dalam Panduan Server Ubuntu:

Bab 11. Server Web.

1.4. Membagikan Izin Menulis

Agar lebih dari satu pengguna dapat menulis ke direktori yang sama, Anda perlu memberikan izin menulis kepada grup yang mereka miliki bersama. Contoh berikut memberikan izin menulis bersama ke / var / www / html ke grup "webmaster"

Saya menggunakan data-www . Cukup ganti "webmaster" dengan grup Anda, pastikan Anda menambahkan pengguna ke grup tentu saja.

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

Saya baru saja mengujinya dengan Dreamweaver dari desktop mac saya dan mengunggah dan mengganti file, menambahkan file, dll. Dan mempertahankan izin yang benar dengan satu pengecualian, pengguna lokal menjadi pemilik file baru bersama dengan www-data, tetapi file apa pun yang dibuat oleh root di Direktori html mempertahankan kepemilikannya sebagai root tetapi dapat diedit oleh pengguna lokal.

$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

Semoga ini jelas dan membantu yang lelah, karena aku tahu aku selalu lelah dengan situasi ini, tapi sekarang sudah jelas bagiku.

Oh dan saya sangat merekomendasikan menggunakan sftp dengan kunci untuk mengakses ftp Anda, berfungsi bagus untuk saya dan tidak perlu PureFTP atau metode tidak aman lainnya untuk mengirimkan file ke situs web. Ada beberapa tutorial bagus di situs Digital Ocean tentang cara mengamankan server Anda dengan kunci ssh:

Cara Mengkonfigurasi Otentikasi Berbasis Kunci SSH di Server Linux


1) yang meninggalkan bit setgid pada file. Terlihat aneh, tidak melakukan apa-apa, membuka pintu ke masalah keamanan jika pengguna dapat membuat file dapat dieksekusi dan menjalankannya. Tetapi jika Anda senang dengan setgid pada file, ganti finds kompleks dengan hanya sudo chmod -R g=srwX /var/www/html.
temoto

2) find -exec chmodakan menelurkan program terpisah untuk setiap file, yang memakan waktu dan memberikan tekanan yang tidak perlu pada sistem jika Anda memiliki banyak file. Solusi: sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rw. xargs akan mencoba memberi makan sebanyak mungkin lintasan file ke satu instance chmod.
temoto

0

Periksa apakah Apache memiliki hak untuk /hdd/web/mediadan /hdd/web/wordpress.

Menjalankan:

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

Selain itu, Apache harus dikonfigurasi untuk memungkinkan akses ke direktori pada sistem file. Ini harus dilakukan oleh administrator sistem dengan memasukkan arahan dalam file konfigurasi apache (httpd.conf).

Karena direktori sebenarnya ada di dalam root web, itu harus dapat diakses, tetapi FollowSymLinks mungkin tidak diaktifkan untuk direktori - ini juga harus ditambahkan ke direktif.

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


Terima kasih semua ... Saya telah memutuskan untuk pergi dengan jalan perlawanan paling sedikit ... menghapus symlink. Semua bekerja dengan sempurna.
dpbklyn

0

Membaca di sekitar panduan instalasi untuk Ubuntu ..

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

Mungkin bisa lebih mudah untuk menginstalnya dengan cara ini daripada mencoba unzip file /var/www

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

cara wordpress berjalan pada apache ... kan? jika Anda ingin melakukannya dengan cara itu .. Anda tunjukkan lakukan sebagai @metamorph lalu berikan permisson pada apache2 httpd.confseperti ini:

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

        DirectoryIndex index.php

</VirtualHost>

dan kemudian default-server.conf.

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

Mungkin yang terbaik adalah melakukan langkah demi langkah https://help.ubuntu.com/community/WordPress

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.