Adquirir conocimientos sobre el sistema de inicio, los permisos, los servicios y el manejo de dispositivos del sistema operativo, así como aprender a encontrar la información necesaria para consultar.
La estructura del árbol de directorios es muy parecida de una distribución a otra, aunque puede variar sensiblemente. La raíz del sistema operativo es representada simplemente por la barra común “/”.
La mayoría de las distribuciones adhieren hoy en día al Filesystem Hierarchy Standard (FHS), que define cómo debe estar compuesto el árbol de directorios, y qué cosa debe ir en cada uno. Así, en un Linux moderno, los directorios de primer nivel y su contenido típicamente son:
Un aspecto muy importante de los Linux es el sistema de arranque, el cual es simple, configurable, transparente y muy poderoso. El administrador puede personalizar y ajustar cada parte de este proceso con completa seguridad de que las cosas funcionarán como lo desea.
De la misma manera, el proceso de apagado es configurable y adaptable a las necesidades de cada caso.
Linux provee varios runlevels, del 0 al 6. Cada uno se utiliza para iniciar o detener servicios de manera automática. Así:
Para controlar los diferentes runlevels, se utilizan los comandos shutdown y telinit, a saber:
Los servicios del sistema pueden iniciarse, reiniciarse y detenerse con el comando service. La configuración respecto a qué servicio se iniciará o detendrá automáticamente en los diferentes runlevels, se realiza con el comando chkconfig.
Por ejemplo, para reiniciar el servidor SSH:
/sbin/service sshd restart
Para revisar en qué runlevels se iniciará este demonio:
chkconfig --list sshd
Configurar su inicio en los runlevels 2, 3, 4 y 5:
chkconfig --level 2345 sshd on
Para configurar que no inicie en dichos runlevels:
chkconfig --level 2345 sshd off
El sistema de permisos de Linux es sumamente simple, práctico, eficiente y seguro. Se basa en permisos de archivos, y usuarios y grupos propietarios de los mismos.
Para cada entrada de un sistema de archivos, sea archivo o directorio, hay un indicador de tipo, y tres grupos de permisos:
dr-xr-xr-x. 2 root root 4096 may 11 20:45 /bin
Montar un sistema de archivos significa hacer visibles al operador los archivos contenidos en él. Esos archivos pueden estar en un dispositivo de almacenamiento local, extraíble o no, o ser exportados por un servidor remoto, entre otras posibilidades.
Para montarlo, se necesita un directorio vacío creado al efecto, que se denomina punto de montaje. Estos directorios habitualmente son creados dentro del directorio /mnt.
Por ejemplo, para montar un pendrive:
mkdir /mnt/pendrive
Insertar luego el pendrive en un puerto USB, y montarlo:
mount /dev/sdb1 /mnt/pendrive
Donde sdb1 es el nodo asignado al mismo por el kernel, cosa que se puede ver en el archivo /var/log/messages, o bien ejecutando un cat /proc/partitions
Además de al equipo físico, se llama servidor a un proceso que brinda servicios de diferente índole. También se lo denomina demonio.
Ejemplos son los servicios Apache, Samba, NFS, Bind9, DHCP, y muchos otros. Así, el servicio HTTP provisto por Apache, es brindado por el demonio httpd; el servicio DNS ofrecido por Bind9, es brindado por el demonio named.
El objetivo del servidor físico es centralizar la información, así como la configuración, de los servicios que son provistos a las estaciones cliente.
En la mayoría de los Linuxes modernos, los servicios se controlan con el comando service.
Para ver el estado de un servicio:
service sshd status
Para detenerlo e iniciarlo:
service sshd stop service sshd start
Entre muchos otros servicios importantes hoy día, algunos comunes, prácticos y confiables son:
Se llama shell, terminal, intérprete de comandos o línea de comandos a una interfaz de texto para interactuar con el sistema operativo. El usuario dirige el sistema operativo mediante el envío de comandos como texto a un intérprete.El intérprete también permite escribir scripts que constan de uno de o más de esos comandos, y que se ejecutan llamándolos por su nombre. Los shells más comunes son Bourne Again Shell (Bash) y C Shell (Csh). Hay muchos otros, cada uno con sus características particulares.
Estas interfaces han sido desarrolladas desde fines de los años 60 y principios de los 70 en forma estable, conservada, y con claros objetivos de confiabilidad y seguridad, a la vez que explotan toda la potencia del sistema subyacente y sus diferentes características: kernel, sistema de archivos, multitarea, multiusuario, etc.
El principio básico de la línea de comandos es lograr la interacción con el sistema operativo rápida y eficazmente, consumiendo lo menos posible de recursos, concentrándose en la resolución de los temas de manera estable, confiable y segura. Permite resolver cualquier situación de manera local o remota sabiendo con absoluta certeza cómo va a responder el sistema operativo, y cómo va a ser el resultado de la interacción.
Algunas características básicas y ejemplos:
cd /usr ; tar czf /tmp/bin.tar.gz ./bin & tar czf /tmp/lib.tar.gz ./lib &
alias listado="ls -la --color=auto"
ps axu > psaux.txt
grep lalala * 2> grep-errores.txt
grep lalala * &> grep-salidayerrores.txt
ps aux | grep syslog
La documentación disponible sobre Linux y sus comandos es amplísima en la mayoría de los casos. Se recomienda acceder a la documentación en los sitios oficiales de cada proyecto.
Por ejemplo, en el caso de la última versión de Apache Tomcat la misma está disponible en http://tomcat.apache.org/tomcat-7.0-doc/
Asimismo, la documentación de la última versión de MySQL se encuentra en http://dev.mysql.com/doc/refman/5.6/en/index.html
Hay muchísima documentación, alguna de excelente calidad, creada y mantenida por terceros. En estos casos se puede buscar como referencia de otros, y ver los comentarios respecto a la seriedad del enlace.
Por ejemplo la Advanced Bash-Scripting Guide es la referencia obligada de programación de Bash. Otro ejemplo son los tutoriales escritos por Falko Timme y varios otros autores en http://www.howtoforge.com/
Los comandos suelen tener una ayuda en línea, accesible generalmente con el modificador –help, -help o -h. Por ejemplo, para visualizar la ayuda básica del comando grep:
grep --help
Además, en el propio sistema operativo ya instalado, se dispone de las páginas man. Éstos son manuales de cada comando, archivo de configuración, funciones, llamadas y otros, disponibles con el comando man.
Ejemplos:
man grep
man yum.conf
Existe otro manual, interactivo y generalmente más desarrollado, que es denominado manual Texinfo o páginas info. Por ejemplo, para acceder a un extenso manual del intérprete Bash:
info bash
Se denomina “módulo” o “driver” a un archivo binario que es cargado junto al kernel, y que permite el acceso a un dispositivo, sistema de archivo o nueva funcionalidad, entre otros.
Los comandos para realizar estas tareas son:
La configuración de los módulos, así como blacklisting y otras tareas, se realiza con los archivos de configuración existentes dentro de /etc/modprobe.d/