Je cherchais un moyen de configurer umask d' OpenSSH de 0027
manière cohérente pour tous les types de connexion.
Par types de connexion, je fais référence à:
- sftp
- scp
- ssh nom d'hôte
- programme ssh hostname
La différence entre 3. et 4. est que le premier démarre un shell qui lit généralement les /etc/profile
informations alors que le second ne le fait pas.
De plus, en lisant cet article, j'ai pris connaissance de l'option -u présente dans les nouvelles versions d'OpenSSH. Cependant cela ne fonctionne pas.
Je dois aussi ajouter que /etc/profile
comprend maintenant umask 0027
.
Aller point par point:
- sftp - Mettre
-u 0027
en placesshd_config
comme mentionné ici , ne suffit pas.
Si je ne définit pas ce paramètre, sftp utilise par défaut umask 0022
. Cela signifie que si j'ai les deux fichiers:
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
Lorsque j'utilise sftp pour les mettre dans la machine de destination, je reçois réellement:
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
Cependant, lorsque je définis -u 0027
sur sshd_config
la machine de destination, je reçois réellement:
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
ce qui n'est pas prévu, puisqu'il devrait en réalité être:
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
Quelqu'un comprend pourquoi cela se produit?
scp - Indépendamment de ce qui est configuré pour sftp , les autorisations sont toujours
umask 0022
. Je n'ai actuellement aucune idée de comment modifier cela.ssh hostname - pas de problème ici car le shell lit
/etc/profile
par défaut ce qui signifieumask 0027
dans la configuration actuelle.programme ssh hostname - même situation que scp .
En résumé, activer umask sftp
modifie le résultat, mais pas comme il se doit, ssh hostname
fonctionne comme prévu /etc/profile
et les deux scp
et ssh hostname program
semble avoir umask 0022
codé en dur quelque part.
Toute idée sur l'un des points ci-dessus est la bienvenue.
EDIT: je voudrais éviter les correctifs nécessitant une compilation manuelle de openssh. Le système exécute Ubuntu Server 10.04.01 (lucid) LTS avec les openssh
packages de maverick.
Réponse: Comme indiqué par poige, l'utilisation de pam_umask a été efficace.
Les changements exacts étaient:
Lignes ajoutées à /etc/pam.d/sshd
:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
De même, afin d’affecter tous les shells de connexion, qu’ils soient source /etc/profile
ou non, les mêmes lignes ont également été ajoutées /etc/pam.d/login
.
EDIT : Après certains des commentaires, j'ai retesté ce problème.
Au moins dans Ubuntu (où j’ai testé), il semble que si l’utilisateur a un autre umask défini dans les fichiers init de son shell (.bashrc, .zshrc, ...), le umask PAM est ignoré et l’utilisateur umask utilisé est utilisé à la place. Les modifications apportées /etc/profile
n'affectent pas le résultat, à moins que l'utilisateur ne les identifie explicitement dans les fichiers init.
À ce stade, il n’est pas clair si ce comportement se produit dans toutes les distributions.
UsePAM yes
dans votre sshd_config?
/etc/profile
. Quelque chose commealias umask=/bin/true