Sábado, 27 Mayo 2017

Cap. V-gFTP-Los permisos del pingüino

Antes de adentrarnos en la subida y bajada de archivos, vamos a hacer un repaso en profundidad sobre cómo maneja los permisos el sistema GNU/Linux y de paso veremos los comandos respectivos para cambiar y/o asignar:

El comando a utilizar es “chmod” ("change mode") para los archivos remotos y “lchmod” para los archivos locales.

Chmod es un comando UNIX que se encuentra en la mayoría de los sitemas operativos GNU/Linux y similares como BSD. Este comando no permite cambiar los permisos de acceso a un archivo, a varios o a directorios...

Cada archivo tiene nueve clases de acceso, que pueden ser permitidos o no. Se pueden aplicar diferentes permisos al dueño del fichero, al grupo al que el fichero pertenece y al resto de usuarios. Cada una de estas tres clases de usuarios (dueño, grupo, resto de usuarios) puede tener permisos de lectura, escritura y ejecución.

Cuando subimos nuestro Joomla hay ciertos directorios y archivos a los que le tenemos que dar determinados permisos, según sea: solo de lectura, de escritura, de ejecución o cualquier combinación de los tres. Un ejemplo típico es el archivo “configuration.php” el que debemos poner de escritura pública para poder cambiarlo cuando lo instalamos o modificamos y luego volver a dejarlo de solo lectura. Justamente esto nos garantiza que estarán seguros aquellos a los que queramos mantener a salvo de extraños.

A continuación veamos un poco el concepto de usuario en GNU/Linux para entender mejor.

El sistema operativo *NIX esta diseñado para ser multiusuario. Por ello *NIX permite tres niveles de acceso a los archivos, para tres categorias diferentes de usuarios:

owner (propietario): La persona que el sistema reconoce como dueño del archivo, el que lo creó.

group (grupo): es el conjunto de usuarios con permisos similares. Muy usado en entornos de trabajo, es de escasa aplicación en páginas web. Un ejemplo típico que se da en entornos de redes es el grupo “smbgroup” que corresponde a los usuarios que utilizan Samba para compartir archivos entre Windows y Linux.

other (otros): Cualquier otra persona.

Es un error asociar el concepto de usuario a una persona real. Se trata de una abstracción, 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 creación de usuarios genéricos (root, www, www-user etc). En definitiva no olvides que cuando asignas permisos a un script, el owner puede ser cualquiera que visite la página, 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 (ejecución): El archivo o directorio puede ser ejecutado. Se usa para directorios con scripts, formularios, etc ...

Los directorios en linux como en Windows se consideran como archivos por lo que pueden tener los mismos permisos. La diferencia es que :
• El permiso read nos deja listar los archivos de un directorio.
• El permiso write no deja añadir nuevos archivos al directorio.
• El permiso execute nos deja acceder a los archivos del directorio


¿Donde se ven los permisos?

Como vimos anteriormente, al ejecutar el comando dir o ls, este nos mostraba una lista de los archivos/subdirectorios contenidos en el directorio especificado.
Vamos a “descomponer” alguno para entender mejor su lectura, tomaremos el archivo de configuración “.htacces”.

El punto que precede a los archivos en linux significa que este está oculto.

-rw-r--r-- pepe pepe 2663 ene 12 2009 .htaccess
|/  / /     |    |     |
|

||  | |     |    |     tamaño              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 read, lectura; w, write, escritura y x de execute, ejecución
|
|
|___ El primer carácter indica si nos encontramos ante un directorio o un
fichero: d significa directorio, - significa fichero,
l significa link (o enlace simbólico, similar a un acceso directo en Window)


El comando “chmod” o “lchmod” puede usarse tanto con letras como con números, pero lo más frecuente es el uso de números. Seguro que ya nos han dicho alguna vez “ponele permiso 777”.

Para comprender el significado de los números hay que tener en cuenta el significado de cada número de manera que representan los permisos según este esquema:

4= lectura
2= escritura
1= ejecución

6 (4+2)= lectura y escritura
5 (4+1)= lectura y ejecución
3 (2+1)= escritura y ejecución
7 (4+2+1)= lectura, escritura y ejecución

Es decir que para el caso de un archivo con el permiso 777 significa que tanto el owner, group y others tienen permisos de lectura, escritura y ejecución.
Veamos una figura:
777
¦¦¦_ Permisos de others (4+2+1)= lectura, escritura y ejecución
¦¦_ Permisos de group (4+2+1) = lectura, escritura y ejecución
¦_ Permisos de owner ((4+2+1) = lectura, escritura y ejecución

En este caso quiere decir que cualquiera que acceda a nuestra web puede leer, escribir y ejecutar el archivo. ¿Eso significa que cualquiera nos puede modificar el archivo? No, pero todo depende de la configuración del servidor web (Apache o el que sea) y del archivo .htacces ubicado en nuestro directorio remoto, que por defecto prohibide la escritura pública. Si quieren saber un poco más al respecto lean sobre configuraciones de Apache.

Veamos 2 ejemplos más de permisos:

766
¦¦¦_ Permisos de others (4+2) = lectura y escritura
¦¦_ Permisos de group (4+2) = lectura y escritura
¦_ Permisos de owner ((4+2+1) = lectura, escritura y ejecución


Unos de los más típicos en Joomla:
755
¦¦¦_ Permisos de others (4+1) = lectura y ejecución
¦¦_ Permisos de group (4+1) = lectura y ejecución
¦_ Permisos de owner ((4+2+1) = lectura, escritura y ejecución


Veamos a continuación su equivalente en letras:

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

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--). Lo que sería el equivalente en números a 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 siguien-tes] [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 ejecución).

Si queremos fijar de nuevo todos los permisos, la sintaxis sería:
chmod go=r index.php

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

También se pueden utilizar comodines, por ejemplo:
chmod 644 *.php

Esto le cambiaría a todos los archivos php ubicados en el directorio donde estamos posicionados dichos permisos.

Algunos componentes Joomla nos facilitan el trabajo de los permisos presentándonos un cuadro para seleccionarlos. Por ejemplo el componente “JoomlaXplorer”:

La primer columna de las r son los 4
La segunda columa de las w son los 3
La tercer columna de las x son los 1
En este ejemplo sería 777
Ampliando, tienen que ir haciendo la suma por filas:
Propietario es r+w+x=7
Grupo es r+x=5 (ya que w está desmarcado)
Público es r+x=5 (ya que w está desmarcado)

En este caso es al reves que el anterior ya que las columnas representan los tipos de usuarios y las filas los permisos.
Consultor y Desarrollador Proyectos Web
Author: tuxmerlin
Sobre mi...
Orientar personas es despertar vida
Otros contenidos de este Redactor

Debe registrarse para poder Comentar