Vous êtes sur la page 1sur 8

ADMINISTRACIN DE SISTEMAS

Prctica 1. Usuarios y proteccin en Linux


Introduccin
El objetivo de la prctica consiste en la utilizacin de los mecanismos que implementa Linux
para la gestin de usuarios y grupos en un sistema de estas caractersticas. Adems se
pretende familiarizar a los administradores con los mecanismos de proteccin habilitados en
este sistema operativo. En particular, se abordarn los siguientes conceptos:
Usuarios y grupos primarios
Grupos suplementarios
Reglas de proteccin de ficheros y directorios
Utilizacin de los bits SETUID y SETGID en ficheros ejecutables
Utilizacin del bit SETGID en directorios
Utilizacin del sticky bit
Listas de control de acceso (ACLs)
Cuotas de disco
Para ello, se plantea un caso prctico de una organizacin que utiliza un sistema Linux como
soporte informtico.
Reglas de seguridad en la Organizacin
El plan de seguridad de la Organizacin cubre los siguientes aspectos:
1. Contraseas:
Los usuarios deben cambiar sus contraseas cada 3 meses.
Es necesario notificar a los usuarios 1 da antes de que su contrasea caduque.
Transcurridos 2 das desde la caducidad del password, la cuenta ha de quedar
desactivada.
En la prctica, la contrasea de cada usuario coincidir con el nombre de usuario.
2. Directorio de cada usuario
Todo usuario del sistema debe poseer un subdirectorio del directorio /home cuyo
nombre debe coincidir con el de la cuenta del usuario
En este directorio, el usuario debe poder crear y borrar ficheros y directorios, pero no
debe poder modificar los permisos de su directorio de conexin.
Ningn otro usuario del sistema podr acceder a dicho directorio ni a su contenido
Cada usuario tendr una cuota de disco de 50 Mb que podr sobrepasar
temporalmente (2 das).
3. Proyectos en ejecucin
La Organizacin tiene varios proyectos en curso. Para estos proyectos, se ha de cumplir:
Cada proyecto debe tener un directorio bajo el directorio /export/proyectos donde se
almacenar la documentacin asociada al mismo.
Todos los usuarios que participan en un proyecto deben tener la posibilidad de leer,
modificar, crear y borrar los archivos que forman parte del proyecto
Cuando un usuario cree un archivo en el directorio del proyecto, por defecto, ste
debe poder ser ledo, modificado o borrado por cualquier otro usuario del mismo
proyecto
Ningn otro usuario podr acceder a estos directorios
Existir un directorio /export/proyectos/comun donde se almacenar informacin
comn a todos los proyectos de tal forma que todos los usuarios puedan aadir y
modificar informacin a este directorio, pero slo el propietario de cada carpeta
pueda eliminarla.
4. Ejecutivos
En la empresa existen varios ejecutivos que tienen asignada la evaluacin de algunos
de los proyectos existentes con las siguientes restricciones:
Los ejecutivos asociados a un determinado proyecto podrn leer la informacin de ese
proyecto
Los ejecutivos que no pertenezcan a un proyecto no deben poder acceder
directamente a los directorios de los proyectos
Para que estos ejecutivos puedan controlar el estado de cada proyecto, deben existir
en el directorio /usr/local/bin tantos programas como proyectos existan.
Estos programas internamente han de realizar un ls sobre el directorio del proyecto
correspondiente
El programa que permite evaluar cada proyecto, debe cumplir lo siguiente:
- Debe poder ser ejecutado nicamente por los ejecutivos de la organizacin.
- Debe tener asignado los permisos suficientes para poder ejecutar el ls sobre
el directorio correspondiente.
Situacin actual de la Organizacin
Actualmente, se tiene la siguiente situacin:
Existen 3 proyectos: Aeropuerto, Centro Comercial y Parque
Dos ejecutivos: ejec1 y ejec2
La distribucin de los usuarios por proyectos es de la siguiente forma:

Usuario
Proyecto
Aeropuerto Centro Comercial Parque
usu1
usu2
usu3
usu4
usu5
usu6

La asociacin de ejecutivos a proyectos es:

Usuario
Proyecto
Aeropuerto Centro Comercial Parque
ejec1
ejec2

Opcional:
Se valorar cualquier aportacin extra del alumno: limitacin de horas de conexin, acceso
restringido a ciertos terminales, creacin de scripts para la automatizacin,

Para la realizacin de la prctica se ha desarrollado el siguiente script:
#---------------------------------------------------------------
#El script empieza a partir de aqu:

#! /bin/bash
#Cuentas de usuario que vamos a crear
declare -a Nombreusu=(usu1 usu2 usu3 usu4 usu5 usu6 marta);
#proyectos
declare -a Proyectos=(Aeropuerto CentroComercial Parque);
#y usuarios asociados a cada proyecto
declare -a Aeropuerto=(usu2 usu3 usu4 usu5 marta);
declare -a CentroComercial=(usu1 usu3 usu4 usu5);
declare -a Parque=(usu5 usu6);

#cuentas de ejecutivos
declare -a Nombreeje=(ejec1 ejec2 marta);
#sus proyectos
declare -a Proyectoseje=(AeropuertoE CentroComercialE ParqueE);
#Los ejecutivos asociados a cada proyecto
declare -a AeropuertoE=(ejec1 ejec2);
declare -a CentroComercialE=(ejec2);
declare -a ParqueE=(ejec1 marta);



for j in "${Nombreusu[@]}"
do
echo "Creando cuenta de ${j}"
#creamos la cuenta de usuario con el nombre dado, por defecto su home es su nombre
useradd $j -f2
#hacemos que su directorio personal pertenezca a root y a su grupo de
#usuario, en el que solo debera estar el usuario
chown root:$j /home/$j
#luego le damos permisos al grupo para que el usuario pueda escribir en el
chmod 770 /home/$j
#le asignamos como password el nombre del usuario
echo $j | passwd --force --stdin $j
#Cambiamos las propiedades de la contrasea con chage
#Desactivamos las cuentas dos dias despues de la fecha de expiracin
#Avisamos durante un dia
#Cambiar contraseas cada 3 meses (90 dias)
chage -I 2 -W 1 -M 90 $j
#cuotas para los usuarios
#suponemos que han sido activadas previamente a nivel de FS
#y configuradas, aqu solo va la configuracin del usuario
setquota -u $j 51200 51200 0 0 -a
setquota -T -u $j 172800 172800 -a

done
#primero creamos la carpeta /export y sus subcarpetas
mkdir /export
mkdir /export/proyectos
mkdir /export/proyectos/comun
#le damos sus permisos
chmod -R 777 /export
#ponemos el sticky bit en la carpeta comun
chmod 1777 /export/proyectos/comun

#Ahora vamos con los proyectos
#Para cada proyecto crearemos un grupo
for i in "${Proyectos[@]}"
do
echo "Proyecto: "
echo $i
#Creamos el grupo
groupadd $i
#creamos una carpeta en /export/proyectos
mkdir /export/proyectos/$i
chgrp $i /export/proyectos/$i
chmod 2770 /export/proyectos/$i
#para cada proyecto iteramos para ver los usuarios que estan asociados a el
eval varAlias=\${$i[@]}
for j in $varAlias
do
echo "Usuario: "
echo $j
#aadimos el usuario al grupo
usermod -a -G $i $j
done
done

groupadd ejecutivos
#ahora vienen los ejecutivos
for j in "${Nombreeje[@]}"
do
echo "Creando cuenta de ${j}"
#creamos el usuario
useradd $j -f2
echo $j | passwd --force --stdin $j
#lo aadimos al grupo "ejecutivos"
usermod -a -G ejecutivos $j
done

#damos permisos de lectura a los ejecutivos a /export/proyectos
setfacl -m group:ejecutivos:rx /export/proyectos



#Ahora vamos con los proyectos de los ejecutivos
#Para cada proyecto crearemos un grupo
for i in "${Proyectoseje[@]}"
do
echo "Proyecto: "
echo $i

#para cada proyecto iteramos para ver los usuarios que estan asociados a el
eval varAlias=\${$i[@]}
for j in $varAlias
do
echo "Usuario: "
echo $j
#calculamos el nombre del proyecto quitandole la E del final
#para poder darle el setfacl
eval w=`echo $i | head -c -2`
echo $w
setfacl -m user:$j:rx /export/proyectos/$w
done
done

#------------------------------------------------------
# Final del script

Aparte del script se ha modificado el /etc/fstab para activar las cuotas

Y luego remontado el sistema de ficheros
mount -o remount

para finalmente crear los ficheros de cuota con
quotacheck -cug

Vous aimerez peut-être aussi