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

12

Usando sudo nautiluseu criei algumas pastas e quero me livrar da permissão de root nelas. Mas eu tenho muitos e quero fazer isso em um diretório inteiro e em suas pastas contendo.

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

Vitor Abella
fonte

Respostas:

13

Para reverter os danos causados ​​pelo uso, sudo nautilusvocê deve se tornar o proprietário de todos os diretórios (e seu conteúdo) pertencentes à raiz.

Você pode findfazer isso, pois ele possui um teste para localizar apenas arquivos pertencentes a um usuário específico.

Você encontrará todos os diretórios em sua casa pertencentes ao root:

sudo find ~ -type d -user root

Em seguida, você pode repetir o findcomando e adicionar a ação que deseja executar - alterando 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 encontre apenas diretórios
  • -user root encontre apenas coisas pertencentes à raiz
  • -exec execute o seguinte comando no que foi encontrado
  • sudo chown -R mudar recursivamente o proprietário
  • $USER o usuário atual
  • : também altere o grupo para o usuário específico

Mais eficientemente, você pode omitir o -type dpara encontrar arquivos de qualquer tipo pertencentes ao root e também omitir a recursão, assim -Rcomo findfará a recursão atuando em todos os arquivos

sudo find ~ -user root -exec sudo chown $USER: {} +
Zanna
fonte
Você deve executar o seu findwith sudo( sudo find ...) para inspecionar os rootsubdiretórios proprietários com 0700proteções e tudo sob eles. O mesmo vale para o reparo.
waltinator
"defender contra o que é provável" ou "defender contra o que é possível"? Sua escolha.
waltinator
@ waltinator certeza :) obrigado por mencionar isso para que eu pudesse melhorar. Eu apenas tento não usar sudoaté ser necessário
Zanna
10

Correndo ferramentas GUI, como nautiluscomo rooté considerado nocivo por esta razão, entre outros (funções ocultas, capacidade de fragmentos de programa executado silenciosamente 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(realmente pertencentes a mais alguém), 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 dentro e abaixo $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á a oportunidade de ajustar a lista de arquivos pertencentes a você, que terão sua propriedade alterada para você.

waltinator
fonte
5

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

Imagine que você deseja trabalhar em / home / randomFolder e que o usuário com o qual você deseja gerenciar a propriedade é vitor-abella , o que você precisa fazer é simplesmente executar 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.

Javier Caselli
fonte
3
Eu uso $(id -u):$(id -g), ao invés de pedir OP para imaginar, e $HOME/randomFolder.
waltinator