You are on page 1of 12

USUARIOS, PERMISOS Y SERVICIOS EN

LINUX
Fabio Lacio , Alicia Orquera , Jared Lopez
Unidad de Postgrado Facultad de Ciencias de la Computacin y Telecomunicaciones
UAGRM
lacio.fabio@gmail.com, alicia.orquera@gmail.com, jared.lopez@gmail.com

Resumen- Este documento presenta una investigacin acerca


de los usuarios, permisos y servicios del sistema operativo Linux
Tanto en el software propietario como en el libre, la gestin
adecuada de estos tres elementos es de vital importancia para
proteger la informacin de accesos no autorizados. En Linux
existen dos tipos o perfiles de usuarios: el administrador, o
root, y los usuarios finales. Y todos los archivos tienen un
propietario. Veremos cmo realizar adecuadamente la gestin de
estos elementos en Linux.
Palabras Clave- Software Libre, Open Source , root , grupo ,
usuario, servicio, propietario. ACL.

1. INTRODUCCIN
La administracin de usuarios en Linux es la referida a la
creacin y gestin de las cuentas de usuarios, grupos de
usuarios, establecimiento de permisos y relaciones entre
ambos.
Este tipo de administracin la llevaremos a cabo cuando
queramos establecer polticas de seguridad en un equipo o en
una LAN, o para gestionar servidores del tipo NFS, FTP o
WEB.
Linux es un sistema multiusuario, por lo que necesita de una
poltica de permisos segura y planificada para mantener el
sistema seguro.
Un administrador de sistemas Linux debe prestar mucha
atencin y planificar dicha poltica de permisos para mantener
su sistema seguro.

2. GESTIN DE CUENTAS DE USUARIO


GNU/Linux es un sistema multiusuario y multitarea,
pueden trabajar muchos usuarios simultneamente, cada uno
tiene su propio espacio de almacenamiento de directorios y
archivos, como tambin scripts de inicio y variables de
ambiente. Las contraseas se eligen o asignan
individualmente y cada usuario tiene un conjunto de
privilegios bien definido. Bajo ciertas circunstancias, las
cuentas de usuario pueden tener privilegios restringidos o
estar bloqueadas. Por este motivo en el sistema tienen que
convivir diferentes usuarios y compartir los recursos del
sistema.
2.1. CUENTAS DE USUARIO
Los sistemas Linux proveen un ambiente multiusuario el
cual le permite a personas y procesos tener ambientes de

trabajo simultneos y separados. Los propsitos de tener


cuentas individuales de usuario incluyen:
Proveer a cada usuario de un espacio individual y
privado.
Crear cuentas de usuario en particular con
propsitos especficos.
Distinguir privilegios entre los usuarios.
2.1.1. LA CUENTA ROOT
Una cuenta de usuario especial es la de root (conocido
como superusuario), la cual tiene la capacidad de hacer
cualquier cosa en el sistema.
La cuenta root debera usarse solamente con propsitos
administrativos, cuando sea absolutamente necesario y en
ningn caso ser usada como una cuenta normal. Los errores
pueden ser muy costosos, tanto para la integridad, estabilidad
y seguridad del sistema.
Generalmente el inicio de sesin remoto est prohibido
por defecto, debido a razones de seguridad. Es posible
permitir inicios de sesin a Secure Shell usando ssh, el cual
se configura en /etc/ssh/sshd_config y en PAM (Pluggable
Authentication
Modules),
a
travs
del
mdulo
pam_securetty.so y el archivo asociado /etc/securetty. El
inicio de sesin de root se permite solo desde los dispositivos
listados en /etc/securetty.
Por lo general se recomienda que todos los accesos a la
cuenta root se realicen a travs de su o sudo (generando un
registro de auditora de todos los accesos a root a travs de
sudo). Tenga en cuenta que algunas distribuciones (tales
como Ubuntu) prohben iniciar sesin directamente en la
cuenta root.
PAM tambin puede usarse para restringir a qu usuarios
se les permite hacer su a la cuenta root. Podra valer la pena
configurar auditd para registrar todos los comandos
ejecutados como root
Las cuentas de usuarios normales son para personas que
trabajarn en el sistema. Algunas cuentas de usuario (como la
cuenta daemon) existen con el propsito de permitir
procesos como un usuario diferente a root.
2.2. ATRIBUTOS DE UNA CUENTA DE USUARIO
Cada usuario en el sistema tiene una lnea
correspondiente en el archivo /etc/passwd que describe los
atributos bsicos de la cuenta, cuyos elementos son los
siguientes:

Nombre de usuario.- El nombre nico asignado a


cada usuario.
Contrasea de usuario.- La contrasea asignada a
cada usuario.
Nmero de identificacin de usuario (UID).- Un
nmero nico asignado a la cuenta de usuario. El
UID es usado por el sistema para una variedad de
propsitos, incluyendo la determinacin de
privilegios de usuario y seguimiento de actividades.
Nmero de identificacin de grupo (GID).- Indica
el grupo principal o predeterminado del usuario.
Comentario o informacin GECOS.- Un mtodo
definido que usa el campo de comentario para
almacenar informacin de contacto
(nombre
completo, email, oficina, nmero de contacto).
GECOS, es un trmino muy antiguo.
Directorio home.- Para la mayora de los usuarios
este es un directorio nico que le ofrece un rea de
trabajo. Normalmente cada usuario es dueo de su
directorio, y con la excepcin de root, se encontrar
en el sistema bajo /home.
Shell de inicio.- Generalmente este es un programa
shell tal como /bin/bash o /bin/csh. Sin embargo, en
casos especiales se referencia un programa
alternativo. En general este campo aceptar
cualquier ejecutable.

Todas las referencias al usuario fabio sern eliminadas


desde /etc/passwd, /etc/shadow y /etc/group.
Mientras que esto elimina la cuenta, no borra el directorio
home (generalmente /home/fabio), en caso de que la cuenta
sea reestablecida ms tarde. Si se provee la opcin -r a
userdel, el directorio home ser eliminado tambin. Sin
embargo, permanecer el resto de los archivos en el sistema
que sean propiedad del usuario eliminado.
El comando usermod puede usarse para cambiar
caractersticas de una cuenta de usuario, tales como la
pertenencia a grupos, directorio home, nombre de usuario,
contrasea, shell predeterminada, ID de usuario, etc.
Su uso es bastante sencillo. Se debe tomar en cuenta que
usermod se har cargo de cualquier modificacin de los
archivos en el directorio /etc, segn sea necesario.
2.5. CUENTAS BLOQUEADAS
Linux viene con algunas cuentas del sistema que estn
bloqueadas, lo cual significa que pueden ejecutar programas,
pero no pueden iniciar sesin en el sistema y no tienen una
contrasea vlida asociada. Por ejemplo, /etc/passwd tiene
entradas como:
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

La shell nologin devuelve lo siguiente si un usuario


bloqueado intenta iniciar sesin en el sistema:
This account is currently not available.

2.3. CREACION DE CUENTAS DE USUARIOS


La creacion de una cuenta de usuario genera la ejecucion
de ciertos pasos usando algorimos predeterminados para
asignar el id de usuario y grupo, como tambien la eleccion
del shell.
Por ejemplo, el Comando:
$ sudo useradd alicia
Crear una cuenta de usuario llamada alicia
provocando en el sistema lo siguiente:
El prximo UID mayor a UID_MIN (especificado
en /etc/login.defs) es asignado de forma
predeterminada como el UID de stephane.
Tambin se crea un grupo llamado stephane con
GID=UID y se asigna como el grupo principal de
stephane.
Se crea un directorio home /home/stephane del cual
stephane es propietaria.
La shell de inicio de stephane ser /bin/bash.
Los contenidos de /etc/skel se copian a
/home/stephane. De forma predeterminada,
/etc/skel incluye archivos de inicio para bash y para
el sistema X Window.
Una entrada se pone en el campo password del
archivo /etc/shadow en la entrada de alicia, lo cual
requiere que el administrador le asigne una
contrasea a la cuenta para que la misma se pueda
usar.
2.4. MODIFICACION Y ELIMINACION DE CUENTAS DE
USUARIOS
El usuario root puede eliminar cuentas de usuario usando
el comando userdel:
$ sudo userdel fabio

O cualquier mensaje que est almacenado en


/etc/nologin.txt.
Las cuentas bloqueadas se crean con propositos
especiales, ya sea para servicios del sistema o aplicaciones; si
busca usuarios con la shell nologin en el archivo /etc/passwd
de su sistema ver cules son esas cuentas.
Tambin es posible bloquear una cuenta de usuario en
particular: $ sudo usermod -L alicia
Lo cual significa que la cuenta se mantiene en el sistema
pero que no puede iniciar sesin. Es posible desbloquearla
con la opcin -U.
Una prctica habitual es bloquear una cuenta de usuario
cada vez que dejan la organizacin o que hacen uso de una
ausencia extendida.
2.6. FICHERO /ETC/PASSWD
Contiene un registro (una lnea) por cada usuario en el
sistema
Cada registro consiste en un nmero de campos separados
por dos puntos (:). Los campos son los atributos que
mencionamos anteriormente.
Si /etc/shadow no se usa, el campo password contiene el
hash de la contrasea. Si se usa, contiene un marcador de
posicin ("x").
La convencin que la mayora de las distribuciones Linux
han usado es que cualquier cuenta con un ID de usuario
menor a 1000 se considera especial y pertenece al sistema;
las cuentas de usuario normal comienzan en 1000. El valor
exacto es definido por UID_MIN segn el valor que tiene en
/etc/login.defs.
Si no se especifica un ID de usuario al usar useradd, el
sistema asignar los UID en forma incremental, comenzando
en UID_MIN.

Adicionalmente, cada usuario obtiene un ID de grupo


primario, el cual por defecto es el mismo nmero que el
UID. Estos son llamados a veces Grupos Privados de
Usuario (UPG).
Se considera una mala prctica el editar directamente
/etc/passwd, /etc/group o /etc/shadow; en vez de eso use la
herramienta apropiada, ya sea usermod o el editor especial
vipw, ya que se ocupa bien del bloqueo de los archivos
involucrados, corrupcin de datos, etc.

2.7. FICHERO /ETC/SHADOW


El archivo /etc/shadow contiene un registro (una lnea)
por cada usuario.
daemon:*:16141:0:99999:7:::
Los campos separados por dos puntos son:
username: nombre nico de usuario
password: el valor hash (sha512) de la contrasea
lastchange: das desde el 1ero de enero de 1970
desde que la contrasea fue cambiada por ltima vez
mindays: cantidad mnima de das antes de que la
contrasea pueda ser cambiada
maxdays: cantidad mxima de das luego de lo cual
la contrasea debe ser cambiada
warn: nmero de das antes de que la contrasea
expire en que el usuario es advertido
grace: nmero de das despus de que la contrasea
ha expirado en que la cuenta es deshabilitada
expire: fecha en que la cuenta ser deshabilitada
reserved: campo reservado
El username en cada registro debe coincidir exactamente
lo que se encuentra en /etc/passwd y tambin debe estar en el
mismo orden.
El uso de /etc/shadow habilita la caducacidad de las
contraseas por usuario. Al mismo tiempo permite mantener
una mayor seguridad del hash de las contraseas.
Los permisos predeterminados de /etc/passwd son 644 (rw-r--r--); cualquiera puede leer el archivo. Esto es
desafortunadamente necesario porque los programas de
sistema y aplicaciones de usuario necesitan leer la
informacin contenida en el archivo. Estos programas de
sistema no se ejecutan como usuario root y ante cualquier
evento solo root puede modificar el archivo.
Una preocupacin en particular son el hash de las
contraseas en s. Si estn en /etc/passwd, cualquiera podra
hacer una copia de los hashes de las contraseas y usar
herramientas tales como Crack y John the Ripper para
encontrar las contraseas en texto plano a raz de su hash.
Esto es un riesgo de seguridad!
/etc/shadow tiene la configuracin de permisos en 400 (r--------), lo cual significa que solo root puede acceder al
archivo. Esto hace que sea ms difcil que alguien obtenga
los hashes de las contraseas.
A menos de que haya una buena razn para no hacerlo,
usted debera usar el archivo /etc/shadow
2.8. GESTION DE CONTRASEAS
Las contraseas pueden cambiarse con passwd; un
usuario normal puede cambiar su contrasea solamente,
mientras que root puede cambiar cualquiera. Cuando usted

escribe su contrasea, esta no se muestra, ya que desplegarla


de vuelta a la pantalla est suprimido.
Por defecto, la contrasea elegida es examinada por
pam_cracklib, la cual se encarga de que elijamos buenas
contraseas.
Un usuario normal cambiando su contrasea: $ passwd
El usuario root cuando cambia la contrasea de un
usuario, no le pide que ingrese la contrasea actual del
mismo: $ sudo passwd kevin
Los usuarios normales no tienen permitido configurar
contraseas malas, tales como las que son muy cortas o estn
basadas en palabras de diccionario. Sin embargo, root puede
hacerlo.
2.9. CHANGE: ENVEJECIMIENTO DE CONTRASEAS
Generalmente se considera importante cambiar las
contraseas peridicamente. Esto limita la cantidad de tiempo
que podra tener un intruso para crackear una contrasea,
como tambin puede usarse para bloquear cuentas que no
estn en uso. La desventaja es que los usuarios podran
encontrar que esta poltica es molesta y terminaran
escribiendo sus contraseas a medida en que las van
cambiando, lo cual facilitara su robo.
La herramienta que gestiona esto se llama chage:
chage [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E
expiredate] [-W warndays] user

Solo el usuario root puede usar chage. La nica excepcin


a esto es que cualquier usuario puede ejecutar chage -l para
ver la informacin especfica de su cuenta.
2.10. SHELL RESTRINGIDAS
Una shell restringida opera en un ambiente ms
controlado que una shell estndar, pero por lo dems
funciona normalmente. En particular:
Impide que el usuario se cambie a cualquier
directorio fuera de su directorio home.
Impide que el usuario redefina las siguientes
variables de ambiente: SHELL, ENV y PATH.
No permite que el usuario especifique la ruta
absoluta o nombres de comandos ejecutables a partir
de /.
Impide que el usuario redireccione la entrada y/o la
salida.
Existen otras restricciones, para lo cual, le mejor manera
de buscar es por RESTRICTED SHELL.
Debido a que la shell restringida ejecuta
$HOME/.bash_profile sin restricciones, el usuario no debe
tener permisos de escritura ni ejecucin en el directorio
/home
2.11. CUENTAS RESTRINGIDAS
Hay veces en las que es necesario conceder acceso a un
usuario, pero con un alcance limitado.
Una cuenta restringida:
Usa la shell restringida.
Tiene lmites en los programas de sistema
disponibles y en las aplicaciones de usuario.
Tiene lmites en los recursos del sistema.
Tiene lmites en los tiempos de acceso.

Tiene lmites en los directorios que puede acceder.


Al configurar cuentas de este tipo, se debera evitar el
agregar directorios del sistema a la variable de ambiente
PATH; esto concedera al usuario restringido la habilidad de
ejecutar otros programas del sistema, tal como una shell no
restringida.
Las cuentas restringidas son conocidas tambin como
cuentas limitadas
3. PERMISOS DE ARCHIVOS Y PROPIETARIOS
En Linux cada archivo tiene un dueo quien tiene
privilegios para leer y/o escribir, y/o ejecutar el archivo; estos
permisos se asignan de forma independientemente. Tales
permisos pueden ser otorgados sobre la base de pertenencia a
un grupo o a todos los usuarios en el sistema. Este modelo de
permisos de archivos y propietarios es el corazn del modelo
de seguridad de Control de Acceso Discrecional.

4. PROPIETARIO, GRUPO Y MUNDO


Podemos ver los permisos cuando listamos un directorio con
ls -l:
$> ls -l
-rwxrwxr-- 1 sergio ventas 9090 sep 9 14:10 presentacion
-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1
drwxr-xr-x 2 sergio sergio 4096 ago 27 11:41 videos
Veamos por partes el listado, tomando como ejemplo la
primera lnea. La primera columna (-rwxrwxr--) es el tipo de
archivo y sus permisos, la siguiente columna (1) es el nmero
de enlaces al archivo, la tercera columna (sergio) representa al
propietario del archivo, la cuarta columna (ventas) representa
al grupo al que pertenece al archivo y las siguientes son el
tamao, la fecha y hora de ltima modificacin y por ltimo el
nombre del archivo o directorio.
El primer caracter al extremo izquierdo, representa el tipo de
archivo, los posibles valores para esta posicin son los
siguientes:
- un guion representa un archivo comn (de texto,
html, mp3, jpg, etc.)
d representa un directorio
l link, es decir un enlace o acceso directo
b binario, un archivo generalmente ejecutable
Los siguientes 9 restantes, representan los permisos del
archivo y deben verse en grupos de 3.
Los tres primeros representan los permisos para el propietario
del archivo. Los tres siguientes son los permisos para el grupo
del archivo y los tres ltimos son los permisos para el resto
del mundo u otros.
rwx
rwx rwx
usuario grupo otros
En cuanto a las letras, su significado son los siguientes:
r read - lectura
w write - escritura (en archivos: permiso de
modificar, en directorios: permiso de crear archivos
en el dir.)
x execution - ejecucin

5. DERECHO DE ACCESO A ARCHIVOS


Las nueve posiciones de permisos son en realidad un bit
que o esta encendido (mostrado con su letra correspondiente)
o esta apagado (mostrado con un guin -), asi que, por
ejemplo, permisos como rwxrw-r--, indicara que los
permisos del propietario (rwx) puede leer, escribir y ejecutar
el archivo, el grupo (o sea los usuarios que esten en mismo
grupo del archivo) (rw-) podr leer y escribir pero no ejecutar
el archivo, y cualquier otro usuario del sistema (r--), solo
podr leer el archivo, ya que los otros dos bits de lectura y
ejecuccin no se encuentran encendidos o activados.

6. PERMISOS DE ARCHIVOS, SEGURIDAD Y AUTENTICACIN


Estos permisos de acceso a archivos son una parte crtica
del sistema de seguridad de Linux. Cualquier solicitud de
acceso a un archivo requiere la comparacin de las
credenciales e identidad del usuario con las del propietario
del archivo.
Esta autenticacin se concede dependiendo de uno de los
siguientes tres conjuntos de permisos, en el siguiente orden:
Si el solicitante es el propietario del archivo, se usan
los permisos del propietario.
Por otro lado, si el solicitando est en el grupo
propietario de los archivos, se examinan los
permisos del grupo.
Si lo anterior no tiene xito, se examinan los permisos
del mundo.
7. MODIFICACIN DE PERMISOS: CHMOD
La modificacin de permisos de archivos se realiza con
chmod. Solo se puede cambiar los permisos de los archivos
que son de su propiedad , a menos que sea el superusuario.
Hay diversas formas de usar chmod. Por ejemplo, para
otorgar permisos de ejecucin al propietario y al mundo, y
eliminar el permiso de escritura del grupo:
$ ls -l a_file
-rw-rw-r-- 1 coop coop 1601 Mar 9 15:04 a_file
$ chmod uo+x,g-w a_file
$ ls -l a_file
-rwxr--r-x 1 coop coop 1601 Mar 9 15:04 a_file
donde u representa el usuario (propietario), o a otros
(mundo) y g el grupo.
6.1 Permisos en formato numrico octal

La combinacin de valores de cada grupo de los usuarios


forma un nmero octal, el bit x es 2 elevado 0 es decir 1, el bit
w es 2 elevado a 1 es decir 2, el bit r es 2 elevado a 2 es decir
4, tenemos entonces:
r=4
w=2
x=1

La combinacin de bits encendidos o apagados en cada grupo


da ocho posibles combinaciones de valores, es decir la suma
de los bits encendidos:

- - - = 0 no se tiene ningn permiso


- - x = 1 solo permiso de ejecucin
- w - = 2 solo permiso de escritura
- w x = 3 permisos de escritura y ejecucin
r - - = 4 solo permiso de lectura
r - x = 5 permisos de lectura y ejecucin
r w - = 6 permisos de lectura y escritura
r w x = 7 todos los permisos establecidos, lectura, escritura y
ejecucin

Cuando se combinan los permisos del usuario, grupo y otros,


se obtienen un nmero de tres cifras que conforman los
permisos del archivo o del directorio. Esto es ms fcil
visualizarlo con algunos ejemplos:
Permisos

Valor

Descripcin

rw-------

600

El propietario tiene permisos de


lectura y escritura.

rwx--x--x

711

El propietario lectura, escritura y


ejecucin, el grupo y otros solo
ejecucin.

rwxr-xr-x

755

El propietario lectura, escritura y


ejecucin, el grupo y otros pueden
leer y ejecutar el archivo.

rwxrwxrwx

777

El archivo puede ser leido, escrito


y ejecutado por quien sea.

400

Solo el propietario puede leer el


archivo, pero ni el mismo puede
modificarlo o ejecutarlo y por
supuesto ni elgrupo ni otros
pueden hacer nada en el.

640

El usuario propietario puede leer y


escribir, el grupo puede leer el
archivo y otros no pueden hacer
nada.

r--------

rw-r-----

Habiendo entendido lo anterior, es ahora fcil cambiar los


permisos de cualquier archivo o directorio, usando el
comando chmod (change mode), cuya sintaxis es la siguiente:
chmod [opciones] permisos archivo[s], algunos ejemplos:
$> chmod 755 reporte1
$> chmod 511 respaldo.sh
$> chmod 700 julio*
$> chmod 644 *
Los
ejemplos
anterior
establecen
los
permisos
correspondientes que el usuario propietario desea establecer,
el tercer ejemplo (chmod 700 julio*) cambiar los permisos a
todos los archivos que empiezen con julio (julio01, julio02,
julio_respaldo, etc.) debido al caracter '*' que es parte de las
expresiones regulares que el shell acepta, e indica lo que sea.
El ltimo ejemplo por lo tanto cambiar los permisos a los
archivos dentro del directorio actual.
Una opcin comn cuando se desea cambiar todo un rbol de
directorios, es decir, varios directorios anidados y sus
archivos correspondientes, es usar la opcin -R, de
recursividad:
$> chmod -R 755 respaldos/*

Esto cambiar los permisos a 755 (rwxr-xr-x) del directorio


respaldos y de todos los subdirectorios y archivos que estn
contenidos dentro de este.

6.2 Estableciendo permisos en modo simblico


Otra manera popular de establecer los permisos de un archivo
o directorio es a travs de identificadores del bit (r,w, o x) de
los permisos, como ya se vi anteriormente, pero ahora
identificando adems lo siguiente:

Al usuario con la letra u


Al grupo con la letra g
A otros usuarios con la letra o
Cuando nos referimos a todos (usuario, grupo, otros)
con la letra a (all, todos en ingls)
El signo + para establecer el permiso
El signo - para eliminar o quitar el permiso
La sintaxis es muy simple chmod augo[+|-]rwx[,...] archivo[s],
as por ejemplo, si queremos que otros tengan permiso de
escritura sera chmod o+w archivo, todos los usuarios con
permisos de ejecucin chmod a+x archivo.
En este modo de establecer permisos, solo hay que tomar en
cuenta que partiendo de los permisos ya establecidos se
agregan o se quitan a los ya existentes. Vemoslo con
ejemplos su manera de trabajar:
Actual

chmod

Resultado Descripcin

rw-------

a+x

rwx--x--x

Agregar a todos (all)


permisos de escritura.

rwx--x--x

go-x

rwx------

Se eliminan permiso de
ejecucin para grupo y
otros.

rwxr-xr-x

u-x,go-r

Al usuario se le quita
rw---x--x ejecucin, al grupo y
otros se le quita lectura.

rwxrwxrwx u-x,go-rwx

rw-------

Al usuario se le elimina
ejecucin, al grupo y
otros se eliminan todos
los permisos.

r--------

rw-r--r--

A todos se les agrega


lectura, al usuario se le
agrega escritura.

u---rw---x
rw,g+w,o+x

Al usuario se le
eliminan lectura y
escritura, al grupo se le
agrega lectura y otros
se le agrega ejecucin.

rw-r-----

a+r,u+w

8. CAMBIANDO PROPIETARIO Y GRUPO


Volviendo a mostrar el listado al inicio de este artculo:
$> ls -l

-rwxrwxr-- 1 sergio ventas


9090 sep 9 14:10
presentacion
-rw-rw-r-- 1 sergio sergio 2825990 sep 7 16:36 reporte1
drwxr-xr-x 2 sergio sergio 4096 ago 27 11:41 videos

Vemos en la tercera y cuarta columna al usuario


propietario del archivo y al grupo al que pertence, es posible
cambiar estos valores a travs de los comandos chown
(change owner, cambiar propietario) y chgrp (change group,
cambiar grupo). La sintaxis es muy sencilla: chown usuario
archivo[s] y chgrp grupo archivo[s]. Adems al igual que con
chmod, tambin es posible utilizar la opcin -R para
recursividad.

8.1 SUID

En vez de la 'x' en el grupo del usuario encontramos ahora


una 's' (suid). passwd es un comando propiedad de root, pero
sin embargo debe de poder ser ejecutado por otros usuarios,
no solo por root. Es aqui donde interviene el bit SUID, donde
al activarlo obliga al archivo ejecutable binario a ejecutarse
como si lo hubiera lanzado el usuario propietario y no
realmente quien lo lanz o ejecut. Es decir, es poder invocar
un comando propiedad de otro usuario (generalmente de
root) como si uno fuera el propietario.

8.2 SGID

#> ls -l presentacion
-rwxrwxr-- 1 sergio ventas
presentacion
#> chown juan presentacion
#> ls -l presentacion
-rwxrwxr-- 1 juan ventas
presentacion
#> chgrp gerentes presentacion
#> ls -l presentacion
-rwxrwxr-- 1 juan gerentes
presentacion

9090 sep

9 14:10

9090 sep

9 14:10

9090 sep

9 14:10

Solo el usuario root puede cambiar usuarios y grupos a su


voluntad sobre cualquier usuario, queda claro que habiendo
ingresado al sistema como usuario normal, solo podr hacer
cambios de grupos, y eso solo a los que pertenezca.
Una manera rpida para el usuario root de cambiar
usuario y grupo al mismo tiempo, es con el mismo comando
chown de la siguiente manera:
#> chown juan.gerentes presentacion (o en vez de punto,
con : puntos)
#> chown juan:gerentes presentacion

As, cambiar el usuario.grupo en una sola instruccin.


9. BITS SUID, SGID Y DE PERSITENCIA (STICKY BIT)
An hay otro tipo de permisos que hay que considerar. Se
trata del bit de permisos SUID (Set User ID), el bit de
permisos SGID (Set Group ID) y el bit de permisos de
persistencia (sticky bit). Para entender los dos primeros el
SUID y el SGID veamos los permisos para un comando de
uso comn a todos los usuarios, que es el comando passwd,
que como se sabe sirve para cambiar la contrasea del
usuario, y puede ser invocado por cualquier usuario para
cambiar su propia contrasea, si vemos sus permisos
observaremos un nuevo tipo de permiso:
#> ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 feb 12 2006 /usr/bin/passwd

El bit SGID funciona exactamente igual que el anterior


solo que aplica al grupo del archivo. Es decir si el usuario
pertenece al grupo 'ventas' y existe un binario llamado
'reporte' que su grupo es 'ventas' y tiene el bit SGID activado,
entonces el usuario que pertenezca al grupo 'ventas' podr
ejecutarlo. Tambin se muestra como una 's' en vez del bit 'x'
en los permisos del grupo.
8.3 STICKY BIT (Bit de persistencia)

Este bit se aplica para directorios como en el caso de /tmp


y se indica con una 't':
#> ls -ld /tmp
drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp
Puede apreciarse la 't' en vez de la 'x' en los permisos de
otros. Lo que hace el bit de persistencia en directorios
compartidos por varios usuarios, es que el slo el propietario
del archivo pueda eliminarlo del directorio. Es decir
cualquier otro usuario va a poder leer el contenido de un
archivo o ejecutarlo si fuera un binario, pero slo el
propietario original podr eliminarlo o modificarlo. Si no se
tuviera el sticky bit activado, entonces en estas carpetas
pblicas, cualquiera podra eliminar o modificar los archivos
de cualquier otro usuario.

8.4 Estableciendo los permisos especiales


Para cambiar este tipo de bit se utiliza el mismo comando
chmod pero agregando un nmero octal (1 al 7) extra al
principio de los permisos, ejemplo:
#> ls -l /usr/prog
-r-x--x--x 24 root root 4096 sep 25 18:14 prog
#>chmod 4511 /usr/prog
#> ls -l /usr/prog
-r-s--x--x 24 root root 4096 sep 25 18:14 prog
Ntese que el valor extra es el '4' y los dems permisos se
dejan como se quieran los permisos para el archivo. Es decir,
los permisos originales en este ejemplo eran 511 (r-x--x--x),
y al cambiarlos a 4511, se cambi el bit SUID reemplazando
el bit 'x' del usuario por 's'.
Los posibles valores seran los siguientes:
- - = Predeterminado, sin permisos especiales.
- - - - - - 0 No se requiere indicar.
- - -

Bit de persistencia, sticky bit

-----t

- - =
--s--- 2

Bit sgid de grupo

- - =
--s--t 3

Bit sgid y sticky

- - s
=
------ 4

Bit suid

- - s
=
-----t 5

Bit suid y sticky

- - s
=
--s--- 6

Bit suid y sgid

- - s
=
Bit suid, sgid y sticky
--s--t 7
MUY IMPORTANTE: Algo sumamente delicado y que
se tiene que tomar muy en cuenta es lo que decidas establecer
con permisos de bit SUID y SGID, ya que recuerda que al
establecerlos de esta manera, cualquier usuario podr
ejecutarlos como si fueran el propietario original de ese
programa. Y esto puede tener consecuencias de seguridad
severas en tu sistema. Siempre considera y reconsidera si
conviene que un usuario normal ejecute aplicaciones propias
de root a travs del cambio de bits SUID o SGID. Mejores
alternativas pueden ser los comandos sudo y su.
En sistemas con varios usuarios, esto es peligroso, se
debe de tener cuidado que archivos se dejan con este tipo de
permisos, ya que pueden ser mal usuados o incluso
'troyanizados', es decir, sustituidos por otro idnticos en
funcionalidad, pero cuando se ejecuta, adems de hacer su
trabajo puede por ejemplo abrir un puerto, copiar archivos,
establecer una conexin, eliminar archivos, lo que sea, ya que
el archivo pertenece a root!!!.
Para encontrar ficheros o archivos con los bits de
permisos suid y sgid activadas, la manera ms fcil y rpida
es con el comando find:
#> find / -perm -4000 -ls
5931076 96 -rwsr-xr-x 1 root root
90192 oct 11
10:29 /bin/mount
5931116 24 -rwsr-xr-x 1 root root
23156 sep 12
12:13 /bin/mount.cifs3
5931053 24 -rwsr-xr-x 1 root root
20824 sep 6
15:24 /bin/su
5931079 76 -rwsr-xr-x 1 root root
72020 oct 11
10:29 /bin/umount
5931062 32 -rwsr-xr-x 1 root root
32520 sep 19
16:46 /bin/ping
2916530 72 -r-sr-xr-x 1 root root
67080 sep 26
08:31 /sbin/mount.nfs
2916364 20 -rwsr-xr-x 1 root root
18816 sep 20
09:51 /sbin/unix_chkpwd
2916363 16 -rwsr-xr-x 1 root root
13020 sep 20
09:51 /sbin/pam_timestamp_check
5358576 128 ---s--x--x 2 root root
126344 sep 13
11:43 /usr/bin/sudo
Indicamos que find busque desde la raz '/' del sistema de
archivos, todo lo que tenga permisos '-perm' del tipo SUID,
es decir '-4000' y despliegue el resultado en formato de ls -l 'ls'

Solo cambiamos un poco para buscar los que tengan el bit


SGID:
#> find / -perm -2000 -ls
786770 4 drwxrwsr-x 2 root mail
4096 oct 29
03:51 /var/log/mailman
786768 4 drwxrwsr-x 2 root mail
4096 mar 7
2007 /var/lib/mailman/qfiles
738370 4 drwxrwsr-x 2 root mail
4096 oct 28
21:42 /var/lib/mailman/data
819514 4 drwxrwsr-x 2 root adm
4096 sep 12
12:12 /var/lib/samba/printers/WIN40
134628 4 drwxrwsr-x 2 root mail
4096 jul 27
10:17 /var/spool/mail
2916472 4 -rwxr-sr-x 1 root root
3908 oct 3
16:49 /sbin/netreport
9523868 12 -rwxr-sr-x 1 root tty
8912 oct 11
10:29 /usr/bin/write
9530735 84 -rwsr-sr-x 1 root mail
79944 sep 16
03:17 /usr/bin/procmail
5358037 88 -r-xr-sr-x 1 root games
85536 sep 19
04:55 /usr/bin/same-gnome
O agrupamos los dos permisos entre parntesis con el
caracter de escape '\' y con la opcin '-o' que indica 'este o
aquel' un or booleno pues.
#> find / \( -perm -4000 -o -perm 2000 \) -ls
Como los listados suelen ser bastante largos, puedes
redireccionar la salida del comando a un archivo con '>', para
ser analizado con calma.
#> find / \( -perm -4000 -o -perm 2000 \) -ls >
archivos_con_suid_sgid.txt
Decidir de que ejecutables eliminar estos bits, es tedioso,
pero tu sistema ser mucho ms seguro al restringir lo que los
usuarios normales pueden ejecutar.
10. PERMISOS ESTABLECIDOS CON UMASK
El comando umask establece la mscara de permisos de
directorio y de archivos. Es decir los nuevos directorios y
archivos que se crean obtienen el valor de los permisos a
partir de los valores de umask.
$> umask
0002
(o en formato simblico con la opcin -S)
$> umask -S
u=rwx,g=rwx,o=rx

Lo anterior indica que un directorio y archivos ejecutables se


crearn con los permisos 775 y los archivos comunes con los
permisos 664. Esto se logra restando de 777 el valor de umask
(777-002) y (666-002) respectivamente. El primer valor de
umask corresponde para valores de Sticky bit, GUID o SUID,
que por default es 0.
$> umask
0002
(Creamos un archivo y segn la mscara debemos de tener
666-002=664 o rw-rw-r--)
$> touch archivo
$> ll archivo
-rw-rw-r-- 1 sergio sergio 0 sep 25 20:14 archivo

(Ahora creamos un directorio y segn la mscara debemos de


tener 777-002=775 o rwxrwxr-x)
$> mkdir dir
$> ls -ld dir
drwxrwxr-x 2 sergio sergio 4096 sep 25 20:20 dir

Para establecer el valor de la mscara, simplemente se usa el


mismo comando umask seguido del valor de mscara que se
desee:
$> umask 0022

Para dejarlo fijo en la sesin, entonces conviene agregarlo a


.bash_profile o .bash_rc de nuestro directorio de inicio.

11. ACL EN SISTEMA DE ARCHIVOS


Linux tiene una implementacin completa de ACLs POSIX
(listas de control de acceso), la cual extiende el modelo
simple de usuario, grupo, mundo, lectura, escritura y
ejecucin.
Privilegios en particular pueden ser concedidos a usuarios
especficos o grupos de usuarios al acceder ciertos objetos o
clases de objetos. Es posible compartir archivos y directorios
sin usar permisos 777.
Mientras que el kernel Linux habilita el uso de ACLs, an
debe ser implementado en el sistema de archivos en
particular. Todos los sistemas de archivos principales usados
en las distribuciones modernas de Linux incorporan las
extensiones ACL, y es posible usarlas con la opcin -acl al
montar el sistema de archivos. Durante la instalacin del
sistema de archivos se crea un conjunto de ACLs por defecto
11.1. LISTADO Y CONFIGURACION DE ACLS

Para establecer el valor predeterminado en un directorio:


$ setfacl -m d:u:isabelle:rx somedi
12. SERVICIOS
Linux ofrece multitud de servicios o servidores, estos pueden
iniciar o arrancar junto con la carga del sistema o pueden
despus ser puestos a funcionar cuando se requieran (es lo
mejor). Parte esencial de la administracin de sistemas Linux
es continuamente trabajar con los servicios que este
proporciona, cosa que es bastante sencilla. En este tutorial
aprenders todo lo necesario sobre como
inicar/detener/reinicar etc. los servicios de tu equipo
GNU/Linux.

12.1

INICIANDO SERVICIOS
DIRECTORIO INIT.D

MANUALMENTE,

Dentro de esta carpeta ubicada en /etc o en /etc/rc.d


dependiendo de la distribucin, se encuentran una serie de
scripts que permiten iniciar/detener la gran mayora de los
servicios/servidores que estn instalados en el equipo. Estos
scripts estn programados de tal manera que la mayora
reconoce los siguientes argumentos:
start
stop
restart
status
Los argumentos son auto descriptivos, y tienen permisos de
ejecucin, entonces siendo root es posible iniciar un servicio
de la siguiente manera, por ejemplo samba:

Para ver las ACLs:


$ getfacl file|directory
Ejemplo:

#> /etc/rc.d/init.d/smb start

$ getfacl file1

Starting Samba SMB daemon

Para configurar ACLs:


$ setfacl options permissions file|directory
Ejemplos:
$ setfacl -m u:isabelle:rx /home/stephane/file1
$ setfacl -x u:isabelle

$ setfacl -x u:isabelle /home/stephane/file1

/home/stephane/file

Tenga en cuenta que los archivos nuevos heredan la ACL


predeterminada (si ha sido configurada) desde el directorio en
el cual residen. Note tambin que mv y cp -p mantienen las
ACLs.
Para eliminar una ACL:

[OK]

Solo que hay que cambiar start por stop | restart | status para
detenerlo, reiniciarlo (releer archivos de configuracin) o
checar su estatus. Ahora bien si ests parado dentro del
directorio puedes hacerlo asi.
#> pwd
/etc/rc.d/init.d
#> /smb stop
Shutting down Samba SMB daemon

[OK]

Se trata de tan solo un script as que con el permiso de


ejecucin (x) puedes ejecutarlo con. / seguido del nombre del

servicio, sin espacios y despus el argumento que necesites,


iniciarlo, detenerlo etc.

$> grep initdefault /etc/inittab


id:5:initdefault:
# runlevel 0 is System halt (Do not use this for initdefault!)

13. EL COMANDO SERVICE


En varias distros, como Fedora o RedHat, existe el comando
service, este comando permite tambin iniciar y/o detener
servicios, de hecho funciona exactamente igual a como si
escribiramos la ruta completa haca el directorio init.d, con
service se indica de la siguiente manera:

# runlevel 6 is System reboot (Do not use this for


initdefault!)

En muchos casos es conveniente que un servidor o servicio


inicien junto con el arranque del equipo en si, por ejemplo el
servidor web Apache o alguna base de datos, esto es para que
estn disponibles todo el tiempo y no se requiera de
intervencin del administrador para iniciarlos.

La salida es de una distro OpenSuse 10. Como se puede


apreciar existe una lnea que comienza con id, seguido por 5
que indicara entonces el nivel por default del sistema, basta
con cambiar este valor con cualquier editor, reiniciar el
equipo y se entrara a otro nivel, por ejemplo el 3 que tiene
una funcionalidad completa pero sin sistema de ventanas X
Window (ideal para equipos obsoletos o con pocos recursos
de hardware). Ntese que en el listado previo aparecen dos
lneas de comentarios, las que empiezan con #, que hacen la
advertencia de no usar nunca los niveles 0 y 6 de initdefault,
ya que jams arrancara el equipo. Se tendra que usar un
mtodo de rescate. (He aqui la importancia de jams dejar una
terminal abandonada con una sesin de root abierta ya que
podra llegar un bromista y rpidamente cambiar la lnea
initdefault a 6 por ejemplo, y despus estara muy divertido
viendo a un pobre administrador novato tratndose de
explicar porque diablos el equip se resetea hasta el infinito
sin nunca entrar a una pantalla de login).

En Linux, a diferencia de otros sistemas operativos, es posible


configurarlo en base a niveles de ejecucin (run levels), cada
nivel de ejecucin (en la mayora de las distros son 7), inicia o
detiene (Start o Kill) ciertos servicios. Estos niveles son los
siguientes:

El nivel de ejecucin actual del sistema puede ser consultado


con who -r y con el comando runlevel, este ltimo muestra
dos nmeros el primero es el nivel previo en que se estaba y
el segundo el nivel actual, si no se ha cambiado de nivel
aparece una N.

#> service mysql status


Checking for service MySQL: stopped
Si se desea iniciarlo:
#> service mysql start
Starting service MySQL

13.1

[OK]

Iniciando servicios desde el arranque del sistema

0 Detener o apagar el sistema


1 Modo monousuario, generalmente utilizado para
mantenimiento del sistema
2 Modo multiusuario, pero sin soporte de red
3 Modo multiusuario completo, con servicios de red
4 No se usa, puede usarse para un inicio personalizado
5 Modo multiusuario completo con inicio grfico ( X
Window)
6 Modo de reinicio (reset)

Por ejemplo el nivel 0, que apaga el equipo, mata o detiene a


todos los procesos del sistema, todos los servicios, lo mismo
hace el 6 con la diferencia que despus inicia un script que
permite reiniciar el sistema. El nivel por omisin o por default
del sistema esta definifo en /etc/inittab, en la lnea initdefault:

14. COMANDO INIT


Este comando te permite cambiar el nivel de ejecuccin actual
por otro, es decir puedes estar en el nivel 3 y en cualquier
momento pasar al 5 o viceversa, o entrar a un modo
monousuario para tareas de mantenimiento como utilizar fsck.
Esto sin necesidad de cambiar la lnea initdefault en
/etc/inittab, simplemente usando el comando init:
#> init 3
Puedes reiniciar el equipo con init 6 o incluso apagarlo con
init 0, de hecho shutdown y otros comandos como halt, lo que
hacen es invocar a init para apagar el equipo mas otras tareas
como sincronizar buffers, etc. Si ests en una mquina que
tenga particiones con sistemas de archivos ext2 o de windows
como FAT, si invocas init 0 o init 6 tal cual, corres el riesgo de
perder datos que no estn guardados en disco todava, para
esto combina init 0 con el comando sync que escribe lo que
este en buffers de memoria a disco:

#> sync; sync; init 0


Con un doble sync nos aseguramos que todo se escriba en
disco antes de comenzar a apagar.
15. LOS DIRECTORIOS RC
Debajo de /etc se encuentra el directorio rc.d que a la vez
contiene un directorio para cada nivel de ejecuccin, asi
tenemos rc0.d, rc1.d, rc2.d, rc3.d, etc. Hay algunas distros que
estos directorios estn ubicados directamente en /etc. Como
ya te imaginaras, cada uno de estos directorios contiene
scripts (o mas bien enlaces a scripts) que apuntan al directorio
init.d, entonces el comando init (ya sea ejecutado
manualmente o cuando se inicia el sistema), dependiendo del
nivel indicado leera cada uno de los enlaces o accesos
directos del directorio respectivo.
Ahora bien, un ejemplo (parcial) tpico de estos directorios
puede ser el siguiente, tomado de rc3.d

scripts de arranque de los servicios o servidores. Tambin,


todos los enlaces comienzan con K (kill) o con S (start), es
pues fcil deducir que los que comienzan con K son scripts
que recibirn el argumento stop y los que comienzan con S el
de start, es decir, se inician. Esta gran simplicidad ofrece una
enorme potencia al momento de configurar servicios ya que
basta con agregar o quitar enlaces con el formato indicado
para personalizar los niveles de ejecuccin a nuestro gusto.
Despus de la K o S sigue un nmero consecutivo, seguido
generalmente del nombre del servicio que afectan, el nmero
secuencial es simplemente el orden en que se leeran los
scripts, primero los K comenzando con el 01 y haca adelante
y despus los S. Entonces si por ejemplo no queremos que se
inicie el samba en el nivel 3 bastara con borrar su enlace en
este directorio:

#> pwd
/etc/rc.d/rc3.d

lrwxrwxrwx 1 root root


../init.d/dbus

7 Oct 20 20:05 K22dbus ->

lrwxrwxrwx 1 root root


../init.d/resmgr

9 Oct 20 20:05 K22resmgr ->

lrwxrwxrwx 1 root root


../init.d/fbset

8 Oct 20 20:05 K24fbset ->

lrwxrwxrwx 1 root root


../init.d/random

9 Oct 20 20:05 K24random ->

lrwxrwxrwx 1 root root


../init.d/fbset

8 Oct 20 18:23 S01fbset ->

lrwxrwxrwx 1 root root


../init.d/random

9 Oct 20 18:22 S01random ->

lrwxrwxrwx 1 root root


../init.d/dbus

7 Oct 20 18:29 S03dbus ->

lrwxrwxrwx 1 root root


../init.d/resmgr

9 Oct 20 18:23 S03resmgr ->

Y listo, el servidor samba ya no arrancara cuando entremos


en este nivel de ejecuccin. Si por lo contrario lo que
deseamos es iniciar (o apagar) un servicio, basta con crear su
enlace en el directorio respectivo:

#> pwd
/etc/rc.d/rc5.d
#> ln -s /etc/rc.d/init.d/mysql S90mysql
#> ls -l S90mysql

lrwxrwxrwx 1 root root 12 Oct 20 18:24 S04boot.udev ->


../init.d/boot.udev
lrwxrwxrwx 1 root root 10 Oct 20 21:16 S05network ->
../init.d/network
lrwxrwxrwx 1 root root
../init.d/syslog

#> rm S54smb

lrwxrwxrwx 1 root root


../init.d/mysql

9 Oct 20 18:23 S90mysql ->

Con esto la siguiente vez que iniciemos el equipo o


cambiemos a nivel 5 con init, tambin se iniciar el servidor
de la base de datos MySQL. El nmero 90 es escogido al azar
entre 01 y 99 es simplemente el orden en que sern iniciados
o detenidos los servicios.

9 Oct 20 18:23 S06syslog ->


16. COMANDO CHKCONFIG

Ntese que todos son enlaces al directorio init.d que como ya


se vio previamente es donde realmente estn ubicados los

Lo anterior puede resultar engorroso para ms de alguno pero

es la nica manera si no se tienen herramientas grficas o de


lnea de comandos para configurar los servicios mas
gilmente, y precisamente una de estas herramientas de lnea
de comandos es chkconfig que permite configurar que
servicios arrancan/detienen en cada nivel de ejecucin.
Aclaracin: chkconfig no inicia ni detiene servicios al
momento (excepto aquellos bajo xinetd), tan solo crea o
elimina precisamente los enlaces de los que se habl en el
punto anterior de una manera ms amigable. Si lo que se
quiere es iniciar o detener el servicio en tiempo real o
manualmente hay que usar service o directamente el script
con su argumento conveniente tal como se explic
anteriormente.

sane-port:

Veamos ejemplos que muestran como trabajar con chkconfig.

vsftpd:

Con la opcin --list nos da una lista completa de todos los


servicios instalados y para cada nivel si arrancar (on) al
entrar a ese nivel o se detendr (off) o simplemente no se
iniciara. Ntese que al final de la lista vienen los servicios que
dependen del superservidor xinetd.

off

servers:

off

services:

off

swat:

on

systat:

off

tftp:
time:
time-udp:
vnc:

off
off
off
off
off

Si se indica como argumento el nombre de algn servicio nos


regresar su estatus:

#> chkconfig smb


smb on

#> chkconfig --list


apache2

0:off 1:off 2:off 3:off 4:off 5:off 6:off

bluetooth

0:off 1:off 2:off 3:off 4:off 5:off 6:off

cron

0:off 1:off 2:on 3:on 4:off 5:on 6:off

cups

0:off 1:off 2:on 3:on 4:off 5:on 6:off

dhcpd
ldap

0:off 1:off 2:off 3:off 4:off 5:off 6:off


0:off 1:off 2:off 3:off 4:off 5:off 6:off

mysql

0:off 1:off 2:off 3:off 4:off 5:off 6:off

named

0:off 1:off 2:off 3:off 4:off 5:off 6:off

network

0:off 1:off 2:on 3:on 4:off 5:on 6:off

nfs

Sin ningn argumento nos dar una lista con el status de todos
los servicios:

#> chkconfig
httpd off
mysql on
smb

on

Se desea que el servidor web apache (httpd) inicie cuando se


entra en el nivel 5, entonces usamos la opcin --level:

0:off 1:off 2:off 3:on 4:off 5:on 6:off

quotad
smb

0:off 1:off 2:off 3:off 4:off 5:off 6:off

#> chkconfig --level 5 httpd on

0:off 1:off 2:off 3:on 4:off 5:on 6:off

vmware
6:off

0:off 1:off 2:on 3:on 4:off 5:on

xinetd

0:off 1:off 2:off 3:on 4:off 5:on 6:off

zebra

0:off 1:off 2:off 3:off 4:off 5:off 6:off

xinetd based services:


rsync:

off

La base de datos MySQL no se desea que inicie en los niveles


3 y 5, solo hasta que el administrador decida arrancarla:

#> chkconfig --level 35 mysql off

17. REFERENCIAS BIBLIOGRFICAS

http://www.escomposlinux.org/iarenaza/articuloacls/acls-linux-samba.
http://rm-rf.es/acl-access-control-list-en-sistemas-deficheros-gnulinux/
http://www.linuxtotal.com.mx/index.php?cont=info_ad
mon_011
First Monday Special Issue #2: Open Source
October 2005 [En lnea] Disponible en:
http://firstmonday.org/issues/special10_10/ [fecha de
consulta: 14 de Septiembre de 2016]
FREE SOFTWARE FUNDATION. Nosotros
hablamos de software libre [En lnea]. s.l:
fsfeurope.org, 2005 [Fecha de consulta: 14 de
Septiembre de 2016]. Disponible En:
http://www.fsfeurope.org/about/about.es.html
FSF The Free Software Foundation [En lnea]
Disponible en: http://www.fsf.org/ [Fecha de
consulta: 14 de Septiembre de 2016]
Fundacin Va Libre [En lnea] Disponible en:
http://www.vialibre.org.ar [fecha de consulta: 14 de
Septiembre de 2016]

You might also like