67 votes

Comment puis-je changer tous les fichiers appartenant à un utilisateur pour un autre utilisateur ?

Je cherche une commande Linux qui peut changer la propriété de tous les fichiers appartenant à un utilisateur donné, de préférence dans un répertoire ciblé, pour un autre utilisateur spécifié.

La commande de mes rêves ressemblerait à quelque chose comme ça...

chuser -R --olduser tom --newuser jerry

ou

chuser -R --olduser 1066 --newuser 1492

Voici mon scénario... J'ai un fichier de sauvegarde (.tgz) avec des informations sur les utilisateurs et les groupes préservées. Il a été pris sur un serveur web exécutant Apache et MySQL. Les fichiers de la sauvegarde proviennent de tout le système et contiennent des fichiers de plusieurs utilisateurs différents et de plusieurs comptes de type système. Il est essentiel que les paramètres ne soient pas perdus lors de la restauration sur le nouveau serveur. Le problème est que les utilisateurs de la machine sur laquelle les fichiers sont restaurés ne correspondent pas à ceux du fichier de sauvegarde. Par exemple, les deux machines ont un utilisateur MySQL mais elles ont des identifiants différents et il y a plusieurs identifiants qui existent sur les deux machines et qui appartiennent à des utilisateurs différents. Cela signifie qu'il n'y a aucun moyen de synchroniser les utilisateurs de la nouvelle machine avec ceux de l'ancienne.

Je peux trouver tous les fichiers des utilisateurs avec la commande find comme ceci...

find /decompressed-backup-dir -uid 1050

ou

find /decompressed-backup-dir -user tom

Si, comme je le soupçonne, il n'y a pas moyen de faire ce que je veux avec une seule commande, alors il y a peut-être un moyen d'envoyer les résultats de la commande find à une autre commande pour gérer le changement de propriétaire ?

Je pourrais le faire avec un script PHP mais il y a 4GB et des dizaines de milliers de fichiers dans la sauvegarde donc je ne veux pas utiliser PHP ou Perl mais je serais heureux avec un script script qui pourrait le gérer.

0voto

galva Points 113

Si vous devez mapper récursivement les anciens/nouveaux ID de propriété qui se résolvent au même /etc/passwd utilisateur ,

(ce qui pourrait se produire après avoir introduit LDAP dans le serveur et /etc/passwd a des entrées en double pour chaque utilisateur et groupe),

vous pourriez utiliser ce script que j'ai écrit : https://gist.github.com/siers/ded0a4158c900495f04c3ad965f4a544

Il crée la cartographie de lui-même. L'interface du programme est, malheureusement, dans le code. Ajoutez quelques instructions de débogage si vous avez besoin de savoir comment il fait quoi. Mais c'est à peu près un chown glorifié avec un mappage créé à partir de doublons dans /etc/passwd . Si cela peut être utile à quelqu'un, ce serait vraiment cool :)

-4voto

Mansur Points 1

Vous pouvez utiliser chown - R /directory/file

Cette commande changera les permissions pour toutes les instances du répertoire chown - R /directory

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