[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 extra¤ara 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 dueño '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 dueño, 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 due¤o 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 due¤o, 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 due¤o 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, dueño 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 due¤o 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 due¤o 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 dueño, 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 due¤o 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 due¤o 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