Comment copier des fichiers dans `/ var / www` avec WinSCP?

11

Lorsque j'essaie de placer mes fichiers Web dans /var/wwwin apache sur mon instance ec2 Ubuntu, cela me donne une erreur indiquant que je n'ai pas la permission.

Permission denied.
Error code: 3
Error message from server: Permission denied
Request code: 3

Comment puis-je me donner la permission de le faire ou quelle est la meilleure façon de copier des fichiers /var/wwwavec WinSCP?

andrew
la source

Réponses:

15

J'obtenais la même erreur dans WinSCP. Une solution consiste à modifier la propriété du dossier '/ www /' à l'aide de chown. De cette façon, vous pouvez faire en sorte que l'utilisateur avec lequel vous vous connectez soit le propriétaire au lieu que «root» soit le propriétaire. J'utilise une instance d'Amazon Linux plutôt que d'Ubuntu, mais cette commande a fonctionné pour moi:

sudo chown -R -v ec2-user /var/www/

L'utilisateur 'ec2-user' est l'utilisateur avec lequel je me connecte.

Liens potentiellement utiles

  • alestic.com : Utilisation de sudo, ssh, rsync sur les images officielles Ubuntu pour EC2
  • apache.com : Liste des commandes
chrisfargen
la source
Vos demandes d'aide dans le cadre d'une réponse à la question de quelqu'un d'autre ne recevront probablement pas de réponses ou de commentaires utiles. Pour l'obtenir, vous feriez probablement mieux de poser votre propre question avec les détails précis dont vous avez besoin.
killermist
9

Activez les autorisations d'écriture pour l'utilisateur se connectant via WinSCP. Il y a deux façons de faire ça.

La première façon consiste à modifier les autorisations sur le dossier pour permettre à quiconque d'y écrire. Ce n'est pas la meilleure sécurité.

chmod 777 /var/www


La deuxième façon consiste à ajouter votre utilisateur au groupe propriétaire du répertoire, puis à définir les autorisations pour que le groupe écrive dans le répertoire.

Découvrez à qui appartient l'annuaire:

ls -l /var | grep www

Vous verrez quelque chose comme: drwxr-x --- 9 www-data www-data 4096 14 juillet 2009 www La chose importante à noter sont les deux noms root et root. Dans ce cas, le propriétaire de l'annuaire est www-data et le groupe de l'annuaire est www-data. Alors maintenant, vous allez ajouter votre utilisateur au groupe www-data.

usermod -G www-data user

Maintenant, ajoutez simplement l'autorisation d'écriture au groupe.

chmod 770 /var/www

Maintenant

ls -l /var | grep www

devrait retourner: drwxrwx --- 9 www-data www-data 4096 14 juil 2009 www

Avec cela, vous pourrez écrire dans le répertoire, sans ouvrir les privilèges d'écriture à tout le monde.

Chris Ting
la source
1
légère correction pour l'exactitude - sudo chmod 777 / var / www - sudo usermod -G www-data (nom d'utilisateur) - sudo chmod 770 / var / www - Cela peut fonctionner selon qui vous êtes dans votre exemple, mais 'sudo' devrait fonctionner peu importe qui vous êtes (en supposant que votre connexion se trouve dans / etc / sudoers pour root / admin bien sûr).
bshea
1

sur ec2 cela fonctionne pour moi. Connectez-vous à box via putty avec l'utilisateur "ec2-user" et utilisez les commandes:

sudo root
chmod 777 <NAME_OF_FOLDER>

Remarque: cela accorde un accès en écriture à tous les utilisateurs.

Devrait maintenant être capable d'écrire en utilisant WinScp.

ciel bleu
la source
1

Le tutoriel suivant a fonctionné pour moi et fournit des captures d'écran utiles. La connexion en tant qu'utilisateur régulier avec des autorisations sudo a simplement nécessité de modifier quelques options WinSCP: http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

Définissez le protocole de session / fichier sur: SCP, entrez l'adresse IP de l'hôte / instance, le port - généralement 22 et le nom d'utilisateur normal. Entrez les informations d'identification du mot de passe si la connexion l'exige. Ajoutez le fichier de clé privée correspondant de l'utilisateur dans Avancé / SSH / Authentification.

Si vous décochez la case Avancé / SSH / Authentification / tentative, l'authentification "clavier interactive" devrait permettre à Advanced / Environment / SCP Shell / Shell / Shell: sudo su - de fournir des autorisations sudo pour accéder aux répertoires du serveur Web en tant qu'utilisateur non propriétaire.


Mise à jour: 08/03/2017

La journalisation WinSCP peut être utile pour résoudre les problèmes.

winscp.net/eng/docs/logging:

[WinSCP] La journalisation peut être activée à partir de la page Journalisation de la boîte de dialogue Préférences. La journalisation peut également être activée à partir de la ligne de commande en utilisant respectivement les paramètres / log et / xmllog, ce qui est particulièrement utile avec les scripts. Dans l'assembly .NET, la journalisation de session est activée à l'aide de Session.SessionLogPath1).

En fonction des erreurs de connexion WinSCP, certaines installations de serveur peuvent nécessiter une directive ajoutée au fichier (Ubunto, CentOS, autre-Linux-Server) / etc / sudoers pour ne pas nécessiter de TTY pour un utilisateur spécifié. La création d'un fichier dans /etc/sudoers.d/ (à l'aide d'un outil tel que Amazon Command Line Interface ou PuTTY) peut être une meilleure option que la modification de / etc / sudoers. Certaines versions de / etc / sudoers le recommandent:

Ce fichier DOIT être édité avec la commande 'visudo' en tant que root. Veuillez envisager d'ajouter du contenu local dans /etc/sudoers.d/ au lieu de modifier directement ce fichier. Consultez la page de manuel pour plus de détails sur la façon d'écrire un fichier sudoers.

Lors de la modification d'un fichier sudoers (en tant que root) via la ligne de commande, la commande «visudo» doit être utilisée pour ouvrir le fichier car elle analysera le fichier pour les erreurs de syntaxe. Les fichiers /etc/sudoers.d/ appartiennent généralement à root et sont modulés avec des autorisations minimales. Le fichier / etc / sudoers par défaut peut être référencé car il devrait automatiquement avoir les autorisations chmod recommandées lors de l'installation. par exemple: 0440 r - r -----.

superuser.com/a/869145:

visudo -f /etc/sudoers.d/somefilename

Defaults:username !requiretty 

Liens utiles:

  • Stackoverflow: stackoverflow.com/questions/25688850/cloud-init-how-to-add-default-user-to-sudoers-d
    • www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos

Forum WinSCP: - winscp.net/forum/viewtopic.php?t=3046 - winscp.net/forum/viewtopic.php?t=2109

WinSCP Doc: https://winscp.net/eng/docs/faq_su

Avec le protocole SCP, vous pouvez spécifier la commande suivante comme shell personnalisé sur la page SCP / Shell de la boîte de dialogue Paramètres de site avancés:

sudo -s

[...]

Notez que comme WinSCP ne peut pas implémenter l'émulation de terminal, vous devez désactiver l'option sudoers.

Les instructions dans Ubuntu Apache / etc / sudoers recommandent d'ajouter des directives à /etc/sudoers.d plutôt que de modifier directement / etc / sudoers. Selon l'installation, l'ajout de la directive à /etc/sudoers.d/cloud-init peut également fonctionner.

Il peut être utile de créer un utilisateur de test SSH avec des autorisations sudo en suivant les étapes fournies dans la documentation d'instance pour garantir que l'utilisateur a recommandé les paramètres d'instance et que toutes les mises à jour des fichiers sudoer du serveur peuvent être effectuées et supprimées sans affecter les autres utilisateurs.

1keown
la source
0

Vous devez donner à l'utilisateur des autorisations d'écriture, rappelez-vous les autorisations précédentes à l'aide de stat /var/www.

Vous pouvez ensuite les modifier avec sudo chmod 666 /var/wwwet les modifier ultérieurement si nécessaire.

Consultez man chmodet man sudoaux côtés d'autres manuels d'autorisation de fichiers sur Internet pour plus d'informations ...

Tamara Wijsman
la source