Mover um diretório de um usuário para outro usuário, mantendo as permissões corretas

2

Vamos supor que temos para os usuários: alice e bob .

Agora, Bob quer mover o diretório ~/Documents de Alice para sua pasta pessoal.

Qual é o melhor fluxo de trabalho para fazer isso, atualizando as permissões (de Alice para Bob)?

Isso significa que todos os direitos que Alice tem em /home/alice/Documents/ (diretórios e arquivos, recursivamente) serão adicionados a Bob /home/bob/Documents/ (diretórios e arquivos, recursivamente), e os direitos de Alice serão removidos de /home/bob/Documents .

    
por Ionică Bizău 18.01.2015 / 19:51

4 respostas

6

Se você alterar o proprietário do arquivo usando chown , as permissões para o alice serão transferidas para bob. Então aqui está o fluxo:

sudo mv ~bob/Documents ~bob/Documents.orig
sudo mv ~alice/Documents/ ~bob/Documents
sudo chown -PR bob ~bob/Documents

Editar:

Caso você queira sobrescrever o grupo, use

sudo chown -PR bob:bob ~bob/Documents

Ou:

sudo chown -PR bob: ~bob/Documents

para usar o grupo primário de bob.

No entanto, tenha em atenção que isto pode ser problemático no caso de ~alice/Documents ter permissões de grupo não padrão. Nesse caso, pode ser melhor usar algo como

sudo find ~bob/Documents -group alice -exec chown -h bob: {} +

Se as ACLs estiverem em uso, convém verificar isso também.

    
por 18.01.2015 / 19:59
4

Como Bob:

mv ~bob/Documents ~bob/Documents.orig
cp --remove-destination --no-preserve=ownership -r ~alice/Documents/ ~bob/
sudo rm -fr ~alice/Documents/
    
por 18.01.2015 / 20:30
2
cp -avv /home/alice/Documents/ /home/bob/newDocuments/ && 
  chown -Rvv bob:bob /home/bob/newDocuments/
    
por 18.01.2015 / 20:04
1

Se bob não tiver permissão para ler a pasta pessoal de alice, você deve fazer algumas operações como superusuário (se Bob já não tiver esse poder) Eu pessoalmente vou usar algo assim:

sudo rsync -a --progress /home/alice/Documents/ /home/bob/Documents/
sudo chown -Rv bob:bob_group /home/bob/Documents
sudo rm -rv /home/alice/Documents
  • O rsync é muito versátil, você pode escolher quais arquivos deseja pular ou sincronizar uma pasta já existente ou copiar de um host remoto e mais outras opções. Eu este exemplo "-a" significa arquivo. Implica mais opções de rsync como -r e -p, que significa permissão recursiva e preservar. Inclui também -o (preserve owner) e -g (preserve group) e você pode ajustar essas opções como preferir. Então, no final da execução deste comando, você terá um clone na pasta Documentos de Alice na pasta pessoal de Bob.

  • o chown mudará o proprietário e o grupo de proprietários da nova pasta

  • rm, removerá a pasta original se você quiser.

por 18.01.2015 / 21:54