chmod -R membuat file dalam folder anak ureadable untuk beberapa alasan

22

Saya menyesuaikan izin ketika mengatur beberapa tema WordPress, dan menjalankannya. chmod 664 -R theme-dir/*Ini berfungsi dengan baik pada file di root direktori, tetapi semua file dalam subdirektori sekarang dibaca seperti ini ketika saya ls -l:

?---------  ? ? ? ?            ? core_functions.php
?---------  ? ? ? ?            ? css
?---------  ? ? ? ?            ? custom_functions.php
?---------  ? ? ? ?            ? images
?---------  ? ? ? ?            ? import_settings.php
?---------  ? ? ? ?            ? js
?---------  ? ? ? ?            ? options_trim.php
?---------  ? ? ? ?            ? page_templates
?---------  ? ? ? ?            ? post_thumbnails_trim.php
?---------+ ? ? ? ?            ? shortcodes

Saya tidak dapat melakukan cd ke salah satu subdirektori, dan saya juga tidak bisa menghapusnya. Saya belum pernah melihat yang seperti ini, ada yang pernah mengalami hal serupa?

Sal
sumber
sepertinya sistem file rusak ..
alexus
1
runchmod -R u+rwX,go+rX,go-w theme-dir/*
Dusan Bajic
@ dusan.bajic Itu berhasil, terima kasih. Masih tidak tahu mengapa itu terjadi sejak awal.
Sal
5
@alexus tidak ada korupsi, hanya perms
ayam
Saya pikir saya melihat sesuatu seperti itu ketika saya melakukan chown 644 (atau apa pun) versus chmod, tapi saya benar-benar tidak merasa ingin menguji lagi pada sistem kerja
Foon

Jawaban:

49

Mengakses konten (atau lebih khusus file metadata kecuali nama file) direktori mengharuskan direktori tersebut memiliki bit eksekusi.

Modem rekursif Anda menghapus izin itu, sehingga Anda kehilangan akses itu. Jika Anda menggunakan -Ropsi chmodlebih baik untuk menghindari menggunakan versi numerik dari izin, dan alih-alih jalankan (menggunakan negara yang Anda inginkan sebagai contoh) chmod -R ug=rwX,o=rX. Modal X di sana berarti mengatur bit X hanya pada direktori atau file yang memiliki setidaknya satu xset. Anda juga mungkin ingin menggunakan 644 ( u=rwX,go=rX) kecuali Anda benar-benar membutuhkan pengguna grup untuk menulis.

Kevin Cathcart
sumber
6
X berarti mengeset X pada direktori dan file yang sudah memiliki izin eksekusi untuk beberapa pengguna (yang biasanya Anda inginkan)
tomclegg
1
@ Tomclegg: Benar. Saya memperbarui jawaban saya dengan tepat. Tampaknya aneh bahwa mereka tidak pernah menambahkan versi spesifik direktori yang benar, atau bahkan lebih baik surat pra-operasi (seperti u, g, o, atau a) yang berarti menerapkan perubahan ini hanya ke direktori.
Kevin Cathcart
13

Dari dokumentasi Wordpress :

Jika Anda memiliki akses shell ke server Anda, Anda dapat mengubah izin file secara rekursif dengan menggunakan perintah berikut:

Untuk Direktori:

find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;

Untuk File:

find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
bentek
sumber
Pembunuhan berlebihan untuk masalah khusus ini, tetapi sangat berguna dalam kasus lain :)
nurchi
1
Saya perhatikan di lingkungan yang lebih sensitif terhadap keamanan (Magento dan Sistem Perawatan Kesehatan baru-baru ini) bahwa vendor dan sistem open source bergerak untuk merekomendasikan HANYA menggunakan metode file karena ini memberi Anda kontrol granular layang-layang atas kondisi di atas dan juga memungkinkan kontrol berbutir halus dari aplikasi setuid, setgid dan juga "sticky bit" yang terkenal. Mungkin lebih sulit untuk memetakan ini untuk kasus penggunaan ini tetapi jawaban taruhan selalu merupakan metode yang paling aman yang mencapai hasil yang diinginkan. Saya percaya Keamanan harus selalu menjadi Fitur # 1 jika memungkinkan untuk membelinya.
Bryan 'BJ' Hoffpauir Jr.