Saya membuat cadangan ke drive NTFS, dan well, cadangan ini benar-benar diperlukan. Namun, drive NTFS mengacaukan izin. Saya ingin mengembalikannya ke kondisi normal tanpa memperbaiki secara manual setiap file.
Satu masalah adalah bahwa tiba-tiba semua file teks saya memperoleh izin eksekusi, yang salah ofc. Jadi saya mencoba:
sudo chmod -R a-x folder\ with\ restored\ backup/
Tapi itu salah karena menghapus x
izin dari direktori juga yang membuatnya tidak dapat dibaca.
Apa perintah yang benar dalam kasus ini?
permissions
executable
recursive
gaazkam
sumber
sumber
Jawaban:
The
-x
Menghapus melaksanakan hak akses untuk semuayang
+X
akan menambah melaksanakan hak akses untuk semua, tetapi hanya untuk direktori.sumber
chmod -R -x+x *
chmod -R -x * && chmod -R +X *
Oke, saya membaca kembali halaman manual "chmod" untuk Mac OS X, BSD, dan Linux, dan melakukan beberapa percobaan. Inilah yang saya pelajari tentang mode simbolik. Ini bisa menjadi rumit, tetapi perlu dipahami:
Jadi misalnya,
a+x
akan membuat file dapat dieksekusi oleh semua orang.a+X
akan membuat file dapat dieksekusi oleh semua orang JIKA itu bisa dieksekusi oleh siapa pun.a+x
akan membuat direktori dicari oleh semua orang.a+X
juga akan membuat direktori dapat dicari oleh semua orang.Perbedaan utama antara BSD dan Linux adalah bahwa dengan BSD, penentuan dilakukan berdasarkan izin file sebelum chmod dieksekusi. Sementara dengan Linux, penentuan dilakukan segera sebelum klausa + X dijalankan.
Jadi dengan BSD, kombinasi tersebut
a-x,a+X
akan menghapus izin eksekusi / pencarian dan kemudian membuat direktori dapat dicari oleh semua orang, dan membuat file dapat dieksekusi oleh semua orang jika awalnya dapat dieksekusi oleh siapa pun.Dengan Linux,
a-x,a+X
akan menghapus izin eksekusi / pencarian dan kemudian membuat direktori dapat dicari oleh semua orang, sementara meninggalkan file yang dapat dieksekusi oleh siapa pun.Berikut adalah contoh nyata: pada mesin BSD: direktori, file yang dapat dieksekusi, dan file yang tidak dapat dieksekusi:
Perhatikan bahwa direktori dan "fie" dapat dieksekusi / dicari oleh pengguna, tetapi tidak oleh orang lain.
Sekarang kita jalankan
chmod a-x,a+X *
. Klausa pertama akan menghapus bit eksekusi / pencarian dari semua pengguna untuk semua file, tetapi klausa kedua akan menambahkannya kembali untuk "biaya" dan "fie". "fee" karena ini adalah direktori, dan "fie" karena memiliki setidaknya satu bit yang dapat dieksekusi untuk memulai.Saya memiliki hasil yang sama mengeksekusi
chmod -x+X
.Kesimpulan: Solusi Jak Gibb akan bekerja di Linux, tetapi untuk BSD, Anda harus membuat dua lintasan.
Saya tidak menguji ini pada SVr4 atau varian Unix lainnya.
sumber
Salah satu cara untuk melakukannya:
sumber
chmod a-x {}
chmod a-x {}
juga bisa berakhir dengan menghapus izin yang tidak ingin Anda ubah, dan itu bisa membuat file dapat ditulisi dunia. Intinya, 0644 adalah kompromi yang "secara umum masuk akal". OP harus, tentu saja, juga melibatkan otak sebelum menerapkan solusi dari Internet di komputernya.chmod
. Jika file cadangan berisi skrip dan binari, menghapusnyax
salah. Jika izin sebelumnyachmod
adalah 0777 makachmod a-x
masih akan meninggalkan mereka 0666, yang mungkin bukan yang Anda inginkan. Apa yang saya katakan adalah ituchmod 0644
heuristik yang lebih baik, bukan ituchmod a-x
salah.Akan menghapus izin eksekusi ke file yang bukan dari jenis direktori (seperti yang Anda minta) atau tautan simbolis (symlink umumnya selalu rwxrwxrwx, dan
chmod
akan mempengaruhi target symlink pada mereka).Perhatikan bahwa:
hanya akan mengubah izin file biasa . Itu akan mengecualikan direktori dan symlink , tetapi juga perangkat , bernama pipa , soket dan mungkin yang lain tergantung pada sistem (meskipun dalam kasus OP dari cadangan sistem file NTFS, itu tidak mungkin hadir).
sumber
Di zsh, gunakan kualifikasi glob
.
untuk mencocokkan hanya file biasa (tidak termasuk tautan simbolik), danD
untuk mencocokkan file dot:Jika baris perintah terlalu panjang, Anda dapat menggunakan
zargs
:sumber