Como posso mover um arquivo para o diretório de outro usuário?

3

Estou usando o CentOS 6 e estou tentando mover um arquivo de USER A para USER B, mas continuo recebendo permissão negada.

O que preciso editar para permitir que eu coloque os arquivos do diretório de um usuário no outro?

    
por Exoon 31.12.2013 / 14:38

3 respostas

5

Você precisa dos direitos para ler o arquivo do usuário A e para gravar o arquivo na localização do usuário B.

Existem várias maneiras de arquivar isso:

1)
Como o usuário A (presumindo que ela pode ler seus próprios arquivos) obtenha permissão WRITE para a localização do usuário B. Isso significa estar em um grupo que tem permissão para w no diretório de destino e que tem permissão para acessar ( x ) o caminho do diretório até o destino.

Exemplo:

cd /home/user/A/
ls -l testfile  
-rw-------  1 userA  users  18 Dec 31 16:31 testfile

Observe o r. O usuário A pode ler seu próprio arquivo

cp testfile /home/userB/testdir

O usuário A precisará percorrer as pastas / home, / home / userB e / home / userB / testdir. Tudo isso precisa ser 'x' para ela. Ela quer escrever para a pasta 'testdir' e, portanto, ela também precisa de 'w' nessa pasta.

Esse 'w' pode estar no usuário, grupo ou outra parte. Mas se você definir em "outro", todo usuário pode escrever para ele. Assim, você geralmente faz com que arquivos compartilhados ou pastas compartilhadas façam parte de um grupo. (por exemplo, em / etc / group crie um grupo 'sales' e adicione ambos os usuários a isso).

2)
Como usuário B: (que é assumido como capaz de escrever em sua própria pasta). Obtenha a permissão read no arquivo na pasta do userA e o direito de percorrer o arquivo. (o mesmo que em 1).

Agora você pode copiar o arquivo para o seu próprio local. Você não pode excluí-lo da pasta do usuário A, a menos que também tenha os direitos para fazer isso. Então você pode copiar, mas não se mover.

3)
Como um usuário com uid 0 (geralmente root, toor, admin):

mv / home / userA / arquivo de teste / home / userB /

Observe que o arquivo ainda é de propriedade do userA e que o usuário B pode não ter os direitos para trabalhar no arquivo. Você pode corrigir isso com chown .

4)
Sem as armas pesadas, como frequentemente feito por dois usuários:

As UserA: cp testfile /tmp/
As userB: cp /tmp/testfile ~
As userA: rm /tmp/testfile

Esta não é a maneira mais segura (outras podem ver o arquivo enquanto ele está em / tmp), mas eu acho que essa é a solução mais comum.

Se você quiser fazer isso com frequência, sugiro criar um grupo e conceder a todos os usuários desse grupo direitos para um local compartilhado.

Não é perguntado, mas uma solução como essa geralmente é prática (mostrada com música, mas também pode ser um relatório de vendas).

vim / etc / group e adicione uma linha como esta: shared_music:*:3141:userA,UserB,UserC . Isso criará um grupo chamado shared_music, fornecerá um número e selecionará quais usuários pertencerão a esse grupo.

Em seguida, crie uma pasta pertencente a esse grupo.

cd /usr/local/
md our_ultimate_shared_music_collection
chgrp shared_music our_ultimate_shared_music_collection
chmod g+rwx our_ultimate_shared_music_collection
chmod g+S our_ultimate_shared_music_collection

Crie uma pasta em um local sadio. Defina o grupo e permita que todas as pessoas desse grupo leiam, escrevam e façam cd nessa pasta. O último comando (make group setuid) significa que os subarquivos recém-criados herdam o mesmo grupo que o diretório e os subdiretórios recém-criados herdam o bit set-group-ID do diretório pai. Isso evita que o usuárioA grave arquivos nesse diretório, o que o USerB (ou qualquer pessoa, exceto A) não pôde excluir ou renomear.

    
por 31.12.2013 / 16:41
0

Você precisa de permissões para acessar esse diretório. Escreva e execute no diretório em questão e escreva em qualquer arquivo sua sobrescrita.

A maneira mais fácil é sudo mv /dir1/file /dir2/file , mas provavelmente você deve ler Guia Rápido e Sujo das Permissões de Arquivo do Linux primeiro.

    
por 31.12.2013 / 14:45
0

Supondo que pelo menos um dos usuários tenha sudo privileges, execute o seguinte enquanto estiver conectado como esse usuário (por exemplo, com privilégios sudo):

sudo mv /home/userA/file_name /home/userB

Ele solicitará a senha do usuário correspondente.

Caso contrário, efetue login como root e execute o acima sem o "sudo" no início.

    
por 31.12.2013 / 19:35