J'ai eu beaucoup de mal à changer l'autorisation d'un dossier myfolder
résidant dans /
. J'ai émis la commande
Sudo chown -R luca:luca /myfolder/.*
Mon intention était de changer la propriété de tous les fichiers cachés dans /myfolder
.
Malheureusement, je me suis rendu compte que la propriété de /
avait également été modifiée, ce qui m'a bien sûr laissé un système défaillant. Je pense que cela est dû au fait que ..
correspond à .*
, mais me semble toujours étrange.
Le comportement correct du répertoire parent est-il correct ou dois-je enregistrer un rapport de bogue?
Si c'était mon erreur d'utiliser chown, quelles sont les meilleures pratiques à suivre pour éviter de changer la propriété des dossiers et des fichiers système?
N'oubliez pas que la ligne de commande est développée (interprétée) par le shell avant d'être exécutée
Sudo chown -R luca:luca /myfolder/.*
est d'abord interprété comme:
Sudo chown -R luca:luca /myfolder/. /myfolder/.. /myfolder/.Adobe /myfolder/.bash_history
notez le /myfolder/..
dans votre ligne de commande
chown -R luca:luca /myfolder/..
est équivalent à chown -R luca:luca /
qui fait courir le chown "à l'envers"
Utilisez echo /myfolder/.*
lorsque vous utilisez "*" pour vérifier.
Bien. La ligne de commande en tant que root est très puissante. Lire certains de ceux-ci classiques. Et oui, .*
correspondant à ..
correspond exactement à ce qui est prévu. Dot n'est pas un caractère spécial. C'est une convention. Par convention, les fichiers commençant par un point sont masqués de la vue par défaut lors de la création d'un répertoire - rien de moins, rien de plus. Par convention, l'inode menant au répertoire en cours obtient le nom .
et l'inode menant au répertoire parent obtient le nom ..
.
Ce que tu aurais dû faire était
chown -R luca:luca /myfolder
Ai-je mentionné qu'il n'y a rien de spécial à propos des noms de fichiers commençant par un point? Recursive chown
ne le pense pas.
À l’heure actuelle, vous pourrez peut-être récupérer certaines fonctionnalités en redéfinissant la propriété sur root. À long terme, vous devrez probablement réinstaller le système.
En règle générale:
echo .*
).