Is it a fake website?

12 enero 2007

Corrige permisos de propietario en cualquier ruta

Situación:

[root@server utilidades]# ls -la /usr/local/etc4/
total 584
drwxr-xr-x 95 root root 4096 Jan 10 15:32 .
drwxr-xr-x 19 root root 4096 Jan 10 16:00 ..
drwxr-xr-x 11 servera bkp 4096 Jan 9 17:17 SERVERA
drwxr-xr-x 7 serverb bkp 4096 Jan 9 17:17 SERVERB
drwxr-xr-x 10 serverc bkp 4096 Jan 9 17:17 SERVERC
drwx--xr-x 12 error err 4096 Jan 9 17:17 SERVERD
...

Los directorios tienen el mismo nombre que su propietario, pero el último tiene los permisos erroneos tanto de usuario como de grupo. En una situación donde nos encontremos con multitud de directorios así, podemos corregirlo con el siguiente script en bash.
Antes que nada, podemos tener en un fichero los que queremos corregir para sólo tocar los que hayamos indicado previamente en este fichero, y no todos los que forman parte del directorio.

[root@server utilidades]# cat corrige-permisos.sh
#!/bin/bash

RUTA="/usr/local/etc4/
for i in `find $RUTA -type d -maxdepth 1`
do
MUID=`echo $i |tr 'A-Z' 'a-z' | cut -d '/' -f 5`
for j in `cat servers.txt`
do
if [ "$j" = "$MUID" ]
then
chown -R $MUID.bkp $i
fi
done
done

1. Con el primer for mostramos la ruta que nos interesa, en este caso
/usr/local/etc4/SERVERA
....

2. En la variable MUID dejamos sólo la parte que nos interesa en minuscula
servera

3. Miramos el fichero donde tenemos los directorios a modificar, si coincide con el nuestro lo modificamos.

servera = servera

4. Si coincide ejecutara
chown -R servera.bkp /usr/local/etc4/SERVERA

Y corregiremos todos los permisos erroneos de dicho directorio.

Muy rápido y simple, pero me sirve para tener algunas notas de bash.

No hay comentarios: