Saya mencoba menemukan cara POSIX standar untuk menduplikasi izin satu file ke file lain. Pada sistem GNU ini mudah:
[alexmchale@bullfrog ~]$ ls -l hardcopy.*
-rw-r--r-- 1 alexmchale users 2972 Jul 8 20:40 hardcopy.1
---------- 1 alexmchale users 2824 May 14 13:45 hardcopy.4
[alexmchale@bullfrog ~]$ chmod --reference=hardcopy.1 hardcopy.4
[alexmchale@bullfrog ~]$ ls -l hardcopy.*
-rw-r--r-- 1 alexmchale users 2972 Jul 8 20:40 hardcopy.1
-rw-r--r-- 1 alexmchale users 2824 May 14 13:45 hardcopy.4
Sayangnya, flag --reference to chmod adalah opsi yang tidak standar. Jadi itu untuk tujuan saya. Saya lebih suka itu menjadi satu-liner, tapi itu tidak perlu. Pada akhirnya, itu harus dalam sintaks POSIX sh.
command-line
unix
chmod
posix
Alex
sumber
sumber
cp has template
,, harus digunakancp -p
untuk mempertahankan mode dan atribut kepemilikan.cp
jika pemilik / grup file (misalnya "pengguna") berbeda dari yang melakukan penyalinan (misalnya root).cp -p
sana.Anda dapat menggunakan
stat
perintah untuk mendapatkan izin file:Sintaks Mac OS X (BSD):
Sintaks Linux (tidak yakin):
The ` simbol backquote a.
sumber
stat
diperlukan oleh POSIX. Ini sering tidak tersedia.Utilitas ACL getfacl dan setfacl dapat digunakan untuk tujuan ini, tapi saya tidak tahu apakah POSIX ini cukup sesuai. Paling tidak berfungsi di FreeBSD 8.0 dan Linux, tetapi di sisi lain orang mungkin harus menginstal utilitas ACL.
Dari halaman manual:
Saya pikir getfacl dan setfacl dapat beroperasi juga izin file standar selain ACL.
sumber
cp -p
akan mempertahankan izin file.sumber
-p
) bekerja untuk apa yang diinginkan OP yaitu untuk menduplikasi izin untuk file yang berbeda , bukan duplikat file.Satu cara yang mudah dibawa-bawa bukan utilitas standar - Anda harus memanggil stat () di file template, kemudian chmod () pada file tujuan. Ini berarti menggunakan bahasa seperti C atau bahasa lain yang banyak digunakan seperti perl.
Izin akses file ditentukan dalam st_mode anggota strat stat oleh 0007777 bit. Solusi Dennis benar, jika sedikit berat pada I / O, jadi untuk file yang sangat besar mungkin gagal:
Pertimbangkan contoh tidak siap-produksi ini:
sumber