3 votes

Coda 2 et SCP téléchargent des fichiers avec une mauvaise permission

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

3voto

Dick Visser Points 66

Coda télécharge en fait des fichiers locaux. À moins que vous n'utilisiez des astuces telles que l'option maintenant non supportée/dépassée http://sftpfilecontrol.sourceforge.net les fichiers auront les permissions qu'ils ont localement. Puisque OSX a le umask 022, les fichiers créés sur OSX ne sont pas accessibles en écriture par groupe, donc 644. Coda télécharge volontiers ces fichiers. Comme vous l'avez découvert, Coda peut forcer des permissions spécifiques, mais il n'est pas assez fin pour spécifier que cela ne doit être fait que pour les nouveaux fichiers, il se trompera donc lors de l'enregistrement de fichiers existants qui ne sont pas la propriété de l'utilisateur (ce qui est le cas le plus courant). La seule façon dont j'ai réussi à le faire fonctionner, c'est en changeant l'umask de l'utilisateur sous OSX. Créez le fichier /etc/launchd-user.conf et mettre là-dedans :

umask 002

Puis redémarrez. Ensuite, Coda crée des fichiers qui sont 664 localement, et les télécharge. Les fichiers sont maintenant correctement accessibles en écriture par groupe, et il n'est plus nécessaire d'utiliser la commande Définir les autorisations pour le téléchargement dans les préférences de Coda.

Voir aussi http://support.apple.com/kb/HT2202 .

1voto

chepner Points 6381

Dans le panneau des préférences de Coda, sous l'onglet Règles, il semble que vous puissiez définir les autorisations souhaitées pour les fichiers téléchargés via ftp/sftp. La valeur par défaut est 644 ; il semble que le fait de cocher la case "Write" dans la ligne "Group" pourrait résoudre le problème. Bien entendu, chaque étudiant devra effectuer cette opération dans sa propre copie de Coda.

1voto

Le problème n'est pas les permissions sur le fichier, mais le(s) groupe(s) auquel(s) vos étudiants appartiennent. Sur la machine du serveur web, si vous faites en sorte que le groupe principal de chaque étudiant soit le même que le groupe du serveur web (sur les systèmes Linux, il s'agit généralement de www-data ou apache), et que vous définissiez les autorisations par défaut sur le fichier à 660 dans le panneau des préférences de Coda, tout devrait bien se passer.

# usermod -g apache studentUID

o

# usermod -g www-data studentUID

en fonction de la version de Linux que vous utilisez sur le serveur web.

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