# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

FreeBSD: Cambiar localización, idioma

Normalmente prefiero tener todo el sistema de localización, idioma, etc en inglés, cuestión de gustos. Hoy me he visto en la obligación por requerimientos ajenos a cambiar la localización e idioma de un usuario en un servidor FreeBSD a español.

Todo esto puede ser modificado a través de un fichero de configuración en nuestra home, el fichero ha de llamarse ~/.login_conf. A continuación os muestro un ejemplo de cambio de localización y cotejamiento de caracteres a español:

# cat ~/.login_conf
me:\
    :charset=es_ES.ISO8859-15:\
    :lang=es_ES.ISO8859-15:

Básicamente solo es necesario exportar el valor del nombre de la “locale” como LANG en el intérprete de órdenes de la sesión. Podemos hacerlo tanto en el fichero especificado anteriormente (~/.login_conf del usuario), como en el fichero de inicio del intérprete de órdenes del usuario (~/.profile, ~/.bashrc , ~/.cshrc).

Tendréis que aseguraros que los locales que configuráis se encuentran instalados en vuestro sistema, debéis buscarlos en /usr/share/locale:

ls -l /usr/share/locale/ | more
total 310
drwxr-xr-x  2 root  wheel  512 29 nov  2007 UTF-8
drwxr-xr-x  2 root  wheel  512 29 nov  2007 af_ZA.ISO8859-1
drwxr-xr-x  2 root  wheel  512 29 nov  2007 af_ZA.ISO8859-15
drwxr-xr-x  2 root  wheel  512 29 nov  2007 af_ZA.UTF-8
drwxr-xr-x  2 root  wheel  512 29 nov  2007 am_ET.UTF-8
drwxr-xr-x  2 root  wheel  512 29 nov  2007 be_BY.CP1131
drwxr-xr-x  2 root  wheel  512 29 nov  2007 be_BY.CP1251
drwxr-xr-x  2 root  wheel  512 29 nov  2007 be_BY.ISO8859-5
drwxr-xr-x  2 root  wheel  512 29 nov  2007 be_BY.UTF-8
drwxr-xr-x  2 root  wheel  512 29 nov  2007 bg_BG.CP1251
drwxr-xr-x  2 root  wheel  512 29 nov  2007 bg_BG.UTF-8
drwxr-xr-x  2 root  wheel  512 29 nov  2007 ca_ES.ISO8859-1
drwxr-xr-x  2 root  wheel  512 29 nov  2007 ca_ES.ISO8859-15
...
...

Una vez modificado, reiniciar la sesión será suficiente para tener cambiado el idioma en nuestra shell. Para profundizar más sobre las distintas opciones y configuraciones permitidas en este sentido podéis acceder al HandBook de FreeBSD.

FreeBSD: Activar color en la salida de LS

Para activar los colores en la salida del comando LS solamente tenéis que añadir la opción G a ls, ejemplo:

ls -G

Lo mejor es crear un alias, sería del siguiente modo:

Bash (.bashrc):

alias ls='ls –G'

Csh (.cshrc):

alias l         ls -G

En algunos casos es necesario cambiar la variable TERM a xterm-color ó xterm-color:

export TERM=xterm-color
export TERM=xterm

Instalar y configurar SUDO en FreeBSD

El programa sudo (de las siglas en inglés de superuser -o substitute user- do) es una utilidad de los sistemas operativos tipo Unix, como Linux, BSD, o Mac OS X, que permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (normalmente el usuario root) de manera segura. Se instala por defecto en /usr/bin.

Wikipedia

Para instalar SUDO en FreeBSD lo haremos desde los puertos:

cd /usr/ports/security/sudo
make install clean

Toda la configuración se encuentra en el fichero /usr/local/etc/sudoers.default que debemos mover a /usr/local/etc/sudoers para coger sus valores por defecto:

mv /usr/local/etc/sudoers.default /usr/local/etc/sudoers

Toda la información sobre este fichero la encontaréis en la ayuda man:

man sudoers

Conviene conocer lo más básico e importante:

# User privilege specification
root	ALL=(ALL) ALL

Esta es la sección de privilegios de usuarios, en la cual damos privilegios especiales a usuarios, por defecto root tiene todos los privilegios como es normal, podemos añadir a usuarios privilegios para determinados comandos, la sintaxis es la siguiente:

USER HOST= comandos

# Uncomment to allow people in group wheel to run all commands
%wheel	ALL=(ALL) ALL

Por defecto, todos los usuarios pertenecientes al grupo wheel podrán ejecutar con sudo cualquier comando, aquí podemos añadir más restricciones o permisos a otros grupos.

# Same thing without a password
 %wheel	ALL=(ALL) NOPASSWD: ALL

Con lo anterior podemos especificar qué grupos podrán usar SUDO sin tener que especificar su clave (la del propio usuario, no la de root) de usuario cada vez que ejecuten una tarea o comando ROOT.

Recordad modificar el fichero con el comando visudo porque sino puede no funcionar correctamente.

Shared object “libperl.so” not found

Tras la última actualización de cPanel en un servidor FreeBSD (11.24.4-RELEASE_33609), resulto haber un fallo en ciertos módulos de Perl, por ejemplo exim no arrancaba mostrando el siguiente error:

# /scripts/restartsrv_exim
/libexec/ld-elf.so.1: Shared object "libperl.so" not found, required by "exim"
/libexec/ld-elf.so.1: Shared object "libperl.so" not found, required by "exim"

Ni un upcp –force ni reinstalar exim solventan el fallo, es necesario realizar lo siguiente, ejecutad el script:

/usr/local/bin/perl-after-upgrade -f

Toda la información sobre este script aquí.

De este modo quedaría solucionado, podéis chequear tras dicha tarea que todo es correcto (Perl) chequeando los módulos con:

/scripts/checkperlmodules --force

Updatedb en FreeBSD y comando locate

Para actualizar la base de datos del comando locate en FreeBSD, hay que ejecutar el siguiente comando:

/usr/libexec/locate.updatedb

Definición locate:

El comando locate
locate es un comando de búsqueda de archivos, bastante parecido al comando anteriormente visto, el find. La diferencia de locate es que la búsqueda la hace en una base de datos indexada para aumentar significativamente la velocidad de respuesta. Esto quiere decir, que locate realmente no busca en el disco del sistema, sino que en un archivo con la lista de todos los archivos que existen en el GNU/Linux. Generalmente todas las distribuciones de GNU/Linux ejecutan a una hora determinada (generalmente cerca de las 4:00am, ya que tarda algún tiempo realizar esta tarea) un comando para actualizar la base de datos que utiliza locate, dicho comando se llama updatedb.

The perl module Text::CSV could not be installed

Tras actualizar un servidor FreeBSD a la última versión Release de cPanel (11.24.4-RELEASE_32603) me encontré con el siguiente error:

The perl module Text::CSV could not be installed.

This module is required by cPanel, and the system may not function correctly until it is installed, and functional.  Below is the results of the auto-install attempt:

Test Run
==============
Can't locate Text/CSV.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8 .) at - line 1.
BEGIN failed--compilation aborted at - line 1.

Installer Run
==============
%Config::Config is read-only

Al tratar de reinstalar el módulo de Perl, ya sea desde WHM o desde línea de comandos seguía sin dejarme por el dichoso “%Config::Config is read-only” así que directamente reinstalando perl 5.8.8 el problema ha quedado solucionado:

wget http://layer1.cpanel.net/perl588installer.tar.gz
tar xfvz perl588installer.tar.gz
cd perl588installer
./install

Tras instalarlo revisa que todos los módulos han sido instalados correctamente:

/scripts/checkperlmodules

Si todo a ido bien, os indicará lo siguiente tras el chequeo:

Using fast module check.....checked 110 modules in 19 second(s)
Tested 111, 111 ok, 0 failed.

Mailman: Cambiar URL en gestión de listas

Si al mover una lista de correo Mailman de un servidor a otro, o por cualquier otro motivo, los enlaces de la interfaz web de gestión de lista tienen hipervínculos erroneos o hacia el host del antiguo servidor, existe un modo de actualizarlo o configurarlo de nuevo para que coja la URL que deseemos. Ejemplo:

Si hemos movido una lista de correo del host http://dominio1.com al host http://dominio2.com, al entrar en la gestión de la lista, ya en dominio2.com los enlaces posiblemente redirigan todavía a dominio1.com, hablo de los enlaces tipo:

  • General Options
  • Passwords
  • Language options
  • Membership Management…
    • [Membership List]
    • Mass Subscription
    • Mass Removal
  • Non-digest options
  • Digest options

Pues bien, si queremos que dichos enlaces funcionen correctamente, podemos actualizarlos desde línea de comandos del siguiente modo:

# /usr/lib/mailman/bin/withlist -l -r fix_url <nombre lista> --urlhost=dominio2.com

Con este script incluido en la carpeta “bin” de mailman, podemos arreglar los enlaces indicando el nombre de la lista y la nueva URL que queramos para los enlaces.

Configurar tarjetas de Red en FreeBSD con sysinstall

Sysinstall es una utilidad de FreeBSD que podemos ejecutar en modo terminal para realizar diversas configuraciones del sistema post-instalación. Hoy vamos a ver como configurar las tarjetas de red:

En primer lugar ejecutamos sysinstall:

$ sysinstall

Sysinstall

Una vez estemos dentro, accedemos a la sección Configure, y después a Networking, donde accederemos a la configuración de las interfaces de red (Interfaces), y veremos algo similar a lo siguiente:

SysInstall, interfaces de red

Ahora seleccionaremos la interfaz que deseemos configurar. Una vez seleccionada, en primera instancia nos preguntará dos cosas:

1) ¿Queremos activar el soporte IPV6?

 User Confirmation Requested
       Do you want to try IPv6 configuration of the interface?

                              Yes   [ No ]

2) ¿ Queremos activar DHCP ?

               User Confirmation Requested
        Do you want to try DHCP configuration of the interface?

                              Yes   [ No ]

En nuestro caso, no queremos ninguna de las dos cosas, vamos a configurar una tarjeta de red con configuración IPV4 y direccionamiento estático:

Configuracion red FREEBSD

Nos podremos mover entre elementos con la tecla [TAB], paso a describiros cada una de las opciones:

Host: El nombre de la máquina (fully-qualified hostname)
Domain: El nombre del dominio en el que la máquina se encuentra.
IPv4 Gateway: Puerta de enlaceault gateway or default route.
Name server: Servidor de nombres que usará el equipo
IPv4 address: La IP estática de la interfaz de red.
Netmask: La máscada de red.

Una vez configurado todo, simplemente vamos con la tecla [TAB] hasta el Ok y presionamos ENTER:

     User Confirmation Requested
        Would you like to Bring Up the ed0 interface right now?

                             [ Yes ]   No

Nos dice si queremos levantar la interfaz de red, si la levantamos comenzará a responder.