Alterando usuário enquanto scp


16

Eu preciso copiar o arquivo entre máquinas Linux. O problema que o usuário que utilizo para fazer login ( myuser) é diferente do usuário que pode acessar o arquivo.

Se eu for sshpara a máquina, posso trocar de usuário sudo su someuser, posso fazê-lo de alguma forma enquanto scp?

Ao usar o WinSCP, eu consegui fazê-lo, configurando o SCP / Shell, então acredito que deve haver uma maneira semelhante de fazê-lo via shell puro.


Estou confuso. Por que você não faz login como o usuário que manipula o arquivo?
rahmu

Porque é impossível fazer login usando o outro usuário.
Tarlog 25/02

Que tal se conectar sshe executar scp, algo como isto ssh myuser@host "sudo scp ...":?
rahmu

Talvez a resposta aqui possa funcionar em tal situação? unix.stackexchange.com/questions/43094/… @Tarlog Isso pressupõe que na própria máquina remota, você pode ssh someuser @ remote #
Bernhard

Respostas:


9

Supondo que o usuário para o qual você PODE ssh não precise de uma senha para sudo su no usuário de destino, você pode tentar o seguinte:

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

... Lembre-se, ainda não estou convencido de que simplesmente configurar targetuserapenas permitir scp / sftp / rsync sobre SSH e usar um par de chaves RSA para autenticação não seja uma opção muito melhor.


1
ou tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"para um monte de arquivos
Matt

Também é verdade, e eu suponho que podemos debater se -zou -jsão úteis, dependendo da velocidade de conexão e hardware de computador de ambos os lados ...
Shadur

3

Se você conhece as credenciais para o outro usuário ( someuser), basta especificá-las na sua scpchamada.

Na man scppágina:

Os nomes de arquivos podem conter uma especificação de usuário e host para indicar que o arquivo deve ser copiado para / desse host. Os nomes de arquivos locais podem ser explicitados usando nomes de caminho absolutos ou relativos para evitar que o scp trate nomes de arquivos contendo ':' como especificadores de host. Cópias entre dois hosts remotos também são permitidas.

Aqui está a sintaxe usada:

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

Exemplo

Você quer copiar o arquivo /home/foo/bara partir host1de seu localhost, utilizando usuário someuser, aqui está o comando:

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

Você será solicitado a autenticação (senha, chaves, ...).


1
É impossível fazer login como outro usuário.
Tarlog 25/02

Em seguida, estabeleça um login somente para scp / rsync com chaves RSA.
Shadur

1
É impossível usar o outro usuário usando qualquer tipo de login. Além disso, eu já uso chaves RSA para ssh / scp.
Tarlog 25/02

1

É provável possível , mas eu diria que é uma maneira muito estranha de fazer isso.

Minha primeira sugestão é fazer login como esse usuário. Mesmo que você não tenha a senha do usuário, você pode adicionar sua própria chave pública ssh às chaves_estabelecidas deles e, em seguida, scp usando a chave deles, como mostra rahmu.

Se isso não for possível, minha segunda sugestão é fazer o login por ssh, sudo para o usuário e criar um arquivo tarfile dos arquivos que você deseja copiar e colocá-lo em algum lugar que seu próprio usuário possa ler. Em seguida, verifique esse tarfile.


É impossível fazer login no outro usuário. Sim, eu mesmo descobri a segunda sugestão. Procurando uma maneira fácil :)
Tarlog

O link postado pelo gcb deve ser útil, então. Pelo menos se você estiver fazendo isso mais de uma vez. Ou, é claro, você pode alterar os direitos de acesso ao arquivo para dar acesso ao seu próprio usuário.
Jenny D

Bem, estou tentando criar um script (que será usado várias vezes, é claro) que será usado por diferentes usuários. Portanto, conceder o acesso a mim realmente não ajudará. Qualquer pessoa que consiga 'sudo su otheruser' deve poder executar o script.
Tarlog 25/02

Peguei vocês. Eu começaria com o link do gcb, se você tiver problemas com o script, poste-o e veja se podemos obter alguma ajuda para o crowdsource.
Jenny D


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.