File mewarisi izin direktori tempat ia disalin?

9

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.

LUUUUUUUUUUUUU
sumber
setfaclPerintah apa yang Anda coba? Apa hasilnya?
Mikel
setfacl -Rm d: u :: rwx, d: g :: r, d: o :: r / etc / test. Tidak ada output hanya menerima perintah.
LUUUUUUUUUUUUU
Bagaimana Anda menyalin file? Apa yang terjadi jika Anda menggunakan /bin/cptanpa opsi?
Mikel
Perintah yang saya gunakan adalah sudo cp / home / file / etc / test / file. Saya mencoba menggunakan / bin / cp sekarang juga tanpa hasil yang berbeda
LUUUUUUUUUUUUUU

Jawaban:

14

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 pada umaskdasarnya 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 cpuntuk "tidak menyimpan" menggunakan --no-preserve=allsakelar.

Contoh

Katakanlah saya memiliki file berikut ini seperti Anda.

$ mkdir -m 744 somedir

$ touch afile
$ chmod 400 afile 

$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

Dan seperti yang telah Anda konfirmasi jika kami hanya menyalinnya secara membabi buta dengan menggunakan cpkami mendapatkan ini:

$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

Sekarang mari kita ulangi ini, tetapi kali ini beri tahu cp"drop permissions":

$ rm -f somedir/afile 

$ cp --no-preserve=all afile somedir/

$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile

Jadi file yang disalin sekarang memiliki izin yang ditetapkan ke 664, dari mana mendapatkannya?

$ umask
0002

Jika saya mengubah saya umaskke sesuatu yang lain, kami dapat mengulangi tes ini untuk ketiga kalinya dan melihat efeknya umaskterhadap yang tidak diawetkan cp:

$ umask 037
$ rm somedir/afile 

$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile

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).

slm
sumber
The --no-preservebendera tidak standar, mungkin suatu GNUism.
vonbrand
Benar, terima kasih saya bermaksud mengatakan bahwa dalam A.
slm
dalam semangat Hari Valentine aku memberimu ciuman virtual, itu berhasil! TERIMA KASIH!
LUUUUUUUUUUUUU