Altere a propriedade do arquivo, com base no proprietário anterior

4

Sou moderadamente novo usuário linux. Mudei meu PC e comecei a usar o CentOS 7 do CentOS 6.

Então eu anexei meu disco rígido anterior ao meu novo pc para fazer backup dos meus arquivos. Agora, copiando os arquivos (e preservando as permissões e tudo), os arquivos mostram o proprietário como 500 (eu acho que este é o meu UID anterior).

Existe alguma maneira de alterá-las para meu novo nome de usuário? Eu quero excluir os arquivos que mostra alguns outros proprietários como 501.

Editar:

Exemplo:

ls -l
total 3
-rw-rw-r--.  1 500 500        210 Jan 10  2012 about.xml
drwxr-xr-x.  2 500 500       4096 May 15  2013 apache
drwxrwxr-x.  2 500 500       4096 Dec  9  2012 etc

Agora, posso fazer chown -R xyz:xyz . para que pareçam com:

ls -l
total 3
-rw-rw-r--.  1 xyz xyz        210 Jan 10  2012 about.xml
drwxr-xr-x.  2 xyz xyz       4096 May 15  2013 apache
drwxrwxr-x.  2 xyz xyz       4096 Dec  9  2012 etc 

Mas eu só quero saber se existem alguns tipos de comandos que podem mapear o usuário 500 para o usuário "xyz".

Obrigado.

    
por waiting_for_peace 23.09.2014 / 10:16

2 respostas

6

Se eu entendi corretamente, você deseja alterar o proprietário de todos os arquivos dentro de algum diretório (ou da raiz) de propriedade do usuário # 500 para pertencer a outro usuário, sem modificar os arquivos de propriedade de qualquer outro usuário. Você está nessa situação porque copiou uma árvore de diretórios inteira de outra máquina, em que os arquivos dessa árvore eram de propriedade de muitos usuários diferentes, mas você só está interessado em atualizar os que eram de propriedade de "seu" usuário na momento, e não qualquer um dos arquivos que são de propriedade do usuário # 501 ou qualquer outro.

O GNU chown suporta uma opção --from=500 que você pode usar em combinação com o -R opção recursiva para fazer isso:

chown -R --from=500 yourusername /path/here

Esta será a opção mais rápida se você tiver o GNU chown , que no CentOS você deve.

Em alternativa, pode utilizar find em qualquer sistema:

find /path/here -user 500 -exec chown yourusername '{}' '+'

find examinará todos os arquivos e diretórios de forma recursiva dentro de /path/here , correspondendo a todos os que pertencem ao usuário # 500. Com todos esses arquivos, ele executará chown yourusername file1 file2... quantas vezes forem necessárias. Após o término do comando, todos os arquivos pertencentes ao usuário # 500 serão de propriedade de yourusername . Você precisará executar esse comando como root para poder alterar os proprietários do arquivo.

Você pode verificar se há algum stragglers executando o mesmo comando find sem um comando para executar:

find /path/here -user 500

Não deve listar arquivos neste momento.

Uma ressalva importante: se algum dos arquivos pertencentes ao usuário # 500 for symlinks, chown por padrão alterará o proprietário do arquivo para o qual o link simbólico aponta, não o próprio link. Se você não confiar nos arquivos que está examinando, isso é uma falha de segurança. Use chown -h nesse caso.

    
por 23.09.2014 / 11:19
3

Um problema com o comando chown (mas na verdade até a chamada do sistema chown() ) é que ele retira os bits setuid e setgid das permissões como uma medida de segurança.

Também não abrange as ACLs.

Para contornar isso, uma abordagem pode ser usar rsync em um diretório sobre si mesmo no modo atualização e com a opção --usermap :

$ ls -ln
total 6732
-rwsr-xr-x  1 1002 1000 6888896 Nov  3 21:50 a
drwxr-xr-x+ 2 1002 1000    4096 Nov  3 21:46 x

$ getfacl -n x
# file: x
# owner: 1002
# group: 1000
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:1002:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

$ sudo rsync -rAau --usermap=1002:1000 . .

$ ls -ln
total 6732
-rwsr-xr-x  1 1000 1000 6888896 Nov  3 21:50 a
drwxr-xr-x+ 2 1000 1000    4096 Nov  3 21:46 x

$ getfacl -n x
# file: x
# owner: 1000
# group: 1000
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:1000:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

1002 alterado para 1000 nos proprietários dos arquivos e nas entradas da ACL.

Ele também processará links simbólicos corretamente.

    
por 03.11.2014 / 23:07