viernes, 6 de marzo de 2015

Convivencia e Integración de sistemas heterogéneos : Servidor CUPS

CUPS: “Common UNIX Printing System” o Sistema de Impresión Común para UNIX, es un potente software que se utiliza para imprimir desde las diferentes aplicaciones instaladas tales como el propio navegador que está usted utilizando ahora para leer este post.

El proceso de imprimir implica los siguientes pasos :

1 Un usuarios o un programa envía un trabajo de impresión.
2 El trabajo se almacena en una cola de impresión.
3 El planificador se encarga de enviar los trabajos de impresión al sistema d efiltros para convertirlos en un fomarto que entienda la impresora.
4 El sistema de filtros realiza la conversión de los trabajos.
5 Los trabajos son enviados al backend que se encarga de pasárselos a la impresora.
6 Se eliminan los trabajos que han sido transmitidos a la impresora de la cola de impresión.

El fichero principal de configuración es /etc/cups/cupsd.conf

Opciones

Accepting: la impresora acepta nuevos trabajos o no.
Allowuser: lista de usuarios que pueden usar la impresora.
Denyuser: lista de usuarios que no pueden usar la imprsora.
Shared: especifica si la impresora está compartida en red o no.

domingo, 1 de marzo de 2015

Convivencia e integración de sistemas heterogéneos : Servidor SAMBA

Existen dos formas de compartir archivos entre equipos :

Compartir archivos e impresoras (Samba) : entre equipos GNU/Linux y Windows.
NFS : nativo de sistemas GNU/Linux.

Instalación de samba

Ubuntu
apt-get install samba4 smbclient
Fedora
yum install samba samba-client

Iniciar servicio
service samba4 start

Crear usuarios en samba

smbpasswd -opcion usuario

Ejemplo :

smbpasswd -a pedro

Para eliminar usuario

smbpasswd -x usuario

Forma básica de compartir una carpeta

Editar archivo /etc/samba/smb.conf

[miscosas]
       path = /datos/
       public =  no
       valid users = juan,pedro

Asistentes gráficos de Samba

swat




System-config-samba



Instalación de NFS

apt-get install nfs-kernel-server nfs-common portmap

Iniciar servicio

service nfs-kernel-service start

Montar unidad NFS manualmente

mount 192.168.1.100:/datos /prueba

Montar una unidad NFS automáticamente

192.168.1.100:/datos /prueba nfs rw.hard,intr 0 0


viernes, 13 de febrero de 2015

Servicios de Directorio en Redes Linux : Configuración de la red



Configurar manualmente la interface de red en Debian o Ubuntu

Editar el archivo /etc/network/interfaces.

nano /etc/network/interfaces


- La interface primaria será eth0.
- allow hotplug eth0: el adaptador eth0 se habilitará automáticamente si reiniciamos el servicio de networking.
- iface eth0 inet static: Estoy usando una ip fija para mi servidor por eso he puesto static, si quisieras   una configuración por dhcp escribirías dhcp y el resto de líneas inferiores podrías comentarlas con #.
address: La dirección ip de la máquina.
netmask: Máscara.
network: La red.
En principio estos 3 anteriores parámetros son necesarios y los dos de abajo son opcionales.
Broadcast: Dirección ip de broadcast.
Gateway: Puerta de enlace (si queremos tener salida a internet).

Configuración temporal de interface de red

ifconfig [interface] [ip]

Ejemplo:

ifconfig eth0 192.168.1.139



Servicios de Directorio en Redes Linux : LDAP

LDAP (Lightway Directory Access Protocol - Protocolo de Acceso a Directorio Ligero) es un protocolo de aplicación que permite el acceso a un dominio.

Instalación de Ldap:

sudo apt-get install slapd ldap-utils

Instalación de servidor de autenticación:

sudo apt-get install ldap-auth-client nscd

Instalación de librería PAM LDAP

sudo apt-get install libpam-ldapd

Actualización de PAM

pam-auth-update


Fichero de ejemplo de esquema básico de ldap (extensión ldif)






OlcSuffix: Nombre del dominio o directorio base
OlcRootDN; Nombre del administrador del servidor LDAP
oldRootPW; Contraseña del administrador del servidor LDAP




olcAcces to attrs=userPassword: El acceso global a las contraseñas del dominio será para el administrador del servidor LDAP.


Fichero de ejemplo de usuarios y unidades organizativas de ldap (extensión ldif)



Directorio base: dn; dc=majada,dc=com
Administrador de directorio base : cn=admin,dc=majada,dc=com
Unidades organizativas: users y groups



Agrego los usuarios:

dn; Nombre completo de la cuenta de usuario
cn: nombre abreviado
sn: surname
uid: id del usuario



Agrego los usuarios a las unidades organizativas:

dn: Nombre de la unidad organizativa.
memberUid: nombre del usuario que pertenece a la unidad organizativa,

Por último cargar en el directorio los archivos ldif:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap-esquema-basico.ldif

sudo ldapadd -c -x -D cn=admin, dc=carlosmajada,dc=com -W -f /tmp/ldap-usuarios.ldif

He almacenado los archivos en el directorio /tmp ya que las contraseñas están en texto plano por lo que una vez cargados los archivos no es recomendable dejarlos en el sistema.

jueves, 5 de febrero de 2015

Programación en Shell : Procesos

- Un programa en ejecución es un conjunto de procesos.
- Un proceso está compuesto de un conjunto de hilos.
- Los hilos son operaciones determinadas de un programa. Por ejemplo cuando editamos una imagen en Photoshop, le cambiamos el color o contraste, eso sería un hilo de un proceso.

Estados de los procesos



Interrupcion; El programa espera una orden para ejecutar el proceso. Por ejemplo un videojuego que use las teclas ASWD para mover al personaje, estará esperando que se pulse una de estas teclas para realizar el proceso.

Excepción: Son los errores de los programas. Por ejemplo una aplicación sencilla como la calculadora de Windows, está esperando un número para realizar una suma y se le proporciona una letra.

Comandos para la automatización de tareas en Linux

CRON: Es un administrador regular de procesos en segundo plano que ejecuta procesos a intervalos regulares, por ejemplo cada minuto, día, semana o mes. Los procesos deben ejecutarse y la hora en la que deben hacerlo en el fichero crontab.

AT: Permite programar tareas para que se ejecuten a determinada fecha y hora. La sintaxis del comando at es sencilla: at [hora] [fecha], algunos ejemplos son:

at 20:00 // ejecuta la tarea a las 8:00 PM
at 02:10 JUN 27 // ejecuta la tarea a esa hora el dia 27 de Junio


miércoles, 4 de febrero de 2015

Programación Shell : Funciones

Definición:

Las funciones en Shell nos permiten usar tareas repetitivas fácilmente. Son un conjunto de comandos a los que se les asigna un nombre.

Sintaxis de una función

nombre_funcion ( ){
       primer_comando
       segundo_comando
                                }

Valores de entrada

Las funciones pueden aceptar valores de entrada que se definen en el script pero fuera de la función.

Ejemplo:

#! /bin/bash

funcion_que_tal{
     echo "Hola $1, como estás?"
}


Ejecutamos la función y le pasamos un parámetro, en este caso el valor de entrada es "amigo": funcion_que_tal amigo
Resultado: Hola amigo, como estás?

También es posible indicarle estos valores de entrada en el propio script y pueden ser más de un único parámetro.

Ejemplo:

#! /bin/bash

funcion_que_tal {
echo "Hola $1, como estás?"
echo "Espero que estés $2"
}
$1 = amigo
$2 = bien

Ejecutamos la función y este sería el resultado:

Hola amigo como estás?
Espero que estés bien


jueves, 29 de enero de 2015

Programación en Shell : Estructuras de control

Las estructuras de control sirven para cambiar el flujo del programa. De esta manera no se ejecuta unas instrucción detrás de otra, sino que dependiendo de la estructura de control hará una instrucción u otra. Hay varios tipos de estructuras de control:

Condición simple

IF: Si se cumple una condición se realizan estos comandos, si no se cumple se realizan estos otros comandos.

     if condicion
     then
           comandos
     else
           comandos
     fi

Condición múltiple

CASE: Se crean múltiples opciones y se selecciona una. Si no se selecciona ninguna se realiza la opción por defecto *)

case $variable in
    valor1) comandos
    valor2) comandos
    valor3) comandos
    valor4) comandos
    *) comandos
esac

Repetición

WHILE:

while condicion
do
        comando1
        comando2
done

Contador

for ((expr1;expr2;expr3))
do
     comando1
     comando2
done

Leer datos desde un fichero

#! /bin/bash
for i in $(cat /etc/passwd);do
       echo "$i"
done