Contacto

Nos puedes enviar un artículo a publicar (si te fue útil, seguro que a otros también).
Nos puedes sugerir temas/profundidad de interés.
correo-e - perfil

Busquedas

Permisos en Linux

 Manejo de permisos de archivos en linux
      Todos los archivos en linux (los directorios y dispositivos también son archivos), tienen un conjunto de permisos, que determinan qué usuarios pueden acceder a estos archivos, y qué es lo que pueden realizar.
 Los permisos que se otorgan son de lectura (r), escritura (w) y ejecución (x).

 En cada archivo, estos permisos se asignan a tres categorías de usuarios, de forma independiente. Estas categorías de usuarios son:
   Propietario (owner): Es el usuario al que pertenece el archivo. Por defecto, el usuario que crea un archivo es el propietario (puede ser cambiado).
   Grupo (group): Es un conjunto de usuarios asociados a un grupo, a los cuales se les quiere asignar permisos para el archivo.
   Otros (other): Son todos los usuarios que no pertenecen a las dos categorías previas.

 Al asignar los permisos de forma independiente, permite que el propietario tenga, por ejemplo, permiso de leer y escribir un archivo, mientras que
los miembros del grupo solo pueden leerlo, y el resto de usuarios no puedan acceder.

 Para ver la información detallada de un archivo en linux, usamos el comando "ls -l". En el siguiente ejemplo, se muestra un directorio y un archivo de texto.
   drwxr-xr-x 2 dlix lectores 4096 2010-01-10 17:55 doc
   -rw-r----- 1 dlix lectores  192 2010-01-10 17:55 log.txt

 Recorriendo el resultado de 'ls -l' de izquierda a derecha, vamos a describir las diez posiciones iniciales:

1) Tipo de archivo: El primer carácter indica el tipo de archivo. Alguno de los caracteres (y su significados) posibles son:
    "-" : representa un archivo (como un txt, html, pdf)
    "d" : indica que el archivo es un directorio.
    "l" : indica que el archivo es un enlace simbólico
    "c" : indica que es un archivo especial de caractéeres (ej.ttyS0 )
    "b" : indica que es un archivo especial de bloques (ej. sda1 )

   En el ejemplo anterior, "doc" es un directorio, y "log.txt" es un archivo de texto.

 2) Los siguientes nueve carácteres representan los permisos (rwx), agrupados por la categoría de usuario.
    Los permisos no concedidos (por ejemplo, no se tiene permiso de ejecución), se representa con un guión (-).

 2.1) El primer conjunto de tres caracteres representan los permisos que se otorga al propietario (owner) del archivo.
   
    En el ejemplo, para el directorio "doc" el propietario "dlix" tiene permiso de lectura, escritura, ejecución (rwx).
    Para el archivo "log.txt", el propietario tiene permisos de lectura y escritura (rw-). No se otorgó permiso de ejecución (-).

 2.2) El segundo conjunto de tres caracteres representan los permisos otorgados al grupo (group) del archivo.
   
    En el ejemplo, para el directorio "doc", el grupo "lectores" tienen permiso de lectura y ejecución (r-x).
    Para el archivo "log.txt", el grupo "lectores" solo tiene permiso de lectura (r--).

 2.3) El tercer y último conjunto de tres caracteres representan los permisos otorgados a la categoría de otros usuarios (others).
   
    En el ejemplo, para el directorio "doc" estos 'otros' usuarios tiene permiso de lectura y ejecución (r-x).
    Para el archivo "log.txt", estos 'otros' usuarios no tienen ningún permiso (---), por lo que no pueden realizar ninguna acción.

 3) Vamos a saltear el siguiente carácter (que representa el numero de enlaces al archivo), con lo que luego tenemos el propietario y
a continuación el grupo del archivo, en nuestro ejemplo, 'dlix' y 'lectores' respectivamente.

 Permisos en Directorios
  Como se puede ver en el ejemplo, los permisos en el directorio son los mismos que en un archivo (rwx).
  Es importante comprender el significado que estos tienen en el directorio.

  El permiso de lectura en el directorio permite ver los archivos que hay en él.
  El permiso de ejecución, permite ingresar en él ( hacer 'cd ').
  El permiso de escritura, permite crear archivos en el directorio, y eliminar los propios.

 Representación de los permisos en linux
   Los permisos pueden representar de dos formas.
   Una es mediante símbolos de permisos, como se han visto hasta ahora en este artículo: r w x (lectura, escritura, ejecución).
  Otra forma es mediante código numéricos, expresado en notación octal. Este método es muy útil en el momento de modificar permisos.
  En la representación numérica:
    4  => representa el permiso de solo lectura (r).
    2  => representa el permiso de solo escritura (w).
    1  => representa el permiso de solo ejecución (x).

  Para representar combinación de permisos, se suman los códigos que están presentes.
  Por ejemplo, si se quiere representar un archivo que tiene permisos de lectura y ejecución, mediante símbolos: r-x. Mediante código numéricos,
 simplemente sería 5 ( 4 + 1 == lectura + ejecución ). Un archivo con todos los permisos (rwx) en código numérico es 7 (4 + 2 + 1  == lectura + escritura + ejecución  ).

 Modificación de Permisos en linux: comando chmod
  El comando chmod nos permite modificar los permisos de los archivos en linux.
  Los permisos se pueden representar por sus símbolos (conocido como método relativo), o mediante la codificación numérica (conocido coo método absoluto).

 Para el método relativo (o simbólico), a los símbolos ya mencionados (rwx) se tiene que agregar la siguiente lista:
  u : Agrega o elimina un permiso al propietario del archivo.
  g : Agrega o elimina un permiso al grupo del archivo.
  o : Agrega o elimina un permiso la categoría de usuarios 'otros'. (recordamos, no es el propietario, ni pertenecen al grupo).
  a : Agrega o elimina un permiso a todas las categorías de usuarios ( ugo ).
  + : Significa que se agrega el permiso.
  - : Significa que se elimine el permiso.

 El modo de empleo es, indicar la categoría de usuario al cual se quiere asignar el permiso, el símbolo +/- (agregar/eliminar), y los símbolos de los permisos.

 Algunos ejemplos:
  De acuerdo a esto, si se quiere eliminar el permiso de escritura a todos los usuarios del archivo log.txt:
      chmod a-w log.txt
  Si se quiere dar permisos de escritura y ejecución al directorio doc, para los usuarios 'otros':
      chmod o+xw doc/
  Si se quiere dar permiso para los usuarios 'otros' de lectura, y eliminar los permisos de escritura y ejecución en el archivo log:
      chmod o+r-wx log.txt

 Para asignar permisos por medio de caracteres numéricos (método absoluto), siempre se hace referencia a las tres categorías de usuario.
 Se utilizan 3 dígitos, en donde cada dígito representa los permisos (rwx) de cada categoría.
 El primer dígito corresponde a los permisos para el propietario, el segundo para el grupo, y el tercero para otros.

 Algunos ejemplos:
  Si se ejecuta el siguiente comando:  chmod 764 log.txt
   el primer dígito asigna permisos para el propietario. El 7 significa que se dan todos los permisos (rwx == 4+2+1).
   el segundo dígito asigna permisos para el grupo. El 6 significa que se da permiso de lectura y escritura (rw == 4+2).
   el tercer dígito asigna permisos para otros. El 4 significa que se da permiso de lectura (r == 4).
  Si hacemos ahora: ls -l log.txt  obtenemos:  -rwxrw-r-- 1 dlix lectura 0 2010-01-10 00:30 log.txt

 Que método usar depende de la situación, y en particular, lo que sea más cómodo de forma personal.
 Cuando se tiene que modificar los permisos de todos los grupos, el método absoluto resultaría el más cómodo. Cuando tengo que cambiar un permiso concreto para
una de las categorías de usuario, el método simbólico resulta más intuitivo.

 Aplicar modificación de permisos de forma recursiva.
   Cuando se quiere realizar cualquier modificación de permisos (como vimos en los ejemplos anteriores), de forma recursiva a todos los archivos y directorios, se usa la opción "-R".

  Por ejemplo, para dar todos los permisos al propietario, permiso de lectura y ejecución al grupo, y ningún permiso a otros, para todos los directorios y archivos dentro del directorio doc, se puede hacer mediante:
  chmod -R 750 doc  ==> Resultado:  drwxr-x---  (para el directorio doc, y todos sus subdirectorios y archivos)


No hay comentarios: