chmod sebenarnya bisa melakukan ini sendiri; X izin simbolis berarti "jalankan, jika masuk akal" yang umumnya berarti pada direktori tetapi bukan file. Jadi, Anda dapat menggunakan:
chmod -R u=rwX,go=rX /path/to/htdocs
Satu-satunya masalah potensial adalah jika salah satu file biasa sudah memiliki set eksekusi, chmod menganggap itu disengaja dan menyimpannya. Jika ini merupakan masalah potensial dan Anda memiliki chmod versi GNU (yaitu Anda menggunakan Linux), Anda bisa mendapatkannya untuk menghapus izin eksekusi liar seperti ini:
chmod -R a-x,u=rwX,go=rX /path/to/htdocs
Sayangnya, trik ini tidak bekerja dengan versi bsd (/macOS) dari chmod (Saya tidak yakin tentang versi lain). Ini karena versi bsd menerapkan X izin berdasarkan "mode asli (tidak dimodifikasi)", yaitu apakah ada bit eksekusi sebelum a-x modifikasi telah dilakukan (lihat man halaman).
Gunakan find untuk mencari direktori dan menerapkan chmod padanya:
find -type d | xargs chmod 775
Gunakan jenis f untuk file:
find -type f | xargs chmod 775
Gunakan -type find opsi untuk membatasi tindakan ke file dan direktori. Gunakan -o opsi untuk menentukan tindakan alternatif untuk jenis yang berbeda, jadi Anda hanya perlu menjalankan find sekali, bukan secara terpisah untuk setiap jenis.
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +