Ubah semua izin file dan folder direktori ke 644/755


184

Bagaimana saya mengubah semua file menjadi 644 dan semua folder menjadi 755 menggunakan chmoddari linuxcommand prompt? (Terminal)


6
Jika seseorang (@animuson) berbaik hati menjelaskan kepada saya, mengapa pertanyaan chmod ini di luar topik dan yang lainnya (14,438 hasil) di sini tidak ...
— hugo der hungrige

Agak terlambat, tetapi perintah yang satu ini juga akan melakukan jawaban yang diterima dalam satu kesempatan: chmod -R a = r, a + X, u + w / your / path
— MichaelICE

Pertanyaan bagus, tidak pantas ditutup. Ini lebih baik dipindahkan ke sub situs stackoverflow daripada ditutup.
— Erik Friesen

1
@hugoderhungrige artinya pergi bertanya di situs Server seperti http://superuser.com:: P tapi pertanyaan ini membantu saya di sini, terima kasih.
— emotalitas

Jawaban:


345

Satu pendekatan dapat menggunakan find:

untuk direktori

find /desired_location -type d -print0 | xargs -0 chmod 0755

untuk file

find /desired_location -type f -print0 | xargs -0 chmod 0644

21
hanya untuk orang lain seperti saya, ini tidak berfungsi sebagai gantinya mencoba sudo find /your/location -type f -exec chmod 644 {} \;untuk file dan sudo find /your/location -type d -exec chmod 755 {} \;untuk direktori
— NineCattoRules

Saya menjalankan solusi asli dan itu mengacaukan izin saya pada file dan direktori. Awas! solusi pada komentar itu berhasil, terima kasih!
— Mahsa Mortazavi

3
Kenapa (?) Lebih baik tham chmod -R a=r,u+w,a+X /foo?
— Peter Krauss

gagal denganunable to execute /bin/chmod: Argument list too long
— vladkras

Bagaimana jika saya hanya menginginkan subfolder menjadi chmod 755 ketika menentukan lokasi yang diinginkan? Karena ini juga akan membuat folder induk 755
— MaXi32

105

Cara termudah adalah melakukan:

chmod -R u+rwX,go+rX,go-w /path/to/dir

yang pada dasarnya berarti:

untuk chberkas ange modes -Recursively dengan memberikan:

  • user: read, writus dan Xizin ecute,
  • gopengguna roup dan lainnya: izin read dan e Xecute, tetapi bukan -wizin ritus.

Harap dicatat bahwa Xakan membuat direktori dapat dieksekusi, tetapi bukan file, kecuali itu sudah dapat dicari / dieksekusi.

+X - membuat direktori atau file dapat dicari / dieksekusi oleh semua orang jika sudah dapat dicari / dieksekusi oleh siapa pun.

Silakan periksa man chmodrincian lebih lanjut.

Lihat juga: Bagaimana cara chmod semua direktori kecuali file (secara rekursif)? di SU


7
chmod -R a = r, u + w, a + X / foo
— John Allsup

9
Jawaban ini, meskipun rapi, memang memiliki masalah: file yang dapat dieksekusi sebelum menjalankan perintah akan dapat dieksekusi setelahnya. Lihat jawaban @JohnAllsup untuk perintah yang tidak memiliki cacat ini.
— mzuther

4
@mzuther kecuali masalah ini sebenarnya fitur untuk Anda
— RiaD

37

Yang terpendek yang bisa saya pikirkan adalah:

chmod -R a=r,u+w,a+X /foo

yang bekerja pada GNU / Linux, dan saya percaya pada Posix secara umum (dari bacaan saya: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).

Apa yang dilakukan adalah:

  1. Setel file / direktori ke r__r__r__ (0444)
  2. Tambahkan w untuk pemilik, untuk mendapatkan rw_r__r__ (0644)
  3. Atur eksekusi untuk semua jika direktori (0755 untuk dir, 0644 untuk file).

Yang penting, izin langkah 1 menghapus semua bit eksekusi, jadi langkah 3 hanya menambahkan bit eksekusi kembali untuk direktori (tidak pernah file). Selain itu, ketiga langkah terjadi sebelum direktori diulang (jadi ini tidak setara dengan misalnya

chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo

karena a = r menghapus x dari direktori, maka chmod tidak dapat mengulanginya.)


cemerlang! banyak membantu saya
— Jannie Theunissen

13

Yang paling mudah saya ingat adalah dua operasi:

chmod -R 644 dirName
chmod -R +X dirName

+ X hanya memengaruhi direktori.


1
Sederhana dan aman
— Marco Marsala

12

Pada https://help.directadmin.com/item.php?id=589 mereka menulis:

Jika Anda memerlukan cara cepat untuk mereset data public_html Anda ke 755 untuk direktori dan 644 untuk file, maka Anda dapat menggunakan sesuatu seperti ini:

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

Saya menguji dan ... berhasil!


Penolong! Terima kasih atas solusi bersih untuk masalah ini! Bekerja untuk saya ketika perlu memperbaiki masalah izin untuk pemasangan WordPress!
— twknab

Berfungsi dengan baik untuk membuat penyesuaian dalam direktori.
— Christian Berendt

8

Ini bekerja untuk saya:

find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

3
Hati-hati: Perintah ini tidak akan menangani file atau direktori dengan spasi di namanya. Perintah dalam jawaban yang diterima akan.
— Chad Nouis

1
Peringatan ini hanya berlaku, jika {} tidak dikelilingi oleh tanda kutip ... dengan demikian, tidak ada alasan untuk bermain-main dengan print0 dan xargs -0, berikut sudah cukup:find /A -type X -exec chmod Y '{}' \;
— Michael Stumpfl

6

Lakukan keduanya dalam sekali jalan dengan:

find -type f ... -o -type d ...

Seperti pada, cari tipe f ATAU ketik d, dan lakukan yang pertama ... untuk file dan yang kedua ... untuk dir. Secara khusus:

find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

Tinggalkan --changesjika Anda ingin itu bekerja secara diam-diam.


2

Jika Anda memerlukan cara cepat untuk mereset data public_html Anda ke 755 untuk direktori dan 644 untuk file, maka Anda dapat menggunakan sesuatu seperti ini:

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

selain itu, jika Anda tahu PHP berjalan sebagai pengguna dan bukan sebagai "apache", maka Anda dapat mengatur file PHP ke 600, untuk tingkat keamanan tambahan, misalnya:

find . -type f -name '*.php' -exec chmod 600 {} \;

Anda dapat menemukan sumber ini di sini: https://help.directadmin.com/item.php?id=589


-9

Ini juga bisa bekerja:

chmod -R 755 *  // All files and folders to 755.

chmod -R 644 *.*  // All files will be 644.

1
JANGAN SIAPA PUN SIAPA PUN! itu mempengaruhi server lengkap!
— T.Todua
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.