Cambiar la propiedad de todos los archivos, de un propietario a otro

1

Cambié el nombre corto de mi cuenta de usuario, pero parece que causó un problema con algunos archivos (especialmente los elementos de homebrew), que aún son propiedad del nombre de usuario anterior. Mi antiguo nombre corto era Cannyboy, y mi nuevo es Cannyman. ¿Cómo pasaría por todo el disco duro y cambiaría la propiedad de todo cannyboy a cannyman , sin cambiar ningún otro atributo de los archivos?

    
pregunta wildebeesty 21.02.2013 - 13:48

2 respuestas

3

Como iniciador, le sugiero que ejecute la función de "permiso de reparación" en la utilidad de disco.

Si el problema persiste, puede ejecutar un comando como:

find . -user old_user | while read file; do echo chown new_user  $file; done

nota: esto no hace nada como está ahora, tendrá que ajustarlo a sus necesidades y asegurarse de que no haga nada malo.

actualización aprendí un poco más y ahora ejecutaría un comando como este:

find . -user old_user -print0 | xargs -0  sudo echo chown new_user

¡vuelve a ajustar el comando antes de ejecutarlo!

    
respondido por el bdecaf 21.02.2013 - 13:57
2

FWIW cambiar el nombre corto se considera "malo". Supongo que puedes ver por qué ahora.

Dicho esto, una forma de lidiar con esto es usar "buscar" para localizar todos los archivos de propiedad de cannyboy:

find * -user cannyboy

(solo para homebrew puede limitarlo a la jerarquía de carpetas / usr / local / como):

find -f /usr/local/* -user cannyboy

Siguiente bucle a través de los resultados con:

sudo chown cannyboy cannyman *file*

tenga en cuenta que el comando anterior requerirá sudo y si se equivoca podría causar más problemas.

Para hacer esto en un proceso de dos pasos, primero:

find -f /usr/local/* -user cannyboy > files.txt

Luego recorre los archivos.txt usando el siguiente script (con sudo):

#!/bin/bash

while read file;
do
    chown cannyboy cannyman $file
done

La ventaja de esto es que puedes usar un subconjunto de tu archivo txt para probar todo antes de realizar un cambio masivo.

Si eres valiente, puedes intentar el proceso de un solo paso (esto debería funcionar, pero podría no hacerlo):

#/bin/bash
for result in 'find -f /usr/local/* -user cannyboy'
do
    chown cannyboy cannyman $result
done

(BTW antes de Mac OS X 10.8.1 hubo un error de búsqueda desagradable que omitiría algunos resultados)

    
respondido por el sdmeyers 21.02.2013 - 14:54

Lea otras preguntas en las etiquetas