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

12

En utilisant, sudo nautilusj'ai créé certains dossiers et je veux me débarrasser de l'autorisation root sur eux. Mais j'en ai beaucoup et je veux le faire dans un répertoire entier et ses dossiers contenant.

Alors, comment autoriser la lecture / écriture à l'utilisateur actuel de tous les fichiers et dossiers d'un répertoire spécifique situé à l'intérieur de la maison?

Vitor Abella
la source

Réponses:

13

Pour annuler les dommages causés par l'utilisation, sudo nautilusvous devez vous rendre propriétaire de tous les répertoires (et de leur contenu) appartenant à root.

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

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

sudo find ~ -type d -user root

Vous pouvez ensuite répéter la findcommande et ajouter l'action que vous souhaitez faire - en changeant récursivement la propriété de tous les répertoires trouvés et de leur contenu à l'utilisateur actuel:

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

Explication:

  • ~ le répertoire personnel
  • -type d rechercher uniquement les répertoires
  • -user root trouver uniquement les éléments appartenant à root
  • -exec faire la commande suivante sur tout ce qui a été trouvé
  • sudo chown -R changer récursivement de propriétaire
  • $USER l'utilisateur actuel
  • : changer également le groupe en utilisateur spécifique

Plus efficacement, vous pouvez omettre le -type dpour rechercher des fichiers de tout type appartenant à root, et également omettre le -Rcomme le findfera la récursion pour vous en agissant sur tous les fichiers

sudo find ~ -user root -exec sudo chown $USER: {} +
Zanna
la source
Vous devez exécuter votre findwith sudo( sudo find ...) pour inspecter les rootsous-répertoires appartenant à l'utilisateur avec des 0700protections et tout ce qui se trouve en dessous. Idem pour la réparation.
waltinator
"défendre contre ce qui est probable" ou "défendre contre ce qui est possible"? Votre choix.
waltinator
@waltinator bien sûr :) merci de l'avoir mentionné pour que je puisse m'améliorer. J'essaie juste de ne pas utiliser sudoavant d'avoir besoin
Zanna
10

L'exécution d'outils GUI, comme nautilusas rootis Considered Harmful pour cette raison, entre autres (fonctions cachées, possibilité d'exécuter silencieusement des fragments de programme de qui sait où, ...).

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

Pour trouver tous les fichiers détenus par root(qui appartiennent vraiment à quelqu'un d'autre), procédez comme suit:

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 à des non-vous, dont la propriété vous sera retournée.

waltinator
la source
5

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

Imaginez que vous souhaitiez travailler sur / home / randomFolder et que l'utilisateur dont vous souhaitez gérer la propriété soit vitor-abella , ce que vous devez faire est simplement de l'exécuter en tant que root:

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é.

Javier Caselli
la source
3
J'utilise $(id -u):$(id -g), plutôt que de demander à OP d'imaginer, et $HOME/randomFolder.
waltinator