¿Como administro los permisos de archivos y directorios en Texto-plano.xyz?

Los sistemas operativos similares UNIX disponen de una estructura de directorios, y estos pueden contener archivos. Puedes disponer de tus directorios y ficheros en texto-plano.xyz libremente.

Tanto tus directorios como tus archivos normalmente son visibles y evidentes para todos los usuarios del sistema compartido. Esto depende de lo que llamamos "permisos de uso". ¡Pero puedes alterar estos permisos de funcionamiento y limitarlos, segun tus propias necesidades de seguridad y privacia!

Estos permisos de uso pueden referirse a los archivos, y los permisos de uso de los directorios. Al limitar o potenciar el acceso y utilizacion de los mismos tanto para el administrador de sistema (superusuario), los usuarios comunes, u otros grupos de usuarios diferentes, podras tener una experiencia mas segura y privada en el entorno compartido.

Estructura basica de permisos en archivos

Los permisos de uso del archivo describen el accionar que podemos contemplar con elos. Debemos tener en claro los tres atributos basicos que nuestros archivos puede tener: lectura, escritura y ejecucion.

  • Permiso de Lectura (r, o "read"): Este permiso nos permite "leer" o "ver" el contenido del archivo.
  • Permiso de Escritura (w, o "write"): Este permiso nos permite "modificar" el archivo escribiendo en el disco. Podremos agregar, sobrescribir o directamente borrar su contenido.
  • Permiso de Ejecucion (x, o "execute"): Si el archivo tiene permiso de ejecucion, entonces nuestro sistema operativo podra cargarlo en memoria y correrlo (darle ejecucion) como si de un programa se tratara. Si es un programa lo podremos ejecutar como cualquier comando, si es un script, necesitara de permisos de lectura y ejecucion (y debemos tambien tener acceso a su interprete). Un programa compilado solo necesita ser de lectura.

Las letras que identifican de los atributos son los caracteres de los permisos, y son:

r "read", quiere decir lectura,
w "write", quiere decir escritura,
x "eXecute", quiere decir ejecucion

Para ver los atributos de un directorio, podriamos usar el comando "ls -l", que nos informara de los mismos.

Usar chmod para cambiar los permisos

Comprendido esto, debemos conocer como cambiar estos permisos. A tal fin se utiliza el comando chmod ("change mode", o cambiar modo). Con el podremos agregar o quitarle permisos a uno o mas archivos con + (mas) o (menos).

Permiso de escritura

Si tuviesemos que prevenir la modificacion del archivo importante.txt, podremos hacerlo quitandole a este archivo su permiso de escritura mediante el comando chmod:

chmod -w importante.txt

Permiso de ejecucion

Si queremos hacer que el guion llamado instalador.sh pueda ejecutarse, debemos ingresar:

chmod +x instalador.sh

Combinacion de permisos

Si quisieramos quitar o agregar todos los atributos a la vez

chmod -rwx instalador.sh
chmod +rwx instalador.sh

Tambien podremos utilizar el signo = para establecer los permisos en una combinacion especifica. Por ejemplo, con la siguiente sintaxis el comando chmod quitara permisos de escritura y ejecucion dejando solo el de lectura.

chmod =r instalador.sh

Debemos tener especial cuidado y precaucion al modificar los permisos de nuestros archivos, pues podriamos dejarlos inaccesibles. Si editamos los permisos para hacer pruebas, no debemos olvidar dejarlos como estaban originalmente. Estructura basica de permisos en directorios

En el caso de los directorios, el procedimiento es un poco diferente, pero sigue los mismos rudimentos generales. Tendremos los mismo tres permisos, pero el significado operativo sera ligeramente diferente:

  • Permiso de lectura en un directorio: Si un directorio tiene permiso de lectura, podremos ver la lista de archivos contiene dicho directorio (por ejemplo, usar con el directorio el comando “ls", listar directorio). Es importante recalcar que contar con permiso de lectura en un directorio no significa que podamos leer el contenido de los archivos que estan dentro de el, ya que para ello esta el permiso de lectura del archivo.
  • Permiso de escritura en un directorio: Con el permiso de escritura de directorio podremos agregar, borrar o mover archivos al directorio

  • Permiso de ejecucion en un directorio: Ejecucion 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 busquedas realizadas por un programa. Por ejemplo, un directorio sin permiso de ejecucion no seria revisado por el comando find ("buscar")

Usuarios, Grupos y Otros

Ahora conocemos los 3 permisos y como agregar o remover estos, pero estos 3 permisos son almacenados para 3 propietarios diferentes, llamados:

    Usuario (u): proviene del dueno "Usuario"
    Grupo (g): proviene del dueno "Grupo"
    Otros (o): proviene del dueno "Otros"

De esta manera, al introducir el comando:

chmod =r mensaje.txt

...asignaremos permisos de lectura a los 3 duenos (usuario, grupo y otros). De tal forma, cuando listamos el directorio con “ls -l” veremos algo parecido a.

-r--r--r-- 1 fulano users 4096 abr 13 19:30 mensaje.txt

Indudablemente que estas tres “r” denotan los 3 diferentes propietario de permisos que se han referido, donde:

Permisos Pertenece a: rwx------ Usuario (las primeras 3 letras) ---r-x--- Grupo (las segundas 3 letras) ------r-x Otros (las terceras 3 letras)

Tambien podemos quitar permisos para cada propietario; supongamos que tenemos un archivo de un script ejecutable llamado guion.sh:

-rwxr-xr-x 1 fulano fulano 4096 abr 13 19:30 guion.sh

Si quisieramos removerle los permisos de ejecucion al propietario Grupos y al propietario Otros, bastaria con usar:

chmod g-x,o-x guion.sh

...de tal forma, nuestro archivo quedara con estos permisos

-rwxr--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh

Si deseamos removerle al dueno Usuario el permiso de escritura debemos ingresar:

chmod u-x guion.sh
-r-xr--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh

Para agregar y remover dos permisos a la vez al propietario Usuario:

chmod u-x+w guion.sh

...y al listarlo quedara:

-rw-r--r-- 1 fulano fulano 4096 abr 13 19:30 guion.sh

chmod en octales

Para simplificar la realizacion estos cambios es posible utilizar tambien una nomenclatura opcional denominada octal. Esta nos evitara tener que usar los atributos rwx, y los designadores de propietario usuario-grupo-otros. La representacion en octales para chmod es muy sencilla si seguimos la siguiente regla nemotecnica:

  Lectura tiene el valor de 4
  Escritura tiene el valor de 2
  Ejecucion tiene el valor de 1

Teniendo esto en cuenta, se completen las ocho combinaciones del octal restantes segun esta tabla:

    rwx 7, Lectura, Escritura y Ejecucion
    rw- 6, Lectura y Escritura
    r-x 5, Lectura y Ejecucion
    r-- 4, Lectura
    -wx 3, Escritura y Ejecucion
    -w- 2, Escritura
    --x 1, Ejecucion
    --- 0, Sin permisos

Por lo tanto:

  chmod usuario=rwx,grupo=rwx,otros=rx chmod 775
  chmod usuario=rwx,grupo=rx,otros= chmod 760
  chmod usuario=rw,grupo=r,otros=r chmod 644
  chmod usuario=rw,grupo=r,otros= chmod 640
  chmod usuario=rw,grupo,otros= chmod 600
  chmod usuario=rwx,grupo,otros= chmod 700

Normalmente, podras devolver los permisos relajados utilizados por defecto al recibir tu usuario de texto-plano.xyz, con:

chmod 755 /home/$USER/

Sin embargo, si deseas establecer unos permisos mas astringentes (por ejemplo, para impedir que los demas usuarios de texto-plano listar el contenido de tu directorio /home, pero permitir a los distintos programas servidores de gopher y www puedan acceder a contenido localizado en sus respectivas subdirectorios, podrias utilizar;

chmod 751 /home/$USER/

Un error que debemos prevenir cuidadosamente es el uso de chmod con comodines, pues esto puede provocar cambios de permisos de manera indiscriminada.

Supongamos que queremos aplicar permisos a todos los archivos dentro de un directorio, y a todos los subdirectorios contenidos en el. Que todos los archivos dentro de nuestra carpeta ~/docs reciban permiso rw para nuestro propietario usuario y para el propietario grupo, y r para el propietario otros; en tanto para los directorios queremos que el usuario tenga permisos de rwx para poder ver los archivos y usarlos, en tanto que el grupo y otros tienen permisos de r-x), pero que los grupos tengan lectura y ejecucion, mientras que los grupos tambien tengan dicho permiso.

Esto podria ser para restaurar los permisos como estaban originalmente.

Para ello podriamos correr.

cd ~/docs/
find ~/docs/ -type d -print0 | xargs -0 chmod 755
find ~/docs/ -type f -print0 | xargs -0 chmod 664

En este ejemplo, el octal chmod 664 pone los permisos en -rw-rw-r-- (un conjunto de permisos comun en sistemas similares a UNIX para las carpetas Documentos/, Musica/, Videos/ y Escritorio/).

El Octal chmod 660 pone los archivos en -rw-rw---- (para una carpeta de Dropbox/ por ejemplo)

En el caso de una carpeta con posesion (como la carpeta para las llaves ~/.gnupg/, deberiamos hacer lo siguiente: primero aseguramos que los contenidos de la carpeta nos pertenezcan:

chown -R $(whoami) ~/.gnupg/

...y luego otorgarle los permisos adecuados para la tarea que cumple esta carpeta .gnupg/ en particular:

find ~/.gnupg -type d -exec chmod 700 {} \;
find ~/.gnupg -type f -exec chmod 600 {} \

Permisos para la pagina web

En el caso de tu carpeta ~/public_html/ podras utilizar el programa

acthtml

...e bien poner a mano el octal 644 para poner los archivos como -rw-r--r--, con:

cd /home/$USER/
find /home/$USER/public_html/ -type d -print0 | xargs -0 chmod 755
find /home/$USER/public_html/ -type f -print0 | xargs -0 chmod 644