Jak umieścić pożądany umask za pomocą SFTP?

23

Mam serwer SFTP (openssh / sftp-server) i chciałbym ustawić umask 002 dla użytkowników korzystających z tej usługi. Próbowałem ustawić PAM (pam.d / common-session) i .profile dla każdego użytkownika, ale bez powodzenia.

Przy logowaniu SSH wszystko jest w porządku, ale kiedy próbuję z SFTP (z gFTP) mam ustawiony zestaw umask 022.

Próbowałem już użyć opakowania dla serwera sftp, który zmienia umask przed wywołaniem serwera sftp, bez powodzenia.

Jakaś pomoc? Wielkie dzięki!

mat_jack1
źródło

Odpowiedzi:

25

Od OpenSSH 5.4p1 myślę, że możesz użyć opcji „-u”, na przykład:

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

Ze strony podręcznika:

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.
Weboide
źródło
To miłe!!
Rzucę okiem JAK
5
W przypadku osób bez opcji -u działa to:Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay
1
Dobre rozwiązanie. Rozwiązuje problem z powłokami i aplikacjami klienckimi, takimi jak CyberDuck, które ustawiają swoje domyślne uprawnienia niezależnie od umask systemowych. Uważam, że warto upewnić się, że każda aplikacja kliencka ustawia odpowiednie uprawnienia, aby moi użytkownicy mogli współpracować nad plikami grupowymi. Warto również dodać, że to ustawienie nie powstrzyma użytkowników przed dostosowaniem uprawnień do plików, jeśli sobie tego życzą.
gerlos
I ostatnia rzecz do dodania: jeśli potrzebujesz tylko funkcji sftp i nie musisz dawać użytkownikom dostępu do powłoki, możesz rozważyć użycie rssh zamiast bash dla ich powłok i ustawienie dla nich domyślnego umask w /etc/rssh.conf . Może to zwiększyć bezpieczeństwo twojego serwera
gerlos
7

Mam nadzieję, że pozwoli to zaoszczędzić komuś godziny frustracji ...

Jeśli używasz aplikacji GUI SFTP, sprawdź jej preferencje dotyczące ustawiania uprawnień podczas przesyłania.

Wypróbowałem wszystkie powyższe rozwiązania i okazało się, że aplikacja po prostu je zastąpiła.

Malcolm
źródło
^^ Tak, od dłuższego czasu ustawiam umask na połączenie sftp, tworząc skrypt podobny do rozwiązania Weboide. Ostatnio zastanawiałem się, dlaczego to nie działało tak dobrze, jak kiedyś. Najwyraźniej w pewnym momencie aktualizacja mojego klienta SFTP wyraźnie ustawiła umask po połączeniu z ssh, więc idź.
Jared Kipe
To nie tylko GUI. Nawet klienci. Zbyt długo zajęło mi stwierdzenie, że plik testowy, który przesłałem, miał 0600, który klient (OpenSSH sftp) skopiował na stronę zdalną.
xebeche
Dziękuję Ci! Spędziłem tak długo, bawiąc się z uprawnieniami za nic.
Tania Rascia
2

Po wielu godzinach prób zastosowania różnych hacków i poprawek znalazłem właściwe rozwiązanie!

Istnieje łatka dla SSH, która pozwala wybrać umask, który chcesz dla SFTP. Możesz go pobrać tutaj: http://sftpfilecontrol.sourceforge.net/

Dla mnie (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 października 2007) działa idealnie!

mat_jack1
źródło
2
Wystarczy zauważyć, że opcja „-u” do ustawienia umask jest dostępna w OpenSSH od wersji 5.4p1, patrz moja odpowiedź poniżej.
Weboide,
2

W pliku konfiguracyjnym ssh możesz również użyć tego do specyficznego ustawienia trybu pliku (przesłaniając dowolny chmod, który klient może próbować ustawić). Tutaj używam wewnętrznego sftp, ale myślę, że byłoby tak samo dla sftp-server:

ForceCommand internal-sftp -u 0022   
Cloudranger
źródło
0

Aby zacytować tę wiadomość :

Sprawdziłem to, dodając wiersz „umask 007” w /etc/init.d/ssh.

Bash używa .profileinteraktywnych powłok logowania. Nie sądzę, że sftpliczy się jako jeden. Możliwe, że możesz ustawić umask /etc/bash.bashrclub ~/.bashrcjeśli powyższa wskazówka nie działa lub chcesz mieć bardziej szczegółową kontrolę.

Wstrzymano do odwołania.
źródło
2
dziękuję za odpowiedź, ale miałem już w ssh umask 002 (próbowałem również 0002) i to nie działa :( także bashrc nie jest brany pod uwagę, ponieważ w przypadku zewnętrznego klienta SFTP nie sądzę, że bash jest używany. Jeśli loguję się bezpośrednio za pomocą ssh wszystko jest w porządku. Mój problem dotyczy tylko klientów SFTP. Dzięki!
mat_jack1
Ups, masz rację. Nie wiem, dlaczego myślałem o zaangażowaniu Basha.
Wstrzymano do odwołania.
0

Zapoznaj się z tym pytaniem, aby znaleźć proste rozwiązanie, które nie wymaga określonych wersji openssh ani niestandardowych poprawek.

Unode
źródło