43 votes

Récursivement chown tous les fichiers qui appartiennent à un utilisateur spécifique

Est-il possible de trouver et de chown tous les fichiers qu'un utilisateur spécifique possède? J'ai fait un tas de choses en tant que mauvais utilisateur et j'ai besoin de donner la propriété des fichiers au bon utilisateur.

Y a-t-il un moyen récursif et conditionnel de chown un tas de fichiers et répertoires?

72voto

StephenTrapped Points 876

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

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

Vous pouvez étendre ceci pour trouver des fichiers spécifiques avec les options -iname (non POSIX mais disponible sur OSX)

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

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

20voto

Rik Points 12809

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 l'utilisateur et/ou le groupe de chaque fichier uniquement si
                     son utilisateur et/ou groupe actuel correspondent à ceux spécifiés
                     ici. L'un des deux peut être omis, auquel cas une correspondance
                     n'est pas requise pour l'attribut omis.

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

5voto

Tarun Points 151

L'option -h de chown modifie les autorisations des fichiers de liens symboliques eux-mêmes et non seulement de la cible.

Ceci peut être crucial lorsque vous le faites sur des dossiers binaires logiciels, qui utilisent des liens symboliques pour passer d'une version à l'autre.

find . -user ancien-utilisateur -exec chown -h nouveau-utilisateur:nouveau-groupe {} \;

0voto

NZ Dev Points 121

Les réponses de Linux... Pour répondre explicitement à la question :

Pour changer seulement le propriétaire utilisateur de ce dossier et de tout ce qui se trouve à l'intérieur possédé par un utilisateur spécifique:

sudo chown --from=propriétaireAncien -Rc propriétaireNouveau  /c'est_mon_chemin/

Quelques variations pour aider à comprendre la syntaxe qui vous protège des catastrophes :

Pour changer seulement le propriétaire utilisateur de tout ce qui se trouve à l'intérieur d'un dossier (pas le dossier lui-même) possédé par un utilisateur spécifique:

sudo chown --from=propriétaireAncien -Rc propriétaireNouveau  /c'est_mon_chemin/*

Pour changer seulement le propriétaire utilisateur de ce dossier et de tout ce qui se trouve à l'intérieur possédé par un utilisateur et groupe spécifiques:

sudo chown --from=propriétaireAncien:groupeAncien -Rc propriétaireNouveau  /c'est_mon_chemin/

Pour changer les propriétaires utilisateur et groupe de tout ce qui se trouve à l'intérieur d'un dossier (pas le dossier lui-même) possédés par un utilisateur spécifique:

sudo chown --from=propriétaireAncien -Rc propriétaireNouveau:groupeNouveau  /c'est_mon_chemin/*

Pour changer seulement les propriétaires de groupe de ce dossier et de tout ce qui se trouve à l'intérieur possédés par un groupe spécifique:

sudo chown --from=:groupeAncien -Rc :groupeNouveau  /c'est_mon_chemin/

Pour changer seulement les propriétaires de groupe de tout ce qui se trouve à l'intérieur d'un dossier (pas le dossier lui-même) possédés par un utilisateur et groupe spécifiques:

sudo chown --from=propriétaireAncien:groupeAncien -Rc :groupeNouveau  /c'est_mon_chemin/*

Ne pas utiliser ":" ou ne pas spécifier le nom du groupe si vous ne souhaitez pas changer le groupe. Vous devez être le propriétaire et avoir les droits d'écriture donc sudo est probablement requis. Rappelez-vous que c'est une commande dangereuse NE PAS l'exécuter sur root "/" Si vous vous trompez vous êtes dans de beaux draps. Vérifiez trois fois avant de l'exécuter.

L'option c sert à montrer les changements. L'option R est récursive

/chemin/* n'inclura pas les fichiers cachés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X