3 votes

Définition des permissions de groupe par défaut via SFTP

Je suis en train de mettre en place un serveur de fichiers où les utilisateurs se connectent via SFTP. Je veux que tous les utilisateurs aient les mêmes droits de lecture et d'écriture sur tous les fichiers. Comme ils ont tous des comptes différents avec des mots de passe différents, je me retrouve avec quelque chose comme ceci :

-rw-r-----   1 user1   sharing  308 Jul  6 12:03 test2.rtf
-rw-r-----   1 user2   sharing  308 Jul  6 12:16 test3.rtf

Le groupe s'appelle sharing qui contient tous les utilisateurs. Le problème est que lorsque les fichiers sont écrits, la permission par défaut pour les groupes est la lecture seule.

J'ai essayé de définir le umask dans sshd_config :

Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Match Group sharing
    ChrootDirectory /files/
    ForceCommand internal-sftp -u 002
    AllowTCPForwarding no
    X11Forwarding no

Le facl pour le répertoire est le suivant :

# file: .
# owner: root
# group: sharing
# flags: -s-
user::rwx
group::rwx
group:sharing:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::---

également dans ces lieux :

init.d/rc:umask 002
init.d/ssh:umask 002
bash.bashrc:umask 002

Si je me connecte via SFTP, j'obtiens des autorisations de 640. Si je désactive le sftp et me connecte en tant qu'utilisateur1 via ssh, et que je touche un nouveau fichier, j'obtiens des permissions de 660 - ce qui est ce que je veux.

Comment faire pour que cela fonctionne via SFTP ?

C'est debian 7 btw.

2voto

Jakuje Points 9351

Contexte

C'est le problème permanent de sftp et le partage de fichiers. C'est parce que les permissions résultantes sont basées sur la permission originale du fichier du côté de l'utilisateur et umask ( -u ) n'impose pas de telles permissions, mais supprime seulement les permissions non désirées. Cela signifie que seulement si l'utilisateur essaie de télécharger un fichier avec la permission 0777 il est appliqué et dépouillé jusqu'à 0775 . Sinon, il est simplement laissé tel quel. Par exemple, si l'utilisateur a un fichier stocké sur son système de fichiers avec la permission 0700 il apparaîtra aussi après le téléchargement comme 0700 .

Solution

Récemment, nous avons résolu ce problème dans Fedora en appliquant un correctif qui force la permission exacte des nouveaux fichiers téléchargés, qui est basé sur celui-ci :

https://bugzilla.mindrot.org/show_bug.cgi?id=1844

Il sera disponible dans CentOS dans quelques mois, je ne suis pas sûr pour debian.

Solution de rechange

Il n'y a pas d'autre solution élégante que de lancer périodiquement un script (à partir de cron ), qui fixe les mauvaises permissions. Il s'agirait d'une simple ligne de commande en bash, mais je suppose que vous pouvez en trouver. Je peux vous en dire plus si vous êtes intéressé.

2voto

DAB Points 171

J'ai réussi à faire fonctionner ceci sur Debian en utilisant bindfs - ce qui est encore un peu compliqué mais ça marche. En gros, il monte un répertoire dans un autre et vous pouvez forcer toutes les permissions à se comporter comme vous le souhaitez. Ainsi, quelle que soit la façon dont le fichier est écrit dans le répertoire actuel, le répertoire servi par sftp sera toujours accessible en écriture. Maintenant, tous mes clients peuvent écrire sur les fichiers que d'autres utilisateurs ont créés :D

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X