LOC: Linux Original Courseware
LOC:
Linux
Original
Courseware*
Correspondiente
al
Curso
LX1: Fundamentals and Operation
LX2:
System
Administrator
Tabla de Contenidos
Capítulo 1... 5 Instalación ... 5 Capítulo 2... 35 Administración de Usuarios ... 35 El archivo de Passwords... 35 Crear Usuarios ... 36Otros archivos importantes para la administración de usuarios ... 39
Borrar usuarios... 40
Modificar atributos de usuario ... 40
Otros comandos de usuario ... 41
Grupos... 41 Permisos... 43 Comando chmod... 44 Comando chgrp... 45 Comando chown ... 45 Sticky bit ... 45
Atributo SUID: (Para Archivos)... 46
Atributo SGID: (Para archivos)... 46
Atributo SGID: (Para directorios) ... 46
SUID Shell Scripts... 46
Capítulo 3... 47
El Sistema Operativo Linux/Unix ... 47
¿Qué son las consolas virtuales? ... 47
Sistema de archivos (filesystems) ... 47
Archivos y directorios ... 47
Tipos de archivos y directorios... 49
Archivos normales (files) ... 49
Directorios (directory) ... 49
Enlaces duros (hard-links)... 49
Enlace simbólicos (soft-links) ... 50
Dispositivos de bloque (block devices)... 50
Dispositivos de carácter (carácter devices)... 50
Pipes con nombre (named pipes)... 50
Comandos de Linux... 50
Comandos básicos para la gestión de archivos ... 50
Ver el contenido de archivos ... 52
Otros comandos ... 53
Runlevels... 54
¿Cómo arranca Linux?... 54
Como cambiar de runlevel... 59
Procesos ... 62
Envío de una señal a un proceso ... 64
Control de Procesos ... 65
Montaje y Desmontaje de Discos y de Sistemas de Archivos... 67
El archivo /etc/fstab ... 69
Capítulo 4... 71
Instalación de Software ... 71
Descompresión y compresión de archivos... 71
Comando tar... 71 Comando gzip ... 72 Comando gunzip... 72 El comando unzip ... 72 Comando bzip2... 72 Paquetes DEB ... 73 Paquetes RPM... 78 Instalación ... 79
Actualización ... 79
Consulta ... 79
Desinstalar un paquete... 80
Verificación ... 80
Compilación de código fuente... 81
Capítulo 5... 82
¿Qué es el kernel?... 82
Tipos de kernel... 82
Versiones del kernel (Numeración)... 82
Compilación del kernel... 83
¿Qué quiere decir compilar?... 83
¿Para qué compilar el kernel?... 83
Empecemos con la compilación del kernel... 83
Estructura del kernel modular ... 88
Módulos Cargables ... 88
¿Que es un módulo cargable?... 88
El archivo /etc/modules.conf... 88
El archivo /etc/modules ... 89
Capítulo 6... 90
Redes... 90
Conceptos Básicos ... 90
LAN, WAN y enlaces... 90
El modelo de referencia OSI ... 91
Capa 7: Capa de aplicación ... 91
Capa 6: Capa de presentación ... 91
Capa 5: Capa de sesión... 91
Capa 4: Capa de transporte... 91
Capa 3: Capa de red... 92
Capa 2: Capa de enlace de datos ... 92
Capa 1: Capa de física ... 92
Comunicación entre capas... 92
Conjunto de Protocolos TCP/IP ... 92
Su relación con el Modelo OSI ... 92
Dirección IP ... 92 Fundamentos de la dirección IP ... 93 Coordinación de dirección IP ... 93 Organizando direcciones ... 93 Clasificación de redes... 94 Direcciones especiales... 95 Redes Privadas... 95 Fundamentos de subredes... 96 ¿Porqué subredes? ... 96
Números binarios y direcciones IP... 96
AND ... 97
Subredes... 97
Subredes clase B ... 98
Subredes clase C ... 98
Ejemplos de subredes ... 98
Ejemplo de subredes clase C ... 98
Ejemplo de subredes clase B ... 99
Ejemplos de rangos de dirección... 99
Ejemplo de clase C ... 99
Otro método para determinar rangos de dirección... 100
SuperNetting - Combinando direcciones ... 101
Classless Internet Domain Routing (CIDR)... 102
Capítulo 7... 103
Configuración de red en Linux... 103
Instalación de la placa de red... 103
Configuración de una interfaz de red ... 104
Capítulo 8... 110
Programación en la shell de Linux ... 110
¿Que es la shell? ... 110
¿Qué es un script?... 110
Creación de scripts... 110
¿Qué se escribe en un script?... 111
Sintaxis de los scripts... 111
Comentarios ... 111 Variables ... 111 Pasaje de argumentos... 112 Redireccionamiento ... 113 La orden read ... 113 Estructuras de control ... 114 Efectuando comparaciones... 115 La sentencia case ... 116 La sentencia for... 117 La sentencia while ... 117 Depuración... 118 Capítulo 9... 119 El demonio xinetd... 119
¿Cómo instalar el xinetd? ... 120
Configuración ... 120 Configurando un servicio ... 121 El directorio /etc/xinetd.d/ ... 121 Capítulo 10... 124 Introducción a Samba ... 124 Servidor Samba... 124 Instalación de Samba ... 124 Configuración de Samba ... 126 Globales ... 126 Seguridad ... 127
Usuarios válidos para Samba... 135
Acceso a los recursos compartidos... 135
Acceso a los recursos compartidos: montaje ... 136
Samba-SWAT... 136 Capítulo 11... 139 Servidor DHCP ... 139 Capítulo 12... 142 Firewalls... 142 Introducción ... 142
Fundamentos sobre el Filtrado de Paquetes... 142
¿Y para que necesito un Firewall? ... 143
Netfilter/Iptables ... 143
Historia... 143
¿Cómo? - ipchains ... 144
Enmascaramiento (masquerading o NAT)... 146
Cerrando servicios ... 146
Negación ... 146
Consultando las reglas ... 147
Borrando reglas... 147
Estableciendo políticas ... 147
Guardando información de eventos... 147
Especificando una interface... 147
Guardando y recuperando las reglas ... 148
Algunas consideraciones ... 148
Manipulando el Tipo de servicio (Type Of Service) ... 148
Filtrando el Ping de la Muerte... 149
Hand Shaking... 149
Borrando reglas... 153
Guardando y recuperando las reglas ... 154
Módulos con opciones de coincidencias adicionales... 154
Capítulo 13... 155
DNS... 155
Introducción ... 155
Clasificación de Servidores ... 155
Servidor de solo caché... 156
Tipos de Resolución ... 156
Configuración del servidor ... 157
Servidores Raiz... 158 Archivos de zona ... 159 Ejemplos ... 159 El registro SOA... 160 El registro A... 161 El registro NS... 161 El registro PTR ... 161 El registro MX ... 161 El registro CNAME ... 161
Configuración del cliente... 161
Verificaciones ... 162 Ejemplo de búsqueda... 162 Capítulo 14... 165 Apache ... 165 Introducción ... 165 Instalación de Apache2... 165 Configuración ... 166
Veamos otras variables de configuración ... 167
Virtual Hosts ... 170
Prueba de Apache ... 170
Páginas protegidas ... 171
Capítulo 15... 173
Programando tareas con at y cron ... 173
Introducción ... 173
Uso de at ... 173
Uso de cron ... 173
Opciones de crontab ... 174
Crontab para los usuarios ... 175
Contol de accesos y uso de crontab... 175
Apéndice A ... 176
Utilizando vi... 176
Introducción ... 176
Invocando a vi... 176
Cómo funciona vi ... 176
Desplazarse por el archivo... 177
Introducir texto ... 177
Borrar texto ... 177
Reemplazar texto ... 178
Copiar, Cortar y Pegar texto... 178
Deshacer y Repetir... 178
Factor de repetición ... 178
Búsqueda de una cadena... 178
El menú “:” ... 178
Apéndice B... 179
Propuesta de Laboratorio... 179
Apéndice C... 180
Preguntas Exámen LPI ... 180
Capítulo 1
Instalación
Podemos comenzar la instalación, arrancando la PC con el CD N° 1 puesto en la lectora.
Recuerde setear en su BIOS que arranque desde la unidad de CD-ROM. Si su máquina tiene varios años, puede ser que su BIOS no pueda arrancar desde CD, entonces debe hacerlo desde diskette.
Paso 1. Elegir el kernel con el cual realizamos la instalación.
Ahora sí comenzamos con la instalación. Lo primero que aparece es una pantalla donde nos presenta varias opciones de arrancar. Si presionamos Enter, empezamos con la instalación típica que es con un kernel de la serie 2.4. Lo ideal en este paso es leer bien para elegir otro kernel, el 2.6, que es el que viene con la serie actual. Simplemente, escribimos linux26 y presionamos Enter.
NOTA: El kernel es el núcleo de un sistema operativo.
Paso 2. Elegir el idioma de la instalación.
Aquí nos pide elegir el idioma de la instalación, podemos elegir Español. Con las flechas (están entre los teclados de letras y números).
Ahora nos va a pedir que configuremos la variante, dentro del español.
Paso 3. Configuración del teclado.
Después de estas configuraciones iniciales, el sistema empieza a detectar el hardware instalado, analiza el CD-ROM y carga los módulos que necesitará el instalador de Debian.
Paso 4. Configuración de la red.
Este paso es útil configurarlo en este momento si vamos a hacer una instalación básica o mínima con el 1° cd de instalación de Debian y luego continuamos instalando el sistema desde la red, por ejemplo si vamos bajando de Internet los paquetes que queremos instalar.
Lo primero que hace es buscar si en la red hay algún servidor DHCP, que nos asigne una dirección IP automáticamente.
Si no detecta ningún DHCP, podemos asignar la dirección IP manualmente, como vemos en la pantalla siguiente.
Luego aparecerán otras pantallas para definir la máscara de red, la dirección IP del gateway, si hubiera y, por último la dirección IP del servidor de nombres (DNS).
Ahora decidimos el nombre de nuestra máquina. Si lo dejamos en blanco, por defecto, el nombre será
localhost
NOTA Los servidores DNS, o servidores de nombres se escriben en la misma línea y separados por un espacio. Esta información se puede obtener llamando a su compañía de Internet.
Luego aparece una pantalla donde nos pregunta el dominio al que pertenecemos. Si es una máquina local, en nuestra casa y no tenemos un dominio, dejamos el espacio en blanco.
Paso 5. Particionamiento de disco.
Llegamos a una parte crítica de la instalación. Crear las particiones donde instalaremos el sistema. Nos aparece la pantalla que vemos abajo, con varias opciones. Veamos que significan.
-Configurar RAID por software: en algunos servidores se replica la información, es como hacer un espejado de los discos. RAID son las siglas en inglés de Redundant Array of Inexpensive Disks, o sea, conjunto redundante de discos baratos.
En Linux armar el RAID se hace a nivel de partición, por ejemplo: podremos montar un RAID 5 con 3 particiones en 3 discos diferentes (podría ser el mismo disco, pero no tendría sentido y perderíamos las capacidades de redundancia y rendimiento de los dispositivos RAID ).
-Configurar el Gestor Lógico de Volúmenes (LVM): Esto se usa cuando queremos que una misma partición ocupe varios discos, por ejemplo.LVM es una forma de alocar espacio de disco duro en volúmenes lógicos que pueden ser fácilmente redimensionados en vez de particiones.
Con LVM, el disco duro o grupo de discos duros está alocado para uno o más volúmenes físicos. Un volumen físico no abarca más de una unidad. Los volúmenes físicos están combinados en grupos de volúmenes lógicos, a excepción de la partición /boot.
-Particionado guiado y Ayuda del particionado: Estas 2 opciones nos ayudan en el proceso de particionamiento, mediante cuadros de dialogo, lo hacen más automatizado.
-Maestro IDE (hda)
Esta última línea nos muestra el disco que detectó.
En este caso, tenemos un solo disco duro, Maestro IDE (hda), si tuviera más discos vería diferentes renglones con todos los discos duros de mi máquina.
Ejemplo: Si tuviéramos dos discos, tendríamos en esta pantalla dos renglones que dirían hda y hdb. En Windows existe el drive C:\, aquí se llama /dev/hda. Si tuviera discos SCSI, sería /dev/sda. Aclaración:
Así se designan en Linux, los discos rígidos, hd viene de Hard Disk, sd viene de SCSI disk, y las letras a y b
designan al disco según como está enchufado en la IDE.
hda: es el disco primario o master de la ranura primaria. hdb: es el disco secundario o esclavo de la ranura primaria. hdc: es el disco primario o master de la ranura secundaria. hdd: es el disco secundario o esclavo de la ranura secundaria.
Elegimos la opción de disco:
Maestro IDE (hda) – 10.7 GB VMware Virtual IDE Hard Drive Ya que vamos a editar manualmente la tabla de particiones.
Entonces, para comenzar a crear nuestra tabla de particiones nos posicionamos sobre la línea que nos muestra ESPACIO LIBRE
Este es el espacio libre que Debian detectó en nuestro disco duro.
NOTA: En esta pantalla, vería todas mis particiones en el disco duro si las tuviera. Si quisiera que Debian fuera el único sistema operativo instalado en la máquina, debería borrar todas esas particiones una por una. Para hacer esto debemos posicionarnos en la partición que deseamos borrar y, del menú que aparece en la parte inferior de la pantalla elegimos “Borrar la partición”.
Repetimos los pasos con las demás particiones que queremos borrar. Vamos a empezar a crear las particiones.
Al dar Enter sobre la línea que nos muestra ESPACIO LIBRE nos aparece la siguiente pantalla:
Elegimos
La primer partición será Primaria.
Elegimos que comience al principio del espacio libre que encuentra.
En esta pantalla vamos a definir varias características de la partición.
Filesystem: vamos a formatear la partición, debemos decirle con qué filesystem o sistema de archivos la vamos a formatear. En este caso elegimos ext3, podría ser ext2, reiserfs,etc
Punto de montaje: el filesystem o sistema de archivos debe montarse en algún directorio para funcionar. El primer filesystem a montar debe ser /.
NOTA: este tema lo veremos en detalle en capítulos posteriores.
Opciones. Son opciones de montaje, por ejemplo si se monta como solo lectura o lectura/escritura, otra opción puede ser qué permisos tienen los usuarios para montar dicho filesystem. En este caso, le ponemos defaults.
Etiqueta: como se llama el filesystem. En este caso, /, es el directorio principal o raíz.
Bloques reservados. Esto lo define el administrador del sistema operativo, tiene que ver con la estructura del
filesystem, Linux utiliza inodos para armar la jerarquía del árbol de directorios.
Uso habitual: estándar
Marca de arranque. Puede estar activada o desactivada. La activo si quiero que esa partición arranque.
Tamaño: es el tamaño que queremos tenga la partición.
Cuando terminamos de configurar estos parámetros, seleccionamos
“Se ha terminado de definir la partición” del menú abajo en la pantalla.
En un disco se pueden hacer hasta cuatro particiones (1ª-4ª) “primarias”. Si se necesitan más, una de ella debe ser de un tipo especial: “extendida” y va a contener particiones adicionales (5º en adelante). En nuestro caso, el disco (hda) tendrá tres particiones primarias, y una extendida (no necesariamente debe ser la 4ª) que contendrá tres particiones más. Las particiones creadas dentro de la extendida se denominan particiones lógicas.
Ejemplo de una tabla de particiones con tres primarias y la cuarta extendida, conteniendo adentro tres particiones más.
Device Boot Start End Blocks Id System /dev/hda1 1 614 4931923+ 83 Linux
/dev/hda2 615 1027 3317422+ c Win95 FAT32 (LBA) /dev/hda3 1229 1842 4931955 82 Linux swap
/dev/hda4 1843 2481 5132767+ 5 Extended /dev/hda5 1843 2456 4931923+ 83 Linux /dev/hda6 2457 2479 184716 83 Linux /dev/hda7 2480 2481 16033+ 83 Linux
Así particionaremos nuestro disco.
Crearemos 3 particiones primarias y 3 particiones lógicas que contendrán:
hda1 / hda2 /boot hda3 swap hda5 /var hda6 /tmp hda7 /usr
Debemos decidir cuánto tamaño darle a cada partición.
La partición que vamos a usar para swap, la haremos de tamaño similar al doble de la memoria RAM (siempre que tengamos menos de 256 Mb, sino conviene dejarla más o menos del mismo tamaño).
También es bueno crear una partición donde alojar /boot para tener en un espacio físico separado las imágenes
de booteo.
El directorio /tmp conviene guardarlo en una partición porque en esa partición puede escribir todo el mundo y
como consecuencia, a menos que estemos implementando quotas cualquiera nos puede llenar el disco.
A /usr le damos una partición especial porque a medida que va creciendo nos saca espacio de /. Cuantos más
programas instalemos, más crecerá /usr.
Para /var tenemos una consideración parecida. Si lo que estamos instalando es un servidor de correo, por
ejemplo debemos darle más espacio. Igualmente todo esto le quedará más claro, cuando lea más abajo como es el árbol de directorios.
Directorios
/ (barra) Se encuentra en todos las estructuras de archivos tipo Linux. De aquí comienza todo el
árbol. Es el directorio raíz, el principal del árbol.
/tmp Aquí se guardan archivos temporales que crean los programas que son ejecutados. /lib Librerías del sistema, algo parecido a las dll de Microsoft.
/dev Aquí se almacenan todos los archivos que representan dispositivos. Los archivos contenidos son
los device drivers y se utilizan para acceder a los dispositivos del sistema y recursos, como discos duros, módems, memoria, etc.
/etc Contiene los archivos de configuración del sistema. Éstos incluyen administración del arranque del
sistema, de servicios, de usuarios, etc.
/bin Aquí encontramos los comandos principales del sistema que son fundamentales para el inicio del
equipo y que los usuarios pueden utilizar.
/sbin A diferencia del /bin, acá están los comandos también fundamentales para el inicio del equipo,
pero exclusivos del administrador del equipo.
/home Contiene los directorios home de los usuarios.
/root Directorio de la cuenta de usuario root. Es el /home de root, por seguridad está separado de los home de los demás usuarios.
/proc Es un directorio virtual, no existe en el disco, los archivos que contiene residen en memoria. Está
íntimamente relacionado con el kernel.
/usr Aquí es donde se ubican los programas instalados, sus bibliotecas, su documentación, sus
archivos, etc. y son accesibles para los usuarios. /usr contiene la mayoría de los paquetes grandes
de programas y sus archivos de configuración. Por ejemplo, /usr/share/man y /usr/share/doc contienen páginas man y documentos variados sobre el software instalado.
/var Contiene directorios que tienden a crecer y/o son datos volátiles. Ejemplos son: colas de
impresión, colas de mail, archivos log.
/media Lo utiliza los dispositivos que se montan, es el punto de montaje temporal de dispositivos
removibles. Contiene cdrom y floppy como subdirectorios. /boot Contiene las imágenes de booteo para arrancar el sistema.
/lost+found Aquí aparecen los archivos que luego de un corte del sistema, de un mal apagado del equipo,
son restaurados por un chequeo de integridad del disco.
Paso 6. Creando la partición boot.
Nos posicionamos donde dice ESPACIO LIBRE para crear una nueva partición, le indicamos el tamaño 130MB
Aquí elegimos el filesystem /boot, y vamos a la pantalla siguiente para montarla y configurar demás
características.
Entre ellas, hacer esta partición, capaz de iniciar/arrancar el sistema operativo (bootable), para esto activar la opción “marca de arranque”
Cuando terminamos de configurar estos parámetros, seleccionamos
“Se ha terminado de definir la partición” del menú abajo en la pantalla.
Paso 7. Creación de la partición de intercambio (swap)
Ahora necesitamos decirle a Linux que esta partición es para utilizar como swap, de otra manera Linux no la puede usar. Esto lo hacemos en la siguiente pantalla, la relativa a los montajes y configuración del filesystem.
Cuando terminamos de configurar estos parámetros, seleccionamos “Se ha terminado de definir la partición” del menú abajo en la pantalla.
Paso 8. Creación de la partición extendida
Recordemos, si creo la 4ª partición como primaria, ya no puedo crear más particiones. Por lo tanto, la 4ª partición debemos crearla extendida, y así, crear luego particiones lógicas.
Cuando nos posicionamos donde dice ESPACIO LIBRE, damos Enter y elegimos el tamaño, nos pregunta si la partición será lógica o extendida.
Elegimos, lógica Montamos /var
Cuando terminamos de configurar estos parámetros, seleccionamos “Se ha terminado de definir la partición” del menú abajo en la pantalla
Ahora crearemos otra partición lógica, para /tmp
Cuando terminamos de configurar estos parámetros, seleccionamos
“Se ha terminado de definir la partición” del menú abajo en la pantalla
Y por último, creamos la partición para /usr
Paso 9. Hacer definitivos los cambios en el disco
Hasta ahora, nada ha sido modificado, hasta que se escriban los cambios en el disco. Para hacer esto, seleccionamos “Finalizar el particionado y escribir los cambios en el disco” del menú abajo en la pantalla.
Luego veremos el mensaje: "Desea escribir los cambios en los discos?” Si estamos seguros, decimos que Si, y listo.
NOTA: En caso de errores o dudas siempre tenemos en las pantallas la opción <Volver>
Paso 10. Instalación del sistema básico
Cuando terminamos el particionado, el sistema crea la nueva tabla de particiones, y arma el filesystem. Ahora entonces empieza a instalar el sistema base
Tarda unos minutos hasta que el sistema básico sea instalado. Paso 11. Hacer el sistema arrancable (bootable)
Para arrancar nuestro sistema debemos instalar GRUB
Aquí nos parece una diferencia importante con la instalación de Debian versión 2.4. Ya no nos da a elegir qué programa queremos usar para arrancar nuestro sistema, si LILO o GRUB. Esta distribución Debian 2.6, solo permite instalar GRUB.
En esta pantalla nos pregunta si queremos instalar GRUB en el MBR o registro principal de arranque. Si queremos usar GRUB para arrancar todos los sistemas operativos (en caso que hubiéramos tenido instalado Windows, por ejemplo) entonces, elegimos la opción de instalar GRUB en el MBR (Master Boot Record).
Si hubiera contestado que <No>, entonces me va a preguntar en que partición quiero instalarlo. En este caso después debemos bootear con un diskette o con un CD-ROM
Paso 12. Reiniciar la máquina Finalizó la instalación!
Después de esta pantalla estamos listos para reiniciar el sistema. Una vez que reiniciamos, haremos una configuración final del sistema. Asegurémonos de sacar el CD-ROM y/o diskette y seleccionamos <Continuar> para reiniciar Debian.
Al arrancar nuestro sistema veremos la siguiente pantalla:
Paso 13. Configuración de la zona horaria
Vamos a definir la hora del sistema. En esta pantalla nos pregunta si la máquina está configurada con la hora Greenwich o la hora local. Elijan lo que más les convenga.
En la próxima pantalla, también titulada "Configuración de zona horaria", muestra una lista de países y ciudades. Escogemos la nuestra, que aparece en el listado.
Paso 14. Configuración de la contraseña
Esta es la contraseña que vamos a necesitar para poder entrar al sistema como root, para poder administrar todo el sistema. Por ejemplo, necesitará entrar al sistema como root para "bajar" (descargar) e instalar paquetes y programas usando el programa apt. Por consiguiente, no queremos que cualquiera adivine mi contraseña de administrador del sistema. Por favor recuerde esta contraseña, la va a necesitar al final de estas instrucciones. Y muchas veces más ;-)
La próxima pantalla nos pide otra vez la misma contraseña para asegurarse, y si no hay error de tipeo, listo, ya tomó la contraseña de root. Si hubiera error, las contraseñas serían distintas, entonces el sistema nos obligará a repetir este paso.
La próxima pantalla nos presenta la opción de crear una cuenta de usuario, como no es bueno entrar siempre como root , la crearemos. Escribamos nuestro nombre completo, por ejemplo y pulsamos <Aceptar>.
Luego nos pide un nombre para la cuenta. Este será el nombre que utilizará el usuario para entrar al sistema. Por lo tanto, también necesita una contraseña. Son las pantallas siguientes.
NOTA: escriba una contraseña diferente que la de root, así si alguien se entera de su contraseña como usuario, todavía no pueden entrar al sistema como root y hacer de las suyas.
Paso 15. Configuración de APT
Como ya tenemos la red configurada, desde los primeros pasos de la instalación, exactamente en el Paso 4, podemos utilizar la red para hacer la instalación de paquetes.
Si tenemos conexión a alguna red, ADSL, Cable, u otro sistema de banda ancha, nos encontramos en la pantalla de "Configuración de apt".
APT es el programa que usa Debian para administrar los paquetes, para instalar, eliminar, buscar, etc.
En esta pantalla, lo que vamos a configurar es la fuente de instalación o repositorio, o sea, a donde va apt a buscar los paquetes para instalar.
Si no tenemos internet, igual nos encontramos con esta pantalla, pero en este caso, la única fuente de instalación que tenemos son los CD-ROMs.
Aclaración:
El software a instalar puedo traerlo desde los CD-ROM de Debian, desde internet, ya sea por http como por ftp, o también desde un repositorio local, una máquina especialmente destinada a esta tarea.
En este caso, vamos a usar los CD-ROM de instalación de Debian. Elegimos la opción cdrom y presionamos <Aceptar>
Luego aparece la siguiente pantalla, donde apt analiza el CD-ROM y guarda la información que necesita en la base de datos del programa apt
Si elegimos "FTP" o "HTTP" para tener acceso a los recursos de apt, nos aparece una pantalla donde pregunta si se va a usar recursos de apt NON-US. Si aceptamos, tendremos acceso a software que no se encuentra en los servidores apt de EEUU en materia de criptografía.
Luego pregunta si vamos a usar recursos de apt dirigidos a software non-free (no pueden tener, compartir, o modificar el código, pero son GRATIS) han sido incorporados a Debian.
La próxima pantalla pregunta si se va a usar "contrib software" que es también gratis y depende de non-free software para funcionar.
En la próxima pantalla, tenemos que elegir el repositorio de Debian al que nos vamos a conectar para bajar los paquetes. Podemos escoger un país en el continente nuestro, por ejemplo Argentina, que hay un mirror. Entonces elegimos, y Enter.
La siguiente pantalla muestra una lista de servidores y "espejos" o mirrors para bajar los paquetes de Debian. En teoría, no importa cual elegimos, sin embargo, hay algunos que no funcionan. Si esto pasa, tendremos la oportunidad de repetir la operación hasta que encontremos uno que trabaje bien. Uno seguro, es el servidor de
debian.org. Seleccionamos y Enter.
Conviene agregar alguno más, de Estados Unidos o Brasil, por ejemplo, por las dudas que el primer repositorio no funcione en algún momento
En la siguiente pantalla pregunta si quieren tener acceso a los recursos apt de seguridad para actualizarse. Le decimos que Si.
Paso 16. Tasksel
En esta pantalla tenemos que tomar una decisión. Una de las ventajas que tiene Debian es que se puede instalar un sistema limpio, básico y luego instalarle todos los programas que queramos. Tasksel es un programa que nos permite seleccionar grupos de programas y hasta paquetes individuales, También puede seleccionar todo si no sabe qué es cada paquete, o quiere conocer todo lo que trae Debian
La otra opción es que mi sistema sólo tenga las cosas que yo intencionalmente elija. Habiendo dicho esto, me salteo este paso, y luego instalo lo que quiero, terminando así con un sistema limpio y magro. Seleccionamos "No" para continuar, y luego veremos como agregar los programas que queramos.
Paso 17. Aptitude
Si en la pantalla anterior, elegimos la opción “selección manual de paquetes” vamos a usar el programa aptitude. Algunos preferirán hacer esto, pero como lo veremos más adelante ahora salteamos este tema en la instalación. Caso contrario, si quiere elegir qué instalar, paquete a paquete seleccione la opción “selección manual de paquetes” en tasksel. Se llamará a aptitude con la opción --visual-preview si selecciona al mismo tiempo una o más tareas. Lo que significa que podrá revisar los paquetes que se van a instalar. Si no selecciona ninguna tarea se mostrará la pantalla habitual de aptitude. Debe pulsar “g” después de haber hecho su selección para empezar la descarga e instalación de los paquetes.
NOTA:
Aptitude es un programa moderno para gestionar paquetes. Nos permite seleccionar paquetes individualmente,
conjuntos de paquetes que concuerdan con un criterio dado (para usuarios avanzados) o tareas completas. Las combinaciones de teclas más básicas son:
Tecla Acción
Arriba, Abajo Mueve la selección arriba o abajo. Enter Abre/colapsa/activa un elemento. + Marca el paquete para su instalación. - Marca el paquete para su eliminación. D Muestra las dependencias del paquete. G Descarga/instala/elimina paquetes. Q Sale de la vista actual.
F10 Activa el menú.
Puede consultar más órdenes con la ayuda en línea si pulsa la tecla “?”
Paso 17. Comienza la instalación de paquetes
Si han escogido instalar paquetes con tasksel o aptitude, éstos serán instalados por apt ahora, lo cual tomará algún tiempo. Si no lo hicieron este paso será rápido porque sólo tienen que desinstalar un solo paquete.
No se preocupen por los mensajes de alerta que reciban, no son importantes.
Paso 18. Exim
Exim es un servidor de correo como Sendmail, Qmail, etc.
La mayoría de las personas no lo van a necesitar, a menos que quieran tener un servidor de correo propio debido a su trabajo, etc.
Si después lo quieren configurar, la documentación se encuentra en: en el archivo /usr/share/doc.
Paso 19. Fin de la configuración
Esta última pantalla simplemente explica que han terminado la instalación de Debian con éxito.
Si queremos entrar al sistema, entramos, nos logueamos, escribimos nombre de usuario, Enter. Luego nos pide
Ahora estaremos en una pantalla sin entorno gráfico, estrictamente de consola. Bienvenidos! Hemos terminado la instalación de Debian. Nos encontramos con la desventaja de no tener modo gráfico. Para solucionar esto rápidamente, pueden decirle al sistema que lo instale. Para esto, como usuario root, escribimos:
apt-get install x-window-system
Luego nos hará una serie de preguntas relativas a la configuración de las Xs. Para esto lo ideal es consultar la página http:// www.xfree.org donde vamos a tener información completa para ayudarnos en la instalación y configuración.
Capítulo 2
Administración de Usuarios
Linux es un sistema operativo multiusuario, por lo tanto el administrador del sistema, que puede ser root o algun otro usuario con nivel de administrador, tiene que asignar un nombre de usuario (login) y una contraseña (password) a los usuarios para que puedan empezar a trabajar. Cada usuario, tiene su propio login y su propia
password para acceder al sistema. Esto permite prevenir que otro usuario utilice un login que no le corresponde,
pues es secreto.
El archivo donde están almacenados los passwords de los usuarios es /etc/passwd.
Para que un password sea válido debe contener como mínimo 6 caracteres, y el primero debe ser alfabético; pero únicamente los 8 primeros son significativos.
El password puede contener letras en mayúsculas o minúsculas, caracteres numéricos y caracteres especiales. Para crear un nuevo password o cambiar uno ya existente se utiliza el comando passwd, cuya sintaxis es:
# passwd [NombreUsuario]
El archivo de Passwords
Linux guarda la información de todos los usuarios junto con sus passwords (lógicamente cifrados) en un archivo. Es el archivo passwd, dentro del directorio /etc. Es muy simple en Linux leer este archivo, ya que es
accesible a cualquier usuario. Tiene la siguiente forma:
ale:heJuwMrBVa6mg:1001:202:Alejandra Garcia:/home/ale:/bin/sh pepe:GezuA6krN/BsE:1002:202:Jose Alvarez:/home/pepe:/bin/sh juan:ze7EPYLjRYX9I:1003:202:Juan Jose Cao:/home/juan:/bin/ksh
Vamos a ver qué significa todo esto. Podemos decir que el formato de cada línea es: campo1:campo2:campo3:campo4:campo5:campo6:campo7
donde:
campo1) login del usuario campo2) password encriptado
campo3) número UID (identificación de usuario) campo4) número GID (identificación de grupo) campo5) datos del usuario
campo6) directorio de trabajo campo7) directorio del shell
Nota: Los usuarios tienen su número de usuario (UID), también tienen un número de grupo
(GID). Cada usuario debe pertenecer a un grupo. Los grupos están numerados en el archivo
/etc/group.
Como el archivo passwd es accesible por cualquier usuario, lo que siempre se hace es activar el shadow.
¿Recuerda, cuando instalamos que en una de las pantallas de instalación nos permitía habilitar MD5 y shadow?. Bueno, es el mismo shadow. Shadow quiere decir sombra en inglés, lo puedo asociar a ocultar o esconder. El archivo shadow también se encuentra dentro del directorio /etc, y a diferencia de passwd, éste no es visible para cualquier usuario.
Compruébelo en su sistema logueándose como un usuario cualquiera y verá que no le da permiso de lectura. Este archivo no puede ser accedido por cualquier usuario, sólo el superusuario o root tiene permiso de acceder a él. Veamos como es este caso, en donde el archivo de passwords está protegido con el archivo shadow.
El archivo shadow es el que contiene las contraseñas encriptadas, y el archivo passwd, en el campo que antes
guardaba las contraseñas, ahora tiene una X, significando esto que, este usuario tiene una contraseña, es una marca. La contraseña no está aquí.
Ejemplo
ale:heJuwMrBVa6mg:11750:0:99999:7:-1:-1:134529868
Esta es una línea del archivo shadow. Vamos a ver ahora el significado de cada campo. campo1) Nombre de usuario
campo2) Contraseña encriptada
campo3) Cantidad de días desde el 1/1/1970 que se habilitó la contraseña campo4) Cantidad de días antes de cambiar la contraseña
campo5) Cantidad de días después, que se debe cambiar la contraseña campo6) Cantidad de días antes de que expire la contraseña, y avisa al usuario
campo7) Cantidad de días después de que expire la contraseña, y se inhabilita la cuenta. campo8) Cantidad de días después, desde 1/1/1970, que la cuenta está deshabilitada. campo9) Campo reservado
Nota: Los campos que contienen un –1, significa, que la cantidad de días es infinita. Crear Usuarios
El comando para agregar un usuario es:
useradd [opciones] <NombreUsuario> useradd NombreUsuario
Esta es la forma más simple del comando useradd. Como la mayoría de los comandos en Linux, se puede usar
con varios identificadores, las opciones más usuales del comando useradd son: -c comentario
para especificar un comentario para la nueva cuenta.
-d directoriodeusuario
para establecer el directorio de trabajo del usuario. Es conveniente, a fin de tener un sistema bien organizado, que este se localice dentro del directorio /home.
-e fechaexpiracion
para establecer la fecha de expiración de la cuenta de usuario. Esta debe ingresarse en el siguiente formato: AAAA-MM-DD.
-g grupoinicial
para establecer el grupo inicial al que pertenecerá el usuario. De forma predeterminada se establece como único grupo. Nota: El grupo asignado ya debe existir.
-G grupo1,grupo2
para establecer grupos extra a los que pertenecerá el usuario. Se deben separar utilizando una coma y sin espacios. Esto es muy conveniente cuando se desea que el usuario tenga acceso a determinados recursos del sistema, como acceso a la unidad de disquetes, administración de cuentas PPP y POP. Nota: los grupos asignados deben existir.
-m
para especificar que el directorio de trabajo del usuario debe ser creado , y dentro se copiarán los archivos especificados en /etc/skel. Para cambiar esto, hay que completar la opción -m
con –k <nuevodirskel> donde nuevodirskel es la carpeta de la cual se sacarán los
perfiles de usuario.
-s shell
Se utiliza para establecer la shell que podrá utilizar el usuario. De forma predeterminada, se establece bash como shell predeterminado.
-u uid
Se utiliza para establecer el UID, es decir, la ID del usuario, el número de identificación de usuario. Este debe ser único. Cuando se crea una cuenta de usuario por primera vez, generalmente se asignará 500 como UID del usuario. Los UID entre 0 y 99 son reservados para las cuentas de los servicios del sistema.
Ejemplo:
# useradd -u 500 -d /home/alexa -G floppy,pppusers,popusers alexa
Nota: No crea el directorio de usuario /home/alexa . Debe existir con anterioridad
Esto creará una cuenta de usuario llamada alexa, que se encuentra incluida en los grupos floppy, pppusers y popusers, que tendrá un UID=500 y tendrá un directorio de trabajo en /home/alexa.
Otro ejemplo:
# useradd -m –s /bin/bash jjlopez
Aquí crearé un usuario jjlopez con su directorio de usuario /home/jjlopez y usará bash como shell.
Existen más opciones y comentarios adicionales para el comando useradd, estas se encuentran especificadas en
los manuales, las páginas man. Para acceder a esta información, utilice el comando man useradd.
Nota: Este comando lo usa solamente root.
En el caso de saltar todas estas opciones, useradd va a tomar las opciones por default desde un archivo: /etc/default/useradd en caso de Redhat
/etc/adduser.conf en caso de Debian
Nota: En Debian nos conviene usar el comando interactivo adduser para crear usuarios.
Otra forma de crear usuarios es directamente, agregar la entrada en /etc/passwd. Edite este archivo y
agréguelo a mano. Tenga cuidado, no repita un nombre de usuario. Los nombres de usuario y UID deben ser únicos. Se debe especificar el GID, nombre completo y resto de información. Se debe crear el directorio inicial
(/home/usuario, por ejemplo), y poner los permisos en el directorio para que el usuario sea el dueño. Se
deben suministrar archivos de comandos de inicialización en el nuevo directorio y se debe hacer alguna otra configuración del sistema (por ejemplo, preparar un buzón para el correo electrónico entrante para el nuevo usuario en /var/spool/mail).
Todo esto es lo que hace el comando useradd o adduser dependiendo del software que esté instalado.
El programa /usr/sbin/useradd usa una serie de valores por defecto. Los leerá del archivo /etc/default/useradd, si este existe. Si no existe, entonces utiliza algunos valores internos por defecto, que
pueden verse ejecutando /usr/sbin/useradd -D. Vamos a ver que contiene el archivo /etc/default/useradd:
GROUP=100 Grupo de usuario cuando se utilice useradd -n. Sino en RedHat®, el número 100
significa que se creará un GID igual al UID, si no se indica lo contrario.
HOME=/home Donde se guardarán los directorios de todos los usuarios
INACTIVE=-1 Número de días a los cuales se volverá inactiva la cuenta del usuario, contadas a partir del
día del desactivamiento
EXPIRE= Día en el que será desactivada la cuenta SHELL=/bin/bash El shell por defecto para el usuario
SKEL=/etc/skel Lugar de donde se deben copiar archivos al nuevo directorio del usuario
Ejemplo: # cat /etc/default/useradd GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel
Si estas opciones no son de nuestro agrado debemos cambiarlas por los valores que consideremos oportunos. Si por ejemplo preferimos que el grupo por defecto sea el 100, que el password expire a fin de año, no queremos bloquear una cuenta debido a que haya expirado el password y deseamos como shell por defecto /bin/bash,
utilizaríamos la siguiente orden:
Estos valores serán almacenados por defecto en el fichero /etc/default/useradd.
Nota: El archivo /etc/default/useradd se puede abrir con un editor de texto y corregirlo,
en vez de usar el comando anterior. Entonces, si ahora creo un usuario de esta forma:
# useradd -m -c "Usuario Invitado" invitado
Esto creará una entrada en el fichero /etc/passwd con el siguiente formato:
invitado:x:505:100:Usuario Invitado:/home/invitado:/bin/bash
Pero también creará una entrada en el fichero /etc/shadow con el siguiente formato: invitado:!:0:0:60:0:0:0:0
Además se creará el directorio de usuario (home directory) y los contenidos de /etc/skel serán copiados en él.
Como no especifiqué un UID para el usuario, el sistema asumirá el siguiente que tenga disponible.
La cuenta del usuario invitado ha sido creada, pero todavía no está disponible ya que no se le ha definido una contraseña. Para establecer la contraseña hacemos lo siguiente:
# passwd invitado
Changing password for user invitado New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
Veamos un ejemplo de cambio de contraseña:
# passwd alexa
Cambiará la clave de alexa. Solo root puede cambiar la clave de otro usuario de esta forma. Cada usuario
puede cambiar su propia clave con passwd también.
Nota: ¡Cuidado! Si esta logueado como root, y al usar el comando passwd, se olvida de
poner el nombre de usuario al que le desea cambiar la contraseña, lo que sucederá es cambiar su propia contraseña (la del usuario root).
El comando adduser que utilizamos en Debian, toma las opciones por defecto que están configuradas en el
archivo /etc/adduser.conf. Veamos:
# /etc/adduser.conf: `adduser' configuration.
# See adduser(8) and adduser.conf(5) for full documentation. # The DSHELL variable specifies the default login shell on your # system.
DSHELL=/bin/bash
# The DHOME variable specifies the directory containing users' home # directories.
DHOME=/home
# If GROUPHOMES is "yes", then the home directories will be created as # /home/groupname/user.
GROUPHOMES=no
# If LETTERHOMES is "yes", then the created home directories will have # an extra directory - the first letter of the user name. For example: # /home/u/user.
LETTERHOMES=no
# The SKEL variable specifies the directory containing "skeletal" user # files; in other words, files such as a sample .profile that will be # copied to the new user's home directory when it is created.
SKEL=/etc/skel
# FIRST_SYSTEM_UID to LAST_SYSTEM_UID inclusive is the range for UIDs # for dynamically allocated administrative and system accounts.
FIRST_SYSTEM_UID=100 LAST_SYSTEM_UID=999
# FIRST_UID to LAST_UID inclusive is the range of UIDs of dynamically # allocated user accounts.
FIRST_UID=1000 LAST_UID=29999
# The USERGROUPS variable can be either "yes" or "no". If "yes" each # created user will be given their own group to use as a default, and # their home directories will be g+s. If "no", each created user will # be placed in the group whose gid is USERS_GID (see below).
USERGROUPS=no
# If USERGROUPS is "no", then USERS_GID should be the GID of the group # `users' (or the equivalent group) on your system.
USERS_GID=100
# If QUOTAUSER is set, a default quota will be set from that user with # `edquota -p QUOTAUSER newuser'
QUOTAUSER="alexa"
Otros archivos importantes para la administración de usuarios
Cuando se agrega un usuario o grupo con los comandos useradd o groupadd respectivamente, el contenido de
los siguientes archivos es de interés.
Nota: Ya vimos el comando useradd. No se preocupe por groupadd, lo veremos después. /etc/skel es un directorio, contiene todos los archivos (ejemplo: .bashrc, .kde) u otros que serán colocados
en el directorio de un usuario (home directory) al generar al usuario.
El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que
todos los nuevos usuarios del sistema tienen la misma configuración inicial. El directorio /etc/skel es usado
por el programa /usr/sbin/useradd.
Para empezar, creamos un directorio /etc/skel. La mejor forma de hacerlo es como usuario root. Después
copiamos en /etc/skel aquellos archivos que queremos que cada nuevo usuario tenga en su directorio home.
Por ejemplo, .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, y .vimrc.
/etc/default/useradd ya lo explicamos en párrafos anteriores.
/etc/login.defs (si se utilizan shadow passwords) especifica varios parámetros en la configuración del
proceso de entrada al sistema (login), o “logueo”. Entre las opciones que podemos configurar en este archivo están: permisos de los usuarios para cambiar su información de usuario, temas relativos a la expiración de
passwords, consolas desde la que se permite login como root, en que archivo se fijan diversas variables de
entorno, valor inicial para el PATH (ruta de búsqueda de archivos), carácter de borrado, registro de entradas correctas e intentos de entrada incorrectas, tiempo de espera tras cada login fallido, etc. Suele venir bien comentado y con valores que no requieren cambios, pero es bueno darle una mirada al menos para estar al tanto de estos valores. Aquí tenemos un ejemplo de este archivo:
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail
# Password aging controls: #
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length.
# PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 #
# Min/max values for automatic uid selection in useradd #
UID_MIN 500 UID_MAX 60000 #
# Min/max values for automatic gid selection in groupadd #
GID_MIN 500 GID_MAX 60000
# If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). #
#USERDEL_CMD /usr/sbin/userdel_local #
# If useradd should create home directories for users by default # On RH systems, we do. This option is ORed with the -m flag on # useradd command line.
#
CREATE_HOME yes
Nota: Existe la página man de este archivo. Podemos consultarlo con el comando man login.defs.
Borrar usuarios
De forma parecida, borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo de que
software fuera instalado en el sistema. Para eliminar un usuario del sistema, debe ingresar:
userdel [opciones] nombreUsuario
Un Ejemplo:
# userdel ale (Siendo ale el usuario que deseo eliminar.)
Este comando, al igual que la mayoría de los comandos Linux, soporta varias opciones. Si lo uso así, sin ningún identificador, elimina al usuario del archivo /etc/passwd y también de /etc/shadow y /etc/group. A partir de ese momento el usuario en cuestión ya no puede loguearse, es decir, que ya no puede entrar al sistema. El usuario desaparece del sistema, pero no desaparecen su directorio de usuario ni su buzón de mensajes. Si quiero que un usuario se vaya con todo su bagaje, debo usar:
# userdel -r ale
Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd. Por ejemplo,
cambiando la linea de /etc/passwd correspondiente al usuario ale:
ale:*Xv8Q981g71oKK:102:100:Alejandra Garcia:/home/ale:/bin/bash
Esto evitará que ale se conecte.
Modificar atributos de usuario
Para modificar la información asociada con un usuario se utiliza el comando usermod. Su sintaxis es similar a la
del comando useradd. Por ejemplo si quisiéramos cambiar el intérprete de comandos del usuario agarcia,
deberíamos utilizar algo como esto:
# usermod -s /bin/csh agarcia
El único cambio que se produciría en el archivo /etc/passwd, sería en su último campo, el relativo a la shell.
Si nuestra intención fuera modificar la fecha de expiración de la cuenta al día 9/12/2003 emplearíamos el siguiente comando:
Nota: El formato de la fecha es MM/DD/YYYY
En este caso el único fichero modificado sería el /etc/shadow.
Cambio de UID del usuario
# usermod -u UID usuario
Cambio el default GID de cierto usuario .También podría poner un nombre de grupo.
# usermod -g GID usuario
Otros comandos de usuario
id: Muestra el nombre y grupo del usuario en números (el UID y GID) y a que grupos pertenecen. id [opciones] [usuario]
Opciones:
-u Muestra solo el número de usuario. -g Muestra solo el número de grupo.
-G Muestra solo los grupos al que pertenece ese usuario. [usuario] es para ver la información de cierto usuario. su: Sirve para loguearse como otro usuario.
su [opciones] [usuario]
Opciones:
- Obtiene un login de ese usuario. Es igual que poner -l o -login. -c Pasa un comando al shell con el usuario especificado.
Nota: Restrinja los permisos de /bin/login y /bin/su. Vea más adelante
para la explicación de por qué.
Aquí vemos un ejemplo de cómo debe hacerse. Antes de restringir su a un grupo privilegiado, primero debe crear ese grupo con groupadd. Por ejemplo, "redes" es el nombre de grupo que voy a utilizar. Asegúrese de
añadir a su usuario o a cualquier usuario privilegiado al grupo "redes" creado. Ejecute los siguientes comandos: chmod 0700 /bin/login
chgrp redes /bin/su chmod o-rx /bin/su
Grupos
El objetivo de los grupos es dar o restringir permisos sobre algunos archivos a ciertos usuarios (vea la siguiente sección sobre Permisos en Unix). Por ejemplo un archivo apunte.txtque pertenezca al grupo profesores, que
tenga permiso de lectura para el grupo y no para otros usuarios, podrá ser leído únicamente por el dueño y por usuarios que pertenezcan al grupo profesores. Cada usuario tiene un grupo principal (puede especificarse durante la creación con la opción GID, -g nombregrupo de useradd), puede pertenecer a diversos grupos y si conoce
la clave de algún grupo con clave puede volverse miembro durante una sesión. Los programas relacionados con grupos son:
groupadd Para agregar un grupo groupdel Para borrar un grupo groupmod Para modificar un grupo groupmod –n Cambiar el nombre de un Grupo groupmod –g Cambiar el nombre de un GID
groups Un usuario puede ver los grupos a los que pertenece con este programa newgrp Para cambiarme a otro grupo (al que debo pertenecer, por supuesto)
Cuando un usuario pertenece a más de un grupo, al entrar el sistema siempre será asignado al que aparece en el archivo /etc/passwd y para poderse cambiar a otro tendrá que hacerlo con el comando:
newgrp otro_grupo donde otro_grupo es otro de los grupos a los que pertenece.
El archivo /etc/group es el que contiene información acerca de los grupos. El formato de cada línea es: nombre_de_grupo:clave:GID:otros miembros
El campo clave es la clave del grupo transformada con DES o MD5. Si el grupo tiene clave shadow en este
Algunos ejemplos de grupos pueden ser:
root:*:0:
usuarios:*:100:alexa,pepe,cor invitados:*:200:
otros:*:250:sauron
El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo, usuarios, es para usuarios normales. Tiene un GID de 100. Los usuarios alexa, pepe y cor tienen acceso a
este grupo. Recuerde que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuarios
pueden pertenecer a más de un grupo, añadiendo sus nombres de usuario a otras líneas de grupo en
/etc/group. El comando groups lista a qué grupos se tiene acceso. El tercer grupo, invitados, es para
usuarios invitados, y otros es para "otros" usuarios. El usuario sauron tiene acceso a este grupo.
Como se puede ver, el campo clave de /etc/group raramente se utiliza. A veces se utiliza para dar una clave
para acceder a un grupo. Pocas veces esto es necesario. Para evitar que los usuarios cambien a grupos privilegiados (con el comando newgrp), se pone el campo de la clave a "*".
No es recomendable editar directamente estos archivos, sino más bien emplear los programas presentados en esta sección. Como hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única importancia real de las relaciones de grupo es la perteneciente a los permisos de archivos. Cada archivo tiene un grupo
propietario y un conjunto de permisos de grupo que define de que forma pueden acceder al archivo los usuarios
del grupo.
Hay varios grupos definidos en el sistema, como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer
a ninguno de estos grupos; se utilizan para permisos de archivos del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como usuarios. Si quiere ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo estudiantes, soporte y facultad.
Se pueden usar los comandos addgroup o groupadd para añadir grupos a su sistema. Normalmente es más
sencillo añadir líneas a /etc/group uno mismo, puesto que no se necesitan mas configuraciones para añadir un
grupo. Para borrar un grupo, solo hay que borrar su entrada de /etc/group.
Nota: Verifique que en el archivo /etc/passwd no haya usuarios perteneciendo a
ese grupo que va a eliminar. Ejemplo:
contable::101:cguerra,jpaz personal::102:agarcia,jpaz
Aquí, se han creado los grupos contable, con identificador de grupo 101 y personal, con GID 102. Los
miembros del grupo personal son los usuarios agarcia y jpaz, si por alguna razón quiere integrar otro usuario
en cualquier grupo, solo agregue una coma después del último miembro y escriba el nombre_de_usuario que le corresponda. Es conveniente indicar que si en el sistema de archivos se encuentra un directorio como:
drwxrwx--- 2 root personal 1024 Abr 29 11:32 confidencial/
Permisos
Haga un listado largo de cualquier directorio y vera algo como lo siguiente:
[alexa@linux]$ ls -la total 13
drwxr-sr-x 2 alexa user 1024 May 2 09:04 . drwxrwsr-x 4 root staff 1024 Apr 17 21:08 ..
-rw--- 1 alexa user 2541 May 2 22:04 .bash_history -rw-r--r-- 1 alexa user 164 Apr 23 14:57 .bash_profile -rw-r--r-- 1 alexa user 55 Apr 23 14:44 .bashrc -rwxrwxr-x 1 alexa user 0 Apr 14 19:29 a.out -rwxrwxr-x 1 alexa user 40 Apr 30 12:14 hola.pl -r--- 1 alexa user 64 Apr 29 14:04 hola -rwxrw-r-- 1 alexa user 902 Apr 29 13:57 prueba -rw-rw-r-- 1 alexa user 50 Apr 30 12:31 probador -rwxrwxr-x 1 alexa user 175 Apr 30 12:30 prue.sh -rwxrwxr-x 1 alexa user 56 Apr 23 15:08 quetal.sh
Como se puede apreciar en este listado, también están el directorio actual, representado por un punto "." y el
directorio padre representado por dos puntos "..". Ellos también poseen permisos y atributos que son
mostrados.
El primer campo que aparece en el listado es la máscara de permisos. Vamos a explicar qué significa esta máscara de 10 bits.
Esta máscara de 10 dígitos la puedo dividir en partes para entender mejor. Veamos unas tablas que nos esclarecerán un poco mas que significa cada uno de estos caracteres. Primero vamos a ver aquellos caracteres que podrían aparecer en el primer bit, que en el ejemplo anterior podemos ver que es un guión, esto nos indica que es un archivo común. La tabla siguiente explica el significado del primer símbolo de acuerdo al tipo de archivo:
Los siguientes 9 bits se toman en grupos de tres y cada grupo pertenece a una clase de permisos. Nos quedan tres grupos, entonces.
Primer grupo usuario dueño al que pertenece el archivo/directorio (u) Segundo grupo grupo al que pertenece dicho archivo/directorio (g) Tercer grupo todos los demás usuarios del sistema (o)
Los 3 tipos de permisos, tienen una correspondencia numérica.
r (en octal 4) lee (read) archivo o directorio
w (en octal 2) modifica/borra (write) archivo o directorio x (en octal 1) ejecuta (execute) archivo o busca el directorio
El dueño de un archivo controla que usuarios tienen permiso de acceso y de que manera pueden hacerlo; el comando ls -l despliega los permisos de acceso asociados a un archivo, el primer campo de 10 caracteres
describe los permisos asociados con ese archivo, un campo típico se ilustra a continuación :
-rwxrw-r-- 1 alexa user 902 Apr 29 13:57 prueba
El primer símbolo nos esta indicando que el archivo es un archivo común, generalmente de texto. El primer grupo de tres símbolos representa los permisos para el dueño del archivo (owner) que en este caso posee permisos de lectura, escritura y ejecución. El segundo grupo de tres símbolos representa los permisos para el grupo al cual pertenece el archivo (group), que en este caso tienen permisos de lectura y escritura. El tercer grupo de tres símbolos representa los permisos para todo el resto de los usuarios (other), en este caso es solo de lectura. El numero que sigue (1) representa el numero de punteros o inodos que el archivo posee. Esto representa la cantidad de enlaces que existen a este archivo y no interesa demasiado en este momento. A continuación está el nombre del dueño del archivo y del grupo al cual pertenece el archivo. El "902" representa el tamaño del
archivo expresado en bytes. Lo siguiente es la fecha y hora de modificación del archivo e inmediatamente después está el nombre del mismo.
Para comprender exactamente la máscara de permisos en formato numérico veamos la siguiente tabla, donde tenemos la correspondencia de cada permiso con la numeración en octal y en binario.
Todo esto nos será útil cuando queramos cambiar atributos de un determinado archivo o directorio. Por ejemplo para sacar permisos de lectura a los usuarios en archivos de configuración de un servidor.
Octal Binario
Número Número Permisos Descripción
0 000 --- Ningún permiso garantizado
1 001 --x Ejecutable 2 010 -w- Modificable 3 011 -wx Modificable/Ejecutable 4 100 r-- Legible 5 101 r-x Legible/Ejecutable 6 110 rw- Legible/Modificable 7 111 rwx Legible/Modificable/Ejecutable
Los permisos para estos 3 tipos de usuarios puede estar dado por una cadena de 9 caracteres. Veamos estos ejemplos:
Octal Dueño Grupo Otros Completo
Número Columna Columna Columna Código
777 rwx rwx rwx rwxrwxrwx
755 rwx r-x r-x rwxr-xr-x
700 rwx --- --- rwx---
666 rw- rw- rw- rw-rw-rw-
Veamos unos detalles más
Permisos: Son bits que definen el acceso a un fichero o directorio. Los permisos para directorio tienen un sentido diferente a los permisos para archivos. Más abajo se explican algunas diferencias. Lectura (r): Archivo: Poder acceder a los contenidos de un archivo
Directorio: Poder leer un directorio, ver qué ficheros contiene Escritura (w): Archivo: Poder modificar o añadir contenido a un archivo
Directorio: Poder borrar o mover ficheros en un directorio Ejecución(x): Archivo: Poder ejecutar un programa binario o guión de shell
Directorio: Poder entrar en un directorio
Nota: Tenga mucho cuidado con aquellos directorios que tengan permiso de escritura.
Cualquiera podría borrar un archivo, aunque no sea de su propiedad y esto puede ser un riesgo, tanto para el sistema como para los datos de los usuarios.
Comando chmod
Para cambiar la máscara de permisos de un archivo o directorio, usamos el comando chmod. La sintaxis de este
comando es la siguiente:
[permisos] puede estar en formato numérico, o en formato alfabético. El formato numérico es el que ya vimos,
los tres números en octal. El formato alfabético contiene los tipos de permisos en letras (r,w,x), en vez de
números y tengo que especificar a quien o quienes se lo voy a aplicar (u,g,o).
Sería así: con letras [ugo][+-=][rwx]
con números [0-7][0-7][0-7]
El método para cambiar un permiso con letras es el siguiente : Las letras u, g y o representan el Usuario, el
Grupo, y Otros (todos los demás). El signo + significa que el permiso se va a conceder, mientras que el signo
-significa que el permiso se va a revocar. El signo = significa que se instalen los permisos como se muestra a
continuación, algunos ejemplos de cambio de permisos son:
$ chmod u+x,g-w,o-w archivo1 $ chmod u=rx archivo1
El segundo método interpreta el número puesto como su equivalente en binario (nueve dígitos binarios), activando el permiso donde se haya puesto un 1 y desactivándolo donde se haya puesto un 0; por ejemplo:
$ chmod 755 archivo1
Significa que a archivo1 se le asignaron permisos de la siguiente manera:
7 5 5 111 101 101 rwx r-x r-x
Nota: En caso de duda, consulte en las tablas vistas, la correspondencia entre
números octales y binarios. Ejercicio:
Veamos la máscara de permisos de un archivo llamado estudio:
$ ls -l estudio
-rw-rw-r-- 1 alexa alexa 57 May 5 16:47 estudio
El siguiente comando elimina todos los permisos de acceso para el grupo y el resto de usuarios:
$ chmod go-rw estudio $ ls -l estudio
-rw--- 1 alexa alexa 57 May 5 16:47 estudio
El administrador puede cambiar los permisos de todos los archivos del sistema y puede fijar una política inicial para la máscara de permisos que todos los usuarios tendrán.
Comando chgrp
Además de chmod se emplean los siguientes programas para realizar estas labores: chgrp grupo archivos
Cambia el grupo de el o los archivos especificados. Por ejemplo:
# chgrp profesores notas* tps*
cambiará todos los archivos con prefijos notas y tps al grupo profesores. Como opción puede recibir -R
para aplicar el cambio recursivamente en un directorio (es decir a subdirectorios también). Este programa puede ser usado por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que el mismo usuario pertenezca.
Comando chown
Cambia el usuario (y opcionalmente el grupo) de los archivos especificados.
chown usuario[:grupo] archivos
Al igual que chgrp con la opción -R efectúa el cambio recursivamente en subdirectorios. Por ejemplo # chown -R ale:administra tpgnutella/
Pondrá al usuario ale como dueño de todos los archivos y subdirectorios del directorio tpgnutella, todos
quedarán con el grupo administra. También puede usarse para cambiar el grupo de un archivo (si no se
especifica el nombre del usuario).
Además tenemos otros bits de permisos que no podemos pasar por alto cuando estamos tratando de temas de seguridad.
Sticky bit
El sticky bit tiene significado cuando se aplica a directorios. Si el sticky bit está activo en un directorio, un usuario sólo puede borrar archivos que son de su propiedad o para los que tiene permiso de escritura, incluso cuando tiene acceso de escritura al directorio. En un directorio evita que un usuario que no sea el dueño del directorio pero que tenga permiso de escritura, pueda borrar o renombrar archivos que no le pertenecen.