Bagaimana cara menempatkan umask yang diinginkan dengan SFTP?

23

Saya memiliki server SFTP (openssh / sftp-server) dan saya ingin mengatur umask 002 untuk pengguna yang menggunakan layanan ini. Saya mencoba pengaturan PAM (pam.d / common-session), dan .profile untuk setiap pengguna, tetapi tidak berhasil.

Dengan login SSH semuanya baik-baik saja, tetapi ketika saya mencoba dengan SFTP (dengan gFTP) saya memiliki set umas 022.

Saya sudah mencoba menggunakan pembungkus untuk sftp-server yang mengubah umask sebelum memanggil sftp-server, tidak berhasil.

Ada bantuan? Terima kasih banyak!

mat_jack1
sumber

Jawaban:

25

Karena OpenSSH 5.4p1 menurut saya, Anda dapat menggunakan opsi "-u", misalnya:

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

Dari halaman manual:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.
Weboide
sumber
itu bagus!! Saya akan memeriksanya ASAP dan melaporkan temuan saya :)
mat_jack1
5
Bagi mereka tanpa opsi-u, ini bekerja:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay
1
Solusi yang bagus Ini memecahkan masalah dengan shell klien dan aplikasi, seperti CyberDuck, yang menetapkan izin default mereka terlepas dari sistem umask. Saya merasa bermanfaat untuk memastikan bahwa setiap aplikasi klien akan menetapkan izin yang tepat untuk memungkinkan pengguna saya bekerja bersama pada file grup. Mungkin bermanfaat untuk menambahkan juga bahwa pengaturan ini tidak akan menghentikan pengguna dari menyesuaikan izin file jika mereka menginginkannya.
gerlos
Satu hal terakhir yang ditambahkan: jika Anda hanya perlu fitur sftp dan tidak perlu memberi pengguna Anda akses shell, Anda dapat mempertimbangkan juga menggunakan rssh alih-alih bash untuk shell mereka, dan mengatur umask default untuk mereka di /etc/rssh.conf . Ini dapat membuat server Anda lebih aman
gerlos
7

Saya harap ini bisa menyelamatkan orang lain dari frustrasi ...

Jika Anda menggunakan aplikasi GUI SFTP, periksa preferensi pengaturan izin pengunggahan.

Saya sudah mencoba semua solusi di atas, dan ternyata aplikasi itu hanya meng-override mereka.

Malcolm
sumber
^^ Ya, untuk waktu yang lama saya telah mengatur umask pada koneksi sftp dengan membuat skrip yang mirip dengan solusi Weboide. Baru-baru ini saya menggaruk-garuk kepala saya mengapa ini tampaknya tidak berfungsi sebaik di masa lalu. Yah rupanya pada beberapa titik pembaruan untuk klien SFTP saya membuatnya secara eksplisit mengatur umask setelah terhubung dengan ssh, jadi pergi mencari.
Jared Kipe
Bukan hanya GUI. Bahkan klien. Butuh waktu terlalu lama bagi saya untuk menemukan bahwa file uji yang saya unggah memiliki 0600 yang disalin oleh klien (OpenSSH sftp) ke sisi jarak jauh.
xebeche
Terima kasih! Menghabiskan waktu lama bermain-main dengan izin untuk apa-apa.
Tania Rascia
2

Setelah berjam-jam mencoba menerapkan berbagai peretasan dan perbaikan, saya telah menemukan solusi yang tepat!

Ada tambalan untuk SSH yang memungkinkan Anda untuk memilih umask yang Anda inginkan untuk SFTP. Anda dapat mengunduhnya di sini: http://sftpfilecontrol.sourceforge.net/

Bagi saya (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 Okt 2007) berfungsi dengan baik!

mat_jack1
sumber
2
Hanya untuk mencatat bahwa opsi '-u' untuk mengatur umask tersedia di OpenSSH sejak 5.4p1, lihat jawaban saya lebih jauh ke bawah.
Weboide
2

Dalam file konfigurasi ssh Anda juga dapat menggunakan ini untuk mengatur mode file secara khusus (menimpa chmod apa pun yang mungkin ingin diatur oleh klien). Di sini saya menggunakan internal-sftp tetapi saya kira itu akan sama untuk sftp-server:

ForceCommand internal-sftp -u 0022   
cloudranger
sumber
0

Mengutip pesan ini :

Saya mendapatkan ini berfungsi dengan baik dengan menambahkan baris "umask 007" di /etc/init.d/ssh.

Bash menggunakan .profileshell login interaktif. Saya tidak menganggapnya sftpsebagai satu. Anda mungkin dapat mengatur umask di /etc/bash.bashrcatau ~/.bashrcjika tip di atas tidak berfungsi atau Anda ingin kontrol yang lebih halus.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
2
terima kasih atas jawabannya, tetapi saya sudah di ssh umask 002 (saya mencoba juga 0002) dan itu tidak berfungsi :( juga bashrc tidak dipertimbangkan, seperti dengan klien SFTP eksternal saya tidak berpikir bahwa bash digunakan. Jika saya login langsung dengan ssh semuanya baik-baik saja masalah saya hanya dengan SFTP klien Terima kasih..!
mat_jack1
Ups, Anda benar. Saya tidak tahu mengapa saya berpikir tentang Bash terlibat.
Dijeda sampai pemberitahuan lebih lanjut.
0

Lihat pertanyaan ini untuk menemukan solusi sederhana yang tidak memerlukan versi openssh khusus atau tambalan khusus.

Batalkanode
sumber