web-dev-qa-db-fra.com

Comment changer le propriétaire en utilisateur actuel sur le dossier et contenant les dossiers dans mon répertoire personnel?

À l'aide de Sudo nautilus, j'ai créé des dossiers et je souhaite supprimer les droits d'accès root sur ceux-ci. Mais j'en ai beaucoup et je veux le faire dans un répertoire entier et ses dossiers.

Alors, comment autoriser les utilisateurs actuels en lecture/écriture à accéder à tous les fichiers et dossiers d’un répertoire spécifique situé dans le répertoire principal?

8
Vitor Abella

Pour réparer les dommages causés à l'aide de Sudo nautilus, vous devez vous rendre propriétaire de tous les répertoires (et de leur contenu) appartenant à root.

Vous pouvez utiliser find pour cela, car il dispose d'un test pour rechercher uniquement les fichiers appartenant à un utilisateur spécifique.

Ceci trouvera tous les répertoires de votre maison appartenant à root:

Sudo find ~ -type d -user root

Vous pouvez ensuite répéter la commande find et ajouter l'action que vous souhaitez effectuer - modification récurrente de la propriété de tous les répertoires trouvés et de leur contenu pour l'utilisateur actuel:

Sudo find ~ -type d -user root -exec Sudo chown -R $USER: {} +

Explication:

  • ~ le répertoire de base
  • -type d ne trouve que des répertoires
  • -user root ne trouve que les fichiers appartenant à root
  • -exec fait la commande suivante sur tout ce qui a été trouvé
  • Sudo chown -R change récursivement de propriétaire
  • $USER l'utilisateur actuel
  • : change également le groupe en utilisateur spécifique

Plus efficacement, vous pouvez omettre le -type d pour rechercher les fichiers de tout type appartenant à root, ainsi que le -R en tant que find effectuera la récursion en agissant sur tous les fichiers.

Sudo find ~ -user root -exec Sudo chown $USER: {} +
10
Zanna

L'exécution d'outils graphiques, tels que nautilus en tant que root, est considérée comme néfaste pour cette raison, parmi d'autres (fonctions cachées, possibilité d'exécuter des fragments de programme en mode silencieux pour ceux qui savent où, ...).

Vous n'avez pas de problème de "permission", vous avez un problème de "propriété".

Pour trouver tous les fichiers appartenant à root (appartenant réellement à quelqu'un d'autre), faites:

Sudo find $HOME \! -user $USER

Pour vous redonner la propriété, vous pouvez

Sudo chown -R $(id -u):$(id -g) $HOME

mais cela changera la propriété de tous les fichiers dans et sous $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

Donne à l'un la possibilité d'ajuster la liste des fichiers, appartenant à not-you, dont la propriété sera redéfinie.

8
waltinator

Ce que vous devez faire est de changer la propriété du dossier de l'utilisateur (et du groupe) racine à l'autre utilisateur (et groupe) de votre choix.

Imaginez que vous souhaitiez travailler / home/randomFolder, et que l'utilisateur auquel vous souhaitez attribuer un droit de propriété soit vitor-abella, il vous suffit de l'exécuter comme racine:

chown -R vitor-abella:vitor-abella /home/randomFolder

Cela peut prendre un certain temps s'il y a beaucoup de fichiers et de sous-dossiers, mais après cela, vous devriez être sur la bonne voie.

À votre santé.

4
Javier Caselli