Saya telah mencari cara untuk setup OpenSSH umask untuk 0027secara konsisten di semua jenis koneksi.
Berdasarkan jenis koneksi yang saya maksudkan:
- sftp
- scp
- ssh nama host
- program nama host ssh
Perbedaan antara 3. dan 4. adalah bahwa yang pertama memulai sebuah shell yang biasanya membaca /etc/profileinformasi sementara yang terakhir tidak.
Selain itu dengan membaca posting ini saya menjadi sadar akan opsi -u yang hadir dalam versi OpenSSH yang lebih baru. Namun ini tidak berhasil.
Saya juga harus menambahkan itu /etc/profilesekarang termasuk umask 0027.
Poin demi poin:
- sftp - Pengaturan
-u 0027disshd_configseperti yang disebutkan di sini , tidak cukup.
Jika saya tidak mengatur parameter ini, sftp menggunakan secara default umask 0022. Ini berarti bahwa jika saya memiliki dua file:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
Ketika saya menggunakan sftp untuk meletakkannya di mesin tujuan, saya benar-benar mendapatkan:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
Namun ketika saya mengatur -u 0027pada sshd_configmesin tujuan saya benar-benar mendapatkan:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
yang tidak diharapkan, karena sebenarnya harus:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
Adakah yang mengerti mengapa ini terjadi?
scp - Secara independen dari apa yang diatur untuk sftp , izin selalu
umask 0022. Saat ini saya tidak tahu bagaimana cara mengubahnya.ssh hostname - tidak ada masalah di sini karena shell membaca
/etc/profilesecara default yang berartiumask 0027dalam pengaturan saat ini.ssh hostname program - situasi yang sama dengan scp .
Singkatnya, menetapkan umask pada sftpmengubah hasil tetapi tidak sebagaimana mestinya, ssh hostnamebekerja seperti yang diharapkan membaca /etc/profiledan keduanya scpdan ssh hostname programtampaknya telah di- umask 0022hardcode di suatu tempat.
Setiap wawasan tentang salah satu poin di atas dipersilahkan.
EDIT: Saya ingin menghindari tambalan yang memerlukan kompilasi openssh secara manual. Sistem ini menjalankan Ubuntu Server 10.04.01 (lucid) LTS dengan opensshpaket - paket dari maverick.
Jawaban: Seperti yang ditunjukkan oleh poige, menggunakan pam_umask melakukan trik.
Perubahan pastinya adalah:
Baris ditambahkan ke /etc/pam.d/sshd:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
Juga, untuk mempengaruhi semua shell login terlepas dari apakah mereka sumber /etc/profileatau tidak, baris yang sama juga ditambahkan /etc/pam.d/login.
EDIT : Setelah beberapa komentar saya menguji ulang masalah ini.
Setidaknya di Ubuntu (tempat saya menguji) tampaknya jika pengguna memiliki set umask berbeda dalam file init shell mereka (.bashrc, .zshrc, ...), umas PAM diabaikan dan umask yang ditetapkan pengguna digunakan sebagai gantinya. Perubahan tidak /etc/profilemempengaruhi hasil kecuali jika pengguna secara eksplisit sumber perubahan tersebut di file init.
Tidak jelas pada titik ini apakah perilaku ini terjadi di semua distro.
UsePAM yesdi sshd_config Anda?
/etc/profile. Sesuatu sepertialias umask=/bin/true