it-swarm-id.com

Bagaimana cara mengubah izin untuk folder dan semua subfolder dan file dalam satu langkah di Linux?

Saya ingin mengubah izin folder dan semua sub folder dan file dalam satu langkah (perintah) di Linux.

Saya sudah mencoba perintah di bawah ini tetapi hanya berfungsi untuk folder yang disebutkan:

chmod 775 /opt/lampp/htdocs

Apakah ada cara untuk mengatur chmod 755 untuk /opt/lampp/htdocs dan semua kontennya termasuk subfolder dan file?

Juga, di masa depan, jika saya membuat folder atau file baru di dalam htdocs, bagaimana izin yang secara otomatis diatur ke 755?

Saya juga melihat tautan ini:

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal

1546
Adam

Jawaban lainnya benar, yaitu chmod -R 755 akan mengatur izin ini untuk semua file dan subfolder di pohon. Tapi mengapa Anda ingin ? Mungkin masuk akal untuk direktori, tetapi mengapa mengatur bit eksekusi pada semua file?

Saya menduga apa yang benar-benar ingin Anda lakukan adalah mengatur direktori ke 755 dan meninggalkan file sendiri atau mengaturnya ke 644. Untuk ini, Anda dapat menggunakan perintah find. Sebagai contoh:

Untuk mengubah semua direktori menjadi 755 (drwxr-xr-x):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Untuk mengubah semua file menjadi 644 (-rw-r--r--):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
2608
WombleGoneBad

Periksa opsi -R

chmod -R <permissionsettings> <dirname>

Di masa mendatang, Anda dapat menghemat banyak waktu dengan memeriksa halaman manual terlebih dahulu:

man <command name>

Jadi dalam hal ini:

man chmod
709
Steve Robillard

Jika Anda ingin mengatur izin pada semua file ke a+r, dan semua direktori ke a+x, dan lakukan itu secara rekursif melalui pohon subdirektori lengkap, gunakan:

chmod -R a+rX *

X (yaitu modal X, bukan x!) Kecil diabaikan untuk file (kecuali mereka sudah dapat dieksekusi untuk seseorang) tetapi digunakan untuk direktori.

340
Pete

Anda dapat menggunakan -R dengan chmod untuk traversal rekursif semua file dan subfolder.

Anda mungkin memerlukan Sudo karena tergantung pada LAMP sedang diinstal oleh pengguna saat ini atau yang lain:

Sudo chmod 755 -R /opt/lampp/htdocs
122
ravi ranjan

Untuk mengatur ke semua subfolder (secara rekursif) gunakan -R

chmod 755 /folder -R

Dan gunakan umask untuk mengatur default ke folder baru/file cd/folder umask 755

71
Topera

Perintah rekursif yang benar adalah:

Sudo chmod 755 -R /opt/lampp/htdocs

-R: ubah setiap sub folder termasuk folder saat ini

60
Pramendra Gupta

chmod 755 -R /opt/lampp/htdocs secara rekursif akan mengatur izin. Tidak ada cara untuk mengatur izin untuk file secara otomatis hanya dalam direktori ini yang dibuat setelah Anda mengatur izin, tetapi Anda dapat mengubah izin file default seluruh sistem dengan dengan mengatur umask 022.

49
sleepynate

Anda mungkin ingin mempertimbangkan jawaban ini diberikan oleh nik pada superuser dan menggunakan "satu chmod" untuk semua file/folder seperti ini:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
23
Iam Zesh

Menggunakan:

Sudo chmod 755 -R /whatever/your/directory/is

Namun, berhati-hatilah dengan itu. Ini benar-benar dapat melukai Anda jika Anda mengubah izin file/folder yang salah.

20
Nate Starner

Berikut cara lain untuk mengatur direktori ke 775 dan file ke 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

Mungkin terlihat panjang, tapi cukup keren karena tiga alasan:

  1. Memindai melalui sistem file hanya sekali, bukan dua kali.
  2. Memberikan kontrol yang lebih baik atas bagaimana file ditangani vs bagaimana direktori ditangani. Ini berguna ketika bekerja dengan mode khusus seperti bit sticky , yang mungkin ingin Anda terapkan ke direktori tetapi bukan file.
  3. Gunakan teknik langsung dari halaman man (lihat di bawah).

Perhatikan bahwa saya belum mengkonfirmasi perbedaan kinerja (jika ada) antara solusi ini dan hanya menggunakan dua perintah find (seperti dalam solusi Peter Mortensen). Namun, melihat contoh serupa dalam manual ini menggembirakan.

Contoh dari halaman man find:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

Tepuk tangan

19
chrisfargen

chmod -R 755 directory_name berfungsi, tetapi bagaimana Anda akan menyimpan file baru ke 755 juga? Izin file menjadi izin default.

11
Sanchit Gupta

Anda ingin memastikan bahwa file dan direktori yang sesuai adalah chmod-ed/izin untuk mereka yang sesuai. Untuk semua direktori yang Anda inginkan

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

Dan untuk semua gambar, JavaScript, CSS, HTML ... yah, Anda seharusnya tidak mengeksekusinya. Jadi gunakan

chmod 644 img/* js/* html/*

Tetapi untuk semua kode logika (misalnya kode PHP), Anda harus mengatur izin sehingga pengguna tidak dapat melihat kode itu:

chmod 600 file
10
NikolaiDante

Untuk Mac OS X 10.7 (Lion), itu adalah:

chmod -R 755 /directory

Dan ya, seperti yang dikatakan semua orang lain, berhati-hatilah saat melakukan ini.

7
wmartin

Saya pikir Adam bertanya bagaimana cara mengubah nilai umask untuk semua proses yang ingin beroperasi pada direktori /opt/lampp/htdocs.

Mask mode pembuatan file pengguna (umask) digunakan untuk menentukan izin file untuk file yang baru dibuat. Ini dapat digunakan untuk mengontrol izin file default untuk file baru.

jadi jika Anda akan menggunakan beberapa jenis program ftp untuk mengunggah file ke /opt/lampp/htdocs Anda perlu mengkonfigurasi server ftp Anda untuk menggunakan umask yang Anda inginkan.

Jika file/direktori dibuat misalnya dengan php, Anda perlu memodifikasi kode php

<?php
umask(0022);
// other code
?>

jika Anda akan membuat file/folder baru dari sesi bash Anda, Anda dapat menetapkan nilai umask di profil Shell Anda ~/.bashrc Atau Anda dapat mengatur umask di file /etc/bashrc atau /etc/profile untuk semua pengguna. tambahkan yang berikut ke file: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

Dan untuk mengubah izin untuk file yang sudah dibuat, Anda dapat menggunakan find. Semoga ini membantu.

6
Viktor

Ada dua jawaban untuk menemukan file dan menerapkan chmod kepada mereka. Yang pertama adalah find file dan menerapkan chmod seperti yang ditemukan (seperti yang disarankan oleh @WombleGoneBad).

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

Solusi kedua adalah membuat daftar semua file dengan perintah find dan menyediakan daftar ini ke perintah chmod (seperti yang disarankan oleh @lamgesh).

chmod 755 $(find /path/to/base/dir -type d)

Kedua versi ini berfungsi dengan baik selama jumlah file yang dikembalikan oleh perintah find kecil. Solusi kedua terlihat bagus untuk mata dan lebih mudah dibaca daripada yang pertama. Jika ada banyak file, solusi kedua menghasilkan kesalahan: Argument list too long.

Jadi saran saya adalah

  1. Gunakan chmod -R 755 /opt/lampp/htdocs jika Anda ingin mengubah izin semua file dan direktori sekaligus.
  2. Gunakan find /opt/lampp/htdocs -type d -exec chmod 755 {} \; jika jumlah file yang Anda gunakan sangat besar. Opsi -type x mencari hanya tipe file tertentu, di mana d digunakan untuk menemukan direktori, f untuk file dan l untuk tautan.
  3. Gunakan chmod 755 $(find /path/to/base/dir -type d) sebaliknya
  4. Lebih baik menggunakan yang pertama dalam situasi apa pun
4
Prabhu

Ini sangat sederhana.

Di Terminal pergi ke file manager. contoh: Sudo nemo. Buka /opt/ lalu klik Properties → Izin . dan kemudian Lainnya . Akhirnya, ubah untuk membuat dan menghapus dan mengajukan akses untuk membaca dan menulis dan mengklik tombol berlaku ... Dan bekerja.

2
Debian.