16 Jun 2008

Otorgando Permisos en Linux

CHMOD (”Change mode”) es un comando UNIX que permite cambiar los permisos de acceso de un archivo. Cada archivo tiene cuatro clases de acceso, que pueden ser permitidas o denegadas. Se pueden aplicar diferentes permisos al dueño del fichero, al grupo al que el fichero pertenece, a otros y todos los usuarios. Cada una de estas cuatro clases de usuarios (dueño, grupo, resto de usuarios y todos) puede tener permisos de lectura (r), escritura (w) y ejecución (x).

Clases de usuarios

Los permisos de sistemas UNIX se dividen en cuatro clases, conocidas como usuario, grupo, otros y todos (con frecuencia abreviado UGOA por sus siglas en inglés).

Estos son:

u – (dueño/owner): dueño del archivo o directorio
g – (grupo/group): grupo al que pertenece el archivo
o – (otros/other): todos los demás usuarios que no son el dueño ni del grupo
a – (todos/all): incluye al dueño, al grupo y a otros

Los permisos efectivos aplicados a un determinado usuario en relación a un archivo se determinan en un orden lógico de precedencia. Por ejemplo, el usuario propietario del archivo tendrá los permisos efectivos dados a la clase de usuario, sin importar los asignados a la clase de grupo o a la clase de otros.

Tipos de permiso de acceso:

read (lectura); r: Permiso para ver el archivo o directorio, sin hacer cambios.
write (escritura); w: Permiso de escritura: puede escribir el archivo, y por lo tanto, cambiarlo.
execute (ejecución); x: El archivo o directorio puede ser ejecutado. Se usa para directorios con scripts, formularios, etc.

Entonces tenemos cuatro categorías de usuarios (”user,” “group,” “other,” y “all”) y tres tipos de permisos: “r,” “w,” y “x”.

Fijando permisos

La orden chmod puede usarse con letras o numeros. La forma mas corriente es expresar los permisos numéricamente. Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de lectura. 2 permiso de escritura y 1 permiso de ejecución. Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de usuario):

Lectura = r = 4
Escritura = w = 2
Ejecución = X = 1

Para ver los permisos de una carpeta o de un archivo, abran la Consola y luego digiten la siguiente orden (se visualizarán los permisos del directorio donde se encuentran posicionados):

$ ls -l

Como ejemplo podemos observar la siguiente gráfica:

permisos01

Veamos las combinaciones posibles de los diferentes permisos (deben cambiar la letra por su equivalencia en números):

7 = rwx = 4 + 2 + 1 = lectura, escritura y ejecución
6 = rw- = 4 + 2 + 0 = lectura y escritura
5= r-x = 4 + 0 + 1 = lectura y ejecución
4 = r– = 4 + 0 + 0 = lectura
3 = -wx = 0 + 2 + 1 = escritura y ejecución
2 = -w- = 0 +2 + 0 = escritura
1 = –x = 0 + 0 + 1 = ejecución
0 = — = 0 + 0 + 0 = sin acceso

Cambiando permisos

Para cambiar los permisos, lo hacemos a través de la consola y con la orden chmod:

chmod [modificadores] permisos archivo/directorio

modificadores es opcional, y puede tomar los valores:

-f: no visualiza los posibles mensajes de error que puedan ocurrir debido a conflictos en la asignación de permisos.
-v: lista los archivos y directorios a los que se les va aplicando el comando a medida que el mismo se ejecuta
-R: aplica el comando chmod recursivamente a todos los archivos y subdirectorios.

Algunos ejemplos:

Permisos02

chmod 755 archivo
Dueño: permiso total (lectura, escritura y ejecución); Grupo: lectura y ejecución; Todos los demás: lectura y ejecución.

chmod 542 archivo
Dueño: lectura y ejecución; Grupo: lectura; Todos los demás: escritura.

chmod 744 archivo
Dueño: permiso total (lectura, escritura y ejecución); Grupo: lectura; Todos los demás: lectura.

Establecer permisos para un directorio y todos sus archivos:

chmod -R 755 /var/www/
Establece el permiso para toda el directorio www y sus subdirectorios y archivos que la conforman. Dueño: permiso total (lectura, escritura y ejecución); Grupo: lectura y ejecución; Todos los demás: lectura y ejecución.

La sintaxis para usar chmod con texto:

chmod [ugoa][+-=][rwx] [nombre_archivo]

Donde [u=user, g=group o=other y a=all]; [+/-/= agrega, quita o establece los atributos siguientes] [r=lectura, w=escritura, x=ejecución]

Por ejemplo:

chmod +r arch.txt
agrega permisos de lectura a todos los usuarios

chmod u+w arch.txt
agrega permisos de escritura al dueño

chmod –x arch.txt
elimina el permiso de ejecución a todos los usuarios

chmod u=rw, go= arch.txt
establece permisos al dueño de lectura y escritura; elimina todos los permisos a los demás usuarios

Cambiando propietarios y grupos: chown y chgrp

Para cambiar el usuario y el grupo se usan chown (chamge owner) y chgrp (change group). Estas órdenes sólo la pueden ejecutar el usuario root:

chown [-R] usuario fichero(s)/diretorio(s)
chgrp [-R] grupo ficheros(s)/directorio(s)

La opción -R indica que se procese de manera recursiva los directorios que se le indiquen.

Ejemplos:

Cambiar el propietario del directorio y de todo el contenido /home/deploy al usuario jboss y al grupo users:

chown -R jboss /home/deploy
chgrp -R users /home/deploy

Cambiar al usuario root el fichero /bin/ls:

chown root /bin/ls

Esta entrada es una composición de los siguientes link: link1, link2.

Saludos.

2 Comentarios en esta entrada