1. Administración del sistema LINUX.

Anuncio
ADMINISTRACIÓN DEL SISTEMA LINUX
1. Estructura de Directorio
1.1. Árbol de directorio en sistemas Linux
1.2. Navegación básica por el árbol de directorios
1.2.1. Creación de archivos y directorios
1.2.2. Borrado de archivos y directorios
1.2.3. Copiar y mover archivos y directorios
1.2.4. Búsqueda find /locate
2. Comandos principales en un sistema Linux
2.1. Comandos generales básicos
2.2. Permisos sobre ficheros
2.3. Comandos para administrar la red
3. Administración de usuarios y grupos
3.1. Usuarios. Ficheros /etc/passwd y /etc/shadow
3.1.1. Comandos para la creación/modificación/eliminación de usuarios.
3.2. Grupos. Ficheros /etc/group y /etc/gshadow
3.3. Directorio /etc/skel
4. Búsqueda de información del Sistema.
4.1. Directorio /proc
4.2. Comandos útiles para obtener información del sistema
5. Anexos
Anexo I.- Utilización de comodines
1
Jesús Fernández Toledo
www.losteatinos.es
1 ESTRUCTURA DE DIRECTORIO
.1. Árbol de Directorio en Sistemas Linux
Linux organiza la información del sistema en una estructura de árbol jerárquico de
directorios compuesta por ficheros. Esta estructura se forma mediante un sistema de
ficheros raíz y un conjunto de ficheros montables.
Un sistema de ficheros es una estructura de directorios compleja. Para poder utilizar un
sistema de directorios hay que montarlo, o sea enlazarlo a una estructura de directorios ya
existente. Al iniciar el sistema el usuario se encontrara con un árbol de directorio formado
por los distintos sistemas de ficheros que se encuentran montados en ese instante.
2
Jesús Fernández Toledo
www.losteatinos.es
/bin: Comando y binarios del usuario
/boot: Archivos utilizados para el arranque del sistema
/dev: Archivos de dispositivos
/etc: Ficheros de configuración del sistema
/home: Directorio de trabajo de los usuarios
/lib: bibliotecas compartidas y módulos del kernel necesarios para ejecutar los programas
residentes en /bin y/sbin
/media: Directorio donde se suelen encotrar los dispositivos extraíbles, como CD-ROM o
USB
/mnt: Directorio donde se suelen montar sistemas de archivos temporales
/proc: Directorio virtual donde podemos ver toda la información sobre el kernel, los
procesos del sistema y el hardware instalado
/root: Directorio de trabajo del Administrador del Sistema
/sbin: Binarios del sistema que suele ejecutar el root.
/tmp: Donde se encuentran los ficheros temporales del sistema
/usr: Utilidades, bibliotecas y aplicaciones de usuario
.2. Navegación básica por el Árbol de Directorios
El intérprete de comandos o Shell del sistema es la interfaz entre el usuario y el sistema
operativo. Su función es la de recibir órdenes del usuario, a través de la línea de comandos,
interpretarlas, ejecutarlas y mostrar su resultado. Nos permite interactuar directamente con el
sistema y sus ficheros de configuración.
Tras iniciar el sistema nos aparecerá un terminal que permitirá “logearnos” en el sistema,
introduciendo nombre de usuario y contraseña. Tras esto aparecerá un prompt con el
siguiente aspecto:
usuario@ubuntu:~$
Donde:
Usuario: Nombre del usuario
@ubuntu: Nombre del equipo
~: Directorio donde nos encontramos (:~ significa que estamos en nuestro home)
$/#: El símbolo $ indica que es un usuario normal # indica que es el administrador
3
Jesús Fernández Toledo
www.losteatinos.es
En Linux disponemos de varias Shell bash, ash, csh, Zsh, ksh, tcsh, siendo la más utilizada la
bash. Si tecleamos bash en la consola, se crea un Shell hijo.
Linux proporciona por defecto seis terminales de texto de Control+Alt+F1 a Control+Alt+F6. Si
queremos volver al modo gráfico lo hacemos con Alt+F7.
Los comandos principales para navegar por el árbol de directorios son: cd, ls y pwd
cd ruta
La ruta puede ser:
 Absoluta: si comienza por / y se le da la ruta completa
 Relativa: a partir del directorio actual, usando ../ o ./
ls lista el contenido de un directorio. Parámetros interesantes ls –a
Con un . delante del fichero lo ocultamos. Pero como oculto realmente un fichero si no quiero
que lo vea nadie. Lo meto en una carpeta con los siguientes permisos chmod go –rwx carpeta
pwd: ¿dónde estoy?
1.2.1
Creación de archivos y directorios
mkdir: pemite crear directorios. –p crea una jerarquía de directorios en un solo paso
touch, cat, gedit, nano, vi, vim, joe: Crean un nuevo fichero
Los permisos que se dan por defecto a un fichero o directorio creado por defecto vienen
indicados por umask. Para ver el valor actual teclearemos umask en la línea de comandos. La
salida será cuatro cifras en octal, que “definen los permisos que se deniegan”. Por defecto el
valor suele ser 0022.
Si creamos un nuevo fichero, este debería tener los siguientes permisos 0666, pero al ser
umask 0022 el resultado es 0666-0022=0644 (rw-r--r-- )
Si creamos un directorio los permisos por defecto serian 0777. Al tener umask un valor de
0022 el resultado es 0777-0022=0755 (rwxr-xr-x)
Con el comando umask puedo cambiar la máscara temporalmente
Con el comando stat nombre_fichero se puede ver más en profundidad datos del archivo
1.2.2
Borrado de archivos y directorios
rmdir: permite borrar directorios. Tiene que estar vacio. Soporta el parámetro -p
rm: eliminación de ficheros y directorios. Con la opción –r borra directorios aunque no esté
vacío.
4
Jesús Fernández Toledo
www.losteatinos.es
1.2.3
Copiar y mover archivos y directorios
cp: copia ficheros y directorios.
cp fichero1 fichero2 ¡¡¡ Ojo si fichero2 existe se lo carga!!! Con –i me avisa en caso de
sobrescribir.
No puede copiar una carpeta en otra directamente. Hay que copiar el contenido de forma
recursiva utilizando -r
mv: mueve o renombra ficheros.
mv fichero1 carpeta1. Si es en el mismo directorio renombra
1.2.4
Búsqueda find / locate
Si utilizamos find sin ningún parámetro buscara todos los ficheros bajo el directorio actual. Si
deseamos buscar en un directorio determinado, lo especificamos como primer argumento.
Ej.- find /home
El parámetro –name permite buscar ficheros que coincidan con el patrón dado
Ej.- find ~ -name “*firefox*”
El problema de find es que puede tardar mucho en hacer una búsqueda. Hay veces que es
mucho más rápido si utilizamos locate, locate solo permite buscar ficheros y directorio (que es
lo que deseare buscar normalmente.)
5
Jesús Fernández Toledo
www.losteatinos.es
2 COMANDOS PRINCIPALES EN UN SISTEMA LINUX
2.1 Comandos generales básicos
startx  iniciar modo gráfico
halt, shutdown –h now, init 0  apagar la máquina
reboot  reiniciar
date fecha y hora actual
clear limpiar la pantalla
who  que usuarios están conectados al sistema.
ps, top  muestra por pantalla un listado de los procesos que se están ejecutando en el
sistema.
apt-get  instalar, desinstalar paquetes, actualizar los repositorios.
Man, help muestra la página de ayuda de un comando
2.2 Permisos sobre ficheros
En Linux todos los archivos pertenecen obligatoriamente a un usuario y a un grupo. Cuando un
usuario crea un nuevo archivo, el propietario del archivo será el usuario que lo ha creado y el
grupo del archivo será el grupo principal de dicho usuario.
Ejemplo, si un usuario llamado 'pepe' cuyo grupo principal es el grupo 'profesores' crea un
nuevo archivo, el propietario del archivo será 'pepe' y el grupo propietario del archivo será
'profesores', o lo que es lo mismo, el archivo pertenecerá al usuario pepe y al grupo
profesores. Obligatoriamente, todos los archivos del sistema pertenecen a algún usuario y a
algún grupo.
Con el comando ls añadiendo la opción -l (modificador) podemos visualizar el usuario
propietario y el grupo propietario del archivo, ejemplo:
Cada fichero (directorio, unidad, dispositivo) en Linux tiene una serie de permisos que indica
quien puede leer, escribir o realizar acciones de ejecución sobre él.
Lectura: pueden ver el contenido, copiarlo…
Escritura: cambiar ficheros, directorios, borrarlo…
Ejecución: Programas: ejecutarlos
6
Jesús Fernández Toledo
Directorio: acceso
www.losteatinos.es
Los permisos vienen indicados por las letras rwx.
r: lectura
w: escritura
x: ejecución
Además cada fichero pertenece a un usuario y a un grupo. Estos tres permisos se asignan para:
el usuario
el grupo
el resto del sistema.
Primer bloque: permisos del propietario
Segundo bloque: el grupo
Tercer bloque: el resto de usuarios.
7
Jesús Fernández Toledo
www.losteatinos.es
El comando chmod permite modificar los permisos sobre los ficheros. Existen dos métodos
para usarlo:

Con Número en octal chmod 777 pepe quedaria rwxwrxwrx
chmod 721 pepe quedaría rwx-w---x
Un número en octal se representa por 3 en binario. 011 =3. Con lo que para cada
bloque tendremos un número en octal que representa si tiene o no un permiso.
- La ausencia de permiso se representa con un 0
- Tener un permiso se representa con un 1
EJEMPLO:
Si quiero que el usuario tenga los tres permisos rwx 111 = 7
Si quiero que el grupo que tenga solo permisos de lectura r-- 100=4
Si deseo que el resto del sistema no quiero que tenga ningún permiso --- 000 = 0
Quedando el comando: chmod 740 fichero

Con letras augo (todos usuario grupo otros) + - rwx
a All
u User
g Group
o Others
Con + añadimos
Con – quitamos
Con = forzamos
chmod g +rw, o –rwx
chmod ugo=rwx -> todo activado
8
Jesús Fernández Toledo
www.losteatinos.es
Los sistemas de fichero de Windows no soportan propietarios o grupos de ficheros. Podemos
especificar un propietario por defecto (wid=) y/o grupo (gid=). Además la entrada umask
permite asignar por defecto privilegios de acceso.
chown: cambia el propietario de un fichero
Sintaxis: chown nuevousuario archivo1 [ archivo2 archivo3...]
chown -R nuevousr directorio
Cambia el propietario para que pase a ser nuevousr a directorio, todos los archivos y
subdirectorios contenidos en él, cambiándolos también de forma recursiva en todos
ficheros de los subdirectorios.
chgrp: Ídem pero para el grupo
2.3 Comandos para administrar la red
Ifconfig  muestra la configuración de red de la máquina.
ping  muestra si dos máquinas están comunicadas.
route  muestra puerta de enlace.
Pasos para Configurar la conexión a internet de la máquina de
forma manual
 Paso 1. Configurar la IP
ifconfig eth0 192.168.1.1 netmask 255.255.255.0
En el primer paso simplemente asignamos la IP y la máscara de subred a una interface, donde
“eth0″ es el nombre de la interface.
La interface es lo mismo que la tarjeta de red. Si sólo tienes una tarjeta de red lo más probable
es que sea eth0.
Hay otra opción para hacer este paso y es escribiendo el comando de esta forma “ifconfig eth0
192.168.1.1/24″, esta es otra forma de asignar la máscara de subred, lo que hacemos es decir
que nuestra mascara de subred es de 24 bits, es decir el equivalente a 255.255.255.0.
 Paso 2. Configurar GateWay
9
Jesús Fernández Toledo
www.losteatinos.es
route add default gw 192.168.1.1
Agregamos nuestro default gateway o router, cualquier paquete que sea dirigido a una
IP fuera de nuestra red será enviado al router.
 Paso 3. Configurar DNS
echo nameserver 192.168.1.200 > /etc/resolv.conf
En el tercer paso usamos una forma elegante de agregar nuestro DNS. El archivo
/etc/resolv.conf contiene las direcciones de los servidores dns, es un archivo de texto normal,
otra forma de hacer este paso es abrir el archivo en un editor de texto y agregar la línea
“nameserver 192.168.1.200″ manualmente. Sin embargo de esta forma es más fácil y creativa.
Lo que hacemos es anexar la línea mencionada anteriormente usando el “>” que ven en el
comando.
Después de hacer esto les recomiendo reiniciar los servicios de red. En algunas distribuciones
de linux el comando es “service network restart” o “/etc/init.d/network restart”.
Puedes reiniciar la red utilizando dhclient, es más fácil de recordar
Por ejemplo:
Imaginemos que los datos que necesitamos configurar en nuestra interfaz son:
IP : 192.168.53.226
Netmask : 255.255.255.0
Puerta de enlace : 192.168.53.1
Ahora nos toca configurarla, recuerda que se hace con permisos de Root en la mayoría de
los casos.
1. Configurando ip
sudo ifconfig eth0 192.168.53.226
2. Configurando Mascara de red
sudo ifconfig eth0 netmask 255.255.255.0
Recuerda que el paso 1 y 2 se puede hacer en uno solo:
sudo ifconfig eth0 192.168.53.226 netmask 255.255.255.0
o bien
sudo ifconfig eth0 192.168.53.226/24
10
Jesús Fernández Toledo
www.losteatinos.es
3. Ahora la puerta de enlace.
sudo route add default gw 192.168.53.1 eth0
Para ver si nuestra configuración esta ok ejecutamos:
jesus@ubuntu:~$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0D:88:17:D3:1D
inet addr:192.168.53.228 Bcast:192.168.53.255 Mask:255.255.255.0
Y para ver la puerta de enlace:
jesus@ubuntu:~$ route
Kernel IP routing table
Destination
Gateway
Genmask
Flags
Metric Ref
default
192.168.53.1
0.0.0.0
UG
0
Use
Iface
0
eth0
0
Con estos pasos ya tenemos configurada una ip fija en nuestra tarjeta de red.
Recuerda que esta configuración durara sólo hasta que reinicies tu Linux ya que
por defecto está habilitado el DHCP, para ello hay que modificar el archivo
/etc/network/interfaces
Para editarlo lo hacemos de la siguiente forma
sudo nano /etc/network/interfaces
Si queremos asignar una ip tendremos que modificar lo que aparece en el campo donde nos
indica el nombre de la interface, en este caso eth0
Así puede aparecer
auto eth0
iface eth0 inet dhcp
Como comentamos anteriormente por defecto podemos encontrar que la interface está
configurada para DHCP y como queremos ahora configurarla en forma estática tendremos
que modificar dhcp por static de la siguiente forma:
auto eth0
iface eth0 inet static
Bien, ahora le entregaremos los datos de ip, máscara y puerta de enlace, siguiendo con el
ejemplo anterior y en modo de ejemplo utilizaremos los datos del ejercicio anterior.
11
Jesús Fernández Toledo
www.losteatinos.es
IP : 192.168.53.226
Netmask : 255.255.255.0
Puerta de enlace : 192.168.53.1
Entonces queremos agregar estos datos en nuestro archivo de configuración
/etc/network/interfaces, para esto tendremos que agregar después de la linea static lo
siguiente.
address 192.168.53.228
netmask 255.255.255.0
gateway 192.168.53.1
Para terminar nuestra configuración de la interface eth0 quedaría así.
auto eth0
iface eth0 inet static
address 192.168.53.228
netmask 255.255.255.0
gateway 192.168.53.1
Ahora reinicia tu sistema o bien reinicia la red de la siguiente forma.
sudo /etc/init.d/networking restart (Para reiniciar red)
o bien
reboot (Para reiniciar Sistema)
12
Jesús Fernández Toledo
www.losteatinos.es
3. ADMINISTRACION DE USUARIOS Y GRUPOS
Linux es un sistema operativo multiusuario, lo que permite que varios usuarios estén
utilizando el sistema simultáneamente a través de la línea de comandos o conexiones
remotas. Por lo tanto es necesario disponer de una base de datos de usuarios y grupos
donde poder asignar o denegar permisos de acceso a los recursos autenticados del
sistema. Ello permitirá personalizar los entornos de trabajo de cada usuario, ya que en
los entornos de trabajo tenemos por costumbre personalizar nuestros equipos con
carpetas, fondos de escritorio, accesos directos, …
La administración de usuarios y grupos solamente puede realizarlas el usuario root utilizando
los comandos de gestión de usuarios y ficheros para tal fin.
3.1 Usuarios. Ficheros /etc/passwd - /etc/shadow
En Linux hay tres tipos de usuarios. Todos los usuarios tienen un identificador de usuario (UID)
y un identificador de grupo (GID).
 root: es el usuario más importante ya que es el administrador y dueño del sistema.




También llamado superusuario o administrador.
Su UID (User ID) es 0 (cero).
Es la única cuenta de usuario con privilegios sobre todo el sistema.
Acceso total a todos los archivos y directorios con independencia de propietarios y
permisos.
 Controla la administración de cuentas de usuarios.
 Ejecuta tareas de mantenimiento del sistema.
 Puede detener el sistema.
 Instala software en el sistema.
 Puede modificar o reconfigurar el kernel, controladores, etc.
 Usuarios normales: pueden iniciar la sesión y tienen una funcionalidad limitada tanto en los
comandos que puede utilizar como en los ficheros a los que tiene acceso.






Se usan para usuarios individuales.
En las distros actuales de Linux se les asigna generalmente un UID superior a 1000,
aunque es configurable.
Cada usuario dispone de un directorio de trabajo, ubicado generalmente en /home.
Cada usuario puede personalizar su entorno de trabajo.
Tienen solo privilegios completos en su directorio de trabajo o HOME.
Por seguridad, es siempre mejor trabajar como un usuario normal en vez del usuario
root, y cuando se requiera hacer uso de comandos solo de root, utilizar el
comando sudo.
 Usuarios asociados a servicios (usuarios especiales): No pueden iniciar sesión en el
sistema. Permiten establecer los permisos de un determinado servicio. Ej.- El servidor de
páginas web tiene asociado un usuario para poder especificar que ficheros tiene asociados,
y por lo tanto que ficheros son visibles a través de internet.
13
Jesús Fernández Toledo
www.losteatinos.es
 Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache,
etc.
 Generalmente se les asigna un UID entre 1 y 1000 (definido en /etc/login.defs), salvo
para el usuario nobody al que se le asigna el último UID posible, el 65534.
 Se les llama también cuentas del sistema.
 No tiene todos los privilegios del usuario root, pero dependiendo de la cuenta asumen
distintos privilegios de root. Esto es para proteger al sistema de posibles formas de
vulnerar la seguridad.
 No tienen contraseñas pues son cuentas que no están diseñadas para iniciar sesiones
con ellas.
 También se les conoce como cuentas de "no inicio de sesión" (nologin).
 Se crean (generalmente) automáticamente al momento de la instalación de Linux o de
la aplicación.
Fichero /etc/passwd
Es el fichero que se utiliza para administrar a los usuarios. Es un fichero de texto con una
entrada para cada cuenta, la cual incluye, el nombre de login, el ID del usuario, el ID del grupo
primario, el directorio del usuario y el Shell por defecto. También pueden incluir detalles tales
como nombre, apellidos, número de teléfono.
Ejemplo de una entrada en /etc/passwd
pepe:x:1000:1000:Jose; Garcia;;:/home/pepe:/bin/bash
1 campo - Nombre de usuario: Nombre para logearse el usuario.
2 campo - Contraseña: Aquí va la contraseña encriptada. En la mayoría de los sistema aparece
una x indica que la contraseña se encuentra en /etc/shadow. Si aparece en blanco el usuario
puede entrar sin contraseña.
3 campo - UID: Identificado univoco dentro de Linux. El 0 para root. Del 1 al 999 cuentas del
sistema. Los números UID menores que 999 se reservan para usuarios especiales del sistema.
Del UID 1000 en adelante se usan para usuarios normales.
4 campo - GID: Identificador del grupo. Los números GID menores que 100 se reservan para
grupos especiales del sistema.
5 campo - Información Adicional: Varias palabras separadas por ; utilizadas para describir al
usuario (Nombre;Apellidos;Numero de teléfono)
6 campo - Directorio HOME: En caso de usuarios normales /home/nombre_usuario. Los
pseudo usuarios tienen su propio directorio de trabajo por ejemplo, el usuario impresora lp
tiene /var/spool/lpd
7 campo -Shell: intérprete de comandos que se carga al iniciar el usuario, normalmente
/bin/bash
14
Jesús Fernández Toledo
www.losteatinos.es
Este fichero tiene los siguientes permisos de ejecución 0644, los que significa que cualquier
usuario puede acceder a él y leerlo. Si se almacenara en el las contraseñas cualquier usuario
podría acceder al fichero y desencriptarlas.
Por ello para guardar las contraseñas se utiliza el fichero /etc/shadow el cual pertenece al root
y al grupo shadow, evitando q el resto de usuarios acceda a este fichero.
Fichero /etc/shadow
Anteriormente (en sistemas Unix) las contraseñas cifradas se almacenaban en el mismo
/etc/passwd. El problema es que 'passwd' es un archivo que puede ser leído por cualquier
usuario del sistema, aunque solo puede ser modificado por root. Con cualquier computadora
potente de hoy en día, un buen programa de descifrado de contraseñas y paciencia es posible
"crackear" contraseñas débiles (por eso la conveniencia de cambiar periódicamente la
contraseña de root y de otras cuentas importantes). El archivo 'shadow', resuelve el problema
ya que solo puede ser leido por root. Considérese a 'shadow' como una extensión de 'passwd'
ya que no solo almacena la contraseña encriptada, sino que tiene otros campos de control de
contraseñas.
En cada línea de este fichero encontramos la siguiente información:
pepe:$1$8mspOWwL$w54sVYLP1/hxvEljZEGek0:15990:0:99999:7:::
1 campo - Nombre de usuario: El mismo que aparece en /etc/passwd
2 campo – Contraseña: Contraseña cifrada o encriptada. Si está vacío el campo el usuario no
tiene contraseña. Si tiene “*LK*”, la cuenta está bloqueada. “*RETIRED*”, si la cuenta esta
retirada. Si tiene “*” la contraseña se pondrá más tarde. Si contiene “!” cuenta todavía no está
activa. Si deseamos deshabilitar temporalmente una cuenta, debemos poner delante de la
contraseña un signo de exclamación !.
3 campo - Último cambio: La fecha del último cambio de contraseña medida en días desde
01.01.1970
4 campo - Edad min: Número de días que deben transcurrir hasta que la contraseña se pueda
volver a cambiar. Un 0 indica que se puede cambiar ya.
5 campo – Edad max: Número de días tras los cuales hay que cambiar la contraseña. (-1
significa nunca). A partir de este dato se obtiene la fecha de expiración de la contraseña.
99999 es lo máximo que se puede poner.
6 campo - Aviso: Número de días antes de la expiración de la contraseña en que se le avisará al
usuario al inicio de la sesión.
7 campo - Periodo de Gracia: Cuanto tiempo permito trabajar al usuario una vez caducada su
contraseña.
15
Jesús Fernández Toledo
www.losteatinos.es
8 campo - Validez: Fecha en la que caduca la cuenta, medida en días desde 01.01.1970. Si el
campo está en blanco la cuenta no expira nunca.
9 campo – Reservado: Un capo reservado para usos en el futuro
Solo son obligatorios el campo nombre y contraseña, siendo los demás opcionales.
Mediante el comando chage, podemos modificar las opciones: Edad min/max, Aviso, Periodo
de Gracia, Validez.
Sintaxis: chage –E aaaa-mm-dd nombre_usuario
Los algoritmos de encriptación más utilizados en Linux son:
DES (ya en desuso por su poca seguridad)
MD5: si empieza por $1$
SHA-256: si empieza por $5$.
PERTENECIENTES A
SHA-512: si empieza por $6$.
SHA-2
salt → caracteres que se añaden de forma aleatoria, de manera que dos contraseñas iguales
no den el mismo resultado, una vez encriptadas.
Comando para crear las contraseñas: mkpassw
mkpasswd es una herramienta que nos va a permitir generar hashes para nuestras
contraseñas. Se encuentra disponible en el paquete whois, así que, si no lo tenemos, lo
instalamos:
# apt-get install whois
Una función criptográfica hash -usualmente conocida como “hash”- es un algoritmo
matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de
caracteres con una longitud fija. Independientemente de la longitud de los datos de entrada, el
valor hash de salida tendrá siempre la misma longitud.
Para ver los métodos de cifrado que podemos utilizar, ejecutamos:
# mkpasswd -m help
Para crear una contraseña cifrada, por ejemplo con cifrado sha-512, ejecutamos en un
terminal:
# mkpasswd -m sha-512
El programa nos pedirá la contraseña. La introducimos y automáticamente nos devolverá un
hash con dicha contraseña cifrada. Lo copiamos y ya podemos utilizarlo donde sea necesario.
16
Jesús Fernández Toledo
www.losteatinos.es
Fichero/etc/login.defs
En el archivo de configuración /etc/login.defs están definidas las variables que controlan los
aspectos de la creación de usuarios y de los campos de shadow usadas por defecto. Algunos
de los aspectos que controlan estas variables son:






Número máximo de días que una contraseña es válida PASS_MAX_DAYS
El número mínimo de caracteres en la contraseña PASS_MIN_LEN
Valor mínimo para usuarios normales cuando se usa useradd UID_MIN
El valor umask por defecto UMASK
Si el comando useradd debe crear el directorio home por defecto CREATE_HOME
Algoritmo para la encriptación de la contraseña, “ENCRYPT METHOD SHA512”.( si vamos
a permitir o no la encriptación con el algoritmo MD5, “MD5_CRYT_ENAB no”).
Basta con leer este archivo para conocer el resto de las variables que son autodescriptivas y
ajustarlas al gusto. Recuérdese que se usaran principalmente al momento de crear o
modificar usuarios con los comandos useradd y usermod.
Fichero /etc/shells
El fichero de shells contiene una lista de shells válidos. Si la shell de usuario no está en este
fichero, o bien el usuario tiene la shell , /bin/false, no puede acceder al sistema mediante
login.
3.1.1. Comandos para la creación/modificación/eliminación de usuarios
Creación de usuarios
 adduser
Añade un nuevo usuario al sistema. Al ejecutarlo nos ira pidiendo una serie de datos para
completar la información de la cuenta, como, pide contraseña de usuario, comentarios o
nombre completo del usuario, teléfono móvil, teléfono fijo, y tras ello, al contrario de useradd,
el usuario ya estaría activo.
El
comportamiento
del
comando
adduser
se
configura
mediante
el
fichero
/etc/adduser.conf
Sintaxis:
adduser [opciones] usuario
adduser [opciones] usuario grupo
Opciones:
 --ingroup nomgrupo
Crea al usuario con nomgrupo como grupo principal.
 --gid num_gid
Igual que la anterior pero usando el GID del grupo en vez del nombre.
17
Jesús Fernández Toledo
www.losteatinos.es

--home directorio
Hace que el directorio sea el directorio personal del usuario, en vez del directorio por
defecto /home/nombre_usuario
Argumentos
 Usuario
Añade el usuario al sistema con el nombre que se le indique.
 Grupo
Añade el usuario, que debe existir previamente, al grupo, que también debe existir,
como grupo secundario.
# adduser juan profesores // añade juan al grupo profesores ya creado
previamente pero si luego queremos borrar grupo primario juan no se
podría. (En este habría que crear el usuario y el grupo previamente)
Mejor usar:
adduser
juan -ingroup profesores //así podemos borrar grupo
primario
Cambiar la máscara de creación de directorios home
Configurando un equipo que va a manejar múltiples usuarios, nos encontramos con la
necesidad cambiar el comportamiento por defecto (en Debian/ubuntu) para la forma en que
se crean los nuevos usuarios. Ubuntu crea los directorios de usuario en /home y con una
máscara 0755. Sin embargo, para nuestro caso utilizar la máscara 0700.
El archivo de configuración ubicado en /etc/adduser.conf permite modificar estas opciones.
Deberemos modificar el valor de la variable DIR_MODE=700, la cual permite a los nuevos
usuarios crearán su carpeta con dichos privilegios.
Además deseamos que no cree nuevos grupos cada vez que se crea un usuario, (el caso más
común) los usuarios pertenecerán al grupo con GID 100 (users). Primero hay que hacer la
variable "USERGROUPS=no", finalmente verificar que "USERS_GID=100" hace referencia al
grupo deseado.
 useradd
Añade un nuevo usuario al sistema, con el nombre de usuario que especifiquemos.
IMPORTANTE: NO CREA LA CARPETA DE USUARIO EN /home, por lo tanto usar para SAMBA
o para usos que no necesiten crear carpetas en directorio /home
Sintaxis:
useradd [opciones] [nombre de usuario]
Opciones:
18
Jesús Fernández Toledo
www.losteatinos.es
Si se deja en blando toma las opciones por defecto
-c
añade un comentario al momento de crear al usuario, campo 5
de /etc/passwd
-d
Especifica el directorio inicial del usuario. Suele ser
/home/nombre_usuario. Campo 6 de /etc/passwd
Especifica el shell del usuario. Si no se especifica será /bin/bash.
Especifica el grupo primario del usuario (GID). Campo 4 /etc/passwd
Especifica los grupos secundarios del usuario, separados por ,
Especifica que no se cree un directorio de inicio para el usuario
-s
-g
-G
-M
-m
Crea directorio de inicio /home/usuario y le pone todos los subdirectorios
y ficheros que haya en /etc/skel
Especifica la fecha de expiración de la cuenta. Formato AAAA-MM-DD,
-e
campo 8 de /etc/shadow
crea una cuenta del sistema o especial, su UID será menor al definido
en/etc/login.defs en la variable UID_MIN, además no se crea el directorio
de inicio.
-r
Especifica el identificador de usuario para el usuario. Si no se indica esta
-u
opción, automáticamente se establece el siguiente número disponible a
partir del último usuario creado.
En este caso es necesario introducir mediante las opciones toda la información necesaria para
su configuración. El usuario estará deshabilitado hasta que le demos una clave.
# useradd juan
Se creará el usuario y su grupo, así como las entradas correspondientes en /etc/passwd,
/etc/shadow y /etc/group. La cuenta por defecto se crea desactivada, hay que activarla con
passwd juan. No se creará el directorio de inicio o de trabajo: /home/juan y los archivos de
configuración que van dentro de este directorio.
Las fechas de expiración de contraseña, etc. Quedan lo más amplias posibles así que no hay
problema que la cuenta caduque, así que prácticamente lo único que faltaría sería añadir la
contraseña del usuario (por defecto añade ! en el fichero shadow) y algún comentario o
identificación de la cuenta. Las opcion con '-c' es posible establecer el comentario, campo 5 de
/etc/passwd
# useradd -c "Juan Perez Hernandez" juan
Siempre el nombre del usuario es el último parámetro del comando. Asi por ejemplo, si
queremos salirnos del default, podemos establecer algo como lo siguiente:
# useradd -d /usr/juan -s /bin/csh -u 800 -c "Juan Perez Hernandez" juan
Con lo anterior estamos cambiando su directorio de inicio, su shell por defautl sera csh y su
UID será el 800 en vez de que el sistema tome el siguiente número disponible.
19
Jesús Fernández Toledo
www.losteatinos.es
/etc/default/useradd
Contiene los valores por defecto a la hora de añadir un usuario al sistema con el comando
useradd.
Modificación de usuarios
 usermod
Como su nombre lo indica, usermod permite modificar o actualizar un usuario o cuenta ya
existente.
Sintaxis:
usermod [opciones] usuario
Sus opciones más comunes o importantes son las siguientes:
-c
c añade o modifica el comentario, campo 5 de /etc/passwd
-d
-d modifica el directorio de trabajo o home del usuario, campo 6
de /etc/passwd
-e
-e cambia o establece la fecha de expiración de la cuenta, formato AAAAMM-DD, campo 8 de /etc/shadow
-g
-g cambia el número de grupo principal del usuario (GID), campo 4
de /etc/passwd
-G establece otros grupos a los que puede pertenecer el usuario,
separados por comas.
-G
-l
cambia el login o nombre del usuario, campo 1 de /etc/passwd y
de /etc/shadow
-L
Bloquea la cuenta del usuario, no permitiéndole que ingrese al sistema.
No borra ni cambia nada del usuario, solo lo deshabilita.
-s
-u
cambia el shell por defecto del usuario cuando ingrese al sistema.
-u cambia el UID del usuario.
-U
-U desbloquea una cuenta previamente bloqueada con la opción -L.
Argumento:

Usuario
Elimina el grupo con el nombre que se le indique como argumento.
20
Jesús Fernández Toledo
www.losteatinos.es
Ejemplo: Si quisiéramos cambiar el nombre de usuario de 'sergio' a 'sego':
# usermod -l sego sergio
Casi seguro también cambiará el nombre del directorio de inicio o HOME en /home, pero si no
fuera así, entonces:
# usermod -d /home/sego sego
Otros cambios o modificaciones en la misma cuenta:
# usermod -c "supervisor de area" -s /bin/ksh -g 505 sego
Lo anterior modifica el comentario de la cuenta, su shell por defecto que ahora será Korn shell
y su grupo principal de usuario quedó establecido al GID 505 y todo esto se aplicó al usuario
'sego' que como se observa debe ser el último argumento del comando.
El usuario 'sego' salió de vacaciones y nos aseguramos de que nadie use su cuenta:
# usermod -L sego

passwd: se utiliza para poder cambiar las contraseñas de los usuarios.
Este comando es necesario cuando creamos usuarios con useradd. Crear al usuario
con useradd es el primer paso, el segundo es asignarle una contraseña a ese usuario. Esto se
logra con el comando passwd que permitirá ingresar la contraseña y su verificación:
# passwd sergio
Changing password for user prueba.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
#
El usuario root es el único que puede indicar el cambio o asignación de contraseñas de
cualquier usuario. Usuarios normales pueden cambiar su contraseña en cualquier momento
con tan solo invocar passwd sin argumentos, y podrá de esta manera cambiar la contraseña
cuantas veces lo requiera.
passwd tiene integrado validación de contraseñas comunes, cortas, de diccionario, etc. así que
si por ejemplo intento como usuario normal cambiar mi contraseña a 'qwerty' el sistema me
mostrará lo siguiente:
$ passwd
Changing password for user prueba.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
21
Jesús Fernández Toledo
www.losteatinos.es
Nótese que al ingresar 'qwerty' como contraseña se detectó que es una secuencia ya conocida
como contraseña y me manda la advertencia: "BAD PASSWORD: it is based on a dictionary
word", sin embargo me permite continuar, al ingresar la verificación. Es decir, passwd avisa de
malas o débiles contraseñas pero permite establecerlas si realmente se desea.
Resumiendo entonces, se podría decir que todo este tutorial se reduce a dos líneas de
comandos para crear y dejar listo para trabajar a un usuario en Linux:
#> useradd ana
#> passwd ana
Se crea el usuario 'ana', useradd hace todo el trabajo de establecer el shell, directorio de inicio,
copiar archivos iniciales de configuración de la cuenta, etc. y después passwd establece la
contraseña. Asi de simple.
passwd tiene varias opciones que permiten bloquear la cuenta '-l', desbloquearla '-u', y varias
opciones más que controlan la vigencia de la contraseña, es decir, es otro modo de establecer
los valores de la cuenta en /etc/shadow.
Eliminación de usuarios
 userdel
Como su nombre lo indica, userdel elimina una cuenta del sistema. Puede ser invocado de tres
maneras:
# userdel sergio
Sin opciones elimina la cuenta del usuario de /etc/passwd y de /etc/shadow, pero no elimina
su directorio de trabajo ni archivos contenidos en el mismo.
# userdel -r sergio
Al igual que lo anterior elimina la cuenta totalmente, pero con la opción -r además elimina su
directorio de trabajo y archivos y directorios contenidos en el mismo, así como su buzón de
correo, si es que estuvieran configuradas las opciones de correo. La cuenta no se podrá
eliminar si el usuario esta logueado o en el sistema al momento de ejecutar el comando.
# userdel -f sergio
La opción -f es igual que la opción -r, elimina todo lo del usuario, cuenta, directorios y archivos
del usuario, pero además lo hace sin importar si el usuario está actualmente en el sistema
trabajando. Es una opción muy radical, además de que podría causar inestabilidad en el
sistema, así que hay que usarla solo en casos muy extremos.
22
Jesús Fernández Toledo
www.losteatinos.es
 Deluser
Se utiliza el comando deluser seguido del nombre del usuario y del nombre del grupo del que
queremos quitarle, ejemplo:
# deluser juan profesores // quita a juan del grupo profesores
/etc/deluser.conf
Contiene los valores por defecto cuando se eliminan usuarios con el comando deluser.
3.2 Grupos. Ficheros /etc/group y /etc/gshadow
Para poder administrar los permisos de los usuarios de una forma más flexible, el sistema Linux
permite la organización de usuarios en grupos y establecer permisos a los grupos.
Ejemplo: si en un centro educativo el grupo "profesores" tiene acceso a ciertas carpetas,
cuando demos de alta un profesor nuevo, tan solo tendremos que añadirle al grupo
"profesores" para que pueda acceder a todas esas carpetas. Es lo que se denomina
administración de permisos por grupos.
Todos los usuarios pertenecen al menos a un grupo que es el grupo principal del usuario,
también llamado grupo primario del usuario, pero pueden pertenecer a más grupos. En caso
de que pertenezcan a más grupos, éstos serán grupos secundarios.
Los grupos pueden contener varios usuarios. Los grupos de usuarios solo pueden contener
usuarios, nunca podrán contener a otros grupos.
Cada fichero creado en una maquina Linux, se asigna automáticamente a un grupo y a un
usuario. Los administradores pueden asignar permisos de manera separada para usuarios y
para grupos de cada archivo. La posibilidad de asignar múltiples usuarios a cada grupo facilita a
23
Jesús Fernández Toledo
www.losteatinos.es
esto usuarios el acceso a un determinado archivo o directorio. Ej.- grupo cdrom para asignar
permisos sobre la unidad.
Los usuarios puede pertenecer a todos los grupos que queramos, pero siempre tendrán un
grupo primario.
El grupo primario se ve en /etc/passwd y la pertenencia a cualquier otro grupo en /etc/group
Fichero /etc/group
Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema.
Cada usuario del sistema debe pertenecer obligatoriamente a un grupo principal o primario. El
grupo principal o primario de cada usuario es el grupo cuyo GID viene en el fichero
/etc/passwd.
Además un usuario puede pertenecer a otros grupos, llamados grupos secundarios, no es
obligatorio aunque puede convenir para ciertos casos.
root:x:0:root
ana:x:1001:
sergio:x:1002:ventas,supervisores,produccion
cristina:x:1003:ventas,sergio
Cada una de las líneas representa un grupo y responde al esquema:




Campo 1 - grupo: es el nombre del grupo
Campo 2 - contraseña: si aparece una x; la contraseña se encuentra cifrada en
/etc/gshadow. Si este campo aparece vacío, significa que el grupo no necesita
contraseña.
Campo 3 - GID: nº de Identidad de Grupo (el cero se reserva para el grupo root)
Campo 4 - lista_usuarios: Es opcional. Lista separada por comas de usuarios que
tienen a ese grupo como grupo secundario. Para saber si algún usuario tiene el grupo
como primario deberíamos mirarlo en el fichero passwd. Actualmente al crear al
usuario con useradd se crea también automáticamente su grupo principal de trabajo
GID, con el mismo nombre del usuario. Es decir, si se añade el usuario 'sergio'
también se crea el /etc/group el grupo 'sergio'.
Para añadir un nuevo usuario a un grupo, basta con agregarlo en la lista de usuarios (sin
olvidar poner la coma de separación entre usuarios)
Fichero /etc/gshadow
Fichero donde se guardan las contraseñas de los grupos del sistema. Aunque las contraseñas
no se utilicen para los grupos, es necesario el fichero para proteger al grupo. Al igual que
shadow, solo root tiene permiso de lectura sobre el fichero.
Cada línea del fichero tiene la siguiente estructura:
24
Jesús Fernández Toledo
www.losteatinos.es
nombre:contraseña


Nombre: nombre del grupo.
Contraseña: puede ser una contraseña encriptada o bien caracteres “*” o”!”,
dependiendo de si queremos usar las contraseñas de grupo o no.
3.2.1. Comandos para la creación/modificación/eliminación de grupos

addgroup / groupadd: utilizado para crear grupos.

groupmod: utilizado para modificar un grupo.
El comando groupmod permite modificar el nombre de un grupo o el gid del mismo. La sintaxis
es:
# groupmod [-g nuevo-gid] [-n nuevo-nombre] nombre-grupo
// Cambiar el gid del grupo profesores
# groupmod -g 2000 profesores

groupdel: Utilizado para eliminar grupos.
3.3 Directorio /etc/skel
Cuando se crea una cuenta, a los usuarios se les asignan una serie de valores por defecto, por
ejemplo para la configuración de la Shell. Esta información se encuentra en /etc/skel. En el
caso de que añadamos un usuario de forma manual, deberemos copiar el contenido de
/etc/skel en el directorio home del nuevo usuario y le asignaremos los permisos
correspondientes.
Para ampliar ver archivo “El directorio skel.odt”
25
Jesús Fernández Toledo
www.losteatinos.es
4. INFORMACIÓN DEL SISTEMA
4.1. Directorio (/proc)
El kernel durante su arranque pone en funcionamiento un pseudofilesystem llamado
/proc, donde vuelca la información que recopila de la máquina, así como muchos de sus
datos internos. El directorio /proc está implementado sobre memoria y no se guarda en
disco. Los datos contenidos son tanto de naturaleza estática como dinámica (varían
durante la ejecución).
El directorio /proc es un caso extraño. Realmente no existe, sin embargo puedes
explorarlo. Sus archivos de tamaño 0 no son ni binarios ni textos, sin embargo puedes
examinarlos y desplegar su contenido.
Este directorio especial contiene todos los detalles de tu sistema Linux, incluyendo el
kernel, procesos y parámetros de configuración.
Bajo Linux, todo es administrado como un archivo; incluso los dispositivos son accedidos
como archivos (en el directorio /dev). El directorio /proc contiene una extraño tipo de
archivo: archivos virtuales. Estos archivos son listados, pero realmente no existen en disco;
el sistema operativo los crea al vuelo si tratas de leerlos.
El directorio /proc en sí mismo es creado cada vez que arrancas tu equipo. Se requiere ser
root para poder examinar completamente el directorio en su totalidad; algunos de los
archivos (tales como los relacionados a procesos) son propiedad del usuario que los
ejecutó. Y aunque casi todos los archivos son de solo lectura, hay algunos pocos con
permisos de escritura (notablemente en /proc/sys) que permiten realizar cambios en los
parámetros del kernel.
Una de las características interesantes es que en el directorio /proc podremos encontrar
las imágenes de los procesos en ejecución, junto con la información que el kernel maneja
acerca de ellos. Cada proceso del sistema se puede encontrar en el directorio /proc/pidproceso, donde hay un directorio con ficheros que representan su estado. Esta
información es útil para programas de depuración, o bien para los propios comandos del
sistema como ps o top, que pueden utilizarla para ver el estado de los procesos.
Organización del directorio /proc
El directorio /proc está organizado en directorios virtuales y subdirectorios, que agrupan
archivos de tópicos similares. Trabajando como root el comando ls /proc te despliega algo
como lo siguiente:
#> ls
1
129
1290
133
1420
165
166
2
2267
26
/proc
2432
2474
248
2486
2489
276
280
2812
3
3340
3358
3413
3435
3439
3450
36
3602
3603
3715
3716
3717
3718
3728
3731
3733
3734
3735
3762
3764
3812
3813
3814
39
3973
4
40
Jesús Fernández Toledo
5441
5445
5459
5479
557
5842
5854
6
6381
815
acpi
asound
bus
dri
driver
fs
ide
irq
devices
diskstats
dma
execdomains
fb
filesystems
interrupts
iomem
ioports
modules
mounts
mtrr
partitions
self
slabinfo
splash
stat
swaps
www.losteatinos.es
2268
2282
2285
2295
2335
2400
2401
2427
2428
326
327
3284
329
3295
330
3318
3329
3336
3614
3696
3697
3700
3701
3706
3709
3710
3714
3737
3739
3742
3744
3745
3747
3749
3751
3753
4083
4868
4873
4878
5
5109
5112
541
5440
6558
6561
6961
7206
7207
7222
7225
7244
752
net
scsi
sys
sysvipc
tty
buddyinfo
cmdline
config.gz
cpuinfo
kallsyms
kcore
keys
key-users
kmsg
loadavg
locks
meminfo
misc
sysrq-trigger
timer_list
timer_stats
uptime
version
vmcore
vmstat
zoneinfo
Los directorios con números corresponden a cada proceso en ejecución. Algunos archivos
virtuales nos dan información sobre el hardware, tal como /proc/cpuinfo y
/proc/interrupts. Otros proporcionan información relacionada a los archivos, tales como
/proc/filesystems o /proc/partitions. Los archivos situados bajo /proc/sys son
relacionados a la configuración de parámetros del kernel.
Al ejecutar cat /proc/meminfo se nos mostrara en pantalla algo así:
# cat /proc/meminfo
MemTotal:
483488
MemFree:
9348
Buffers:
6796
Cached:
168292
......
kB
kB
kB
kB
Ejecuta el comando free. ¿Qué información te da?
Algunos otros archivos interesantes son:
/proc/apm: Provee información sobre "Advanced Power Management", si es que está
instalado. Es un API desarrollado por Intel y Microsoft que permita que la BIOS administre
la energía, tal como reducir la velocidad de la CPU, apagar el HD o apagar
el monitor después de un período de inactividad para conservar corriente eléctrica,
especialmente para las computadoras portátiles.
/proc/acpi: Un directorio similar al anterior que ofrece bastantes datos sobre el más
moderno ACPI (Advanced Configuration and Power Interface). ACPI es el sucesor de APM.
Por ejemplo, para ver si tu portátil está conectada a la corriente, puedes usar:
cat /proc/acpi/ac_adapter/AC/state
o en algunas distros
cat /proc/acpi/ac_adapter/ACAD/state,
Obtendrás "on line" o "off line".
/proc/cmdline: Muestra los parámetros que fueron pasados al kernel al momento del
arranque (boot time).
27
Jesús Fernández Toledo
www.losteatinos.es
root=/dev/disk/by-id/scsi-SATA_FUJITSU_MHS2040_NLA5T3314DW3-part3 vga=0x317
resume=/dev/sda2 splash=silent PROFILE=QuintaWiFi
/proc/cpuinfo: Muestra datos sobre el procesador de tu equipo. Por ejemplo
cat /proc/cpuinfo puede producir el siguiente listado:
processor
vendor_id
cpu family
model
model name
stepping
cpu MHz
cache size
:
:
:
:
:
:
:
:
0
AuthenticAMD
6
8
Mobile AMD Athlon(tm) XP 2200+
1
927.549
256 KB
/proc/loadavg: Un archivo relacionado al anterior que muestra la carga promedio del
procesador; su información incluye el uso de CPU en el último minuto, últimos cinco
minutos y últimos 15 minutos, así como el número de procesos actuales ejecutándose.
/proc/stat: También proporciona estadísticas, pero tomando en cuenta el último
(arranque).
/proc/uptime: Un archivo pequeño que solo tiene dos números: por cuantos segundos tu
sistema ha estado encendido, y cuantos segundos ha estado inactivo.
/proc/devices: Despliega todos los dispositivos actuales configurados y cargados de
caracter y bloque.
/proc/ioports: Te muestra información sobre las regiones usadas para comunicaciones de
E/S (I/O) de esos dispositivos.
/proc/dma: Muestra los canales "Direct Memory Access" en uso.
/proc/filesystems: Muestra cuáles tipos de sistemas de archivos (filesystems) están
soportados por tu kernel. Una posible salida seria:
nodev
nodev
nodev
nodev
nodev
nodev
nodev
nodev
nodev
nodev
sysfs
rootfs
bdev
proc
cpuset
ramfs
hugetlbfs
mqueue
ext3
ext4
usbfs
ext2
autofs
/proc/mounts: Muestra todos los "mounts" usados por tu máquina (la salida es muy
similar a /etc/mtab).
28
Jesús Fernández Toledo
www.losteatinos.es
/proc/partititons: muestra todas las particiones.
/proc/swaps: muestra el espacio swap.
/proc/net: Muestra toda la información de red. Describir cada archivo en este directorio
requeriría demasiado espacio, pero incluye dev (todos los dispositivos de red), varios
archivos relacionados al firewall iptables, estadísticas de red y sockets, información sobre
wireless y más….
Archivos relacionados con la RAM.
/proc/meminfo, datos del uso de la memoria.
/proc/iomem, que muestra cuanta memoria RAM ha sido utilizada por tu sistema.
/proc/kcore, que representa la memoria física de tu RAM. Muestra un tamaño que es
igual a la memoria RAM más una pequeña sobrecarga (ojo es binario).
Archivos relacionados con el Hardware.
Estos incluyen información muy específica que normalmente no es necesaria.
/proc/interrupts y /proc/irq, mapa de interrupciones hardware (IRQ) utilizadas.
/proc/pci, dispositivos PCI del sistema.
/proc/bus, directorio con información de los buses PCI y USB.
/proc/cpuinfo, información de la CPU.
/proc/ide, directorio de información del bus IDE, características de discos.
4.2 Comandos útiles para obtener información del sistema
Además de utilizar el directorio /proc, Linux provee múltiple comandos para conocer
información sobre el sistema. A continuación se muestra un listado con los más importantes:
uname: Imprime información del sistema
(Procesador instalado en el equipo)
#> uname -p
Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz
(versión del kernel)
#> uname -r
2.6.22.9-laptop-1mdv
29
Jesús Fernández Toledo
www.losteatinos.es
( toda la información de uname a través de la opción -a)
#> uname –a
Linux segolap 2.6.22.9-laptop-1mdv #1 SMP Thu Sep 27 04:17:10 CEST 2007 i686
Intel(R) Core
fdisk: permite manipular/crear particiones en Linux, pero tiene una interesante opción de
consulta, -l. esta opción me da información sobre los discos montados y sus particiones. Esta
opción solo puede ser utilizada por el root.
#> fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0002ecbc
Device Boot
/dev/sda1 *
Start
End
Blocks Id System
1
63
506016 83 Linux
/dev/sda2
64
10261 81915435 83 Linux
/dev/sda3
10262
18929 69625710 83 Linux
/dev/sda4
18930
19457
4241160 5 Extended
/dev/sda5
18930
19457
4241128+ 82 Linux swap / Solaris
Disk /dev/sdb: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000063b0
Device Boot
/dev/sdb1
Start
1
End
Blocks Id System
4863 39062016 c WXP FAT32 (LBA)
Podemos observar en este listado varios aspectos muy útiles, primero que tenemos dos
dispositivos conectados al sistema, /dev/sda y /dev/sdb, los dos son discos duros, el primero es
el propio del equipo y tiene varias particiones, incluso determinamos cual es la partición de
arranque que es /dev/sda1. El segundo dispositivo contiene una partición Windows como
podemos ver en la columna 'System' del último renglón 'WXP FAT32', que indiscutiblemente es
de Windows, no es una memoria flash por el tamaño (Disk /dev/sdb: 40.0 GB) mostrado. Así
que se trata de un disco duro externo.
30
Jesús Fernández Toledo
www.losteatinos.es
free: Se utiliza para ver el estado de la memoria ram y swap de nuestro sistema.
(la opción -m muestra el listado en megas)
#> free -m
total
used
Mem:
free
2018
-/+ buffers/cache:
Swap:
4141
shared buffers
989
1028
500
0
cached
0
39
450
1517
4141
La línea 'Mem:' es la memoría fisica RAM, que en este ejemplo tiene 2 GB de los cuáles
se están usando 989 megas, bastante razonable todavía, la línea 'Swap:' muestra la
partición de swap (lo que en Windows se le conoce como archivo de intercambio), que
generalmente se establece al doble de la RAM y que idealmente no debe estar usada,
como el ejemplo lo muestra. Cuando tu línea Swap muestra demasiado uso y casi nada
libre, tienes serios problemas de rendimiento, considera entonces en incrementar tu
RAM. Prueba con free -mt para ver una línea más al final con la suma de las dos Mem +
Swap.
mount: Comando que se utiliza para montar dispositivos, algo complejo y con múltiples
opciones. Si lo ejecutamos sin ninguna opción nos indica que tienes montado y en qué lugar
está montado.
#> mount
/dev/sda1 on /boot type ext3 (rw,noatime)
/dev/sda2 on / type ext3 (rw,noatime)
/dev/sda3 on /home type ext3 (rw,noatime)
none on /proc type proc (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1
on
/media/hd
(rw,nosuid,nodev,sync,users,umask=0022,iocharset=utf8)
type
vfat
Un pequeño análisis me permite determinar que en el equipo hay tres particiones sobre el
mismo disco duro (dispositivo /dev/sda), que son /boot (sda1), / (sda2), y /home (sda3), todas
son del tipo. Hay dos sistemas virtuales montados en /proc y otro dispositivo (/dev/sdb1)
accesible a través del directorio /media/hd y que es del tipo DOS FAT. Esta información se
complementa a la aportada por fdisk -l.
lspci: Lista los dispositivos PCI del sistema.
31
Jesús Fernández Toledo
www.losteatinos.es
#> lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and
945GT Express Memory Controller Hub (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML
Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio
Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller
#2 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller
(rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI
Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
04:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit
Ethernet PCI Express (rev 02)
05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network
Connection (rev 02)
06:00.0 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader
Controller
06:00.1 Generic system peripheral [0805]: ENE Technology Inc ENE PCI SmartMedia /
xD Card Reader Controller
06:00.3 FLASH memory: ENE Technology Inc ENE PCI Secure Digital / MMC Card
Reader Controller
Tomemos una línea de ejemplo:
05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network
Connection (rev 02)
32
Jesús Fernández Toledo
www.losteatinos.es
El primer campo (05:00.0) es el slot PCI donde se ubica el dispositivo bus 05 dispositivo
00 función 0, después sigue la clase de dispositivo (Network controller), el fabricante
(Intel Corporation), el nombre del dispositivo (PRO/Wireless 3945ABG Network
Connection) y el número de revisión del mismo (rev 02).
Esta información es útil por ejemplo para conocer cual es nuestra tarjeta Wireless y
descargar los drivers adecuados
Podemos obtener aun más información de cada dispositivo PCI con la opción -v y aun
más con -vv, asi que trata con lspci -vv y observa cuanto puedes lograr saber de cada
dispositivo.
lsusb: Lista los dispositivos usb del sistema.
#> lsusb
Bus 005 Device 004: ID 05e3:0702 Genesys Logic, Inc. USB 2.0 IDE Adapter
Bus 005 Device 003: ID 064e:a101 Suyin Corp.
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 004: ID 062a:0003 Creative Labs
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
A simple vista no nos ofrece información muy interesante. Pero si usamos la opción -v,
nos devuelve más información
Por ejemplo supongamos que la cámara web de mi portátil no funciona, para buscar
los drivers o configuración adecuada podemos utilizar la opción -v
#> lsusb -v
...
Bus 005 Device 003: ID 064e:a101 Suyin Corp.
Device Descriptor:
bLength
bDescriptorType
33
18
1
Jesús Fernández Toledo
www.losteatinos.es
bcdUSB
2.00
bDeviceClass
239 Miscellaneous Device
bDeviceSubClass
2 Common Class
bDeviceProtocol
1 Interface Association
bMaxPacketSize0
64
idVendor
0x064e Suyin Corp.
idProduct
0xa101
bcdDevice
1.00
iManufacturer
iProduct
iSerial
2 SuYin
1 Acer CrystalEye webcam
3 CN0314-OV03-VA-R02.00.00
...
El listado es bastante largo, asi que lo muestro con lo relevante solamente, en el 'Bus
005 Device 003:' se encuentra algo llamado 'Suyin Corp', y viendo más detalle con -v
encuentro que es 'Acer CrystalEye webcam', asi que con esto se facilita la búsqueda en
Internet para conseguir los drivers.
blkid. Muestra los atributos del dispositivo de bloque.
#> blkid
/dev/sda1:
TYPE="ext3"
UUID="d22801c6-85ca-11dc-849e-afde43df714c"
SEC_TYPE="ext2"
/dev/sda2:
TYPE="ext3"
UUID="ae22f1dc-85ca-11dc-acbd-cb4aee4dedb7"
SEC_TYPE="ext2"
/dev/sda3:
UUID="d3990398-85ca-11dc-aab5-4d80db2607e2"
TYPE="ext3"
SEC_TYPE="ext2"
/dev/sda5: TYPE="swap" UUID="f6bfa9b2-85ca-11dc-abd6-01935478454b"
/dev/sdb1: LABEL="SEGO" UUID="46CD-5C01" TYPE="vfat"
dmidecode y lshw: Este comando lee la información directamente de la BIOS y nos muestra un
listado muy completo sobre el hardware encontrado. Por defecto muestra “demasiada
informaión” si deseamos una versión mas reducida utilizaremos –q. Si no tenemos instalado
dmicode podemos utilizar lshw, que básicamente nos muestra los mismos resultados.
34
Jesús Fernández Toledo
www.losteatinos.es
df: Nos muestra el uso del espacio en los discos duros.
# df
Filesystem
Size Used Avail Use% Mounted on
/dev/sda2
77G 16G 58G 22% /
/dev/sda1
479M 21M 433M 5% /boot
/dev/sda3
66G 36G 30G 55% /home
/dev/sdb1
38G 24G 14G 64% /media/hd
df tiene la opción -h para ver el mismo listado mostrado en Megas o Gigas.
uptime: Muestra cuanto tiempo lleva encendido el sistema.
#> uptime
19:59:45 up 2:18, 2 users, load average: 1.14, 1.13, 1.09
Primero la hora actual, seguido de 'up 2:18', lo segundo indica el tiempo total que lleva
encendido (este campo puede cambiar a días, etc.), dos usuarios en el sistema y por
último la carga promedio del CPU (load average), en el último minuto, 5 y 15
respectivamente. Mientras más bajo este número es mejor
w: Muestra que usuarios están en el sistema y lo que están haciendo.
#w
20:07:12 up 2:25, 2 users, load average: 1.18, 1.12, 1.09
USER
root
TTY
tty1
sergio :0
LOGIN@ IDLE JCPU PCPU WHAT
19:09 7:34 0.16s 0.16s -bash
17:43 ?xdm? 2:22m 0.06s /bin/sh /usr/bin/quanta
La primera línea de w es lo mismo que nos muestra uptime, a continuación nos dice
quienes son los dos usuarios en el sistema, en que terminal están 'TTY', si fuera desde
otro equipo mostraría la IP, la hora en que se loguearon 'LOGIN@', y la última columna
muestra lo que están ejecutando.
Como complemento de uptime y w podemos usar lo siguiente:
#> who -b
system boot 2008-01-13 17:41
Indica la fecha y hora en que el sistema inició.
35
Jesús Fernández Toledo
www.losteatinos.es
last y lastb:
last muestra un listado de los últimos usuarios logueados al sistema e información
relevante,
lastb (last bad), muestra los últimos intentos de logueo al sistema que fracasaron,
utilísimo para determinar posibles intentos de acceso ilegítimo al sistema (hackeo).
#> last
root
tty1
Sun Jan 13 19:59 still logged in
sergon :0
Sun Jan 13 17:43 still logged in
reboot system boot 2.6.22.9-laptop- Sun Jan 13 17:41
root
tty1
Sun Jan 13 00:23 - crash (17:18)
sergon :0
Sat Jan 12 23:56 - 00:48 (00:52)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 23:55
sergon :0
(04:26)
Fri Jan 11 22:11 - crash (10:03)
reboot system boot 2.6.22.9-laptop- Fri Jan 11 21:49
sergon :0
(01:17)
Sat Jan 12 08:15 - 12:41 (04:25)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 08:15
sergon :0
(00:59)
Sat Jan 12 17:41 - down (01:16)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 17:40
sergon :0
(22:05)
Sat Jan 12 19:35 - down (00:57)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 19:34
sergon :0
(04:19)
(14:51)
Thu Jan 10 22:12 - 22:36 (00:23)
reboot system boot 2.6.22.9-laptop- Thu Jan 10 22:11
(00:24)
Podemos ver que usuario se logueó, en que terminal, día, fecha y hora, a qué hora
terminó o si continua logueado (still logged in). Es posible también conocer por ejemplo
en las líneas que dice 'crash' que el sistema no se apagó adecuadamente.
#> lastb
# lastb
pedro 192.168.0.10
36
Jesús Fernández Toledo
Sun Jan 13 22:04 - 22:04 (00:00)
www.losteatinos.es
root
tty2
Sun Jan 13 21:20 - 21:20 (00:00)
Con lastb obtenemos los intentos de logueo que fracasaron. Por ejemplo, en un sistema
real en producción donde no existiera el usuario 'pedro' resultaría obvio que alguien
está tratando de obtener acceso remoto, adivinando usuario:contraseña. Deberías
preocuparte enormemente y tomar acción, si en el listado de last observas un logueo
de root u otro usuario que tú como administrador sepas no debió entrar al sistema en
esas fechas u horas, o peor aun que se trata de tu ¡¡usuario!! y no habías ingresado
previamente. Con seguridad significa que ya te hackearon tu sistema o consiguieron tu
contraseña.
37
Jesús Fernández Toledo
www.losteatinos.es
1. ANEXO I
Comodines
(~) Sustituye el directorio home de manera que:
~/comandos.txt equivale a /home/paco/comandos.txt (si estamos en nuestro propio directorio)
~pepe/comandos.txt equivale a /home/pepe/comandos.txt (pepe es otro usuario)
(?) Sustituye un solo carácter. Ejemplos:
ls p?pe
mostraría todos los ficheros cuyos 1º 3º y 4º caracteres fuesen p,p y e
ls ?epe
mostraría todos los ficheros de 4 caracteres y acabados en epe
(*) Sustituye cualquier sucesión de caracteres. Ejemplos:
ls .ba*
muestra todos los directorios o ficheros que comiencen con .ba
ls .*
muestra todos los archivos ocultos.
rm -r *
otra manera de desinstalar el sistema operativo.
rm *.jpg
borra todas las imágenes jpg
oggdec *.ogg
pasa de ogg a wav todos los ogg del directorio en el que estamos.
(;) Puesto entre dos comandos hace que tras el primero se ejecute el segundo. Ejemplos:
nano nuevo.txt ; cat nuevo.txt
nos abrirá el editor nano para que escribamos lo que queramos en un nuevo archivo que se
llamará nuevo.txt y tras guardar y salir del editor,cat nos mostrará el contenido de lo que
acabamos de crear.
sleep 5m ; xmms canción.mp3
tras 5 minutos se iniciará el xmms
38
Jesús Fernández Toledo
www.losteatinos.es
Descargar