Actuellement, j'ai un serveur Ubuntu de base qui fait tourner un site web. Le site est destiné à quelques étudiants qui apprennent le HTML/PHP et chaque étudiant a son propre compte avec un lien symbolique vers le dossier partagé du site. Comme les étudiants travaillent ensemble sur le site, chaque utilisateur doit pouvoir modifier tous les fichiers (index.html par exemple). J'ai donc créé un groupe Webdev contenant tous les étudiants avec le umask par défaut de 0002 dans leur .bashrc (ce qui permet aux fichiers nouvellement créés d'être 774). Le dossier partagé appartient au groupe Webdev avec un chmod g+s afin que les nouveaux fichiers/dossiers appartiennent également au groupe Webdev.
Le problème est que les étudiants utilisent un IDE (Coda 2) et que lorsqu'ils créent un nouveau fichier ou dossier à l'aide de l'IDE, le fichier a les permissions 644 sur le serveur (groupe non accessible en écriture). Cependant, lorsque je crée un nouveau fichier en me connectant avec Cyberduck (client SFTP), les autorisations du fichier sont de 664 (comme elles devraient l'être). Je ne comprends donc pas pourquoi Coda serait différent.
Cependant, après quelques essais et erreurs, je pense que Coda crée d'abord le fichier sur le disque local, puis le télécharge sur le serveur. Sur un Mac, par défaut, un fichier nouvellement créé est 644. Lorsque le client télécharge un fichier qui est déjà 644, il reste 644 du côté du serveur (umask est plutôt inutile dans cette situation). J'ai également essayé de créer des permissions ACL pour ce dossier, mais un fichier téléchargé depuis mon mac via SCP n'obtient pas les permissions ACL par défaut.
Dans Coda, il existe une option permettant de modifier les autorisations de fichiers lors d'un transfert. Cependant, cette option semble appliquer un chmod à tous les fichiers téléchargés ou enregistrés. Lorsque l'un des étudiants modifie un fichier créé par quelqu'un d'autre, lorsqu'il essaie de le télécharger ou de l'enregistrer, Coda essaie d'appliquer un chmod mais échoue parce que cet utilisateur n'est pas le propriétaire du fichier.
Ma solution actuelle consiste à utiliser bindfs... Je monte le dossier web partagé et bindfs définit les permissions et la propriété du groupe pour les fichiers nouvellement créés. Cependant, bindfs semble être un peu lent et je suis sûr qu'il existe une meilleure solution.
Même si les étudiants abandonnaient Coda 2 et utilisaient Mac vim avec scp, les fichiers nouvellement créés sur le serveur se comporteraient de la même manière (644), ce qui est la valeur par défaut sur le Mac.
Autres options...
1) Soit j'enseigne aux étudiants à utiliser (ssh/chmod) avec leur IDE pour changer les permissions de leurs propres fichiers lors du téléchargement.
2) Je fais en sorte que les Macs de tous les étudiants aient l'umask par défaut de 0002, ce qui permet de télécharger les fichiers avec les bonnes permissions.
3) Ecrire un script de maïs pour fixer les permissions de fichiers toutes les 5 à 15 minutes... (Cette option je pense est la pire si les étudiants travaillent ensemble en même temps).
Existe-t-il un moyen de faire en sorte que tous les fichiers téléchargés via SCP aient les autorisations de fichier par défaut de 664, même si le fichier téléchargé a une autorisation inférieure ? (Après des heures de recherche, je ne pense pas que cela soit possible) Je suppose qu'un script de maïs est ma meilleure option pour les utilisateurs novices. Comment les développeurs web travaillent-ils ensemble sur des sites plus importants ?
similaire à celui-ci : https://serverfault.com/questions/283492/how-to-specify-file-permission-when-putting-a-file-using-openssh-sftp-command
Egalement similaire : https://serverfault.com/questions/395418/managing-linux-directory-permissions-sftp