[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