SFTP ile istenen umask nasıl yerleştirilir?


23

Bir SFTP sunucum var (openssh / sftp-server) ve bu servisi kullanan kullanıcılar için umask 002 ayarlamak istiyorum. PAM (pam.d / common-session) ayarını ve her kullanıcı için .profile ayarını denedim, ama şans yok.

SSH ile giriş yapmak her şey yolunda, fakat SFTP ile denediğimde (gFTP ile) 022 umask ayarına sahibim.

Ben zaten sftp-server çağırmadan önce umask değiştiren sftp-server için bir sarıcı kullanmaya çalıştım, şans yok.

Herhangi bir yardım? Çok teşekkürler!

Yanıtlar:


25

OpenSSH 5.4p1’den beri "-u" seçeneğini kullanabilirsiniz, örneğin:

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

Man sayfasından:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.

bu iyi!! En kısa zamanda bir göz atacağım ve bulgularımı rapor edeceğim :)
mat_jack1

5
-U seçeneği olmayanlar için bu işe yarar:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay

1
Güzel çözüm. Sistem kabuğu ne olursa olsun, varsayılan izinlerini ayarlayan CyberDuck gibi istemci kabukları ve uygulamalarıyla ilgili sorunu çözer. Kullanıcılarımın grup dosyalarında birlikte çalışmasına izin vermek için her müşteri uygulamasının doğru izinleri ayarlayacağından emin olmak için yararlı buldum. Bu ayarın, kullanıcıların isterlerse dosya izinlerini özelleştirmelerini engellemeyeceğini de eklemek yararlı olabilir.
gerlos

Eklemek için son bir şey: Yalnızca sftp özelliğine ihtiyacınız varsa ve kullanıcılarınıza kabuk erişimi sağlamanız gerekmiyorsa , kabukları için bash yerine rssh kullanmayı ve /etc/rssh.conf dosyasında varsayılan umask ayarını da düşünebilirsiniz. . Bu, sunucunuzu daha güvenli hale getirebilir
gerlos

7

Umarım bu başkasını saatlerce hayal kırıklığına uğratır ...

Bir GUI SFTP uygulaması kullanıyorsanız, yükleme sırasında izinleri ayarlamak için tercihlerini kontrol edin.

Yukarıdaki tüm çözümleri denemiştim ve uygulamanın sadece onları geçersiz kıldığı ortaya çıktı.


^^ Evet, uzun süredir Weboide'nin çözümüne benzer bir komut dosyası yaparak umft'i sftp bağlantısına ayarlıyorum. Son zamanlarda, bunun neden geçmişte olduğu gibi işe yaramadığını gösteren neden kafamı çiziyordum. Görünüşe göre bir noktada SFTP istemcime yapılan bir güncelleme, ssh ile bağlandıktan sonra umask'ı açıkça ayarlamasını sağladı.
Jared Kipe

Bu sadece GUI değil. Müşteri bile değil. Yüklemiş olduğum test dosyasının, istemcinin (OpenSSH sftp) uzak tarafa kopyaladığı 0600 olduğunu bulmam çok uzun sürdü.
xebeche 17:13

Teşekkür ederim! Hiçbir şey için izinlerle uğraşmaya çok zaman geçirdim.
Tania Rascia,

2

Saatlerce süren çeşitli hack ve düzeltmeleri uygulamaya çalıştıktan sonra uygun bir çözüm buldum!

SSTP için SFTP için istediğiniz umask'ı seçmenize izin veren bir yama var. Buradan indirebilirsiniz: http://sftpfilecontrol.sourceforge.net/

Benim için (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 Eki 2007) mükemmel çalışıyor!


2
Umask'ı ayarlamak için '-u' seçeneğinin 5.4p1'den beri OpenSSH'de kullanılabildiğine dikkat etmek için, cevabımı aşağıya bakın.
Weboide

2

Ssh config dosyasında bunu ayrıca dosyanın modunu özel olarak ayarlamak için de kullanabilirsiniz (istemcinin ayarlamaya çalıştığı tüm chmod'ları geçersiz kılma). Burada internal-sftp kullanıyorum, ancak sftp-server için aynı olacağını düşünüyorum:

ForceCommand internal-sftp -u 0022   

0

Bu mesajı alıntı yapmak için :

/Etc/init.d/ssh içine "umask 007" satırı ekleyerek bu çalışmayı tamamladım.

Bash, .profileetkileşimli oturum açma kabukları için kullanır . Bence o sftpkadar sayılmaz . Umask'ı ayarlayabilir /etc/bash.bashrcveya ~/.bashrcyukarıdaki ipucu işe yaramazsa veya daha hassas kontrol istiyorsanız.


2
cevap için teşekkürler, ama ben zaten ssh umask 002 vardı (ben de 0002 denedim) ve işe yaramadı :( ayrıca bashrc göz önünde bulundurulmaz, harici bir SFTP istemcisinde olduğu gibi bash kullanıldığını sanmıyorum. i ssh ile doğrudan giriş yaparsanız her şey yolunda Benim sorun yalnızca SFTP müşterilerle olan teşekkürler..!
mat_jack1

Oops, haklısın. Bash'in neden dahil olduğunu düşündüğümü bilmiyorum.
sonraki duyuruya kadar duraklatıldı.

0

Özel openssh sürümleri veya özel yamalar gerektirmeyen basit bir çözüm bulmak için bu soruya bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.