[Programación] Re: [Programación] mantener permisos, dueño y grupo en una op. de copia en el archivo destino

Gustavo Guillermo Pérez programacion@lugro.org.ar
Thu, 3 Mar 2005 23:34:43 +0000


No puedes usar chown ? que cambia los permisos? lo podrías poner justo debajo 
de /bin/cp -f .... 
si se puede cambiar el dueño del archivo al hacer > nombrearchivo.

Hice un experimento recién, yo cada vez que pongo en cero un archivo lo hago 
con el símbolo ">" sin anteponer ningún comando, el motivo es que si por 
alguna razón borras ese archivo y creas uno nuevo mientras que el programa 
que lo está usando lo tiene abierto ese "file descriptor" permanece activo y 
el log se sigue guardando en el archivo original ya que un archivo de log por 
lo general se abre en modalidad "append" entonces se guardaría en un archivo 
borrado y el archivo nuevo permanecería en 0 bytes indefinidamente tu script 
no borra el archivo está muy bien, pero prueba eso, sin comandos yo me acabo 
de sacar la duda hice esto como usuario gus:
# >d
Después hice esto como usuario root:
# > /home/gus/d
Después me volví a gus y vi los permisos
# ls -l d
-rw-r--r--  1 gus users 0 mar  3 23:14 d
#
Entonces vi que no los cambió, root volvió a poner en 0 bytes el archivo pero 
siguió perteneciendo a gus, no usé comandos simplemente bash interpretó a ">" 
como una tubería nula porque nunca hubo alguien que la llenara, y como tal 
alomejor no tuvo motivo para cambiar los permisos...

Saludos a ver si te sirve.

El Martes, 8 de Marzo de 2005 18:38, J. Mario Oroz escribió:
> Buenas lista!
> Estoy armando un script que me rota un log en un determinado directorio...
> si ... ya se que tengo logrotate ... pues lo configure y anda bien...
> pero al intentarlo hacer a traves de mi script surge lo siguiente duda:
>
> como mantengo permisos, dueño y grupo del archivo de destino cuando
> lo trunco a 0???????
>
> prove "cp -f  /dev/null archivo.log"; "cat /dev/null > archivo.log" pero
> no logro
> evitar que se modifique el propietario del archivo destino
>
> Les cometo que quien corre el script no es dueño del archivo de
> log pero pertenece al grupo... el tema es que cuando lo trunca se modifica
> el propietario a quien esta corriendo el script
>
> Esta es la funcion que esta en el script y que hace la rotacion:
> rotarlog ( ) {
> echo
> echo " ============================================== "
> echo " ROTANDO log de la base $1                      "
> echo
> ev-rw-r--r--  1 gus users 0 mar  3 23:14 dal "/bin/cp -fv 
\${HOME_${1}}/${1}.lg \${HOME_${1}}/${1}.lg.1 &&
> /bin/cp -f
> /dev/null \${HOME_${1}}/${1}.lg; RETVAL_proada=\$?"
> echo
> [ $RETVAL_proada = 0 ] &&  echo " Log ROTADO! " ||  echo " ATENCION: log
> NO SE
> PUDO ROTAR !!! "
> echo " ============================================== "
> sleep 5s
> return $RETVAL_proada
> } # fin rotarlog
>
> Si no se entiende tratare de ser mas claro.... gracias!!!!
>
> Mario
> _______________________________________________
> Programacion mailing list
> Programacion@lugro.org.ar
> http://www.lugro.org.ar/mailman/listinfo/programacion

-- 
Gustavo Guillermo Pérez
Compunauta uLinux
www.ulinux.tk