Como eu mudo o proprietário para o usuário atual na pasta e contendo pastas dentro do meu diretório pessoal?

7

Usando sudo nautilus , criei algumas pastas e desejo me livrar da permissão de root nelas. Mas eu tenho muitos e quero fazê-lo para um diretório inteiro e suas pastas contendo.

Então, como permitir a leitura / gravação para o usuário atual de todos os arquivos e pastas dentro de um diretório específico que esteja dentro de casa?

    
por Vitor Abella 25.09.2016 / 20:38

3 respostas

8

Para reverter o dano feito usando sudo nautilus você deve se tornar o proprietário de quaisquer diretórios (e seus conteúdos) pertencentes a root.

Você pode usar find para fazer isso, pois ele tem um teste para encontrar apenas arquivos de propriedade de um usuário específico.

Isso encontrará todos os diretórios em sua casa de propriedade do root:

sudo find ~ -type d -user root

Você pode então repetir o comando find e adicionar a ação que deseja fazer - alterar recursivamente a propriedade de todos os diretórios encontrados e seu conteúdo para o usuário atual:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

Explicação:

  • ~ o diretório inicial
  • -type d encontra somente diretórios
  • -user root encontra apenas coisas que pertencem ao root
  • -exec faça o seguinte comando no que foi encontrado
  • sudo chown -R recursivamente altera o proprietário
  • $USER do usuário atual
  • : também muda o grupo para o usuário específico

Com mais eficiência, você pode omitir o -type d para localizar arquivos de qualquer tipo que pertençam ao root e também omitir o -R , pois o find fará a recursão para você agindo em todos os arquivos

sudo find ~ -user root -exec sudo chown $USER: {} +
    
por Zanna 25.09.2016 / 20:42
8

Ferramentas de GUI em execução, como nautilus as root são consideradas prejudiciais por esse motivo, entre outras (funções ocultas, capacidade de executar silenciosamente fragmentos de programa de quem sabe onde, ...).

Você não tem um problema de "permissão", você tem um problema de "propriedade".

Para encontrar todos os arquivos pertencentes a root (de propriedade de qualquer outra pessoa), faça:

sudo find $HOME \! -user $USER

Para alterar a propriedade de volta para você, você pode

sudo chown -R $(id -u):$(id -g) $HOME

mas isso mudará a propriedade de todos os arquivos em e abaixo de $HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

Dá uma oportunidade para ajustar a lista de arquivos, de propriedade de você, que terão sua propriedade alterada de volta para você.

    
por waltinator 25.09.2016 / 20:55
3

O que você precisa fazer é alterar a propriedade da pasta do usuário (e do grupo) root para o outro usuário (e grupo) que você deseja.

Imagine que você quer trabalhar em / home / randomFolder , e que o usuário com o qual você quer lidar com propriedade é vitor-abella , o que você precisa fazer é simplesmente execute isso como root:

chown -R vitor-abella:vitor-abella /home/randomFolder

Pode demorar um pouco se houver muitos arquivos e subpastas, mas depois disso você deve estar no caminho certo.

Felicidades.

    
por Javier Caselli 25.09.2016 / 20:55