Saya memiliki file yang dibuat ke direktori home saya dengan hanya izin baca pengguna ( r-- --- ---
). Saya ingin menyalin file ini ke direktori lain /etc/test/
yang memiliki izin folder 744 ( rwx r-- r--
). Saya perlu memperbolehkan file yang saya salin untuk mewarisi izin folder yang disalin karena sejauh ini ketika saya menyalinnya, izin file masih sama ( r-- --- ---
). Saya sudah mencoba perintah setfacl, tetapi tidak berhasil? Tolong bantu.
PS. Saya tidak bisa hanya chmod -r /etc/test/
karena ada banyak file yang akan disalin ke folder ini dari waktu ke waktu dan saya tidak ingin menjalankan perintah chmod setiap kali file disalin.
setfacl
Perintah apa yang Anda coba? Apa hasilnya?/bin/cp
tanpa opsi?Jawaban:
Izin umumnya tidak disebarkan oleh direktori tempat file sedang disalin, melainkan izin baru dikendalikan oleh pengguna
umask
. Namun ketika Anda menyalin file dari satu lokasi ke lokasi lain, ini merupakan kasus khusus di mana pengguna padaumask
dasarnya diabaikan dan izin yang ada pada file tersebut dipertahankan. Memahami konsep ini adalah kunci untuk mendapatkan apa yang Anda inginkan.Jadi untuk menyalin file tetapi "jatuhkan" izinnya saat ini, Anda dapat mengatakan
cp
untuk "tidak menyimpan" menggunakan--no-preserve=all
sakelar.Contoh
Katakanlah saya memiliki file berikut ini seperti Anda.
Dan seperti yang telah Anda konfirmasi jika kami hanya menyalinnya secara membabi buta dengan menggunakan
cp
kami mendapatkan ini:Sekarang mari kita ulangi ini, tetapi kali ini beri tahu
cp
"drop permissions":Jadi file yang disalin sekarang memiliki izin yang ditetapkan ke 664, dari mana mendapatkannya?
Jika saya mengubah saya
umask
ke sesuatu yang lain, kami dapat mengulangi tes ini untuk ketiga kalinya dan melihat efeknyaumask
terhadap yang tidak diawetkancp
:Perhatikan bahwa izin tidak lagi 664, tetapi 640? Itu didikte oleh
umask
. Ia memberi tahu setiap perintah yang membuat file untuk menonaktifkan 5 bit lebih rendah dalam izin ... orang-orang ini: (----wxrwx
).sumber
--no-preserve
bendera tidak standar, mungkin suatu GNUism.