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?

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 {} \;

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.


+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 {} \;

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.