% Linux Installation and Getting Started    -*- TeX -*-
% hats.tex
% Copyright (c) 1993 by Matt Welsh and Lars Wirzenius
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Este fichero es de distribuci\'on libre, pero debe mantenerse esta 
% informaci\'on de Copyright en todas las copias, y debe distribuirse solo como
% parte de "Instalaci\'on y Primeros Pasos en Linux". El uso de este fichero esta
% cubierto por el Copyright del documento completo, en el fichero "copyright.tex"
% Copyright (c) 1995 por Gerardo Izquierdo para la versi\'on al Castellano
% $Log: hats.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:12  rcamus
% Primera beta publica
%
%

\section{ Acerca de Ra\'\i ces, Sombreros y la Sensaci\'on de Poder }\label{sec-hats}

	Como sabe, UNIX distingue entre diferentes usuarios para que lo que
	hagan a los dem\'as y al sistema pueda ser regulado (uno no desear\'\i a 
	que nadie pudiese leer nuestras cartas de amor, por ejemplo). Cada
	usuario recibe una {\bf cuenta} que incluye un nombre de usuario, 
	un directorio inicial, y otras cosas por el estilo. Adem\'as de las 
	cuentas dadas a personas reales, existen cuentas especiales, 
	definidas por el sistema, que tienen privilegios especiales. La m\'as
	importante de \'estas es la {\bf cuenta ra\'\i z}, con el nombre de usuario 
	{\tt root}.
\index{cuentas definidas por el sistema!root@{\tt root}}
	
\subsection{La cuenta {\tt root}}
\index{cuenta root|(}
	Los usuarios normales est\'an restringidos normalmente para que no
	puedan da\~nar a nadie m\'as en el sistema, s\'olo a ellos mismos. Los
	permisos de los ficheros en el sistema est\'an preparados para que
	los usuarios normales no tengan permitido borrar o modificar 
	ficheros en directorios compartidos por todos los usuarios (como son
	{\tt /bin} y {\tt /usr/bin}. Muchos usuarios tambi\'en protegen sus
	propios ficheros con los permisos adecuados para que otros usuarios
	no puedan acceder o modificar \'estos ficheros.

	Estas restricciones desaparecen para {\tt root}. El usuario 
	{\tt root} puede leer, modificar o borrar cualquier fichero en el
	sistema, cambiar permisos y pertenencias en cualquier fichero, y
	ejecutar programas especiales, como pueden ser los que particionan
	un disco o crean sistemas de ficheros. La idea b\'asica es que la
	persona o personas que ejecutan y cuidan del sistema entren como
	{\tt root} cuando sea necesario para realizar tareas que no pueden
	ser ejecutadas por un usuario normal. Puesto que {\tt root} puede hacer
	todo, es f\'acil cometer errores que tengan consecuencias catastr\'oficas
	cuando se trabaja utilizando esta cuenta.
\index{cuenta root!privilegios de}
	
Por ejemplo, como un usuario normal, si inadvertidamente se intentase borrar
todos los ficheros en {\tt /etc}, el sistema no lo permitir\'\i a. Sin embargo, 
como usuario {\tt root}, el sistema no dir\'\i a nada. Es muy simple el da\~nar
el sistema utilizando {\tt root}. La mejor forma de evitar accidentes es:
\begin{itemize}
\item Pens\'arselo dos veces antes de apretar \key{return} en un comando que
pueda causar da\~no. Por ejemplo, si se va a borrar un directorio, antes de
pulsar \key{return}, releer el comando completo y asegurarse que es 
correcto.

\item No acostumbrarse a utilizar {\tt root}. Cuanto m\'as confortable se 
encuentre uno trabajando con el usuario {\tt root}, m\'as seguro que se
confundir\'an los privilegios con los de un usuario normal. Por ejemplo,
puede uno {\em pensar\/} que se est\'a conectado como {\tt larry}, cuando
realmente se est\'a conectado como {\tt root}.

\index{cuenta root!utilizando distinto marcador para}
\item Utilice un marcador distinto para la cuenta {\tt root}. Se debe cambiar
el fichero {\tt .bashrc} o el {\tt .login} de {\tt root} para poner el
marcador del int\'erprete a algo distinto del marcador de usuario normal. Por
ejemplo, mucha gente utiliza el car\'acter ``{\tt \$}'' como marcador para los
usuarios normales, y reserva el car\'acter ``{\tt \#}'' como marcador para
el usuario {\tt root}.

\item Conectarse como {\tt root} s\'olo cuando sea absolutamente necesario. Y
desconectarse tan pronto como se haya terminado el trabajo. Cuanto menos 
se use la cuenta {\tt root}, menos posibilidades habr\'a de da\~nar el sistema.

\end{itemize}
Por supuesto, existe una variante de hackers de UNIX que utilizan {\tt root}
para pr\'acticamente todo. Pero cada uno de ellos ha cometido, en alg\'un 
momento, alg\'un error tonto como {\tt root} y corrompido el sistema. La 
regla general es que hasta que se familiarice con la falta de 
restricciones de {\tt root}, y est\'e c\'omodo utilizando el sistema sin 
dichas restricciones, procure conectarse como {\tt root} lo menos posible.

Por supuesto, todo el mundo comete errores. El mismo Linus Torvalds borr\'o 
accidentalmente una vez el \'arbol de directorios completo del n\'ucleo de su
sistema. Horas de trabajo se perdieron para siempre. Afortunadamente, sin
embargo, gracias a su conocimiento del c\'odigo del sistema de ficheros, fue
capaz de reiniciar el sistema y reconstruir el \'arbol de directorios del
disco a mano.

Pong\'amoslo de otra forma, si se imagina la utilizaci\'on de la cuenta 
{\tt root} como la utilizaci\'on de un sombrero m\'agico especial que le 
da montones de poderes, pudiendo, con un gesto de la mano, destruir 
ciudades enteras, es una buena idea de lo que es ser un poco cauto con lo 
que se hace con las manos. Puesto que es f\'acil mover la mano de manera 
destructiva por accidente, no es una buena idea el llevar el sombrero 
m\'agico cuando no es necesario, a pesar de la maravillosa sensaci\'on.
\index{cuenta root|)}

\subsection{Abusando del sistema}

\index{cuenta root!consideraciones \'eticas}
Junto con el sentimiento de poder llega la tendencia a hacer da\~no. Este es
uno de los puntos oscuros de la administraci\'on de sistemas UNIX, pero todo
el mundo pasa por ello en alg\'un momento. Muchos usuarios de sistemas UNIX 
nunca tienen la posibilidad de manejar este poder ---en los sistemas UNIX de 
universidad y de empresas, solo los altamente cualificados (y altamente 
pagados) administradores de sistemas llegan a conectarse como {\tt root}.
De hecho, en muchas de esas instituciones, la clave de {\tt root} 
es un secreto celosamente guardado: es tratado como el Sagrado Grial de la
instituci\'on. Se monta mucho jaleo con la conexi\'on como {\tt root};
est\'a visto como un sabio y a la vez espantoso poder, dado s\'olo a un 
reducido grupo de elegidos.

Este tipo de actitud hacia la cuenta {\tt root} es, sencillamente, el tipo de
actitud que alimenta la malicia y el desprecio. Ya que {\tt root} es tan 
atractivo, cuando algunos usuarios tienen su primera oportunidad de 
conectarse como {\tt root} (ya sea en un sistema Linux, o en cualquier 
otro sitio), la tendencia es a utilizar los privilegios de {\tt root} de 
forma descuidada. Yo he conocido ``administradores de sistemas'' (por 
llamarlos de alguna forma) que leen el correo de otros usuarios, borran 
ficheros de usuario sin avisar y que, de forma general, se comportan como 
ni\~nos cuando se les da un ``juguete'' poderoso.

Puesto que {\tt root} tiene tantos privilegios en el sistema, se necesita una
cierta madurez y autocontrol para utilizar la cuenta de la forma para la que 
est\'a dise\~nada ---para ejecutar el sistema. Existe un c\'odigo de 
honor no 
hablado entre el administrador y los usuarios del sistema. ?`C\'omo se
sentir\'{\i}a
si su administrador de sistemas leyese su correo electr\'onico o mirase sus
ficheros? A\'un no hay ning\'un precedente legal firme acerca de la intimidad
electr\'onica en sistemas de ordenadores de tiempo compartido. En sistemas
UNIX, el usuario {\tt root} tiene la posibilidad de saltarse todos los
mecanismos de seguridad y privacidad del sistema. Es importante que el 
administrador del sistema desarrolle una relaci\'on de confianza con los
usuarios del sistema. Es algo en lo que nunca se puede insistir lo 
suficiente.

\subsection{Como proceder con los usuarios}

\index{administraci\'on de sistemas!temas de seguridad}
\index{seguridad}
\index{seguridad del sistema}
\index{usuarios!seguridad del sistema y}
La seguridad en UNIX es bastante laxa por dise\~no. La seguridad del sistema fue 
un pensamiento posterior ---el sistema se desarroll\'o originalmente en un
entorno donde las intrusiones de un usuario en otro eran algo inaudito.
Por esto, incluso con medidas de seguridad, a\'un existe la posibilidad de que
usuarios normales hagan da\~no.

Los administradores de sistemas pueden tomar dos posturas cuando traten con
usuarios abusivos: ser paranoicos o confiados. El administrador de 
sistemas paranoico normalmente causa m\'as da\~no que el que previene. Una de
mis citas favoritas es, ``Nunca atribuyas a la malicia nada que pueda ser
atribuido a la estupidez.'' Dicho de otra forma, muchos usuarios no tienen
la habilidad o el conocimiento para hacer da\~no real al sistema. El 90\% del
tiempo, cuando un usuario causa problemas en el sistema (por ejemplo, 
rellenando la partici\'on de usuarios con grandes ficheros, o ejecutando
m\'ultiples instancias de un gran programa), el usuario simplemente desconoce 
que lo que est\'a haciendo es un problema. He ido a ver a usuarios que estaban
causando una gran cantidad de problemas, pero su actitud estaba causada por 
la ignorancia ---no por la malicia.

Cuando se enfrente con usuarios que puedan causar problemas potenciales
no sea acusativo. La antigua regla de ``inocente hasta que se demuestre lo
contrario'' sigue siendo v\'alida. Es mejor una simple charla con el usuario,
pregunt\'andole acerca del problema, en lugar de causar una confrontaci\'on. Lo
\'ultimo que se desea es estar entre los malos desde el punto de vista del
usuario. Esto levantar\'\i a un mont\'on de sospechas acerca de si usted 
---el administrador de sistemas--- tiene el sistema correctamente 
configurado. Si un usuario cree que usted le disgusta o no le tiene 
confianza, le puede acusar de borrar ficheros o romper la privacidad del 
sistema. Esta no es, ciertamente, el tipo de situaci\'on en la que 
quisiera estar.

Si encontrase que un usuario ha estado intentando ``romper'' el sistema,
o ha estado haciendo da\~no al sistema de forma intencionada, no devuelva el
comportamiento malicioso a su vez. En vez de ello, simplemente, dele un 
aviso ---pero sea flexible. En muchos casos, se puede cazar a un usuario
``con las manos en la masa'' da\~nando al sistema ---av\'\i sele. D\'\i 
gale que no
lo vuelva a repetir. Sin embargo, si le {\em vuelve\/} a cazar haciendo
da\~no, entonces puede estar absolutamente seguro de que es intencionado.
Ni siquiera puedo empezar a describir la cantidad de veces que parec\'\i a que
hab\'\i a un usuario causando problemas al sistema, cuando de hecho, era o un
accidente o un fallo m\'\i o.

\subsection{Fijando las reglas}

\index{usuarios!fijando reglas para}
La mejor forma de administrar un sistema no es con un pu\~no de hierro. 
As\'{\i} puede ser como se haga lo militar, pero UNIX no fue dise\~nado para 
ese tipo de disciplina. Tiene sentido el escribir un conjunto sencillo y 
flexible de reglas para los usuarios ---pero recuerde, cuantas menos 
reglas tenga, menos posibilidades habr\'a de romperlas. Incluso si sus 
reglas para utilizar el sistema son perfectamente razonables y claras, 
siempre habr\'a momentos en que los usuarios romper\'an dichas reglas sin 
pretenderlo. Esto es especialmente cierto en el caso de usuarios UNIX 
nuevos, que est\'an aprendiendo los entresijos del sistema. No esta 
suficientemente claro, por ejemplo, que uno no debe bajarse un gigabyte de 
ficheros y envi\'arselo por correo a todos los usuarios del sistema. Los 
usuarios necesitan comprender las reglas y por que est\'an establecidas.

Si especifica reglas de uso para su sistema, aseg\'urese de que el motivo 
detr\'as de cada regla particular est\'e claro. Si no lo hace, los usuarios
encontrar\'an toda clase de formas creativas de salt\'arsela y no saber que en
realidad la est\'an rompiendo.

\subsection{Lo que todo esto significa}

\index{administraci\'on de sistemas!obligaciones}
No podemos decirle como ejecutar su sistema al \'ultimo detalle. Mucha de la
filosof\'\i a depende en como se use el sistema. Si se tienen muchos 
usuarios, las cosas son muy diferentes de si solo tiene unos pocos o si 
se es el \'unico usuario del sistema. Sin embargo, siempre es una buena 
idea ---en cualquier situaci\'on--- comprender lo que ser administrador 
de sistema significa en realidad.

Ser el administrador de un sistema no le hace a uno un mago del UNIX. Hay
muchos administradores de sistemas que conocen muy poco acerca de UNIX.
Igualmente, hay muchos usuarios ``normales'' que saben m\'as acerca de 
UNIX que lo que cualquier administrador de sistemas. Tambi\'en, ser el 
administrador de sistemas no le permite el utilizar la malicia contra sus 
usuarios. Aunque el sistema le d\'e el privilegio de enredar en los 
ficheros de los usuarios, no significa que se tenga ning\'un derecho a 
hacerlo.

Por \'ultimo, ser el administrador del sistema no es realmente una gran cosa.
No importa si sus sistema es un peque\~no 386 o un super ordenador Cray. La
ejecuci\'on del sistema es la misma. El saber la clave de {\tt root} no
significa ganar dinero o fama. Tan solo le permitir\'a ejecutar el sistema
y mantenerlo funcionando. Eso es todo.

