(New page: == Cierre del sistema == :Para detener correctamente un sistema Unix hemos de situar el proceso INIT en un determinado runlevel, generalmente 0 o 6 (podemos comprobarlo simplemente echando...) |
|||
| Línea 7: | Línea 7: | ||
Con el parámetro -r hacemos un reboot, y con -h un halt (simplemente detenemos el sistema, sin reinicializar). | Con el parámetro -r hacemos un reboot, y con -h un halt (simplemente detenemos el sistema, sin reinicializar). | ||
| + | |||
| + | == El intérprete de órdenes == | ||
| + | :Hemos visto antes que el proceso login nos asigna un intérprete de mandatos, leído de nuestra entrada en /etc/passwd. Ya sabemos que un shell no es más que un programa del sistema que nos va a permitir relacionarnos con la máquina, introduciéndole órdenes desde el teclado; es la interfaz de usuario que nos ofrece cualquier sistema operativo. En nuestro sistema Unix podemos tener instalados diversos intérpretes de órdenes; en el archivo /etc/shells tenemos los disponibles para cada usuario, incluido el root. Por defecto se asigna el Bourne Again Shell (bash), el más cómodo, que incluye lo mejor de todos los anteriores intérpretes, como el C-Shell (csh) o el Korn Shell (ksh). El bash incluye rodillo de mandatos, histórico deórdenes (en el archivo .bash history del directorio $HOME de cada usuario), uso de tabuladores para completar órdenes, etc. Cualquier int ́rprete de Unix nos ofrece un entorno de programación completo con herramientas similares a las de la mayoría de lenguajes de programación secuencial (if, for, while. . . ). También nos va a ofrecer una serie de órdenes, denominadas órdenes internas, que no encontramos como archivos ejecutables en el sistema, y que por supuesto no va a ser necesario cargar en memoria para oder ejecutarlas; un ejemplo típico de este tipo de instrucciones es exit: no encontraremos ningún ejecutable en todos los sistemas de ficheros de Unix que se denomine así. | ||
| + | :En Unix existe el mandato chsh, que permite a cualquier usuario modificar el shell que el sistema le asigna por defecto (recordemos que este dato está grabado en /etc/passwd). En determinados clones, chsh no va a comprobar que el shell sea válido (esto es, que sea una entrada de /etc/shells). Esto puede suponer un problema: imaginemos que un usuario inexperto cambia su shell de entrada a /bin/login; será imposible para él volver a entrar al sistema mediante conexión remota hasta que el administrador modifique la información de /etc/passwd. Por tanto, desde hace algún tiempo la mayoría de Unices del mercado (y por supuesto también Linux) hacen la comprobación oportuna. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | Analizando el funcionamiento de chsh, vemos que una de las cosas que realiza es modificar el | ||
| + | fichero de contrase ̃as para cambiar el shell de entrada de un usuario; por tanto, el archivo est ́ | ||
| + | n a | ||
| + | setuidado. Puede ser interesante para nosotros resetear el bit setuid del archivo (chmod -s) para | ||
| + | as ́ conseguir un mayor nivel de seguridad del sistema, ya que, como veremos m ́s adelante, es | ||
| + | ı a | ||
| + | conveniente mantener al m ́ınimo el n ́mero de archivos setuidados en la m ́quina. Si lo hacemos as ́ | ||
| + | u a ı | ||
| + | y alg ́n usuario quiere cambiar su int ́rprete de ́rdenes cada vez que entre al sistema puede incluir | ||
| + | u e o | ||
| + | en su .profile una orden como | ||
| + | exec <nuevoshell> | ||
| + | De esta forma, sustituye el proceso que ejecuta .profile (el shell) por la orden <nuevoshell>, el | ||
| + | nuevo int ́rprete que desea. | ||
| + | e | ||
shutdown -r/-h now
Con el parámetro -r hacemos un reboot, y con -h un halt (simplemente detenemos el sistema, sin reinicializar).
Analizando el funcionamiento de chsh, vemos que una de las cosas que realiza es modificar el
fichero de contrase ̃as para cambiar el shell de entrada de un usuario; por tanto, el archivo est ́
n a
setuidado. Puede ser interesante para nosotros resetear el bit setuid del archivo (chmod -s) para as ́ conseguir un mayor nivel de seguridad del sistema, ya que, como veremos m ́s adelante, es
ı a
conveniente mantener al m ́ınimo el n ́mero de archivos setuidados en la m ́quina. Si lo hacemos as ́
u a ı
y alg ́n usuario quiere cambiar su int ́rprete de ́rdenes cada vez que entre al sistema puede incluir
u e o
en su .profile una orden como
exec <nuevoshell>
De esta forma, sustituye el proceso que ejecuta .profile (el shell) por la orden <nuevoshell>, el nuevo int ́rprete que desea.
e