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:~$
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.
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.
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.