Está en la página 1de 8

Instrucciones detalladas para aprender a manejar correctamente los permisos de los archivos en sistemas Linux /

Unix, con el comando chmod.


Para cambiar los permisos de un archivo o directorio del servidor, tienes que utilizar el comando chmod.
En general, cualquier comando de linux o unix tiene una ayuda, que puedes ver invocando al comando, seguido con el
parmetro -help. Algo como esto:
chmod --help
Este comando en concreto tiene varias sintaxis permitidas. De entre ellas por ejemplo puedes utilizar:
chmod [opciones] modo-en-octal fichero
Las opciones podemos indicarlas o no, segn queramos. Opciones tpicas son:

-R para que mire tambin en los subdirectorios de la ruta.

- v para que muestre cada fichero procesado

- c es como -v, pero slo avisa de los ficheros que modifica sus permisos

El modo en octal es un nmero en base 8 (octal) que especifique el permiso. Los nmeros en octal se especifican
empezando el nmero por un 0. Por ejemplo, 0777 es indica todos los permisos posibles para todos los tipos de usuario.
0666 indica que se dan permisos de lectura y escritura, pero no de ejecucin. 0766 indica que se dan permisos de lectura
y escritura, pero slo tienen permiso de ejecucin para los usuarios que son dueos del archivo. 0755 indica permisos
para lectura y ejecucin, pero escritura slo para el usuario que es dueo del archivo.
Por ejemplo:
chmod 0777 archivo.txt
Asigna todos los permisos al archivo archivo.txt
chmod 0666 *
Asigna permisos de lectura y escritura, no de ejecucin a todos los archivos y directorios del directorio donde
ejecutamos el comando.
chmod -R 0644 *
Esto da permisos a todos los archivos y directorios del directorio donde se invoca el comando y de todos los directorios
que cuelgan de l. Los permisos asignados son de lectura a todos los usuarios, de escritura slo al dueo del archivo y de
ejecucin a nadie.
Otro modo de trabajo con chmod
Luego tambin se pueden asignar permisos de otra manera, utilizando otra posible sintaxis de chmod, que tal vez resulte
ms til si no queremos tratar con los valores en octal.
chmod [opciones] modo[,modo] fichero

Para ello tenemos que tener claros los distintos grupos de usuarios:

u: usuario dueo del fichero

g: grupo de usuarios del dueo del fichero

o: todos los otros usuarios

a: todos los tipos de usuario (dueo, grupo y otros)

Tambin hay que saber la letra que abrevia cada tipo de permiso:

r: se refiere a los permisos de lectura

w: se refiere a los permisos de escritura

x: se refiere a los permisos de ejecucin

Ejemplos
chmod o=rwx *
Asigna permisos de lectura, escritura y ejecucin para los usuarios "otros" a todos los archivos de la carpeta
chmod a=rwx fichero.txt
Asigna todos los permisos a todos los usuarios para el archivo fichero.txt
chmod go= *
Quita todos los permisos para los usuario del grupo y los usuarios otros.
chmod u=rwx,g=rw,o= *
Da todos los permisos al dueo del fichero, a los del grupo del dueo le asigna permisos de lectura y escritura y a los
otros usuarios les quita todos los permisos.
Nota:un espacio despus de la coma "," en los distintos modos de permisos que se indiquen hace fallar el
comando.
chmod a=r *
Da permisos nicamente de lectura a todos los tipos de usuario.
De un modo parecido a lo que acabamos de ver, tambin se pueden aadir o quitar permisos con los operadores + y -.
Para ello se indica el tipo de usuario y el permiso que se resta o aade. Algo como esto:
chmod a-wrx *
Esto quita todos los permisos a todos los tipos de usuario.
chmod a+r,gu+w *
Este comando asigna permisos de lectura a todos los usuarios y permisos de escritura al dueo del archivo y el grupo del
dueo.

chmod u=w,a+r *
Este comando asigna permisos de escritura al usuario dueo y a todos los usuarios les aade permiso de lectura.

1.- Estructura bsica de permisos en archivos


Hay 3 atributos bsicos para archivos simples: lectura, escritura y ejecutar.
>> Permiso de lectura (read)
Si tienes permiso de lectura de un archivo, puedes ver su contenido.
>> Permiso de escritura (write)
Si tienes permiso de escritura de un archivo, puedes modificar el archivo. Puedes agregar,
sobrescribir o borrar su contenido.
>> Permiso de ejecucin (execute)
Si el archivo tiene permiso de ejecucin, entonces puedes decirle al sistema operativo que lo
ejecute como si fuera un programa. Si es un programa llamado foo lo podremos ejecutar
como cualquier comando.
O un script (interprete) que necesita permiso de lectura y ejecucin, un programa compilado
solo necesita ser lectura.
Los caracteres atribuidos a los permisos son:
r quiere decir escritura y viene de Read
w quiere decir lectura y viene de Write
x quiere decir ejecucin y viene de eXecute
Usando chmod para cambiar los permisos
chmod (change mode) es el comando utilizado para cambiar permisos, se pueden agregar o
remover permisos a uno o mas archivos con + (mas) o (menos)
Si quieres prevenirte de modificar un archivo importante, simplemente quita el permiso de
escritura en tu archivo con el comando chmod

$ chmod -w tuArchivo

si quieres hacer un script ejecutable, escribe

$ chmod +x tuScript

si quieres remover o agregar todos los atributos a la vez

$ chmod -rwx archivo


$ chmod +rwx archivo

tambin puedes usar el signo = (igual) para establecer los permisos en una combinacin
exacta, este comando remueve los permisos de escritura y ejecucin dejando solo el de
lectura

$ chmod =r archivo
Cuidado con editar los permisos de tus archivos, si los editas no olvides dejarlos como estaban
originalmente

2.- Estructura bsica de permisos en directorios


En el caso de los directorios tenemos los mismo permisos, pero con un significado diferente.
>> Permiso de lectura en un directorio
Si un directorio tiene permiso de lectura, puedes ver los archivos que este contiene. Puedes
usar un ls (list directory) para ver su contenido, que tengas permiso de lectura en un
directorio no quiere decir que puedas leer el contenido de sus archivos si no tienes permiso
de lectura en esos.
>> Permiso de escritura en un directorio.
Con el permiso de escritura puedes agregar, remover o mover archivos al directorio
>> Permiso de ejecucin en un directorio.
Ejecucin te permite usar el nombre del directorio cuando estas accediendo a archivos en
ese directorio, es decir este permiso lo hace que se tome en cuenta en bsquedas realizadas
por un programa, por ejemplo, un directorio sin permiso de ejecucin no seria revisado por
el comando find

3.- Usuarios, Grupos y Otros


Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos
son almacenados en 3 lugares diferentes llamados.
Usuario (u) proviene de user
Grupo (g) proviene de group
Otros (o) proviene de other

Cuando ejecutas

$ chmod =r archivo

Cambia los permisos en 3 lugares, cuando haces una lista de directorios con ls -l veras
algo parecido a.

-r--r--r--

wada

users

4096 abr 13 19:30 archivo

nota esas 3 rs para los 3 diferentes tipos de permisos


donde:

x-------------x-------------x
|

permisos

pertenece

x-------------x-------------x
|

rwx------

| usuario

---r-x---

| grupo

------r-x

| otros

x-------------x-------------x

podemos remover permisos para cada dueo; supongamos que tenemos un archivo:

-rwxr-xr-x

wada

users

4096 abr 13 19:30 archivo

Para remover los permisos de ejecucin a grupos y otros basta con usar:

$ chmod g-x,o-x archivo

nuestro archivo quedara con estos permisos

-rwxr--r--

wada

users

4096 abr 13 19:30 archivo

si deseas remover a usuario el permiso de escritura:

$ chmod u-x archivo


-r-xr--r--

wada

users

4096 abr 13 19:30 archivo

Agregando y removiendo dos permisos a la vez:

$ chmod u-x+w archivo


-rw-r--r--

wada

users

4096 abr 13 19:30 archivo

muy simple verdad?

4.- chmod en octal


La representacin octal de chmod es muy sencilla
Lectura tiene el valor de 4
Escritura tiene el valor de 2
Ejecucin tiene el valor de 1
Entonces:

x-----x-----x-----------------------------------x
| rwx |

| Lectura, escritura y ejecucin

| rw- |

| Lectura, escritura

| r-x |

| Lectura y ejecucin

| r-- |

| Lectura

| -wx |

| Escritura y ejecucin

| -w- |

| Escritura

| --x |

| Ejecucin

| --- |

| Sin permisos

x-----x-----x-----------------------------------x

Por lo tanto:

x------------------------x-----------x
|chmod u=rwx,g=rwx,o=rx

| chmod 775 |

|chmod u=rwx,g=rx,o=

| chmod 760 |

|chmod u=rw,g=r,o=r

| chmod 644 |

|chmod u=rw,g=r,o=

| chmod 640 |

|chmod u=rw,go=

| chmod 600 |

|chmod u=rwx,go=

| chmod 700 |

x------------------------x-----------x