copia o arquivo do usuário para outro no linux

2

Estou tentando copiar um arquivo do meu diretório home para o diretório de outro usuário. Eu tenho um acesso sudo para o outro usuário sem senha. Eu tentei fazer algo como:

sudo secondUser cp /home/firstUser/file /home/secondUser 

Existe uma maneira de fazer isso? Também não tenho acesso root e não sei a senha do secondUser.

    
por tkyass 21.04.2016 / 21:19

6 respostas

6

EDIT: é uma maneira de fazer isso de forma rápida e fácil, sem configuração adicional.

cat ~firstUser/file | sudo -u secondUser tee ~secondUser/file >/dev/null

Isso transferirá todos os conteúdo do arquivo exatamente. Se você se preocupa em ter as permissões de arquivo e / ou o registro de data e hora correspondentes ao original, será necessário corrigi-los separadamente usando chmod e touch .

RESPOSTA ORIGINAL:

O problema aqui é que:

  • secondUser não tem acesso ao seu diretório pessoal.
  • Você não tem acesso ao diretório inicial de secondUser .

Assim, independentemente de você executar o comando cp como você mesmo ou como secondUser , ele não poderá executar a cópia do arquivo.

Como você disse que não tem root access, a resposta óbvia é copiar o arquivo por meio de um local intermediário de leitura, como /tmp , e alterar as permissões do arquivo para world-readable. Se os dados no arquivo forem confidenciais, talvez você não queira fazer isso, porque qualquer pessoa no servidor poderá ler o arquivo enquanto estiver em trânsito. Se não forem dados confidenciais, faça o seguinte:

cp file /tmp/
chmod a+r /tmp/file
sudo -u secondUser cp /tmp/file ~secondUser
rm /tmp/file

A melhor opção, se você puder organizá-lo, é criar um grupo que contenha somente você e secondUser e chgrp da cópia do arquivo em /tmp pertencente a esse grupo. Desta forma, você não precisa tornar o arquivo world legível, mas somente legível pelo grupo (com chmod g+r /tmp/file ). No entanto, groupadd em si requer acesso root, então é improvável que isso seja fácil de organizar. Dependendo das circunstâncias (se você está frequentemente tentando compartilhar / colaborar com secondUser , isso pode ser aplicável), você pode considerar pedir ao seu administrador para configurar este grupo para uso futuro.

    
por 21.04.2016 / 22:21
3

O problema com:

sudo -u secondUser cp /home/firstUser/file /home/secondUser 

é que, assim que você se torna secondUser , não tem acesso a /home/firstUser/file .

A solução é que você precisa abrir o arquivo para secondUser como firstUser e ter secondUser para herdar esse descritor de arquivo.

Como medida de segurança, sudo fechará todos os descritores de arquivos, exceto 0 , 1 e 2 ; entretanto, isso é tudo que você precisa neste caso (você pode explicitamente permitir herança para mais descritores de arquivos):

sudo -u secondUser < /home/firstUser/file sh -c 'cat > /home/secondUser/file' 

Para uma solução mais genérica com possível preservação de metadados, você pode colocar a saída de algo como tar ou cpio no sudo do seu processo stdin :

 tar c file1 file2 file3 | sudo -u secondUser tar x -C ~secondUser
    
por 21.04.2016 / 22:36
1

O sinalizador -u para o sudo permitirá que você especifique a conta do usuário sob a qual um comando deve ser executado, mas exigirá que você saiba a senha do outro usuário.

sudo -u secondUser cp file /home/secondUser/file

Se você não souber a senha do outro usuário, talvez não seja possível fazer isso. Isso faz parte do projeto normal de separação de privilégios do sistema e, idealmente, não deve ser ignorado.

Você também pode mover o arquivo para um local onde ambas as contas de usuário tenham acesso a ele, como / tmp, e fazer com que o segundo usuário o mova para seu próprio diretório pessoal.

    
por 21.04.2016 / 21:32
0

Você pode fazer

su secondUser

e depois fazer as coisas como o segundo usuário.

    
por 21.04.2016 / 21:21
-1

Copie o arquivo para / tmp e altere as permissões para 777. su para o segundo usuário. Copie o arquivo de / tmp.
O comando sudo secondUser não é válido.

    
por 21.04.2016 / 21:30
-1

Em vez disso, sudo secondUser cp / home / firstUser / file / home / secondUser

Use isso, sudo cp / home / firstUser / arquivo / home / secondUser

    
por 24.02.2018 / 19:51