Tema 2 - Administración en Linux

30
ADMINISTRACIÓN EN LINUX 1 El administrador del sistema. En los sistemas operativos multiusuario hay un usuario (o grupo de usuarios, según lo grande que sea el sistema), con capacidad para realizar tareas que los demás no pueden realizar. Este usuario se llama administrador del sistema y utilizará el login root para su trabajo diario. Sus principales tareas son: Funciones relativas al Hardware : Instalación de nuevos dispositivos hardware (memoria, discos, periféricos…). Comprobar el estado de los periféricos y ser capaz de localizar un fallo en caso de error en la instalación. Evaluar la necesidad de instalar nuevos discos, impresoras, memoria… Arrancar y parar el sistema. Funciones relativas al Software : Instalar el S.O y configurarlo, así como instalar las correspondientes actualizaciones. Instalación y desinstalación de los programas del sistema y sus actualizaciones. Instalación y desinstalación de aplicaciones (bases de datos, procesadores de texto…). Configurar y mantener el software de los dispositivos (impresoras, tarjetas de red…). Montar, desmontar y verificar los sistemas de ficheros. Modificar la fecha del sistema. Gestionar la seguridad del sistema (gestión de copias de seguridad). Funciones relativas a los usuarios: Agregar y eliminar usuarios y grupos. Administración de contraseñas de usuarios. Controlar la utilización del sistema por parte de los usuarios (programas que pueden usar, ocupación de los sistemas de ficheros…). Cambiar el propietario o grupo a que pertenece un fichero. Proporcionar asistencia a los usuarios e informarles de los nuevos servicios y modificaciones. Administración de usuarios y grupos Los archivos de configuración . Existen varios ficheros que contienen información relacionada con la administración de usuarios, grupos, contraseñas, etc. del sistema. /etc/passwd Describe todas las características de las cuentas de usuario y sistema. Este archivo se actualiza cada vez que creamos, borramos o modificamos un usuario Pág. 1

Transcript of Tema 2 - Administración en Linux

Page 1: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 1

El administrador del sistema.En los sistemas operativos multiusuario hay un usuario (o grupo de usuarios, según lo grande que sea el sistema), con capacidad para realizar tareas que los demás no pueden realizar. Este usuario se llama administrador del sistema y utilizará el login root para su trabajo diario. Sus principales tareas son:

Funciones relativas al Hardware:• Instalación de nuevos dispositivos hardware (memoria, discos, periféricos…).• Comprobar el estado de los periféricos y ser capaz de localizar un fallo en

caso de error en la instalación.• Evaluar la necesidad de instalar nuevos discos, impresoras, memoria…• Arrancar y parar el sistema.

Funciones relativas al Software:• Instalar el S.O y configurarlo, así como instalar las correspondientes

actualizaciones.• Instalación y desinstalación de los programas del sistema y sus

actualizaciones.• Instalación y desinstalación de aplicaciones (bases de datos, procesadores de

texto…).• Configurar y mantener el software de los dispositivos (impresoras, tarjetas

de red…).• Montar, desmontar y verificar los sistemas de ficheros.• Modificar la fecha del sistema.• Gestionar la seguridad del sistema (gestión de copias de seguridad).

Funciones relativas a los usuarios: • Agregar y eliminar usuarios y grupos.• Administración de contraseñas de usuarios.• Controlar la utilización del sistema por parte de los usuarios (programas que

pueden usar, ocupación de los sistemas de ficheros…).• Cambiar el propietario o grupo a que pertenece un fichero.• Proporcionar asistencia a los usuarios e informarles de los nuevos servicios y

modificaciones.

Administración de usuarios y grupos

Los archivos de configuración . Existen varios ficheros que contienen información relacionada con la administración de usuarios, grupos, contraseñas, etc. del sistema.

/etc/passwdDescribe todas las características de las cuentas de usuario y sistema. Este archivo se actualiza cada vez que creamos, borramos o modificamos un usuario

Pág. 1

Page 2: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 2

(login), pero puede ser modificado directamente por el usuario root (aunque no es aconsejable hacerlo).En él aparecen todos los usuarios que van a poder iniciar sesión en el sistema. Cada línea contiene información relativa a un usuario, en campos separados por el carácter “:”.

Cada línea del /etc/passwd tiene la siguiente estructura:

login:password:uid:gid:descripción:directorio_home:shell

La siguiente tabla describe cada uno de estos campos:

Login Identificador del usuario al conectarse al sistemaPassword Contraseña encriptada. Tampoco la conoce el administrador, por lo que el

procedimiento tradicional que debe realizar el administrador cuando un usuario ha olvidado su contraseña consiste en asignarle una nueva usando el comando passwd.Si contiene una “x” indica que se están utilizando las contraseñas sombras (ver más adelante el fichero /etc/shadow).Si el campo viene vacío (no con un blanco, sino con nada), significa que el usuario no tiene contraseña (con lo cual, cuando nos conectemos con este usuario, el sistema no pide contraseña)Si este campo contiene el carácter “*”, significa que este usuario no podrá conectarse, ya que este carácter no se corresponde con ningún password. (Es una forma de bloquear temporalmente la cuenta de un usuario)

UID Número de identificación del usuario. El UID de root es 0.GID Número de identificación del grupo primario al que pertenece el usuario.

Este número se asocia a una línea o entrada en el archivo /etc/group (fichero de grupos).

Descripción del usuario

Una cadena que describe al usuario. Puede tener cualquier valor, como el nombre propio, teléfono, oficina… Los campos de comentarios o descripción del usuario son conocidos también como datos GECOS. GECOS tiene cinco subcampos delimitados por comas. Los valores tradicionales son: El nombre completo, el número de despacho, el teléfono de trabajo, el teléfono de casa y otros. De estos, el más importante es el “nombre completo” ya que puede ser usado por algún programa externo como los servidores de correo, etc.

Directorio HOME

Camino absoluto del directorio HOME o directorio de trabajo del usuario.

Shell Intérprete de comandos que utilizará el usuario

Ejemplo:

root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:jorge:x:500:500:Jorge González,c/Prim 11, 965867345:/home/jorge:/bin/bashpepe:x:501:501::/home/pepe:/bin/bashluis:x:502:502::/home/luis:/bin/bashusu1_proy1::503:503::/home/usu1_proy1:/bin/bashusu2_proy1:x:504:503::/home/usu2_proy1:/bin/bashusu_proy1::505:503::/home/usu_proy1:/bin/bash

Pág. 2

Page 3: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 3

- El usuario usu_proy1 no tiene contraseña (por lo que no la pedirá al conectarse).

- El usuario jorge tiene almacenado su nombre propio, dirección y teléfono de oficina.

- Los usuarios usu1_proy1, usu2_proy1 y usu_proy1 pertenecen al mismo grupo.

/etc/group.Este archivo se actualiza cada vez que creamos, borramos o modificamos un grupo.En él aparecen todos los grupos del sistema. Al igual que el fichero de usuarios está formado por un conjunto de líneas que tienen el siguiente formato:

grupo:contraseña:gid:miembro1,miembro2,miembro3, ...

El significado de cada uno de estos campos es el siguiente:

Grupo Nombre del grupoContraseña Está encriptada y su funcionamiento es similar a la contraseña

de usuario. La contraseña de grupo es necesaria para algunos comandos.

GID Número de identificación del grupo.Lista de usuarios que pertenecen al grupo

Lista con los login de usuario que tienen este grupo como grupo secundario (aunque para los grupos del sistema, es decir, los que se crean en la instalación, funciona de distinta forma)

Nota: Todo usuario debe ser, al menos, miembro de un grupo.

Ejemplo:

root:x:0:root,pepe,luisbin:x:1:binjorge:x:500:pepe:x:501:luis,jorgeluis:x:502:pepe,jorgegrupo_proyecto1:x:503:

- En los grupos del sistema (en nuestro ejemplo root y bin), el último campo contiene la lista de usuarios que tienen asociado este grupo como primario o secundario.

- En los grupos creados después de la instalación (jorge, pepe, luis y grupo_proyecto1), el último campo contiene la lista de usuarios que tienen asignado este grupo como grupo secundario, pero no como grupo primario.

Para conocer la lista de grupos a los que pertenece un usuario:- El grupo primario se busca en el 4º campo del fichero /etc/passwd (en este

campo encontramos el GID; para encontrar el nombre de grupo accedemos a /etc/group con el GID anterior).

Pág. 3

Page 4: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 4

Por ejemplo, la cuarta linea de /etc/passwd nos dice que el usuario ‘pepe’ pertenece al grupo 501. En /etc/group vemos que el grupo 501 se llama también ‘pepe’.

- Los grupos secundarios sólo se pueden ver en /etc/group, por lo que habrá que buscar en la última columna de este campo todas las filas en las que aparece el nombre del usuario en cuestión.

Por ejemplo, el usuario ‘pepe’, aparece en la cuarta columna de las líneas del fichero /etc/group correspondientes a los grupos root y luis, por lo que estos son sus grupos secundarios.

Nota: Como veremos más adelante, todo esto también se puede hacer con el comando groups.

/etc/login.defs. Este archivo contiene información que se toma por defecto a la hora de crear nuevos usuarios y grupos.

Una muestra de su contenido, con comentarios incluidos, puede ser el siguiente:

# *REQUIRED*# Directorio en que se almacena el correo del usuario##QMAIL_DIR MaildirMAIL_DIR /var/spool/mail#MAIL_FILE .mail# Password aging controls:## PASS_MAX_DAYS Nº de días de validez de la contraseña.# PASS_MIN_DAYS Nº de días durante los cuales está prohibido cambiar la

contraseña.# PASS_MIN_LEN Nº de caracteres mínimos de la contraseña.# PASS_WARN_AGE Nº de días antes de la expiración de la contraseña, que

se visualizará un mensaje de advertencia.#PASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_MIN_LEN5PASS_WARN_AGE 7

## Valores mínimos y máximos para el identificativo de usuario (UID).#UID_MIN 1000UID_MAX 60000

## Valores mínimos y máximos para el identificativo de grupo (GID).#GID_MIN 100

Pág. 4

Page 5: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 5

GID_MAX 60000

## Inicialización de configuración del login.# UMASK Máscara de creación del directorio home.# ...

UMASK 022

Comandos relacionados con la gestión de usuarios y gruposLos comandos que vienen a continuación, sólo pueden ser ejecutados por root.

USERADDCrear usuarios.

Sintaxis: useradd [opciones] nombre_usuario

Crea un nuevo usuario de nombre ‘nombre_usuario’, e incorpora una nueva línea al fichero /etc/passwd.A medida que creamos nuevos usuarios en el sistema, se les asigna como UID un número correlativo que comienza en el número indicado en el parámetro UID_MIN del fichero /etc/login.defs. (En algunas implementaciones, el entorno de usuario es creado de acuerdo a los valores por defecto almacenados en los ficheros /etc/default/useradd y /etc/skel)

Nota: Si no se introducen opciones no se crearán algunos de los valores deseados como el directorio home, etc. Es preferible usar la orden adduser que además es interactiva.

Opciones:

–u UID Otorga al nuevo usuario el UID indicado, en vez del número correlativo que le corresponde.

–c descripción Permite dar el contenido del campo ‘descripción’ que se guarda en el fichero /etc/passwd. Si vamos a incluir espacios, el comentario se debe introducir entre comillas dobles. Se trata de la información GECOS. Hay que usar “,” para separar a los distintos campos del GECOS.

–d directorio_home Si se utiliza esta opción, el directorio home del nuevo usuario no será el directorio /home/nombre_usuario, sino el que se indica tras el parámetro -d.

–g grupo_primario Si no se indica esta opción, cuando creamos el nuevo usuario se creará un grupo (con el mismo nombre que el usuario), que se asignará como grupo primario. Esta opción permite asignar como grupo primario un grupo que ya existe en el sistema, por lo que el grupo que se indica debe existir.

–G grupos_secundarios

Contiene una lista con el resto de grupos a los que pertenece el usuario (separados por comas). Los grupos indicados en este campo deben existir en el sistema.

Pág. 5

Page 6: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 6

–s shell_por_defecto

Tipo de shell con el que se conecta del usuario.

–D Permite obtener los valores por defecto del comando.–m [–k skeleton] Crea el directorio personal y copia en el los archivos de skeleton o de

/etc/skel si no se especifica la opción k. Estos archivos suelen ser archivos de configuración personales, como .profile, .login, .mailrc, etc. o directorios que utiliza el sistema.

Ejemplo:

$useradd -u 545 –c “Perico palotes que vive en Lugo” \-d /home/periquito_palotes -g grupito -G root,luis -s /bin/csh -m perico

Se ha creado un usuario con las siguientes características:• login: perico• UID: 545• Directorio home: /home/periquito_palotes (en vez de /home/perico)• Grupo primario: grupito• Grupos secundarios: root y luis• Shell de inicio: csh• Comentarios: Perico palotes que vive en Lugo• Se creará el directorio $HOME y se copiarán en él los archivos de /etc/skel (opción

–m)• La línea introducida en el fichero /etc/passwd para este usuario es la siguiente:

“perico:x:545:506:Perico palotes que vive en Lugo:

/home/periquito_palotes: /bin/csh”• El resultado de la ejecución del comando “groups perico” es:

perico : grupito root luis• Cuando nos conectemos con el usuario perico, y ejecutemos “pwd” el resultado

será: /home/periquito_palotes

ADDUSERPermite añadir usuarios al sistema.

Sintaxis: adduser [opciones] nombre_usuario

En algunas versiones es sinónimo de la orden anterior useradd. La orden, sin opciones, lanza un script en perl de configuración en el que primero se nos pide la contraseña junto a su repetición para confirmarlo, y después un conjunto opcional de datos personales para identificar posteriormente al usuario. La orden crea un nuevo usuario con una carpeta en el directorio /home, perteneciente a un nuevo grupo del mismo nombre que el usuario. Interactivamente, para crear entradas individuales, es preferible el uso de esta orden a useradd, que es más apropiada para operaciones por lotes o scripts. Permite además añadir usuarios ya creados a grupos existentes si se usa como: adduser usuario grupo

Pág. 6

Page 7: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 7

Nota: Algunos aspectos del comportamiento por defecto de este comando pueden cambiarse modificando adecuadamente su archivo de configuración, /etc/adduser.conf; así, por ejemplo, para la máscara de creación del directorio home se usa DIR_MODE, etc.

Opciones:

--disable-login No ejecuta el comando passwd para preguntar por la contraseña--uid ID Permite establecer el ID del usuario--home dir Establece el directorio home del usuario--shell shell Establece el shell de ingreso al sistema para el nuevo usuario--ingroup grupo Añade el usuario al grupo especificado--quiet No muestra los mensajes de progreso--system Crea un usuario de sistema (En Debian, UID<1000)

Nota: Puede invocarse también como addgroup, en cuyo caso permite añadir grupos al sistema. Para más información ejecutar man adduser.

USERMODPermite modificar la información del usuario.

Sintaxis:usermod [opciones] nombre_usuario

Opciones:

–l login Permite cambiar el login (nombre de conexión) del usuario.–u UID Permite cambiar el UID del usuario.–c descripción Modifica el contenido del campo ‘descripción’ del fichero

/etc/passwd. –d directorio_home Cambia el directorio home del usuario. Si incluimos la opción –

m, el contenido del anterior directorio home, se mueve al nuevo.–g grupo primario Cambia el grupo primario del usuario.–G grupos secundarios

Cambia los grupos secundarios a los que pertenece el usuario. Sobreescribe cualquier asignación de grupos que ya existiera para dicho usuario.

–s shell_por_defecto Permite cambiar el shell de inicio del usuario.

Ejemplo:$usermod -s /bin/bash -c Periquito -l periquito perico

Se modifica el usuario ‘perico’ y se le dan las siguientes características:• El nuevo login del usuario perico es periquito• Su shell de inicio para a ser bash• El contenido del campo descripción es ahora “Periquito”• La línea del fichero /etc/passwd para este usuario es ahora:

periquito:x:545:506:Periquito:/home/periquito_palotes:/bin/bash

CHFN

Pág. 7

Page 8: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 8

Permite modificar la información personal del usuario.

Sintaxis:chfn [opciones] nombre_usuario

Cambia parte de la información de GECOS. Los usuarios pueden cambiar su propio número de despacho y números de teléfonos con este comando, pero no pueden cambiar el nombre completo ni el campo otros.Si no se introducen opciones se ejecuta en modo interactivo

Opciones:

–f nombre Permite, a root, cambiar el nombre completo del usuario–r num_hab Permite cambiar el número de habitación del usuario.–w numero_tel Permite cambiar el teléfono de trabajo del usuario–h numero_tel Permite cambiar el teléfono de casa del usuario

CHSHPermite modificar facilmente la shell utilizada por el usuario al ingresar en el sistema.

Sintaxis:chsh [opciones] [nombre_usuario]

Opciones:

–s login_shell Establece el shell que se usará para el usuario. Si no se usa esta opción el comando operará en modo interactivo. El login_shell debe ser uno de los que aparece en el fichero /etc/shells

USERDELBorrar usuarios

Sintaxis:userdel [-r] nombre_usuario

Elimina del sistema el usuario indicado, y elimina la línea correspondiente a dicho usuario del fichero /etc/passwd.

Opciones:

–r (recursivo) Hace que se borren todos los ficheros y directorios presentes en el directorio home del usuario, así como el propio directorio home .

Nota: Otra forma de borrar todos los ficheros de un usuario que se va a eliminar es mediante la orden:

# find / -user <nombre_usuario> -exec rm {} \;

Ejemplo:

Pág. 8

Page 9: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 9

Login:root$cd /home$ls

usuario1 ... usuario2 periquito_palotes$ userdel -r periquito$ls usuario1

usuario2....

GROUPADDSirve para crear grupos.

Sintaxis:groupadd [opciones] nombre_grupo

Crea un nuevo grupo de nombre ‘nombre_grupo’, e incorpora una nueva línea al fichero /etc/group.A medida que creamos nuevos grupos en el sistema, se les asigna como GID un número correlativo que comienza en el número indicado en el parámetro GID_MIN del fichero /etc/login.defs.

Nota: En algunas implementaciones se crea aplicando los valores de sistema almacenados en /etc/default/useradd y /etc/skel.

Opciones:

–g GID Otorga al nuevo grupo el GID indicado, en vez del número correlativo que le corresponde.

Ejemplos:

$groupadd usuarios_proyecto4/* Crea el grupo usuarios_proyecto4 con el GID 504 (siguiente nº libre) */

$groupadd –g 590 usuarios_proyecto5/* Crea el grupo usuarios_proyecto5 con el GID 590 (en vez de 505, que es el GID que le correspondería por defecto).*/

GROUPMODModifica la definición de un grupo

Sintaxis:groupmod [opciones] nombre_grupo

Opciones:

–g GID modifica el GID del grupo–n nombre_grupo modifica el nombre del grupo

Pág. 9

Page 10: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 10

Nota: Se puede modificar tanto el GID como el nombre del grupo aunque el grupo esté asignado como grupo primario de un usuario.

- Cuando cambiamos el GID de un grupo, es como si lo borramos y creamos uno nuevo. El usuario que tenía asociado el grupo como primario ahora se queda sin grupo. Los ficheros creados con ese usuario tienen como grupo el número viejo (sin nombre):

$ groupadd pru (GID 505)$ useradd –g pru usuario$ passwd usuariologin: usuario$ touch fich1 fich2$ lsrwxrwxrwx usuario pru …………….. fich1rwxrwxrwx usuario pru …………….. fich2

$ su - root$groupmod –g 523 pru/*Cambiamos el GID del grupo ‘pru’ a 523. Pero el usuario ‘usuario’ estaba asignado al grupo 505 y no puede cambiar. Como el grupo 505 ya no existe, el usuario se queda sin grupo. Los ficheros pertenecerán al grupo ‘505’, inexistente */login:usuario$lsrwxrwxrwx usuario 505 …………….. fich1rwxrwxrwx usuario 505 …………….. fich2

- En cambio, si cambiamos el nombre del grupo, no pasa nada (al hacer “ls” se ve que ha cambiado el nombre del grupo al que pertenecen los ficheros).

Ejemplo: $ groupadd pru2 (GID 506)$ useradd –g pru2 usuario2$ passwd usuario2login: usuario2$ touch fich1 fich2$ lsrwxrwxrwx usuario2 pru2 …………….. fich1rwxrwxrwx usuario2 pru2 …………….. fich2

$ su - root$groupmod –n pruebas2 pru2login:usuario2$lsrwxrwxrwx usuario pruebas2 …………….. fich1rwxrwxrwx usuario pruebas2 …………….. fich2

GROUPDELBorrar grupos

Sintaxis:groupdel nombre_grupo

Pág. 10

Page 11: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 11

Elimina del sistema el grupo indicado y la línea correspondiente a dicho usuario en el fichero /etc/group.No se pueden borrar un grupo cuando es el grupo primario de algún usuario. En este caso, se debe borrar primero el usuario y después el grupo.

Ejemplo: $groupdel usuarios_proyecto4

Nota: Al borrar un grupo todos los ficheros que pertenecen a dicho grupo quedan sin él. No hay utilidades que de manera automática transfieran o eliminen los archivos (y usuarios) que pertenecen a un grupo dado. Puede usarse la siguiente orden para cambiarlos de grupo:

# find / -gid [gid] –exec chgrp nuevo_gid {} \;

GROUPSPara conocer los grupos a los que pertenece un usuario (tanto primarios como secundarios)

Sintaxis:groups nom_usuario.

Ejemplo:En el siguiente ejemplo, el usuario ‘rosa’ pertenece al grupo ‘usuarios_proy4’ (como grupo primario), pero también a los grupos root y usuarios.

$ groups rosarosa: usuarios_proy4 root usuarios

IDPermite conocer los UIDs de los usuarios y ver los grupos a los que pertenecen

Sintaxis:id [opciones] [nom_usuario]

Si se omite el usuario se toma por defecto el que ejecuta el comando

Opciones:

–u Muestra solamente el UID–g Muestra solamente el GID–gn Muestra el nombre del grupo primario del usuario en lugar del GID

Seguridad en Linux.

Pág. 11

Page 12: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 12

Dado que Linux ha sido diseñado para soportar múltiples usuarios, ofrece muchos modos de acceder al sistema, además de diversas herramientas y órdenes relativas a la seguridad.

Las cuestiones de seguridad se pueden agrupar en varias categorías. Hablando en términos generales, dado que el tema de seguridad es muy amplio podemos distinguir en una primera categoría la protección que Linux proporciona al solicitar la identificación y la contraseña a cada usuario para poder acceder al sistema de cualquiera de las formas posibles: local, remoto, etc. La segunda categoría es la protección de ficheros, tanto desde el sistema operativo, como de los ficheros de usuario. En tercer lugar, estaría el establecimiento de normas de seguridad frente ataques del sistema, así como la seguridad física de la propia máquina.

En los siguientes apartados veremos algunos de los aspectos más básicos de la seguridad.

Seguridad de acceso al sistemaLa solicitud de identificación de usuario y de la contraseña constituye el primer control de seguridad para acceder al sistema. Los usuarios suelen elegir contraseñas sencillas y fáciles de recordar, lo que dificulta la tarea del administrador. Por eso el administrador debe recomendar algunas sugerencias para la selección de contraseñas, teniendo en cuenta el principio “las contraseñas complejas funcionan”:• Las contraseñas cuanto más largas mejor. Las contraseñas en Linux deben

tener una longitud mínima de seis caracteres. Teóricamente no hay máximo pero algunos sistemas sólo reconocen los 8 primeros caracteres de la contraseña. No es excesivamente costoso un programa que, de manera aleatoria, trate de adivinar las contraseñas por ello cuanto más larga más tardará en encontrarla.

• Nunca seleccione como contraseña una palabra del diccionario o una palabra que le identifique fácilmente, como su dirección, su nombre, hijos, número de teléfono, fecha de nacimiento, DNI,...

• Se aconseja, como contraseña, la elección de dos palabras cortar unidas por un enlace, como: mi-casa, ptx&mix, hi!clan

• Otro método puede ser memorizar una frase y seleccionar las iniciales de sus palabras, como, por ejemplo: al pan pan y al vino vino sería appyavv

La seguridad incluye, igualmente, detectar aquellas cuentas que pueden suponer un problema para la integridad del sistema, como:• Cuentas sin contraseñas. Pueden comprobarse si el segundo campo de las

líneas del fichero /etc/passwd están en blanco. Una solución es inhabilitar el acceso a ese usuario colocando un asterisco (*) y así bloquear la cuenta. Cuentas no utilizadas. Puede pensar en eliminar el acceso o bloquearlo utilizando el asterisco.

Pág. 12

Page 13: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 13

• Cuentas predeterminadas, creadas por algunos paquetes software con una contraseña por defecto. Repasarlas para poner contraseñas de acorde con las cuentas.

• Cuentas de invitados, donde personas ajenas al sistema tienen permiso de entrada al sistema. Son problemáticas pues un intruso tiene más fácil violar la seguridad estando dentro del sistema. Se sugiere tenerlas bloqueadas mientras no se necesiten.

• Cuentas de acceso de comandos. Existen unas cuentas que dan acceso a la ejecución de ciertos comandos como finger o date, que permiten la ejecución del comando y su posterior expulsión del sistema. Cuando utilice estas cuentas hay que asegurarse de que no aceptan datos desde la línea de comandos o no tienen ninguna posibilidad de escape. También ciertas llamadas como finger o who permite extraer información del sistema como los “logins” de algunos usuarios lo que equivale a conocer la mitad del código de acceso.

• Cuentas de grupo. Si utiliza contraseñas para grupo normalmente son muchos los que tendrán que conocer la contraseña, situación que puede ser peligrosa. Aunque se añadan contraseñas a grupos se aconseja mantener activas las contraseñas de usuarios.

El archivo /etc/shadow.Todos los usuarios del sistema pueden visualizar el contenido del fichero /etc/passwd, por lo que cualquier usuario tiene acceso a todas las contraseñas, aunque estén encriptadas.

Linux utiliza una llamada al sistema, crypt, para codificar las contraseñas y aunque resulta difícil descifrarla, no es imposible. Además, en el fichero /etc/passwd hay más información de los usuarios como el uid, gid, etc., por lo que está facilitando información al exterior.

Una manera de proteger más aún el sistema es utilizar la codificación de sombra (shadow) para ubicar las contraseñas en otro archivo llamado /etc/shadow sólo accesible por root. En efecto, el traslado de las contraseñas cifradas al archivo /etc/shadow, accesible únicamente por el superusuario, añade una útil capa de protección.

El fichero /etc/shadow contiene cierta información de los usuarios. Cada línea representa a un usuario y la información se encuentra en campos separados por el carácter ":", según el formato:

login:contraseña:último:plazo:máximo:aviso:expirado:deshabilitado:r

El significado de cada uno de los campos es:

login Nombre del usuariocontraseña Contraseña encriptadaúltimo Días, desde 1/1/1970, transcurridos desde que se cambió por

última vez la contraseña

Pág. 13

Page 14: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 14

plazo Plazo recomendado para cambiar la contraseñamáximo Plazo máximo para cambiar la contraseñaaviso Diás en que se avisa antes de que la contraseña expireexpirado Días que lleva la cuenta desactivadadeshabilitado

Días que lleva la cuenta desactivada (desde 1/1/1970)

r Campo reservado

Ejemplo:

root:$1$9p5c6c7E$3TwupixFk5RUztaT8i6.f.:11634:0:99999:7:::bin:*:11634:0:99999:7:::jorge:$1$Bkqh8wvo$9skkc0R9bhFXX.NdsQxmG1:11634:0:99999:7:::pepe:!!:11640:0:99999:7:::luis:!!:11640:0:99999:7:::usu1_proy1:$1$7GA6Ev32$YZKQROB6tZFhzGur3u.sC/:11640:0:99999:7:::usu2_proy1:$1$I0XDkjBq$SMpiTM1MsNYKEU6YXa6zW/:11640:0:99999:7:::usu_proy1:$1DkjBqMpiTM1MsNYKEU6YXa6zW/:11640:0:99999:7:::

El archivo /etc/gshadow.Es el análogo a /etc/shadow para el fichero de grupos /etc/group.

Linux ofrece al administrador comandos para gestionar las cuestiones de seguridad que atañen al uso adecuado de las contraseñas. Ver más adelante los comandos relacionados con el uso de contraseñas.

Los comandos su (switch user) y sudoUno de los principios fundamentales de seguridad en Linux es “use los privilegios mínimos indispensables para conseguir hacer el trabajo”. Linux ofrece la posibilidad de convertirnos en otro usuario durante la misma sesión de trabajo siempre que conozcamos su contraseña y, en consecuencia, establecer conexiones remotas a un equipo pudiendo tener bloqueada la entrada de root, u obtener privilegios de superusuario sin correr excesivos riesgos de seguridad. Para ello ejecutamos:

su [-] [opciones] [nombre_usuario]

Nota: Si esta acción se realiza como superusuario, no se pedirá ninguna contraseña para convertirse en el usuario, pero en caso contrario se solicita la clave correspondiente.

La opción “–“ permite obtener la configuración del entorno del usuario al que se cambia. (Sin ella, nos encontraremos todavía en nuestro propio entorno de sistema, utilizando nuestras variables de entorno, intérprete de comandos, editor por defecto, rutas y máscara de archivos). Si se omite el “nombre_usuario” se asume por defecto a root. Es posible usar la opción –c para

Pág. 14

Page 15: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 15

ejecutar únicamente un comando desde el nuevo usuario. Para salir y volver al usuario original teclear exit.

Aunque el uso de “su” mejora la seguridad de nuestro equipo, es preferible no entrar jamás como usuario root, especialmente si estamos conectados a Internet en una red, ya que mediante el uso de sniffers se pueden capturar contraseñas sin excesiva dificultad.

Para evitar la entrada como superusuario existe el comando sudo, que permite ejecutar programas como si fuésemos otro usuario. Su sintaxis simplificada es:

sudo [-u nombre_usuario] programa

Si no se indica el usuario se supone que es root.

El comando sudo otorga privilegios limitados de superusuario a usuarios específicos y para tareas concretas, efectúa un registro de la actividad y no es necesario dar la contraseña de root ya que los usuarios del comando usan sus propias contraseñas.

Ej. sudo 'cat /etc/shadow'# Ejecutaría como root el comando que muestra el contenido del fichero de solo lectura /etc/shadow.

Para poder utilizar los usuarios correspondientes, éstos deben estar incluidos en el archivo de configuración /etc/sudoers. Este puede editarse con el comando visudo. En general, si se quiere asignar a un usuario todos los privilegios de root hay que añadir en el fichero /etc/sudoers la línea:

usuario ALL=(ALL) ALL

Nota: Distribuciones como Ubuntu incluyen por defecto el no habilitar la cuenta de root, con lo que todas las tareas administrativas se deben realizar mediante sudo.

Para ver más detalles consultar la páginas del manual de sudo y sudoers.

Comandos relacionados con la gestión de contraseñasPASSWDPermite establecer y cambiar contraseñas.

Sintaxis:passwd [opciones] nombre_usuario

Permite, además, realizar determinadas tareas específicas de las contraseñas en sombra como se observa en algunas de sus opciones.

Nota: Una cuenta no se activará hasta que se le asocie una contraseña.

Opciones:–l Permite bloquear cuentas, esto es, desactivarlas temporalmente

Pág. 15

Page 16: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 16

–u Permite desbloquear cuentas, esto es, activarlas–x Determina el plazo máximo de validez de una contraseña–n Permite introducir un plazo de cambio de contraseña–w Determina el plazo de aviso–i Determina el máximo entre el vencimiento de la contraseña y el bloqueo de

la cuenta–e Hace expirar la contraseña en el primer inicio de sesión, obligando así al

usuario a cambiarla–S Permite ver la configuración de contraseña de un usuario

Nota: Otra forma de desactivar una cuenta es la inserciónde un cierre de exclamación al inicio del campo contraseña en el archivo /etc/shadow o la sustitución de la x del campo contraseña en el archivo /etc/passwd por un asterisco. También se puede quitar el interprete de comandos que tendría el usuario al iniciar la sesión, desactivando así la cuenta, con la orden:

usermod -s /bin/false usuario

CHAGEPermite modificar algunas opciones relativas a la contraseña de un usuario.

Sintaxis:chage [opciones] nombre_usuario

Opciones:

–m días Establece el mínimo número de días entre cambios de contraseña

–M días Configura el número máximo de días en que una clave de usuario es válida

–W días Establece el número de días en que se va a comenzar a advertir de la necesidad de cambiar la clave

–E fecha Establece la fecha en que la cuenta de usuario dejará de ser accesible

–l usuario Lista los valores actuales de la contraseña de usuario.

PWCONVPermite activar las contraseñas sombra para los usuarios del sistema.

Sintaxis:pwconv

PWUNCONVPermite desactivar las contraseñas sombra para los usuarios del sistema.

Sintaxis:pwunconv

Pág. 16

Page 17: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 17

Nota: Los comandos grpconv y grpunconv son análogos a éstos dos últimos pero aplicados a los grupos del sistema.

PWCKPermite comprobar la consistencia de los ficheros /etc/passwd y /etc/shadow.

Sintaxis:pwck [opciones] [passwd shadow]

Verifica aspectos como: número correcto de campos; único nombre de usuario; usuario y grupo válidos; grupo primario, directorio inicial y shell de conexión válidos.

Opciones:–r Ejecuta el comando en modo solo lectura. Esto significa que se responderá

“no” a todas las cuestiones que requieran cambios, sin la intervención del usuario

–s Ordena las entradas de los ficheros por UID. En este caso no tiene lugar ningún tipo de chequeo, solo se realiza la ordenación.

GRPCKPermite comprobar la consistencia de los ficheros de grupo /etc/group y /etc/gshadow.

Sintaxis:grpck [opciones] [group gshadow]

Verifica características similares la comando pwck: comprueba el número correcto de campos, un nombre de grupo único y una lista válida de miembros y administradores. Tiene también opciones similares.

Seguridad en el sistema de ficherosEl sistema de ficheros utilizado por Linux incluye implícito un control de seguridad que permite o restringe el acceso a los archivos y directorios del sistema.

Como ya comentamos en el tema de “Administración de ficheros”, los permisos permiten el acceso a archivos y comandos: existen unos bits que controlan los derechos de acceso a propietarios, grupos y otros usuarios del sistema y, para ellos, permisos de lectura, permisos de escritura y permisos de ejecución.

-rwxr-xr-x 2 pedro usus10503 Jan 1 13:44 resumen

Para realizar los cambios de permisos se utiliza el comando chmod. (Ver más adelante)

Nota: Recordad también que los directorios siempre deben tener activado el bit de ejecución, de lo contrario no funcionarán.

Pág. 17

Page 18: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 18

Además de estos, existen tres bits adicionales de permiso que permiten modificar las restricciones de acceso a los distintos ficheros y directorios. Son el bit de identificador de usuario (SETUID), el bit de identificador de grupo (SETGID) y el bit adosado o pegajoso (STICKY BIT). Estos permisos están relacionados con el permiso de ejecución de los archivos de programas.

El bit setuid se utiliza para permitir que un usuario que ejecuta un comando (un proceso) se convierta en el propietario de ese proceso durante la ejecución. Esto permite que usuarios sin permisos para modificar ciertos ficheros puedan hacerlo a través de un programa que tenga el bit setuid activado, y que realice esa modificación. (Para un directorio no tiene validez)

Ejemplos: passwd, login, mount, umount, lpr, lpq, lprm,...

Se utiliza el comando chmod para activar el setuid. Al activar el bit setuid al fichero se modifica la ‘x’ del permiso de ejecución por una ‘s’ (o una ‘S’ si no estuviera activado el permiso de ejecución).Por ejemplo:

$ chmod u+s resumen

-rwsr--r-x resumen

Lo mismo sucede con el bit setgid. Se utiliza para que durante la ejecución de un fichero el usuario que lo ejecuta tenga los mismos permisos que el grupo al que pertenece el fichero. Se sustituye el permiso de ejecución de grupo por una ‘s’ (o una ‘S’ si no estuviera activado el permiso de ejecución)Por ejemplo:

$ chmod g+s resumen

-rwsr-sr-- resumen

Cuando se añade el bit setgid a un directorio se consigue que los ficheros creados por un usuario en ese directorio pertenezcan al mismo grupo, propietario de ese directorio.

El sticky bit sirve para permitir el acceso a todos los usuarios del sistema. Al activarse se sustituye el permiso de ejecución de los “otros” por una ‘t’ (o una ‘T’ si no estuviera activado el permiso de ejecución).Por ejemplo:

$ chmod o+t resumen

-rwsr--r-t resumen

Generalmente esta operación se realiza sobre directorios que deseamos que sean de dominio público, al que todos los usuarios del sistema tengan acceso. Si se activa en un directorio significa que un archivo incluido en ese directorio sólo puede ser eliminado por el propietario del archivo, el propietario del directorio o root. (Siempre que los demás permisos lo permitan)

Pág. 18

Page 19: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 19

Se utiliza en directorios públicos (con todos los permisos activados) para prevenir que nadie borre los archivos que no son suyos. Un ejemplo de esto es el directorio /tmp que debe tener acceso de lectura y escritura para todo el mundo, pero no interesa que los usuarios o los procesos eliminen archivos temporales que no les pertenecen.

Si se activa el sticky bit a un archivo ejecutable significa que cuando este programa se ejecuta guarda una copia del programa en ejecución, en la partición swap (aunque este haya terminado). Esto permite ejecutar un programa con mayor rapidez pues no tiene que arrancarse de nuevo si alguien lo ejecuta. Es útil para programas que se ejecutan con frecuencia. (Aunque las implementaciones actuales no tienen en cuenta este hecho)

Nota: Si no están activos los permisos de ejecución (lo que puede observarse por la presencia de las letras mayúsculas en los permisos) los bits adicionales correspondientes no tienen ningún efecto, al impedirlo los permisos correspondientes.

Para representar los permisos t y s en el sistema binario se utilizan tres bits adicionales: el primero para s en el dueño, el segundo para s en el grupo y el tercero para t. Estos se colocan al inicio de la cadena numérica de nueve bits de los permisos ordinarios. En la cadena de caracteres se mezclan con el permiso de ejecución y de ahí la necesidad de emplear las mayúsculas y minúsculas.

Ejemplos: rws rwS r-- = 110 111 110 100 (6764 en octal) rwx rws –wT = 011 111 111 010 (3772 en octal)

Comandos de manipulación de permisosCHMODPermite cambiar los permisos de un recurso.

Sintaxis:chmod [opciones] modo-absoluto fichero(s)chmod [opciones] modo-simbólico fichero(s)

Opciones:–v Aporta información detallada–R Se aplica a un directorio y sus contenidos, recursivamente.

En el modo absoluto se usa la representación octal de los permisos y se cambian todos los permisos a la vez.El modo simbólico sigue el formato:

chmod [clase-usuario] [+|-|=] permisos fichero(s)donde:

Pág. 19

Page 20: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 20

Clases de usuario a--> Todos (valor por defecto cuando se omite)u--> usuario (propietario)g--> grupoo--> otros

Permisos r--> Permiso de lectura.w--> Permiso de escritura.x--> Permiso de ejecución.

El simbolo “+” sirve para añadir permisos y el símbolo “-” para quitar permisos. La igualdad sirve para asignar unos permisos dados (como la forma absoluta pero con caracteres o símbolos)

Ejemplos:

chmod u+x clase.txt # añade el permiso de ejecución al dueñochmod g=rx program.sh # asigna exactamente los permisos de lectura y

ejecución al grupochmod go-w profile # elimina el permiso de escritura en el grupo y en

otroschmod a+r,o-x *.ts # adiciona el permiso de lectura para todos los

usuarios y elimina el de ejecución para otroschmod +t tmp/ # adiciona el permiso especial tchmod 755 /home/pepe/doc/

# asigna los permisos con representación octal 755 (rwxr-xr-x)

chmod -R o+r apps/ # adiciona el permiso de lectura a otros para un directorio de forma recursiva (incluyendo todo su contenido)

chmod +x ./bin/* # adiciona el permiso de ejecución a todos los usuarios que les corresponde por defecto

chmod 4511 /usr/bin/passwd

# asigna los permisos con representación octal 4511 (r-s—x--x)

chmod g=u archivo # asigna a los usuarios del grupo los mismos permisos que tiene el dueño

chmod go= archivo # elimina todos los permisos del grupo y de los otros usuarios

CHOWNPermite cambiar el propietario a un fichero o grupo de ficheros.

Sintaxis:chown [opciones] nuevo-propietario fichero(s)

Nota: Esta orden solo puede ser ejecutada por root o por el propietario de los ficheros que se van a ceder al nuevo propietario.

En nuevo-propietario puede usarse la notación usuario:grupo para cambiar el propietario y el grupo propietario simultáneamente.

Opciones:–v Obtiene información detallada

Pág. 20

Page 21: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 21

–R Realiza la operación recursivamente en todos los archivos y subdirectorios

--from usu1 usu2

Transfiere la propiedad de los ficheros de un usuario a otro.

Ejemplo:chown luis *.bat # Cede todos los ficheros *.bat a luis

CHGRPPermite cambiar el grupo a un fichero o conjunto de ficheros.

Sintaxis:chgrp nuevo-grupo fichero(s)

Nota: Para realizar estos cambios los ficheros nos deben pertenecer (o ser root, por supuesto) y debemos pertenecer también al nuevo-grupo.

Ejemplo:chgrp usuarios agenda pruebas# Cambia los ficheros agenda y pruebas al grupo usuarios

UMASKPermite determinar qué permisos se asociarán por defecto a los ficheros o directorios creados.

Sintaxis:umask [-S] mascara

La opción S muestra el complemento de la máscara en formato de caracteres; mascara es la máscara de permisos de cada usuario. Si no se especifica se muestra la máscara actual en formato numérico.

Para entender esta orden hay que tener en cuenta que cada usuario posee una máscara de permisos. Esta máscara, expresada en notación octal, indica qué permisos no se desea que tenga el recurso creado. Por defecto, la máscara de root es 022 y la máscara de los demás usuarios suele ser 002 o 022.

En la implementación actual, la orden umask realiza una operación de OR exclusivo, XOR, con el valor 666 cuando se crea un fichero ordinario, y con el valor 777 para los directorios. Así, para calcular los permisos totales para un usuario que tiene la máscara 022, se hace la siguiente operación por parte del sistema:

Ficheros = totales_para_ficheros - máscara = 666 - 022 = 644 = -rw-r--r--

Directorios = totales_para_directorios - máscara = 777 - 022 = 755 = drwxr-xr-x

Algunos valores comunes de umask son:

Valor Usuario Grupo Otros0002 Todos Todos Leer y ejecutar

Pág. 21

Page 22: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 22

0022 Todos Leer y ejecutar Leer y ejecutar0007 Todos Todos Ninguno0077 Todos Ninguno Ninguno

Ejemplos:

umask # sin argumentos muestra la máscara actual en formato numéricoumask –S # muestra el complemento de la máscara en formato de caracteresumask -S 037 # asigna la máscara 037 (niega permisos de ejecución y de escritura

para el grupo, y todos los permisos para el resto de los usuarios). Se muestra el resultado en formato de caracteres

umask g=rx,o= # especifica el complemento la máscara utilizando el formato de caracteres

umask 077 #Esta máscara se usa para ser bien restrictivos: los nuevos directorios tendrán el permiso: 700 = drwx------ y los nuevos ficheros tendrán el permiso: 600 = -rw-------

Imprimir bajo Linux.

La forma más simple (con mucho) de imprimir en el sistema operativo Linux es enviar el fichero a ser impreso directamente al dispositivo de impresión. Una manera de hacer esto es usar el comando cat.

# cat fichero > /dev/lp0

Este método no aprovecha las capacidades multitarea de Linux. En una impresora lenta (como casi todas), en una apagada o sin papel el trabajo puede prolongarse un poco. Además, por motivos de seguridad, sólo el usuario root y los usuarios de su mismo grupo como el demonio de impresión son capaces de escribir directamente a la impresora.

Una solución mejor es utilizar una cola de impresión (spool). Este método consiste en guardar los datos a imprimir en un fichero temporal y que un proceso en segundo plano se dedique a gestionar la impresión enviando los trabajos a la impresora.

Así funciona Linux:• Para cada impresora se define una cola de impresión.• Un proceso en segundo plano (llamado demonio de impresión) explora y

analiza constantemente las colas de impresión, buscando nuevos datos a imprimir.

• Cuando en una cola de impresión llegan más de un fichero el demonio gestiona los datos y son enviados a la impresora según el orden de llegada.

Este sistema de impresión se denomina spooling. Existen diferentes implementaciones de spooling como son LPD, LPRng, CPS, CUPS, etc. Pasemos a comentar algunos de ellos.

Pág. 22

Page 23: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 23

LPD (Line Printer Daemon)Es el sistema clásico de impresión por spooling bajo Linux. Proviene de UNIX BSD.

Basicamente, la impresión en este sistema consta de tres pasos:1. Se crea una archivo en la cola el cual contiene los datos a imprimir. A la par

de éste se crea otro archivo de control, en el mismo directorio. 2. El archivo que contiene los datos es tratado por un filtro de impresion, este

filtro esta identificado por el archivo de control. El filtro es encargado de generar la impresión, para el tipo de impresora que se configuró.

3. El trabajo es impreso, o sea el archivo que creó el filtro es mandado al dispositivo de impresión, a través de la cola de impresión, bajo la supervisión del demonio de impresión.

El demonio lpd y el software de impresiónComo se observa por lo dicho anteriormente, para imprimir en este sistema es necesario:a) Que esté funcionando el proceso que atiende los trabajos de impresión. Este

proceso (demonio) se llama lpd y debería arrancarse durante el inicio de la máquina. Si por alguna razón el sistema no carga este proceso en el arranque puede iniciarse manualmente utilizando el script:

# /etc/init.d/lpd start

Nota: Normalmente los trabajos de impresión y sus respectivos archivos de control se guardan en el directorio /var/spool/lpd

b) Además del demonio, también es necesario que la máquina tenga instalado determinado “software de impresión” que aporte los drivers y/o filtros de las impresoras soportadas bajo Linux. Éstos pueden venir como paquetes de la misma distribución, en herramientas de configuración como aspfilter, magicfilter, printtool, etc. o, en su defecto, pueden obtenerse a través de proyectos que ofrecen drivers para la mayoría de sistemas de impresión de Linux como:• Foomatic (http://www.linuxprinting.org)• Gimp-Print (http://gimp-print.sourceforge.net)• HP Linux Printing Project (http://hpinkjet.sourceforge.net)

El fichero /etc/printcapEs el archivo que contiene toda la información de configuración de la impresora o impresoras de nuestro sistema.Este archivo tiene un bloque para cada impresora instalada en nuestra máquina (que no tiene porque estar instalada físicamente, ya que puede ser una impresora de la red Linux). Cada bloque, tiene una serie de campos separados por el carácter :, donde cada campo especifica una característica de la impresora. En teoría, todos los campos deberían ir en la misma línea, pero se

Pág. 23

Page 24: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 24

pueden usar varias líneas indicándolo con el carácter \. (Para ver el significado de cada campo consultar man printcap)

Ejemplo: /etc/printcap para una máquina con una sóla impresora:

lp|canon:\:sd=/var/spool/lpd/lp:\:mx=0:\:sh:\:lp=/dev/lp1:\:if=/var/spool/lpd/lp/filter:

Nota: Normalmente, los filtros o utilidades de impresión crean automáticamente

las entradas en este archivo por lo que no suele ser necesario modificarlo manualmente.

Comandos BSD relacionados con la gestión de impresiónEl sistema de impresión tradicional de Linux consta de varios comandos que comentamos a continuación.

LPREsta orden se usa para imprimir un fichero. Más concretamente, para enviar trabajos a la cola de impresión

Sintaxis:lpr [opciones] [nombre_fichero ... ]

La función del comando lpr se reduce a copiar el archivo a imprimir en un cierto directorio (directorio de spool o de gestión de colas de impresión). A partir de ese momento el control de impresión pasa al proceso demonio que recogerá la petición.

Si no se especifica un nombre de fichero, lpr asume que la entrada será efectuada por la entrada estándar (normalmente el teclado o la salida de otro programa). Esto permite que el usuario redirija la salida de un programa al dispositivo de impresión.

Opciones:

-Pimpresora Especifica la impresora a usar.-h Suprime la impresión de la página.-s Crea un enlace simbólico en lugar de copiar el fichero completo al

directorio de spooling (útil para ficheros grandes)-#num Especifica el número de copias a imprimir.

Nota: Por defecto, los comandos trabajan con una impresora llamada lp. La variable de entorno PRINTER puede modificarse para utilizar otra impresora como predeterminada.

Ejemplos:

$ cat fichero.txt | lpr

Un ejemplo de interacción con lpr podría ser algo como

Pág. 24

Page 25: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 25

$ lpr -#2 –s -PEpson prueba.txt

Este comando crearía un enlace simbólico al fichero prueba.txt en el directorio de spool de la impresora llamada Epson, donde debería ser procesado por lpd. Además debería imprimir una segunda copia de prueba.txt.

LPQPermite consultar los trabajos que están actualmente en una cola de impresión particular.

Sintaxis:lpq [opciones] [nº trabajo ... ] [usuario ... ]

Opciones:

-Pimpresora Especifica la impresora a usar.-l Informa de todos los ficheros que comprenden el trabajo a ser impreso.-a Informa de la cola local de todas las impresoras, mas que de la

especificada.

Ejemplo:El siguiente ejemplo muestra los trabajos de la impresora Epson propiedad del usuario asm13:

$ lpq –PEpson asm13lp is ready and printingRank Owner Job Files Total Sizeactive asm13 31 prueba.txt 682048 bytes

LPRMElimina los trabajos de la cola de impresión.

Sintaxis:lprm [opciones] [nºtrabajo, ...]

Opciones:

–Pimpresora Especifica la impresora a usar.– Elimina todos los trabajos del usuario que ejecuta la orden y de todas

las impresoras. Si lo ejecuta root elimina toda la cola a no ser que se especifique el nombre de algún usuario.

Ejemplos:

$ lprm 31

Cancelaría el trabajo 31 (prueba.txt) en la impresora por defecto.

Nota: El número del trabajo puede obtenerse ejecutando el comando lpq.

$ lprm -

Pág. 25

Page 26: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 26

Cancelaría todos tus trabajos; si eres root cancelaría todos los trabajos de todos los usuarios.

Nota: En teoría, no se pueden cancelar trabajos si la impresión ya ha comenzado. Para ello se puede utilizar la orden kill.

LPCPermite administrar los trabajos de las impresoras deseadas.

Sintaxis:lpc [opciones] [comando] [impresora]

Si se utiliza sólo, muestra un subshell con el inductor lpc>

Comandos:

abort [impresora] Termina el programa demonio y desactiva la impresoradefaults Lista los valores por defecto en la configuración de

impresorasdisable [impresora] Desactiva las colas de impresión. No se admiten trabajosdown [impresora] Desactiva la impresión y las colas de impresiónenable [impresora] Activa las colas de impresión. Se admiten trabajosexit o quit Sale de lpchelp Muestra descripción de las órdeneskill [impresora] Es equivalente a usar el comando abort seguido del

comando Staraclient [impresora] Muestra información sobre la configuración del clientelpd [impresora] Determina si el demonio de impresión está en marchalpq [impresora] Ejecuta el comando lpq dentro de lpclprm [impresora] Ejecuta el comando lprm dentro de lpcserver [impresora] Muestra información sobre las impresoras y su utilizaciónstart [impresora] Inicia un nuevo demonio de impresiónstatus [impresora] Muestra información del demonio y de las colas de

impresión localesstop [impresora] Para el demonio tras acabar el trabajo en curso,

desactivando los servicios de impresióntopq [impresora] [tarea]

Coloca una tarea de impresión la primera de la cola de la impresora correspondiente

up [impresora] Activa la impresión y las colas de impresión

Nota: Si se desea que los comandos afecten a todas las impresoras del sistema, se debe utilizar all en el campo [impresora].

LPRngEs una implementación posterior de LPD con mejoras en diferentes aspectos. Los comandos que emplea son prácticamente los mismos. No los trataremos aquí.

CUPS (Common UNIX Printing System)

Pág. 26

Page 27: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 27

Se trata de un sistema de spooling moderno. Como el nombre indica, el objetivo del mismo es proporcionar un sistema de impresión común a todos los sistemas UNIX. Así, existen tanto el servidor como clientes para CUPS en casi todos los UNIX disponibles, incluido por supuesto Linux, e incluso hay clientes para Windows.

Una de las bases y, a la vez puntos fuertes, de CUPS es el protocolo que usa, IPP (Internet Printing Protocol). Este protocolo es una extensión del protocolo HTTP, lo que quiere decir que se puede usar fácilmente en entornos de red de lo más heterogéneos. Aparte, incluye todas las características que se podrían desear en un sistema de impresión moderno: listas de acceso, autenticación, cuotas, servicios de directorio y encriptación.

La estructura general de CUPS no es muy diferente de la del sistema LPD tradicional. Puede considerarse como dividida en tres etapas:1. Hay un planificador (scheduler) que distribuye los trabajos de impresión,

procesa los comandos de administración, proporciona información del estado de las impresoras y sus trabajos a los programas que la solicitan, e informa a los usuarios según hace falta.

Nota: Este planificador o demonio es cupsd y aunque normalmente se iniciará con el sistema puede arrancarse manualmente haciendo uso del script (para Debian):

# /etc/init.d/cupsys start

Como diferencia respecto al método tradicional, destacar que, como ya se dijo, la comunicación entre clientes y planificador o servidor de CUPS se basa en el protocolo IPP: el servidor procesa las solicitudes que los clientes realizan mediante peticiones POST, y además actúa como servidor web para suministrar documentación sobre el sistema, y capacidades de administración y monitorización.

2. En una segunda etapa se convierte el trabajo que envian los clientes a un lenguaje que pueda entender la impresora. Para eso se usan filtros: éstos traducen los trabajos de impresión que se envían a CUPS (que pueden ser HTML, PDF, Postscript, texto plano, imágenes, etc) al lenguaje propio de la impresora (PCL, Postcript, etc.). Estos filtros usan a su vez unos ficheros que describen las características de la impresora, los PPDs (Postcript Printer Description). Se trata de archivos de texto1 que contienen descripciones de las impresoras, comandos específicos de ellas y filtros. Hay uno para cada impresora o familia de impresoras. Los archivos PPDs de las impresoras instaladas se encuentran en el directorio /etc/cups/ppd.

Nota: Los ficheros PPDs son usados, además, por muchas aplicaciones para conocer las capacidades de la impresora y facilitar su configuración. Pueden obtenerse directamente del fabricante o del sitio:

http://www.linuxprinting.org/download/PPD/

1 Puede echarse un vistazo al directorio “/usr/share/cups/model”

Pág. 27

Page 28: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 28

3. Finalmente, CUPS se comunica directamente con la impresora, a nivel hardware. Esto se hace a través de backends: para puerto paralelo o USB, por ejemplo. También se pueden utilizar impresoras que están conectadas por red, para lo que se usan los protocolos LPD, IPP o SMB (para imprimir en impresoras Windows), entre otros.

Nota: Ésta es una de las grandes mejoras de CUPS, ya que tradicionalmente, la impresión por red era algo complicado de configurar. (Con este software se incluye, además, un sistema de descubrimiento de impresoras, que permite instalar impresoras disponibles en red de una manera fácil y cómoda).

Además de los conceptos generales relacionados con los sistemas de spooling (impresoras, colas de impresión, trabajos, etc.), CUPS introduce un concepto nuevo: las clases de impresión. Éstas son grupos de impresoras que se presentan al usuario como si fueran una sola impresora. La diferencia es que CUPS recoge los trabajos que se envían a una clase y los asigna a las impresoras que estén libres. Se trata de algo así como un cluster de impresoras. Esto es un elemento deseable en entornos en los que haya una gran demanda de impresión, ya que podemos añadir varias impresoras a una clase y que sea CUPS quien reparta los trabajos entre ellas. (En caso de necesitar más rendimiento, solo hay que ir añadiendo impresoras a la clase hasta cubrir las necesidades que se tengan)

CUPS ofrece un interfaz de configuración a través de la web. El puerto por defecto es el 631, de modo que podemos acceder a él tecleando en la barra de direcciones de nuestro navegador favorito la dirección:

http://localhost:631/

Desde dicho interfaz es muy fácil e intuitivo realizar todas las labores de administración necesarias: añadir y/o eliminar impresoras, definir clases de impresoras, detener o reiniciar la impresión, configurar las opciones de las impresoras, gestionar los trabajos de las colas de impresión, etc.

Nota: Además del interfaz web pueden usarse, igualmente, otras herramientas gráficas de administración como: XPP (X Printing Panel), kprinter (Administrador de impresión de KDE), foomatic-gui (Herramienta de configuración de impresoras de GNOME), etc., y, como no, comandos en modo texto como los que se describen en la siguiente sección.

Comandos CUPS relacionados con la administración de impresión

LPADMINConfigura las impresoras y clases cups.

Sintaxis:lpadmin [–E] [–h servidor] –d destinolpadmin [–E] [–h servidor] –p impresora [opcion(es)]lpadmin [–E] [–h servidor] –x destino

Pág. 28

Page 29: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 29

La primera forma del comando pone como clase o impresora predeterminada a destino.La segunda forma configura la impresora especificada. Las opciones adicionales se describen a continuación. La última forma borra la clase o impresora destino.

Nota: Cuando se usa la opción –E antes de las opciones –d, –p o –x, hace que se use encriptación en la conexión con el servidor.

Opciones:

–c clase Añade la impresora especificada a la clase. Si la clase no existe, se crea automáticamente.

–m modelo Establece un script de interfaz estándar System V o un archivo PPD.–o nombre=valor

Establece una opción del servidor o PPD para la impresora

–r clase Elimina la impresora especificada de la clase–v uri-dispositivo Establece el abributo de uri-dispositivo, esto es, del tipo

“protocolo:localización” de la cola de impresión (Si se trata de un archivo automáticamente es convertido a la forma file:/nombre/archivo)

–D info Proporciona una descripción de la impresora–E Activa la impresora y hace que acepte trabajos–L ubicación Proporciona una ubicación a la impresora–P archivo-ppd Especifica un archivo de descripción de impresora Postcript (PPD)

para usar con la impresora.

Ejemplos:

lpadmin -p laserjet4 -c mis_impresoras/* Añade la impresora laserjet4 a la clase mis_impresoras */

lpadmin -x laserjet4/* Elimina la impresora laserjet4 */

LPSTATPermite ver el estado de una o varias impresoras.

Sintaxis:lpstat [opciones]

Opciones:

–E Hace que se use encriptación en la comunicación con el servidor–a [impresora(s)] Muestra el estado de aceptación de las colas de las impresoras–c [clase(s)] Muestra las clases de impresoras y las impresoras que pertenecen a

ellas–h servidor Especifica el servidor CUPS con el que se comunicará–p [impresoras] Muestra las impresoras y si están activas para imprimir–s Muestra un resumen de estado–t Muestra toda la información de estado.

Pág. 29

Page 30: Tema 2 - Administración en Linux

ADMINISTRACIÓN EN LINUX 30

–u [usuario(s)] Muestra los trabajos de los usuarios especificados.–v [impresoras] Muestra las impresoras y los dispositivos a los que están conectados

LPINFOMuestra información sobre los controladores o dispositivos instalados en el sistema.

Sintaxis:lpinfo [opciones]

Opciones:

–E Hace que se use encriptación en la comunicación con el servidor–l Muestra un listado “amplio” de dispositivos o controladores–m Muestra los controladores de impresoras disponibles en el sistema.–v Muestra los dispositivos de impresoras disponibles en el sistema.

LPOPTIONSVisualiza o establece las opciones de las impresoras y los valores predeterminados.

Sintaxis:lpoptions [opciones]

Opciones:

–E Hace que se use encriptación en la comunicación con el servidor–d destino Establece que destino sea la impresora predeterminada–h servidor Especifica el servidor CUPS con el que se va a comunicar–l Lista las opciones especificas de la impresora y sus valores actuales–o opción=valor Establece una nueva opción para el destino especificado–x destino Elimina la opción del destino especificado

Nota: A pesar de que el sistema que proporciona CUPS sea mejor que el LPD tradicional, sigue habiendo muchos programas que usan este último, por lo que CUPS proporciona una serie de librerias para poder usar los comandos BSD de los sistemas tradicionales como LPD y LPRng: lpr, lpq, lprm, etc. En Debian, el paquete de compatibilidad se llama cupsys-bsd.

Pág. 30