Saya mengunggah file ke akun shell saya menggunakan scp. Karena saya memerlukan izin berbeda di server daripada di komputer saya, saya ingin memiliki cara untuk dengan mudah mengubah izin saat mengunggah tanpa perlu ssh ke akun dan mengubahnya secara manual.
upload
permissions
scp
Florian Mayer
sumber
sumber
Solusi kerja pilihan saya adalah menggunakan
rsync
:Menggantikan:
Dengan:
Ini mencegah Anda dari otentikasi dua kali. Ada juga banyak opsi lain dengan rsync yang mungkin akan menambah nilai seperti dapat mempertahankan pemilik, grup, dll.
sumber
--perms
juga. menjelaskanshell.com/…Saya telah membuat beberapa percobaan dengan scp. Untuk file baru yang diunggah ke server target, file tersebut memiliki izin yang sama seperti pada server sumber. Jika file yang ada ditimpa pada server target, izin untuk file-file itu tidak berubah.
Saya telah melakukan percobaan ini dengan CentOS 4.6.
sumber
Anda bisa melakukannya menggunakan tar, ssh, & umask seperti ini:
pada host 1:
di host2:
Anda dapat melepaskan sakelar -v ke tar yang telah saya sertakan di sini hanya agar Anda dapat melihat file-file yang ditampung di host1 dan dikirim melalui STDOUT (alias. -) dan kemudian menghapus-tar di host2.
CATATAN: Mengapa ini berhasil? Perilaku default Tar adalah membongkar file menggunakan umask pengguna jarak jauh. Dalam contoh di atas saya telah menyertakan perintah umask untuk secara eksplisit mengaturnya ke sesuatu yang berbeda yang menunjukkan bahwa tar jarak jauh mengubah izin di sisi jarak jauh.
sumber
umask
hanya mengurangi izin, misalnya untuk file lokal dengan700
Anda tidak bisa mendapatkan file dengan755
di server tujuan, atau apakah saya salah?--no-same-permissions
untuktar
penggunaan kedua jika pengguna tujuan root, lihat superuser.com/a/383801/89031umask
seluruh set file ketika mereka ditulis ke server jauh. Tidak ada kontrol individu untuk file yang berbeda. Saya akan sering menggunakan ini karena saya ingin menghapus izin santai yang OK di laptop saya, ketika menyalin ke penyebaran jarak jauh, misalnya.--no-same-permissions
sudah benar juga sesuai dengantar
halaman manual. Saya telah mengubah prompt dalam contoh saya sehingga tidak ada kebingungan tentang itu.Saya menulis skrip kecil untuk tugas dengan Python. Anda dapat melakukan python script.py -p o + r beberapa file beberapa / dir / on / the / server /
sumber
Saya akan menyarankan pengaturan bit lengket pada folder sehingga file yang Anda unggah di bawah folder itu mendapat izin itu secara otomatis.
"1" yang digunakan di atas mengatur bit sticky.
jadi Anda hanya perlu mengunggah satu dan tidak harus menjalankan perintah lain sesudahnya.
sumber
Dengan asumsi Anda mengunggah ke varian UNIX, saya pikir izin harus mengikuti pengaturan UMASK Anda. Saya tidak ingat dari bagian atas kepala saya yang mana file-titik diproses untuk SCP, tetapi jika Anda mengatur UMASK Anda di salah satu file yang Anda buat akan memiliki izin ditetapkan berdasarkan itu. Mungkin tergantung pada shell apa yang Anda gunakan pada sistem remote.
Apa pun yang Anda lakukan, jangan gunakan opsi -p karena ia melakukan kebalikan dari apa yang Anda inginkan.
sumber