viernes, 6 de marzo de 2015

Servidor Cups

Sistema cups

Es un sistema de impresión para S.O de tipo Unix que permite a un equipo actuar como servidor de impresión.Un equipo cliente podrá enviar tareas de impresión a este servidor el cual se encargará de gestionarlas para satisfacer las necesidades del cliente.

En cups,la información es enviada a un planificador o spooler, desde ahí, el trabajo se envía a un sistema de filtros que convierten el trabajo a un formato que entiende la impresora  y, finalmente, se envían los datos a un backend el cual se trata de un filtro especial que envía los dato traducidos al formato que entiende la impresora, a un periférico que será el encargado de la impresión en sí.

El fichero de configuración principal es

/etc/cups/cupsd.conf

Algunos parámetros son:

LogLevel:Establece el tipo de información que aparecerá en los logs
Listen:Especifica el puerto en el cual atenderá peticiones el servicio cups.Por defecto utiliza el puerto escucha en localhost:631
Browsing:Muestra o no las impresoras disponibles dentro de la red.Por defecto su valor es On.
Maxclients:Especifica el número máximo de clientes que puede atender el servidor de manera simultánea
Allow From:Específica a quien permite el acceso a la zona declarada.Si asignamos All,cualquiera podrá entrar.También podemos especificar la ip o el nombre de equipo de quien queramos que acceda.

Este fichero contiene la lista de las colas de impresión que están configuradas en el equipo

/etc/cups/printers.conf

Algunas opciones que se le pueden pasar son:

Accepting:Se le puede asignar el valor yes o no dependiendo de si queremos que la impresora en cuestión acepte nuevos trabajos o no.
AllowUser:Especifica la lista de usuarios a los que se les permitirá utilizar la impresora
DenyUser:Especifica la lista de usuarios a los que se les denegará el uso de la impresora en cuestión
Shared:Especifica si la impresora se comparte en la red o o dependiendo de si se le asigna el valor yes o no respectivamente

Mediante este comando podemos generar nuevos trabajos de impresión

lp

Algunos de los parámetros son:

-u:Especifica el usuario conel cual se conectará al servidor de impresión
-d:Especifica la impresora a la que se mandarán los trabajos de impresión
-i:Especifica el job-id  de un trabajo ya existente para modificar algunas de sus opciones
-n:Número de copias que queremos que nos saque del trabajo o trabajos
-t:Asigna un nombre al trabajo

Algunas de las opciones que se le pueden pasar son:

-o media=tamaño:Se le asigna el tamaño de página
-o cpi=N: En N especifica el número de caracteres a imprimir por pulgada.Por defecto son 10
-o scaling=número:Escala los archivos de imagen de tal forma que los ajusta al porcentaje de la página especificado en número para que se impriman en una sola hoja o en varias

Para cancelar la impresión

cancel

Los parámetros que se le pueden pasar son:

-E:Fuerza que la comunicación con el servidor se realice encriptada
-U:Especifica el usuario con el que conectarse con el servidor
-a: Cancela todos los trabajos en el destino seleccionado o todos los trabajos en todos los destinos si no se le pasa ninguno
-h:Elije un servidor alternativo
-u:Cancela los trabajos cuyo propietario sea el usuairo especificado

Para mostrar información sobre los trabajaos enviados a una cola de impresión entre otras cosas se utiliza el comando

lpstat

Algunos parámetros que se le pueden pasar son:

-l:Muestra un istado de impresoras ,clases  y trabajos
-p:Muestra las impresoras y si tienen o no habilitadas la impresión.Si no se especifica ninguna impresora se muestra todas
-r:Muestra si el servicio cups está corriendo o no
-u:Muestra una lista de trabajos de impresión ordenadas por el nmbre de usuario.
-d:Muestra la cola de impresiñon por defecto
-t:Muestra toda la información de estado

Podemos configurar impresoras y clases mediante el comando

lpadmin

Algunos de los parámetros son:

-c:Añade la impresora especificada a la clase que le digamos.Si la clase no existe la creará.
-r:Elimina la impresora seleccionada de la clase que le digamos.Si la clase queda vacío se elimina también.
-v:Establece el "device-uri" esto es la cadena de conexión con la impresora.Aquí se le especificará si se conecta por usb, vía http, etc..
-D:Muestra información detallada sobre la impresora seleccionada
-E:Habilita la impresora de manera que pueda aceptar trabajos.
Con el comando podemos mostrar o establecer opciones de una impresora
lpoptions
-l:Lista las opciones específicas de la impresora y las opciones establecidas
-r:Elimina la opción seleccionada de la configuración de la impresora
-o:Especifica una nueva opción para la impresora seleccionada.

Samba



Introducción 

Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows.

Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios


La 'suite' completa de samba se compone de varios paquetes. Destacamos los más importantes:

samba - Servidor de archivos e impresoras tipo LanManager para Unix.
samba-common - Archivos comunes de samba utilizados para clientes y servidores.
smbclient - Cliente simple tipo LanManager para Unix.
swat - Herramienta de administración de Samba via web
samba-doc - Documentación de Samba.
smbfs - Comandos para montar y desmontar unidades de red samba

winbind - Servicio para resolver información de usuarios y grupos de servidores Windows NT


Instalar samba

sudo apt-get install samba samba-common smbclient samba-doc smbfs

 Archivo de configuración de samba

/etc/samba/smb.conf

Los usuarios que utilizan samba son independientes a los que hay en el sistema.

Para dar de alta un usuario hay que ejecutar:

smbpasswd -opcion usuario

Para eliminar usuario 

smbpasswd -x usuario

Para ver los usuarios del sistema

pbdedit -w -L

Compartir una carpeta tocar el fichero /etc/samba/smb.conf
La forma más básica de compartir una carpeta es :



Las opciones de configuración son:



Crear una carpeta a varios usuarios y  un grupo



Compartir una impresora

Nfs: Sistema de archivos en red

Es un servicio que permite que los equipos GNU/Linux puedan compartir carpetas entre sí.

Para instalarlo

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

Para iniciarlo

service nfs-kernel-service start


Fichero de configuración

/etc/exports

Utilidades: 

Montar una unidad NFS manualmente

mount 192.168.20.100:/datos/prueba

Montar una unidad NFS automáticamente

192.168.20.100:/datos /prueba nfs  rw,hard,intr  0 0







domingo, 22 de febrero de 2015

Instalar Gnome


Los requisitos mínimos «recomendados», teniendo en cuenta los efectos de escritorio son :

    * Procesador x86 a 1 GHz.
    * Memoria RAM de 1 GB.
    * Disco Duro de 15 GB (swap incluida).
    * Tarjeta gráfica y monitor capaz de soportar una resolución de 800x600.
    * Lector de CD-ROM, puerto USB o tarjeta de red.
    * Conexión a Internet puede ser útil.

Los efectos de escritorio se activan por defecto en las siguientes tarjetas gráficas:

    * Intel (i915 o superior, excepto GMA 500, nombre en clave «Poulsbo»)
    * NVidia (con su controlador propietario o el controlar abierto incorporado    Nouveau)
    * ATI (a partir del modelo Radeon HD 2000 puede ser necesario el controlador propietario)

Con una máquina con un procesador de 64 bits (x86-64), y especialmente si dispone de más de 3 GB de RAM, se recomienda utilizar la versión de Ubuntu para sistemas de 64 bits.






martes, 17 de febrero de 2015

Configuración de la red



A la hora de configurar un dominio hay que proveer al sistema de los siguientes servicios.

  • Servidor dhcp 
  • Servidor DNS
  • Cortafuegos 

La mayoría se proveen desde fuera del servidor de dominio, pero también se puede configurar desde este
En este tema nos centraremos en el cortafuegos

Esquema de red

Configuración de la red 

Las tarjetas de red se configuran durante el arranque 
Eth0, eth1… 
Se puede hacer mediante ifconfig pero solo servirá hasta el siguiente reinicio 
  • ifconfig 192,168,1,2 netmask 255,255,255,0 up 
  • ifconfig eth0 down 
  • ifconfig eth0 up 
  • route add –nt 0/0 gw 192,168,1,1 eth0 (puerta de enlace)
Archivo de configuración 

/etc/network/interfaces
lo auto 
iface eth0 inet static 
address 192.168.1.2 
netmask 255.255.255.0 
network 192.168.1.0 
broadcast 192.168.1.255 
gateway 192.168.1.1 

Otros ficheros 

Nombre del equipo 
        /etc/hostname
              Escribir el nombre 

Servidores DNS 

DNS locales 
     /etc/hosts 

DNS Internet 
     /etc/resolv.conf 
            nameserver 8,8,8,8 

Actualizar los cambios 
       /etc/init.d/networking restart | stop | start | force-reload

Otros servicios de red 
  • Dhcp -dhcp3-server 
  • DNS -/etc/hosts 
  • SERVIDOR WEB-apache 
  • CORREO ELECTRÓNICO -sendmail 
  • FIREWALL Y NAT-Iptables 
  • Escritorio Remoto -vnc, teamviewer


LDAP


LDAP es un protocolo de aplicación que permite el acceso a un dominio. Protocolo de Acceso a Directorio Ligero.Es un protocolo estándar que permite administrar directorios, esto es, acceder a bases de información de usuarios de una red mediante protocolosTCP/IP.

Usan BD como backend para almacenar y gestionar las entradas de directorio
Se pueden crear subdominios para:

  • Rendimiento 
  • Localización geográfica
  • Cuestiones administrativas
Modelos LDAP (tipos de servicios) 

Modelo de información 
  • Estructura y tipos de datos del directorio 
  • Directorios = entradas estructuradas (árbol) 
  • Cada entrada = atributos (nombre + valor) 
Modelo de asignación de nombres 
  • Referencia de las entradas y datos. Nombre único. 
  • Cada entrada un ID único (DN: Distinguished name) a partir del RDN (Relative DN) 
Modelo funcional 
  • Operaciones para acceder al árbol: autenticación, solicitudes y actualizaciones 
Modelo de seguridad 
  • Cliente: probar su identidad 
  • Servidor: controlar el acceso
OpenLDAP

Implementación de LDAP de código abierto 

Características 
  • Licencia libre 
  • Multiplataforma 
  • Integración con aplicaciones 
  • IPv6, LDAPv3 y Referrals (esquema distribuido) 
  • Permite operaciones de publicación de esquemas 
  • Internacionalización (UTF8) 
  • Soporta extensiones y muchas BD 
  • Contiene un esquema de mapeo 
  • Mecanismos avanzados de búsqueda
Componentes OpenLDAP 

sladpd: demonio principal 
slurpd: demonio del servidor de replicación 
Librerías 
Herramientas, utilidades y clientes

Instalación y Configuración 

apt-get install slapd ldap-utils
service slapd {start | stop | restart} 
  • Arrancar o reiniciar el servidor LDAP sudo /etc/init.d/slapd restart 
  • Parar el servidor LDAP sudo /etc/init.d/slapd stop 
En el directorio /etc/ldap 
  • Archivos de configuración 
  • Schemas
Configuración mediante el asistente 

sudo dpkg-reconfigure slapd









Administración: Cargar plantillas 

Hay que instalar unas plantillas para manejar usuarios y grupos

Instalar plantillas para almacenamiento de usuarios unix

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f  /etc/ldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif


Configuración esquema básico 
  • Base del directorio: parámetro olcSuffix. dc=majada,dc=com 
  • Nombre de usuario administrador: parámetro olcRootDN . cn=admin,dc=majada,dc=com Contraseña: parámetro olcRootPW. ldapadmin 
  • Permiso de acceso a contraseñas: parámetro olcAccess: to attrs=userPassword. administrador permiso de escritura y a cada usuario para cambiar su propia contraseña 
  • Permiso de acceso global al directorio: parámetro olcAccess:to *. Daremos al usuario administrador permiso de escritura y a todos los usuarios, permisos de lectura Ejemplo de configuración del archivo ldif
Ejemplo de configuración

Unidades organizativas 

Hay que crear una unidad organizativa para usuarios y otra para grupos 
  • dn: ou=users 
  • dn: ou=groups 

Sólo cuando estén creados dominio y administrador.

Después podemos crear usuarios y grupos para hacer pruebas. Crearemos los usuarios javier, joaquin y miguel en el grupo profesores y los usuarios jessica y joel en el grupo alumnos. 

Ejemplo de configuración 



Últimos pasos 

Cargar en el directorio los archivos ldif 

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldapcurso-esquema-basico.ldif 
sudo ldapadd -c -x -D cn=admin, dc=majada, dc=com -W -f /tmp/ldapcurso-usuarios.ldif 

Comprobación de las entradas añadidas 

ldapsearch -xLLL –b “dc=majada,dc=com” uid=juan sn givenName cn

Herramientas y utilidades 

Cliente 
  • ldapmodify :modificar entradas de un directorio 
  • ldapadd :añade entradas al directorio 
  • Ldapsearch :busca entradas en el directorio 
  • Ldapdelete :elimina entradas en el directorio 

Servidor 
  • slapadd :añadir entradas desde un fichero ldif 
  • slapcat :extraer de una BD en formato ldif 
  • slapindex :regeneración de índices 
  • slappaswd :genera una contraseña de usuario
Servidor de autenticación 

Instalación 

sudo apt-get install ldap-auth-client nscd 

Configuración 

sudo auth-client-config -t nss -p lac_ldap 

Librería (para que conecte con el servidor al autenticar) 

sudo apt-get install libpam-ldapd 

Actualización de PAM 

sudo pam-auth-update 

Probar la autenticación 

sudo /etc/init.d/nscd restart 
pamtest passwd jessica (autenticación de la contraseña) 
Trying to authenticate for service . Password: // Introducimos el password de jessica 
Authentication successful. // La autentificación ha sido satisfactoria 

finger joel -finger para usuarios que están solo en el dominio 
Login: joel Name: Joel Javier 
Directory: /home/www/alumnos Shell: /bin/sh 
Last login Tue Sep 27 18:02 (CEST) on pts/3 from 192.168.1.213 
No mail.
No Plan

Herramientas gráficas 
  • lat -LDAP Admin Tool 
  • PhpLdapAdmin -Entorno web 
  • JXplorer


lunes, 2 de febrero de 2015

Procesos



Definición


Un proceso puede informalmente entenderse como un programa en ejecución. El concepto se refiere a la ejecución de diversas instrucciones por parte del microprocesador


Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".

El sistema operativo  se encarga de gestionar los procesos pudiendo crear y borrar los procesos y  establecer comunicaciones entre ellos.

Un proceso informático puede atravesar diferentes estados. Puede estar en ejecución (cuando está utilizando el microprocesador), bloqueado (su ejecución requiere que se realice otro evento) o listo (cuando libera el microprocesador).


Es posible distinguir entre diferentes tipos de procesos. Los procesos cooperativos, son aquellos que son gestionados por varias configuraciones de hardware. Los procesos distribuidos, en cambio, se encuentran repartidos entre varios elementos de un sistema. También existen los procesos paralelos, que se asemejan a los sistemas más importantes.

1 programa cuenta con varios procesos. Se dividen: 

  • SO necesita algo 
  • Entrada de un nuevo usuario (paralelo)
           -2 usuarios ejecutando un programa
          - Si lo ejecuta al entrar termina al salir 


Procesos creados por el SO: 

  • Errores 
  • Instrucciones inválidas 
  • Fallos E/S
Dos tipos de procesos 
  • Usuarios 
  • Sistema 
Se ejecutan por prioridad

Bloque de control de Procesos BCP

Se almacenan los atributos del proceso 


Simula a una imagen del proceso en un momento concreto 
  • Registros 
  • Ubicación de variables 
  • Pila
Cada proceso -1 BCP 

Se usa para concurrencia (los procesos entran y salen de la CPU constantemente)

Información del BCP

Identificadores 
  • Proceso 
  • Proceso padre 
  • Usuario 
Información sobre el estado del proceso (condición de la última instrucción, por dónde va…) 

Información sobre el control del proceso 
  • Prioridad 
  • Tiempo de espera 
  • Procesos hijos generados
Tabla de BCP

Al crearse el proceso se crea el BCP y se almacena en una tabla de BCP’s 

La tabla puede ser 
  • Estática (tiene un nº máximo) 
  • Dinámica (sin límite) 
Al cargarse el proceso, se cargan los datos (registros, variables…) en el BCP y al parar el proceso es al revés 

Todo lo gestiona el SO por lo que necesita conocer el estado en que se encuentra el proceso


Acciones de los procesos 
  • Salvar contexto del proceso que abandona la ejecución 
  • Cambiar el estado del proceso 
  • Mover el BCP a otra cola (listo, bloqueado…) 
  • Solicitar otro proceso 
  • Actualizar el nuevo BCP 
  • Actualizar las estructuras de datos y memoria 
  • Volcar al procesador el contenido del nuevo proceso
Hilos 

División mínima de acciones

1 proceso -Varios hilos 

Ventajas de separar hilos y procesos 
  • La información de los hilos hay mucha que es común 
  • menos tiempo para consultarla 
  • Comunicación entre hilos más rápida porque están en zonas comunes de memoria 
  • Ejecución paralela de varios hilos 
Se suele trabajar a nivel de hilos: 
  • Fin de un proceso = fin de los hilos 
  • Suspensión de un proceso = suspensión de hilos y liberación de memoria 
  • Como ocupan menos recursos se liberan más
Interrupciones y Excepciones 

Interrupción 
  • Mecanismo para ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa 
  • Por ejemplo, las teclas del teclado 
Excepción  
  • Situaciones de error en un programa que requieren que se ejecute un bloque de instrucciones 
  • Por ejemplo, una división proporcionar una letra para una suma
Comandos para la automatización de tareas en linux 

CRON 
  • Ejecutar tareas programadas en un momento determinado 
  • Hay que instalarlo 
AT 
  • Ejecutar tareas programadas una sola vez 
  • Hay que instalarlo 
  • Ejercicio: Ejecutar un script cada vez que arranque el equipo






viernes, 23 de enero de 2015

Funciones

Uno de los mayores utilidades que posee una shell es el permitirnos crear funciones para realizar tareas repetitivas fácilmente.El funcionamiento de estas funciones es parecido al que posee cualquier lenguaje de programación, en el cual se agrupan conjunto de comandos y se los llama por un nombre.

Podemos definir funciones en un script de shell:

funcion() {
    comandos
}

 Para llamarla:

funcion p1 p2 p3




Siempre tenemos que definir la función antes de llamarla:

#!/bin/bash
# Definición de funciones 
funcion1() {
    comandos
}
funcion2() {
    comandos
}
# Programa principal 
funcion1 p1 p2 p3


Valores de entrada


#! /bin/bash
function suma() {
resultado=$(expr $a + $b)-----------------------Se pueden sustituir por $1 y $2 (y $3, $4…)
echo “La suma es “$resultado
}
a=5
b=10

suma $a $b-----------------------Se pueden sustituir por $1 y $2 (y $3, $4…




Valores de salida

Una función puede devolver ninguno, uno o más valores
Si no devuelve nada-Procedimiento
Si devuelve algo -función
Para devolver un valor -return

#! /bin/bash
function suma() {
resultado=$(expr $a + $b)
return $resultado
}
a=5
b=10
suma $a $b
c = $?---------------------------------------------------Toma el valor que devuelve el return
echo $c








Salida: String

Para devolver un string se usa un procedimiento
#! /bin/bash
convertir_en_hex() {
case $valor in
0) valor=“0”;;
1) valor=“1”;;
2) valor=“2”;;
10) valor=“A”;;
11) valor=“B”;;
12) valor=“C”;;
*) valor=“ERROR en la entrada”;;
esac
}
valor =2
convertir_en_hex $valor
echo “el resultado es $valor”