Você deve tentar
sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
Estou tentando copiar a chave privada ssh de um usuário para outro usuário em uma única foto.
sudo su && cp /home/sk/keys/master.pem /home/sg-user/keys/
Este comando funciona bem, quando eu os executo um por um. Mas, mostra erro como,
cp: cannot create regular file ‘/home/sg-user/keys/master.pem’: Permission denied
Quando eu corri o comando acima, ele muda para o prompt root como,
root@sk-box:/home/sk#
Eu tentei
sudo su && cp /home/sk/keys/master.pem /home/sg-user/keys/ && exit
para ver, se o comando sair do terminal raiz depois de concluir a tarefa. Mas o comando exit não tem nenhum efeito e o prompt não sai da sessão raiz ....
Nota: sudo su
foi configurado para não solicitar senha usando /etc/sudoers
file
Quando os comandos são executados, eles são divididos em um processo filho, portanto, quando o comando 'su' é executado, ele é executado em um processo separado no comando cp e não na verdade dentro do terminal raiz.
O comando funcionará se você rodar o cp com sudo, mas ele não rodar dentro do terminal-raiz, você terá que executar os comandos separadamente dentro do su para conseguir isso.
sudo su && sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
O 'sudo so & &' No entanto, é redundante se você estiver apenas tentando realizar a cópia. Isso deve ser tudo o que é necessário:
sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
sudo su && cp /home/sk/keys/master.pem /home/sg-user/keys/
Isso executa o comando sudo su
. sudo su
roda um shell interativo como root, é basicamente equivalente a sudo -s
ou sudo bash
(se seu shell for bash). Quando esse comando terminar, se ele retornar um status de sucesso, o comando cp
será executado como o usuário original.
No que diz respeito ao shell, sudo
é um comando comum, não uma sintaxe especial do shell. Assim, como com qualquer outro comando, &&
é um separador de comando e o comando à sua esquerda é executado primeiro, depois o comando à sua direita (se o primeiro comando tiver sido bem-sucedido).
sudo su && cp /home/sk/keys/master.pem /home/sg-user/keys/ && exit
Essa variante faz o mesmo, exceto que sai do shell pai quando sudo su
retorna e o arquivo foi copiado (supondo que essas operações foram bem-sucedidas). O comando su
executa um shell interativo, que executa os comandos que você passa como entrada, não os comandos que o shell pai executará posteriormente.
Se você quiser executar dois comandos como root, executando o segundo somente se o primeiro for bem-sucedido, será possível invocar sudo
duas vezes:
sudo command1 && sudo command2
ou você pode fazer sudo
invocar um shell e usar o operador &&
nesse shell aninhado:
sudo sh -c 'command1 && command2'
No seu caso, você só está executando um único comando, então é só
sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
sudo su
é basicamente sempre inútil, porque os sudo
e su
são usados para alterar usuários. Como sudo
já executa o comando especificado como root, su
é redundante. Isso apenas executa um shell como root, o que você pode fazer com sudo su
.