Administración básica del sistema

En este capítulo trataremos de ver los aspectos generales sobre la administración de nuestro sistema contemplando algunas configuraciones que se tendrán que hacer, tomando como base un sistema pequeño como el de nuestro hogar o de una empresa con pocas máquinas interconectadas.

Empezaremos reforzando el concepto de la cuenta root para comprender su alcance y que restricciones y libertades podremos dar a los demás usuarios.

Luego veremos varias maneras para poder arrancar nuestro sistema ejemplificando tres métodos: la utilización de un diskette, el uso del LILO o desde la aplicación para DOS LOADLIN.

Nuestro sistema tendrá que tener la posibilidad de imprimir y es por ello que ejemplificaremos dos métodos para imprimir. Uno en la máquina local y otro en una máquina remota.

Como todo sistema requerirá en algún punto que se instale un kernel nuevo o se actualice parte del mismo, veremos aspectos generales sobre las actualizaciones necesarias para nuestro sistema.

La cuenta root y sus implicaciones

 

Si no eres root no eres nadie

En este punto sabemos que la cuenta raíz, que tiene el nombre de usuario root, es el más importante del sistema y además es quien tiene los privilegios más altos para interactuar con él. También sabemos, y esto a fuerza de malas experiencias en muchas ocasiones, que el ser root requiere responsabilidades y el estar conciente de lo que se hace con este tipo de cuentas ya que muchas veces un error cometido será irreparable.

Los usuarios del sistema están bastante restringidos en lo que pueden realizar, ya sea con los archivos de otros usuario o archivos de sistema, ya que no tienen los permisos necesarios para poder modificarlos o borrarlos e incluso en muchos casos leerlos. Todas estas limitaciones se terminan con la cuenta root ya que posee acceso a cada área del sistema pudiendo borrar, crear, modificar archivos de cualquier parte del sistema así como cambiar permisos y dueños de estos. Puede ejecutar cualquier programa y hasta incluso si se le ocurriese podría literalmente matar al sistema por completo. Esto es así ya que es necesario que exista por lo menos una persona que pueda intervenir al sistema si es necesario y que tenga los privilegios adecuados para poder forzar al sistema a realizar algo. La idea es que esta cuenta se utilice sobriamente, únicamente cuando es necesario y no en cualquier momento. Para ejemplificar un hecho que seria peligroso si e fuerce root, si un usuario normal de le ocurriese borrar los archivos que se encuentran en el directorio /boot el sistema no lo dejaría, en cambio si es el root quien lo pide, lo que este en /boot desaparecerá muchas veces, de acuerdo a la configuración de GNU/Linux que se posea, cargándose al kernel completo con ellos.

Para evitar cualquier accidente al utilizar la cuenta root es recomendable los siguientes pasos a seguir

  1. Pensarlo dos veces antes de apretar la tecla Enter en un comando que pueda causar algún daño. Por ejemplo si se esta borrando algún archivo de configuración releer la línea del comando completo.

  2. No acostumbrarse a usar root. Cuando más confortable se encuentre uno trabajando con el usuario root, más seguro que se confundirán los privilegios con los de un usuario normal.

  3. Usar siempre un marcador distinto para un usuario normal y el root. Esto ya viene por defecto en la mayoría de las distribuciones pero siempre esta bien repetirlo. Un signo $ o % representara al usuario normal y un # representara al root.

  4. Conectarse como usuario root solo cuando sea absolutamente necesario. Y desconectarse tan pronto como se haya terminado el trabajo. Cuando menos se use la cuenta root, menos posibilidades de cometer un error habrá.

Existen personas que son verdaderos hackers de Un*x que utilizan la cuenta root para todo, pero hay que recordar dos cosas con respecto a esto. Lo primero que no estamos a esa altura de conocimiento sobre Un*x y segundo que estas personas en algún momento han hecho algo que les a hecho perder su información.

La cuenta root es poderosa en el sistema, y ese poder es peligroso muchas veces para el resto de los usuarios del sistema. La tendencia a la destrucción de un usuario con el poder de root es perjudicial para el resto del sistema ya que en sucesivas oportunidades se a sabido de casos en los que los administradores del sistema leen correo de otro usuarios o borran archivos sin avisar a nadie jugando con el sistema informático como si fuesen niños y no como verdaderos administradores. Por ello se requiere cierto grado de madurez y responsabilidad además del conocimiento necesario para poder llegar a ser administrador de un sistema y es en nuestros sistemas que tendremos en el hogar o en la oficina con GNU/Linux donde tendremos que aprender a serlo.

Gestión de usuarios

El sistema mantiene una cierta cantidad de información acerca de cada usuario. Dicha información se resume a continuación.

nombre de usuario

El nombre de usuario es el identificador único dado a cada usuario del sistema. Ejemplos de nombres de usuario son: shrek, burro y fiona. Se pueden utilizar letras y dígitos junto a los caracteres "_" (subrayado) y el punto. Los nombres de usuario se limitan normalmente a 8 caracteres de longitud.

clave

El sistema también almacena la clave encriptada del usuario. El comando passwd se utiliza para poner y cambiar las claves de los usuarios.

user ID

El user ID, o UID, es un número único dado a cada usuario del sistema. El sistema normalmente mantiene la pista de la información por UID, no por nombre de usuario.

group ID

El group ID, o GID, es la identificación del grupo del usuario por defecto.

nombre completo

El nombre real o nombre completo del usuario se almacena junto con el nombre de usuario. Por ejemplo, el usuario burro puede tener el nombre "Platero Equino" en la vida real.

directorio inicial

El directorio inicial es el directorio en el que se coloca inicialmente al usuario en tiempo de conexión. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home.

intérprete de comando

El intérprete de comando del usuario es el intérprete de comandos que es arrancado para el usuario en tiempo de conexión. Ejemplos pueden ser /bin/bash y /bin/tcsh.

El archivo /etc/passwd contiene la información anterior acerca de losusuarios. Cada línea del fichero contiene información acerca de un único usuario. El formato de cada línea es

nombre:clave_encriptada:UID:GID:nombre completo:dir_inicio:intérprete

Un ejemplo puede ser

shrek:Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bash

El primer campo , "shrek", es el nombre de usuario. El siguiente campo, "Xv8Q981g71oKK", es la clave encriptada. Las claves no se almacenan en el sistema en ningún formato legible por el hombre. Las claves se encriptan utilizándose a sí mismas como clave secreta. En otras palabras, sólo si se conoce la clave, ésta puede ser desencriptada. Esta forma de encriptación es bastante segura.

Algunos sistemas utilizan "claves en sombra" (shadow) en la que la información de las claves se relega al fichero /etc/shadow. Puesto que /etc/passwd es legible por todo el mundo, /etc/shadow suministra un grado extra de seguridad, puesto que éste no lo es. Las claves en sombra suministran algunas otras funciones como puede ser la expiración de claves; no entraremos a detallar estas funciones aquí.

El tercer campo, "102", es el UID. Este debe ser único para cada usuario. El cuarto campo,"100", es el GID. Este usuario pertenece al grupo numerado 100. La información de grupos, como la información de usuarios, se almacena en el fichero /etc/group. El quinto campo es el nombre completo del usuario, "Shrek Ogre". Los dos últimos campos son el directorio inicial del usuario, /home/shrek y el intérprete de conexión /bin/bash, respectivamente. No es necesario que el directorio inicial de un usuario tenga el mismo nombre que el del nombre de usuario. Sin embargo, ayuda a identificar el directorio.

Borrando usuarios

Anteriormente vimos como podemos crear un usuario para empezar a utilizar el sistema, y este método puede emplearse para la creación de cualquier otro usuario. De forma parecida, borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo del software instalado en el sistema.

Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd.Por ejemplo, cambiando la línea a

shrek:*Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bash

evitará que shrek se conecte.

Después de que haya creado un usuario, puede necesitar cambiar algún atributo de dicho usuario, como puede ser el directorio inicial o la clave. La forma más simple de hacer esto es cambiar los valores directamente en /etc/passwd. Para poner clave a un usuario, utilice el comando passwd. Por ejemplo

[root@pantano:~]# passwd burro

cambiará la clave de burro. Sólo root puede cambiar la clave de otro usuario de ésta forma. Los usuarios pueden cambiar su propia clave con passwd también.

En algunos sistemas, los comandos chfn y chsh están disponibles, permitiendo a los usuarios el cambiar sus atributos de nombre completo e intérprete de conexión. Si no, deben pedir al administrador de sistemas que los cambie por ellos.

Grupos

Como hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única importancia real de las relaciones de grupo es la perteneciente a los permisos de ficheros, como dijimos anteriormente cada fichero tiene un "grupo propietario" y un conjunto de permisos de grupo que define de qué forma pueden acceder al fichero los usuarios del grupo. Hay varios grupos definidos en el sistema, como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos de ficheros del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como users. Si se quiere ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo estudiantes, soporte y facultad.

El fichero /etc/group contiene información acerca de los grupos. El formato de cada línea es

nombre de grupo:clave:GID:otros miembros

Algunos ejemplos de grupos pueden ser:

root:*:0:
users:*:100:fiona,burro,shrek
invitados:*:200:
otros:*:250:shrek

El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo, users, es para usuarios normales. Tiene un GID de 100. Los usuarios fiona y pedro tienen acceso a este grupo. Recuérdese que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer a mas de un grupo, añadiendo sus nombres de usuario a otras líneas de grupo en /etc/group. El comando groups lista a qué grupos se tiene acceso.

El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios. El usuario shrek tiene acceso a éste grupo.

Como se puede ver, el campo "clave" de /etc/group raramente se utiliza. A veces se utiliza para dar una clave para acceder a un grupo. Esto es raras veces necesario. Para evitar el que los usuarios cambien a grupos privilegiados (con el comando newgroup), se pone el campo de la clave a "*".

Se pueden usar los comandos addgroup o groupadd para añadir grupos a su sistema. Normalmente es más sencillo añadir líneas a /etc/group uno mismo, puesto que no se necesitan más configuraciones para añadir un grupo. Para borrar un grupo, sólo hay que borrar su entrada de /etc/group.

Poniendo reglas al sistema

El SO Un*x no fue diseñado desde sus principios pensando en la seguridad entre los usarios del sistema. El pensar que usarios académicos irrumpieran en áreas que no les pertenecían no se tomaba en como algo posible para los primeros tiempos en que UNIX estaba desarrollándose. El tener una actitud mano dura con los usarios no ayudará a que estos traten de saltarse las limitaciones que le podamos haber impuesto. Puede ser que en un ambiente militar esto funcione pero no será igual en un sistema universitario o en una empresa. Lo que si tiene sentido es el escribir una serie sencillas de reglas que el usuario pueda seguir y que tienen que ir de acuerdo a las políticas del área donde se esta implementando el sistema informativo. Puede darse el caso de que existan reglas que estén en contra de las políticas o que no estén bien explicadas por lo que será difícil de cumplir.

También esta el caso de que si las reglas son por demás de restrictivas con el usuario éste tratará de saltarlas. Otro caso son los usarios que por desconocimiento de estas reglas realizan acciones prohibidas. Por ejemplo, envían mails de 20 MB por la red saturando la conexión dado que no se especifica claramente que no pueden mandarse mails con adjuntos tan grandes. Si nadie se lo informa al usuario no podemos pedirle que obedezca. Los motivos por los cuales las reglas se implementan deberán estar claros, ya que los usuarios se sentirán tentados a hacer cosas que están prohibidas por naturaleza, sin ninguna otra explicación.