Frage Wie gewünschte Umask mit SFTP zu setzen?


Ich habe einen SFTP-Server (openssh / sftp-server) und ich möchte umask 002 für Benutzer setzen, die diesen Service nutzen. Ich habe versucht, PAM (Pam.d / Common-Session) und. Profile für jeden Benutzer, aber kein Glück.

Mit SSH-Login ist alles in Ordnung, aber wenn ich mit SFTP (mit gFTP) versuche, habe ich die Umask 022 gesetzt.

Ich habe bereits versucht, einen Wrapper für SFTP-Server zu verwenden, der die Umask vor dem Aufruf des SFTP-Servers ändert, kein Glück.

Irgendeine Hilfe? Danke vielmals!


22
2017-10-02 18:27


Ursprung




Antworten:


Seit OpenSSH 5.4p1 denke ich, können Sie die Option "-u" verwenden, zum Beispiel:

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

Von der man-Seite:

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

22
2017-11-04 21:02



Das ist schön!! Ich werde so schnell wie möglich nachsehen und meine Ergebnisse melden :) - mat_jack1
Für diejenigen ohne die Option -u funktioniert das: Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server' - Steve Clay
Gute Lösung. Es behebt das Problem mit Client-Shells und Anwendungen wie CyberDuck, die ihre Standardberechtigungen unabhängig von der Systemumask setzen. Ich fand es nützlich, sicherzustellen, dass jede Client-Anwendung die richtigen Berechtigungen setzt, damit meine Benutzer gemeinsam an Gruppendateien arbeiten können. Es kann nützlich sein, auch hinzuzufügen, dass diese Einstellung Benutzer nicht daran hindert, Dateiberechtigungen anzupassen, wenn sie dies wünschen. - gerlos
Eine letzte Sache, die hinzugefügt werden muss: Wenn Sie nur sftp-Funktion benötigen und Ihren Benutzern keinen Shell-Zugriff gewähren müssen, können Sie dies ebenfalls in Betracht ziehen rssh anstelle von bash für ihre Shells, und die Standard Umask für sie in /etc/rssh.conf setzen. Dies kann Ihren Server sicherer machen - gerlos


Ich hoffe, das kann jemand anderen Stunden der Frustration retten ...

Wenn Sie eine GUI-SFTP-Anwendung verwenden, überprüfen Sie die Einstellungen zum Festlegen von Berechtigungen beim Hochladen.

Ich hatte alle oben genannten Lösungen ausprobiert, und es stellte sich heraus, dass die Anwendung sie einfach außer Kraft setzte.


7
2017-11-28 20:41



^^ Ja, für eine lange Zeit habe ich die Umask auf sftp-Verbindung gesetzt, indem ich ein Skript gemacht habe, das Weboides Lösung ähnlich ist. Kürzlich habe ich mir den Kopf darüber gekratzt, warum das nicht so gut zu funktionieren scheint wie früher. Nun, anscheinend hat ein Update auf meinen SFTP-Client die Umask explizit gesetzt, nachdem ich mit ssh verbunden habe. - Jared Kipe
Es sind nicht nur GUIs. Nicht einmal Kunden. Ich habe viel zu lange gebraucht, um zu finden, dass die Testdatei, die ich hochgeladen habe, 0600 hatte, die der Client (OpenSSH sftp) auf die Gegenseite kopiert hat. - xebeche
Vielen Dank! Verbrachte so lange mit Berechtigungen für nichts herumspielen. - Tania Rascia


Nachdem ich viele Stunden damit verbracht habe, verschiedene Hacks und Fixes anzuwenden, habe ich eine richtige Lösung gefunden!

Es gibt einen Patch für SSH, mit dem Sie die Umask für SFTP auswählen können. Sie können es hier herunterladen: http://sftpfilecontrol.sourceforge.net/

Für mich (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19.10.2007) funktioniert es perfekt!


2
2017-10-07 08:38



Nur um zu bemerken, dass die Option '-u' zum Einstellen der Umask in OpenSSH seit 5.4p1 verfügbar ist, siehe meine Antwort weiter unten. - Weboide


In der ssh-Konfigurationsdatei können Sie dies auch verwenden, um den Modus der Datei speziell einzustellen (überschreiben Sie alle chmod-Werte, die der Client möglicherweise einstellen möchte). Hier benutze ich intern-sftp, aber ich denke, es wäre das gleiche für sftp-server:

ForceCommand internal-sftp -u 0022   

1
2018-04-27 10:34





Zitieren diese Nachricht:

Ich habe das okay funktioniert, indem ich eine "umask 007" Zeile in /etc/init.d/ssh hinzufüge.

Bash nutzt die .profile für interaktive Login-Shells. Ich denke nicht sftp zählt als eins. Sie können die Umask möglicherweise aktivieren /etc/bash.bashrc oder ~/.bashrc wenn der oben genannte Tipp nicht funktioniert oder Sie eine feinere Kontrolle wünschen.


0
2017-10-02 18:40



danke für die antwort, aber ich hatte bereits in ssh umask 002 (ich habe auch 0002 versucht) und es funktioniert nicht :( auch die bashrc ist nicht in betracht, wie mit einem externen SFTP client ich glaube nicht, dass bash verwendet wird. Wenn ich direkt mit ssh logge, ist alles in Ordnung. Mein Problem ist nur mit SFTP-Clients. Danke! - mat_jack1
Ups, du hast Recht. Ich weiß nicht, warum ich daran dachte, dass Bash daran beteiligt ist. - Dennis Williamson


Beziehen auf diese Frage um eine einfache Lösung zu finden, die weder bestimmte openssh-Versionen noch benutzerdefinierte Patches benötigt.


0
2018-02-02 17:32