{{tag>SSH SFTP Sécurité Script}}
= Changer le umask pour un groupe ou plusieurs groupe en SFTP
Voir [[http://serverfault.com/questions/257711/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 [[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