Changer d'utilisateur pendant scp


16

J'ai besoin de copier un fichier entre des machines Linux. Le problème que l'utilisateur que j'utilise pour me connecter ( myuser) est différent de celui qui peut accéder au fichier.

Si je viens sshà la machine, je peux changer d'utilisateur en utilisant sudo su someuser, puis-je le faire d'une manière ou d'une autre scp?

En utilisant WinSCP, j'ai réussi à le faire, en configurant le SCP / Shell, donc je pense qu'il doit y avoir une manière similaire de le faire via le shell pur.


Je suis confus. Pourquoi ne vous connectez-vous pas en tant qu'utilisateur qui manipule le fichier?
rahmu

Parce qu'il est impossible de se connecter avec l'autre utilisateur.
Tarlog

Que diriez-vous de vous connecter sshet d'exécuter scpquelque chose comme ceci ssh myuser@host "sudo scp ...":?
rahmu

Peut-être que la réponse ici peut fonctionner dans une telle situation? unix.stackexchange.com/questions/43094/… @Tarlog Cela suppose que sur la machine distante elle-même, vous pouvez ssh someuser @ remote
Bernhard

Réponses:


9

En supposant que l'utilisateur auquel vous pouvez envoyer ssh n'a pas besoin d'un mot de passe pour sudo su dans l'utilisateur cible, vous pouvez essayer ceci:

dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile" 

... Attention, je ne suis toujours pas convaincu que la simple configuration targetuserpour n'autoriser scp / sftp / rsync que sur SSH et l'utilisation d'une paire de clés RSA pour l'authentification ne soit pas une bien meilleure option.


1
ou tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"pour un tas de fichiers
Matt

Aussi vrai, et je suppose que nous pouvons débattre si -zou -jsont utiles en fonction de la vitesse de connexion et le matériel informatique de chaque côté ...
Shadur

3

Si vous connaissez les informations d'identification de l'autre utilisateur ( someuser), vous pouvez simplement le spécifier lors de votre scpappel.

Depuis la man scppage:

Les noms de fichiers peuvent contenir une spécification d'utilisateur et d'hôte pour indiquer que le fichier doit être copié vers / depuis cet hôte. Les noms de fichiers locaux peuvent être rendus explicites en utilisant des chemins absolus ou relatifs pour éviter que scp ne traite les noms de fichiers contenant «:» comme spécificateurs d'hôte. Les copies entre deux hôtes distants sont également autorisées.

Voici la syntaxe utilisée:

[[user@]host:]/path/to/file

Exemple

Vous souhaitez copier le fichier /home/foo/bardepuis host1votre hôte local, en utilisant l'utilisateur someuser, voici la commande:

scp someuser@host1:/home/foo/bar .

Une authentification vous sera demandée (mot de passe, clés, ...).


1
Il est impossible de se connecter en tant qu'autre utilisateur.
Tarlog

Ensuite, établissez une connexion scp / rsync uniquement avec les clés RSA.
Shadur

1
Il est impossible d'utiliser l'autre utilisateur en utilisant n'importe quel type de connexion. Autre que j'utilise déjà les clés RSA pour ssh / scp.
Tarlog

1

C'est probablement possible , mais je dirais que c'est une façon très maladroite de s'y prendre.

Ma première suggestion est de vous connecter en tant qu'utilisateur. Même si vous n'avez pas le mot de passe de cet utilisateur, vous pouvez ajouter votre propre clé publique ssh à leurs clés autorisées puis scp en utilisant leur clé, comme le montre rahmu.

Si ce n'est pas possible, ma deuxième suggestion est de se connecter par ssh, sudo à l'utilisateur et de créer un fichier tar des fichiers que vous souhaitez copier et de le placer quelque part que votre propre utilisateur peut lire. Ensuite, faites défiler ce fichier tar.


Il est impossible de se connecter à l'autre utilisateur. Oui, j'ai moi-même compris la deuxième suggestion. Vous cherchez un moyen facile :)
Tarlog

Le lien affiché par gcb devrait donc être utile. Au moins si vous allez faire cela plus d'une fois. Ou, bien sûr, vous pouvez modifier les droits d'accès au fichier pour permettre à votre propre utilisateur d'y accéder.
Jenny D

Eh bien, j'essaie de créer un script (qui va être utilisé plusieurs fois bien sûr) qui sera utilisé par différents utilisateurs. Donc, m'accorder l'accès ne m'aidera pas vraiment. Quiconque est capable de «sudo su autre utilisateur» devrait pouvoir exécuter le script.
Tarlog

Je t'ai eu. Je commencerais par le lien de gcb, puis si vous avez des problèmes avec le script, postez-le et voyez si nous pouvons faire appel à de l'aide.
Jenny D


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.