You are on page 1of 68

Administración de usuarios Linux por

consola y grafico

AÑADIR USUARIOS EN LINUX-MINT


Existen distintos tipos de usuarios en UBUNTU , los cuáles son:
• Superusuario o administrador: Tiene privilegios sobre todo el sistema, acceso total a todos los
archivos y directorios, controla la administración de cuentas de usuarios, puede instalar programas
y dar mantenimiento al sistema, puede modificar la configuración del kernel, controladores, y otros
recursos del sistema. Su número identificador de usuario es 0.
• Usuarios normales: Tienen funcionalidad limitada, tiene acceso limitado a los directorios,
únicamente pueden acceder a home con todos los privilegios. No puede instalar programas, ni
modificar configuraciones de recursos, tampoco puede administrar usuarios. Su número
identificador de usuario generalmente va del 500 en adelante.
• Usuarios especiales: Son usuarios que no pueden iniciar sesión, pertenecen al sistema y tienen
acceso a servicios específicos, con lo cual asumen distintos privilegios del superusuario
(únicamente los especificados, por ejemplo, servicios de correo electrónico tiene los privilegios del
superusuario para la manipulación del correo electrónico). Se generan automáticamente al
momento de instalar UBUNTU. Su número identificador de usuario es, generalmente del 1 al 100.

Para gestionar los usuario debes usar el comando sudo. Estos son los comandos:

1. Añadir usuarios y grupos

Para añadir un usuario:

sudo adduser nombreusuario


El sistema pedirá alguna información adicional sobre el usuario y un password o clave. Por defecto,
se crea un grupo con el nombre del usuario y éste será el grupo por defecto. Este comportamiento
se configura en /etc/adduser.conf.

Para añadir un usuario al sistema estableciendo users como su grupo principal:

sudo adduser –ingroup users nombreusuario

Para ver las opciones de añadir usuarios utiliza el comando man.

sudo man adduser

Para añadir nuevos grupos, cuando el número de usuarios es numeroso y heterogéneo y así
simplificamos el tema. Esto se hace con el comando addgroup. Por ejemplo:.

sudo addgroup nombregrupo

Para añadir un nuevo usuario a un grupo existente puedes hacer lo siguiente:

sudo adduser nombreusuario nombregrupo

Para añadir un usuario existente a un grupo existente puedes usar el mismo comando:

sudo adduser nombreusuario nombregrupo

2. Eliminar usuarios y grupos

Para eliminar usuarios y grupos se emplean userdel y groupdel respectivamente. Por ejemplo: Para
eliminar el usuario juan:

sudo userdel juan

Si además se indica la opción -r, también se borrará el directorio personal del usuario con todo su
contenido:

sudo userdel -r juan

Para eliminar el grupo profesores:

sudo groupdel profesores

3. Modificar usuarios y grupos

Para modificar las características de los usuarios y grupos se emplean los


comandos usermod y sudo groupmod. Algunos ejemplos:

Para cambiar el directorio de inicio del usuario juan para que sea /home/profesores/juan. La
opción -m hace que mueva el contenido del antiguo directorio al nuevo emplazamiento.

sudo usermod -d /home/profes/juan -m


Para cambiar el grupo inicial del usuario juan para que sea profesores.

sudo usermod -g profesores juan

Para cambiar el nombre del usuario juan. El nuevo nombre es jorge.

sudo usermod -l jorge juan

Para cambiar el nombre del grupo profesores a alumnos.

sudo groupmod -n alumnos profesores

4. Ficheros relacionados con la gestión de usuarios y grupos

Algunos ficheros relacionados con las cuentas de usuario son:

 /etc/passwd: contiene información sobre cada usuario: ID, grupo principal, descripción,
directorio de inicio, shell, etc. También contiene el password encriptado, salvo que se usen
shadow passwords.
 /etc/shadow: contiene los passwords encriptados de los usuarios cuando se emplean
shadow passwords.
 /etc/group: contiene los miembros de cada grupo, excepto para el grupo principal, que
aparece en /etc/passwd.
 /etc/skel: directorio que contiene el contenido del directorio de los nuevos usuarios.

5. Algunos grupos especiales

En el sistema existen algunos grupos especiales que sirven para controlar el acceso de los
usuarios a distintos dispositivos. El control se consigue mediante los permisos adecuados a
ficheros de dispositivo situados en /dev. Algunos de estos grupos son:

 cdrom: dispositivos de CD–ROM. El dispositivo concreto afectado depende de donde estén


conectadas las unidades de CD–ROM. Por ejemplo, /dev/hdc.
 floppy: unidades de diskette, por ejemplo, /dev/fd0
 dialout: puertos serie. Afecta, por ejemplo, a los modems externos conectados al sistema.
Por ejemplo, /dev/ttyS1
 audio: controla el acceso a dispositivos relacionados con la tarjeta de sonido. Por ejemplo,
/dev/dsp, /dev/mixer y /dev/sndstat.

Para dar acceso a un usuario a uno de estos servicios, basta con añadirlo al grupo adecuado. Por
ejemplo, para dar acceso al usuario juan a la disquetera haríamos:

sudo adduser juan floppy

Alternativamente, para sistemas pequeños suele ser mejor”desproteger” los dispositivos


adecuados para que todos los usuarios puedan usarlos, evitando tener que recordar añadir
usuarios a los grupos adecuados. Por ejemplo, para dar acceso de lectura al CD–ROM
(suponiendo que esté en /dev/hdc) y de lectura/escritura a la disketera a todos los usuarios,
haríamos:

sudo chmod a+r /dev/hdc


sudo chmod a+rw /dev/fd0*
6. Límites a los usuarios

En los sitemas UNIX/LINUX existe la posibilidad de limitar recursos a los usuarios o grupos, por
ejemplo, el máximo numero de logins que puede realizar simultáneamente un usuario, el máximo
tiempo de CPU, el máximo numero de procesos etc. Estos límites se controlan en LINUX a través
del fichero /etc/security/limits.conf. También es posible limitar los tiempos de acceso a los usuarios.
Una de las formas de hacerlo es con el servicio timeoutd. Este servicio se instala a través de la
distribución y, una vez instalado aparece un fichero de configuración /etc/timeouts. En este fichero
de configuración las lineas en blanco o que comienzan por # no son interpretadas. El resto de las
líneas debe tener alguna de las dos siguientes sintaxis:

TIMES:TTYS:USERS:GROUPS:MAXIDLE:MAXSESS:MAXDAY:WARN

o bien

TIMES:TTYS:USERS:GROUPS:LOGINSTATUS

Ejemplos de límites horarios:

El ususario curso no puede hacer login durante el fin de semana:

SaSu:*:curso:*:NOLOGIN

Sólo el ususario root puede acceder desde las consolas tty1 a tty6:

Al:tty1,tty2,tty3,tty4,tty5,tty6:root:*:LOGIN
Al:tty1,tty2,tty3,tty4,tty5,tty6:*:*:NOLOGIN

Sólo el usuario root puede acceder entre las 15:00 y las 16:00h de cada dia:

Al1500-1600:*:root:*:LOGIN
Al1500-1600:*:*:*:NOLOGIN

Una vez que se ha preparado el fichero /etc/timeouts es necesario reiniciar el servidor timeoutd:

/etc/init.d/timeoutd restart
Stopped /usr/sbin/timeoutd (pid 2412).
Starting /usr/sbin/timeoutd…

Es importante destacar que este proceso no actúa durante el proceso de login lo que da lugar a
que, aunque un usuario tenga prohibido el acceso a una máquina en un momento determinado,
inicialmente puede entrar y sólo, una vez que se ejecute el proceso timeoutd, será expulsado del
sistema. Para conseguir que durante el proceso de login se revisen las condiciones de timeouts se
debe incluir las siguientes lineas en el fichero /etc/profile:

Comprueba restricciones de timeoutd (ver timeoutd, timeouts(5))

/usr/sbin/timeoutd ‘whoami‘ ‘basename \‘tty\‘‘ || exit

Con esta línea incluso aunque el servicio timeoutd este parado si en el fichero /etc/timeouts se
prohibe el acceso a un usuario éste no podrá entrar en el sistema.
7. Límites de cuotas

El sistema de cuotas provee un mecanismo de control y uso del espacio de disco duro disponible
en un sistema. Se pueden establecer limites en la cantidad de espacio y el número de ficheros de
que puede disponer un usuario o grupo. En las cuotas hay cuatro números para cada límite: la
cantidad actual ocupada; el límite soft (quota propiamente dicha); el límite hard (espacio sobre
cuota), y el tiempo que resta antes de eliminar el exceso entre soft y hard. Mientras que el límite
soft puede ser superado temporalmente, el límite hard nunca puede rebasarse.

Administrando el sistema de cuotas:

Para implementar el sistema de cuotas es necesario instalar algún paquete de control de dicho
sistema. En Ubuntu hay un paquete denominado cuota que instala todo lo necesario para
implementar todo el sistema. Una vez instalado tenemos que realizar una serie de pasos para
activar el mecanismo de cuotas. Estos pasos son:

7.1. Configuración del kernel

Antes de instalar el sistema de cuotas debe disponerse de un kernel con la opción de quota–
system habilitada. Esto se consigue en el proceso de compilación de un nuevo kernel
respondiendo yes a la pregunta de Disk QUOTA support Los kernels precompilados que se
distribuyen con Debian (paquetes kernel-image.ya tienen esta opción habilitada.

7.2. Elección del sistema de ficheros sobre el que se aplican las cuotas

Una vez dispuesto el kernel, hay que seleccionar que sistema de ficheros necesitan tener
aplicadas las cuotas. Lo normal es que solo el sistema donde están las cuentas de usuarios tengan
cuotas, aunque es recomendable que tenga cuotas todo sistema de ficheros donde los usuarios
puedan escribir. Para habilitar las cuotas en un sistema de ficheros hay que editar el
fichero /etc/fstab e incluir las opciones usrquota y grpquota:

# /etc/fstab: static file system information.


# file system mount point type options dump pas
/dev/hda5 / ext2 defaults,errors=remount-ro,usrquota,grpquota 0

7.3. Habilitar las cuotas

Para instalar los ficheros de cuotas se debe ejecutar el comando:

quotacheck -avug
Scanning /dev/hda5 [/] done
Checked 4943 directories and 57624 files
Using quotafile /quota.user
Updating in-core user quotas
Using quotafile /quota.group
Updating in-core group quotas

La primera vez que se ejecuta este comando sirve para crear los ficheros de
quotas: quota.user y quota.group

7.4. Especificar cuotas para usuarios o grupos


Para editar la cuota de un usuario o grupo se usa el programa edquota con la opción -u para editar
las cuotas de usuarios y con la opcion -g para editar las opciones de grupo. Sólo hay que editar los
números que están detrás de soft y hard. El período de gracia que hay entre el límite soft y el hard
puede cambiarse con:

edquota -t

La mayoría de las veces los usuarios tienen la misma cuota. Una forma rápida de editar la cuota de
todos los usuarios es colocarse en el directorio donde tienen sus directorios raíz cada usuario.
Editar la cuota de uno de estos usuarios con los valores apropiados y, posteriormente, ejecutar:

edquota -p usuarioprototipo *

Para verificar las cuotas que tiene un usuario se utiliza el comando:

quota -v

El superusuario puede ver las cuotas de todos los usuarios con el comando:

repquota filesystem

7.5. Deshabilitar cuotas para usuarios y grupos

Para deshabilitar las cuotas de un usuario o grupo solo hay que editarlas cuotas y poner los limites
a 0. Así un usuario puede usar tantos bloques e inodos como quiera.

Crear usuarios desde Linux Mint

Por Alex el 09/11/2016 , Comentar el artículo

Comparte este artículo:


En Linux Mint desde el escritorio Cinnamon podemos crear cuentas de
usuarios desde el administrador de usuarios y grupos sin necesidad de
usar el terminal de linux.

Vamos a Menú -> Administración -> Usuarios y Grupos


Seleccionamos la aplicación para crear usuarios

Pulsamos + Add y le damos un nombre al nuevo usuario


Creamos el usuario y le ponemos una contraseña.

Ahora si vamos al explorador de archivos al


directorio /home podréis ver que ya hay un nuevo usuario llamado
asolano.

Si entráis dentro del directorio del nuevo usuario veréis que se ha


creado vació sin ninguna carpeta de usuario pero eso no importa
porque la primera vez que entréis se crean todas las carpetas de
usuario como podéis ver en la imagen. Ahora cambias de usuario o
reiniciáis y podéis probar el nuevo usuario.
¿Donde se guardan los datos de los usuarios?

Se guardan en dos fichero /etc/passwd donde se guarda la


información del usuario, nombre, UID, GID, directorio de trabajo,
interprete bash, etc. Y en cat /etc/group donde se guarda la
información de grupos.

Y esto es todo amigos!!


Gracias por seguirme y leerme, espero que les haya ayudado
Saludos
Alex.
Comandos básicos para administrar servidores Linux por SSH
A través del protocolo SSH, podemos acceder a través de Internet a los servidores, independientemente
de que se traten de Dedicados, Cloud o VPS. De este modo, podemos trabajar con las máquinas remotas
y realizar todo tipo de acciones como si estuviéramos delante de ellas. A continuación, repasamos una
serie de comandos básicos que nos permiten acceder y administrar servidores Linux por SSH.
Para hacer SSH necesitamos un terminal de línea de comandos que permita esta funcionalidad.
Generalmente, todos los terminales de OS X o Linux tienen instalados programas para conectarse por
SSH. También terminales avanzados en Windows o incluso programas cliente como Putty y otros.

Conexión SSH por terminal

Para conectar con un servidor vía SSH por terminal hay que lanzar el comando ssh e indicar tanto la
máquina como el usuario con el que vas a conectar.

ssh usuario@0.0.0.0

También podrías usar un nombre de dominio en caso que dispongas de uno apuntando a esa máquina.

ssh root@example.com

O puedes conectar haciendo uso de una llave privada, si es que el servidor tiene configurada una.

ssh -i ruta/a/la/llave user@example.com


Comandos básicos para administrar un servidor

Recuerda que si no has entrado como superusuario (root) tendrás que usar sudo antes de los comandos
para obtener permisos de administrador. Por ejemplo:

sudo apt-get update


Administrar el software instalado

Es importante usar los repositorios de software para gestionar el software instalado en el servidor. El
comando depende de la distribución de Linux que se está usando.
o Ubuntu / Debian: comando apt-get
o Fedora / Centos / Red Hat: comando yum
Estos gestores de paquetes tienen diversos subcomandos para realización de instalaciones de software y
actualizaciones. Por ejemplo, se instala un programa con install, indicando luego el nombre del paquete
que queremos instalar. En los siguientes comandos se estaría instalando el editor de texto Vim.
apt-get install vim

yum install vim

Aún más importante que instalar software es mantenerlo actualizado, lo que principalmente evitará que
nuestro servidor presente problemas de seguridad conocidos en versiones antiguas.
En apt-get necesitamos hacer una secuencia de comandos:

apt-get update

apt-get upgrade

El primero sirve para actualizar las listas de paquetes del repositorio. El segundo para actualizar el
software que disponga nuevas versiones.
Por su parte, yum update es más sencillo, ya que simplemente el comando update se encarga de realizar
esa doble función.

yum update
Reinicios del sistema

En algunos casos, las actualizaciones de paquetes requieren el reinicio del sistema. En esos casos lo
podemos conseguir con el siguiente comando:

reboot

En este caso, el sistema se saldrá de SSH, dado que el servidor se está reiniciando y por tanto nos
desconectará. En ese caso, tendrás que volver a iniciar la sesión pasados unos minutos. Si deseamos
apagarlo completamente podemos escribir el comando:

shutdown

Ese comando apagará la máquina, por lo que ya no podrás acceder a ella hasta que la arranques de nuevo
desde el Panel de Control del servidor en Arsys.
Reinicios de servicios

Muchas veces, un mal funcionamiento puntual de una aplicación se soluciona con un reinicio de la base
de datos o el servidor web. Es normal que, con el tiempo, los servicios puedan dar uno u otro problema y
el reinicio puede servir para volver a la normalidad, pero si la situación se repite habitualmente habría
que observar con mayor detenimiento la situación.
Aquí será clave saber cuáles son las tecnologías que usan las aplicaciones porque, dependiendo de las
aplicaciones que estemos utilizando, los comandos para reiniciar los servicios serían diferentes. Pero
ponemos algunos ejemplos:
El servidor web Apache se reinicia:

service apache2 restart

Aunque hay otras alternativas de reinicio como el comando /etc/init.d/apache2 restart


El servidor web Nginx se reinicia:

systemctl restart nginx

MySQL se reinicia:

service mysqld start

O como alternativa /etc/init.d/mysqld restart


Recuerda que todos los productos de Arsys tienen su documentación en el Centro de Soporte y, si tienes
algún problema, también puedes recurrir al equipo de Soporte Técnico a través de los canales habituales.

Es de sobra conocida la extensión que alcanza Linux en lo que a servidores en


producción se refiere. Los bajos consumos de recursos y lo fácil que ha llegado
a ser administrarlos desde hace unos años han ayudado a esto.

Los procesos juegan un papel muy importante en las distribuciones Linux, ya


que son los que consumirán estos recursos hardware tan preciados en
entornos de producción, administrarlos y gestionarlos correctamente es de
vital importancia ya que estos procesos y la gestión que hace el sistema sobre
ellos, hacen posible mantener funcionando el servidor sin necesidad de
reiniciar después de un cambio o actualización importante. Esto es uno de los
puntos más importantes por los que Linux gobierna el 90% de los servidores
alrededor del mundo .

Para esta labor contamos con varias herramientas a nuestra disposición,


veamos algunas de ellas.

Para ver los procesos en sistemas Linux, contamos con el comando ‘ ps ’, que
listará (de múltiples formas según las opciones que le pasemos) todos los
procesos que se encuentran corriendo en nuestro equipo.

ps [opciones]

Como de costumbre, podemos revisar el manual de ps dentro del sistema para


conocer todas las opciones posibles:

man ps
Siendo las más habituales :

ps aux (muestra todos los procesos del sistema)

ps axjf (que mostrará un árbol jerárquico con la ruta del programa al que
pertenece el proceso)
Las opciones que podemos aplicar a ps no van más allá de mostrar la
información de una u otra forma, más o menos extensa, o como ya sabemos,
filtrar los resultados con grep. Sea cual sea el método de muestra que elijamos,
siempre habrá dos constantes, el PID y el comando o nombre del programa.
Aquí un ejemplo de filtrado sobre ps para obtener únicamente los procesos
pertenecientes a bash.

ps aux | grep bash

El PID es el número identificador de proceso que le asigna el sistema a cada


proceso que se inicia, mientras que el command es el programa al cual
pertenece dicho proceso.

Top es otro gestor de procesos integrado en la mayoría de sistemas Linux.


Mientras que ps nos muestra un listado de procesos estático, es decir, nos
informa de los procesos, nombres, usuarios o recursos que se están usando en
el momento de la petición; top nos da un informe en tiempo real de los mismos.

top
man top

Aquí, como vemos en su manual, podemos controlar más aspectos, como los de
los siguientes ejemplos entre otros:

top –d 5 (Donde 5 es el número de segundos a transcurrir entre cada


muestreo)

top –o %CPU (Donde %CPU es el valor por el que vamos a ordenar los
procesos )
top –u toushiro (Donde Toushiro es el usuario del cual queremos mostrar
los procesos)
Otro gestor de procesos muy interesante y usado es ‘ htop ’, que nos mostrará
sin salir de la terminal (si es que lo ejecutamos desde ésta…) algo similar a top,
pero donde mediante las teclas de función del teclado, accederemos a menús
de configuración al estilo de las aplicaciones DOS (qué tiempos…).

htop
man htop

En htop, al tratarse de una aplicación en sí donde ya podremos configurar


algunos de sus aspectos y criterios de orden, hay poco que configurar, no
obstante, tal y como podemos leer en su manual, podemos hacer que inicie en
modo monocromo, predefinir el delay o intervalo de refresco, etc…

Los sistemas Linux vienen con la herramienta KILL instalada, que usaremos
para detener los procesos que necesitemos. Por defecto el comando kill envía
una señal denominada TERM a un proceso que le pasaremos mediante
su PID como argumento. Esta señal TERM pedirá a dicho proceso que termine,
permitiéndole gestionar su función de cierre, completando las tareas
necesarias y limpiando la información que ha cargado en memoria.
kill [PID del proceso]

En la captura de aquí arriba vemos cómo nos ha dado un error que aprovecho
para recalcar un punto muy importante en la seguridad de los sistemas Linux,
sistemas verdaderamente multiusuario y bien definidos, donde como vemos,
no permite eliminar o cancelar procesos de otros usuarios. Esto, como toda
medida de seguridad tiene su pega... pero vamos a quedarnos con lo "bueno"
^_^

En el caso de encontrarnos ante un proceso que “no quiere cerrarse” por la vía
diplomática que le ofrecemos con TERM, pasaremos a eliminar dicho proceso
por la fuerza ejecutando el comando kill con el siguiente argumento, pasando a
root previamente para no recibir el error que acabamos de comentar:

kill –KILL [PID del proceso]

Con este último comando, no estamos mandado al proceso ninguna señal,


directamente estamos diciéndole al kernel del sistema que descarte y cierre
dicho proceso.
Estas señales también pueden ser identificadas con números. Por ejemplo, en
los ejemplos anteriores TERM puede ser pasada al proceso mediante “-15” y –
KILL es el equivalente a pasar “-9”. Es decir, el resultado de los siguientes
comandos será el mismo:

kill -9 [PID del proceso]

kill –KILL [PID del proceso]

El comando kill además de para finalizar procesos, también podemos usarlo


para reiniciar ciertos servicios. Uno de los que más necesita reiniciarse suele
ser Apache, sobre todo si aún estamos con la configuración base, para ir
viendo que todo funciona correctamente.

Al igual que Apache, multitud de servicios necesitan ser reiniciados, y la


mayoría de ellos responde al argumento ‘HUP’ (Hang up) de kill. Mediante el
siguiente comando, el servicio perteneciente a Apache, se reiniciará y volverá
a cargar el fichero de configuración, permitiéndonos ver si los cambios han
surtido efecto y volviendo a dar servicio a los usuarios.

kill –HUP [PID de Apache]

Como vimos anteriormente, HUP también tiene su respectiva nomenclatura


en numeración, siendo el equivalente al comando anterior, la siguiente línea:

kill -1 [PID de Apache]

Un dato importante es que además de por su PID, si conocemos el nombre


exacto del proceso también podemos usarlo en el lugar en el que usaríamos el
PID. Para esto usaremos ‘ pkill ’ en lugar de kill, que funciona exactamente
igual, pero preparado para trabajar con nombres de proceso en lugar de con
PID. Es decir estos dos comandos harán exactamente lo mismo:

kill -9 3484

pkill -9 htop
' killall ' es una variante del comando kill con el que enviaremos la misma señal
a todos los procesos pertenecientes a un programa. Por ejemplo:

killall Firefox

Estructuras de Sistemas Operativos


Kernel: Definición
Parte fundamental de un sistema operativo, que reside en memoria todo el tiempo y
que provee los servicios básicos. Es la parte del sistema operativo que está más
cerca de la máquina y puede activar el hardware directamente o unirse a otra capa de
software que maneja el hardware.

La tarea del Kernel es ejecutar procesos (Software, aplicaciones o programas) y


facilitarles a los mismos la tarea de interacción con el Hardware, mediante la
comunicación entre procesos y llamadas al sistema (system calls).

Sistemas monolíticos
En este diseño, que hasta ahora se considera como la organización más común, todo
el sistema operativo se ejecuta como un solo programa en modo kernel. El sistema
operativo se escribe como una colección de procedimientos, enlazados entre sí en
un solo programa binario ejecutable extenso.

Esta organización sugiere una estructura básica para el sistema operativo:

1. Un programa principal que invoca el procedimiento de servicio solicitado.


2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al
sistema.
3. Un conjunto de procedimientos utilitarios que ayudan a los procedimientos de
servicio.

Sistemas de capas
Organizar el sistema operativo como una jerarquía de capas, cada una construida
encima de la que tiene abajo. El primer sistema construido de esta forma fue el
sistema THE, construido en Technische Hogeschool Eindhoven en Holanda por E. W.
Dijkstra (1968) y sus estudiantes. El sistema THE era un sistema simple de
procesamiento por lotes para una computadora holandesa, la Electrologica X8, que
tenía 32K de palabras de 27 bits (los bits eran costosos en aquel entonces).
El sistema tenía seis capas:

El nivel 0 se encargaba de la asignación del procesador, de cambiar entre un proceso


y otro cuando ocurrían interrupciones o expiraban los temporizadores.

La capa 1 se encargaba de la administración de la memoria.

La capa 2 se encargaba de la comunicación entre cada proceso y la consola del


operador (es decir, el usuario).

La capa 3 se encargaba de administrar los dispositivos de E/S.

La capa 4 era en donde se encontraban los programas de usuario.

El proceso operador del sistema se encontraba en el nivel 5.

Microkernels
La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al
dividir el sistema operativo en módulos pequeños y bien definidos, sólo uno de los
cuales (el microkernel) se ejecuta en modo kernel y el resto se ejecuta como procesos
de usuario ordinarios, sin poder relativamente.

Modelo cliente-servidor
Una ligera variación de la idea del microkernel es diferenciar dos clases de procesos:
los servidores, cada uno de los cuales proporciona cierto servicio, y los clientes, que
utilizan estos servicios. Este modelo se conoce como cliente-servidor.

Cada vez hay más sistemas que involucran a los usuarios en sus PCs domésticas
como clientes y equipos más grandes que operan en algún otro lado como
servidores. De hecho, la mayor parte de la Web opera de esta forma. Una PC envía
una petición de una página Web al servidor y la página Web se envía de vuelta. Éste
es un uso común del modelo cliente-servidor en una red.

Máquinas virtuales
Este sistema, que en un principio se llamó CP/CMS y posteriormente cambió su
nombre a VM/370, estaba basado en una astuta observación: un sistema de tiempo
compartido proporciona (1) multiprogramación y (2) una máquina extendida con una
interfaz más conveniente que el hardware por sí solo. La esencia de VM/370 es
separar por completo estas dos funciones.

El corazón del sistema, que se conoce como monitor d emaquina virtual, se ejecuta
en el hardware solamente y realiza la multiprogramación, proporcionando no una,
sino varias máquinas virtuales a la siguiente capa hacia arriba. Como cada máquina
virtual es idéntica al verdadera hardwarwe, cada una puede ejecutar cualquier
sistema operativo que se ejecute directamente sólo en el hardware.

Publicado por Ing. Néstor Anaya Chávez en 5:13:00 a. m.0 comentarios Enlaces a esta entrada

Reacciones:

Los Sistemas Operativos mas Populares


LOS SISTEMAS OPERATIVOS MÁS POPULARES DE LAS PC

 MS-DOS: el significado de estas letras es el de Microsoft disk Operating System. Microsoft es el


nombre de la compañía que diseño este sistema operativo, e IBM la compañía que lo hizo estándar
al adoptarlo en sus microordenadores. Este sistema operativo emplea discos flexibles con una
organización determinada los nombres de los ficheros en MSDOS, para los que se emplean tanto
letras como números, se componen de dos partes: el nombre del fichero y la extensión, estando
ambos datos separados por puntos.

 UNIX: es un sistema operativo multiusuario que incorpora multitarea. El sistema operativo UNIX tiene
diversas variantes y se considera potente. Esta escrito en lenguaje C. El UNIX y sus clones permiten
múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un método sencillo de
organizar archivos y permite la protección de archivos.

 NETWARE DE NOVELL: este sistema se diseño con la finalidad de que lo usarán grandes compañías
que deseaban sustituir las enormes maquinas por una red de PCs que resultara más económica y
fácil de manejar.

 WINDOWS:

Windows 3.x: Funcionaba sobre DOS. En la versión 3.11 se incluyó el trabajo en redes con grupos
de trabajo.

Windows NT 3.1 - 4: Sistema Operativo nuevo con problemas de compatibilidad de hardware.


Versiones para servidores y estaciones de trabajo. Fueron las primeras versiones para trabajo cliente
–servidor en empresas con gran volumen de equipos y distribución geográfica dispersa.
Windows 95: Comienza a utilizar arquitectura de 32 bits. Incluye Plug&Play. Facilita la conexión a
Internet.

Windows 98: Nuevos controladores hardware. Fat32. Soporte para DVD, USB. Integra Internet
Explorer. Millenium: Proyecto rápido antes de XP. Proporciona poca estabilidad.

Windows 2000: Evolución de NT mejorando servicios de red y Plug & Play. Versión para servidores
y estaciones de trabajo. Fat32, NTFS, DFS, etc.

Windows XP: Unión de Windows NT/2000 y 9x. Versiones Home y Profesional. Núcleo de NT.
Interfaz nueva. Multitarea mejorada. Redes inalámbricas.

Windows 2003 Server: Sucesor de Windows 2000 Server. El más estable de las versiones de
servidor. Interfaz estilo XP. Nuevos servicios orientados a seguridad en redes e Internet.

Windows Vista: Versión que aparece en 2007. Las diferentes versiones que se pueden adquirir son
tres para el consumidor, Vista Home Basic, Vista Home Premium y Ultimate Edition y dos versiones
para las empresas, Vista Business y Vista Enterprise. Tiene la interfaz gráfica totalmente rediseñada,
incluyendo gadgets en el escritorio, Internet Explorer 7.

Windows 7 y 8: Versión que aparece en 2009 y 2013. Sistema operativo muy mejorado en toda su
funcionalidad.

Otro tipo de Sistemas Operativos, también pertenecientes a la empresa Microsoft y basados en


otros dispositivos electrónicos de telecomunicación serían:

 Windows CE: Sistema operativo para dispositivos móviles (PDA´s).

 Windows Mobile: Basado en el anterior. Incluido en PDA´s, SmartPhones y Media Center portátil.
Última versión 2005.

 Symbian OS: es un sistema operativo que fue producto de la alianza de varias empresas de telefonía
móvil, entre las que se encuentran Nokia, Sony Ericsson, Psion, Samsung, Siemens, Arima, Benq,
Fujitsu, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, Sharp, etc. Sus orígenes provienen de
su antepasado EPOC32, utilizado en PDA's y Handhelds de PSION. El objetivo de Symbian fue crear
un sistema operativo para terminales móviles que pudiera competir con el de Palm o el Windows
Mobile de Microsoft y ahora Android de Google Inc., iOS de Apple Inc. y Blackberry OS.

 MCP: Antiguo sistema operativo desarrollado por Burroughs/Unisys, originalmente escrito en ESPOL
(Executive Systems Programming Language), que fue a su vez una extensión del Burroughs
Extended ALGOL. Luego en los 70 fue pasado a NEWP, una forma más estructurada y más segura
de ESPOL. En 1961, MCP fue el primer sistema operativo escrito exclusivamente en lenguaje de
alto nivel. También fue el primer sistema operativo en el cual el código fuente pudo ser estudiado y
mejorado por sus clientes (gracias a la legibilidad del código de alto nivel). Esto permitía a sus
clientes crear sus propias extensiones del sistema operativo; muchas de estas extensiones se
incorporaron luego al sistema para que estén disponibles para todos. De todas maneras, el código
fuente está registrado (no es libre). MCP fue el primer sistema operativo en poder gestionar múltiples
procesadores e introdujo la primera implementación comercial de memoria virtual. Por defecto utiliza
una interfaz de texto, y actualmente se encuentra en la versión 11 (abril de 2006).

Microsoft es proveedora del 50 por ciento de las aplicaciones de software que se usan en el mundo,
desde las hojas de cálculo hasta bases de datos, pasando por los procesadores de texto.
Tradicionalmente, se han distinguido las siguientes líneas de productos:

 Sistemas operativos: MS-DOS, Windows.


 Aplicaciones para la oficina (ofimática): MS Works, MS Office (Word, Excel, Access,
Powerpoint, InfoPath, FrontPage, Outlook y Publisher)
 Compiladores: MS Visual C++, MS Visual Basic
 Herramientas de desarrollo: .NET
 Internet: MS Internet Explorer o MS Internet Information Server. MyIE2 es un navegador
basado en el motor de Microsoft Internet Explorer pero no es de Microsoft.

Alguna de las tácticas empresariales más frecuentes:

 Comprar pequeños programas o servicios de otras empresas, e integrarlos en sus productos


con otro nombre: MS-DOS, scandisk, defrag, Hotmail...
 Integrar reproductores o visualizadores propios en el sistema operativo, convirtiendo así los
formatos de los que es propietaria: Windows Media Player, Internet Explorer, Windows
Messenger.

Introducción a los Sistemas Operativos


DEFINICIÓN DE SISTEMA OPERATIVO

 Un S.O. es un programa que actúa como enlace entre el usuario y el hardware de un


computador.
 El propósito de un S.O. es proporcionar un entorno en el cual el usuario pueda ejecutar
programas.
 Un sistema operativo es un conjunto de programas que gestionan de una manera
eficiente un sistema de información para proporcionar al usuario un interface de
sencillo manejo.

Podemos decir que:


Un sistema operativo (SO) es un conjunto de programas destinados a permitir la
comunicación del usuario con una computadora gestionar sus recursos de manera eficiente.
Éste comienza a trabajar cuando se enciende la computadora, y gestiona el hardware de la
máquina desde los niveles más básicos.

¿CÓMO FUNCIONA UN SISTEMA OPERATIVO?

Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso


importante es la interpretación de los comandos que permiten al usuario comunicarse con el
ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las
instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario
comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados
en gráficos son más sencillos de utilizar.
FUNCIONES DE LOS SISTEMAS OPERATIVOS

ADMINISTRACION DE TRABAJOS: cuando existen varios programas en espera de ser


procesados, el sistema operativo debe decidir el orden de procesamiento de ellos, así como
asignar los recursos necesarios para su proceso.

ADMINISTRACION DE RECURSOS: mediante está función el sistema operativo está en


capacidad de distribuir en forma adecuada y en el momento oportuno los diferentes recursos
(memoria, dispositivos, etc.,...) entre los diversos programas que se encuentran en proceso,
para esto, lleva un registro que le permite conocer que recursos están disponibles y cuales
están siendo utilizados, por cuanto tiempo y por quien, entre otros aspectos.

CONTROL DE OPERACIONES DE ENTRADA Y SALIDA: mediante esta actividad el sistema


operativo decide que proceso hará uso del recurso, durante cuánto tiempo y en qué momento.

ADMINISTRACION DE LA MEMORIA: supervisa que áreas de memoria están en uso y cual


están libre, determina cuanta memoria asignará a un proceso y en qué momento, además
libera la memoria cuando ya no es requerida para el proceso.

RECUPERACION DE ERRORES: el sistema operativo contiene rutinas que intentan evitar


perder el control de una tarea cuando se suscitan errores en la trasferencia de información
hacia y desde los dispositivos de entrada / salida.

CATEGORÍA DE LOS SISTEMAS OPERATIVOS

En función del número de usuarios simultáneos.

 Monousuario: sólo permite ejecutar los programas de un usuario al mismo tiempo.

 Multiusuario: permite que varios usuarios ejecuten simultáneamente sus programas,


accediendo a la vez a los recursos del ordenador. Normalmente estos sistemas operativos
utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar
los datos de otro usuario.

En función del número de procesos simultáneos.


 Monoprogramación o Monotarea: puede ejecutar un proceso (aparte de los procesos del propio
S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará
haciéndolo hasta su finalización o interrupción.

 Multiprogramación o Multitarea: es capaz de ejecutar varios procesos al mismo tiempo. Este


tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de
forma alternativa a los procesos que los solicitan, de manera que el usuario percibe que todos
funcionan a la vez, de forma concurrente.

En función del número de procesadores en uso simultáneo.

 Monoproceso: cuando se dispone de un único procesador.

 Multiproceso: consiste en hacer funcionar varios procesadores en forma paralela para obtener
un poder de cálculo mayor que el obtenido al usar un procesador de alta tecnología o al
aumentar la disponibilidad del sistema (en el caso de fallas del procesador).

En función de los requerimientos temporales.

 Los sistemas de tiempo real: se utilizan principalmente en la industria y son sistemas diseñados
para funcionar en entornos con limitaciones de tiempo. Un sistema de tiempo real debe tener
capacidad para operar en forma fiable según limitaciones de tiempo específicas; Muchos SO
de tiempo real son construidos para aplicaciones muy específicas como control de tráfico
aéreo, bolsas de valores, control de refinerías y en el ramo automovilístico. Otros campos de
aplicación de los Sistemas Operativos de tiempo real son los siguientes: Control de trenes,
Telecomunicaciones, Control de edificios. Estos son algunos ejemplos de sistemas
operativos de tiempo real: OS-9, RTLinux (RealTime Linux), QNX, VxWorks, entre otros.
 Centralizado: permite utilizar los recursos de un solo ordenador.

 Distribuido: permite utilizar los recursos (memoria, CPU, disco, periféricos...) de más de una
computadora al mismo tiempo.

 Sistemas Fijos: son sistemas operativos diseñados para funcionar en equipos pequeños,
como los PDA (asistentes personales digitales) o los dispositivos electrónicos autónomos
(sondas espaciales, robots, vehículos con ordenador, etcétera) con autonomía reducida. En
consecuencia, una característica esencial de los sistemas fijos es su avanzada
administración de energía y su capacidad de funcionar con recursos limitados. Los
principales sistemas fijos de "uso general" para PDA son los siguientes: PalmOS, Windows
CE / Windows Mobile / Window Smartphone.
Comandos básicos de Linux
En esta categoría se incluyen todas las órdenes fundamentales que se utilizan
para administrar el terminal, con las que se puede limpiar la ventana de la consola,
recuperar comandos anteriores desde la historia o finalizar la sesión.

Comando Descripción

Limpia la ventana del terminal

Con el comando clear se borran todos los


comandos de la sesión.

clear
clear El usuario recibe un terminal vacío con el
prompt a la espera de órdenes. Los comandos
introducidos anteriormente se guardan en el
scrollback buffer.

También se puede limpiar la ventana de la


consola con el atajo de teclado [CTRL] + [L]

Finaliza la sesión en el terminal

Con el programa exit finaliza la sesión actual y


se cierra la consola.
exit
exit

También se puede utilizar el atajo de teclado


[CTRL] + [D].

Muestra la lista de todos los comandos

El comando help se utiliza para mostrar una


lista de todas las órdenes del sistema.

help
help
Si introduces help en combinación con un
comando shell obtienes una breve descripción
del comando en cuestión.

help COMANDO
Muestra las entradas del historial

En Bash, los últimos 500 comandos


introducidos en el terminal se guardan en el
historial. Esta función sirve de ayuda al
introducir órdenes en la consola y permite
ejecutar de nuevo un comando introducido con
anterioridad seleccionándolo con ayuda de las
flechas del teclado y confirmándolo con la tecla
Enter.

history También se puede examinar el historial en


función de palabras clave con el atajo de
teclado [CTRL] + [R]. Utilizando la orden sin
opciones ni argumentos se obtiene la lista
completa de comandos numerada.

history

Para filtrar la salida se combina history con el


programa grep (ver opciones de búsqueda) y
una palabra clave utilizando la barra vertical.

history | grep PALABRA CLAVE

Páginas de ayuda
¿No sabes cuáles son los pasos siguientes? A este respecto, Linux ofrece en el
terminal páginas de ayuda y de documentación como las Unix Man Pages (Manual de Unix)
y las páginas de información de GNU, las cuales contienen una exhaustiva descripción de
todos los programas, comandos, archivos de configuración, formatos de archivo y funciones
del kernel. Con whatis y apropos en la categoría de páginas de ayuda, cuentas con programas
de líneas de comando que permiten examinar las páginas del manual del sistema operativo
por palabras clave.

Comando Descripción

Examina el manual

Con apropos se examinan los títulos y las


descripciones de las páginas del manual de
apropos tu sistema operativo por palabras clave. El
programa de líneas de comandos muestra en
el terminal todas las correspondencias
incluyendo una breve descripción.
Sigue el siguiente esquema:

apropos [OPCIONES] PALABRA CLAVE

Este comando soporta diferentes opciones.


Con la opción -e (--exact) delimitas la
búsqueda a correspondencias exactas, pero
también puedes utilizar comodines (-w
'*TÉRMINO DE BÚSQUEDA') y expresiones
habituales (-r).

Abre la documentación en línea de GNU

El comando info abre las páginas die


información de GNU sobre un tema
determinado. Normalmente equivalen al
manual que se puede invocar con man,
aunque a diferencia de este, contienen
enlaces que facilitan la navegación en el
info manual.

Para abrir la documentación de lectura de


GNU utiliza esta sintaxis:

info [OPCIÓN] TEMA

Si no indicas una opción ni un tema accedes


al menú principal del manual de GNU.

Abre el manual

Con man se abren las páginas del manual


(man pages) de tu distribución de Linux en la
consola.

Para ello se sigue el siguiente esquema:


man
man [OPCIÓN] TEMA

Las man pages de Linux se distribuyen en 10


secciones temáticas:

(1) Comandos de usuario

(2) Llamadas al sistema


(3) Biblioteca de funciones del lenguaje de
programación C

(4) Formatos de archivo

(5) Archivos de configuración

(6) Juegos

(7) Miscelánea

(8) Comandos para administrar el sistema

(9) Funciones del kernel

(n) Comandos nuevos

Si, por ejemplo, quieres abrir el manual para


un comando específico, se combina man con
el nombre del comando:

man clear

O se concreta la búsqueda con el número de


la sección correspondiente:

man 1 clear

En ambos casos se abre la página del


manual por el comando clear. Para cerrarlo y
volver a la consola utiliza la tecla [Q].

Si quieres explorar las páginas del manual de


Linux por palabras clave dispones del
comando apropos.

Abre la documentación en línea al estilo


Lynx

Con pinfo cuentas con una versión del


programa info que sigue el modelo del
pinfo explorador de líneas de comandos Lynx y
muestra las páginas de información con los
enlaces destacados con colores.

Para utilizar pinfo se sigue el mismo esquema


sintáctico que con info:
pinfo [OPCIONES] TEMA

Busca en el manual por palabras clave

El programa whatis permite buscar por


palabras clave en el manual. Para examinar
el manual del sistema operativo en busca de
una equivalencia exacta se llama al programa
con el término de búsqueda. Si se encuentra
whatis una correspondencia, whatis responde con
una breve descripción en el terminal.

whatis [OPCIONES] PALABRA CLAVE

whatis (-w '*PALABRA CLAVE') también


soporta comodines y expresiones regulares (-
r).

Operaciones en el directorio
Algunos comandos básicos de Linux permiten llevar a cabo operaciones en los directorios del
sistema, como puede ser crear ficheros, borrarlos y gestionarlos, así como navegar por el
árbol del directorio. Entre los comandos más importantes de esta categoría se
incluyen cd, ls, mkdir o rmdir.

Comando Descripción

Navega por el árbol de ficheros

El comando cd es la abreviatura de change


directory y se utiliza para navegar por el
directorio.

La sintaxis de esta orden sigue el esquema:


cd cd [OPCIÓN] DIRECTORIO

Si no se indica ningún directorio


concreto, cd cambia automáticamente al
directorio principal del usuario.

Si se acompaña de un guion (-), cd abre el


directorio precedente.
Ejecuta el programa en un nuevo
directorio raíz

La orden chroot (abreviatura de change root)


se utiliza para ejecutar un comando en un
directorio raíz diferente para, por ejemplo,
chroot aislar programas peligrosos del sistema de
archivos restante, lo que se denomina chroot
jail.

Este comando requiere derechos raíz y se


orienta por este esquema:

chroot DIRECTORIO COMANDO

Muestra el contenido del directorio como


una lista

La orden ls equivale a list y se utiliza para


mostrar el contenido de un fichero (los
nombres de todos sus archivos y carpetas).

Esta es la sintaxis de la orden:


ls ls [OPCIONES] DIRECTORIO

Si no se añade a ls ningún directorio, el


comando enumera el contenido del
directorio en curso.

Con ayuda de diferentes opciones se puede


definir qué información se ha de mostrar y
cómo.
Crea un directorio

El comando mkdir corresponde a make


directory y permite a los usuarios de Linux
crear directorios desde cero.

Para crear un directorio en el fichero en


curso escribe la siguiente sintaxis:

mkdir [OPCIÓN] DIRECTORIO

Si lo que se necesita es crear varios ficheros


a la vez, se escribe uno detrás de otro sin
signos de puntuación y con espacio
mkdir intermedio:

mkdir [OPCIÓN] DIRECTORIO1


DIRECTORIO2

Si se quiere crear un directorio nuevo en


otro fichero diferente al actual se ha de
indicar la ruta absoluta o relativa al fichero:

mkdir /home/user/Desktop/test

mkdir/Desktop/test

En ambos ejemplos se crea el


directorio test en el directorio Desktop.

Crea una jerarquía en el directorio

Con mkdirhier puedes crear jerarquías


completas con un único comando:

mkdirhier mkdirhier [OPCIÓN]


/home/user/directorio1/directorio2/directorio3

Si directorio1 y directorio2 ya existieran,


entonces mkdirhier solo crearía directorio3.
En caso contrario, se crean los tres.
Muestra el nombre del directorio

Con pwd (abreviatura de print working


directory) la consola muestra el nombre del
pwd directorio de trabajo (en curso).

La sintaxis del comando es:

pwd [OPCIONES]

Borra el directorio

Si hiciera falta borrar un determinado


directorio, se utiliza el
comando rmdir (remove directory) según la
siguiente sintaxis:

rmdir [OPCIÓN] DIRECTORIO


rmdir Con rmdir, sin embargo, solo se pueden
borrar directorios vacíos. Si se quiere
eliminar un fichero con todas sus carpetas y
subcarpetas se utiliza el
comando rm (remove) con la opción -r.

Cuidado: rmdir no solicita confirmar el


borrado. Los directorios seleccionados con
el comando se borran definitivamente.

Presenta los directorios en forma de


árbol

Mientras que ls muestra el contenido de los


directorios como lista, el
tree
comando tree, siguiendo este esquema
sintáctico, muestra la jerarquía completa del
directorio en forma de árbol:

tree [OPCIONES] [DIRECTORIO]

Operaciones en archivos
Los comandos Linux de esta categoría permiten llevar a cabo diversas operaciones desde el
terminal que atañen a los archivos y, utilizando comandos básicos como cp, mv y rm, se
pueden copiar, desplazar, renombrar o borrar archivos del sistema.
Comando Descripción

Muestra el nombre del archivo

Al comando basename se le indica una ruta a un


archivo y devuelve su nombre sin la ruta.

La sintaxis del comando se compone de:

basename [OPCIONES] Ruta/al/archivo [SUFIJO]

Si en el terminal escribes, por ejemplo, $ basename


/home/user/imagen.jpg, obtienes la siguiente
basename respuesta:

imagen.jpg

Si se añade el sufijo de nuevo, el terminal no lo


devuelve, como vemos aquí:

Entrada: $ basename /home/user/imagen.jpg .jpg

Salida: imagen

El comando puede ser ampliado a varios archivos con


diferentes opciones.

Agrupa contenido de varios archivos

El comando cat (de concatenate) nace como


herramienta para enlazar archivos y puede emplearse
como pager para mostrar el contenido de los archivos
en el terminal.

Escribe cat con la siguiente sintaxis para leer y mostrar


un archivo en la salida estándar:

cat cat OPCIONES ARCHIVOS

Si incluyes varios archivos, sepáralos mediantes


espacios:

cat OPCIONES ARCHIVO1 ARCHIVO2

Para concatenar el contenido de varios archivos se


utilizan los operadores de redirección >, < y |. Si utilizas
el operador “mayor que“ (>), se aúna el contenido de
dos archivos en un tercero:
cat archivo_1.txt archivo_2.txt > archivo_3.txt

Compara archivos a nivel de byte

cmp forma parte del paquete diff y, como este, también


se utiliza para comparar el contenido de varios archivos
aunque, a diferencia de como sucede en diff, aquí el
cotejo tiene lugar byte por byte, lo que lo hace
cmp especialmente idóneo para archivos binarios.

Invoca a cmp según la siguiente sintaxis:

cmp [OPCIONES] ARCHIVO1 ARCHIVO2

Si cmp encuentra diferencias, entrega el número de


bytes y el de la línea del primer archivo que difiera.

Compara archivos clasificados por líneas

Utiliza el comando comm para comparar por líneas


archivos previamente ordenados (con sort, p. ej.).

La invocación de este comando se fundamenta en la


siguiente estructura sintáctica:

comm [OPCIONES] ARCHIVO1 ARCHIVO2

Sin opciones adicionales, el programa genera una


salida en tres columnas: la primera contiene todas las
comm líneas que solo aparecen en ARCHIVO1; la segunda,
todas las líneas que solo aparecen en ARCHIVO2, y la
tercera, todas las líneas que aparecen en ambos
archivos.

El comando comm soporta tres opciones:

-1 = ocultar líneas únicas del ARCHIVO1

-2 = ocultar líneas únicas del ARCHIVO2

-3 = ocultar todas las líneas que aparecen en ambos


archivos

Copia archivos o directorios


cp La orden cp (de copy) se utiliza para copiar archivos o
ficheros y sigue la siguiente sintaxis:
cp [OPCIONES] ORIGEN DESTINO

El elemento ORIGEN es el que se ha de copiar y


DESTINO se define a un archivo o un directorio donde
se ha de alojar el elemento copiado. Si se define como
destino a un archivo que ya existe, el archivo origen
reescribe su contenido. También se puede crear un
archivo de destino nuevo. Si se han de copiar varios
archivos, entonces el destino ha de ser un directorio,
del mismo modo que si se copia un directorio.

Copiar un archivo de origen en un archivo de destino en


el directorio actual:

cp [OPCIONES] ORIGEN DESTINO

Ejemplo: cp archivo.txt archivo_copia.txt

Copiar un archivo del directorio actual en un directorio


de destino:

cp [OPCIONES] ARCHIVO_ORIGEN
DIRECTORIO_DESTINO

Ejemplo: cp archivo.txt home/user/documentos/2017

Copiar varios archivos en un directorio:

cp [OPCIONES] ARCHIVO_ORIGEN1
ARCHIVO_ORIGEN2 DIRECTORIO_DESTINO

Ejemplo: cp archivo.txt archivo.odt


home/user/documentos/2017

Copiar un directorio desde el directorio actual en otro


directorio diferente:

cp DIRECTORIO_ORIGEN DIRECTORIO_DESTINO

Ejemplo: cp directorio1 home/user/documentos/2017

Si se tienen que copiar todos los directorios con el


contenido completo se deben incluir en el copiado todos
los subdirectorios con la opción -R.

cut Extrae el contenido de los archivos


La orden cut permite extraer el contenido de las líneas
de texto de un archivo (log o CSV) por columnas.

La sintaxis de este comando es:

cut [OPCIONES] ARCHIVO

Para indicar la posición exacta del fragmento que se


tiene que extraer se utilizan las opciones -b (posición de
byte), -c (posición del carácter), -d (carácter de
separación) y -f (campo).

Compara archivos o directorios

Con el programa diff se cotejan dos archivos. También


diff permite averiguar si dos directorios contienen los
mismos archivos. Se le invoca con esta estructura:

diff [OPCIONES] ARCHIVO1 ARCHIVO2

Muestra la ruta al archivo

dirname es lo contrario que basename: el comando


permite extraer la parte de la ruta a un fichero sin
mostrar su nombre.

dirname Su sintaxis es:

dirname [OPCIONES]

Introduce $ dirname /home/user/imagen.jpg en el


terminal para obtener la siguiente salida:

/home/user

Muestra el tipo de archivo

Con file se puede obtener información sobre el tipo o


file formato de un archivo.

Sigue el siguiente esquema:

file [OPCIONES] ARCHIVO

Crea un enlace a un archivo o un directorio


ln
El programa ln (link) crea un vínculo (un archivo
especial) que lleva a un archivo o un directorio. Con ello
se genera otra entrada a este archivo que permite
acceder a él a través de una ruta diferente. Para
invocar ln el comando ha de incluir, como mínimo, la
ruta al archivo de origen.

ln [OPCIONES] ruta/al/archivo de origen

En este caso, el enlace se crea en el directorio actual


de trabajo sin cambiar de nombre. Otra alternativa
consiste en indicar una ruta de destino y dar un nombre
diferente al vínculo:

ln [OPCIONES] ruta/al/archivo de origen ruta/al/enlace

ln crea por defecto los llamados enlaces duros o


hardlinks, que no son adecuados para crear vínculos a
los directorios y tampoco se pueden utilizar más allá de
las fronteras de partición. Es por esto que el comando
suele usarse en combinación con la opción -s (--
symbolic), con la cual se pueden generar enlaces
simbólicos, incluso más allá de los límites del sistema
de archivos. Los enlaces simbólicos se refieren siempre
a la ruta “real” a un archivo y dependen de esta.

Muestra los archivos abiertos en el terminal

lsof equivale a list open files (muestra los archivos


abiertos), un programa de apoyo que muestra en el
terminal información sobre los archivos abiertos
ordenados en función del PID (ID de proceso).

lsof Para invocarlo se sigue el siguiente esquema:

lsof [OPCIONES]

Dado que todos los sistemas tipo UNIX como Linux lo


gestionan todo en archivos («Everything is a file»), la
lista que devuelve lsofes muy larga. Por eso suelen
usarse opciones que concretan el resultado.

Calcula sumas de control


md5sum Con ayuda del comando md5sum se pueden calcular y
comprobar sumas de control MD5.

mv Mueve archivos o directorios


El programa mv (move) copia un archivo o un directorio
y borra el original. Si esto tiene lugar dentro del mismo
directorio, mv puede utilizarse también para cambiar el
nombre de los archivos.

Para ello se sigue el siguiente esquema:

mv [OPCIÓN] ORIGEN DESTINO

Ejemplos de su aplicación:

Trasladar un archivo a otro directorio:

mv [OPCIONES] ARCHIVO_ORIGEN
DIRECTORIO_DESTINO

Ejemplo: mv archivo1.txt home/user/documentos/2017

Trasladar varios archivos de origen a un directorio de


destino:

mv [OPCIONES] ARCHIVO_ORIGEN1
ARCHIVO_ORIGEN2 DIRECTORIO_DESTINO

Ejemplo: mv archivo1.txt archivo2.txt


home/user/documentos/2017

Trasladar un subdirectorio del fichero actual a un


directorio de destino:

mv [OPCIONES] DIRECTORIO_ANTIGUO
DIRECTORIO_NUEVO

Ejemplo: mv directorio1 home/user/documentos/2017

Cambiar el nombre de un archivo en el directorio de


trabajo:

mv [OPCIONES] ARCHIVO_ANTIGUO
ARCHIVO_NUEVO

Ejemplo: mv archivo1.txt archivo2.txt

Cambiar el nombre de un subdirectorio en el directorio


actual:

mv [OPCIONES] DIRECTORIO_ANTIGUO
DIRECTORIO_NUEVO
Ejemplo: mv directorio1 directorio2

Agrupa el contenido de archivos en columnas

De forma parecida a cat, el programa paste también


muestra el contenido de los archivos en la salida
estándar, pero mientras que cat los muestra de forma
encadenada, paste los agrupa en columnas.

El esquema básico de esta función es:

paste [OPCIONES] ARCHIVO1 ARCHIVO2

En el modo estándar, los archivos indicados se agrupan


de tal forma que todas las líneas cuyo número coincide
se emiten en una misma línea en la salida. Así, cada
paste línea de la salida contiene el contenido de todos los
archivos de entrada.

Con la opción -d se puede configurar individualmente el


tipo de separador que se usa. Por defecto suele
utilizarse la tabulación.

Con la opción -s (de serial) se activa otro modo


diferente en el cual todas las líneas del primer archivo
de entrada se pegan en la primera línea de la salida.
Los datos del resto de archivos de entrada se pegan a
continuación en líneas de salida separadas. De esta
forma, cada línea de la salida contiene únicamente el
contenido de un archivo de entrada.

Cambia el nombre de archivos

rename permite cambiar el nombre de archivos y


carpetas con ayuda de expresiones regulares
compatibles con perl (Regex). Al contrario
de mv, rename se presta así para modificar los
nombres de varios archivos parcial o totalmente.
rename
La invocación de rename se realiza siguiendo el
siguiente esquema:

rename [OPCIONES] 'EXPRESIÓN_REGULAR'


ARCHIVOS

En el caso de las sustituciones, las expresiones


regulares siguen la siguiente sintaxis:
s/PATRONDEBUSQUEDA/SUSTITUCIÓN/MODIFICAD
OR

En el siguiente ejemplo todas las terminaciones .html se


sustituyen por .xhtml:

rename 's/\.html$/.xhtml/' *.html

Borra archivo o directorio

El programa rm (remove) borra archivos o directorios de


forma irreversible. Para ello se sigue la siguiente
estructura:

rm [OPCIONES] ARCHIVO

rm [OPCIONES] DIRECTORIO
rm
Para eliminar un directorio junto a todos sus
subdirectorios se utiliza rm con la opción -R (--
recursive):

rm -R DIRECTORIO

Cuando se ordena eliminar varios archivos o ficheros,


estos se separan por espacios:

rm [OPCIONES] ARCHIVO1 ARCHIVO2

“Tritura” archivos

shred es un comando que permite borrar archivos de


forma permanente porque los reescribe de modo que,
incluso contando con los mejores medios forenses, no
se pueden restablecer.

shred Este comando se invoca siguiendo este esquema


básico:

shred [OPCIONES] ARCHIVO

Utilizándolo con las siguientes opciones se eliminan


archivos concretos:

shred -fuz ARCHIVO


La opción -f impulsa el proceso de eliminación, -
z reescribe el contenido del archivo con ceros (la
configuración estándar son datos aleatorios) y -
u elimina el archivo triturado del sistema de forma
similar al comando rm.

Ordena listas de archivos y salidas de programa

Con el comando sort se ordenan las listas de archivos y


las salidas de programa en líneas numérica y
alfabéticamente.

sort Se invoca a sort siguiendo este esquema:

sort [OPCIONES] ARCHIVO

Este método se puede complementar con opciones


como -n(ordenar numéricamente), -R (ordenar de forma
aleatoria) o -r(ordenar en orden inverso).

Divide archivos

El comando split se utiliza para subdividir archivos.


Sigue el siguiente esquema sintáctico:

split [OPCIONES] [INPUT [PREFIJO]]

INPUT equivale al archivo que se ha de subdividir y


PREFIJO hace las veces de prefijo del nombre del
nuevo subarchivo. A la hora de cambiar su nombre se
sigue el siguiente esquema:

PREFIJOaa, PREFIJOab, PREFIJOac …


split
Si no se define ningún prefijo, split recurre al
estándar x.

Con la opción -b (bytes) se puede definir el tamaño de


las partes en que se divide el archivo. Esto puede
hacerse en bytes (b), kilobytes (k) o megabytes (m).

Ejemplo:

split -b 95m archivo.tgz split-archivo.tgz.

Aquí split divide el archivo archivo.tgz en archivos de 95


megabytes y los nombra como sigue:
split-archivo.tar.aa

split-archivo.tar.ab

split-archivo.tar.ac

Los archivos que se han subdividido


utilizando split pueden reunirse de nuevo con el
comando cat.

cat split-archivo.tar.* > archivo.tar

Muestra fecha y hora

Con ayuda del comando stat (status) se puede obtener


la fecha y la hora de los accesos y los cambios relativos
a determinados archivos o directorios.
stat
Este comando sigue esta sintaxis:

stat [OPCIONES] ARCHIVO

El formato de salida se puede configurar con opciones.

Cambia fecha y hora

Para modificar la fecha y la hora de los accesos o los


cambios que han tenido lugar en un archivo se utiliza el
comando touch. Si se utiliza en un archivo que no
existe, este se crea automáticamente, lo que hace que
este comando también se utilice para generar archivos
vacíos.

Para invocar a touch se tiene que seguir este esquema:

touch touch [OPCIONES] ARCHIVO

Si de lo que se trata es de cambiar la fecha y la hora de


un archivo por una fecha determinada se utiliza la
opción -t incluyendo la fecha en el
formato [AA]MMDDhhmm[.ss].

Ejemplo:

touch -t 1703231037 archivo.txt

La fecha y la hora del acceso y los cambios respecto a


este archivo se han fijado en el 23 de marzo de 2017 a
las 10:37 horas. Si se prefiere, el cambio se puede
limitar a la fecha de acceso o de modificación con las
opciones -a y -m. Si se utiliza sin la opción -tse sella
automáticamente con la fecha y la hora actual.

Información sobre los usuarios


Utiliza los programas de esta categoría para solicitar información detallada sobre los
usuarios registrados en el sistema, así como sobre sus grupos y procesos.

Comando Descripción

Muestra información sobre los usuarios

El comando finger muestra información sobre


los usuarios y para ello se combina con el
nombre del usuario en cuestión:

finger [OPCIONES] [USUARIO]

El terminal entrega entonces la siguiente


información sobre la cuenta de este usuario:
nombre de inicio de sesión y nombre real, el
finger momento del registro, el tiempo transcurrido
desde la última actividad (idle time), el
directorio principal del usuario, el shell por
defecto, su localización (office number), correo
y número de teléfono (si consta) y el contenido
de los
archivos .plan, .project, .pgpkey y .forward (si
existen).

Utiliza finger sin indicar un nombre de usuario


para solicitar información sobre tu propia
cuenta.

Muestra información sobre grupos

Con groups el terminal enumera los grupos a


los que pertenece una determinada cuenta de
groups usuario.

Utiliza el comando siguiendo este esquema:

groups [OPCIONES] [USUARIO]


Cuando no se indica usuario, groups localiza
todos los grupos a los que pertenece tu
cuenta.

Solicita los ID de usuarios y grupos

El comando id entrega los códigos de los


usuarios y grupos de la cuenta de usuario
seleccionada.
id
id [OPCIONES] [USUARIO]

Si no indicas ningún nombre de usuario, el


programa muestra tu propio ID. Añadiendo
opciones se puede limitar la búsqueda.

Muestra información sobre el último


usuario activo

Utiliza el comando last según el esquema que


indicamos abajo para obtener una lista de los
últimos usuarios que han iniciado una sesión,
junto con la fecha y la hora de su inicio y final
de sesión:
last last [OPCIONES]

Para ello, la consola solicita información del


archivo wtmp en /var/log/wtmp.

Si la búsqueda se refiere a una cuenta


específica, se añade el nombre del usuario al
comando.

last [OPCIONES] [USUARIO]


Muestra información sobre usuarios
activos y sus procesos

En este caso, w devuelve una lista de todos


los usuarios con sesión abierta y todos los
procesos que están ejecutando.

w Si añades un nombre de usuario, la búsqueda


se limita a este usuario:

w [OPCIONES] [USUARIO]

De nuevo puedes personalizar la


exhaustividad y el formato de la salida con
opciones.

Muestra información detallada sobre los


usuarios en activo

La orden who muestra información sobre los


usuarios activos en ese momento en el
sistema si se utiliza según esta sintaxis:

who [OPCIÓN] [ARCHIVO]

who es compatible con diversas opciones que


permiten concretar cuánta información se
obtiene como respuesta (terminal, tiempo que
han estado conectados, nombre del host
desde el que se han conectado, etc.).

who Por defecto, who extrae los datos sobre el


usuario actual del archivo /var/run/utmp, pero
opcionalmente también se pueden indicar
estos archivos a continuación como fuente de
la información:

Si son las sesiones anteriores las que te


interesan, combina whocon el
archivo /var/log/wtmp:

who [OPCIÓN] /var/log/wtmp

Si son los inicios de sesión fallidos, escribe


entonces who con el archivo /var/log/btmp:

who [OPCIÓN] /var/log/btmp


Muestra el nombre de usuario propio

Utiliza el comando whoami para obtener tu


whoami
propio nombre de usuario.

whoami [OPCIONES]

Gestión de cuentas de usuario


Linux ofrece toda una serie de programas con los cuales se pueden crear, eliminar y gestionar
cuentas de usuario y grupos a través del terminal. Estos aparecen en el siguiente listado
general de comandos de Linux para la administración de cuentas de usuario, categoría
en la que también se incluyen las órdenes que permiten abrir programas con los derechos de
otros usuarios, incluidos los de administrador.

Comando Descripción

Crea una cuenta de usuario

La opción más sencilla a la hora de crear una


cuenta de usuario es la que ofrece el
programa de líneas de comandos adduser,
que requiere derechos de administrador y se
utiliza así:

adduser [OPCIONES] USUARIO

Si utilizas adduser sin opciones se crean


automáticamente, además de una cuenta de
usuario, su ID, su directorio por defecto y un
grupo con su mismo nombre, como en este
adduser ejemplo:

adduser test

Salida estándar en el terminal:

Adding user 'test' (1001) …

Adding new group 'test' (1001) …

Adding new user 'test' (1001) with group 'test'


Creating home directory '/home/test' …

Copying files from '/etc/skel' …


A continuación, aparece un diálogo
interactivo en el cual se pueden definir la
contraseña y otros datos sobre el usuario,
como su nombre real, el número de oficina, el
número de teléfono, etc.

Mediante opciones se puede ajustar o


cancelar este proceso automático.

El guion de Perl adduser se basa en la


utilidad de bajo nivel useradd y ofrece las
mismas funciones aunque en una forma más
amigable para el usuario.

Configura la información ampliada del


usuario

El comando chfn, equivalente a change


finger, permite editar la información adicional
de una cuenta de usuario, en la que se
incluyen datos como el nombre real del
usuario, el número de oficina y los números
de teléfono privado y de trabajo.

La sintaxis general de chfn sigue esta


estructura:

chfn chfn [OPCIÓN "NUEVO VALOR"] [USUARIO]

Este comando requiere derechos de


administrador.

Con las opciones -f (nombre real), -r (número


de oficina), -w(número oficial) y -h (número
privado) se define qué información del
usuario se sustituye por un nuevo valor.

En el siguiente ejemplo se sustituye el


número de oficina antiguo peter23 por el
valor nuevo 122:

chfn -r "122" peter23

chsh Cambia el shell por defecto


El comando chsh (change shell) cambia el
login shell de un usuario. Para ello se sigue
el siguiente esquema:

chsh [OPCIONES] USUARIO

Para configurar el shell estándar de un


usuario, chsh se complementa con la
opción -s, que espera la ruta al nuevo shell
(p. ej., /usr/bin/fish).

Los usuarios sin derechos de administrador


solo pueden configurar su propio shell. Para
modificar el de otros usuarios se ha de
ejecutar el comando con derechos raíz, como
aquí:

sudo chsh -s /usr/bin/fish peter23

Para el usuario peter23 se ha definido el


shell fish (friendly interactive shell) como
estándar.

El cambio solo entra en vigor cuando el


usuario cierra y abre sesión nuevamente.

Cierra la cuenta de usuario

El programa de líneas de
comandos deluser borra todas las entradas
de una cuenta de usuario de los archivos de
cuentas del sistema. deluser solo se puede
utilizar con derechos admin y se orienta por
el siguiente esquema:

deluser [OPCIONES] USUARIO


deluser
Ejemplo:

deluser peter23

Con esto se elimina la cuenta de


usuario peter23.

Si se tiene la intención de borrar todos los


archivos del usuario en el directorio principal,
entonces se utiliza el comando junto con la
opción --remove-home, y si se trata de
eliminar todos los archivos del usuario del
sistema, se utiliza la opción --remove-all-files,
así:

deluser --remove-all-files peter23

Puede ser que antes de borrar los archivos


se quieran guardar en otro directorio: en este
caso se utiliza la opción --backup-
toindicando el directorio que se vaya a
utilizar:

deluser --backup-to /ruta/al/directorio peter23

deluser es un script de Perl con las funciones


del programa de bajo nivel userdel en una
forma más fácil de usar.

Crea grupos de usuarios

El programa groupadd se utiliza para crear


grupos de usuarios. Requiere derechos de
administrador y se invoca siguiendo esta
sintaxis:

sudo groupadd [OPCIONES] GRUPO

Cada grupo que se crea obtiene un


identificador de grupo único (GID). Los ID de
groupadd grupo entre 0 y 99 están reservados para
grupos del sistema. Para definir el GID de un
nuevo grupo de usuarios se utiliza el
comando con la opción -g (GID).

En el ejemplo que sigue se crea el


grupo users con el GID 1425:

groupadd -g 1425 users

Para crear un grupo de sistema se añade la


opción -r (root).

Borra grupos de usuarios

delgroup El equivalente a delete group, delgroup, se


utiliza para borrar grupos de usuarios y
requiere derechos root.
Sigue esta sintaxis:

delgroup [OPCIONES] GRUPO

La siguiente orden tiene como resultado que


el grupo users se borre del sistema:

delgroup users

De forma parecida a como ocurre con el


programa deluser, también en este caso
estamos ante un guion de Perl que pone a
disposición las funciones del programa de
bajo nivel groupdel de una forma más
manejable.

Configura grupos de usuarios

Con groupmod se puede configurar tanto el


nombre como el GID de un grupo de
usuarios. El comando se utiliza como
administrador siguiendo el siguiente
esquema:

groupmod OPCIONES GRUPO

Si utilizas groupmod con la opción -g puedes


groupmod cambiar el GID y con la opción -n, el nombre
del grupo.

Ejemplos:

groupmod -g 1800 users

En este ejemplo, el GID del grupo users se


define como 1800.

groupmod -n all users

El grupo users pasa a llamarse all.

Cambia el grupo de usuarios

newgrp (de new group) es un comando que


newgrp permite a los usuarios cambiar el ID de su
grupo sin tener que cerrar e iniciar sesión de
nuevo.
La sintaxis general de este comando es:

newgrp [-] [GRUPO]

Si newgrp se acompaña del parámetro


opcional [-], tras el cambio de grupo tiene
lugar un reinicio del entorno del usuario,
como si se abriera una nueva sesión.

Los usuarios que utilizan el comando sin


indicar ningún grupo se ven desplazados al
grupo estándar que se ha configurado
en /etc/passwd.

En principio, un usuario ha de ser miembro


del grupo al cual quiere mudarse, con la
excepción de los grupos protegidos por
contraseña, donde se tiene que introducir la
contraseña en el terminal.

Cambia la contraseña del usuario

Para cambiar la contraseña de un usuario o


para definir intervalos de bloqueo o de
cambios utiliza el programa de la línea de
comandos passwd con la siguiente sintaxis:

passwd [OPCIONES] USUARIO

Para cambiar la contraseña de otro usuario


necesitas derechos de administrador.

Escribiendo el comando passwd sin nombre


passwd de usuario puedes cambiar tu propia
contraseña.

passwd

Si de lo que se trata es de bloquear la


contraseña de otro usuario, se utiliza el
comando con la opción -l (lock).

passwd -l USUARIO

Otras opciones permiten definir una fecha de


caducidad para contraseñas (-x), así como
intervalos de aviso (-w) y de inactividad(-i).
passwd -x MAX_DÍAS -w AVISO_DÍAS -i
INACTIVO_DÍAS USUARIO

En el siguiente ejemplo se define que el


usuario peter24 debe renovar su contraseña
cada 30 días y cinco días antes de que se
agote el plazo recibe una alerta. Si pasados
los 30 días el usuario no ha renovado su
contraseña, esta caduca y la cuenta
de peter24se bloquea al cabo de tres días:

passwd -x 30 -w 5 -i 3 peter24

Ejecuta programas con los permisos de


otros usuarios

La instrucción sudo (substitute user do)


puede anteponerse a una llamada al sistema
para ejecutarla con los derechos de un
usuario diferente de forma segura.
Generalmente se requiere la contraseña del
usuario que realiza la invocación.

Cuando se introduce el comando sin indicar


ningún nombre de usuario, se utiliza el
superusuario root como usuario.

sudo LLAMADA

sudo En el archivo /etc/sudoers, los


administradores tienen la posibilidad de
definir quién puede utilizar sudo y qué
llamadas se permiten. Para poder utilizar el
comando sudo, el usuario ha de pertenecer
al grupo sudo.

Para seleccionar un usuario diferente se


utiliza sudo con la opción -u y el nombre de
usuario deseado.

sudo -u USUARIO LLAMADA

Un cambio de usuario así solo es posible


cuando está autorizado en /etc/sudoers.

Si de lo que se trata es de trasladarse


definitivamente al shell root para ejecutar
comandos con derechos de administrador se
utiliza sudo con la opción -i.

sudo -i

El comando sudo es útil porque permite a los


usuarios ejecutar comandos previamente
definidos como usuarios raíz sin que sea
necesario revelar la contraseña root.

Trabajar con los permisos de otro usuario

El comando su también permite cambiar de


usuario temporalmente para realizar
llamadas al sistema con los permisos de otro
usuario, pero a diferencia de sudo, en este
caso las órdenes no se ejecutan
directamente, sino que es necesario cambiar
de identidad porque su no solicita la
contraseña del usuario que invoca, sino la del
usuario cuyos derechos se quieren suplantar.
Para invocar a programas como
su administrador, el usuario necesita así la
contraseña root del sistema. Además, al
contrario que sudo, no es posible limitar
a su a un conjunto de llamadas al sistema
previamente definido por el administrador.

La sintaxis general del comando obedece a


este orden:

su [OPCIONES] [USUARIO]

Una solicitud sin nombre de usuario


selecciona a root como usuario.

Configura las cuentas de usuario

El comando usermod ofrece la posibilidad de


editar cuentas ya creadas.
Utiliza usermod con derechos raíz según el
usermod siguiente esquema:

usermod [OPCIONES] USUARIO

Con ayuda de las opciones defines cuáles


son los cambios que se han de realizar:
- Cambiar el nombre del usuario (-l
NUEVO_NOMBRE):

usermod -l peter24 peter23

El usuario peter23 se llama ahora peter24.

- Crear un nuevo directorio principal (-d


DIRECTORIO) y mudar los archivos antiguos
(-m):

usermod -d /ruta/al/directorio/peter24 -m
peter24

Todos los archivos del hasta ahora directorio


principal se encuentran en el nuevo directorio
principal.

- Bloquear a un usuario (-L):

usermod -L peter24

La contraseña de peter24 ha sido bloqueada.

- Añadir usuarios a un grupo (-a) y mantener


a los demás miembros (-G):

usermod -aG users peter24

Peter se ha añadido al grupo users.

Gestión de procesos
En Linux se denominan procesos a las instancias de un programa en ejecución. Los siguientes
comandos pertenecen al repertorio estándar de la gestión de procesos y permiten
supervisarlos cómodamente desde el terminal e intervenir si es necesario.

Comando Descripción

Interrumpe y finaliza un proceso con PID

kill es un programa de la consola para


cancelar y cerrar procesos. El comando se
kill
invoca según el siguiente esquema con una
señal y el ID del proceso seleccionado:

kill [OPCIONES] [-SEÑAL] PID


Las señales más habituales son:

TERM: impele a un proceso a que finalice


por sí mismo (estándar)

KILL: fuerza la clausura de un proceso (por


parte del sistema)

STOP: interrumpe un proceso

CONT: permite continuar un proceso


interrumpido

La siguiente llamada envía una señal al


proceso 1234 pidiéndole que finalice por sí
mismo. Como no se envía ninguna
señal kill,envía la estándar TERM.

kill 1234

Es mejor ofrecer siempre a los procesos la


posibilidad de finalizar por sí mismos. Solo se
recomienda forzar la situación
con KILLcuando el proceso no reacciona
como debiera.

kill -KILL 1234

Si solo quisieras pausar temporalmente el


proceso 1234, utiliza la siguiente llamada
para interrumpirlo o dejarlo continuar:

kill -STOP 1234

kill -CONT 1234

Utiliza el comando kill con la opción -l (--list)


para obtener un listado de todas las posibles
señales que puedes enviar vía kill.

Interrumpe y cierra procesos usando el


nombre

killall En combinación con un término


clave, killall se utiliza para finalizar procesos
cuyo nombre coincide exactamente con él
(se cotejan los 15 primeros caracteres).
killall [OPCIONES] [-SEÑAL] [PROCESO]

La opción -e (--exact) permite extender la


comparación a todos los caracteres del
nombre del proceso.

Define las prioridades de los procesos

El comando nice asigna a un proceso


durante el arranque un valor nice entre -20 y
+19 que determina la forma como se
distribuye la capacidad disponible del
microprocesador. La franja mencionada
equivale a los niveles de prioridad en Linux
de 100 a 139. Un proceso con un valor nice
de -20 tiene, de esta forma, una prioridad
más elevada que un proceso con un valor
nice de 19.

nice Su sintaxis reza así:

nice [OPCIÓN] [COMANDO]

Sin ninguna otra información, todos los


procesos arrancan con un valor nice de 0.
Con la opción -n se definen las prioridades
de los procesos. Hay que tener en cuenta
que las prioridades negativas solo se otorgan
con derechos root.

En este ejemplo que sigue el editor nano se


arranca con una prioridad de 4:

nice -n 4 nano

Separa un proceso de la sesión

Normalmente, cuando un usuario cierra una


sesión en la consola con exit, por ejemplo,
todos los procesos dependientes finalizan
nohup automáticamente. El comando nohup (no
hangup) disuelve a un proceso de la sesión
en curso de forma que puede seguir activo
aun cuando el usuario ha cerrado su sesión.
La señal HUP(hangup), que generalmente
conduce a la interrupción de un proceso
automáticamente, se ve bloqueada
por nohup.

Este comando sigue este esquema:

nohup COMANDO

Busca el PID mediante un término de


búsqueda

El programa de la consola pgrep compara la


lista de procesos activos con un término
clave y, en caso de coincidencia, entrega los
respectivos PID.

La sintaxis básica de tal llamada consiste en:

pgrep [OPCIONES] Término

Por defecto, pgrep devuelve los PID de todos


los procesos que contienen la palabra clave.

Ejemplo:

pgrep ssh

Con esta llamada, la consola devuelve una


pgrep lista de todos los procesos que
contienen ssh en su nombre.

Si la búsqueda se ha de delimitar a todas las


coincidencias exactas, se utiliza la opción -x.

Ejemplo:

pgrep -x sshd

Con este ejemplo solo se muestran los


procesos que se llaman exactamente sshd.

Si además del PID también quieres solicitar


el nombre del proceso, combina pgrep con la
opción -l.

De forma similar a grep, pgrep soporta


palabras clave basadas en expresiones
regulares.
Muestra los ID de los procesos

En el caso del programa pidof, se obtiene de


la consola los números de identificación de
todos los procesos de un programa. Solicita
los PID con pidof siguiendo este esquema:

pidof [OPCIONES] PROGRAMA


pidof Con la siguiente entrada se muestran los ID
de todos los procesos activos del
programa nano en el terminal.

pidof nano

Cuando solo se quiere obtener el ID del


primer proceso, se combina pidof con la
opción -s (de single shot).

Finaliza y cierra procesos con palabra


clave

Como kill, pkill también envía una señal a un


proceso determinado, aunque el
direccionamiento no tiene lugar solamente
con el PID, sino con un término clave que se
compara con el nombre de los procesos
activos y puede ser formulado como
expresión regular.

También pkill envía la señal


estándar TERM si no se define cualquier otra
pkill señal. La sintaxis general del comando reza:

pkill [OPCIONES] [-SEÑAL] [TÉRMINO]

Gracias a diversas opciones, podemos limitar


el comando a los procesos de un
determinado usuario (-U UID), a los procesos
hijo de un proceso padre (-P PID) o a los
procesos recientes (-n) o a los más antiguos
(-o).

Mientras que pkill se dirige a todos los


procesos cuyo nombre contiene la palabra
clave, killall se refiere solo a los procesos que
coinciden exactamente con él.
Muestra una lista de todos los procesos
activos

El comando ps entrega una lista de todos los


procesos activos:

ps ps [OPCIONES]

Si necesitas una salida más detallada


utiliza ps con las opciones -f(detallado) o -
F (muy detallado). En el manual del sistema
operativo encuentras otras posibles
opciones.

Muestra los procesos activos como


estructura en árbol

Utiliza pstree para obtener una lista en forma


de árbol de todos los procesos en activo en
pstree la actualidad. Sigue la siguiente sintaxis:

pstree [OPCIONES]

Utilizando diversas opciones puedes definir el


formato y la amplitud de la salida.

Configura las prioridades de procesos


activos

El comando renice permite modificar la


prioridad de un proceso activo. Se invoca con
esta sintaxis:

renice PRIORIDAD [OPCIONES]

El direccionamiento tiene lugar con ayuda de


renice
opciones por medio del ID de proceso (-p
PID), los ID de grupos (-g GID) o un nombre
de usuario (-u USUARIO).

Ejemplos:

renice 12 -p 1234

Al proceso con el ID 1234 se le asigna una


prioridad de 12.
renice 3 -g 3456

Todos los procesos del grupo con el


GID 3456 obtienen un valor de prioridad de 3.

sudo renice -6 -u peter24

En este último caso, todos los procesos


activos del usuario peter24reciben una
prioridad de -6.

Sin opción, renice adquiere el valor por


defecto -p e interpreta la secuencia
consiguiente como ID del proceso.

Retrasa la ejecución actual de un proceso

El comando sleep se utiliza para interrumpir


por un periodo determinado de tiempo la
sesión actual en la consola. La sintaxis
general del comando reza:

sleep CIFRA[SUFIJO]

Si invocas a sleep sin sufijo, la cifra indicada


se interpreta como franja en segundos (s),
pero también se cuenta con la posibilidad de
interrumpir la sesión durante unos minutos
(m), unas horas (h) o incluso durante días.
sleep
La siguiente llamada interrumpe la sesión
durante 4 minutos:

sleep 4m

Este comando puede utilizarse, por ejemplo,


para retrasar la ejecución de un comando
ulterior:

sleep 1h && reboot

En el ejemplo, el sistema espera una hora y,


a continuación, ejecuta el comando reboot,
que reinicia el sistema.

Asignar procesos a determinados


taskset
procesadores
En el caso de taskset nos encontramos ante
un comando para el control ampliado de
procesos que se utiliza en sistemas con
procesadores multinúcleo para asignar
procesos o programas a los núcleos. Esta
orden se realiza con permisos de
administrador y utiliza uno de los siguientes
esquemas:

taskset [OPCIONES] MÁSCARA ORDEN

taskset [OPCIONES] -p PID

La asignación de procesos y órdenes a un


núcleo de la CPU tiene lugar utilizando una
máscara de bits hexadecimal:

0x00000001 = núcleo #0

0x00000003 = núcleos #0 y #1

0xFFFFFFFF = todos los núcleos (#0 a


#31)

El resultado de este método de reparto con


máscara de bits es poco intuitivo, motivo que
lleva a utilizar taskset con la opción -c (--cpu-
list), que permite la asignación numérica de
los núcleos (0, 5 7, 9-11).

La siguiente orden le indica al


proceso 1234 que ha de utilizar los
núcleos 1 y 2:

taskset -p 1234 -c 1,2

Listado dinámico de los procesos en


ejecución

Con el comando top obtienes una lista


dinámica de todos los procesos activos. Para
top ello utiliza este esquema:

top [OPCIONES]

La salida de la información sobre los


procesos se puede ajustar con ayuda de
diversas opciones. El comando soporta,
además, el uso de las siguientes teclas para
ordenar la salida:

[P] = ordena la salida en función del uso de


CPU

[M] = ordena la salida según el uso de


memoria

[N] = ordena la salida numéricamente por


PID

[A] = ordena la salida por edad

[T] = ordena la salida por tiempo utilizado


de CPU

[U USUARIO o UID] = filtra la salida por el


usuario

Utiliza la tecla [H] para acudir a las páginas


de ayuda y [Q] para abandonar la vista de los
procesos.

Editores
Con Linux no es necesario utilizar un programa de edición de textos para modificar archivos
de configuración, editar fragmentos de código o escribir notas cortas, pues es posible
abrir editores de texto simples en el terminal. A continuación presentamos tres comandos
que deberías conocer.

Comando Descripción

El editor de texto Emacs

Emacs es un editor de texto multiplataforma


que se puede ampliar con una interfaz de
programación. Arranca por defecto con una
emacs
interfaz gráfica de usuario pero si se escribe
la opción --no-window-system también puede
abrirse en el terminal.

emacs --no-window-system
Emacs cuenta con un tutorial integrado al
que puedes acceder con el atajo de teclado
[CTRL] + [H], [T].

El editor de textos Nano

Nano es una imitación en formato GNU del


editor Pico, basado en el terminal, que se
utiliza con el cliente de correo Pine. Aun
cuando ofrece una paleta de funciones más
reducida que otros editores comparables
como Vim, se diferencia de este por una
mayor facilidad en el uso.

Su sintaxis básica reza:

nano [OPCIONES] ARCHIVO


nano El comando abre el archivo solicitado en una
ventana de edición en el terminal.

Si invocas a nano sin nombre de archivo se


crea un archivo de texto nuevo que se
almacena en el directorio actual.

nano [Opciones]

Los atajos de teclado para administrar el


programa se muestran en el borde inferior de
la ventana. En las páginas de manual
dedicadas al comando encuentras más
información al respecto.

El editor de textos Vim

En el caso de Vim (Vi Improved) se trata de


un desarrollo ulterior del editor Vi al que
supera con numerosas extensiones, como el
resaltado de sintaxis, un amplio sistema de
vim ayuda, scripting nativo, autocompletado de
código y una selección de texto visual.

Este programa de código abierto ofrece


diferentes modos operativos para la edición
de archivos meramente de texto y se puede
utilizar tanto en el terminal como en una
aplicación portátil con interfaz gráfica de
usuario (GVim). Su campo central de
aplicación es la edición de código de
programa.

Iniciado en la consola, Vim se utiliza con el


teclado. Normalmente se invoca al comando
con un archivo de texto siguiendo este
esquema:

vim [OPCIONES] ARCHIVO

Vim guarda los archivos abiertos en una


memoria caché (buffer), donde también se
almacenan todos los cambios efectuados en
el archivo abierto. Si se inicia Vim sin
indicarle ningún archivo, el programa arranca
con un buffer en blanco. Las modificaciones
se aplican al archivo original solo cuando se
confirma su almacenamiento con las teclas
correspondientes. Si no existe ningún archivo
que coincida con el indicado en el comando,
se crea uno nuevo durante el
almacenamiento.

El programa vimtutor, que también se inicia


en la línea de comandos, ofrece una
introducción exhaustiva en Vim.

Nuestro artículo sobre el editor Vim sirve


también para profundizar en la instalación del
programa y en sus diferentes modos
operativos.

You might also like