chown no permitido, pero tengo acceso de escritura. ¿Cómo puedo tomar posession recursiva?

Considere la siguiente situación:

  1. Tengo acceso rwx a un directory como miembro de la identificación de grupo del directory.
  2. El administrador del sistema no permite que los usuarios ejecuten chown (consulte este hilo para get más información)

¿Cómo puedo tomar posession recursiva del directory?

Creo que puedo hacer lo siguiente, suponiendo que quiero tener A

 cp -RAB rm -RA mv BA 

pero esto es tedioso y puede requerir una gran cantidad de espacio si A es grande.

Solo necesitas tomar posession de los directorys. Los files ordinarios se ocuparán de ellos mismos la próxima vez que los modifique, los enlaces simbólicos y las tuberías no importan, y supongo que no existen dispositivos u otros types exóticos.

Puede hacer una copy recursiva de los directorys, pero crear enlaces duros a partir de los files normales en lugar de copyrlos. Con GNU coreutils (Linux, Cygwin):

 cp -al AB 

Cada file regular A/dir/file está enlazado como B/dir/file . Luego puede eliminar el tree fuente.

Si no tiene coreutils de GNU, puede usar rsync en su lugar:

 cd A rsync -a --link-dest=$PWD . ../B 

Para asegurarse de que borrar A no eliminará realmente ningún file, verifique que todos los files regulares tengan un conteo de enlaces duros de al less 2, el siguiente command no debería generar ningún resultado:

 find A -type f -links 1 

Usted puede tomar posession de esta manera:

 $ mv A A.old $ mkdir A $ mv A.old/* A.old/.[!.]* A.old/..?* A/ $ rmdir A.old 

Cualquier forma de hacer esto que no implique copyr se ejecutará en la regla de no-chown. Pregúntele a la raíz amablemente que lo haga por usted.

Si es ambicioso, podría escribir una nueva utilidad similar a Chown, diseñada para la installation de raíz fija, que realiza sus propias comprobaciones de security y decide sobre la base de una regla más flexible si se debe permitir un chown.

Si se trata principalmente del espacio en disco, solo necesita una herramienta que intercala el cp con el rm …