web-dev-qa-db-fra.com

Comment mettre umask souhaité avec SFTP?

J'ai un serveur SFTP (openssh/sftp-server) et je voudrais paramétrer umask 002 pour les utilisateurs utilisant ce service. J'ai essayé de définir PAM (pam.d/common-session) et .profile pour chaque utilisateur, mais pas de chance.

Avec la connexion SSH, tout va bien, mais lorsque j'essaie avec SFTP (avec gFTP), j'ai le jeu umask 022.

J'ai déjà essayé d'utiliser un wrapper pour sftp-server qui change le umask avant d'appeler le sftp-server, pas de chance.

De l'aide? Merci beaucoup!

23
mat_jack1

Après plusieurs heures à essayer d'appliquer divers hacks et correctifs, j'ai trouvé une bonne solution!

Il y a un patch pour SSH qui vous permet de choisir le umask que vous voulez pour SFTP. Vous pouvez le télécharger ici: http://sftpfilecontrol.sourceforge.net/

Pour moi (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 oct 2007) ça fonctionne parfaitement!

2
mat_jack1

Depuis OpenSSH 5.4p1 je pense, vous pouvez utiliser l'option "-u", par exemple:

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

Depuis la page de manuel:

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

J'espère que cela peut sauver des heures de frustration à quelqu'un d'autre ...

Si vous utilisez une application SFTP GUI, vérifiez ses préférences pour définir les autorisations lors du téléchargement.

J'avais essayé toutes les solutions ci-dessus, et il s'avère que l'application était juste en train de les remplacer.

7
Malcolm

Dans le fichier de configuration ssh, vous pouvez également l'utiliser pour définir le mode du fichier spécifiquement (en remplaçant tout chmod que le client peut essayer de définir). Ici, j'utilise internal-sftp mais je suppose que ce serait la même chose pour sftp-server:

ForceCommand internal-sftp -u 0022   
2
cloudranger

Pour citer ce message :

J'ai obtenu que cela fonctionne bien en ajoutant une ligne "umask 007" dans /etc/init.d/ssh.

Bash utilise le .profile pour les shells de connexion interactifs. Je ne pense pas que sftp compte pour un. Vous pourrez peut-être définir le umask dans /etc/bash.bashrc ou ~/.bashrc si l'astuce ci-dessus ne fonctionne pas ou si vous souhaitez un contrôle plus fin.

Reportez-vous à cette question pour trouver une solution simple qui ne nécessite pas de versions OpenShsh spécifiques ni de correctifs personnalisés.

0
Unode