miércoles, 24 de octubre de 2007

Permisos con Linux

Bueno esto fue un dolor de cabeza cuando empecé a utilizar Linux y la pregunta que te haces es Para qué sirven los permisos de usuario? Bueno, es una pregunta bastante obvia teniendo en cuenta que GNU/Linux es un sistema operativo multiusuario. Cuando muchas personas utilizan un mismo equipo, debe haber un mecanismo que sirva para diferenciar los archivos de un usuario de los demás archivos.

Conceptos básicos
Los permisos de un archivo cualquiera (inclusive los directorios) se agrupan en 3 grupos de 3 bits cada uno, como se muestra mas abajo:

rwx rwx rwx
| | |
| | otros
| grupo
usuario

Como se ha dicho, cada grupo posee 3 bits:

Bit r:
Lectura
Bit w:
Escritura
Bit x:
Ejecución

Con las diferentes combinaciones, se puede configurar un archivo para que pueda ser leído y modificado por su dueño, y sólo leído por el grupo y los demás, por ejemplo el archivo /etc/passwd:

-rw-r--r-- 1 root root 1509 Apr 4 12:44 /etc/passwd

Este archivo es del usuario root, y del grupo del mismo nombre, solamente se puede modificar (bit «w» de escritura) por su usuario dueño, y leer por el grupo y los demás.

A diferencia de sistemas operativos como DOS y Windows, el hecho de que un archivo tenga una extensión .com o .exe no significa que será un programa ejecutable. Al necesitar restringir los derechos de ejecución de cualquier archivo2.9, la acción de ejecutar cualquier programa estará supeditada al permiso correspondiente (bit «x» de ejecución). Esto es importante de tener en cuenta a la hora de escribir programas que serán interpretados, ya que al final de cuentas los archivos serán de texto, y para que se ejecuten se le deberá activar el permiso de ejecución.

Cambio de permisos: el comando chmod
Para cambiar los permisos de los archivos se usa el comando chmod. Su sintaxis es la siguiente:

chmod [-R] modo archivo...

La opción -R permite cambiar recursivamente los permisos de todos los archivos dentro de un directorio.

El argumento modo está compuesto por alguna combinación de las letras u (usuario dueño), g (grupo dueño), y o (otros), seguido de un símbolo + o - dependiendo si se quiere activar o desactivar un permiso, siguiendo por último una combinación de las letras correspondientes a los distintos permisos: r, w y x. Así, si se necesita dar permisos de ejecución al usuario y al grupo de un archivo, el comando deberá ejecutarse de la siguiente manera:

Ejemplo.

chmod ug+x nombre-de-archivo

O si se necesita sacar el permiso de lectura y ejecución de todos los archivos y subdirectorios del directorio /home/usuario/prueba para el grupo y los otros, se debe ejecutar:

chmod -R go-rx /home/usuario/prueba

Representación octal
Existe una manera mas ágil de representar los permisos de archivo. Teniendo en cuenta que cada grupo de 3 bits es un número binario, la representación en octal consiste en traducir cada grupo a un número octal, de tal manera que quede como resultado un número de 3 dígitos, cada dígito representando a un grupo de 3 bits.

Mejor aclarar esto con un ejemplo:

rwx rw- r-- representación escrita
111 110 100 representación binaria
7 6 4 representación octal
| | |
| | otros
| grupo
usuario

Traducción de binario a octal
Binario Octal
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Entonces se puede concluir que los siguientes comandos son equivalentes:

chmod u+rwx go-rwx nombre-de-archivo.txt

chmod 700 nombre-de-archivo.txt

Para mas aclaraciones sobre este tema les recomiendo consultar este link es muy bueno y de gran utilidad saludos


anemias


No hay comentarios: