¿Cómo administro los permisos de archivos y directorios en Ubuntu?
¡Descamisados!

Un nuevo Primero de Mayo nos encuentra reunidos a los que luchamos por 
hacer de nuestra hermosa tierra argentina una Nación socialmente justa, 
económicamente libre y políticamente soberana.

Desfilan por nuestra imaginación y por nuestro recuerdo los días vividos 
a través de las etapas reivindicatorias de la Patria que comenzaron en 
junio de 1943.

Primero, las reformas que fueron como la iniciación y la siembra de la 
simiente que había de cristalizar y florecer a lo largo de la trabajo y 
sudor argentino.

Después, el gobierno, nuestro gobierno, el gobierno del pueblo, el 
gobierno de los descamisados, el gobierno de los pobres, de los que 
tienen hambre y sed de justicia. Por eso, en esta plaza, la histórica, 
Plaza de Mayo de todas nuestras epopeyas, han latido al unísono 
amalgamados en un solo haz todos los corazones humildes que por ser 
humildes son honrados, son leales y son sinceros.

Después, la Constitución; la Constitución justicialista, que ha hecho de 
la tierra argentina una Patria sin privilegios y sin escarnios; que ha 
hecho del pueblo argentino un pueblo unido, un pueblo que sirve al ideal 
de una nueva Argentina, como no la han servido jamás en nuestra 
historia.

Esas tres etapas vividas por el pueblo argentino: la reforma, el 
gobierno y la constitución argentina, nos han dado un estado de justicia 
y un estado de dignidad y nosotros los transformaremos en un estado de 
trabajo.
Este documento especifica cuales son los derechos y qué se puede hacer 
en este país, y no podía ser de otra manera pues está inspirado en los 
permisos de GNU con Linux.

No es secreto para nadie que en los sistemas GNU con Linux podemos 
contar con una estructura de directorios, y que los mismos pueden 
contener archivos. Estos normalmente son visibles y evidentes para los 
trabajadores.

Sin embargo, es menos conocido el hecho de que tanto estos archivos como 
los directorios, tienen permisos de uso, y que del conocimiento y buen 
empleo de los mismos depende una adecuada utilización de los recursos 
informáticos que como Conductores tenemos a nuestra disposición.

Vean señores, estos permisos de uso pueden referirse a los archivos, y 
los permisos de uso de los directorios. Sirven para limitar o potenciar 
el acceso y utilización de los mismos tanto para el administrador de 
sistema (superusuario), los usuarios comunes, u otros grupos de usuario 
diferentes.

Es por ello que os enseñaré cómo disponer adecuadamente de estos 
permisos, y lo haré de una manera concisa y precisa para que cada uno - 
en la sana medida de sus posibilidades - pueda modificar los permisos 
cuando ello sea un requerimiento necesario.

Estructura básica 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 básicos 
que nuestros archivos puede tener: lectura, escritura y ejecución.

    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 Ejecución (x, o "execute"): Si el archivo tiene permiso 
de ejecución, entonces nuestro sistema operativo podrá cargarlo en 
memoria y correrlo (darle ejecución) como si de un programa se tratara. 
Si es un programa lo podremos ejecutar como cualquier comando, si es un 
script, necesitará de permisos de lectura y ejecución (y debemos también 
tener acceso a su intérprete). Un programa compilado sólo 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 ejecución

Para ver los atributos de un directorio, podríamos usar el comando "ls 
-l", que nos informará de los mismos.

Usar chmod para cambiar los permisos

Pues bien, comprendido esto, debemos conocer cómo cambiar estos 
permisos. A tal fin se utiliza el comando chmod ("change mode", o 
cambiar modo). Con él podremos agregar o quitarle permisos a uno o mas 
archivos con + (mas) o – (menos).

Si anhelamos prevenir la modificación del archivo constitucion1949.txt, 
podremos quitarle el permiso de escritura al “archivo” con el comando 
chmod:

chmod -w constitucion1949.txt

si queremos tornar en ejecutable el script 
trasvasamiento_generacional.sh, debemos ingresar:

chmod +x trasvasamiento_generacional.sh

...si quisiéramos quitar o agregar todos los atributos a la vez

chmod -rwx trasvasamiento_generacional.sh
chmod +rwx trasvasamiento_generacional.sh

Hemos de saber que también podemos utilizar el signo = para establecer 
los permisos en una combinación específica. Por ejemplo, con la 
siguiente sintaxis el comando chmod quitará permisos de escritura y 
ejecución dejando solo el de lectura.

chmod =r trasvasamiento_genaracional.sh

Naturalmente, siempre hemos de tener especial cuidado y precaución al 
modificar los permisos de nuestros archivos, pues podríamos dejarlos 
inaccesibles. Si los editamos, no debemos olvidar dejarlos como estaban 
originalmente


Estructura básica de permisos en directorios

En el caso de los directorios, la cosa será un poco distinta. Tendremos 
los mismo tres permisos, pero el significado operativo será 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 están dentro de él, ya que para ello está 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 ejecución en un directorio: Ejecución 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 
búsquedas realizadas por un programa. Por ejemplo, un directorio sin 
permiso de ejecución 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 dueños diferentes, llamados:

Usuario (u) proviene del dueño "Usuario"
Grupo (g) proviene del dueño "Grupo"
Otros (o) proviene del dueño "Otros"

De esta manera, al ejecutar:

chmod =r doctrina.txt

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

-r--r--r--    1  peron  users  4096 abr 13 19:30 doctrina.txt

Indudablemente que estas tres “r” denotan los 3 diferentes dueños de 
permisos que os he 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)

También odemos remover permisos para cada dueño; supongamos que tenemos 
un archivo de un script ejecutable llamado dar_aguinaldo.sh:

-rwxr-xr-x    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh

Si quisiéramos removerle los permisos de ejecución al dueño Grupos y al 
dueño Otros, basta con usar:

chmod g-x,o-x dar_aguinaldo.sh

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

-rwxr--r--    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh

Si deseamos removerle al dueño Usuario el permiso de escritura debemos 
ingresar:

chmod u-x dar_aguinaldo.sh

-r-xr--r--    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh

Para agregar y remover dos permisos a la vez al dueño usuario:

chmod u-x+w dar_aguinaldo.sh

...y al listarlo quedará:

-rw-r--r--    1  peron  peron  4096 abr 13 19:30 dar_aguinaldo.sh



chmod en octales

Para simplificar estos cambios, también se puede utilizar opcionalmente 
una nomenclatura llamada octal, que nos evita tener que usar rwx, y los 
designadores de dueño usuario-grupo-otros. La representación octal de 
chmod es muy sencilla, si seguimos la siguiente regla nemotécnica:

    Lectura tiene el valor de 4
    Escritura tiene el valor de 2
    Ejecución tiene el valor de 1


Dicho esto, según las combinaciones se completan las ocho combinaciones 
del octal restantes:

rwx 	7, Lectura, Escritura y Ejecución
rw- 	8, Lectura y Escritura
r-x 	5, Lectura y Ejecución
r-- 	4, Lectura
-wx 	3, Escritura y Ejecución
-w- 	2, Escritura
--x 	1, Ejecución
--- 	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

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 él. Que todos 
los archivos dentro de nuestra carpeta ~/Descargas tengan permiso rw 
para nuestro dueño usuario y para el dueño grupo, y r para el dueño 
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 ejecución, mientras que los grupos también tengan dicho 
permiso.

Esto podría ser para restaurar los permisos como estaban originalmente.

Para ello podríamos correr.

cd ~/Descargas/
find ~/Descargas/ -type f -print0 | xargs -0 chmod 664
find ~/Descargas/ -type d -print0 | xargs -0 chmod 755
Por ejemplo, el octal chmod 664 pone los permisos en -rw-rw-r-- (un 
conjunto de permisos común en Ubuntu para las carpetas Documentos/, 
Música/ y Vídeos/ y Escritorio/), mientras que el octal chmod 644 pone 
los archivos como -rw-r--r--. El Octal chmod 660 pone los archivos en 
-rw-rw---- (para una carpeta de Dropbox/ por ejemplo)