Lors de la SCP sur mon serveur Fedora, un utilisateur continue de recevoir des erreurs de ne pas pouvoir modifier les horodatages des fichiers ("définir l'heure: opération non autorisée"). L'utilisateur n'est pas le propriétaire du fichier, mais nous ne pouvons pas chown
déposer de fichiers vers cet utilisateur pour des raisons de sécurité. L'utilisateur peut sudo
, mais comme cela se produit via un client SCP / FTP, il n'y a aucun moyen de le faire non plus. Et enfin, nous ne voulons pas avoir à donner à cet utilisateur un accès root, juste pour lui permettre d'utiliser une synchronisation comme rsync ou WinSCP qui doit définir des horodatages.
L'utilisateur fait partie d'un groupe avec des rw
autorisations complètes sur tous les fichiers et répertoires pertinents. Avez-vous des idées sur la façon d'accorder la permission de l'utilisateur à touch -t
ces fichiers spécifiques sans chown
les lui communiquer?
Informations supplémentaires Tout cela a à voir avec l'activation du développement PHP dans un scénario à développeur unique (c'est-à-dire sans SCM). J'essaie de travailler avec Eclipse ou NetBeans pour travailler sur une copie locale du site basé sur PHP (WordPress), tout en permettant à l'utilisateur de prévisualiser "instantanément" ses modifications sur le serveur de développement. L'utilisateur travaillera à distance. Jusqu'à présent, toutes les tentatives de synchronisation automatique ont échoué - même en utilisant WinSCP en mode "dossier de surveillance", où il surveille un dossier local et tente de télécharger toutes les modifications jusqu'à l'erreur du répertoire distant car il essaie toujours de définir la date / l'horodatage .
L'utilisateur a un accès sudo, mais on m'a dit que ce n'était vraiment pas une bonne idée de travailler sous 'root', donc je n'ai pas voulu me connecter en tant que root pour faire ce travail. En outre, cela ne devrait pas être nécessaire. Je souhaiterais qu'un autre non-superutilisateur puisse faire la même chose - en utilisant les informations de son compte, établir une connexion FTP et pouvoir travailler à distance via la synchronisation. La solution doit donc fonctionner pour quelqu'un sans accès root.
Ce qui me stupéfie, c'est la difficulté que j'ai. Tous ces logiciels (NetBeans, Eclipse, WinSCP) sont conçus pour permettre la synchronisation, et ils essaient tous d'écrire l'horodatage. Cela doit donc être possible. WinSCP a la possibilité de désactiver "set timestamp", mais cette option devient indisponible (toujours "on") lorsque vous sélectionnez surveiller / synchroniser le dossier. Donc , il est obtenu d'être quelque chose qui est assez standard.
Étant donné que je suis un idiot complet en ce qui concerne Linux, et que je suis le "administrateur du serveur", je ne peux que supposer que c'est quelque chose d'idiot que je fais ou que j'ai (mal) configuré.
Résumé En un mot, je veux que tous les utilisateurs qui ont un accès de groupe r / w à un répertoire, puissent changer l'horodatage des fichiers dans ce répertoire via SCP.
la source
root
groupe: leroot
groupe n'a pas d'autorisations spéciales, seul l'root
utilisateur en a.Réponses:
Pourquoi ça ne marche pas
Lorsque vous essayez de changer l'heure de modification d'un fichier avec
touch
, ou plus généralement avec l'appel système sous-jacentutime
, il y a deux cas.Pourquoi cela n'a généralement pas d'importance
--omit-dir-times
(-O
).Solutions
Ok, arrête là. Ce n'est pas parce qu'il n'y a qu'un seul développeur que vous ne devez pas utiliser SCM. Vous devez utiliser SCM. Demandez au développeur d'archiver un fichier et donnez-lui un moyen d'appuyer sur un bouton «déployer» pour extraire les fichiers de SCM dans le répertoire en direct.
Il n'y a absolument aucune raison technique pour laquelle vous ne devriez pas utiliser SCM, mais il peut y avoir une raison humaine. Si la personne qui travaille sur ces fichiers se dit «développeur», elle devrait utiliser SCM. Mais s'il s'agit d'une personne non technique insérant des documents, SCM peut être trop compliqué. Continuez donc à pousser les fichiers via FTP ou SSH. Cela peut fonctionner de trois manières.
rsync
a une option pour ne pas synchroniser les heures. Scp ne le fait pas sauf si vous le lui dites. Je ne connais pas WinSCP mais il le peut probablement aussi.apache
utilisateur, alors l'approche habituelle serait d'autoriser l'utilisateur SSH à accéder en tant queapache
. L' approche la plus simple consiste à demander à l'utilisateur de créer une clé privée SSH et d'ajouter la clé publique correspondante à~apache/.ssh/authorized_keys
. Cela signifie que l'utilisateur pourra exécuter des commandes arbitraires en tantapache
qu'utilisateur. Puisque vous êtes d'accord pour donner à l'utilisateur des droits sudo de toute façon, cela n'a pas d'importance dans votre cas. Il est possible, mais pas si facile, de mettre plus de restrictions (vous avez besoin d'une entrée de base de données utilisateur distincte avec un nom différent, le même ID utilisateur, un shell restreint et une prison chroot; détails dans une question distincte, bien que cela puisse déjà être couvert sur ce site ou sur Server Fault ).¹ Ou, pour un fichier vide, écrivez un octet puis tronquez.
² Sauf complications supplémentaires, mais aucune que je sache ne s'applique ici.
la source
apache
- alors ils pourraient définir des heures. Voir ma réponse révisée pour la bonne solution et quelques-unes des sous-optimales.Vous pouvez configurer rsync pour utiliser sudo sur l'extrémité distante comme ceci:
la source
sudo rsync
est très difficile de restreindre. Je ne l'ai suggéré que parce que l'OP a dit que l'utilisateur avait déjà un accès sudo.