domingo, 28 de octubre de 2007

Permisos en ficheros y directorios en GNU/Linux (Slackware)

Primero que nada hay que decir que los permisos nos va a permitir determinar que restricciones se tienen a la hora de acceder o modificar un archivo. Como sabemos GNU/Linux maneja todo como si fuera un archivo, de ahi que se tenga mucha importancia para determinar los permisos adecuados.

Primero para poder ver los permisos que tiene un determinado archivo lo hacemos con un ls -l

rooter@rooterlap:~/prueba$ ls -l
-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file*

Vamos a explicar esta linea
-rwxr--r-- son los permisos
1 # de enlaces duros
rooter propietario
users grupo al que pertenece
18 2007-10-28 13:15 fecha de la ultima modificacion
"file" nombre del fichero

Nosotros nos enfocaremos a los permisos dividiendolos en 4 partes -rw-r--r--
- este primer caracter nos indica - (fichero normal), d (directorio), l (enlace), p (pipe o tuberia)
rwx los 3 elementos siguientes nos indican los permisos que tiene el propietario
r-- los 3 elementos siguientes nos indican los permisos que tiene el grupo
r-- los 3 elementos siguientes nos indican los permisos que tienen otros

Existen otros permisos ademas de r (lectura), w (escritura) y x (ejecución) aqui vamos a incluir un resumen:

Tipo de permiso Valor octal Letra correspondiente
"sticky" bit 1 t
set user id 4 s
set group id 2 s
lectura 4 r
escritura 2 w
ejecución 1 x

Vamos a comenzar cambiando algunos de los permisos de este archivo, como pudimos observar en la parte superior al realizar el ls -l los permisos que tiene son lectura, escritura y ejecución para
el propietario y solo lectura para el grupo y para otros.

Mediante el comando chmod nosotros podemos cambiar el valor de los permisos de algún fichero.

Ejemplos:

1.- Los modificaremos mediante su valor en letras
rooter@rooterlap:~/prueba$ chmod ugo-r file
rooter@rooterlap:~/prueba$ ls -l
total 4
--wx------ 1 rooter users 18 2007-10-28 13:15 file*

Lo que hicimos fue a través del comando chmod especificar los permisos para el usuario, grupo y otros (ugo) y retirarle el permiso de lectura a todos (-r).

Ahora vamos a asignar de nuevo los permisos de lectura y escritura para todos

rooter@rooterlap:~/prueba$ chmod ugo+rw file
rooter@rooterlap:~/prueba$ ls -l
total 4
-rwxrw-rw- 1 rooter users 18 2007-10-28 13:15 file*

Ahora podemos ver que el archivo puede ser visto y modificado por todos pero solo ejecutado por el propietario.
También podemos asignar los permisos mediante su numero en octal, tomando en cuenta que el permiso final para cada sector (propietario, grupo y otros) será la suma de los permisos un ejemplo de esto queda así:

Vamos a establecer los permisos para que el propietario pueda realizar todo y los demas solo puedan leer el fichero; tomaremos en cuenta de la tabla anterior (r = 4, w = 2, x =1)

rooter@rooterlap:~/prueba$ chmod 744 file
rooter@rooterlap:~/prueba$ ls -l
total 4
-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file*

En el ejemplo superior el primer 7 significa que tendremos establecidos los permisos de rwx ("r=4 + w=2 + x=1" = 7), por lo tanto los otros dos que siguen 44 corresponden solamente al valor de solo lectura "r".

Todo esto se aplica de la misma forma a los directorios
rooter@rooterlap:~/prueba$ mkdir homie
rooter@rooterlap:~/prueba$ ls -l
total 8
-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file*
drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie/

No hay comentarios: