Está en la página 1de 5

Chmod permisos

Qu son los permisos CHMOD? El comando CHMOD permite cambiar los permisos
de tus carpetas y ficheros en el servidor. Por ejemplo, el comando CHMOD 777,
hara que un archivo tuviera todos los permisos para todos los usuarios. El nmero
que acompaa a CHMOD indica a quin se le va a dar permiso y qu tipo de
permiso se le va a dar. De esta manera, el primer dgito representa al propietario
del archivo (el que lo creo o subi), el segundo al grupo de usuarios de FTP en ese
mismo dominio y el tercero a un usuario corriente. El valor de cada dgito indica
qu permiso va a tener cada tipo de usuario, de la siguiente forma: 4 equivale a
lectura, 2 a escritura y 1 a ejecucin. Para dar ms de un permiso a la vez habra
que sumar los valores (por ejemplo para dar permiso de lectura y escritura pero no
de ejecucin sera 4 + 2 = 6). Si quisiera dar permiso de lectura y ejecucin para
todos los usuarios menos el propietario debe ejecutar el comando CHMOD 755: el
propietario mantiene todos los permisos (4+2+1), mientras que el resto slo tienen
lectura y escritura (4+1).

CHMOD files, asignando permisos

Una de las dudas mas habituales cuando nos enfrentamos a la instalacin de scripts
(perl, php) es la asignacin de los permisos correspondientes. Las preguntas sobre
CHMOD suelen ser las mas habituales en todos los foros que se dedican a estos
temas. En este artculo abordaremos que son los permisos, para que sirven, y como
asignarlos.
Los script y los permisos

CHMOD ("Change mode") es un comando UNIX que permite cambiar los permisos
de acceso de un archivo. Cada archivo tiene nueve clases de acceso, que pueden
ser permitidas o denegadas. Se pueden aplicar diferentes permisos al dueo del
fichero, al grupo al que el fichero pertenece y al resto de usuarios. Cada una de
estas tres clases de usuarios (dueo, grupo, resto de usuarios) puede tener
permisos de lectura, escritura y ejecucin

Al instalar cualquier archivo en una pgina web, podemos definir sus propiedades,
para determinar en que forma ser accesible para los visitantes de la pgina.
Estas propiedades son lo que llamamos permisos y segun cuales asignemos a cada
archivo este ser solo de lectura, de escritura o ejecutable, o cualquier combinacin
de los tres.

Piensa por ejemplo en una pgina de html sencilla, respecto de la cual solo nos
interesa garantizar que todo el mundo pueda verla pero no modificarla; el archivo
que contiene esa pgina necesita unicamente permisos de lectura, pero no de
ejecucin ni de escritura. Por contra, si se trata de un script, necesitar
probablemente permisos de lectura y de ejecucin, etc.
La orden CHMOD

En este documento nos referimos a la asignacin de permisos en servidores unix


(unix, linux, freebsd, todos ellos pertenecientes a la familia unix, y con diferencia
los mas difundidos en la red). La asignacin de permisos se hace mediante el
comando CHMOD. Por eso, cuando al leer las instrucciones de instalacin de
cualquier aplicacin web te encuentres con la misteriosa frase "haz chmod 666
tal_archivo.htm" ten en consideracin que nos estan diciendo los permisos que ese
archivo necesita.

Los servidores Windows tienen su propio sistema de permisos, en los que no vamos
a entrar aqui.
El concepto de usuario en UNIX

El sistema operativo UNIX esta diseado para ser multiusuario. Por ello UNIX
permite tres niveles de acceso a los archivos, para tres categorias diferentes de
usuarios:

owner (propietario) La persona que el sistema reconoce como dueo del archivo.

Group (grupo): Conjunto de usuarios con permisos similares. Muy usado en


entornos de trabajo, es de escasa aplicacin en pginas web.

Other (otros): Cualquier otra persona.

Es un error asociar el concepto de usuario a una persona real. Se trata de una


abstraccin, que se refiere no a personas sino a categorias. Por ejemplo, si
nosotros creamos un script, somos efectivamente sus autores y propietarios; pero
ese script esta destinado a la red. Nosotros, y el resto de personas, accederan al
archivo no a traves de nuestra maquina local sino por internet. Es frecuente en los
servidores la creacin de usuarios genricos (root, www, www-user etc). En
definitiva no olvides que cuando asignas permisos a un script, el owner puede ser
cualquiera que visite la pgina, lo cual ser necesario si como es normal se trata de
scripts que se administran via web.
Tipos de permiso de acceso:
Read (lectura): Permiso para ver el archivo o directorio, sin hacer cambios.

Write (escritura): Permiso de escritura: puede escribir el archivo, y por tanto,


cambiarlo.

Execute (ejecucin): El archivo o directorio puede ser ejecutado. Se usa para


directorios con scripts, formularios, etc ...

Y tratndose de directorios:

read listar los archivos de un directorio

write aadir nuevos archivos al directorio

execute acceder a los archivos del directorio


Como conozco los permisos de un archivo ?

Si tenemos acceso ftp al servidor, tecleamos el comando ls -l y vemos algo asi:

-rw-r--r-- 1 irvnet irvnet 1272 Sep 28 07:31 index.php


| // / | | | |
||| | | | tamao nombre del archivo
||| | | |_ nombre grupo
||| | |
||| | |_ nombre usuario
||| |
| | | |_ Permisos genericos
|||
| | |_ Los siguientes tres digitos los permisos del Group
||
| |___ los siguientes tres caracteres determinan los permisos del owner:
| r de real, lectura; w, write, escritura y x de
| execute, ejecucin
|
|
|___ El primer carcter indica si nos encontramos ante un directorio o un
fichero: d significa directorio, - significa fichero,
l significa link

Advierte que tenemos TRES categorias de usuarios ("user," "group," y "other") y


para categoria pueden asignarse 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 numericamente. Seguro que lo has visto por ahi, chmod 777
etc ...
Para comprender el significado tienes que tener en cuenta que convencionalmente
4 significa permiso de lectura. 2 permiso de escritura y 1 permiso de ejecucin.
Sumando estos valores vemos que un archivo puede tener los siguientes permisos
(por cada tipo de usuario):

4= lectura
2= escritura
1= ejecucin

6 (4+2)= lectura y escritura


5 (4+1)= lectura y ejecucin
3 (2+1)= escritura y ejecucin
7 (4+2+1)= lectura, escritura y ejecucin

Todo ello para los tres tipos de usuario.

Asi, un chmod file 777 significa que owner, group y others tienen permiso de
lectura, escritura y ejecucin. chmod 766 significa que el owner tiene permiso de
lectura, escritura y ejecucin, y el group y others permiso de lectura y escritura.
Chmod 744 significa que el owner tiene permisos de lectura, escritura y ejecucin,
y group y others unicamente permisos de lectura.

Como ves, son tres digitos, de izquierda a derecha designan los permisos del
owner, group y others.

Vemos a continuacin su equivalente en letras:

0 = --- = sin acceso


1 = --x = ejecucin
2 = -w- = escritura
3 = -wx = escritura y ejecucin
4 = r-- = lectura
5 = r-x = lectura y ejecucin
6 = rw- = lectura y escritura
7 = rwx = lectura, escritura y ejecucin

Asi, en el ejemplo de antes:


rw-r--r--

significa que el owner tiene permisos de lectura y escritura (rw-); el group permisos
de lectura unicamente (r--) y other, permiso de lectura (r--). como seria el
equivamente numerico? sera chmod 644.

La sintaxis para usar chmod con texto:


chmod [ugo][+-][rwx] [nombre_archivo]

Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos


siguientes] [r=read, w=write, x=execute]

Por ejemplo, chmod go+r index.php significa que asignamos permisos de lectura
para group y others en index.php

De esta forma solo cambiamos los atributos que especificamos, pero no alteramos
otros compatibles que pudieran estar asignados anteriormente) por ejemplo, no
modifica la atribucion anterior a group de un permiso de ejecucin).

Si queremos fijar de nuevo todos los permisos, la sintaxis sera:

chmod go=r index.php donde asignamos a group y other permiso de lectura sobre
index.php y eliminamos cualquier otro permiso para ambos.

Ten encuenta asimismo que puedes usar comodines:

chmod 644 *.html etc ...


Calculando valores chmod

This free script provided by JavaScript Kit


caso prctico, phpnuke:

Este apartado se mantiene como simple ejemplo. Las ultimas versiones de php-
nuke NO precisan permisos de archivo especiales.

Si leemos el install de phpnuke (versiones antiguas anteriores a la 6.0), por


ejemplo, el de la versin 4.4, encontramos:

"... In order to use the File Manager, please be sure to chmod 666 ALL files and 777
ALL directories.
4) Also, to activate Headlines you "need" to chmod 777 the "cache" directory,
otherwise headlines won't work.
....
NOTE: If you want to edit config.php file from web browser remember to chmod
666 the file config.php or your changes will not be saved! If can't execute chmod
just edit the file by hand and re-upload it to your server".

Bueno, aqui nos estn diciendo que si queremos utilizar el "administrador de


archivos" hay que asignar permisos 666 a todos los archivos, es decir, ya sabemos,
permisos de lectura y escritura para TODOS los usuarios (owner, group, other) y
777 a todos los directorios (permiso para listar archivos, subir archivos, acceder
archivos en el directorio, a los tres grupos de usuarios).

Para activar las headlines chmod 777 el directorio cache: listar archivos, subir
archivos, acceder archivos en el directorio, a los tres grupos de usuarios.

Para modificar las preferencias de nuestra pgina via web (a traves de admin.php)
debemos asignar a config.php permiso 666, es decir, permisos de lectura y
escritura. De otra forma, si no tiene permisos de escritura, no se guardaran los
cambios.
Materialmente, como se hace?

WS_FTP: click derecho sobre el archivo o directorio, y elegir "chmod" en el menu


emergente. O tambien, click derecho y elegir del menu "SITE", y en la barra que
sale escribir el comando UNIX, por ejemplo, "chmod 666 config.php".

CuteFTP: click derecho sobre el archivo o carpeta y elegir "Change file attributes"
del menu emergente. Para ver los permisos en la ventana, click derecho sobre la
ventana y elegir "Long listing".

HTML-kit Selecciona el archivo en el worksplace; click en el botn secundario del


ratn y selecciona Set permissions. Obtendras una ventana donde podrs fijar el
valor CHMOD chequeando casillas con los permisos, o bien introduciendo
directamente su traduccin numrica

También podría gustarte