Por que não consigo definir o grupo e a propriedade de uma pasta sem afetar a outra?

2

Eu atualizei um PC Ubuntu de 10.04 para 12.04.

O problema é que todas as permissões estavam erradas nas pastas iniciais.

Então, fiz o seguinte:

sudo chown -R james:james /home/james/*
sudo chown -R james:james /home/james/.*
sudo chown -R htpc:htpc /home/htpc/*
sudo chown -R htpc:htpc /home/htpc/.*

Mas você acaba com todos os arquivos em ambas as pastas em james: james ou htpc: htpc, dependendo de como você executa os comandos.

Como o link se tornou vinculado e como posso corrigi-lo?

Conforme solicitado:

james@htpc:~$ ls -l /home
total 8
drwxr-xr-x 41 james james 4096 May 20 19:32 htpc
drwxr-xr-x 31 james james 4096 May 20 20:04 james
james@htpc:~$ ls -l /home/htpc
total 236
drwxr-xr-x  4 james james   4096 Nov 25 13:19 Desktop
drwxr-xr-x  2 james james   4096 Mar 13  2011 Documents
drwxr-xr-x  5 james james   4096 Dec 22  2010 Downloads
-rw-r--r--  1 james james    179 Nov 18  2010 examples.desktop
-rwxr-xr-x  1 james james     85 Dec 27  2010 goback
-rw-r--r--  1 james james    425 Nov 28  2010 modelines
drwxr-xr-x  5 james james   4096 Dec 27  2010 Music
drwxr-xr-x 22 james james   4096 Oct 29  2012 Pictures
drwxr-xr-x  2 james james   4096 Nov 18  2010 Public
drwxr-xr-x  2 james james   4096 Nov 18  2010 Templates
-rwxr-xr-x  1 james james    251 Dec 27  2010 testmode
drwxr-xr-x  2 james james   4096 Dec 23  2010 Videos
-rwxr-xr-x  1 james james 190672 Nov  6  2010 winetricks
james@htpc:~$ 
    
por RoboJ1M 20.05.2013 / 20:48

3 respostas

6

É porque o shell está expandindo o ". *" para ser ".." ou um diretório para cima.

Nesse caso, é melhor, IMO, usar find

Torne-se root

sudo -i

execute a pesquisa

find /home/$user -exec chown $user:$user {} \;

Altere $ user para o nome de usuário apropriado

Em teoria, o chown deve funcionar com o -R e sem o curinga

sudo chown -R $user:$user /home/$user

mas acho que isso erra os arquivos ocultos ou .files, razão pela qual o RoboJ1M tentou ". *", o que causou o problema.

    
por Panther 20.05.2013 / 21:13
5

Cada pasta contém um arquivo chamado .. . Este arquivo é especial, pois aponta para o diretório que contém o diretório de trabalho atual. Por exemplo:

$ pwd
/path/to/dir
$ cd ..
$ pwd
/path/to

Como você especificou .* como argumento, o shell expande isso para todos os arquivos que começam com ".", incluindo .. . Isso significa que sua operação foi executada em tudo no diretório de trabalho atual, mas também no diretório pai ( /home ). Como você especificou recursiva, você alterou todos os arquivos e diretórios na pasta /home para a propriedade que você especificou. Na verdade, você pode ter alterado o proprietário de cada arquivo no seu sistema. Recomendo que você execute ls -l / para verificar se isso aconteceu. Se isso ocorrer, você provavelmente enfrentará problemas.

    
por strugee 20.05.2013 / 21:10
0

Eu uso isso nos meus hosts do EC2 para corrigir as permissões da pasta de início.

#fix home directories  
cd /home/  
for i in *; do   
    useradd $i  
    chown -R $i:$i /home/$i  
done  

Se você fizer isso -R, não precisará usar curingas. Apenas chown no nível superior deixa o resto sozinho. E como outros já disseram. * Combinações ..

    
por coteyr 20.05.2013 / 21:30