Affichage récursif de tous les fichiers appartenant à un utilisateur spécifique

32

Est-il possible de rechercher et d'afficher tous les fichiers qu'un utilisateur spécifique possède? J'ai fait un tas de choses en tant que mauvais utilisateur et je dois donner à l'utilisateur la propriété correcte des fichiers.

Existe-t-il un moyen récursif et conditionnel de pouvoir afficher un tas de fichiers et de répertoires?

Michael Waterfall
la source

Réponses:

60

Vous pouvez utiliser cette commande portable find avec quelque chose comme ça.

find . -user old-user -exec chown new-user:new-group {} \;

Vous pouvez développer cela pour trouver des fichiers spécifiques avec des options -iname (non POSIX mais disponibles sur OSX)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Le . représente le dossier actuel et ci-dessous, vous pouvez donc utiliser un chemin spécifique comme base.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
StephenTrapped
la source
Ce que je cherchais. Mais juste pour noter que les options après le chown new-user:new-userdevraient probablement direnew-user:new-group
Henesnarfel
2
Je suppose que les accolades devraient être entre guillemets pour gérer correctement les chemins avec des espaces. Doncfind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy
Si quelqu'un d'autre cherche comment trouver des fichiers n'appartenant pas à un certain utilisateur (fichiers de l'utilisateur dans un répertoire personnel qui n'appartiennent pas à cet utilisateur), vous pouvez ajouter '!' à la -user other-usersection pour trouver le contraire. Par exemple, find . ! -user other-user.
Jon
Souvent, ce qui précède est plus utile lorsque vous ajoutez -group old-group. De cette façon, vous pouvez conserver la propriété du groupe (administrateur, personnel, sillyothergroupname)
brianlmerritt
ps - chown peut nécessiter sudo
brianlmerritt
12

Vous pouvez utiliser

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

Du manuel chown --help:

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

edit : Cela, bien sûr, ne fonctionne que sur Linux et la plupart des UNIces. Pour OSX (qui est basé sur BSD), voir la solution de @StephenTrapped.

Rik
la source
+1 mais cela ne fonctionnera pas sur OSX, son chownn'a pas cette option, voir ici .
terdon
Oups, en effet, j'ai raté la balise osx :) Voté @StephenTrapped up.
Rik
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *va ignorer les fichiers cachés dans la commande de dossier est exécutée, mais chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .fonctionne également pour les fichiers cachés dans le dossier parent.
Lashae
3

L' -hoption chown modifie l'autorisation des fichiers de liens symboliques eux-mêmes et pas seulement la cible.

Ce qui pourrait être crucial lorsque vous effectuez cette opération sur des dossiers binaires de logiciels, qui utilisent des liens symobliques pour basculer entre les versions.

find . -user old-user -exec chown -h new-user:new-group {} \;

Tarun
la source