
 [DOCUMENTO SOBRE LOS PERMISOS DE ARCHIVOS Y DIRECTORIOS PARA SISTEMAS UNIX]
================================================================================
1. Introduccion
---------------
El siguiente documento tratara de explicar en que consiste y como podemos 
establecer los diferentes permisos que podemos atribuir tanto a directorios
como a archivos en sistemas UNIX.
Si eres un usuario avanzado en el terreno UNIX, esto ya deberias saberlo, pero 
si aun asi deseas leerlo te agradeceria a ti y a todos los demas, que me
rectificarais cualquier fallo que pueda tener durante este texto.

2. Comenzando
-------------
Como todos sabreis los sistemas UNIX son sistemas multitarea/multiusuario. A 
diferencia del sistema operativo MSDOS (por ejemplo), estos sistemas
operativos tienen la capacidad de tener a mas de un usuario dentro del
sistema, tanto localmente como remotamente. Por lo tanto para proteger la
privacidad de los archivos y directorios de cada uno de ellos, para proteger
ciertos archivos elementales para el buen funcionamiento de la maquina, y para
una buena organizacion del sistema (aparte de otras muchas razones), tenemos a
nuestra disposicion los llamados permisos.
Como ya sabras, en una computadora con el S.O MSDOS, cualquier persona que
acceda a ella puede en cualquier momento borrar todo el disco duro. En los
sistemas UNIX hay diferentes categorias de usuarios, siendo la mas alta la 
del llamado 'root', o superusuario, que puede leer, escribir y ejecutar en
cualquier archivo dentro del sistema.
Como he citado antes, hay 3 posiblidades a la hora de 'tratar' a un archivo.
Leer el archivo, ejecutar el archivo y escribir en el archivo (por supuesto,
nada de esto podremos hacer si no tenemos permiso para ello o no hemos 
establecido los permisos oportunos).

3. UIDs y GIDs 
--------------
Toda persona que haya tenido la oportunidad de trabajar con un sistema UNIX,
si ha tenido la ocasion de observar el archivos de paswords, habra visto
que aparte de la informacion del usuario, login, definicion de shell...
se encuentran 2 numeros, para ser mas exactos, en el tercer y cuarto campo.
El tercero UID, y el cuarto, tambien definido en /etc/group GID. Todo esto
a grosos modos, serviria para identificar a cada archivo con su propietario y
grupo, entre otras cosas.
Los permisos de los archivos se almacenan junto con otra informacion en
una palabra de 16 bits dentro de lo llamado 'i-node'. 9 de ellos, se refieren
a lo mencionado anteriormente (lectura, escritura y ejecucion), ademas de
3 bits adicionales que contienen cierta informacion para las operaciones con
el archivo si es ejecutable, que ya explicaremos mas adelante. Cada archivo
posee un'i-node' diferente, que ademas de contener todo lo que hemos citado
anteriormente, este numero tambien hace referencia a los X primeros bloques
en el disco donde se encuentra ese fichero, y vienen las referencias de los
bloques que contienen las direcciones simples, dobles y triples del resto de
los bloques del fichero, ademas de muchas otras cosas que no tratamos en
este documento.
        
*NOTA* Si deseamos saber el numero 'i-node' de un archivo en concreto
       podemos emplear el comando 'ls -i archivo'

4. Permisos
-----------
En los archivos, o ficheros UNIX, a la hora de establecer los permisos
deseados tenemos que hacer uso de una orden de este S.O, que ha sido destinada
para eso exactamente, para la especificacion de permisos, esta orden se llama
'chmod'. A la hora de establecer los permisos, tenemos dos posiblidades, las
dos son igual de validas y buenas, aunque cada uno siempre se habituara a la
que le resulte mas comoda. Las dos posiblidades citadas anteriormente reciben
el nombre de absoluta y relativa, que mas adelante hablaremos sobre ellas.
A continuacion explicaremos las caracteristicas globales que tienen los
permisos de los archivos tanto hayan sido asignados en forma abosluta como
relativa.

Fijate en los siguientes cuadros:

Fig 1.
        -rwxrwxrwx   1 core     users           5 Feb  4 21:49 prueba*


Fig 2.                 Permiso
                 -----------------    
                  r |  lectura
                  w |  escritura   
                  x |  ejecucion   
 

Gracias al comando 'ls -l' podemos obtener bastante informacion tanto de los
archivos como de los directorios del sistema UNIX, tras hacer un ls -l prueba
el sistema nos mostrara algo parecido a la Figura 1.
Que como podemos observar el usuario 'core' del grupo 'users' tiene
un archivo llamado 'prueba'. Si observamos el primer fragmento de la linea,
nos extraara el ver repetidamente las letras r,w y x, ademas del '-' al
principio de todo. Pues bien como hemos citado antes, un S.O basado en UNIX
tiene diferentes categorias de usuarios, es por ello que en el archivo
'prueba' y en todos los archivos, se engloban todos estos grupos.
El primer '-' significa que es un archivo normal, ya que si fuese un
directorio dicho '-' nos lo representaria por 'd', si fuese un enlace
mediante 'l', 'b' significaria que es un dispositivo especial de bloques,
'c' un dispositivo especial de caracteres,'p' un archivo de conduccion por
nombre, 's' un semaforo y 'm' nos indicaria que es un archivo de memoria
compartida.
Las 3 primeras letras 'rwx' si os fijais en la Fig 2 sabreis que se refiere
tanto a permisos de lectura, escritura y ejecucion, pero este primer terceto
siempre se referira al usuario que creo dicho archivo, es decir al usuario
'core', por lo tanto sabemos que este usuario puede leer, escribir y ejecutar
dicho fichero. Pero... que hay del resto? Pues bien, el segundo terceto
siempre se referira a los permisos del grupo, mientras que lo que resta a los
demas usuarios. Por lo tanto en este caso, como habreis deducido, todo el
mundo tiene derecho a todos los permisos posibles sobre el archivo. Pongamos
un ultimo ejemplo:

        -r-x--xrw-   1 core     users           5 Feb  4 21:49 prueba*

En este fichero como podreis observar hay un ligero cambio de permisos.
El fichero 'prueba' ya que comienza mediante un '-' tiene permisos de lectura
y ejecucion para su dueo 'core', de ejecucion para los de su grupo 'users',
y de lectura y escritura para el resto de usuarios. Como habreis podido ver,
al no haber permisos de escritura para su dueo, ni permisos de lectura y
escritura para su grupo, ni permisos de ejecucion para el resto de los
usuarios,estos son resprentados mediante un '-'.
 
Ahora que ya hemos explicado las caracteristicas globales de todo directorio
y archivo unix podemos dar paso a la explanacion de las 2 formas citadas
anteriormente para establecer nuestros permisos en el sistema UNIX.

Forma abosluta:

La principal caracteristica que tiene esta nomenclatura es la de asignar
los permisos mediante valores octales.
Como todos sabreis, la base octal, o base 8, puede contener de los numeros 0
al 7. Es por ello, que tan solo son validos estos numeros a la hora de asignar
permisos. Fijate en el siguiente cuadro:

Fig 1.                Permiso    Valor_Octal
                 ------------------------------
                  r |  lectura         4
                  w |  escritura       2
                  x |  ejecucion       1


Claramente observamos que numero octal corresponde a cada caracteristica
de un archivo o directorio en un sistema UNIX. Pasemos pues a poner en
uso todo lo aprendido hasta ahora.
Como dijimos antes el comando utilizado por los S.O UNIX para establecer 
permisos recibe el nombre de chmod. A la hora de dar permisos en forma 
absoluta hemos de seguir la siguiente Sintaxis: 'chmod XYZ archivo'.
X representa al dueo del archivo, Y al grupo y Z al resto de usuarios,
mientras que 'archivo' es el nombre del archivo a especificar los permisos.
Siempre que queramos atribuir mas de un permiso los numeros octales se
sumaran. Observar los siguientes ejemplos para un mayor entendimiento:

                chmod 460 archivo   
                chmod 755 archivo
                chmod 050 archivo
                chmod 000 archivo
                chmod 777 archivo

-EL primer ejemplo daria permisos de lectura al propietario (4), lectura y
escritura al grupo (4+2), y ningun permiso al resto de usuarios (0).
-El segundo ejemplo daria permisos de escritura, lectura y ejecucion al 
propietario (4+2+1), permisos de lectura y ejecucion tanto al grupo como al 
resto de usuarios (4+1)
-El tercer ejemplo no daria ningun permiso al propietario (0), permisos de 
ejecucion y lectura al grupo (4+1), y ningun permiso al resto de usuarios (0)
-El cuarto ejemplo no tendria ningun permiso para nadie (0)
-Y finalmente el ultimo ejemplo tendria todos los permisos para todos los 
usuarios (4+2+1) 

Espero que haya quedado totalmente claro el sistema absoluto mediante los
anteriores ejemplos. Una vez dicho esto pasemos a explicar la segunda y
ultima posiblidad.

Forma relativa:

A diferencia de la forma abosulta, la relativa no utiliza numeros octales
o en base 8 para establecer los diferentes permisos, sino que se basa en una
nomenclatura de letras. Al igual que en la forma absoluta, en la relativa
tambien nos valemos del comando 'chmod' para asignar los permisos.

Observa los siguientes cuadros:

Fig 1.

Letra             Explicacion
----------------------------------------------------------------------------
  a           Engloba todos los usuarios, grupos y demas usuarios.   
  g           Engloba el grupo del propietario.
  o           Engloba todos los demas usuarios no mecionados antes.
  u           Engloba al usuario que creo dicho archivo                    
         
Fig 2.

Operador           Explicacion
----------------------------------------------------------------------------
  +            Agrega la modalidad
  -            Elimina la modalidad
  =            Elimina los permisos existentes y agrega los establecidos que                   sentencia.         
               indiquemos

Fig 3.

Permiso             Explicacion
-----------------------------------------------------------------------------
  x            Establecemos la ejecucion
  r            Establecemos la lectura
  w            Establecemos la escritura

Siempre que queramos atribuir permisos a un archivo/directorio en forma
relativa seguiremos por orden los 3 cuadros expuestos anteriormente. Por lo
tanto primero se indicara a la persona o personas que queremos atribuir dichos
permisos, seguiremos estableciendo la agregacion o eliminacion de ciertos
permisos y finalmente indicaremos estos mismos permisos. Fijate en el
siguiente ejemplo:

         chmod a+r archivo

Si te has fijado en las Figuras anteriores, no te deberia costar demasiado
entender los permisos que atribuye la orden anterior. Primeramente como hemos dicho,
indicamos al usuario/usuarios, en este caso esta la letra 'a' que significa 
que estableceremos permisos al dueo, grupo y demas usuarios. El siguiente
simbolo que le sigue, indicara si queremos agregar o eliminar permisos del
archivo en cuestion, en este caso el simbolo '+' indica que queremos agregar
permisos al fichero. Finalmente indicaremos los permisos a agregar. En este
caso indicamos 'r' (lectura) para todos los usuarios 'a'. 
Espero que haya quedado claro lo anterior, mediante este ejemplo. Sin embargo
quiza el simbolo '=' no lo acabemos de entender. Bien simplemente a diferencia
de los caracters '+' y '-', el simbolo '=' lo que hace es agregar permisos
al usuario/usuarios en cuestion, pero eliminando antes los que tenia 
establecidos. Ejemplo:

          chmod g=rw archivo

Y simplemente lo que haria seria quitar los permisos establecidos en el grupo
(si hay alguno), y daria permisos de lectura 'r' y escritura 'w' al grupo
del creador de dicho archivo.

Si por el contrario queremos establecer varios permisos a las diferentes
categorias que comprenden los sistemas UNIX podemos utilizar las comas.
Ejemplo:

          chmod o-wr, g-wr archivo

Que simplemente esta sentencia eliminaria ambos permisos, de escritura y
lectura tanto para el grupo, como para el resto de usuarios o general.

Durante gran parte de este texto, nos hemos referido tanto a directorios
como a archivos de forma indistintiva. Pero como bien sabemos, un directorio
con caracteristicas de ejecucion, no quiere decir que se pueda ejecutar,
entre otras cosas, porque los directorios no se crearon con ese fin. A
continuacion se muestra un cuadro con las multiples cualidades que puede
tener un directorio, y que podemos hacer con funcion de estas.
 
Fig 1.

    Permisos            Caracteristicas
--------------------------------------------------------------------
       r           La persona o personas que tenga establecidos este permiso
                   podran observar lo que contiene dicho directorio.

       w           La persona o personas que tenga establecidos este permiso
                   podran escribir (crear o eliminar) en el directorio.
                   
       x           La persona o personas que tenga establecidos este permiso
                   podran acceder al directorio y ejecutar los archivos
                   que lo contienen, siempre y cuando estos tengan permisos
                   de ejecucion a su vez.

Como habreis podido deducir, las opciones anteriores se pueden convinar si
deseamos dar multiples cualidades a un directorio.

A continuacion podras ver unas aclaraciones tanto de archivos como de 
directorios que no habiamos comentado literalmente hasta ahora.

*Las unicas personas que pueden cambiar el permiso de los archivos o
 directorios ubicado en una maquina UNIX son: el propietario del archivo
 o directorio, el root o superusuario del sistema, y el dueo del directorio
 en el cual contiene dicho fichero o directorio. 

*Siempre que un usuario tenga propiedad de lectura (como minimo)
 sobre cualquier archivo, y este no sea el propietario, si copia dicho
 fichero, la duplicacion de este archivo pasara a ser propiedad de el.

*Cuando hablamos sobre permisos de escritura de archivos, nos referimos
 a la posiblidad que tenemos de insertar o eliminar texto dentro de ese
 fichero, mientras que cuando nos referimos a estos ultimos permisos para
 directorios, tenemos la posiblidad de crear nuevos archivos o directorios
 ubicados dentro del directorio en el cual tenemos estos permisos.

*A la hora de eliminar un archivo o un directorio, no importa los permisos
 que tengan, ni quien sea su propietario, mientras tengamos permisos de
 escritura sobre el directorio que se encuentra dicho fichero o directorio
 podremos borrarlo.

Finalicemos este apartado dando un repaso sobre los diversos parametros
que podemos conjuntar con el comando chmod a la hora de establecer permisos.

Sintaxis general:

       chmod [opciones] establecimiento_del_permiso archivo_o_directorio

Opciones                     Descripcion
--------                     -----------
-c         *Nos describe con detalle solo los archivos cuyos permisos cambian.
            Si volvemos a establecer los mismos que tenia, el sistema no
            mostrara nada.

-f         *Si usamos esta opcion, y establecemos un permiso a un archivo
            en el que no somos propietarios, el sistema no sacara ningun tipo
            de error, simplemente el archivo se quedara tal como estaba antes.

-v         *Describe con detalle los permisos cambiados, aunque volvamos a
            establecer los mismos, el sistema nos lo indicara.

-R         *Esta opcion cambia de forma recursiva los permisos de los
            directorios y todo lo que haya dentro.

--help     *Muestra como usar chmod con sus respectivos parametros

--version  *Imprime informacion de la version chmod utilizado por nuestro S.O 

Si te interesa concretar mas a cerca de este comando con todas sus opciones
posibles, puedes consultar la ayuda de UNIX (man chmod)

5. Los 3 bits adicionales de los permisos de un archivo
--------------------------------------------------------
En la seccion 3, si recordais, dejemos un tema en el aire, en el cual
se hablaba de 3 bits adicionales que proporcionaban informacion para las
operaciones del archivo mientras fuese ejecutable. Este tema es el que
abarcaremos en esta seccion.

Hasta ahora hemos aprendido a dar 3 cualidades diferentes a un archivo o
directorio. Y a estas alturas nos resulta ya familiar las letras 'r', 'w',
y 'x'. Pero los sistema basados en UNIX nos permiten dar un ligero cambio
a la estructura ya explicada anteriormente mediante estos 3 bits adicionales.
Son los llamados: setgid, setuid, y el bit sticky.

Gracias a estas opciones podemos de alguna manera 'romper' las normas que
hemos establecido hasta ahora. Si recordais, hemos explicado que si un
archivo fuese del tipo -rwxrwxrwx, es decir que tuviese todos los permisos
posibles para todos los usuarios posibles, cualquier usuario podria
borrarlo por ejemplo. En este caso, si a este mismo archivo le agregaramos
el permiso del bit sticky, este archivo solo podria ser borrado por el
propietario del archivo, el propietario del directorio y el root. veamos
la representacion:

Fig 1.

-rwxrwxrwx   1 core     users           5 Feb  5 16:50 prueba*

Fig 2.

-rwxrwxrwt   1 core     users           5 Feb  5 17:56 prueba*

Como podreis observar hay un ligero cambio en los permisos del archivo, ademas
del caracter 't' que aun no conociamos (sticky o adosado)
En este caso como hemos dicho la Fig 2. representa un archivo que solo
puede ser borrado por el root, dueo del directorio donde se ubica, y por
el creador de dicho archivo. Sin embargo en este segundo caso, cualquier
persona puede escribir, leer, y ejecutar el fichero prueba, pero nunca borrar.
Ademas de todo esto, el bit sticky tambien se usa para que no se retire dicho 
archivo del espacio swap hasta que el programa haya finalizado. Tambien
se ha de resaltar, que siempre que se vea el simbolo 't' significara que
el bit sticky esta a uno (por lo tanto activado) y el bit de ejecucion
tambien a uno (por lo tanto el archivo podra ser ejecutado). Pero tambien
cabe la posiblidad de encontrarnos delante del simbolo 'T' que nos indicara
que el bit sticky esta a uno, pero el bit de ejecucion esta a 0.

El establecimiento de este permiso es sumamente sencillo. Hasta ahora solo
conociamos la sintaxis chmod XYZ, a partir de ahora agregamos una nueva
variable, en este caso quedaria asi, chmod KXYZ, siendo K el valor que
daremos para establecer tanto el bit sticky, como el setuid o setgid que
explicaremos mas adelante.
Para establecer el bit adosado en un archivo, deberemos darle el valor de 1
a la variable K. Ejemplo:

       chmod 1000 prueba         

    ---------T   1  core    users           7 Feb  5 18:00 prueba

Como podemos observar el bit sticky esta a 1, pero el bit de ejecucion esta
a 0, por lo tanto se representara mediante 'T'. Para la forma relativa el
establecimiento seria colocando la letra 't'. Ejemplo:

       chmod a=t prueba

Obteniendo los mismos resultados.
Si tubieramos el formato -rw-rw---x al poner el bit sticky a 1 obtendriamos:

    -rw-rw---t   1 core    users           7 Feb  5 18:00 prueba*

NOTA: Si habeis sido un poco observadores, os habreis dado cuenta de que
      si activamos el bit adosado, este no nos deja ver si el resto de
      usuarios tiene permisos de ejecucion. Siempre que el simbolo lo
      represente mediante 't' sabremos que el resto de usuarios tiene
      permisos de ejecucion. Y si lo representa mediante 'T', el resto de
      usuarios no los tendra.

Una vez explicado todo esto, podemos pasar a explicar el funcionamiento
del bit setuid y setgid.
El bit setuid estara activado y representado en los permisos del dueo del
archivo. De tal forma que si el setgid esta activado, estara representado en
los permisos del grupo.
Si el bit esta activado en el primer terceto de permisos (setuid)
y es ejecutado por un usuario, el fichero en concreto, a partir de ese
momento actuara de la misma forma, que actuaria si fuese ejecutado por el 
propio dueo del fichero. De esta misma forma si el bit esta activado
en el campo del grupo (setgid), y lo ejecuta un usuario del tercer tercerto de
permisos, este inmediatamente actuara como si fuese del grupo de ese fichero.

Igual que antes, siempre que veamos el simbolo 's', en este caso, significara
dependiendo de donde se encuentre, que el bit setuid, o setgid esta a 1, y
el bit de ejecucion tambien a 1. Si se representa mediante 'S' el bit de
ejecucion estara a 0. Puesto que estos permisos consisten en ejecutar
archivos con permisos diferentes, debera de darse permisos de ejecucion
tanto al dueo, como al grupo y resto de usuarios, ya que si el bit
setuid o setgid esta activado, quedra decir que queremos que lo ejecuten
otros usuarios, por lo tanto no tendria sentido quitar el permiso de 
ejecucion de los campos.

Estos bits siguen la misma nomenclatura que el ya tratado bit sticky.
Si deseamos aplicarlo de la forma absoluta, bastara con darle al valor
K el numero 4, con ello activaremos el bit setuid a 1. En cambio si le damos
a K el valor 2, activaremos el setgid. De igual forma que anteriormente, tanto
el bit sticky, como setuid o setgid, sus valores se pueden sumar. Si 
desearamos dar permisos a un archivo con el bit sticky, setgid y setuid 
activados, ademas de dar permisos de ejecucion a todo el mundo, bastaria 
con hacer un ' chmod 7111 archivo '.
Si optaramos por la forma relativa, tenemos a nuestra disposicion la letra
's'para dar dichos permisos. Ejemplo:

       chmod g=s archivo

Con esta instruccion quitariamos todos los permisos antiguos del grupo (si
los hubiera) y activaria el bit setgid, ya que estamos 'tocando' el campo
del grupo, y en ese campo no puede estar el bit setuid.

A continuacion mostramos 4 ejemplos de lo hablado hasta ahora, para poder
observar la diferencia de lo aprendido hasta el momento. 
El primero representa un archivo ejecutable con el bit setuid a 1, y
ejecutable. El 2 ejemplo representa lo anterior pero sin permisos  de
ejecucion ni de ningun tipo. El 3 representa un archivo con permisos de
ejecucion y bit setgid activado. Y por ultimo un archivo sin permisos con
setgid activado y permisos de ejecucion desactivados.

Fig 1.

---s--x--x   1 core     users           5 Feb  5 19:26 prueba*

Fig 2.

---S------   1 core     users           5 Feb  5 19:26 prueba

Fig 3.

---x--s--x   1 core     users           5 Feb  5 19:26 prueba*

Fig 4.

------S---   1 core     users           5 Feb  5 19:26 prueba

Uno de los archivos mas claros en los sistemas UNIX, que necesita tener
especificado el permiso setuid, es el nombrado /usr/bin/passwd que permite
a cualquier usuario cambiar su pasword o palabra clave, ya que para
sobreescribir su nueva clave en el fichero /etc/passwd se ha de tener
permisos de escritura. Si deseais obtener mas informacion sobre que
archivos o directorios tienen establecidos tanto el bit adosado, bit
setuid o setgid nos podemos ayudar con las ordenes 'find -perm 1000 -print'
'find -perm 4000 -print' y 'find -perm 2000 -print' respectivamente.

Tambien uno de los ejemplos mas claros a aplicar para el bit sticky, es 
el del directorio /tmp ya que todo el mundo tiene cualquier permiso sobre
ese directorio, sino estuviera dicho bit activado, cualquier usuario
podria borrar archivos que no pertenecieran a el.

6. chown, chgrp y umask
------------------------
No podiamos despedirnos de este documento sin almenos hacer mencion de
3 comandos que tambien tienen mucho que ver con los permisos de todo
directorio o archivo UNIX. A continuacion pasamos a explicarlos:

Chown:

Gracias a esta orden nos es permisible cambiar la propiedad del archivo,
es decir 'entregar' un archivo de nuestra propiedad a otra persona, con
lo cual esta ultima persona sera el nuevo propietario de dicho fichero.
Es importante saber que la propiedad de cualquier fichero solo puede
cambiarla el root o superusuario del sistema.

Podemos utilizar esta orden de la siguiente forma:

                         chown nuevo_usuario fichero

Ejemplo:

 ls -l

    -rw-rw---t   1 core    users           7 Feb  5 18:00 prueba*

 chown temp prueba

 ls -l

    -rw-rw---t   1 temp    users           7 Feb  5 18:20 prueba*

Como se puede apreciar claramente, el superusuario del sistema a cambiado
la propiedad del archivo 'prueba' que antes pertenecia al usuario 'core' y
lo ha establecido de forma que el nuevo dueo del fichero es el usuario
temp.

De igual forma que en la orden chmod, chown tambien posee diversos parametros
que se pueden aplicar cojuntamente con esta orden, a continuacion los
describimos:

Sintaxis general:

   chown [opciones] establecimiento_del_nuevo_usuario archivo_o_directorio

Opciones                     Descripcion
--------                     -----------
-c         *Nos describe con detalle solo los archivos cuya propiedad cambian.
            Si volvemos a establecer la propiedad que ya tenia, el sistema no
            mostrara nada.

-f         *Esta opcion no imprime mensaje de error alguno sobre archivos
            cuya propiedad no pueden cambiarse.
            
-v         *Describe con detalle los permisos de propiedad, aunque volvamos a
            establecer los mismos, el sistema nos lo indicara.

-R         *Esta opcion cambia de forma recursiva la propiedad de los
            directorios y todo lo que haya dentro.

--help     *Muestra como usar chown con sus respectivos parametros

--version  *Imprime informacion de la version chown utilizado por nuestro S.O 

Si te interesa concretar mas a cerca de este comando con todas sus opciones
posibles, puedes consultar la ayuda de UNIX (man chmod)

chgrp:

Gracias a esta orden que nos brinda el sistema UNIX, podemos cambiar la
propiedad de grupo a un archivo en concreto, tan solo necesitaremos 2
requisitos para llevar a cabo la labor mencionada anteriomente, ser el
propietario del fichero, y pertenecer al grupo al que se va a cambiar el
archivo.

*NOTA* El usuario root no necesita cumplir los requisitos mencionados
       anteriormente.

Podemos utilizar esta orden de la siguiente forma:

                     chgrp nuevo_grupo fichero

Ejemplo:

 ls -l

    -rw-rw---t   1 core    users           7 Feb  5 18:00 prueba*

 chgrp users2 prueba

 ls -l

    -rw-rw---t   1 core    users2           7 Feb  5 18:20 prueba*

En este caso el usuario core, propietario del archivo prueba, y ademas
miembro del grupo users2, a establecido un nuevo grupo sobre su archivo,
users2, eliminando el que habia antes definido, users.

De igual forma que en las ordenes chmod y chown, chgrp tambien posee diversos
parametros que se pueden aplicar cojuntamente con esta orden, a continuacion
los describimos:

Sintaxis general:

   chgrp [opciones] establecimiento_del_nuevo_grupo archivo_o_directorio

Opciones                     Descripcion
--------                     -----------
-c         *Nos describe con detalle solo los archivos cuya propiedad cambian.
            Si volvemos a establecer la propiedad que ya tenia, el sistema no
            mostrara nada.

-f         *Esta opcion no imprime mensaje de error alguno sobre archivos
            cuya propiedad no pueden cambiarse.
            
-v         *Describe con detalle los cambios de propiedad. Aunque volvamos a
            establecer los mismos, el sistema nos lo indicara.

-R         *Esta opcion cambia de forma recursiva la propiedad de los
            directorios y todo lo que haya dentro.

--help     *Muestra como usar chgrp con sus respectivos parametros

--version  *Imprime informacion de la version chgrp utilizado por nuestro S.O 

Si te interesa concretar mas a cerca de este comando con todas sus opciones
posibles, puedes consultar la ayuda de UNIX (man chmod)

umask:

Para finalizar este apartado, y el final de este documento, daremos paso a
la explicacion del comando umask o mascara.

Gracias a este comando podemos especificar cuales seran los permisos
predeterminados que obtendran los archivos o directorios, al crearse.

Seguramente a lo largo de este largo documento, a medida que habeis ido
leyendo y aprendiendo diversas cosas, os habeis parado por un momento
a pensar sobre que permisos tendria un archivo justamente despues de haber
sido creado. Para responder a esta pregunta nos podemos ayudar del comando
citado anteriormente, umask. Si lo ejecutamos como hemos dicho anteriormente,
sin ningun tipo de parametro, el sistema nos contestara con un numero
formado por 3 digitos, el primer digito se referira al dueo del archivo,
el segundo al grupo que corresponde el creador del archivo, y el tercer
digito el resto de usuarios.

Observa el siguiente cuadro que muestra los valores mas comunes de umask y
sus valores asociados:

Fig 1.

       Umask               Ficheros               Directorios
  ---------------------------------------------------------------
       000                -rw-rw-rw-              drwxrwxrwx
       002                -rw-rw-r--              drwxrwxr-x
       006                -rw-rw----              drwxrwx--x
       007                -rw-rw----              drwxrwx---
       022                -rw-r--r--              drwxr-xr-x
       026                -rw-r-----              drwxr-x--x
       027                -rw-r-----              drwxr-x---
       066                -rw-------              drwx--x--x
       067                -rw-------              drwx--x---
       077                -rw-------              drwx------

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        0       proporciona permisos de    proporciona todos los
                lectura y escritura        permisos

        1       proporciona permisos de    proporciona permisos de
                lectura y escritura        lectura y escritura

        2       propociona permisos de     proporciona permisos de
                lectura                    lectura y ejecucion

        4       proporciona permisos de    proporciona permisos de
                escritura                  escritura y ejecucion

*NOTA* Como puedes observar ,umask, al igual que chmod, te permite sumar
       los valores (1, 2 y 4) para poder atribuir mas de un permiso
       a un archivo o directorio. 

Ejemplo:

                    umask

                    022

Despues de ejecutar el comando umask en el sistema, este nos responde con
el numero 022, con esto nos quiere decir que todo archivo que creemos se
inicializara con los permisos -rw-r--r-- y drwxr-xr-x para los directorios.

Ejemplo2:

                    umask 077  

Al ejecutar esta sentencia haremos entender al sistema, que a partir de ese
momento todo archivo que creemos obtendra los permisos -rw------- y
drwx------ para directorios. Como habreis observado los dos ultimos 7
son sumados (4+2+1) para especificar mas de un permiso.

*NOTA* Aunque cambiemos el valor del umask, este no sera permanente, ya
       que dicha sentencia esta definida en uno de los archivos de arranque
       de todo sistema UNIX, y al reiniciar la maquina, volveria a tener
       el valor de siempre. Si quisieramos un valor permanente distinto
       al que esta establecido por defecto, tendriamos que modificar los
       archivos de arranque del S.O


7. Despedida
------------
Espero que todo aquel que haya leido este texto, pueda ahora desemvolverse sin
ningun tipo de problema por los sistemas UNIX en lo referente a permisos.
Quiero agradecer a todo aquel que se a mostrado interesado en leer este
documento, tanto si ya poseia estos conocimientos como si no.

Hemos dado basicamente (sin entrar en profundidad sobre ciertos temas),
todo lo referente a permisos de este S.O. Finalmente quiero volver
a recalcar, que todo aquel que no haya entendido algo en concreto, crea que
he podido cometer algun error, o simplemente piense que he podido o deberia
haber agregado alguna cosa mas a todo lo dicho anteriormente, puede ponerse
en contacto conmigo, y informarme sobre ello.



                                                                by  Koji
                                                          soykoji@hotmail.com
             
                                                      
