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!
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!
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.
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.
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
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.