web-dev-qa-db-fra.com

Pourquoi ne puis-je pas définir le groupe et la propriété d'un dossier sans affecter l'autre?

J'ai mis à jour un PC Ubuntu du 10.04 au 12.04.

Le problème est que toutes les autorisations étaient incorrectes sur les dossiers de départ.

Alors, j'ai fait ce qui suit:

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/.*

Mais vous vous retrouvez avec tous les fichiers des deux dossiers dans james: james ou htpc: htpc, en fonction de la méthode utilisée pour exécuter les commandes.

Comment le lien est-il devenu et comment puis-je résoudre ce problème?

Comme demandé:

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:~$ 
2
RoboJ1M

C'est parce que le shell étend le ". *" À ".." ou à un répertoire.

Dans ce cas, il vaut mieux, IMO, utiliser find

Devenir root

Sudo -i

courir trouver

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

Remplacez $ user par le nom d'utilisateur approprié

En théorie, chown devrait fonctionner avec le -R et sans le joker

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

mais je pense que cela manque les fichiers cachés ou .fichiers, c'est pourquoi RoboJ1M a essayé ". *" qui a causé le problème.

6
Panther

Chaque dossier contient un fichier nommé ... Ce fichier a la particularité de pointer vers le répertoire contenant le répertoire de travail actuel. Par exemple:

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

Comme vous avez spécifié .* en tant qu'argument, le shell l'étend à tous les fichiers commençant par ".", Y compris ... Cela signifie que votre opération a été exécutée sur tous les éléments du répertoire de travail actuel, mais également le répertoire parent (/home). Parce que vous avez spécifié récursif, vous avez modifié tous les fichiers et répertoires de votre dossier /home en les attribuant que vous avez spécifiés. En fait, vous avez peut-être changé le propriétaire de chaque fichier de votre système. Je vous recommande d'exécuter ls -l / pour vérifier si cela s'est produit. Si cela se produit, vous rencontrerez probablement des problèmes.

5
strugee

J'utilise ceci sur mes hôtes EC2 pour corriger les autorisations du dossier personnel.

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

Si vous le faites -R, vous n’auriez pas besoin d’utiliser de joker. Juste chown au dernier niveau laisser le reste seul. Et comme d’autres l’ont dit.

0
coteyr