Archivos en la Categoría: /etc/

Los Niveles de Ejecución en Linux

Los niveles de ejecución de Unix o runleves, en inglés, indican el modo en el que el sistema será iniciado. Los niveles son indicados mediante los números del 0 al 6. En la mayoría de los Unix y distribuciones Linux (aunque no podría decir que en todas) el nivel de ejecución son los siguientes:
EL ARCHIVO /etc/inittab:
0 indica halt o apagado de la máquina.
1 Indica monousuario.
2 Indica modo multiusuario sin soporte de red.
3 Indica modo multiusuario completo con soporte de red.
4 No usado, con esta opción el administrador puede personalizar el inicio para cargar algún servicio.
5 Indica multiusuario completo con inicio gráfico (X11) (Aunque en Solaris indica shutdown)
6 Indica shutdown y reboot: Se apaga inmediatamente la máquina para reinicio.

Los modos específicos para una distribución particular se encuentran en el archivo /etc/inittab
En mi máquina, con Mandriva, una sección de ese archivo es la siguiente:

# Default runlevel. The runlevels used by Mandriva Linux are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:

Las líneas precedidas por el sígno numeral # son comentarios. En los comentarios se indica cuáles son los runleves de mandriva, los cuales coinciden con los presentadas aquí. Al final de los comentarios, en color rojo, aparece la línea:

id:5:initdefault:

Ésto quiere decir que cuando el sistema arranca, lo hace en el modo 5, que, como hemos visto, indica multiusuario completo (con red y modo gráfico). Observe que en los comentarios de los modos 0 y 6 aparece un par de recomendaciones importantes: NO establezca el valor default de init en este número. ¿Por qué no?
Un administrador (root) puede editar el archivo /etc/inittab como mejor convenga al usuario, sin embargo también tiene el poder de establecerlo en 0 ó en 6. Si se establece en 6, algo que hice como experimento en mi Mandriva, la próxima vez que la máquina se encienda, se leerá el modo 6, shutdown y reboot, y se hará exactamente eso. De hecho se crea un ciclo infinito de reinicios que puede ser desconcertante para el usuario. Algo similar pasa al establecer el modo de ejecución en 0, cada vez que se enciende la computadora, inmediatamente se apaga. La manera de cambiar esto es entrar en modo recover y editar de nuevo el archivo /etc/inittab.
Pero si no deben establecerse, ¿Por qué están ahí? La razón es que otros usuarios pueden requerirlos realmente.
EL COMANDO init:
Aparte de editar el archivo /etc/inittab, el administrador puede cambiar en cualquier momento el valor del nivel de ejecución con el comando init. Una instrucción como la siguiente:

# init 3

cambia a nivel de ejecución 3. Si hace esto dejará de tener una pantalla gráfica y aparecerá una terminal y es probable que pierda la información que no tenga guardada. Para regresar al modo gráfico es necesario establecer de nuevo a 5 (o 2 si se usa Ubuntu, ver más abajo). El comando init no altera el contenido del archivo /etc/inittab.
Y la instrucción

# init 0

apaga la computadora inmediatamente. Los comandos halt y shutdown llaman a init para apagar el sistema.
PARA VER EL NIVEL DE EJECUCIÓN ACTUAL:
¿Cómo podemos saber cuál es el nivel de ejecución actual del sistema?
Con el comando who y la opción -r

$ who -r

se obtiene

`run-level' 5 2012-06-16 11:08

También con el comando runlevel. La instrucción

runlevel

produce

N 5

N indica que no se ha cambiado el runlevel con el comando init. Si se hubiera cambiado antes, aparecería un número indicando en nivel alterior, 5, indica el nivel actual.
EN UBUNTU:
Para no variar, Ubuntu es distinto. El archivo /etc/inittab fue sustituído a partir de la versión 6.10 por /etc/upstart, el cual ahora también ha cambiado. Y los niveles de ejecución son los siguientes:

0 - shutdown
1 - modo monousuario
2 - modo gráfico monousuario
6 - reboot

Así que si uso el comando runlevel en mi Ubuntu 11.04 natty aparece

N 2

FUENTES:
Las fuentes en internet se pueden encontrar en mi delicious

El Archivo /etc/issue

Relacionado con el archivo /etc/motd, y con el comando agetty existe el archivo /etc/issue para personalizar la entrada al sistema. El mensaje de /etc/issue se muestra para todas los usuarios antes de haber entrado a su cuenta. Generalmente se muestra el nombre del sistema o la distribución así como su versión. El contenido de este archivo, en mi caso es:

Ubuntu 11.10 \n \l

El mensaje Ubuntu 11.10 hace referencia a la distribución y su versión, la 11.10 de Ubuntu. Los siguientes caracteres son secuencias de escape. En particular \n imprime el nombre de la máquina (hostname), mientras que \l imprime el nombre de la tty actual. Todos los usuarios que intenten acceder a su cuenta verán esa información. Una lista completa de las secuencias de escape es la siguiente:


b   Inserta la velocidad en baudios de la línea actual.
d   Inserta la fecha actual.
l   Inserta el nombre de la línea tty actual.
m   Inserta el identificador de la arquitectura de la máquina, i486 por ejemplo.
n   Inserta el nombre de nodo de la máquina, también conocido como
     nombre de máquina (hostname).
o   Inserta el nombre del dominio de la máquina.
r   Inserta la versión del núcleo, por ejemplo 2.4.16.
s   Inserta el nombre del sistema, el nombre del sistema operativo.
t   Inserta la hora actual.
u   Inserta el número de usuarios conectados en ese momento.
U   Inserta la cadena "1 user" o "<n> users" dónde <n> es el
     número de usuarios conectados en ese momento.
v   Inserta la versión del SO, por ej. la fecha de creación, etc.

Todas las secuencias de escape deben comenzar con una diagonal invertida \.

El Archivo /etc/motd

El archivo /etc/motd incluye el mensaje del día (motd son las iniciales en inglés de message of the day) que se muestra al usuario cada vez que accede a su cuenta. La principal ventaja de este comando es que requiere menos recursos que, por ejemplo, enviar un coreo a cada uno de los usuarios del sistema. Para ver el contenido basta con una llamada al comando more en la consola:

$ more /etc/motd

Y se obtiene la salida siguiente

Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)

 * Documentation:  https://help.ubuntu.com/

56 packages can be updated.
41 updates are security updates.

Como parte del mensaje del día, se muestra el nombre y la versión de la distribución, así como la página oficial de ayuda y las actualizaciones disponibles.
Es posible personalizar el mensaje de bienvenida por medio de simplemente modificar el archivo. Por ejemplo, es posible poner como mensaje el nombre de la computadora:

# hostname | figlet > /etc/motd

Este archivo sólo se puede modificar con privilegios de root.
si ahora revisamos el mensaje del día

$ more /etc/motd

obtenemos:

      _ _           
  ___| (_)___  __ _ 
 / _ \ | / __|/ _` |
|  __/ | \__ \ (_| |
 \___|_|_|___/\__,_|
                    

Atención, hay que tener cuidado con el uso de > a la hora de redireccionar la salida de archivos y comandos. En particular > hace que se PIERDA todo el contenido que antes teníamos en el archivo al que dirigimos la salida. Si sólo queremos concatenar, es necesario usar >>.

El archivo /etc/*release

Sustituya asterísco (*) por el nombre de su distribución particular seguida por un guión (-). Aunque si en la consola escribe la orden

$ cat /etc/*release

obtendrá la información acerca de la distribución que está usando. En Ubuntu, en lugar de aparecer este archivo con el natural /etc/ubuntu-release, aparece con /etc/lsb-release (donde lsb son las iniciales de linux standard base). Al ejecutar yo ese comando obtengo lo siguiente:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"

Desde luego, la línea

DISTRIB_ID=Ubuntu

Hace referencia a el nombre de la distribución, la cual es Ubuntu, para este caso.
La siguiente línea

DISTRIB_RELEASE=11.04

nos dice cual es la versión de la distribución, y esta es la 11.04 de Ubuntu.
Y el codename, o nombre de la versión (sólo para que el público pueda encariñarse con ella) es natty. Ésto es lo que dice la siguiente línea

DISTRIB_CODENAME=natty

La última no nos dice nada que no sepamos ya: se trata de Ubuntu en su versión 11.04

DISTRIB_DESCRIPTION="Ubuntu 11.04"

/etc/passwd El Archivo de Administración Más Importante En Unix

El archivo /etc/passwd contine la mayoría de la información de las cuentas de usuario. Esta información está disponible para todos los usuarios en la mayoría de los sistemas con tan sólo usar cat /etc/passwd, pero sólo el usuario root puede modificarlo. Este archivo existe en FreeBSD, pero también existe /etc/master.passwd con la misma información.

La estructura de cualquier línea del archivo contiene lo siguiente:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/sh
daemon:x:2:2:daemon:/sbin:/bin/sh
adm:x:3:4:adm:/var/adm:/bin/sh
lp:x:4:7:lp:/var/spool/lpd:/bin/sh
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/bin/sh
news:x:9:13:news:/var/spool/news:/bin/sh
uucp:x:10:14:uucp:/var/spool/uucp:/bin/sh
operator:x:11:0:operator:/var:/bin/sh
games:x:12:100:games:/usr/games:/bin/sh
nobody:x:65534:65534:Nobody:/:/bin/sh
messagebus:x:499:499:system user for dbus:/:/sbin/nologin
rpm:x:498:498:system user for rpm:/var/lib/rpm:/bin/false
polkituser:x:497:497:system user for policykit:/:/sbin/nologin
haldaemon:x:496:496:system user for hal:/:/sbin/nologin
avahi:x:495:495:system user for avahi:/var/avahi:/bin/false
avahi-autoipd:x:494:494:system user for avahi:/var/avahi:/bin/false
usbmux:x:493:493:system user for usbmuxd:/proc:/sbin/nologin
vcsa:x:69:492:virtual console memory owner:/dev:/sbin/nologin
mysql:x:492:491:system user for mysql:/var/lib/mysql:/bin/bash
rtkit:x:491:490:system user for rtkit:/proc:/sbin/nologin
gdm:x:490:486:system user for gdm:/var/lib/gdm:/bin/false
xguest:x:61000:61000:Guest Account:/home/xguest:/bin/rbash
htdig:x:489:484::/var/lib/htdig:
halevt:x:488:483:system user for halevt:/var/lib/halevt:/sbin/nologin
barton:x:500:500:Barton V:/home/barton:/bin/bash
ftw:x:487:482:system user for drakfirsttime:/home/ftw:/bin/false

1) Login ID. se trata del nombre con el que se accede a la cuenta.
2) x Representa el password encriptado. Anteriormente aparecía de verdad el password encriptado en este apartado, pero por razones de seguridad ahora se encuentra en el archivo /etc/shadow Es posible que algunas versiones de Unix todavía lo incluyan, pero en general es algo que ya no se usa. Hay que recordar que con un simple cat /etc/passwd cualquier usuario tiene acceso al código encriptado, y con fuerza bruta puede descifrarlo. En FreeBSD el arvhivo /etc/master.passwd sí contiene los passwords encriptados, pero se necesitan privilegios de root para poder verlo.
3) El número de identificación usuario (UID number). Por comodidad, los usuarios acceden a su cuenta con un nombre elegido por ellos; pero para Unix los usuarios son representados por un número que en la mayoría de los sistemas va de 0 a 65535, con 0 – 99 reservado para archivos del sistema. Este número de identificación se puede duplicar por el administrador, aunque puede haber confusión y no es recomendable. El usuario root tiene reservado el número 0. Como lo que realmente importa para Unix no es el nombre sin o el ID, entonces cualquier usuario con un número 0 tiene privelegios de root.
4) Número de grupo por default. Representa el grupo al cual es asignado el usuario en un principio. Este número no es único, y muchos usuarios pueden compartirlo sin problemas.
5) Los comentarios y datos adicionales de la cuenta. Incluye información general que se pide al momento de crear al usuario. Este campo puede estar en blanco. Tampoco es conveniente incluir información delicada, porque todos podrán verla. Este campo es conocido como GCOS (de General Electric Comprehensive Operating System)
6) El directorio en el que se inicia la sesión por default. Generalmente este campo contiene algo como /home/nombredeusuario indicando que la cuenta de juanito está montada en el directorio home. No es necesario que sea en ese directorio, pero debe evitarse que la cuenta esté en /temp
7) La shell de login del usuario. Necesita ser una de las contenidas en el archivo /etc/shell
Cada uno de estos campos está separado por ‘:’ (dos puntos) Si alguno de esos campos esta vacío, como puede ser el 5, correspondiente a los datos generales del dueño de la cuenta, entonces sólo se verá ::