Changer le umask pour un groupe ou plusieurs groupe en SFTP

Voir openssh-5-3-setting-umask-for-sftp-chroot-env-dosent-work-at-all

En général la bonne méthode et d'utiliser les droits GNU/Linux avec les ACL Voir partage_dossier_acl_umask

Voici les étapes :

On crée un petit script /usr/local/bin/sftpwrapper.sh

On modifie le fichier sshd_config pour appeler notre script à la place de sftp-server

On ajoute notre ou nos groupe(s) dans la variable GROUP_007

On adapte le script en remplacant tous les 007 par le umask désiré.

On positionne les bons droits au script.

On redémarre le serveur SSH.

NB : Le changement du umask peut aussi se faire coté client SFTP. Par exemple pour WinSCP upload_options

NB : Sur une debian le changement du umask par défaut coté serveur peut-être définie globalement dans /etc/login.defs champs UMASK Voir également man pam_umask

NB : Si l'accès à un shell n'est pas souhaité, alors l'outil idéal est rssh (Restricted Shell for scp, sftp, rsync, svn…). Il gère également l'umask personnalisé.

NB : Si votre préoccupation est uniquement la sécurité, il est plus plus propre de monter un serveur SFTP qui ecoute sur un port dédié et de garder l'accès SSH que en interne pour l'administration. Voir notre tuto monter-un-serveur-sftp-ssh qui se base sur proftpd pour faire du SFTP.

/usr/local/bin/sftpwrapper.sh

#! /bin/bash # Modifier votre sshd_config de la manière suivante : #'Subsystem sftp /usr/lib/openssh/sftp-server' => 'Subsystem sftp /usr/local/bin/sftpwrapper.sh' # TODO : Lecture seul avec sftp-server -R et un groupe sftp_ro # Groupe d'utilisateur qui aurons un "UMASK 007". Les fichiers crées auront les droits : # -rw-rw---- GROUP_007='groupe1 groupe2' REGEX_007=$(echo ${GROUP_007:-nobody} | tr ' ' '|' | sed -e 's/^/\\b/' -e 's/$/\\b/' -e 's/|/\\b|\\b/') groups | tr "\n" " " | grep "$REGEX_007" > /dev/null && umask 007 /usr/lib/openssh/sftp-server $*

/etc/ssh/sshd_config

#'Subsystem sftp /usr/lib/openssh/sftp-server' 'Subsystem sftp /usr/local/bin/sftpwrapper.sh'
chown root:root /usr/local/bin/sftpwrapper.sh chmod 755 /usr/local/bin/sftpwrapper.sh