2011-03-30

Listas de Control de Acceso a los Directorios y Archivos

Ya todos conocemos los permisos sobre los usuarios, los grupos y otros que se manejan en Linux y que nos dan la opción de permitir o denegar la lectura, escritura y ejecución sobre cada uno de los archivos que tenemos en el sistema.

Estos los identificamos con las letras rwx que se ven en la consola así

root@localhost:~# ls -l file
-rwxrw-r-- 1 root root 125 2011-03-30 file

Lo que tenemos en el ejemplo es un archivo llamado file perteneciente al usuario y grupo root, cuya última modificación fue el 30 de marzo de 2011, y los permisos son:
Usuario: rwx --> Lectura (r) - Escritura (w) - Ejecución (x)
Grupo: rw-  --> Lectura (r) - Escritura (w)
Otros: r-- --> Lectura (r)

Pero adicionalmente a estos existe en Linux la posibilidad de asignar permisos especiales  y específicos para un usuario o para un grupo, estos son denominados acl (listas de acceso).

Para poder configurar las listas de acceso es necesarios dos pasos en el sistema previos a habilitar estos permisos especiales, el primero es instalar el paquete y el segundo es permitir que la partición los use, esto se hace así:

Instalar paquete:
root@localhost:~# apt-get -y install acl

Permitir su uso en la partición:
En el archivo /etc/fstab adicionamos el permiso acl a la partición donde se van a usar los permisos, de la siguiente forma

# /home was on /dev/sda6 during installation
UUID=77a5-4327-a1ee-7d80e97fdf47 /home           ext4    defaults,acl        0       2

Para que este cambio se realice podemos o reiniciar el sistema o remontar la partición, si no tienen practica para remontar particiones les recomiendo reiniciar.

Una vez hacemos estos dos pasos ya podemos revisar los permisos especiales sobre un archivo con el comando getfacl, de la siguiente forma



Bueno ahora le daremos el permiso a un usuario (para el ejemplo root) que pueda leer y escribir este archivo pero únicamente a este usuario, esto se hace con el comando que tiene la siguiente estructura

setfacl -m [usuario-grupo]:[nombre usuario-grupo]:[permisos] archivo

que para el ejemplo sería así

user@localhost:~$ setfacl -m u:root:rw APU.xls

Una vez se aplica este permiso podemos ver como este usuario tiene permisos especiales y únicos sobre este archivo


Así puedes crear permisos especiales y específicos para archivos y directorios, para ver mas opciones te aconsejo ver el man de este comando.

Si quieres eliminar todos los permisos especiales sobre un archivo ejecutas el siguiente comando

user@localhost:~$ setfacl -b file

Con esto ya eliminas todos los permisos especiales configurados 

Espero le sirva y quede claro, es un tema muy extenso pero esta es la base

2011-03-15

Como Saber si Podemos Virtualizar con XEN

Antes de instalar los kenels de XEN deberíamos verificar si nuestra motherboard soporta virtualización o paravirtualización,  para esto verificamos si los modulos CSVA o VMX (Virtualización) o el modulo PAE (Paravirtualización) están soportados por esta.

Esto lo hacemos con el siguiente comando

root@localhost # grep -i "pae\|csva\|vmx" --color /proc/cpuinfo

Esto nos mostrara en color si el modulo existe tal y como se ve a continuación


Espero les sirva

2011-03-10

Comandos de Automatización Simples

Yo soy medio impaciente cuando tengo que hacer procesos repetitivos, siempre he busco como hacer una comando que los haga, entonces como aporte voy a colocar algunos comandos para automatizar tareas simples:

1.  Cambiarle la extensión a múltiples archivos, (acuérdate que solo cambiarle la extensión no cambia el tipo de archivo esto es solo para la extensión), para el ejemplo es como tomar muchos txt y convertirlos en sh, el comando sería:

user@localhost ~$ for i in $(ls .); do /bin/mv $i $(echo $(echo $i | cut -f 1 -d ".").sh) ; done

 Debes estar ubicado en el directorio donde están los archivos a modificar


2. Crear una serie de usuarios, a veces toca en un servidor crear una serie de usuario (por ejemplo FTP)  manualmente a veces es incomodo entonces teniendo un archivo que se llame usuarios 

root@localhost ~# for i in $(cat usuarios); do adduser -g ftp -d /home/ftp/ $i ; done

Para los que se están preguntando, si la contraseña si toca a mano. 


3. Crear rutas automáticamente, por un cliente necesitábamos crear una serie de rutas esto manualmente es terrible entonces el comando es 

root@localhost ~# for i in $(seq 4 255); do ip route add 10.0.$i.0/24 via 10.0.3.249

Obviamente siempre es mejor hacer subredes pero a veces toca meterlas una a una por que no saben crearlas


4. A veces en entornos compartidos se generan problemas por que alguien crea un archivo y otro lo elimina, para esto se agrega un parámetro de permiso y solo lo puede eliminar el propietario y root, de la siguiente forma

root@localhost ~# for i in $(ls .); do chown o+t $i ; done

Estos para los que ya están en el directorio siquieres que todos lo que guarden en un directorio queden con esta característica le das el permiso al directorio


5. Modificar un fragmento del texto de una archivo y guardar el original con extensión bak, a veces necesitamos en un archivo de configuración modificar algunos parámetros pero guardando un backup de la configuración inicial, esto sería así

root@localhost ~# sed -i .bak 's/eth0/eth1/g' /etc/ntop.conf

Así cambiaremos la interface por la que escucha el ntop y guardmos el archivo original en ntop.conf.bak


Continuara.....

2011-03-02

Corregir un Error en boot

Hoy por estar haciendo muchas cosas al mismo tiempo iba a eliminar las imágenes del kernel que ya no usaba, por que detesto tener basura, y por no estar pendiente elimine todas las imágenes que tenia en el directorio /boot, por lo que si reiniciaba mi PC nunca iba a arrancar.

Inicialmente pensé que era solo instalar de nuevo los paquetes del linux-headers, pero no es así de sencillo pues la base de datos de actualizaciones ya tiene que esta en la última versión el kernel y que no necesita bajarlo nuevamente.

Debido a esto es necesario purgar dicha base de datos, pero si hacemos esto de forma general esto puede generar un grave problema con todos los paquetes que están instalados, por lo que se debe especificamente purgar de la base de datos los siguientes paquetes así

root@localhost:~# apt-get purge linux-headers-2.6.35-27-generic linux-image-2.6.35-27-generic

Para este caso era la versión del kernel 2.6.35-27, por lo que aparece así pero pues la que necesites modificar es colocar la versión hay, una vez se han purgado se deben reinstalar nuevamente con el mismo nombre así

root@localhost:~# apt-get install linux-headers-2.6.35-27-generic linux-image-2.6.35-27-generic

Tras una hora revise el directorio /boot y ya se ve la imagen del kernel que necesitaba dejar.

Es por esto que NUNCA se debe trabajar con el usuario root, si no hubiera estado con este usuario el error no hubiera sucedido.