web-dev-qa-db-fra.com

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

Est-il possible de trouver et de supprimer tous les fichiers appartenant à un utilisateur spécifique? J'ai fait un tas de choses en tant que mauvais utilisateur et je dois donner à l'utilisateur le droit de propriété des fichiers.

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

32
Michael Waterfall

Vous pouvez utiliser cette commande de recherche portable avec quelque chose comme ceci.

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

Vous pouvez le développer pour rechercher des fichiers spécifiques avec les options -iname (non POSIX mais disponible sous OSX)

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

Le . représente le dossier en cours 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 {} \;
57
StephenTrapped

Vous pouvez utiliser

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

À partir 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 : Ceci, bien sûr, ne fonctionne que sur linux et la plupart des UNIces . Pour OSX (basé sur BSD), voir la solution de @StephenTrapped.

11
Rik

L'option -h de chown modifie l'autorisation des fichiers de lien symbolique eux-mêmes et pas uniquement de la cible.

Ce qui pourrait être crucial lorsque vous faites cela sur des dossiers logiciels binaires, qui utilisent des liens symobliques pour basculer entre les versions.

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

3
Tarun