Configuración

Se darán algunos puntos a considerar una vez instalado Slackware Linux.

Sistema de archivos

Slackware Linux soporta los siguientes sistemas de archivos para su instalación:

Una pregunta común es ¿Cúal es el sistema de archivos mejor/más recomendado?. Existe una inmensa cantidad de documentación al respecto y como en todo: depende.

Solo comentaré que:

  • ext2 y ext3 han quedando en desuso por ext4.
  • ext4 es el sistema de archivos comunmente usado por varias distribuciones de GNU/Linux. ext4 sería la opción recomendada.
  • ReiserFS ha ganado fama por su buen rendimiento ante archivos de pequeño tamaño.
  • XFS ha ganado fama por su buen rendimiento ante archivos de gran tamaño.
  • Btrfs es un sistema de archivos nuevo (en comparación con los demás) y estable. Poco a poco está ganando popularidad en ciertas distribuciones de GNU/Linux.
  • JFS es de los sistema de archivos menos usados en GNU/Linux.

Algunas lecturas al respecto:

Por otro lado se cuenta con el soporte de:

  • FAT/ExFAT/VFAT y NTFS (mediante NTFS-3G): sistemas de archivos del sistema operativo Windows y usualmente encontrado en memorias USB.
  • ISO 9660 y UDF: sistemas de archivos encontrados en CDs/DVDs.

El archivo /etc/fstab establece como y donde son montados los sistemas de archivos:

root@servidor:~# cat /etc/fstab 
/dev/sda2        swap             swap        defaults         0   0
/dev/sda1        /                ext4        defaults         1   1
#/dev/cdrom      /mnt/cdrom       auto        noauto,owner,ro,comment=x-gvfs-show 0   0
/dev/fd0         /mnt/floppy      auto        noauto,owner     0   0
devpts           /dev/pts         devpts      gid=5,mode=620   0   0
proc             /proc            proc        defaults         0   0
tmpfs            /dev/shm         tmpfs       defaults         0   0

Jerarquía del sistema de archivos

Slackware Linux cumple (en la medida de lo posible) con el Filesystem Hierarchy Standard, por lo que uno puede encontrar lo siguiente en la ráiz (/):

root@servidor:~# tree -F -L 1 /
/
|-- bin/
|-- boot/
|-- dev/
|-- etc/
|-- home/
|-- lib/
|-- lib64/
|-- lost+found/
|-- media/
|-- mnt/
|-- opt/
|-- proc/
|-- root/
|-- run/
|-- sbin/
|-- srv/
|-- sys/
|-- tmp/
|-- usr/
`-- var/

20 directories, 0 files

Cabe mencionar lo siguiente:

  • /bin, /sbin, /usr/bin y /usr/sbin: directorios donde se instalan los ejecutables o comandos.
  • /etc: directorio donde se instalan los archivos de configuración de distintos programas, así como propios del sistema operativo
    • /etc/rc.d: directorio donde se encuentran scripts de shell para administrar procesos, servicios o demonios en el sistema operativo.
  • /lib y /lib64: directorios donde se instalan las librerias o bibliotecas (archivos con extensión .so o .a) usados por los programas instalados.
  • /opt: directorio donde se instalan aquellos programas que no cumplan con el Filesystem Hierarchy Standard. Por lo general estos programas no son instalados desde su código fuente si no que se obtiene un archivo comprimido (ZIP, RAR, TAR, TAR.GZ, TAG.BZ2, etc) el cual tiene todo lo necesario para ejecutar el programa una vez descomprimido. Ejemplo de estos pueden ser juegos como Xonotic, AssaultCube, Warsow, Urban Terror o Red Eclipse.
  • /usr/local: directorio donde se instalan aquellos programas que cumplan con el Filesystem Hierarchy Standard pero que no formen parte oficial del sistema operativo.

     root@servidor:~# tree -F -L 1 /usr/local
     /usr/local/
     |-- bin/
     |-- etc/
     |-- games/
     |-- include/
     |-- info/
     |-- lib/
     |-- lib64/
     |-- man/
     |-- sbin/
     |-- share/
     `-- src/
    
     11 directories, 0 files
    

    Como puede observarse su estructua se asemeja al de la ráiz (/) pero con directorios vacíos.

Grupos y cuentas de usuario

Los archivos /etc/group y /etc/passwd indican los grupos y las cuentas de usuarios, respectivamente, que existen en el sistema operativo:

  • /etc/group

    root@servidor:~# cut -d ':' -f 1 /etc/group | column 
    root       wheel       games      ftp         netdev
    bin        floppy      slocate    oprofile    polkitd
    daemon     mail        utmp       sddm        pop
    sys        news        smmsp      pulse       scanner
    adm        uucp        tape       input       nobody
    tty        man         mysql      apache      nogroup
    disk       dialout     rpc        messagebus  users
    lp         audio       sshd       haldaemon   console
    mem        video       gdm        plugdev
    kmem       cdrom       shadow     power
    
  • /etc/passwd

    root@servidor:~# cut -d ':' -f 1 /etc/passwd | column 
    root       shutdown    games      gdm        messagebus
    bin        halt        ftp        oprofile   haldaemon
    daemon     mail        smmsp      usbmux     polkitd
    adm        news        mysql      sddm       pop
    lp         uucp        rpc        pulse      nobody
    sync       operator    sshd       apache
    

La cuenta de usuario root es de tipo administrador y algunas de las cosas permitidas y realizadas como usuario root son:

  • Reiniciar/detener el sistema operativo
  • Administrar grupos y cuentas de usuario:
    • Crear, eliminar, modificar grupos así como usuarios y la información/contraseña establecida para cada uno.
  • Administrar los sistemas de archivos:
    • Montar/desmontar particiones de un dispotivo de almacenamiento, así como darles formato ("formatear").
  • Administrar (configurar, iniciar y detener) procesos/servicios/demonios (servidor HTTP/SSH/FTP, SGBD, etc):
  • Administrar software (paquetes) o actualizaciones del sistema operativo.

Como usuario root podemos obtener información sobre varios aspectos del sistema operativo mediante ciertos comandos, ejemplos:

  • Información del kernel Linux: uname -a
  • Por cuanto tiempo ha estado en ejecución el sistema operativo: uptime
  • Uso de RAM/swap: free -ht
  • Uso de sistemas de archivos/discos duros/particiones: df -hl
  • Usuarios existentes en el sistema operativo: cat /etc/passwd
  • Usuarios autentificados ante el sistema operativo: who -aH o w
  • Dispositivos PCI detectados por el sistema operativo: lspci -k
  • Interfaces de red identificadas: ip link show
  • Información sobre la configuración de las interfaces de red: ip address show
  • Servidor DNS usado por el sistema operativo: cat /etc/resolv.conf
  • Gateway (también conocido como Puerta de Salida o Puerta de Enlace): ip route show, route -n o netstat -r
  • Servicios de red y puertos en espera de conexión (LISTEN): ss -plutn | cat o lsof -i | grep LISTEN o netstat -plutn
  • Conexiones externas de red (ESTABLISHED): ss -pautn o lsof -i | grep ESTABLISHED o netstat -pautn
  • Procesos que no están siendo ejecutados por el usuario root: ps aux | grep -Ev '^root'

A su vez el usuario root puede llevar a cabo:

  • Reiniciar el sistema operativo: shutdown -r now
  • Detener el sistema operativo: shutdown -h now

Podrás encontrar un compendio de comandos (y ejemplos) en los siguientes enlaces:

La gran mayoría de comandos indicados en las anteriores páginas te servirán, exceptuando aquellos que tengan que ver con la administración/actualización de paquetes o repositorios (RPM, yum, zypper, DEB, apt-get, dpkg, pacman, etc) ya que es algo distintivo de las distribuciones de GNU/Linux (openSUSE, Red Hat, Fedora, Debian, Ubuntu, etc.) por su formato de paquetes y su sistema de gestión de paquetes.

La shell del usuario root es la shell Bash y su directorio personal es /root.

Como regla general trabaja con la cuenta de usuario root solo en casos necesarios.

Creación de una cuenta de usuario personal

Dada la siguiente información:

  • Nombre de la cuenta de usuario: alumno
  • ID de usuario: 2000
  • Grupo principal: users
  • Grupo/s secundario/s: audio, cdrom, floppy, plugdev, video, power, netdev, lp y scanner.
  • Directorio personal: /home/alumno
  • Shell: Bash

para creación de dicha cuenta de usuario se hace uso del comando useradd y se procede de la siguiente manera:

  1. Agregar la cuenta de usuario al sistema operativo:

    root@servidor:~# useradd -d /home/alumno -u 2000 -g users -G audio,cdrom,floppy,plugdev,video,power,netdev,lp,scanner -s /bin/bash alumno
    
  2. Crear el directorio personal del usuario alumno y asignar permisos a dicho directorio:

    root@servidor:~# mkdir -p /home/alumno
    root@servidor:~# chown -R alumno:users /home/alumno 
    root@servidor:~# chmod 700 /home/alumno 
    root@servidor:~# ls -ld /home/alumno 
    drwx------ 2 alumno users 4096 Aug 17 22:45 /home/alumno/
    
  3. Asignar una contraseña (password) al usuario alumno para la autenticación e inicio de sesión:

    root@servidor:~# passwd alumno
    Changing password for alumno
    Enter the new password (minimum of 5 characters)
    Please use a combination of upper and lower case letters and numbers.
    New password: 
    Re-enter new password: 
    passwd: password changed.
    

    OBSERVACIÓN: en el momento en que se ingresa la nueva contraseña las teclas apretadas no son desplegadas en la consola (monitor).

Puedes iniciar una sesión como usuario alumno desde la cuenta del usuario root con el comando su - alumno y ejecutar el comando exit para terminar la sesión:

root@servidor:~# su - alumno
alumno@servidor:~$ pwd
/home/alumno
alumno@servidor:~$ echo $SHELL
/bin/bash
alumno@servidor:~$ exit
logout
root@servidor:~#

Configuración de locale

En la actualidad por la necesidad de tratar con distintos tipos de codificación de la información, desde los archivos de texto plano (código fuente, notas, etc) hasta aplicaciones y SGBD, se recomienda hacer uso de UTF-8.

En Linux la configuración de la variable de entorno LANG determina, para los programas que ejecutemos, el tipo de codificación a usar. Esta variable de entorno en Slackware Linux se puede configurar en los archivos /etc/profile.d/lang.sh (para shells basadas en SH: bash, ash, ksh y zsh) y /etc/profile.d/lang.csh (para shells basadas en CSH: csh y tcsh). En ambos archivos se descomenta la línea que define a LANG con valor en_US.UTF-8, quedando comentada la línea previa a esta:

root@servidor:~# grep 'export LANG' /etc/profile.d/lang.sh
#export LANG=en_US
#export LANG=C
export LANG=en_US.UTF-8
#export LANG=en_US.ISO8859-1

root@servidor:~# grep 'setenv LANG' /etc/profile.d/lang.csh
#setenv LANG en_US
#setenv LANG C
setenv LANG en_US.UTF-8
#setenv LANG en_US.ISO8859-1

Algunas lecturas al respecto:

Teclado

Para la configuración del layout (disposición o ubicación de las teclas) y la traducción de un teclado se hace uso del comando loadkeys. En Slackware Linux el archivo /etc/rc.d/rc.keymap se encarga de ejecutar a loadkeys con la traducción o mapa a usar:

root@servidor:~# cat /etc/rc.d/rc.keymap 
#!/bin/sh
# Load the keyboard map.  More maps are in /usr/share/kbd/keymaps.
if [ -x /usr/bin/loadkeys ]; then
 /usr/bin/loadkeys es.map
fi

Entre los parámetros a usar para loadkeys se encuentran:

  • es.map: teclado en español (España)
  • la-latin1.map: teclado en español (Latinoamericano)
  • us.map: teclado en ingles (Estados Unidos)
  • us-acentos.map: teclado en ingles (Estados Unidos) con carácteres acentuados. Mejor conocido como Teclado internacional de Estados Unidos y comunmente encontrado en laptops importados de Estados Unidos.

Fuente de la consola

El tipo de fuente o tipografía en la consola es indicada con el comando setfont. El archivo /etc/rc.d/rc.font se encarga de ejecutar a setfont con la tipografía a usar:

root@servidor:~# cat /etc/rc.d/rc.font 
#!/bin/sh
#
# This selects your default screen font from among the ones in
# /usr/share/kbd/consolefonts.
#
setfont -v Lat2-Terminus16.psfu.gz

Entre los parámetros a usar para setfont se encuentran:

  • Lat2-Terminus16.psfu.gz: la opción recomendada.
  • lat9v-X.psfu.gz: X puede ser 12, 14 o 16 e indica el tamaño de la tipografía a usar.
  • ter-uXn.psf.gz: X puede ser 12, 14 o 16 e indica el tamaño de la tipografía a usar.

En cualquiera de los casos las tipografías indicadas soportan UTF-8.

Al respecto: Linux console fonts screenshots.