You are on page 1of 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
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 sistema


Password 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 Una cadena que describe al usuario. Puede tener cualquier valor, como el
ón del nombre propio, teléfono, oficina…
usuario 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.
Directori Camino absoluto del directorio HOME o directorio de trabajo del usuario.
o HOME
Shell Intérprete de comandos que utilizará el usuario

Ejemplo:

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

Pág. 2
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 grupo


Contraseñ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 Lista con los login de usuario que tienen este grupo como grupo
que pertenecen al secundario (aunque para los grupos del sistema, es decir, los
grupo 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,luis
bin:x:1:bin
jorge:x:500:
pepe:x:501:luis,jorge
luis:x:502:pepe,jorge
grupo_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
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 Maildir
MAIL_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 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN5
PASS_WARN_AGE 7

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

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

Pág. 4
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 grupos


Los comandos que vienen a continuación, sólo pueden ser ejecutados por root.

USERADD
Crear 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 Contiene una lista con el resto de grupos a los que pertenece el
grupos_secundario usuario (separados por comas). Los grupos indicados en este
s campo deben existir en el sistema.

Pág. 5
ADMINISTRACIÓN EN LINUX 6

–s Tipo de shell con el que se conecta del usuario.


shell_por_defecto
–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

ADDUSER
Permite 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
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.

USERMOD
Permite 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 Cambia los grupos secundarios a los que pertenece el usuario.
secundarios 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
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

CHSH
Permite 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

USERDEL
Borrar 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
ADMINISTRACIÓN EN LINUX 9

Login:root
$cd /home
$ls
usuario1 ...
usuario2 periquito_palotes
$ userdel -r periquito
$ls
usuario1
usuario2
....

GROUPADD
Sirve 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).*/

GROUPMOD
Modifica 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
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 usuario
login: usuario
$ touch fich1 fich2
$ ls
rwxrwxrwx usuario pru …………….. fich1
rwxrwxrwx 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
$ls
rwxrwxrwx usuario 505 …………….. fich1
rwxrwxrwx 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 usuario2
login: usuario2
$ touch fich1 fich2
$ ls
rwxrwxrwx usuario2 pru2 …………….. fich1
rwxrwxrwx usuario2 pru2 …………….. fich2

$ su - root
$groupmod –n pruebas2 pru2
login:usuario2
$ls
rwxrwxrwx usuario pruebas2 …………….. fich1
rwxrwxrwx usuario pruebas2 …………….. fich2

GROUPDEL
Borrar grupos

Sintaxis:
groupdel nombre_grupo

Pág. 10
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 {} \;

GROUPS
Para 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 rosa
rosa: usuarios_proy4 root usuarios

ID
Permite 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
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 sistema


La 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
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 usuario


contraseñ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
ADMINISTRACIÓN EN LINUX 14

plazo Plazo recomendado para cambiar la contraseña


máximo Plazo máximo para cambiar la contraseña
aviso Diás en que se avisa antes de que la contraseña expire
expirado Días que lleva la cuenta desactivada
deshabilita Días que lleva la cuenta desactivada (desde 1/1/1970)
do
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 sudo


Uno 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
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ñas


PASSWD
Permite 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
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

CHAGE
Permite 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.

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

Sintaxis:
pwconv

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

Sintaxis:
pwunconv

Pág. 16
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.

PWCK
Permite 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.

GRPCK
Permite 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 ficheros


El 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
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
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 permisos


CHMOD
Permite 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
ADMINISTRACIÓN EN LINUX 20

Clases de usuario a--> Todos (valor por defecto cuando se


omite)
u--> usuario (propietario)
g--> grupo
o--> 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ño


chmod g=rx program.sh # asigna exactamente los permisos de lectura y
ejecución al grupo
chmod go-w profile # elimina el permiso de escritura en el grupo y en
otros
chmod a+r,o-x *.ts # adiciona el permiso de lectura para todos los
usuarios y elimina el de ejecución para otros
chmod +t tmp/ # adiciona el permiso especial t
chmod 755 # asigna los permisos con representación octal 755
/home/pepe/doc/ (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 # asigna los permisos con representación octal 4511
/usr/bin/passwd (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

CHOWN
Permite 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
ADMINISTRACIÓN EN LINUX 21

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


subdirectorios
--from usu1 Transfiere la propiedad de los ficheros de un usuario a otro.
usu2

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

CHGRP
Permite 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

UMASK
Permite 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 Otros


0002 Todos Todos Leer y ejecutar

Pág. 21
ADMINISTRACIÓN EN LINUX 22

0022 Todos Leer y ejecutar Leer y ejecutar


0007 Todos Todos Ninguno
0077 Todos Ninguno Ninguno

Ejemplos:

umask # sin argumentos muestra la máscara actual en formato numérico


umask –S # muestra el complemento de la máscara en formato de caracteres
umask -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
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ón


Como 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/printcap
Es 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
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ón


El sistema de impresión tradicional de Linux consta de varios comandos que
comentamos a continuación.

LPR
Esta 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
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.

LPQ
Permite 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 asm13
lp is ready and printing
Rank Owner Job Files Total Size
active asm13 31 prueba.txt 682048 bytes

LPRM
Elimina 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
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.

LPC
Permite 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 impresora


defaults Lista los valores por defecto en la configuración de
impresoras
disable [impresora] Desactiva las colas de impresión. No se admiten trabajos
down [impresora] Desactiva la impresión y las colas de impresión
enable [impresora] Activa las colas de impresión. Se admiten trabajos
exit o quit Sale de lpc
help Muestra descripción de las órdenes
kill [impresora] Es equivalente a usar el comando abort seguido del
comando Stara
client [impresora] Muestra información sobre la configuración del cliente
lpd [impresora] Determina si el demonio de impresión está en marcha
lpq [impresora] Ejecuta el comando lpq dentro de lpc
lprm [impresora] Ejecuta el comando lprm dentro de lpc
server [impresora] Muestra información sobre las impresoras y su utilización
start [impresora] Inicia un nuevo demonio de impresión
status [impresora] Muestra información del demonio y de las colas de
impresión locales
stop [impresora] Para el demonio tras acabar el trabajo en curso,
desactivando los servicios de impresión
topq [impresora] Coloca una tarea de impresión la primera de la cola de la
[tarea] 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].

LPRng
Es 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
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
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

LPADMIN
Configura las impresoras y clases cups.

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

Pág. 28
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 Establece una opción del servidor o PPD para la impresora
nombre=valor
–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 */

LPSTAT
Permite 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
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

LPINFO
Muestra 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.

LPOPTIONS
Visualiza 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

You might also like