miércoles, 13 de mayo de 2015

Mirror de CentOS para nuestra red local

El propósito de este post es mostrar las configuraciones que se necesitan realizar para tener un mirror de Centos para los servidores de nuestra red.

Instalar cualquier versión de CentOS puede ser 5,6,7, en este servidor vamos a instalar el servicio de apache (httpd) y en este vamos a descargar los paquetes del mirror de centos que escojamos.

# yum install httpd createrepo screen -y 

Vamos abrir el puerto 80 para que los clientes puedan usar el repositorio local.

# firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload


Descarga de paquetes del mirror de CentOS.

Existen varios mirror de Centos los podemos ver en el siguiente sitio web http://www.centos.org/download/mirrors/, en este caso vamos a ordenarlos por la tercera columna. "Rsync Location".

Script para la sincronización de repos.

Explicación del script.

1.- El script debe estar ubicado en el directorio /etc/cron.daily/ donde nos aseguraremos que el script se ejecutara todos los días.
2.- El mirror.kernel.org puede ser usado ya que cumple con la característica de Rsync Location
3.-  Crear los siguientes directorios:

# mkdir -p /var/www/html/centos/6.6/os
# mkdir -p /var/www/html/centos/7/os
# mkdir -p /var/www/html/centos/6.6/updates
# mkdir -p /var/www/html/centos/7/updates

4.- Crear el archivo syncronizacion_centos_mirror.sh

# vim /etc/cron.daily/syncronizacion_centos_mirror.sh
Ingresar el contenido del script.

5.- Cambiar los permisos de 755 para el script syncronizacion_centos_mirror.sh

6.- Crear un screen en el servidor

#  screen -S syncronizacion_centos

# sh syncronizacion_centos_mirror.sh

en el terminal para salir del screen crtl a+d

en el terminal para regresar al screen digitan

# screen -r

Contenido del script

#################################################################################
#!/bin/bash
#!/bin/bash
# Jorge Armijo Syncronizacion repositorio CentOS Epel

# script con reposync
LOCAL_DIRECTORY="/var/www/html/centos"

reposync --gpgcheck -l --repoid=base       --download_path="${LOCAL_DIRECTORY}/7/os/x86_64/" --downloadcomps --download-metadata
createrepo ${LOCAL_DIRECTORY}/7/os/x86_64/ -g comps.xml
reposync --gpgcheck -l --repoid=extras     --download_path="${LOCAL_DIRECTORY}/7/extras/x86_64/" --downloadcomps --download-metadata
reposync --gpgcheck -l --repoid=updates    --download_path="${LOCAL_DIRECTORY}/7/updates/x86_64/" --downloadcomps --download-metadata
reposync --gpgcheck -l --repoid=virt       --download_path="${LOCAL_DIRECTORY}/7/virt/x86_64/" --downloadcomps --download-metadata
reposync            -l --repoid=epel       --download_path="${LOCAL_DIRECTORY}/7/storage/x86_64/" --downloadcomps --download-metadata
reposync --gpgcheck -l --repoid=centosplus --download_path="${LOCAL_DIRECTORY}/7/centosplus/x86_64/" --downloadcomps --download-metadata
reposync            -l --repoid=epel       --download_path="/var/www/html/epel/" --downloadcomps --download-metadata
createrepo /var/www/html/epel/ -g comps.xml
# Cambiar Contextos SELinux
chcon -Rt httpd_sys_content_t /var/www/html/


miércoles, 6 de mayo de 2015

Entrada, salida y error estandar

Redireccionamientos en shell
EL poder de la administración en sistemas GNU/Linux esta en el saber las herramientas que estan disponibles y saber como usarlas.

La entrada estándar

Viene a ser la información que se ingresa a través del teclado o viene de la salida de la ejecución de un comando.
Ejemplos:

Re-dirección de la entrada estándar 

# grep '^root' < /etc/passwd
#

La salida estándar

Es el resultado que se obtiene cuando se ejecuta un comando en la shell.

Re-dirección de la salida estándar 
# cal 02 14 2015 > /tmp/calendario
#  grep 'root' /etc/passwd > /tmp/usuario_root

NOTA:
Recordar que si pongo solo un signo de mayor que ">" este reemplazara todo lo que contiene el documento.
Recordar que si pongo DOS signos de mayor que ">>" este agregara al final del contenido del documento.


El error estándar.

Es la respuesta de error en la ejecución de un comando.

Re-dirección del error estándar 
# find //home/Documentos/jorge -type *.doc 2> /tmp/errors

Descartar error estándar

# service dhcpd restart 2> /dev/null

Combinar la salida estandar y el error estandar

Probar con un usuario diferente al root
$ find /etc -name 'hosts*' > /tmp/output.txt 2> /tmp/error.txt

el resultado va a ser similar a lo sifguiente :

Contenido del /tmp /output.txt

/etc/resolv.conf
/etc/fonts/conf.d/65-0-madan.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/65-0-lohit-kannada.conf
/etc/fonts/conf.d/59-liberation-sans.conf
/etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf
/etc/fonts/conf.d/65-1-vlgothic-gothic.conf
/etc/fonts/conf.d/65-0-lohit-bengali.conf
/etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
/etc/fonts/conf.d/57-dejavu-sans.conf
/etc/fonts/conf.d/30-0-google-crosextra-caladea-fontconfig.conf
/etc/fonts/conf.d/60-open-sans.conf
/etc/fonts/conf.d/62-google-crosextra-caladea-fontconfig.conf
/etc/fonts/conf.d/66-ucs-miscfixed.conf
/etc/fonts/conf.d/20-unhint-small-dejavu-sans-mono.conf
/etc/fonts/conf.d/65-0-lohit-devanagari.conf
/etc/fonts/conf.d/57-dejavu-sans-mono.conf

Contenido del error estándar

/tmp/error.txt

find: ‘/etc/pki/CA/private’: Permiso denegado
find: ‘/etc/pki/rsyslog’: Permiso denegado
find: ‘/etc/ntp/crypto’: Permiso denegado
find: ‘/etc/dhcp’: Permiso denegado
find: ‘/etc/lvm/archive’: Permiso denegado
find: ‘/etc/lvm/backup’: Permiso denegado
find: ‘/etc/lvm/cache’: Permiso denegado
find: ‘/etc/audit’: Permiso denegado
find: ‘/etc/polkit-1/rules.d’: Permiso denegado
find: ‘/etc/polkit-1/localauthority’: Permiso denegado
find: ‘/etc/selinux/targeted/modules/active’: Permiso denegado
find: ‘/etc/grub.d’: Permiso denegado
find: ‘/etc/audisp’: Permiso denegado
find: ‘/etc/firewalld’: Permiso denegado
find: ‘/etc/sssd’: Permiso denegado
find: ‘/etc/libvirt’: Permiso denegado
find: ‘/etc/ipsec.d’: Permiso denegado
find: ‘/etc/cups/ssl’: Permiso denegado
find: ‘/etc/sudoers.d’: Permiso denegado
~                                            







lunes, 4 de mayo de 2015

Manejo de ACL en directorios

Es muy importante saber el manejo de ACL's en los directorios llamados colaborativos sobre todo si estos son accedidos por varios usuarios y ellos pertenecen a varios grupos.

Vamos a plantear un ejemplo el mismo va a tener tres grupos.
Vamos a plantear usuarios que pertenezcan a un solo grupo y otros que pertenezcan a dos grupos y otros que pertenezcan a los tres grupos.


Departamento Usuarios por Departamento
Gerencia de RRHH (rrhh) Jorge Luis Andrea Karina
Gerencia de Informática (informatica) Manuel Roberto Johan Pedro Karina
Gerencia General (gerencia) Luisa Pablo Andrea Karina

En este ejemplo los usuarios van a compartir el directorio /home/informes_personal donde algunos usuarios solo van a poder acceder a consultar documentos y otros van a tener permisos de crear nuevos archivo y directorios, adicionalmente van a poder definir permisos para la creación de nuevos archivos y directorios.

El dueño del directorio /home/informes_personal debe ser el usuario del sistema root.
El grupo del directorio debe pertenecer al grupo de Gerencia de RRHH.

El grupo de la Gerencia de RRHH deben tener el acceso para la lectura y la escritura automáticamente en los nuevos archivos que se creen bajo el directorio /home/informes_personal.

El grupo de informática debe tener solo acceso de lectura, los archivos que se creen  automáticamente bajo el directorio /home/informes_personal deben mantener el mismo permiso.

Grupos de usuarios adicionales en el sistema operativo no deben de poder acceder al directorio /home/informes_personal. 

Los siguientes comandos deben de ser ejecutados en el terminal con el usuario root.

1.- Creación del directorio común.

# mkdir  /home/informes_personal

2.- Asignación de permisos para que el dueño del direcctorio sea el root

# chown root  /home/informes_personal

3.-   Asignación de permisos para que el grup dueño del direcctorio sea el RRHH

# chgrp rrhh  /home/informes_personal

4.- Definición de permisos especiales para directorios compartidos.

# chmod 2770 /home/informes_personal

5.- Asignación de permisos para el grupo  de la Gerencia de RRHH acceso al directorio para la lectura y la escritura automáticamente.

# setfacl -m g:rrhh:rw  /home/informes_personal

6.- Asignación de permisos para el grupo  de la Gerencia de RRHH acceso al directorio para la lectura y la escritura automáticamente.

# setfacl -m g:informatica:rw  /home/informes_personal

7.- Permisos automáticos para la creación de nuevos archivos para el gurpo de rrhh.

# setfacl -m g:u:rrhh:rw  /home/informes_personal

8.- Permisos automáticos para la creación de nuevos archivos para el gurpo de informática.

# setfacl -m d:g:informatica:rw  /home/informes_personal

9.- Limitar los permisos para otros grupos de usuarios.

# setfacl -m o::-- /home/informes_personal

NOTA: para que los permisos debajo de un directorios sean automáticos debemos definiros aumentando la opción por defecto como se observa en el punto 7 y 8.