Você pode fazer (como user1
) algo como
sudo -u website cat ~website/somefile > ~user1/somefile
Observe que ~user1/somefile
será criado primeiro pelo usuário que está executando o shell ( user1
) e o cat
será executado como website
Você pode usar o tar (1) com o mesmo truque para vários arquivos:
sudo -u website tar cf - ~website/foo ~website/bar | tar xf -
Executar como user1
em seu diretório, que irá "criar" o arquivo tar no stdout como website
, e o outro tar (sem sudo, rodando como o mesmo usuário que o rodando, que é user1
) descompactaria esse arquivo tar virtual para o diretório atual (para o qual user1
pode gravar).
UPDATE Observe que o tar criará subdiretórios que levam a um arquivo, você pode reduzir esse comportamento especificando -C
, de modo que o tar entrará no diretório especificado antes de iniciar:
sudo -u website tar -C ~website -cf - foo bar | tar xf -
Dessa forma, foo
e bar
serão criados no diretório atual sem subdiretórios avançados (mas se você adicionou blah/baz
, ele criaria blah
como subdir no qual baz
reside)