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 :
NB : Le changement du umask peut aussi se faire coté client SFTP. Par exemple pour WinSCP http://winscp.net/eng/docs/ui_transfer_custom#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