Beruflich Dokumente
Kultur Dokumente
Conceptos clave
Linux es un entorno multiusuario y como tal, personas muy diferentes pueden estar
trabajando al mismo tiempo con una serie de archivos sencillos. Se espera que algunos
de estos archivos sean compartidos, de tal manera que muchas personas puedan verlos y
modificarlos. Por ejemplo, alguien puede estar haciendo la lista de regalos para un
cumpleaños próximo. Entre más gente pueda leer este archivo, mejor. Sin embargo,
puede que haya otros archivos que se quieran mantener en privado. Por ejemplo, muy
poca gente querrá que alguien le lea su diario, otros querrán tener un archivo de lectura
para todos en el sistema, y permitirle a unos pocos modificarlo.
Cada archivo en Linux tiene tres propiedades que permiten a los usuarios controlar
quién tiene acceso al archivo y cómo: un usuario propietario, un grupo propietario y una
serie de permisos otorgados. Cuando un usuario crea un archivo, éste se convierte en el
propietario del archivo del usuario y por lo general, el grupo primario del usuario, se
convierte en el propietario del archivo de grupo. Un usuario no puede cambiar el
archivo del usuario propietario, pero el usuario tiene algunas habilidades para cambiar
el grupo propietario. Los bits de permisos definen la forma como las tres clases
diferentes de usuarios pueden usar el archivo: el propietario del archivo, los miembros
del grupo que poseen el archivo y cualquier otro usuario.
La última columna es el nombre del archivo, mientras que la tercera y cuarta columnas,
indican los propietarios del archivo de usuario y grupo, respectivamente. En las
2
siguientes secciones veremos cómo utilizar la primera columna para determinar los
permisos del archivo.
Al decidir quién puede tener acceso al archivo, un usuario puede distinguir entre tres
tipos de permisos. Alguien puede ver un archivo si tiene permisos de lectura, pero
deberá tener permisos de escritura para modificarlo. Los permisos de ejecución,
permiten que alguien utilice el archivo como un comando. Para iniciar una aplicación o
ejecutar un script, el archivo que contenga la aplicación o el script deberá ser ejecutable.
Los archivos normales de datos no usan el tipo de permiso ejecutable.
Cada archivo tiene una serie de permisos de lectura(r), escritura(w), y ejecución(X) para
las tres clases diferentes de acceso de archivo. El propietario del archivo utiliza el
primer grupo. Los miembros del grupo propietario del archivo utilizan el segundo y
todos los demás que no estén incluidos en las dos categorías anteriores utilizan el
último. Los permisos de un archivo se presentan, por lo general, con una serie de nueve
caracteres, tales como rwxr-xr-x. Las primeras tres letras representan los permisos del
"usuario", las siguientes tres, los permisos del "grupo", y las últimas tres el permiso del
"otro". Una letra indica que el permiso correspondiente se ha activado, mientras que si
aparece un guión esto significa que no se tiene permiso.
Cuando alguien trata de acceder a un archivo, Linux hace las siguientes preguntas en
este orden:
Ejemplos
Observe que por defecto, elvis posee el archivo y como propietario de archivo tiene
permisos de escritura y de lectura. Los otros usuarios sólo pueden leer el archivo
(debido a que Red Hat Enterprise Linux utiliza el esquema del grupo privado de
usuario, el usuario elvis es también el único miembro del grupo elvis). Como elvis tiene
permisos para escribir, puede modificar el archivo añadiendo la próxima línea del verso:
Otros usuarios como blondie, sin embargo, solo pueden leer el archivo. Cuando blondie
trata de sobrescribir el archivo con su propio verso, se da cuenta que no tiene los
permisos apropiados.
user grupos
blondie blondie,music
elvis elvis,music,wrestle,physics,emperors
hogan hogan,wrestle
bob bob
Archivos ejecutables
Los archivos que se deben interpretar como comandos necesitan tener permisos de
ejecución.
Enlaces simbólicos
A pesar de que los enlaces simbólicos tienen permisos, los permisos son siempre
rwxrwxrwx. Las decisiones de acceso "fracasan" de a cuerdo al archivo al que se refiere
el enlace simbólico.
Ejercicios en línea
Lab Exercise
Objetivo:Examinar la conducta predeterminada de los archivos recién creados
Haga una lista corta de propósitos para el año entrante en su editor de texto
preferido o simplemente desde la línea de comandos. Almacene el archivo en su
directorio recién creado como /tmp/nombredeusuario/resolutions.txt.
Conviértase en uno de sus usuarios de cuenta alterna. Puede reiniciar desde otra
consola virtual, desde una conexión de red o sencillamente con ejecutar su - al
usuario alterno.
Deliverables
Question 1
6
Conceptos clave
En la lección anterior, aprendimos que los archivos tienen permisos de lectura (r),
escritura(w) y ejecución(x); y tres clases de acceso ((u)suario, (g)rupo, y (o)tro, los
cuales definen la manera en que se puede utilizar el archivo. Los permisos son
administrados por el comando chmod. Usualmente, en Linux, al permiso de archivo se
le conoce como el "modo" del archivo. El nombre chmod es un atajo para
cambiarmodo.
Por ejemplo, cuando alguien crea un archivo, por defecto el archivo puede ser
modificado por sólo una persona, pero puede ser leíble por todos en el sistema.
Supongamos que elvis estuviera trabajando en la letra de una nueva canción y no
quisiera que nadie la leyera antes de haberla terminado. Primero crearía el archivo y
para no permitir a otros la lectura de éste, necesitaría utilizar el comando chmod.
[elvis@station elvis]$ echo "Well, it's one for the honey," >
blue_suede
[elvis@station elvis]$ echo "Two for the snow," >> blue_suede
[elvis@station elvis]$ ls -l blue_suede
-rw-rw-r-- 1 elvis elvis 48 Jan 16 08:09 blue_suede
[elvis@station elvis]$ chmod o-r blue_suede
[elvis@station elvis]$ ls -l blue_suede
Observe que en el primer uso del comando ls -l, el archivo tenía permiso de lectura para
todos. Sin embargo, después del comando chmod, el comando ls -l muestra que otros ya
no lo pueden leer. Cuando elvis haya decidido la letra de la canción entonces puede
restaurar la lectura del archivo para otros, utilizando una vez más chmod.
[elvis@station elvis]$ echo "Well, it's one for the money," >
blue_suede
[elvis@station elvis]$ echo "Two for the show," >> blue_suede
[elvis@station elvis]$ echo "Three to get ready," >> blue_suede
[elvis@station elvis]$ echo "Now go, cat, go." >> blue_suede
[elvis@station elvis]$ ls -l blue_suede
-rw-rw---- 1 elvis elvis 48 Jan 16 08:10 blue_suede
[elvis@station elvis]$ chmod o+r blue_suede
[elvis@station elvis]$ ls -l blue_suede
-rw-rw-r-- 1 elvis elvis 85 Jan 16 08:11 blue_suede
7
abreviación interpretación
u user
g grupo
o otro
a todos
+ agregar
- borrar
= set
r leer
w escribir
x ejecutar
Ejemplos
permisos
command efecto
resultantes
foo
chmod go-rwx suprime el permiso de lectura, escritura y ejecución a rw-------
foo grupo y otro
chmod a-w foo suprime el permiso de escritura a todos r--r--r--
chmod uo-r
suprime el permiso de lectura para el usuario y otro -w-rw----
foo
chmod go=rx establece el permiso de lectura y ejecución pero no rw-r-xr-x
foo de escritura para el grupo y otro
Apesar de que las dos últimas entradas funcionarían, ¿por qué es difícil imaginar un uso
para un archivo con cualquiera de los dos permisos resultantes?
Ejercicios en línea
Lab Exercise
Objetivo: Cambiar permisos en un archivo de tal manera que otros no puedan
leerlo.
/tmp/nombredeusuario/resolutions.txt .
Puede utilizar un editor de texto, su archivo del ejercicio anterior si todavía está
disponible, o simplemente cree uno nuevo como en el siguiente ejemplo.
Observe que los permisos en un archivo creado recientemente, le permiten a todos los
usuarios en el sistema leer el archivo. Asuma que quiere mantener sus propósitos en
secreto. Modifique los permisos de archivos de tal forma que los otros no tengan acceso
de lectura.
9
Al utilizar una de las cuentas alternas, confirme que otros usuarios en el sistema no
pueden leer sus propósitos.
Conceptos clave
En el cuaderno anterior, vimos cómo los usuarios de Linux pertenecen a una colección
de grupos. Para repasar, cada usuario pertenece a un grupo primario y también a un
número de grupos secundarios. Cuando se crea un archivo nuevo, el propietario del
archivo del grupo es establecido como el grupo primario del creador. En Red Hat
Enterprise Linux, éste sería usualmente el grupo privado del creador. Debido a que
usted es el único miembro, su grupo privado no es útil para trabajar en colaboración.
Para compartir el archivo, debe cambiar el propietario del archivo de grupo. Esto se
realiza con el comando llamadochgrp.
El primer argumento especifica el nuevo grupo propietario de archivo, mientras que los
argumentos subsecuentes listan los archivos cuyo propietario de grupo se va a cambiar.
El propietario del grupo sólo lo puede cambiar el usuario dueño del archivo, y el usuario
debe ser un miembro del nuevo grupo de propietarios del archivo.
1. Crear el archivo.
2. Cambiar el propietario del archivo de grupo al grupo governor utilizando el
comando chgrp.
3. Cambiar permisos en el archivo desde los permisos predeterminados rw-rw-r--
a rw-r----- utilizando el comando chmod.
[ventura@station ventura]$ id
uid=2306(ventura) gid=2308(ventura)
groups=2308(ventura),302(wrestle),305(govern
or)
El primer argumento es el nombre del nuevo usuario del archivo y los argumentos
siguientes son los nombres de los archivos a cambiar. Sólo el usuario administrativo,
root, puede usar chown, si algún usuario pudiera cambiar el archivo del propietario, los
permisos de acceso no tendrían sentido.
Como root es el único que puede ejecutar el comando chown éste no se estudiará a
fondo.
11
Ejemplos
Considere que al usuario ventura, quien es miembro de los grupos secundarios governor
y wrestler (aparte de su grupo privado, ventura) le gustaría compartir sus planes de
lucha libre (wrestling) con el usuario hogan y con otros miembros del grupo wrestle. Sin
embargo, para impedir el acceso a los que no son miembros del grupo wrestler, él
ejecuta la siguiente secuencia de comandos.
¿Pudo el usuario ventura haber usado el comando chmod o-r /tmp/plans.txt para lograr
el mismo efecto en la secuencia anterior?
Ahora al usuario hogan le gustaría agregarse a los planes de ventura. Como miembro
del grupo wrestle tiene permiso para hacerlo.
Aunque hogan es miembro del grupo wrestle, él no es el dueño del archivo. ¿Quiénes
son los únicos dos usuarios en el sistema que pueden cambiar el propietario del grupo
del archivo?
Ejercicios en línea
Lab Exercise
Objetivo: Crear un archivo compartido entre miembros de un grupo determinado.
Especificaciones
Haga una lista de mercado en su editor de texto preferido, o simplemente desde la línea
de comandos. Grabe el archivo como /tmp/nombredeusuario/shopping.txt. Cambie
el propietario del grupo del archivo a wrestle.
Recuerde que su primera cuenta alterna es también miembro del grupo wrestle.
Conviértase en su primer usuario alterno (i.e. estudiante_a). Usted puede reiniciar la
sesión desde la consola virtual, desde la conexión de red, o simplemente con el
comando su - al usuario alterno.
Como el usuario alterno, confirme que puede ver el archivo. También, observe que
puede modificar el archivo agregando un artículo más a la lista de mercado.
Recuerde que su segunda cuenta alterna (i.e, estudiante_b) no es un miembro del grupo
wrestle. Trate de convertirse en segundo usuario alterno y repita los pasos anteriores.
Usted podrá ver el archivo pero no modificarlo.
Question 1
Conceptos clave
Permisos de Directorio
Cuando alguien está usando un archivo dentro de Linux, generalmente puede estar
leyendo su información, modificándola o tratando de ejecutar el archivo como un script
o aplicación. Por lo tanto, los tipos de permiso que ya hemos visto, a saber: lectura (r),
escritura (w) y ejecución (x), tienen muchas interpretaciones.
Para Linux, un directorio es solo un tipo especial de archivo, por lo tanto, tambien tiene
las mismas clases de permisos lectura (r), escritura (w) y ejecución (x), un usuario
propietario, un grupo propietario y las mismas clases de acceso ((u)suario, (g)rupo,y
(o)tro). Sin embargo, es obvio que los directorios se utilizan de una manera diferente.
¿Tendría sentido si abriéramos un directorio en un editor tal como nano /home/elvis?
Debido a que la gente usa directorios diferentes, los permisos de directorio tienen
diferentes interpretaciones.
¿Qué hace la gente con los directorios? Hacen la lista del contenido con el comando ls.
Borran archivos desde ahí, crean nuevos archivos dentro de ellos, y mueven archivos de
un directorio a otro. Los permisos de directorio deberían dar derecho al propietario del
directorio de controlar quién puede realizar estas operaciones.
Linux considera que hacer la lista del contenido de un directorio, (como con el
comandols) es análogo a "leer" un directorio, y por lo tanto, una persona debe tener
permisos de lectura (r) para listar su contenido. Agregar o suprimir un archivo desde un
directorio se considera "escribir"el directorio y por lo tanto alguien debe tener permisos
de escritura (w) para barajar los archivos dentro del directorio.
No hay una analogía razonable para "ejecutar" un directorio, por eso Linux no trata de
definir una conducta similar. En cambio, el permiso de ejecución (x) controla la
conducta de los directorios, lo que no tiene nada que ver con el comando de ejecución.
Este permiso se conoce como el permiso "buscar", pero como el tercer permiso ya ha
sido llamado de "ejecución", para los archivos regulares, se utiliza la misma palabra (y
letra) para los directorios. Con el fin de referirse a cualquier archivo dentro de un
directorio, (incluyendo subdirectorios), un usuario debe tener permisos de ejecución (x).
La primera fila de la siguiente tabla parece familiar. Esta repite cómo interpretar los
permisos para archivos regulares. Se ha agregado una fila para directorios para
comparar y contrastar la interpretación del permiso de ambos tipos de archivo.
Ejemplos
Los archivos normales recién creados son de lectura para todos, pero sólo el usuario y el
grupo propietario del archivo pueden modificarlos. ¿Cómo se manejan los directorios
recién creados? Estudie el caso de nero, quien está recolectando información del censo
de varias provincias. El decide crear un directorio llamado /tmp/censuspara guardar
todos los datos.
Observe que los permisos predeterminados para los directorios recién creados son
rwxrwxr-x. Estos permisos tienen las siguientes implicaciones:
Por ejemplo, julius decide que le gustaría hojear la información que tiene nero sobre el
censo. Observe que julius puede navegar los directorios y los archivos dentro de los
directorios, pero debido a los permisos por defecto de un directorio, él no puede agregar
ni suprimir nuevos archivos. A causa de los permisos predeterminados de archivo, él
puede ver, pero no modificar el contenido de los archivos.
110 CE 45430
120 CE 53200
130 CE 55820
[julius@station julius]$ echo "140 CE 583420" >>
/tmp/census/gaul.dat
-bash: /tmp/census/gaul.dat: Permission denied
Directorios de inicio
En Red Hat Enterprise Linux, los directorios de inicio están "protegidos". Por defecto,
sólo el usuario propietario de un directorio de inicio tiene permisos de buscar.
¿Ha notado que la mayoría de nuestros ejercicios que involucran a varios usuarios
entrando a un archivo han utilizado el directorio /tmp/nombredeusuario en lugar del
directorio de inicio del usuario? ¿Por qué razón no hemos utilizado el directorio de
inicio del usuario?
Con el fin de crear un sitio accesible al público permanente para sus datos del censo,
nero escoge crear un subdirectorio público dentro de su directorio de inicio.
Convencionalmente, un subdirectorio como tal en Linux, se llama pub. Como las
siguientes secuencias lo mostrarán, compartir archivos desde el directorio de inicio del
usuario, no es tan fácil como crear un directorio leible (r) o ejecutable (x) por todo el
mundo.
17
Primero, nero crea el directorio ~/puby copia en él la información del censo desde
/tmp/census.
Interesado en los datos, julius trata de tener acceso a los archivos. Infortunadamente, no
todo sale bien:
¿Qué ha olvidado nero? Recuerde que para tener acceso al archivo dentro de un
directorio, incluyendo los subdirectorios, un usuario debe haber buscado permisos para
el directorio. Los permisos en /home/nero/pub están correctos, pero observe los
permisos en /home/nero (".." en la lista de arriba o listados de nuevo a continuación):
Si julius pudiera tener acceso al archivo /home/nero/pub, todo estaría bien. Pero como
julius no tiene los permisos de búsqueda para /home/nero, no puede tener acceso a
/home/nero/pub. Para crear un directorio accesible al público dentro de un directorio
de inicio, el usuario debe permitir a la gente buscar en su directorio de inicio. Nero
arregla el problema en la siguiente secuencia de comandos.
Es frecuente que los usuarios permitan a otros usuarios el acceso a sus directorios de
inicio (considere, el ejemplo anterior). Al permitir a otros ejecutar (x), pero no lee(r) en
su directorio de inicio, otros usuarios deben saber que un directorio existe dentro del
directorio de inicio para tener acceso a éste. Debido a que otros usuarios no pueden usar
el comando ls para descubrir el contenido de su directorio de inicio, los directorios de
inicio de los usuarios permanecen siendo privados y sólo las partes que ellos quieran
exponer estarán disponibles a otros usuarios.
...
¿Cuál es la lección que nero debe aprender? Si usted permite a otros el acceso a su
directorio de inicio como es frecuente el caso, debe considerar los permisos que hay en
los subdirectorios recién creados. Por defecto, si alguien puede adivinar el nombre del
directorio, también será capaz de navegar un subdirectorio.
Ejercicios en línea
Lab Exercise
Objetivo: Crear directorios accesibles a grupos dentro del directorio de inicio de un
usuario
Especificaciones
Su cuenta debería ser miembro de dos grupos secundarios, music y wrestle. aparte de su
grupo privado. Además, su primera cuenta alterna debe ser un miembro de los grupos
wrestle y physics, mientras que su tercera cuenta alterna debería ser un miembro del
grupo music.
Desde dentro de su directorio de inicio, usted quisiera compartir información con otros
músicos y luchadores, pero no le gustaría que los músicos vieran la información de los
20
luchadores y vice versa. Usted preferiría que un grupo ni siquiera se diera cuenta de la
existencia de otro directorio de grupo. Adopte el siguiente plan:
Cuando haya terminado, usted debería poder confirmar la conducta apropiada utilizando
sus cuentas alternas (student_a y student_c).
Deliverables
Question 1
1. Un directorio de inicio de búsqueda para todos y donde sólo usted puede listarlo.
2. ~/pub, un directorio de búsqueda para todos y de listado sólo para usted.
3. ~/pub/music, un directorio de búsqueda y que solo los miembros del grupo
music pueden listar.
4. ~/pub/music/lyrics, un archivo de lectura y escritura para todos los miembros
del grupo music.
5. ~/pub/wrestle, un directorio de búsqueda y que solo los miembros del grupo
wrestle pueden listar.
6. ~/pub/wrestle/plan, un archivo de lectura y escritura para los miembros del
grupo wrestle.
Ayudas
21
La siguiente serie de comandos demuestra una solución posible para hacer el directorio
~/pub/music.
Lab Exercise
Objetivo: Proteger un subdirectorio recién creado dentro de su directorio de
inicio, de una navegación no intencionada.
Estos ejercicios asumen que otros ya tienen permisos de ejecución (x) en su directorio
de inicio. Cree un subdirectorio memos en su directorio de inicio y modifique sus
permisos de tal manera que otros en el sistema no tengan acceso al directorio. Cree un
archivo dentro del directorio y use una de las cuentas alternas para confirmar que otros
usuarios no puedan acceder al archivo.
Solución:La siguiente serie de comandos demostró una solución posible para las
especificaciones anteriores (la salida asume que usted acaba de completar el ejercicio
anterior).
Deliverables
22
Question 1
Conceptos clave
Esta sintaxis tiene algunas ventajas y desventajas. Como la sintaxis es muy legible, la
intención de un comando es bastante evidente: el estudiante no quiere que otros usuarios
lean el archivo diary.. ¿Cuáles son los permisos resultantes en diary? Un problema de
sintaxis es que, al saber que sólo este comando fue ejecutado, usted no puede decir si el
archivo tiene permisos de escritura para los miembros del grupo o para otros. Sin saber
los permisos originales, usted no puede saber.
Esta lección ilustrará una sintaxis octal alterna para el comando chmod, la cual resuelve
estos problemas:
Recuerde que un archivo tiene tres tipos diferentes de permisos (lectura (r), escritura (w)
y ejecución (x), para las tres clases de usuario: usuario propietario (u), grupo propietario
(g), y otro (o)). Con la notación octal, cada clase de acceso obtiene un dígito, las
"centenas" para el usuario (u); las "decenas" para el grupo (g) y las "unidades" para otro
(o) . A cada tipo de permiso se le concede un valor: (r) tiene 4, (w) tiene 2, y (x) tiene 1.
Los dígitos de una notación octal son la suma de los permisos concedidos para cada
clase de acceso. Los siguientes ejemplos demuestran cómo se traducen los números
octales a una sintaxis convencional de permisos.
23
755 = rwxr-xr-x
640 = rw-r-----
701 = rwx-----x
Esta notación se llama la notación "octal" debido a que cada dígito tiene 8 posibles
valores(de 0 a 7).
Modos de archivos
Una vez aprendida, la notación octal brinda una forma rápida de referirse a los permisos
de archivo. Por ejemplo, los administradores experimentados de Linux a menudo se
referirán a un permiso de archivo de "644" o de un directorio de "755". En Unix, al
estado de los permisos de archivo se les conoce como el modo de un archivo. En
particular, este término se utiliza para referirse a los permisos de archivo de notación
octal. Por ejemplo, un administrador de sistema podría decir que los "Directorios se
crean con un modo predeterminado de 755".
Ejemplos
El usuario einstein tiene la siguiente serie de artículos, algunos ya han sido publicados,
otros no. Todos los archivos y direcciones tienen permisos predeterminados.
papers/
|-- published/
| `-- relativity
`-- unpublished/
|-- eismcsquared
|-- photoelectric_effect
`-- unlikely/
`-- time_travel
El usuario einstein ahora decide cambiar los permisos en todos sus archivos dentro de
su directorio sin publicar, para que otros usuarios no puedan leerlos. Con el fin de
ahorrar tiempo, einstein decide utilizar la forma recursiva del comando chmod.
¿En qué se ha equivocado einstein? ¿Por qué ni siquiera puede ver su propio directorio?
Preste atención a los permisos de los archivos en papers/unpublished:
unlikely, pero como el directorio ahora tiene el modo 660, einstein ya no tiene
permiso de acceso a su propio directorio y el comando ¡falla!
¿Qué lección nos deja este ejemplo? Los directorios y archivos regulares tienen
diferentes permisos "razonables". Por ejemplo, los directorios deben tener establecido el
permiso de ejecutar (x), mientras que, por lo general, los archivos regulares no.
Infortunadamente, el comando chmod -R no distingue entre archivos y directorios.
(Con el fin de obtener el resultado deseado, einstein podría utlilizar el comando find
para buscar de modo recursivo. Dicho comando find se presentará en la siguiente
sección).
Ejercicios en línea
Lab Exercise
Objetivo: Administrar permisos en un grupo grande de archivos, utilizando la
notación octal.
Configuración
Su segunda cuenta alterna (student_b) debe ser miembro del grupo emperors. Inicie la
sesión bajo esa cuenta y cree un directorio ~/reports y ejecute el comando cd en ese
directorio.
Especificaciones
Use el comando chmod con una notación octal para obtener estos resultados.
Question 1
Possible Solution
The following sequence of commands provides one possible solution to this exercise.
En las lecciones anteriores vimos que los archivos recién creados tienen un modo por
defecto de 664 (rw-rw-r--), lo que implica que todos pueden leer el archivo, pero
únicamente el propietario de archivo puede modificar un archivo recién creado.
Igualmente, los directorios recién creados tienen un modo por defecto de 775
(rwxrwxr-x), implicando que cualquier persona puede acceder o navegar en el
directorio, pero sólo el propietario del directorio puede añadir o borrar archivos.
Los permisos predetermiandos de los archivos recién creados se pueden alterar a través
de un concepto Unix estándar llamado umask. Cada proceso, incluyendo el comando de
shell bash, tiene un número octal de tres dígitos, el cual se utiliza para "desenmascarar".
La umask está compuesta justo como un modo octal, pero el significado es invertido.
Como un modo octal, cada clase de acceso es representado por un sólo dígito: (u)suario
está en las "centenas", (g)rupo propietario en las "decenas" y (o)tros en las "unidades".
Como un modo octal, cada tipo de permiso tiene un valor, 4 para lectura (r), 2 para
escritura (w), y 1 para ejecución(x). Sin embargo, a diferencia de los modos octales, la
umask está compuesta por valores de permisos no deseados.
Con el fin de determinar los permisos para archivos recién creados, el kernel de Linux
comienza con un modo global por defecto de 666, (rw-rw-rw). El kernel luego aplica la
umask para el proceso que creó el archivo. Todos los valores asignados en la umask son
"revelados" de los permisos predeterminado de 666. Por ejemplo, una umask de 002
resultaría en permisos por defecto de 664:
Otro ejemplo, una umask de 077 resultaría en permisos por defecto de 600:
Al determinar los permisos por defecto, cualquier permiso que sea asignado en la umask
es "desenmascarado" del kernel predeterminado.
28
Los permisos predeterminados para los directorios se crean utilizando la misma técnica,
excepto que el modo por defecto del kernel para directorio es 777 (rwxrwxrwx). Por
ejemplo, una umask de 002 resultaría en permisos por defecto para directorios de 775:
Observe que, en ambos casos, una umask de 002 tiene el mismo efecto general para los
archivos y directorios. Cualquiera puede leer, pero sólo el propietario puede modificar.
Igualmente, una umask de 077 tiene el mismo efecto general tanto en archivos como en
directorios: el usuario propietario puede leer y modificar, pero nadie más tiene acceso.
La umask de shell bash se puede examinar y modificar con el comando umask. Cuando
se llama sin argumentos, el comando umask reporta la umask de shell actual. Cuando se
llama con una umask octal como un único argumento, se le asigna a la umask de shell el
valor especificado.
(Observe que, en la salida, la umask se reporta como un número octal de cuatro dígitos.
Por ahora, el "0" del comienzo se puede ignorar (su significado será más claro en la
siguiente lección).
Ejemplos
Uso del comando umask para crear archivos compartidos por grupos
En la siguiente secuencia, blondie y otros músicos están colaborando con la letra de una
canción. A blondie le gustaría crear varios archivos que los miembros del grupo de
music pueden ver y modificar, pero que nadie más puede leer o escribir. Una posibilidad
29
sería crear los archivos y luego cambiar los permisos de archivo con chmod. En
cambio, blondie va a utilizar el comando umaskpara cambiar sus permisos por defecto
de shell en los archivos recién creados.
Observe que la umask de shell de 007 "desenmascaró" los permisos que hubiesen
podido ser asignados por (o)tros.
El emperador Nero, en un estado de paranoia está sospechando que los otros usuarios le
están mirando sus archivos. Quisiera configurar su shell bash de tal forma que cada vez
que inicie, la umask de la shell sea establecida automáticamente como 077. Hará esto
editando el archivo ~/.bashrc, el cual por lo general, existe por defecto en el directorio
de inicio del usuario.
Siempre que se inicia una nueva shell bash, los comandos listados en el archivo
especialmente nombrado ~/.bashrc se ejecutan como si fueran escritos desde la línea
de comandos. Al anexar "umask 077" al archivo ~/.bashrc de nero, él configurará su
shell de tal forma que la umask de shell automáticamente será configurada como 077 al
iniciar.
En la siguiente secuencia, nero examina primero, luego agrega una nueva línea y
después reexamina su archivo ~/.bashrc. Por ahora, no se preocupe por el contenido
original del archivo, sólo observe que el archivo modificado ejecuta el umask como su
último comando.
Ejercicios en línea
Lab Exercise
Objetivo: Uso del archivo ~/.bashrc para cambiar los permisos por defecto de la
shell bash.
Especificaciones
Cada vez que inicie una shell bash, el contenido del archivo ~/.bashrcse ejecutará
como si los hubiera escrito en la línea de comandos. Este archivo se utiliza a menudo
para personalizar la conducta predeterminada de bash.
Si quiere que su umask de shell por defecto sea cambiada automáticamente cada vez
que inicia una sesión, agregue una línea al final de su archivo ~/.bashrc, el cual
establece la umask de la shell. Los archivos recién creados deberían ser de lectura para
todos, pero de escritura únicamente para el usuario propietario por defecto.
Question 1
31
Possible Solution
The following sequence of commands provides one possible solution to this exercise.
Observe que los permisos de los archivos recién creados es 644, no el permiso por
defecto de Red Hat de 664.
Limpieza