Izin folder / file Magento 2

61

Saya menduga bahwa izin mungkin sudah kacau pada instalasi Magento 2 saya. Pada versi lama saya akan menjalankan perintah berikut untuk membuat folder 755 dan file 644:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

Bisakah Anda beri tahu saya izin file dan folder yang benar untuk Magento 2 karena sepertinya berbeda? Juga, jika ada beberapa folder atau file tertentu yang memerlukan izin berbeda.

Neekoy
sumber
Coba 777 Izin sebelum mengambil cadangan
Magento 2
PHP handler server saya adalah suPHP dan saya tidak benar-benar ingin menetapkan 777 untuk semuanya karena itu praktis akan membuka situs web saya kepada siapa pun. Apakah ada izin yang lebih spesifik yang dapat ditetapkan?
Neekoy
Magento memiliki izin file pada folder ke 775 dan untuk izin file diatur ke 644
Rishabh Rk Rai
FYI, jika magento 2 ada di direktori "home", var/cachedan pub/staticperlu bit suid ditetapkan. Saya menggunakan: find var/cache -type d -print0 | xargs -0 sudo chmod 1775
Chris K

Jawaban:

118

Anda dapat merujuk http://devdocs.magento.com/

Hal-hal penting:

Pemilik sistem file Magento: Harus memiliki kontrol penuh (baca / tulis / eksekusi) semua file dan direktori.

Tidak boleh menjadi pengguna server web; seharusnya pengguna yang berbeda.

Pengguna server web harus memiliki akses tulis ke file dan direktori berikut: var app / etc pub (dan mungkin baru dalam 2.2.1 :) yang dihasilkan

Selain itu, grup server web harus memiliki sistem file Magento sehingga pengguna Magento (yang ada di grup) dapat berbagi akses ke file dengan pengguna server web. (Ini termasuk file yang dibuat oleh Admin Magento atau utilitas berbasis web lainnya.)

Kami merekomendasikan pengaturan izin sebagai berikut:

All directories have 770 permissions.

770 permissions give full control (that is, read/write/execute) to the owner and to the group and no permissions to anyone else.

All files have 660 permissions.

660 permissions mean the owner and the group can read and write but other users have no permissions.

Anda harus mengatur seperti di bawah ini yang direkomendasikan.

cd <your Magento install dir> 

find . -type f -exec chmod 644 {} \;                        // 644 permission for files

find . -type d -exec chmod 755 {} \;                        // 755 permission for directory 

find ./var -type d -exec chmod 777 {} \;                // 777 permission for var folder    

find ./pub/media -type d -exec chmod 777 {} \;

find ./pub/static -type d -exec chmod 777 {} \;

chmod 777 ./app/etc

chmod 644 ./app/etc/*.xml

chown -R :<web server group> .

chmod u+x bin/magento

Saya harap ini akan membantu Anda.

bantah vachhani
sumber
3
Ini hanya berfungsi untuk saya dengan \;, misalnya:find ./var -type d -exec chmod 777 {} \;
bpoiss
1
Tapi ini untuk mode pengembangan. Untuk produksi itu harus dibaca oleh kelompok - tidak tahu bagaimana itu harus bekerja
Alex
3
Saya pikir Anda juga harus chmod u+x bin/magentodapat menjalankan perintah konsol.
Volvox
42
teman jangan biarkan teman 777
Darren Felton
6
app / etc 777> Haha bagus. Mudah diretas. app / etc berisi informasi db Anda
CompactCode
19

Dalam beberapa kasus yang jarang terjadi, Anda tidak dapat menggunakan 770 dan 660, seperti kata @MagenX, 755 dan 644 juga bisa menjadi izin yang Anda butuhkan. (Saya kira, beberapa pengguna Fast-CGI)

Jadi dalam hal ini, Anda menjalankan:

find . -type d -exec chmod 755 {} \; && find . -type f -exec chmod 644 {} \; && chmod u+x bin/magento

Tampaknya memperbaikinya, tetapi jika Magento menghasilkan file atau direktori baru, mereka akan memiliki izin 770 dan 660 lagi. Anda dapat mengedit nilai chmod default di file berikut:

/vendor/magento/framework/Filesystem/DriverInterface.php 
(WRITEABLE_DIRECTORY_MODE and WRITEABLE_FILE_MODE)

/lib/internal/Cm/Cache/Backend/File.php 
(directory_mode and file_mode)

Setelah perubahan ini, jalankan perintah pertama lagi dan setelah itu, file yang baru dibuat seharusnya tidak menjadi masalah lagi.

Catatan: Mengedit file seperti ini tidak pernah merupakan ide yang baik, tetapi saya menduga opsi chmod ini akan dapat dikonfigurasi di masa depan, jadi saya mengambil jalan yang mudah.

Daniel van der Garde
sumber
1
Tidak dapat menemukan /lib/internal/Cm/Cache/Backend/File.php di M231
snh_nl
@ snh_nl Dalam versi Magento yang lebih baru, mereka tidak menetapkan izin lagi jika mereka melakukannya, sepertinya mereka menggunakan 775. Setelah instalasi baru Anda dapat menjalankan: find. -type f -exec chmod 664 {} \; Temukan . -type d -exec chmod 775 {} \; find ./var -type d -exec chmod 777 {} \; find ./pub/media -type d -exec chmod 777 {} \; temukan ./pub/static -type d -exec chmod 777 {} \; chmod 777 ./app/etc chmod 644 ./app/etc/*.xml chmod u + x bin / magento Di root dan Anda harus baik-baik saja.
Daniel van der Garde
11

Anda dapat menggunakan metode ini seperti yang direkomendasikan oleh dokumentasi Magento :

find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;
find var pub/static pub/media app/etc -type f -exec chmod g+w {} \;
find var pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
chmod u+x bin/magento
Rafael Corrêa Gomes
sumber
Bagaimana cara memberi izin menulis ke folder yang dibuat di windows? @Rafael Corrêa Gomes
zus
8
sudo find . -type d -exec chmod 770 {} \; && sudo find . -type f -exec chmod 660 {} \; && sudo chmod u+x bin/magento

Untuk set pengembangan lokal pubdan varke 775 atau 777

Ethan L.
sumber
Mengapa? (Ada minimum untuk panjang komentar)
vitoriodachef
7

Jika Anda menggunakan SELinux ̣ (mis. CentOS) coba:

sudo chcon -R -t httpd_sys_rw_content_t var

(tentu saja dari folder root magento)

Haha
sumber
6

Di Magento, Komunitas merekomendasikan

Kami merekomendasikan pengaturan izin sebagai berikut:

Semua direktori memiliki 770 izin. 770 izin memberikan kontrol penuh (yaitu, baca / tulis / eksekusi) kepada pemilik dan ke grup dan tidak ada izin untuk orang lain.

Semua file memiliki 660 izin. 660 izin berarti pemilik dan grup dapat membaca dan menulis tetapi pengguna lain tidak memiliki izin.

Untuk ref lebih lanjut, tautan ini https://devdocs.magento.com/guides/v2.3/install-gde/prereq/file-system-perms.html

Magento 2
sumber
4

Masukkan konten ini ke dalam folder root Anda, lalu jalankan dengan konsol.

Jangan lupa chmod +x yourfile.sh.

#!/bin/sh
chmod 2775 -R .

chmod 777 -R ./pub/

chmod 777 -R ./var/
Sheshgiri Anvekar
sumber
bagaimana saya bisa meletakkan kode ini? sebagai htacces atau file php
matinict
Hindari ini, itu pada dasarnya membuat direktori server web Anda terbuka untuk umum. alih-alih baca devdocs yang disediakan oleh magento untuk mengamankan versi yang Anda jalankan.
themanwhoknowstheman
4

tidak ada izin khusus, Anda hanya perlu memastikan bahwa file dimiliki oleh pengguna yang menjalankan php atau seandainya pengguna cPanel - cpanel, dan grup yang sama

jadi perintahmu baik:

find . -type f -exec chmod -c 644 {} \; && find . -type d -exec chmod -c 755 {} \;

cukup perbarui pemilik file:

chown -R user:user *

dimana userpemiliknya, useryang menjalankan php.

alih-alih mengubah izin setiap kali, masuk / bekerja sebagai pengguna yang tepat, pemilik file, dari root ke pengguna:

cd /magento/root/folder/
su $(stat -c '%U' index.php) -s /bin/bash
whoami
pwd
MagenX
sumber
Bagaimana cara memberi izin menulis ke folder yang dibuat di windows? @MagenX
zus
3
find . -type f -exec chmod 400 {} \;
find . -type d -exec chmod 500 {} \;
find var/ -type f -exec chmod 600 {} \;
find media/ -type f -exec chmod 600 {} \;
find var/ -type d -exec chmod 700 {} \;
find media/ -type d -exec chmod 700 {} \;
chmod 700 includes
chmod 600 includes/config.php

Juga informasi terperinci tersedia di, http://devdocs.magento.com/guides/m1x/install/installer-privileges_after.html

Rushvi
sumber
5
Panggilan pertanyaan untuk saran di Magento 2
Flipmedia
0

saya memecahkan dengan cara ini untuk CentOS Linux 7.4.1708 pada Plesk Onyx 17.8.11

find . -type f -exec chmod 644 {} \; &&  find . -type d -exec chmod 755 {} \; && find ./var -type d -exec chmod 777 {} \; && find ./pub/media -type d -exec chmod 777 {} \; && find ./pub/static -type d -exec chmod 777 {} \; && chmod 777 ./app/etc  && chmod 644 ./app/etc/*.xml

chown -R :<web server group> .
Altravista
sumber
Anda harus menghindari penggunaan 777 pada file dan direktori. Ini membuka toko Anda untuk risiko keamanan yang tidak perlu. Sebaliknya, baca dokumen yang disediakan oleh Magento untuk versi yang Anda jalankan.
themanwhoknowstheman
0

Jalankan perintah ini sebagai pengguna root. Jika Anda telah memberikan 777 izin untuk mengembalikannya menggunakan dua perintah pertama, lanjutkan dengan sisanya.

find . -type f -exec chmod 664 {} \;

find . -type d -exec chmod 775 {} \;

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +

find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +

Setel kepemilikan ke pengguna Magento dan pengguna web menggunakan

sudo chown -R <Magento user>:<web server group> .

Menjalankan perintah-perintah ini mengatur izin untuk folder dan file di root Magento dan untuk file baru yang akan dibuat di var, pub dan direktori yang dihasilkan.

Jangan menjalankan perintah apa pun sebagai pengguna root karena dapat menyebabkan file statis baru dibuat dengan kepemilikan root yang dapat mencegah pengguna web untuk mengakses file tersebut memaksa Anda untuk memberikan 777 izin. Mohon jangan beri izin 777 jika jadi tolong kembalikan itu. Jadi jalankan perintah Magento sebagai pengguna Magento .

Raj Mohan R
sumber