Permisos de archivos en Linux, como asignar, cambiar o modificar

viernes, mayo 25, 2012 Publicado por: Oscar Meza


Como todos sabemos Linux es un sistema multiusuario, y el sistema de archivos no es la excepcion, el sistema Linux guarda informacion sobre quien es el propietario de un archivo asi como tambien que permisos de lectura, escritura o ejecución se tienen sobre este o estos.

A continuacion describo mas en detalle cada uno de estos.

Pertenencia de archivo(s) o carpeta(s)

Los sistemas Linux guardan informacion sobre quien es el propietario de cada archivo o carpeta que se encuentra en nuestro sistema de archivos, la manera mas facil de saber quien es el dueño de un archivo o carpeta es con el comando ls -l como muestro a continuación:

# ls -l loadlin16c.txt
-rw-r--r-- 1 root root 1808 2002-04-16 22:21 loadlin16c.txt

La columna de interes la he marcado en rojo, aqui nos dice que el archivo loadlin16c.txt pertenece al usuario root y al grupo root.

Si deseamos cambiar la pertenecia de un archivo ya sea su propietario o el grupo propietario, lo podemos hacer con el comando chown y el comando chgrp respectivamente.

Por  ejemplo si queremos cambiar el propietario del archivo loadlin16c.txt para que sea el usuario user1 lo hacemos con el comando siguiente:

# chown  user1 loadlin16c.txt

Si quiero cambia el grupo propietario para que sea el grupo users lo hago con el comando siguiente:

# chgrp  users loadlin16c.txt

Tambien con el comando chown puedo cambiar el propietario y el grupo a la vez, con el comando siguiente:

 # chown  user1:users loadlin16c.txt

Tambien puedo hacerlo para grupos y recursivo es decir que se aplique para los archivos y carpetas mencionadas asi como tambien de los archivos y carpetas hijas. 

Permisos

Los permisos son una parte muy importante de un sistema de archivos multiusuarios, con ellos determinamos quien puede leer, ejecutar y modificar.

La informacion de los permisos es almacenada en cuatro octetos. Exiten permisos para el propietario del archivo, para el grupo y para todos. El cuarto digito octal es usuado para almacenar informacion especial como el User ID, Group ID y el bit pegajoso.

Tipo de permiso Valor del octeto Valor en letra
bit "pegajoso" 1 t
asignar el ID de usuario 4 s
asignar el ID de grupo 2 s
lectura 4 r
escritura 2 w
ejecutar 1 x

Lo que hacemos es sumar estos valores octales para cada grupo de permisos, por ejemplo si deseamos que un archivo tenga permisos de lectura y escritura entonces le asignamos el valor 6, ya que lectura 4 + escritura 2 es igual a 6.

Por ejemplo los permisos para el archivo /etc/fstab son:


# ls -l /etc/fstab 
-rw-r--r-- 1 root root 545 2011-08-13 21:11 /etc/fstab


El primer guion seria remplazado por una "d" si en vez de un archivo este fuera un directorio, el primer grupo de permisos representa los permisos del propietario, en este caso rw- significa que el propietario tiene permiso de lectura y escritura, el segundo grupo de permisos que es r-- significa que el grupo tiene permisos de lectura, por ultimo tenemos el grupo todos los demas usuarios, el cual es igual que el permiso de grupo, que en esta ocasion solo tiene permisos de lectura sobre este archivo.

Para cambiar los permisos utilizamos el comando chmod seguido de los digitos octales para cada grupo de permisos y por ultimo el nombre del archivo que deseamos modificar, por ejemplo: si deseamos colocar el permiso de ejecucion, escritura y lectura para todos los usuarios ejecutaremos el siguiente comando:

#chmod 777 /tmp/ejemplo

En este caso 7 incluye todo los permisos ya que lectura = 4 + escritura  = 2 + ejecucion = 1 es igual a 7.

Tambien existe otra forma de cambiar los permisos con letras en vez de numeros, en este caso utilizamos los siguientes codigos para referirnos a los diferentes grupos de permisos:

o = all = todos los demas usuarios
g = group = grupo
u = owner = propietario
a = all above = todos los grupos de permisos

Asi tambien utilizamos los siguientes codigos para referirnos a los diferentes tipos de permisos:

+r = agrega el permiso de lectura
+w = agrega el permiso de escritura
+x = agrega el permiso de ejecucion
-r = quita el permiso de lectura
-w = quita el permiso de escritura
-x = quita el permiso de ejecucion

Por ejemplo si queremos agregar el permiso de escritura para todos los grupos de permisos en el archivo ejemplo usamos el siguiente comando:

# chmod a+w /tmp/ejemplo

Si luego queremos quitar el permiso de escritura para el grupo hacemos lo siguiente:

# chmod g-w /tmp/ejemplo

Muchas personas prefieren usar letras en vez del codigo octal, los dos sirven para lo mismo, aunque el codigo octal se vuelve mas rapido cuando estamos cambiando permisos a una gran cantidad de archivos.

Igual que en con los comandos chown  y chgrp podemos utilizar chmod con la opcion -R para ejecutarlo de forma recursiva, es decir que incluya todos los subdirectorios y archivos que estos contengan.

0 comentarios: