Udostępniając dane przez SFTP skonfigurowałem go tak:
- każdy użytkownik należał do pewnej ilości grup
- każdy udostępniony katalog miał prawo do zapisu dla członków okreśonej grupy
- poprzez umask zmieniłem domyślne uprawnienia tak, by pliki tworzone przez użytkowników mogły być modyfikowane przez członków grupy (więcej na Mobilo/Mobilo24: http://www.mobilo24.eu/zmiana-umask/)
- poprzez sticky bit sprawiłem, że pliki tworzone w katalogu dziedziczą grupę po katalogu nadrzędnym (więcej na Mobilo/Mobilo24: http://www.mobilo24.eu/linux-dziedziczenie-uprawnien-do-katalogu-z-katalogu-nadrzednego/)
Problem jednak pozostał, gdy użytkownicy korzystali z SFTP. Otóż liczba umask nie przenosi się z pliku .profile na działania użytkownika, kiedy użytkownik ten nie pracuje w shelu ale poprzez SFTP.
Umask musiałem przedefiniować w konfiguracji SFTP. Na moim serwerze plik ten znajdował się w katalogu /etc/ssh, a jego nazwa to sshd_config.
W końcówce tego pliku znajduje sie linijka:
Subsystem sftp /usr/libexec/openssh/sftp-server
Trzeba było sprawić, aby proces ten miał zmienioną wartość umask. Okazało się, że można to zrobić sztuczką:
Subsystem sftp /bin/sh -c 'umask 0002; /usr/libexec/openssh/sftp-server’
Ta linijka powoduje wywołanie shella (/bin/sh) w celu wywołaia skryptu podanaego jako tekst (-c). A ten skrypt zmienia umask, a potem wywołuje proces sftp.
(Rozwiązanie zaczerpnięte z http://jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions).
SFTP możesz wykorzystać ze stacji windows korzystając z :