OpenSSH SFTP sunucusu, komut koyduktan sonra umask kullanıyor mu veya istemci tarafı izinlerini koruyor mu (kroke ortam)?


13

Bu sorunun zaten tartışıldığını biliyorum, ancak mesajları okuyarak cevapları anlayamadım, çünkü bazıları "evet umask işe yarayabilir" ve diğerleri "OpenSSH put komutu her zaman izinleri koru" dedi

Her şeyden önce, sadece kesin olarak:

  • RHEL 6.2'de OpenSSH 5.9 kullanıyorum
  • Ben kullanarak, bir chrooted SFTP sunucusu yapılandırmış internal-sftpile alt sistemini -u 0002Umask için
  • Kesinlikle -pveya -Pseçeneğini kullanmıyorum

Bir yandan okuduğum kadar: SFTP transferleri için umask tanımlamanın birçok yolu vardır:

  • seçenek -uarasında internal-sftp(veya sftp-serverOpenSSH 5.4 beri),
  • için bir sarmalayıcı oluşturun sftp-server(umask'ı açıkça ayarladığımız - bu, krootlu ortam btw için uygun değildir)
  • pam.d/sshddosyaya belirli bir yapılandırma ekleme

Öte yandan okudum:

OpenSSH SFTP istemcisi ve sunucusu izinleri aktarır (bir uzantı olarak) ve uzak taraftaki izinleri içeren uzak dosyayı oluşturur. AFAICT, bu davranışı devre dışı bırakmanın bir yolu yoktur.

Bu yüzden aşağıdaki testi yaptım:

İstemcimde 600 ve 700 izinleriyle dosya MYFILEve dizin oluşturdum MYDIR.

Sonra sftpkomutlarla:

mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)

İstemci tarafında MYFILEve MYDIRistemci tarafında izinleri değiştirip yeniden yüklersem, sunucu tarafında yeni izinleri alırım.

pam.dÇözümü de denedim , ama hiçbir şey değişmedi.

Şimdi kafam karıştı:

Test ettiğim ve okuduklarımın bir bölümünden OpenSSH'nin her zaman izinleri koruduğunu söyleyebilirim. Ancak bir umaskın tanımlanabileceğini söyleyen birçok mesaj olduğu için, test konfigürasyonlarımda yanlış bir şey yaptığımı hayal edebiliyorum.

Bazı deneyimli geri bildirimleri takdir ediyorum.

Teşekkür ederim.

Yanıtlar:


12

İlk olarak, umask sunucu ile ilgili değil istemci. Bu nedenle put, OpenSSH istemcisinin komutunun umask kullanıp kullanmadığını sormak yanlıştır. SFTP yüklemesi sonucunda bir dosya oluştururken OpenSSH sunucusunun umask kullanıp kullanmadığını sormalısınız.

Her neyse, OpenSSH SFTP istemcisi ne yapar:

  • put-Pbayrak olmadan , sunucudan yerel dosyayla aynı izinlere sahip bir dosya oluşturmasını ister. OpenSSH sunucusu daha sonra (örtük olarak * nix kurallarına göre) umask uygular.

  • putile -Pbayrak, aynı başlar, ancak yükleme tamamlandıktan sonra istemci açıkça (re) için sunucu sorar yerel dosya vardır ( "chmod" istek) aynı izinleri ayarlayın. "Chmod" için umask geçerli değildir.

  • mkdir, sunucudan 0777 izinlerine sahip bir dizin oluşturmasını ister. Umask dolaylı olarak geçerlidir.

Her neyse, umask 0002'nin 0600 izinlerine sahip dosya üzerinde hiçbir etkisi olmadığına inanıyorum, çünkü bunlar birbirini dışlayan. Umask'nizi 0644 gibi izinlere sahip bir dosyaya karşı denemelisiniz.

Aslında, sisteminizi açıkladığınız şekilde yapılandırdıysanız, çalışmalıdır. Kutumdaki kanıtlara bakın (OpenSSH 6.2p2 ile Ubuntu)

Match user user2
  ChrootDirectory /home/user2/chroot
  ForceCommand internal-sftp -u 0077
  AllowTcpForwarding no
  PermitTunnel no
  X11Forwarding no

Sonra izinleri farkı görün putvs. put -P:

user1:~$ touch file.txt
user1:~$ ls -l
total 0
-rw-r--r-- 1 user1 ftpuser    0 Oct 23 15:34 file.txt
user1:~$ sftp user2@localhost
user2@localhost's password: 
Connected to localhost.
sftp> cd somefolder 
sftp> put file.txt
Uploading file.txt to /somefolder/file.txt
file.txt                                         100%     0    0.0KB/s    0:00
sftp> ls -l
-rw-------    1 1003 1001    0 Oct 23 15:35 file.txt
sftp> put -P file.txt
Uploading file.txt to /somefolder/file.txt
file.txt                                         100%     0    0.0KB/s    0:00
sftp> ls -l
-rw-r--r--    1 1003 1001    0 Oct 23 15:34 file.txt

Btw, en son SFTP belirtimi , istemcinin ve sunucunun umask ile ilgili davranışını tanımlar. Gördüğünüz gibi, OpenSSH aslında ihlal ediyor, ancak OpenSSH henüz umasktan bahsetmeyen SFTP sürüm 3'ü uyguluyor.

7.6. İzinler

...

Sunucu, mod bitlerine 'umask' uygulamamalıdır; ancak mod bitlerini istemci tarafından belirtilen şekilde ayarlamalıdır. İstemci, göndermeden önce mod bitlerine uygun bir 'umask' uygulamalıdır * ZORUNLU *.


Zaten birçok farklı izin ile denedim, başlangıçta ben istemci tarafında dizin için 755 vardı ve bunun yerine 775 almak istedim. Ama işe yaramadı. Belgeleri okuyarak -P için size katılıyorum, ancak bu bayrak olmadan bile sunucuda her zaman istemciden aynı izinleri
alıyorum

sözler için teşekkürler, başlığı iyileştirmeye ve bazı terimleri düzeltmeye çalıştım
drkzs

Aslında çalışmalı, güncellememe bakın.
Martin Prikryl

Evet, örneğiniz işe yarıyor ... ama umask'ı 0002 olarak değiştirirseniz artık böyle olmaz. Belki bu yazı aynı sorunu gündeme getiriyordur? opensh5.9 ve ben o umask seçeneği olması gerçeği hariç. SSHD yapılandırmanızla benimki arasındaki fark ForceCommand kullanmamam, bu yüzden alt sistem satırında umask belirtiyorum. (Yapılandırma ve sonuç göndermeye çalışacağım, ancak ağ testine kolayca ulaşılamıyor)
drkzs

1
Sadece bu noktada açık olmak gerekirse : The server SHOULD NOT apply a 'umask' yalnızca istemci izin bilgileri gönderdiğinde geçerlidir . İstemci izin bilgileri göndermediğinde, bir umask uygulamak için davranış amaçlanmıştır!
heiglandreas
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.