Consejos para Linux

De BCE
Saltar a: navegación, buscar

If you have problems reading this document, don't hesitate to ask for a translation. domingobecker@gmail.com

Los problemas aquí documentados, son las soluciones importantes a cuestiones que eran necesarias resolver para una implementación exitosa de linux en una empresa.

La instalación de Fedora para Sistemas BCE está documentada en una página aparte, debido a que se necesita las instrucciones resumidas y precisas en un único lugar.

Los consejos que va a encontrar en estas páginas y las relacionadas se refieren a las distribuciones Fedora y CentOS. Son las dos distribuciones de linux que usa el autor desde hace muchos años. Comencé con Red Hat Linux 3.1, en el año 1996. Desde entonces uso linux de la línea de Red Hat. Uso Fedora y CentOS porque son libres.

En otras otras distribuciones de linux no creo que sea muy distinto, por lo que no debería tener problemas para implementar las soluciones aquí presentadas en esas distribuciones.

Fedora normalmente lanza 2 versiones nuevas cada año, con lo último del software libre. Esto es bueno y malo a la vez: bueno porque está disponible lo último de lo último para usar, y malo porque a veces no viene probado del todo, por lo que hay que ayudar a corregir los errores probando las nuevas versiones de prueba de los paquetes con problemas. Si usa Fedora, considere ser parte de la solución a los problemas que encuentra, y va a tener mejores resultados.

A medida que vayan apareciendo problemas a resolver, se irán agregando aquí y aparecerán en la tabla de contenidos siguiente.

Con lo que está hasta ahora, tengo muchos clientes y servidores linux funcionando sin problemas, con gente haciendo trabajos de edición de texto y planillas de cálculos con OpenOffice, manejando correo con Evolution, usando mis sistemas bajo linux para trabajos de facturación, administración de empresas, aportes previsionales y liquidación de beneficios, sistema de financieras, etc., sin ningún tipo de problemas.

Si Ud. es un usuario de windows y quiere pasar a linux, el cambio es sencillo, le puede tomar un par de días adaptarse, pero una vez dentro de linux, no extrañará nada de lo anterior. Es más una cuestión de perderle miedo al cambio que los problemas que supuestamente aparecerían.

Como dato curioso, antes era yo el que ofrecía usar mi software de punto de venta bajo linux, ahora (2010), son los clientes los que de antemano me piden que quieren que lo instale bajo linux, sin siquiera yo llegar a hablar de las bondades.

No entre a linux escapando de windows. Tampoco haga comparaciones que no sean objetivas, sino más bien analice el costo/beneficio. En general, en un mismo equipo Fedora Linux es más lento que un XP, pero más rápido que un Vista, mucho más seguro y estable, y más fácil para programar. A medida que vaya usando y aprendiendo, encontrará cosas que no existen en windows, por ejemplo, el sistema de conexión encriptada a recursos compartidos con sshfs, el sistema beagle para buscar documentos, respuestas más rápida a la corrección de errores del sistema, y, en programación, la camaradería entre los programadores, que no le mezquinarán nada de lo que saben cuando haga preguntas sobre programación, es decir, un programador no se traba en linux porque no tenga información sobre cómo hacer algo. Para un programador, la productividad es exponencial, si usa técnicas de reusabilidad.

Vea en esta página un ejemplo de implementación de Punto de Venta con Fedora.

Contenido

Instalación

Sistema Operativo

El servidor puede ser un CentOS 5.4 o posterior. Para escritorio usar Fedora 8 o posterior.

Fedora también puede ser usado como servidor. Si usa Fedora, debe seguir estas instrucciones.

El DVD de instalación le servirá para instalar el sistema.

Si va a usar clientes windows, a la instalación base agregar los paquetes de servidor y cliente Samba, a saber, samba y samba-client.

Si solamente participan equipos linux, se recomienda usar sshfs, instalar paquete fuse-sshfs. Este funciona mejor que samba, y encima va encriptado, por lo que se puede usar en redes inseguras.

También agregar CrossOver, que debe descargar de aquí.

Este archivo va en /opt/cxoffice/lib/wine en reemplazo del que está ahí.

Configuración del Servidor

El sistema al 2010 no necesita acceso a recursos compartidos del servidor, por lo que no necesita compartir ninguna carpeta.

La configuración ip normal es 192.168.1.1 para el servidor y 192.168.1.2 en adelante para los clientes. Si es posible, configurar el servidor DHCP del linux.

El nombre del equipo servidor puede ser servidor, aunque no es necesario desde octubre de 2009.

En el archivo hosts del servidor (/etc/hosts en linux y windows\system32\drivers\etc\hosts en windows) debe colocar:

127.0.0.1    nombrepc servidor localhost etc.

es decir, a la línea que creó el sistema operativo agregar la palabra servidor a la derecha.

El cortafuego por defecto de Fedora 8 y posterior bloquean todo, incluso cuando está deshabilitado, por lo que conviene abrir los puertos que necesite usar. Para el sistema de facturación debe abrir el puerto 6000 para tcp y udp.

Si la red local está detrás de un cortafuego, puede declarar como confiable la ethX que esté usando para la red local. Normalmente no es necesario hacerlo.

No deshabilitar SELinux, sino que debería configurarlo apropiadamente. El sistema no requiere nada especial para funcionar con SELinux habilitado en modo obediente.

El servidor de bases de datos para linux está en un rpm en ... que se puede instalar en Fedora y en CentOS.

Configuración del Cliente

En el cliente se deben copiar solamente los programas que están en becker/progs. El directorio becker/datos debe estar vacío.

En el archivo hosts del cliente (/etc/hosts en linux y windows\system32\drivers\etc\hosts en windows) debe colocar:

192.168.1.1  servidor

o bien el número IP que le haya tocado al servidor dentro de la red local o de internet.

Es conveniente que el acceso directo del sistema inicie en el directorio datos. Eso lo puede hacer después de arrancar la primera vez en Aplicaciones->Configurar conexiones de red y especificarle la carpeta a donde debe cambiar (chdir) en cuanto inicie el sistema.

Configuración de los Puertos Serie y Paralelos

Los puertos serie se deben enlazar simbólicamente: "ln -s /dev/ttyUSB0 ~/.cxoffice/winxp/dosdevices/com1". Cambiar ttyUSB0 por el que corresponda, para otros puertos puede ser ttySn para puerto COMn. El ejemplo dado es un puerto serie que entra por USB. El bottle es winxp. Puede llegar a necesitar hacer su -c 'chmod 666 /dev/ttyS0' si le dice permiso denegado, normalmente suele ser suficiente agregar al usuario al grupo dialout.

Los puertos paralelo se deben enlazar como "ln -s /dev/lp0 ~/.cxoffice/winxp/dosdevices/lpt1". Tambien hay que hacer su -c 'chmod 666 /dev/lp0' para que deje imprimir a cualquiera. Si hace falta, con ls -Z /dev/lp0 puede ver el grupo al que pertenece y agregar al usuario que corresponda.

Configuración Puertos Serie y Paralelos no agregados por el kernel

Las placas netmos y moschip normalmente no se agregan automáticamente a algún ttySn, pero el kernel normalmente las toma sin problemas. Hay que configurarla a mano.

Para un puerto netmos tuve que agregar la configuración manual al iniciar Fedora en /etc/rc.d/rc.local:

#habilito un puerto de la netmos 9835
/bin/setserial /dev/ttyS2 port 0xa000 UART 16550A irq 16 Baud_base 115200
/bin/setserial /dev/ttyS3 port 0xa400 UART 16550A irq 16 Baud_base 115200

#luego pongo en modo lectura/escritura para todos los usuarios
/bin/chmod 666 /dev/ttyS0
/bin/chmod 666 /dev/ttyS2
/bin/chmod 666 /dev/ttyS3

Para ver qué ttySn está desocupado y puedo usar:

setserial /dev/ttySn -a

y tiene que devolver uart: unknown

Para ver el irq que tiene asignado la placa

lspci -vv -b

Para ver los id y parámetros de puertos de entrada salida de la placa como los ve el kernel

lspci -vv 

y luego buscarla por su nombre. Empieza con el ID del slot PCI donde está enchufado, seguido por el dispositivo enchufado, en mi caso 00:08.0.

Para ver qué puertos de entrada salida está usando la placa, debería buscar 08.0 en la salida de:

cat /proc/ioports

y ahí están especificados los puertos bases que se dan en el parámetro port de setserial más arriba.

Finalmente, proceder como dice el punto anterior.

Carpetas Compartidas en cxoffice/wine

El Sistema BCE no necesita carpetas compartidas desde Octubre de 2009.

Las unidades de disco en cxoffice se agregan en el panel de control, opción winecfg. Luego, dentro de éste, en Unidades. Si no deja cambiar la letra, las mismas está en el directorio

/home/usuario/.cxoffice/bottle/dosdevices

y para crear una con un nombre distinto, simplemente debe agregar un enlace simbólico al lugar donde está montado el recurso compartido.

ln -s /home/usuario/i i:

y listo, cxoffice lo tomará como disco i: al directorio /home/usuario/i de ahora en adelante.

Planificar posible caída de la Placa Principal del Servidor

Existe una posibilidad muy remota de que se rompa la placa principal de la computadora, en cuyo caso, el disco rígido siempre queda intacto.

Fedora puede volver a arrancar sin problemas desde el disco rígido conectado como principal en otra computadora de similares características, i686 las dos computadora, por ejemplo.

Para que todo funcione sin problemas, es necesario preveer que las placas de red son levantadas a partir de su dirección MAC, por lo que se puede preveer usar placas PCI para que, si se quema la placa principal de la PC servidora, se trasladan las placas de red PCI y el rígido a la PC nueva de características similares.

Esto fue probado por el suscripto en una ocasión, en enero de 2011, en un servidor de una empresa. No porque lo haya querido hacer, sino porque verdaderamente se rompió la placa principal del servidor.

Servidor de Bases de Datos

El demonio servidor de bases de datos BCE para linux es un solo binario que se llama ServBCEcb.

Normalmente lo copio en /usr/sbin

El programa en sh que inicia y detiene el servidor de bases de datos como un servicio más de linux es el siguiente:

#!/bin/sh
#
# servbce:	ServidorBCE de Boris, para bases de datos BCE
#
# chkconfig: 345 70 10
# description:  Este servicio es el Servidor BCE de Boris.
#
#

# Sanity checks.
[ -x /usr/sbin/ServBCEcb ] || exit 0

# Source function library.
. /etc/rc.d/init.d/functions 

start() {
    echo -n $"Starting ServidorBCE: "
    #FILES=$( ls /etc/readahead.d/*.later )
    UIDUSUARIO=$( id -u usuario )
    #echo $UIDBORIS
    /usr/sbin/ServBCEcb /home/usuario/datos $UIDUSUARIO &
    echo_success
    echo
} 


stop() {
   #falta hacer
   /usr/sbin/pararservbce
   /bin/true
}

# See how we were called.
case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    status)
        ;;
    restart)
	stop
	start
	;;
    condrestart)
	;;
    reload)
        ;;
    *)
	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" 
	;;
esac
exit $RETVAL

Este archivo va en /etc/rc.d/init.d con el nombre servbce.

Para iniciar el servicio, como root:

service servbce start

Para detener:

service servbce stop

Y listo.

Impresoras

Las impresoras normalmente hace falta configurarlas con CUPS. Si el controlador no está instalado, le va a proponer alguno de los que si están instalados, y puede no funcionar si la impresora es rara. Si no funciona, hay que buscar en internet cuál controlador se recomienda para esa impresora y buscarlo en "Añadir/Quitar software" para agregarlo antes de instalar la impresora.

Las computadoras cliente, si son linux, encontrarán y configurarán automáticamente las impresoras compartidas en la red. Aparentemente, el que hace el descubrimiento es el servicio Avahi.


Modelos usados y Controladores

La siguiente es una lista de los modelos de impresoras que he configurado y los controladores usados. Si el controlador no está instalado, lo que es más probable, instalar con Sistema | Administración | Añadir/Quitar software y buscar por el nombre mismo del controlador. Luego reintentar instalar la impresora o simplemente cambiar el controlador.

  • HP LaserJet 1200: por cable usb y paralelo. Recomiendo usb. Controlador pxlmono. 05 Abr 2010: hpcups 3.10.2 [1]
  • HP LaserJet 1150: usb, no usar por paralelo. Controlador hpijs
  • HP LaserJet 1020: usb. Controlador foo2zjs de rpmfusion.org.
  • HP LaserJet 1022: usb. Controlador hpijs
  • HP LaserJet M1120 MFP Multifunción: usb. Controlador foo2xqx de RPM Fusion
  • HP LaserJet P1505: usb. Controlador foo2xqx de RPM Fusion.
  • HP Color LaserJet 2600n: por red. Controlador foo2hp
  • KonicaMinolta 1350W: usb. Controlador min12xxw
  • Epson CX45: usb. Controlador gutenprint-ijs-simplified.5.0
  • Epson Stylus C63: usb. Controlador gutenprint-ijs-simplified.5.2
  • Canon LBP 3000: usb. Controlador LBP3000 CAPT ver 2.20 o 2.30 dentro del tar.gz hay unos rpm que andan bien en Fedora 14. [2]

[1]

En Fedora 11, luego de actualizar el 05 Abr 2010, se cambió a otro controlador. Luego a mano se cambió con éxito a hpcups 3.10.2 y todo volvió a la normalidad.

Para las impresoras hp, con hpcups anda bien desde Fedora 11 en adelante. HP se ha puesto las pilas con linux. :-)

Para descargar el complemento va a necesitar entrar a una ventana de terminal y hacer lo siguiente:

su -c 'hp-setup'

Luego hay que pedirle que descargue el plugin o complemento desde internet, y seguir los pasos para agregar la impresora.

[2]

El paquete que yo bajé fue CAPT_Printer_Driver_for_Linux_V220_uk_EN.tar.gz y la versión 2.30, y ambos funcionan de la misma manera con las mismas instrucciones dadas a continuación.

Instrucciones para instalar los drivers conseguidos

1. Instalar los paquetes como root

yum localinstall --nogpg cndrvcups-capt-2.20-1.i386.rpm cndrvcups-common-2.20-1.i386.rpm

2.luego hacer como root

/usr/sbin/lpadmin -p LBP3000 -m CNCUPSLBP3000CAPTK.ppd -v ccp://localhost:59687 –E

/usr/sbin/ccpdadmin -p LBP3000 -o /dev/usb/lp0

/etc/init.d/ccpd restart

3.Abrir el puerto 59687 tcp y udp.

4.El servicio ccpd no inicia en forma predeterminada. En /etc/rc.d/rc.local yo puse

/sbin/service ccpd start

Por cualquier cosa, el manual completo está como html en guide-capt-2.2xE.tar.gz y fue de ahí que se sacaron estas instrucciones.

No usar system-config-printer para configurarla porque pone el URI incorrecto.

A propósito, esa impresora puede usar toner 12A. Yo probé con los alternativos, que son muy económicos, y anda muy bien. Incluso es más rápida, imprime más copias por minuto.

Clientes de Impresión Windows

En clientes windows, instalar impresora de red con URL http://ip_equipo_con_impresora:631/printers/nombre_de_la_impresora

El controlador de impresión a usar lo saca Utilizando Disco, luego de elegir el fabricante.

Si no funciona con el driver provisto, se puede usar la impresora genérica proveedor Microsoft, tipo Imagesetter (postscript).

Pero podría ser rechazado por la impresora, por ejemplo, una HP LaserJet 1150 rechaza los comandos postscript.

Impresora Predeterminada

A veces no se puede cambiar la impresora predeterminada desde Sistema -> Administración -> Impresión. Si esto le pasa, desde una terminal haga como root:

lpoptions -d nombre-de-impresora

donde nombre-de-impresora es el nombre que muestra system-config-printer (Sistema -> Administración -> Impresión) en la lista de impresoras al iniciarse.

Problema de Bloqueo de Impresora en Fedora 10 en adelante

A partir de cups 1.3.10, hay un bloqueo del servidor de impresión cuando resuelve los nombres. Si no logra determinar el nombre de la PC donde está corriendo, se autobloquea cupsd.

Para resolver este problema, agregar

ServerAlias *

al principio del archivo /etc/cups/cupsd.conf. Con esto va a aceptar conexiones con cualquier nombre de servidor.

Impresoras con URIs extraños

Cuando un servidor cups está publicando impresoras de red que ha detectado, cuando los servidores originales de esas impresoras ya no existen o no tienen la impresora configurada puede dejar al servidor cups con la impresora con un URI incorrecto, normalmente /dev/null. Esto hace que a veces detecte mal la impresora nuevamente si es que vuelve a ser configurada.

Como usuario root de Linux, hacer

service cups stop
rm /var/cache/cups/remote.cache
service cups start

Luego de unos segundos deberían aparecer las impresoras correctas.

Impresoras de red

A veces pone un socket extraño para imprimir, funciona a la perfección durante unos días y después de una actualización deja de funcionar.

El URI del dispositivo debe ser

socket://192.168.1.11:9100 

o el número ip que corresponda para su red. Este es mi caso para una HP 2600n color.

Encolado de muchos trabajos de impresión

Me pasa muy a menudo que necesito imprimir más de 1000 trabajos de una vez, a veces de varias copias cada uno.

Cups encola solamente 500 trabajos aproximadamente, hay que cambiarle la configuración para que permita encolar más de una sola vez. Para hacer eso, en /etc/cups/cupsd.conf agregar en algún lado al comienzo lo siguiente:

MaxJobs 10000
MaxJobsPerPrinter 5000
MaxJobsPerUser 10000

MaxJobs es cantidad máxima de trabajos.

MaxJobsPerPrinter es cantidad máxima de trabajos por impresora.

MaxJobsPerUser es cantidad máxima de trabajos por usuario.

Ver con man cupsd.conf lo que significa cada uno de los parámetros.

SELinux y resolución de problemas

En servidores y clientes conviene tener SELinux habilitado. En servidores es porque necesitamos la máxima seguridad. En clientes, porque necesitamos proteger al linux del cliente y de ataques externos.

SELinux me ayudó a detectar, por ejemplo, un virus que entró en un equipo con windows en una red con Fedora 11 en la puerta de enlace a internet, con un proxy squid corriendo ahí. El virus desde adentro de la red usaba el proxy para hacer sus cosas, y el proxy no estaba bloqueado para usuarios internos, por lo que se tuvo que hacer una configuración más fina de squid.

Usar Linux con la política destinada en modo obediente. Desde Fedora 11 en adelante, la política destinada viene bastante depurada. Y desde entonces está disponible un manual para configurar selinux, la guía del usuario de SELinux, en donde está documentado lo mínimo indispensable para entender y configurar exitosamente selinux.

NOTA: en Fedora 12 no tuve que hacer ningún cambio a las políticas predeterminadas de SELinux, para un equipo que hace de servidor SMTP, POP3, DNS primario y HTTP con dominios virtuales. Le agregué incluso mediawiki con un skin de Paul Gu, y una serie de aplicaciones cgi para un sistema on-line propio.

Cambio de tipos de archivos

Averiguar primero el tipo que debe tener el directorio y los archivos que lo contienen. Por ejemplo, yo tengo el squid en el directorio /cache, y el tipo es squid_cache_t, entonces hay que hacer:

semanage fcontext -a -t squid_cache_t "/cache(/.*)?"

y luego reetiquetar para que quede con el tipo apropiado al reiniciar también:

restorecon -R -v /cache

Agregado de políticas

En el caso del ejemplo del squid de la sección anterior, todavía hay que agregar políticas de acceso debido al cambio de directorio. Para cada error de selinux, copiar los mensajes crudos de auditoría a un archivo de texto. Como root hacer lo siguiente:

cat elarchivo.txt | audit2allow -M mipolitica

luego hay que instalarla, como root hacer:

semodule -i mipolitica.pp

Si desea ver qué ha hecho, hacer

cat mipolitica.te

Con esto puede resolver todos los problemas de SELinux. Pero primero asegúrese de que el error de SELinux obtenido no sea un problema de etiquetado, para no crear políticas potencialmente peligrosas. Asegúrese también de que no sea un intento de ataque.

Poniendo un dominio en modo permisivo

A veces es necesario poner un dominio en modo permisivo para ver lo que habría negado si estaba en modo obediente. Para hacerlo, usar el siguiente comando:

semanage permissive -a httpd_t

en este caso, se pone permisivo el dominio del navegador web.

Para listar qué dominios están en modo permisivo:

semodule -l | grep permissive

Para volverlo a poner en modo obediente:

semanage permissive -d httpd_t

Los mensajes van a parar normalmente a /var/log/messages, los debe sacar de ahí o del asistente de selinux si desea crear una política para permitir el acceso después, como se indica más arriba en Agregado de Políticas.

Compartir Directorios con Samba

Si necesita compartir directorios para acceder a archivos tipo abrir un documento o abrir una planilla de cálculo, le conviene usar NFS 4 y no Samba.

Utilice Samba cuando haya que compartir directorios de una PC Linux para que accedan clientes windows.

Instrucciones para compartir

  1. Instalar samba y sambaclient
  2. Abrir los puertos correspondientes, en Fedora 9 y posterior hay uno para cliente samba y otro para servidor samba.
  3. En /etc/samba/smb.conf tienen que estar las siguientes instrucciones mínimas. Si no están, agréguelas al smb.conf por defecto que viene en el paquete samba.


[global]
	workgroup = GRUPO
	server string = Servidor Samba de Boris Version %v
	interfaces = lo eth0 eth1 
	hosts allow = 127. 192.168. 

	# logs split per machine
	log file = /var/log/samba/log.%m
	# max 50KB per log file, then rotate
	max log size = 50
	
	security = share
      guest ok = yes
      guest account = usuario
	passdb backend = tdbsam
	
	wins support = yes
	wins proxy = yes
	dns proxy = yes

	load printers = yes
	cups options = raw
	printing = cups

#============================ Definiciones de qué se comparte ==============================
	
[printers]
	comment = Todas las Impresoras
	path = /var/spool/samba
 	browseable = no
	guest ok = no
	writable = no
	printable = yes
	
[c]
	comment = Acceso Publico
	path = /home/usuario/compartido
	public = yes
	writable = yes
      browseable = yes
	guest ok = yes
	printable = no

Una vez finalizada la configuración, habilitar el servicio en Sistemas -> Administración -> Servicios.

Desde Nautilus, el explorador de archivos predeterminado de GNOME, se debe escribir

smb://elservidor/c

para listar el directorio compartido como c en elservidor. Puede llegar a tener problemas con los permisos de accesos desde sistemas Linux. Se puede resolver montando automáticamente el recurso compartido.

Conexión Automática al Recurso Compartido

Yo usé cron. En /etc/cron.d agregar un archivo con nombre que Ud. elija, por ejemplo, misdiscos, con el siguiente contenido

/etc/cron.d/misdiscos:

*/2 * * * * usuario /etc/rc.d/discos &> /dev/null

El "&> /dev/null" es para que no mande correo cada vez que lo haga, sino mandaría cada 2 minutos un correo al usuario y el archivo en /var/spool/mail/usuario puede crecer mucho. Luego, en /etc/rc.d/discos hay que montar los directorios. El contenido sería el siguiente:

/etc/rc.d/discos:

#!/bin/bash

if [ ! -r /home/usuario/i/nada.txt ]; then
  mount /home/usuario/i
fi 

if [ ! -r /home/usuario/j/nada.txt ]; then
  mount /home/usuario/j
fi

Este archivo tiene que ser ejecutable. En el script se mencionan un subdirectorio i y otro j dentro del directorio del usuario, por lo tanto hay que crearlos. Todos los directorios en donde se montan los recursos compartidos deben estar vacíos.

También se menciona un archivo nada.txt. Debe crear un archivo nada.txt en el directorio compartido de la máquina servidora. Para montar, prueba si el archivo nada.txt es accesible para lectura, si no es accesible, monta el recurso compartido.

Al montar, lo hace solamente con el nombre del directorio, por lo tanto debe estar mencionado en /etc/fstab. Agregue las siguientes líneas para el ejemplo dado arriba:

/etc/fstab (agregar lo siguiente a ese archivo):

//pc1/c  /home/usuario/i  cifs users,credentials=/home/usuario/credsmb,dir_mode=0777,file_mode=0777 0 0
//pc2/c  /home/usuario/j  cifs users,credentials=/home/usuario/credsmb,dir_mode=0777,file_mode=0777 0 0

En esas líneas se ponen explícitamente qué tipos de permisos se necesitan. Menciona también las credenciales a usar, que están en el archivo credsmb.

/home/usuario/credsmb:

username=Invitado
password=

Con esas credenciales, va a funcionar también para computadoras windows compartiendo directorios.

No olvidar crear el archivo nada.txt en //pc1/c y las demás PCs a las que se acceda, para que se pueda probar la existencia del punto de montaje.

Para que esto funcione, se necesita que mount y unmount puedan ser ejecutados por los usuarios normales y no por root únicamente. En una ventana de terminal, como root hacer lo siguiente:

chmod +s `which mount.cifs`
chmod +s `which umount.cifs`

Cómo detectar virus en máquinas con Windows

Los virus de Windows normalmente crean archivos en los directorios compartidos que encuentran en la red local. El truco es hacer log del acceso a archivos al recurso compartido en la máquina linux y pedir que imprima la IP.

Hay que retocar /etc/samba/smb.conf para que en el recurso compartido tenga lo siguiente:

[c]
    path = /dir/compartido
    ...
    vfs object = full_audit
    full_audit:failure = none
    full_audit:success = unlink rmdir open
    full_audit:prefix = %I|%m|%S

En full_audit:prefix %I muestra el IP del equipo que hizo la operación exitosa, que es lo que nos interesa.

Entonces el trabajo se reduce a buscar en los log las operaciones relacionadas con el archivo sospechoso. Supongamos que el virus crea un archivo oculto con nombre khw, entonces habría que hacer, como root:

grep khw /var/log/messages

y entonces le aparecerá la IP de la máquina infectada.

Obviamente, se recomienda cambiar a Fedora Linux ese puesto de trabajo, en la medida de lo posible. :-)

Fuentes Truetype

GNOME busca las fuentes primero en el directorio .fonts del usuario. Entonces hay que copiar los archivos .ttf al directorio ~/.fonts, si no existe el directorio, crearlo.

Para el Sistema BCE, las fuentes utilizadas en windows son las que están en los archivos siguientes

  • Arial
    • arialbd.ttf
    • arialnb.ttf
    • arialbi.ttf
    • arialni.ttf
    • ariali.ttf
    • arialn.ttf
    • arialnbi.ttf
    • arial.ttf
  • Códigos de barras
    • Code128bWin.ttf (Código 128C, numérico)
    • Code128bWinLarge.ttf (Código 128C, numérico)
    • debcbar.ttf (Codabar, numérico)
    • debecker.ttf (Código 39, alfanumérico)
  • Courier New
    • couri.ttf
    • courbi.ttf
    • cour.ttf
    • courbd.ttf
  • Times New Roman
    • times.ttf
    • timesbd.ttf
    • timesbi.ttf
    • timesi.ttf
  • Microsoft Sans Serif
    • micross.ttf

El sistema toma las fuentes al instante. Puede llegar a necesitar salir y volver a entrar para que tome las fuentes recién copiadas al directorio .fonts del usuario.

Cambiar lo que arrancará por defecto Grub 2

Fedora usa por defecto la opción

GRUB_DEFAULT=saved

en el archivo /etc/default/grub, si no está así, cambiarlo con

grub2-editenv set GRUB_DEFAULT=saved

Luego configurar el que va a arrancar por defecto con

grub2-set-default <título en menú o número>

El número puede cambiar cuando actualiza el kernel. Si va a usar el título que muestra en el menú, encerrarlo entre comillas simples o dobles.

Al título lo puede sacar usando el siguiente comando, que lista todas las opciones posibles:

grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2

Luego aplicar los cambios haciendo

grub2-mkconfig -o /boot/grub2/grub.cfg

Rescate de una Instalación de Grub

Cuando se instala linux, se instala grub como gestor de arranque. Al principio, los usuarios miedosos del cambio pueden llegar a instalar linux y windows en la misma PC. El orden de instalación debería ser primero el linux y después el windows. Pero, luego de instalar windows, éste rompe la configuración de grub.

Para recuperar la instalación de grub,

  1. entrar en modo rescate desde el medio de instalación usado (CD, DVD o pendrive)
  2. chroot /mnt/sysimage
  3. grub-install /dev/sda

cambiar /dev/sda por el disco en donde están los sistemas operativos instalados (sda, sdb, sdc, etc.)

Evolution y GNOME Keyring

Evolution es el cliente de correo recomendado. Es muy potente y tiene a spamassassin como antispam. Anda muy bien, lo recomiendo, no va a extrañar para nada el outlook.

El drama es que a veces el cliente cambia la contraseña, entonces evolution se queja de que debe ingresar la clave para habilitar el GNOME Keyring, y debe ingresar la clave anterior.

Para resolver este problema, borrar el directorio ~/.gnome2/keyrings. La próxima vez que ingrese a evolution, le pedirá la clave de usuario, y debe ingresar la misma que usa para ingresar a linux. De esta manera, al coincidir las contraseñas, el GNOME Keyring no le pedirá la clave de nuevo, hasta que la cambie el usuario.

Se me bloquea el teclado numérico

Alt-MayusIzq-BloqNum

OpenSSH

El openssh se utiliza mucho para entrar de una máquina a la otra en modo terminal, sin molestar a los usuarios.

Configuración de OpenSSH

  1. Instalar el paquete openssh.
  2. Agregue en /etc/sshd_config una línea con AllowUsers donde liste todos los usuarios que pueden ingresar
AllowUsers usuario otrousuario
  1. Con ssh-copy-id dar de alta desde la máquina cliente los usuarios que pueden ingresar a este equipo.

Configuración del Cortafuego

El objetivo es bloquear los intentos de acceso por fuerza bruta.

Se debe primero desmarcar ssh de Servicios Confiables.

En Archivos de reglas personalizadas agregar /home/yo/misreglasssh a la tabla filter, para ipv4.

En el archivo /home/yo/misreglasssh, tiene que ir lo siguiente:

-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set
-A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 60 --hitcount 4 -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

La primera es para solicitar rastreo de una ip, la segunda es para incrementar el contador de cuántas veces coincidió, en un intervalo de 60 segundos y que, cuando llegue al cuarto intento, bloquee la conexión. Es decir, dará tres intentos en un minuto, luego negará todos los demás intentos que se den en un intervalo menor a un minuto.

Agregando usuarios clientes

Primero hay que generar una clave dsa o rsa. Yo prefiero dsa por ser libre. Y también prefiero que mis claves dsa no tengan clave de manera que no necesite poner la clave cada vez que haga "ssh usuario@computadora" para entrar a una computadora.

Para generar el par de claves dsa sin contraseña:

ssh-keygen -t "dsa" -P""

el -P"" es password sin password.

Para generar claves rsa, el comando es directamente

ssh-keygen

Hay que tener en cuenta que Git Bash usa el nombre de archivo id_rsa.pub, y su Ud. elige otro nombre, no lo levantará y no funcionará sin claves.

Luego, para agregarme como cliente a otra computadora servidora ssh debo hacer:

ssh-copy-id -i ~/.ssh/id_dsa.pub usuario@ip_o_nombre_equipo

Va a pedirle la clave de usuario en el equipo servidor.

Se puede verificar si está tudu legal haciendo

 ssh usuario@ip_o_nombre_equipo ls

Si lista el directorio de inicio de usuario en ese equipo es porque está todo bien.

Copiando claves a otras máquinas

En el apartado "Agregando usuarios clientes" se indicaba como agregarse uno como cliente desde un equipo A a otro equipo B.

Ahora, el problema de sentarse en el equipo B y conectarse como cliente al equipo A, se puede hacer también sin claves copiando directamente las claves desde el equipo A al B. No hace falta generar claves nuevas. Para esto hacer:

scp usuario@equipo_A:~/.ssh/id_dsa* usuario@equipo_B:~/.ssh
scp usuario@equipo_A:~/.ssh/authorized_keys usuario@equipo_B:~/.ssh

Si está sentado en el equipo A se puede hacer de esta otra forma:

scp ~/.ssh/id_dsa* usuario@equipo_B:~/.ssh
scp ~/.ssh/authorized_keys usuario@equipo_B:~/.ssh

Y si está sentado en el equipo B, hay otra alternativa:

scp usuario@equipo_A:~/.ssh/id_dsa* ~/.ssh
scp usuario@equipo_A:~/.ssh/authorized_keys ~/.ssh

Luego, desde el equipo B haciendo

ssh usuario@equipo_A

no debería pedirle clave alguna.

NO OLVIDAR que usuario debe estar en AllowUsers del /etc/ssh/sshd_config del equipo_A, sino no lo dejará entrar. AllowUsers viene normalmente comentado, pero no es recomendable porque le intentarán entrar como root.

Espero que les haya gustado, para mi es de extrema utilidad, cuando se lo combina con sshfs, explicado más adelante.

Redirección de Puertos en Máquinas Internas de una Red

Si Ud. tiene acceso a un solo equipo que tiene Fedora, y necesita entrar a otras máquinas adentro de la red destino, se pueden redireccionar puertos con ssh de una manera sencilla.

Supongamos que se quiere ingresar al equipo cámaras web interno en la red local destino, que tiene abierto el puerto 80, debería hacer algo así:

ssh -L 8080:192.168.1.15:80 usuario@equipo.dominio.com.ar

En este ejemplo, Ud. tiene acceso al equipo equipo.dominio.com.ar por el puerto 22 de ssh, y necesita acceder al equipo con IP 192.168.1.15 (la consola de las cámaras) por el puerto 80, entonces se redireccionan todas las conexiones al puerto 8080 de 127.0.0.1 en la máquina donde ejecuta el comando al puerto 80 del IP 192.168.1.15 usando una conexión encriptada con equipo.dominio.com.ar usando el puerto 22. En el equipo donde ejecutó el comando deberá ingresar por el navegador web usando la URL:

http://127.0.0.1:8080

Si le da un error como el que sigue

channel 3: open failed: administratively prohibited: open failed

es porque SELinux está negando el reenvío de puertos. Hacer lo siguiente para permitirlo, como root:

setsebool sshd_forward_ports 1

si quiere los cambios permanentes:

setsebool -P sshd_forward_ports 1

Realmente no hay límites para lo que se puede hacer con ssh en Fedora.

sshfs

En redes vulnerables, queda claro que una conexión encriptada es la mejor opción. sshfs monta un directorio compartido en una máquina cliente, usando una conexión encriptada con ssh. Es una joya, porque es muy simple y fácil de usar y a prueba de cualquier sniffer, por lo que se puede implementar en redes inseguras brindando una seguridad muy alta. Que alguien me corrija, creo que no existe esto en windows.

Previo a usar sshfs debe aprender cómo configurar OpenSSH. Si OpenSSH está bien configurado en el servidor, conectar como usario y acceder a sus archivos es muy sencillo con sshfs.

Se debe instalar el paquete fuse-sshfs.

Para montar el directorio hacer:

sshfs usuario@servidor:/directorio/subdir /home/yo/dirmnt -o sshfs_sync,cache=no,no_readahead

y para desmontar:

fusermount -u /home/yo/dirmnt

Las opciones especificadas para montar son:

  • sshfs_sync para que sincronice la escritura.
  • cache=no para que no haga cache, lo que es normalmente peligroso cuando hay mucha gente que accede al mismo archivo al mismo tiempo.
  • no_readahead si no hace caché, la prelectura es innecesaria.

Ver con man sshfs las opciones disponibles.

Se puede automatizar el montaje con cron.d, como se especifica en una sección más arriba.

Firma Digital y Encriptación con GPG

Generación de claves y administración

Para generar la clave, en su cuenta de usuario hacer:

gpg --gen-key

Elegir dsa-elgamal con tamaño de clave 1024. Actualmente, hasta con Fedora 12, seahorse y seahorse-plugins no funciona con claves mayores a 1024 bytes.

Hay que generar también un certificado de revocación de la clave:

gpg --output revocar.asc --gen-revoke micuenta@midominio.com

Guardar el archivo revocar.asc, por las dudas quede comprometida la clave.

Exportar la clave pública para que pueda pasárselas a sus posibles destinatarios de correo.

gpg --armor --export micuenta@midominio.com > micuenta.asc

el archivo micuenta.asc es el que debe enviar a sus destinatarios para que puedan autenticar sus mensajes.

Exportar también la clave privada, para guardarla por las dudas se rompa la máquina de trabajo.

gpg --armor --export-secret-key micuenta@midominio.com > micuenta-priv.asc

De más está decir que micuenta-priv.asc no debe caer en manos peligrosas.

Con micuenta-priv.asc y micuenta.asc se puede resolver el problema de reinstalar el linux, para no generar de nuevo y volver a circularizar las claves.

Para importar cualquiera de las claves (pública o privada), simplemente hacer:

gpg --import micuenta.asc

El nombre del archivo es micuenta.asc o micuenta-priv.asc, dependiendo de cuál clave se trate.

Encriptar archivos

Desde la línea de comando se debe hacer:

gpg -er destinatario@dominio.com.ar archivo

y generará un archivo.pgp en formato binario con la clave pública de destinatario@dominio.com.ar

Si la transferencia es por email o por http, conviene que sea en formato ascii 7 bits. Hacer lo siguiente:

gpg -a -er destinatario@dominio.com.ar archivo

y generará un archivo.asc con el archivo original encriptado en formato ascii.

Desencriptar archivos

Supongamos que le mandan un archivo.zip.pgp, para desencriptar hacer:

gpg -o archivo.zip -d archivo.zip.pgp

y obtendrá el archivo.zip.

Puede ser que le hayan mandado un archivo.zip.asc, en cuyo caso el procedimiento es el mismo.

Configuración de Evolution para Firmas Digitales

Para que Evolution firme los correos y pueda encriptar, debe seleccionar en "Preferencias --> Editar su Cuenta de Correo --> Seguridad" la opción "Firmar siempre los mensajes salientes cuando se use esta cuenta".

Complementos para Integración con GNOME

Se deben instalar los paquetes seahorse y seahorse-plugins.

Activa las opciones en GNOME para:

  • Descifrar fichero
  • Cifrar
  • Firmar
  • Importar clave

Por supuesto, funciona también dentro de evolution, lo cual simplifica mucho el trabajo con firmas digitales y archivos encriptados intercambiados por correo.

Configuración de Conexión para todo el Sistema con NetworkManager

NetworkManager viene configurado para administrar conexiones para el usuario actual, por lo que las mismas no están disponible si algún usuario no ingresó al sistema, lo cual suele ser problemático en conexiones inalámbricas.

Primero modificar en /etc/NetworkManager/nm-system-settings.conf en la sección main para que diga

plugins=keyfile

Por defecto viene plugins=ifcfg-rh para que use la configuración de system-config-network.


Listar Archivos y Sacar Extensión

Por ejemplo, si quiero listar los *.po y sacarles la extensión .po hay que hacer:

ls *.po | sed 's/\.po//g'

Sacar \r de archivos de texto de Windows

En Linux, un fin de línea es \n, en cambio en Windows es \r\n.

Para algunos scripts de bash o sh, a veces el \r da problemas. Para eliminarlo hacer lo siguiente:

sed 's/\r//g' archivofuente.txt > archivodestino.txt

Luego puede reemplazar el archivo fuente con el archivo destino generado.


Servidor CVS con pserver

El CVS anda muy bien, no es difícil configurarlo y tiene muchos años de uso, por lo que debe estar recontraprobado hasta ahora. Maneja archivos binarios sin problemas.

CVS es la solución para el programador que vive de la programación, debido a que le permite rastrear todos los cambios importantes en todos y cada uno de los archivos de su proyecto de programación.

CVS también se puede utilizar en repositorios de archivos de documentos, aunque para estos tipos de archivos puede ser mejor o más práctico un respaldo con rsync.

Instalación del servidor CVS

Instalar xinetd y modificar el /etc/xinetd.d/cvs con las siguientes líneas:

/etc/xinetd.d/cvs:

disable = no
env = /el_dir_del_repositorio_cvs
server_args = -f --allow-root=/el_dir_del_repositorio_cvs pserver

y comentar la línea con bind para que atienda en todas las direcciones de la PC servidora.

Hay que agregar el usuario cvs y que use de shell a /sbin/nologin. El directorio de inicio del usuario cvs debe ser /el_dir_del_repositorio_cvs La clave no importa porque no se usará.

Luego, hay que crear el archivo de claves.

htpasswd -c -d /el_dir_del_repositorio_cvs/CVSROOT/passwd usuario1
htpasswd -c -d /el_dir_del_repositorio_cvs/CVSROOT/passwd usuario2

para cada usuario que agregue le va a pedir contraseñas. Ingresar las que desee el usuario.

Luego, al final de cada línea de usuario en ese archivo passwd, agregar :cvs que significa que pertenece al grupo cvs.

En este punto de la configuración, debe restaurar el respaldo del repositorio cvs en /el_dir_del_repositorio_cvs, si es que así fuere.

Finalmente, se debe hacer

 chown -R cvs:cvs /el_dir_del_repositorio_cvs

para que el usuario cvs pueda acceder a los archivos del repositorio.

Instalación y uso del cliente de CVS

Si es linux, cvs de linux. Si es windows, usar TortoiseCVS.

La primera vez que acceda le pedirá que haga login. Hacer:

cvs -d ":pserver:usuario@IP_o_Nombre:/el_dir_del_repositorio_cvs" login

Luego simplemente laburar. Para bajar módulos del repositorio:

cvs -d ":pserver:usuario@IP_o_Nombre:/el_dir_del_repositorio_cvs" -z9 co el-modulo

Para subir los cambios realizados:

cvs -d ":pserver:usuario@IP_o_Nombre:/el_dir_del_repositorio_cvs" -z9 ci -m "" el-modulo

Yo tengo un archivo script de shell con todo los "cvs co" para bajar y otro con los "cvs ci" para subir los cambios hechos.

También se puede usar un cliente gráfico. Bajo linux, Cervisia funciona muy bien. Bajo windows, TortoiseCVS se integra con el explorador de windows.

MediaWiki

Este tema es extenso, por lo que se creó una página separada para documentarlo.

Haga clic aquí: MediaWiki

Teclado Bloqueado en Modo Gráfico

Esto me pasó una vez, resulta que luego de alguna configuración se me bloqueó el teclado. Luego de hurgar, me dí cuenta que el teclado no estaba en /etc/X11/xorg.conf, por lo que lo tuve que agregar y reiniciar el equipo. Esto lo hice con Ctrl+Alt+1 entrando en modo texto.

Por alguna razón, me había borrado InputDevice en ServerLayout y la sección completa InputDevice con id Keyboard0.

En /etc/X11/xorg.conf tengo actualmente:

# Xorg configuration created by pyxf86config

Section "ServerLayout"
	Identifier     "Default Layout"
	Screen      0  "Screen0" 0 0
	InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "Device"
	Identifier  "Videocard0"
	Driver      "intel"
EndSection

Section "InputDevice"
	Identifier "Keyboard0"
	Driver "kbd"
	Option "XkbModel" "pc105"
	Option "XkbLayout" "es"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

Aclaro también que esto lo hago en mi PC de prueba, que es la de este wiki, y por eso se rompió. No actualicen de manera frecuente en su servidor empresarial, menos sin antes probar los cambios en otra PC.


Buscador Beagle

He probado google desktop y me gustó más el beagle-search porque es más eficiente y busca solamente en mi PC. Además hace un manejo incremental de los índices, en donde google desktop hacía que la máquina se ponga realmente lenta.

Los resultados de búsqueda son realmente excelentes, y busca también en cuentas del correo electrónico manejado con evolution para el usuario actual.

  • Instalar beagle, beagle-evolution y beagle-gnome
  • A la partición donde guarda sus documentos, habilitarle los atributos extendidos. Agregarlo en fstab
/dev/hda3     /home     ext3     defaults,user_xattr     1 2
  • Una vez habilitado en fstab, volver a montar la partición
# mount -o remount /home
  • Agregar un lanzador al escritorio que inicie el programa 'beagle-search'. Ese es el buscador en modo gráfico.

Al principio, beagle-search le mostrará que está armando el índice. Puede tomar un par de horas para indexar aproximadamente 1000 archivos de texto .odt o .doc. Durante ese tiempo, la máquina se pondrá un poquito más lento, no tanto como con google-desktop para linux. Luego, solamente hay que buscar. En resumen, una joya, muy útil.


Restaurar una Sesión de GNOME

Esto me pasó el 20 Oct 2008. Estaba trabajando con mi laptop y mi hija me apagó la computadora. Entonces quedaron grabadas las aplicaciones que estaban en ejecución en ese momento, lo que hacía que al volver a entrar a la sesión de GNOME, éste se colgaba y no había forma de que entre.

Lo que hay que hacer, es volver a la configuración predeterminada. Para esto hay que borrar los directorios .gnome2 .gconf .gconfd y .metacity del directorio /home/usuario del usuario en cuestión. Y listo, arranca un GNOME limpito.

Para borrar debe entrar en una terminal con Ctrl-Alt-F1 a F4. Sino, en modo gráfico entrando como root.


Respaldo de Archivos con rsync

En la mayoría de las redes hay máquinas que son puestos importantes con documentos y archivos a respaldar. Al ser puestos importantes no se puede molestar cada tanto para respaldo, sino que conviene que sea automático. Para esto se puede usar rsync combinado con ssh y cron.

La línea de comando para respaldar es:

rsync --progress -avzre ssh usuario@ip-o-nombre-maquina:/home/usuario/doc/* dir-local-res

-a es archivo, -v que muestre lo que va haciendo, -z que comprima antes de transferir, -r para que inspeccione los subdirectorios también, -e ssh que use el shell ssh. Ver en la configuración de OpenSSH sobre cómo configurar para entrar sin que pida clave. Iría una línea por directorio a respaldar en un archivo de comando, y en /etc/cron.d un archivo con la línea siguiente:

* 13,20 * * * yo /home/yo/respaldos/respaldar

Esta línea significa que en las horas 13 y 20 de cada día, ejecute como usuario 'yo' el archivo respaldar, que tiene todas las líneas con comandos rsync para sacar el respaldo que yo quiero. Ver en 'man 5 crontab' el formato de los archivos que van en /etc/cron.d, para aprender cómo especificar horas y días.

No hace falta aclarar que el tráfico por la red va encriptado gracias a ssh, por lo que los intrusos no podrían interceptar información importante y valiosa con un sniffer.


rsync

rsync es un comando de copia que sirve principalmente para sacar respaldos.

A continuación doy unos ejemplos de usos en ambientes empresariales.

Actualización de Sistemas con rsync

En un cliente en donde todavía se está desarrollando sistemas, los ejecutables cambian muy a menudo, y llevar un registro de qué computadoras se actualizaron y cuándo es complicado y hasta tedioso, cuando son más de 20 equipos. Entonces, pruebo los ejecutables en un equipo, y luego los desparramo a los demás con rsync. No he encontrado hasta ahora otra forma mejor de hacerlo. Antes usaba wget con unzip, pero había que primero hacer zip de los ejecutables y subirlos a un servidor ftp o http. Con rsync se simplifica el proceso e incluso se puede automatizar.

La línea de comando para coordinar los ejecutables es:

rsync --progress -avze ssh usuario@ip-o-nombre-maquina-prueba:/home/usuario/progs/* ~/progs

-a es archivo, -v que muestre lo que va haciendo, -z que comprima antes de transferir, -e ssh que use el shell ssh. Ver en la configuración de OpenSSH sobre cómo configurar para entrar sin que pida clave. En mi caso, yo uso siempre un directorio progs. Cambiar por el que le guste a Ud. usar.

El comando rsync dado contempla el caso en que en el directorio progs de origen hay menos archivos que en el directorio progs de destino, que es el caso en que sólo se actualizan partes importantes, algo muy frecuente para mí. En el destino no se borra nada.

De más está aclarar que el tráfico por la red va encriptado gracias a ssh.

Actualizar sólo los archivos actualizados

El siguiente comando actualiza solamente los archivos que fueron actualizados sin agregar archivos nuevos que pudieran haber.

rsync -rva --existing ~/cmm/dirfue/ ~/dirdes/

Es útil cuando se está actualizando el árbol de códigos fuentes para un rpm sin agregar archivos nuevos del proyecto por error.

El / del final es importante para que no cree el directorio si no existe. Si el dirdes no existe, debe ir ~/dirdes sin la / al final.

Deshacer una actualización con yum

Las actualizaciónes en Fedora a veces rompen versiones de programas que funcionaban bien. Por ejemplo, evolution-2.24.1 imprimía bien, pero evolution-2.24.4 se colgaba al intentar imprimir, aparentemente por un error en los desarrolladores de evolution. La corrección al error estaría en la versión 2.24.5, días después de estar disponible la versión 2.24.4.

Para volver atrás, borrar incluyendo las dependencias:

yum remove paquete

Luego, para instalar el anterior:

yum install paquete-version-lanz.arch

e instalar las dependencias inclusives. Si hay problemas al instalar las dependencias, instalarlas una a una a mano con yum install y el nombre completo del paquete, con versión incluída.


Multimedia

De más está decir, gnome-mplayer es el paquete a instalar. Está en rpm fusion. No olvidar instalar los plugins de los formatos a usar. Muy bueno.

Conversión de Formatos Multimedia

Las reuniones de directorio de donde trabajo a la mañana las grabamos para poder luego hacer el acta. Descubrí que es mejor grabar con un celular, por el micrófono bueno que tiene, y luego convertir el formato a mp3 con Mobile Media Converter (una joya), que debería estar en rpm fusion también. Luego, los mp3 los reproducimos con audacious (no olvidar el plugin de mp3) que nos permite ir hacia atrás y hacia adelante para desgrabar la reunión, obviamente se transcribe en un openoffice writer bajo fedora. :-)

Plugin de Firefox para ver páginas con MP3 incluídos

Cuando se abre una página que tiene sonido incorporado, da un error tratando de buscar un complemento decodificador MPEG-1 Layer 3 (MP3). Hay que instalar el paquete gstreamer-plugins-ugly del repositorio RPM Fusion Free (rpmfusion.org), sino lo va a enloquecer con los mensajes de error.

Ver videos .flv y .mp4 en Totem

Se usan los complementos de gstreamer. Instalar el paquete gstreamer-ffmpeg del repositorio nonfree.rpmfusion.org.

Totem está en Aplicaciones -> Sonido y Video -> Reproductor de Películas.

Recuperar fotos de una memoria de cámara con partición fat16 dañada

Bueno, qué se puede decir de la confiabilidad de FAT16. Nada. Las memorias de las cámaras digitales y de los celulares a veces se dañan por alguna razón, y se pueden ver caracteres extraños cuando los inserta en un adaptador para memorias en linux.

Sin hacer ninguna recuperación de partición, use la herramienta photorec del paquete testdisk que viene en Fedora. Se ejecuta como root:

su -c photorec

Hay que pedirle whole disk para que intente recuperar lo borrado y lo no borrado. Va a crear varios directorios de recuperación en el directorio desde donde fue ejecutado. Las memorias normalmente aparecen como /dev/sdb1, el programa le va a listar las opciones.

Hace un muy buen trabajo, pero es necesario que no intente ningún otro tipo de recuperación, para tener los mejores resultados.

Escuchar radio por Internet

Normalmente suele ser suficiente con el flash-plugin de Adobe, ver en su página como instalar, elegir yum y luego con Agregar/Quitar Software instalar el paquete flash-plugin.

En algunos casos puede llegar a necesitar el vlc player, para lo cual hay que instalar los paquetes siguientes: vlc, mozilla-vlc, gstreamer-ffmpeg y gstreamer-plugins-ugly.

Instalación manual del complemento flash de Adobe

Para 32 bits instalar en:

/usr/lib/mozilla/plugins/

Para 64 bits instalar en:

/usr/lib64/mozilla/plugins/

Configurar sendmail para que envíe correo usando Gmail

Mi proveedor de internet me pudrió con su política antispam, sinceramente. A pesar de que pago, ¡¡¡me bloquea correo saliente enviado con mi propia cuenta a mi propia cuenta!!! Así que ahora uso gmail, vamos a ver qué pasa.

El problema a resolver es el envío de correo automáticamente desde un sistema de información a mi cuenta de correo, para, por ejemplo, enviar el cierre de caja del punto de venta de una empresa a su dueño.

Se deben usar las opciones de SMART_HOST de sendmail.

Instalar el paquete sendmail-cf para reconfigurar sendmail.

Modificar /etc/mail/sendmail.mc para que tenga las siguientes opciones relevantes, aparte de las demás necesarias:

define(`SMART_HOST', `smtp.gmail.com')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`CERT_DIR', '/etc/ssl/certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/ca-bundle.crt')dnl
define(`confCRL', `CERT_DIR/ca-bundle.crt')dnl
define(`confSERVER_CERT', `CERT_DIR/miclave.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/miclave.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/miclave.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/miclave.pem')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

En Fedora 17 hay un directorio /etc/ssl/certs en donde están las claves de conexión ssl. Hay que generar ahí una clave nueva y un certificado, en un archivo al que llamaremos miclave.pem. Hacer lo siguiente como root:

cd /etc/ssl/certs
./make-dummy-cert miclave.pem

En el archivo /etc/mail/access agregaremos 2 líneas:

AuthInfo:smtp.gmail.com "U:usuario@gmail.com" "P:laclave" "M:LOGIN"
AuthInfo:smtp.gmail.com:587 "U:usuario@gmail.com" "P:laclave" "M:LOGIN"

Ya podemos reiniciar reiniciar el sendmail. Con tan sólo reiniciar ya se tomarán los cambios realizados.

systemctl restart sendmail.service

El sendmail ya está listo para mandar correo.

Mandar informe LogWatch a otra computadora en internet

Esto es cuando el ISP bloquea el envío de correo por su smtp que no sea un usuario válido del dominio.

Nuevas instrucciones al 06 Oct 2012:

Se necesita instalado el paquete sendmail-cf para reconfigurar sendmail.

Modificar /etc/mail/sendmail.mc para que tenga las siguientes opciones relevantes, aparte de las demás necesarias:

define(`SMART_HOST', `smtp.arnet.com.ar')dnl
define(`confDOMAIN_NAME',`arnet.com.ar')dnl
FEATURE(masquerade_envelope)

En el archivo /etc/mail/access agregar lo siguiente:

AuthInfo:smtp.arnet.com.ar "U:usuario@arnet.com.ar" "P:laclave" "M:LOGIN"

U: es el usuario y P: la clave en formato texto plano, tal cual como fue dada de alta la cuenta del usuario en arnet.com.ar

Estas eran las instrucciones anteriores al 06 Nov 2009

Las instrucciones que están funcionando por el momento (al 06 Nov 2009) son la siguientes.

  • Habilitar SMART_HOST en /etc/mail/sendmail.mc
define(`SMART_HOST', `smtp.midominio.com.ar')dnl
  • Comentar LOCAL_DOMAIN para que lo saque de /etc/hosts al mandar desde esta computadora
dnl LOCAL_DOMAIN(`localhost.localdomain')dnl
  • En el archivo /etc/mail/access agregar lo siguiente:
AuthInfo:smtp.midominio.com.ar "U:usuario@midominio.com.ar" "P:laclave" "M:LOGIN"

U: es el usuario y P: la clave en formato texto plano, tal cual como fue dada de alta la cuenta del usuario en midominio.com.ar

  • Modificar en /etc/hosts la línea de 127.0.0.1 para que se vea como sigue:
127.0.0.1       midominio.com.ar  localhost.localdomain  localhost

Es decir, midominio.com.ar está al comienzo. Entonces, al buscar el nombre de 127.0.0.1, sendmail lo sacará de aquí y armará los correos como de usuario@midominio.com.ar o root@midominio.com.ar

  • Agregar un alias de cuenta al servidor de correo real de midominio.com.ar para que el usuario@midominio.com.ar sea también root@midominio.com.ar. De esta manera no rebotarán los correos automáticos enviados por la computadora con linux que estamos configurando.


Todavía estoy estudiando el efecto que tiene agregar midominio.com.ar a 127.0.0.1, si descubro algo malo lo documentaré aquí.

Estas eran las instrucciones anteriores

Para hacer esto he tenido que descomentar en /etc/mail/sendmail.mc la línea con SMART_HOST. Eliminar el dnl del comienzo y poner ahí el nombre del servidor smtp externo a usar. Arnet bloquea el uso del puerto 25, por lo que poner smtp.arnet.com.ar en una computadora que entra por un adsl de arnet debería funcionar.

Luego hay que enmascarar el dominio con su dominio propio o el de arnet para que no bloquee el envío por chequeo de spam. La opción es MASQUERADE_AS y hay que ponerle el dominio a usar. En arnet debería ser arnet.com.ar para que no bloquee. En mi caso lo uso para un dominio propio.

Consultar una cadena en un paquete

Por ejemplo, la cadena 'hosts detect' en el paquete smolt-server

yumdownloader smolt-server; rpm -ihv smolt-server-1.2-4.2.fc11.noarch.rpm --nodeps; grep 'hosts detect' $(rpm -ql smolt-server)

Concatenar varios archivos de texto en uno grande

Con bash esto es sencillo:

arch=*.txt
cat $arch > unosolo.txt

Error DB_RUNRECOVERY en Berkeley Data Base 4

Trabajando con poEdit, en un momento dado me dió el siguiente error

DB_RUNRECOVERY: Fatal error, run database recovery

Lo que hay que hacer para solucionarlo es:

  • Ubicar el archivo base de datos (.db)
  • Volcarlo en otro archivo de texto:
db_dump archivo.db > archivo.volcado
  • Renombrar o borrar el archivo anterior:
mv archivo.db archivo.db.0
  • Volver a construir el archivo .db:
db_load archivo.db < archivo.volcado

Servidor de Correo Electrónico con Fedora

Este tema es muy extenso, por lo que se documenta en una página separada.

Me gusta sendmail, y para pop3/imap dovecot, que es el que se incluye en Fedora 12. Para filtrar spam, el spamassassin, y para filtrar los virus, el clamav. Entonces, la configuración es sendmail + dovecot + spamassassin + clamav.

Haga clic en el siguiente enlace: Servidor de Correo con Fedora.

Programación

Esta sección creció mucho, por lo que lo invito a leer la página de la misma: Programación

Crear Paquetes RPM para Fedora

Esta sección también nació extensa, por lo que se dedica una página separada: Crear Paquetes RPM para Fedora

Ocultar Dirección de Correo en Página Web

Se puede hacer con CSS de la siguiente forma

 <style type="text/css">
 span.direccioncorreo { unicode-bidi:bidi-override; direction: rtl; }
 </style>
 <p><span class="direccioncorreo">moc.liamg@rekcebognimod</span></p>

Contar cuántos archivos hay en un directorio

En linux es fácil

ln -1 | wc -l

Contar las líneas de código fuente en un directorio

Hacer lo siguiente

wc -l *.cpp *.h

Información del uso de memoria de un proceso

Obtener con

ps auxww

y filtrar con grep.

ps auxww | grep NomProg

Operaciones con git

Clonar un repositorio

git clone ssh://usuario@git.fedorahosted.org/git/docs/software-management-guide.git

Cambiar a una rama y activarla

git checkout nombre-de-rama

OpenVPN

Instalación y configuración del servidor de OpenVPN

Ya voy a llenar esta parte que es bastante larga

Generación de las claves para los clientes

Cambiar a root

su -

Cambiar al directorio para generar las claves

cd /usr/share/openvpn/easy-rsa/2.0

Ejecutar

. ./vars

Luego construir la clave

./build-key nomcliente

y responder con los valores predeterminados al configurar el servidor. Cuando le pregunte Sign certificate, responder y. Y commit? y.

Los archivos que van al /etc/openvpn del cliente son:

ca.crt
nomcliente.crt
nomcliente.key

Estos archivos están en /usr/share/openvpn/easy-rsa/2.0/keys


Instalación y configuración del cliente de OpenVPN

El cliente de openvpn ya está instalado por defecto en Fedora 14 y 15. Sólo hay que habilitarlo en servicios para que arranque al inicio. Las claves van en /etc/openvpn

Configuración en Fedora 16

Para Fedora 16, debido al cambio a systemd, hay que hacer lo siguiente:

Dejar las claves en /etc/openvpn y un archivo de configuracion, por ejemplo, miredvpn.conf usando el esqueleto de /usr/share/doc/openvpn-2.2.1/sample-config-scripts/client.conf.

Crear un enlace simbólico para que arranque miredvpn.conf con openvpn:

ln -s /lib/systemd/system/openvpn@.service /etc/systemd/system/multi-user.target.wants/openvpn@miredvpn.service

El servicio así configurado iniciará automáticamente. También podrá arrancar el servicio con

systemctl start openvpn@miredvpn.service

GNOME 3

Desde Fedora 15 se incluye GNOME 3 como escritorio predeterminado. Hay ciertas cosas que cambian y se documentan en esta sección.

Aplicaciones al Inicio

Presionar Alt+F2 para ejecutar el siguiente comando

gnome-session-properties

Se puede agregar esto al menú del sistema con alacarte, que no funciona en F16. En algún momento lo arreglarán.

Inicio automático de sesión

Hay que agregar un par de líneas a la sección daemon del archivo /etc/gdm/custom.conf:

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=usuario

Y arrancará directamente en la sesión de miusuario sin importar la clave que tenga.

Esto me sirvió para una configuración particular en donde GNOME 3 pensaba que tenía 2 monitores. La máquina es la siguiente:

http://www.smolts.org/client/show_all/pub_f793a360-effc-47ac-9a82-c8eae6c20e5c

Una joyita, intel atom con 4 núcleos y bastante rápida comparada con otras intel atom de 2 núcleos.

Grabar una sesión

Para grabar la pantalla como video, debe presionar Ctrl+Alt+Mayus+R. Aparecera un globito rojo abajo a la derecha. Con la misma tecla se detiene la grabación.

El video se graba como "~/Vídeos/Screencast desde 07-02-13 14:44:50.webm".

Totem y Firefox tienen soporte para el formato WebM. En windows use firefox para abrir el archivo .webm