martes, 5 de mayo de 2009

PAM...

PAM es un conjunto de librerías que permite tener mas control sobre como se inicia sesión en ciertas aplicaciones y cómo se manejan las credenciales del usuario.

PAM también es una API, no cualquier aplicación puede ejecutar PAM. Las aplicaciones deben estar construidas para poder tener acceso a estas librerías.

Las librerias se dividen en 4 modulos:
  • account
    Este verifica una serie de pólizas de usuarios
  • auth
    Este verifica que el usuario sea realmente quien dice ser
  • password
    Esta se encarga de manejar la contraseña, cuantas veces puede tratarse una contraseña errónea, comprobar que tan fuerte es, o si se mantiene
  • session
    Este se encarga de hacer tareas que se ejecutan antes de iniciar sesión y después de esto
En /etc/pam.d están los archivos de las aplicaciones compatibles con PAM.

lunes, 4 de mayo de 2009

Quotas

Las quotas no son complejas. Para poder manejarlas primero hay que activarlas en /etc/fstab agregando las opciones usrquota y grpquota a las opciones de montaje.

Hay que reiniciar (o volver a montar la partición, lo que sea mas fácil) y crear un nuevo archivo de configuración de quota con:

quotacheck -cugm
Esto verifica que el archivo de configuración sea correcto (-c) para usuarios (-u) y para grupos (-g) y no trata de volver a montar el sistema de archivos (-m). Si no existen archivos de configuración de quota los crea.

Para agregar una nueva quota se usa el comando:
edquota (nombre de usuario)
Aparecerán 7 columnas:
  • Sistema de archivos: Indica en que sistema de archivos esta la quota
  • Bloques: Indica la cantidad de espacio usado en KB (¿por qué en KB?)
  • Soft: Cantidad de espacio que puede abarcar un usuario, después de esta, se le envía un mensaje de que ha superado su quota
  • Hard: Cantidad de espacio total que puede abarcar un usuario, cuando se llega a este, el usuario ya no puede abarcar mas espacio en disco
  • Inodes: Cantidad de archivos que puede tener un usuario
  • Soft: Cantidad de archivos que puede abarcar un usuario, después de esta, se le envía un mensaje de que ha superado su quota
  • Hard: Cantidad de archivos total que puede abarcar un usuario, cuando se llega a este, el usuario ya no puede abarcar mas espacio en disco
Para configurar cuanto tiempo puede estar un usuario en su límite soft se usa el comando edquota -t

Seguridad de su y sudo, modo psicópata

Su y sudo son herramientas que ayudan a poder administrar el sistema sin tener que iniciar sesión como super administrador.

Con el comando visudo, se puede editar las configuraciones de sudo y limitar el acceso a este comando u otorgarlo. Este archivo ya es viejo y ya se como configurarlo.

El nuevo es /etc/pam.d/su que ¡permite limitar el acceso a su! (y también facilitarlo). Pero como soy un psicópata de la seguridad lo agregando la siguiente línea:
auth required pam_wheel.so use_uid

En Red Hat Enterprise Linux 5 viene comentada de fabrica, y simplemente es borrar el # al inicio de la línea.

domingo, 3 de mayo de 2009

Editar usuarios...

Voy a obviar los comandos vipw, useradd, usermod y el editor en GUI system-config-users que son sencillos e intuitivos (dentro de lo que cabe). Cualquier amigo de una terminal Unix puede manejar estas herramientas de manera sencilla.

Lo que no me saltare, sera el archivo /etc/shadow ya que este es un poco mas críptico que otros archivos de configuración.

Para modificar este archivo existe la herramienta chage, que igual es poco intuitiva... Tiene las siguientes opciones:
  • -m
    Enumera la cantidad de días mínima que un usuario debe guardar su contraseña
  • -M
    Enumera la cantidad de días máxima que pueden pasar antes de que la contraseña caduque
  • -W
    Enumera la cantidad de días antes de días antes de que el usuario caduque en el cual se da un aviso
  • -I
    Número de días después de que la contraseña caduca que la cuenta se vuelve inactiva
  • -e
    Número de días después de que la contraseña caduca para que la cuenta expire
En el archivo /usr/passwd estos son los campos del 4 al 8 respectivamente.

viernes, 1 de mayo de 2009

Capítulo 5: Administración de paquetes

  1. ¿Qué comando usarías para instalar el paquete penguin-3.26.i386.rpm con mensajes de error extra?
    R=rpm -Uhvv penguin-3.26.i386.rpm
  2. ¿Qué comando usarías para actualizar penguin al paquete penguin-3.27.i386.rpm? El paquete esta en el servidor ftp.remotemj02.abc
    R=rpm -Uhv ftp://ftp.remotemj02.abc/penguin-3.27.i386.rpm
  3. Si acabas de descargar el paquete kernel-2.6.19.el5.i386.rpm ¿cuál es la mejor manera de hacerlo parte de tu sistema?
    R=rpm -ihv kernel-2.6.19.el5.i386.rpm
  4. ¿Qué comando lista todos los RPMs instalados en el sistema? ¿qué tal de los paquetes originales del sistema?
    R=rpm -qa
  5. Supón que esta instalado el paquete rpm-build. Cuando instalas un sRPM ¿En qué directorio y subdirectorios se instalan los archivos?
    R=En /usr/src/redhat/*
  6. Si descargaste un RPM de un repositorio de terceros y es llamado third.i386.rpm ¿cómo validarías el paquete con su firma digital?
    R=rpm -qpi third.i386.rpm
  7. Si quieres actualizaciones oficiales para Red Hat Enterprise Linux, ¿a qué lugar lo conectarías?
    R=A la Red Hat Network
  8. Nombra al menos dos herramientas que te pueden ayudar a instalar actualizaciones de la Red Hat Network
    R=yum y pup
  9. ¿Qué comando yum instala la ultima versión del kernel?
    R=yum update kernel
  10. Estas usando el Kickstar Configurator para crear un archivo ks.cfg para varias computadoras. ¿Interpreta la siguiente directiva?
    part /var --size 1000 --grow yes
    R=Sirve para crear una nueva partición que sera expandible, medira inicialmente 1000MB y alojara la carpeta /var
  11. Si tu archivo de instalación kickstart esta en el CD y arrancas desde una USB ¿Qué escribirías en la línea de comandos boot: para ejecutar ese archivo?
    R=ks cd:/ks.cfg
  12. Si tu archivo de instalación kickstart esta en el la partición /dev/hda7, en el directorio raíz y arrancas desde una USB ¿Qué escribirías en la línea de comandos boot: para ejecutar ese archivo?
    R=ks hd:hda7:/ks.cfg
4 incorrectas de 12:
  • 4. Realmente no esta incorrecta, solo falta agregar que en el archivo /root/install.log estan listados los paquetes instalados originalmente.
  • 6. Se usa el comando rpm -V o rpm --checksign
  • 11. Se usa el comando linux ks=cdrom:/ks.cfg
  • 12. Se usa el comando linux ks=hd:sda7:/ks.cfg

martes, 28 de abril de 2009

Crear RPMs, lo peor del infierno

Lo peor de la sección de RPMs es crear estos...

Para estoy hay que seguir varios pasos:

  1. Crear una firma GPG, (opcional y no necesario para el examen de RHCE)
    Hay que instalar GPG con yum install gnupg, luego hay que generar la firma GPG con gpg --gen-key, se siguen las instrucciones (es descriptivo e intuitivo), así que no hay de que quejarse). Una vez creada nuestra firma hay que exportarla con gpg --output gpgkey.gpg --armor --export "tu mail" y luegro agregarla con rpm --import gpgkey.gpg
  2. Instalar RPMbuild y preparar el entorno de construcción
    Bueno, esto es simple, es solo cuestión de instalar el programa con yum install rpm-build, y crear el archivo de configuración .rpmmacros:
    %debug_package %{nil}
    %_unpackaged_files_terminate_build 1
    %_signature gpg
    %_gpg_path %(echo "$HOME")/.gnupg
    %_gpg_name Tu nombre que pusiste al momento de generar la clave GPG (el comentario)
    %_gpgbin /usr/bin/gpg
    %_topdir %(echo "$HOME")/rpmbuild
    %_tmppath %(echo "$HOME")/rpmbuild/TMP
    %packager Nombre como quieras
    %distribution Nombre de tu distribución
    %vendor su nombre o nombre de su empresa aqu
    í
    Luego hay que crear los directorios para la construcción de RPMs
    mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SRPMS,SPECS,TMP}
    mkdir -p ~/rpmbuild/RPMS/{athlon,i386,i586,i686,noarch}
  3. Crear un archivo .spec
    Esto es lo mas complejo de todo, ya que aquí radica el conjunto de instrucciones que se ejecutan al momento de crear el RPM. Los archivos .spec contienen las siguientes secciones:
    Name: (nombre de la aplicación)
    Version: (versión)
    Release: (número de revisión)
    URL: (sitio web del programa)
    Summary: (descripción del programa)
    License: (licencia)
    Group: (categoría a la que pertenece)

    Buildroot: %{_tmppath}/%{name}-%{version}-root
    Source: (URL para descargar el paquete con el código fuente)
    BuildRequires: (paquetes necesarios durante la compilación del programa)
    BuildPreReq: (paquetes necesarios antes de la compilación del programa)
    Requires: (paquetes necesarios antes de instalar del programa)
    PreReq: (paquetes necesarios durante la instalació del programa

    %description
    (otra vez, descripción del programa)

    %prep
    (procedimientos a ejecutar antes de desempaquetar el programa)
    %setup -q
    (procedimientos después de desempaquetar el programa, como aplicar parches)

    %build
    (procedimiento para compilar el programa, usualmente las siguientes dos lineas son lo necesario)
    %configure --prefix=/usr
    %__make

    %install
    (procedimientos para instalar el programa en las carpetas que corresponden, normalmente con esto basta)
    %__make DESTDIR=%{buildroot} install

    %clean
    (procedimientos para limpiar cualquier desorden que se haga al hacer el RPM)
    %__rm -fr %{buildroot}

    %preun
    (procedimientos antes de instalar el paquete, como crear cuentas de usuario especiales para el programa)

    %post
    (procedimientos después de instalar el paquete)

    %postun
    (procedimientos que se ejecutan después de borrar un paquete para que no quede rastro)
    %files
    (archivos que forman parte del archivo

    %changelog
    (cambios que se hayan hecho, se agregan con el siguiente formato)
    * Sun Sep 25 2005 Nombre
    - Cambio
  4. Construir el RPM
    Lo siguiente es crear el RPM en si, usualmente para crear un sRPM y un RPM, además de firmarlo lo mínimo sera el comando
    rpmbuild --sign --target=(arquitectura) -ba (nombre del archivo .spec)
    Dónde arquitectura puede ser: athlon, i386, i586, i686, noarch, x86_64, ia64.
Este tutoríal fue construido gracias a:
http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-rpmbuild
http://www.linuca.org/body.phtml?nIdNoticia=88
http://www.debuntu.org/how-to-import-export-gpg-key-pair

Verificar RPM

En la base de datos RPM se guarda información de todos los archivos instalados con RPMs, así que se puede verificar si un archivo ha sido modificado o todo el paquete en su totalidad con

rpm --verify


Y sus diferentes switches