Puis-je changer la propriété de tous les fichiers d'un utilisateur spécifique?


9

Existe-t-il un moyen de trouver récursivement tous les fichiers appartenant à un utilisateur et de les changer en un autre utilisateur / groupe dans Gnu / Linux?

Je suppose qu'il doit y avoir de la magie, mais mes compétences en magie de ligne de commande ne sont pas à la hauteur :)

Merci!

Réponses:


14

Utilisez la findcommande avec l' -useroption. Quelque chose comme:

find / -user john

affichera éventuellement tous les fichiers appartenant à l'utilisateur "john".

Si vous voulez changer leur propriétaire (je lancerais le findsans exécution pour vous assurer que vous avez la liste que vous voulez), alors quelque chose comme:

find / -user john -exec chown harry {} \;

le fera.


1
J'utilise généralement l'UID et chown harry:harryje l' exécute si je dois m'assurer que l'appartenance au groupe est également correcte. Mais cela dépend fortement de l'application ici.
— ewwhite

Cela ne fonctionnerait en fait pour moi que si j'utilisais l'UID. L'UID se trouve dans / etc / passwd
— user222054

7

C'est tard, mais aujourd'hui je suis tombé sur cette question parce que mon rsyncn'a pas la --usermappossibilité.

My chown(v. Chown (GNU coreutils) 8.13) propose une recurse ( -R) intégrée et une --fromoption pour que votre (et mon) problème puisse également être résolu en utilisant

chown -R --from=john harry /


Plus précisément, je migre un serveur d'OpenSuse vers Debian, et l'utilisateur et le groupe d'apache2 diffèrent entre les distributions. Dans OpenSuse, son utilisateur wwwrun (id:30)et son groupe www (id:8), dans debian www-data (id: 33)pour les deux. Après avoir copié les fichiers en utilisant

rsync -az /path/to/files me@debian:/path/to/

j'ai utilisé

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

sur la machine cible (debian).


Remarque: rsync version 3.1.0 protocol version 31a ce qui précède, --usermapdonc si j'avais eu, j'aurais pu faire les trois étapes avec une seule commande sur la machine source:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

Je préfère celui-ci, surtout pour l'option de changer de groupe également. Un find -execliner pour moi est un dernier recours, juste avant de faire les choses manuellement. (Aussi, je déteste écrire {} \;, mais c'est personnel)
— Tomasz Gandor
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.