Recursivamente todos los archivos que son propiedad de un usuario específico

32

¿Es posible encontrar y compartir todos los archivos que posee un usuario específico? Hice un montón de cosas como el usuario equivocado y necesito dar la propiedad correcta de los archivos al usuario.

¿Hay alguna forma recursiva y condicional de que pueda crear un montón de archivos y directorios?

Cascada de michael
fuente

Respuestas:

60

Puede usar este comando de búsqueda portátil con algo como esto.

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

Puede expandir esto para encontrar archivos específicos con opciones -iname (no POSIX pero disponible en OSX)

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

Los . significa la carpeta actual y debajo, por lo que podría usar una ruta específica como base.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
StephenTrapped
fuente
Lo que estaba buscando Pero solo para notar que las opciones después del chown new-user:new-userprobablemente deberían decirnew-user:new-group
Henesnarfel
2
Supongo que las llaves deben estar entre comillas para manejar correctamente las rutas con espacios. Entoncesfind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy
En caso de que alguien más esté buscando cómo encontrar archivos que no son propiedad de un determinado usuario (archivos de usuario en un directorio de inicio que no son propiedad de ese usuario), puede agregar '!' a la -user other-usersección para encontrar lo contrario. Por ejemplo, find . ! -user other-user.
Jon
A menudo, lo anterior es más útil cuando agrega -group old-group. De esa manera puede preservar la propiedad del grupo (administrador, personal, nombre de grupo)
brianlmerritt
ps - chown puede requerir sudo
brianlmerritt
12

Puedes usar

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

Del manual 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.

editar : Esto, por supuesto, solo funciona en Linux y la mayoría de las UNIces. Para OSX (que se basa en BSD) vea la solución de @StephenTrapped.

Rik
fuente
+1 pero eso no funcionará en OSX, chownno tiene esa opción, mira aquí .
terdon
Vaya, de hecho, me perdí la etiqueta osx :) Votado @StephenTrapped up.
Rik
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *omitirá los archivos ocultos en el comando de carpeta que se ejecuta, sin embargo, también chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .funciona para los archivos ocultos en la carpeta principal.
Lashae
3

La -hopción de chown cambia el permiso de los archivos de enlace simbólico y no solo el objetivo.

Lo que podría ser crucial al hacer esto en las carpetas binarias de software, que usan enlaces simbólicos para cambiar entre versiones.

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

Tarun
fuente