Administración Linux
Transcripción
Administración Linux
Admon. Linux: Sistemas Archivos Sistemas Operativos II Administración Linux Administración Sistemas Archivos Roberto Gómez Cárdenas [email protected] http://webdia.cem.itesm.mx/ac/rogomez Roberto Gómez C. Lámina 1 Los sistemas de archivos Usuario FAT (FAT-12 FAT-16 FAT-32 Disco VFAT Usuario 32- BIT FAT New Technologie File Systems NTFS Version 1.1 / 4.0 NTFS High Versión Performance File Systems BeOS File Systems (BFS) De propósito general (minix, xiafs, extfs, ext2fs, efs, reiserfs, enh-fs) Sistema Arhivos de Red (NFS, AFS, Coda, nbd, GFS) Especiales (tmpfs, swapfs, userfs, devfs) De solo lectura (High Sierra, iso9660, Rock Ridge, Joliet, Trivia, UDF) Lámina 2 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 1 Admon. Linux: Sistemas Archivos Sistemas Operativos II Lo que debe de saber • • • • Tipos sistemas archivos Características FHS Directorios dispositivos Formatear y verificar sistemas archivos – comando fdisk • Formateo de una partición – comando mkfs • Análisis y reparación de particiones – comando fsck • El sistema de archivos ext2 Roberto Gómez C. Lámina 3 Seguridad sistemas archivos • Basada en el concepto de permisos • Permisos permiten controlar quien puede acceder sus archivos y directorios para lectura, escritura y ejecución. • Algunos permiten a ciertos programas operar con permisos extras (e.g. super-usuario) • En nuevos sistemas bits de permisos en directorios pueden usarse para prohibir a usuarios que borren archivos que no le pertenecen. Lámina 4 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 2 Admon. Linux: Sistemas Archivos Sistemas Operativos II Los permisos de los archivos • Archivos cuentan con permisos, el significado varia un poco entre archivos y directorios ejecución (propietario) escritura (propietario) lectura (propietario) 0 ejecución otros) escritura (otros) lectura (otros) 0 0 ejecución (grupo) escritura (grupo) 0 0 0 0 0 0 lectura (grupo) Roberto Gómez C. Lámina 5 Significado permisos en directorios • r: – autorización de leer el directorio ( comando ls ) • w: – autorización de escribir en el directorio – (creación, modificación o supresión de archivos) • x: – autorización para posesionarse en el directorio ( comando cd ) Lámina 6 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 3 Admon. Linux: Sistemas Archivos Sistemas Operativos II Comandos útiles para manejo permisos archivos • Comando ls -l – despliega los bits de permisos asociado con un archivo o directorio emata@francia:34> ls -l total 4 d r w x r - x r - x 1 cachafas 512 Oct 12 10:13 Sundraw d r w x r - x r - x 1 cachafas 512 Dec 11 20:13 Sunpaint - r w x r - x r - x 1 cachafas 512 Sep 15 18:13 toto - r w - r - x - - x 1 cachafas 512 Jan 12 1999 curso.html emata@francia:35> Roberto Gómez C. Lámina 7 Comandos útiles para manejo permisos archivos • Comando chmod – permite cambiar los permisos – permisos en formato octal o simbólico emata@francia:34> la -lg e1 - r w - r w - r w - 1 toto 0 Oct 12 18:20 e1 emata@francia:36> chmod 755 e1 emata@francia:37> ls -l e1 - r w x r - x r - x 1 toto 0 Oct 12 18:20 e1 emata@francia:38> chmod a-x e1 emata@francia:39> ls -l e1 - r w - r - - r - - 1 toto 0 Oct 12 18:20 e1 emata@francia:40> Lámina 8 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 4 Admon. Linux: Sistemas Archivos Sistemas Operativos II Comandos útiles para manejo permisos archivos • Comando: chown usuario archivo(s) – cambia el propietario de un archivo o directorio. – en BSD solo puede ejecutarlo el super-usuario – en System V cualquier usuario puede ejecutarlo en sus propios archivos # ls -l -rw-r-r-- 1 emata 19 May 1 18:09 arch1 # chown root arch1 # ls -l -rw-r-r-- 1 # root 19 May 1 18:09 arch1 Roberto Gómez C. Lámina 9 Comandos útiles para manejo permisos archivos • Comando chgrp – cambia el grupo de un archivo o directorio. – sintaxis: chgrp grupo archivo(s) – usuario puede ejecutarlo en los propios archivos emata@francia:72> ls -lg -rw-r-r-- 1 emata 40 19 May 1 18:09 arch1 emata@francia:73> chgrp 22 arch1 emata@francia:74> ls -lg -rw-r-r-- 1 emata 22 emata@francia:75> Lámina 10 Dr. Roberto Gómez Cárdenas 19 May 1 18:09 arch1 Roberto Gómez C. 5 Admon. Linux: Sistemas Archivos Sistemas Operativos II Permisos por default y umask • Abreviación de user file creation mode mask • El número octal de cuatro digitos que Unix usa para determinar los permisos de los nuevos archivos creados. • Especifica los permisos que no se quiere que tengan los nuevos archivos y directorios. • Comando trabaja haciendo un AND de bits con el complemento de umask • Por default los archivos se crean con permiso 666 y los directorios con 777 Roberto Gómez C. Lámina 11 El comando umask • Es un comando interno (built-in) de sh, ksh y csh • Los valores más comunes son 022, 027 y 077 • Un valor de 022 permite que lea y escriba todos los archivos recien creados, y el resto solo puede leerlos. 0666 (mode de creación por default) 0022 (valor de umask) 0644 (modo resultante) • Con 077 solo el propietario puede leer y escribir los archivos creados 0666 (mode de creación por default) 0077 (valor de umask) 0600 (modo resultante) Lámina 12 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 6 Admon. Linux: Sistemas Archivos Sistemas Operativos II El comando umask (cont) • Una forma simple de calcular valores de umask es recordar que: – valor 2: apaga el permiso de escritura – valor 7: apaga permisos lectura, escritura y ejecución • Si se esta usando ksh, se puede asignar el valor de umask de forma simbólica, tal y como se hace con el comando chmod emata@francia:7> umask u=rwx, g=x emata@francia:8> umask 067 Roberto Gómez C. Lámina 13 El sticky bit • Aplicable en archivos ejecutables • Le indica a Unix que deje el ejecutable en memoria después de que esta haya terminado su ejecución • Dejando el programa en memoria, reduce el tiempo para otros usuarios (en teoría) • Fue una interesante idea hace tiempo, pero es obsoleta hoy en día – técnicas memoria virtual la hacen innecesaria – paginación hace que ya no se use Lámina 14 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 7 Admon. Linux: Sistemas Archivos Sistemas Operativos II Sticky bit y los directorios • Si un usuario tiene permiso escritura en un directorio puede renombrar o borrar archivos en él (aunque no le pertenezcan) • Varias nuevas versiones de Unix tiene una forma de impedir lo anterior • El propietario del directorio puede activar el sticky bit • Los usuarios que pueden renombrar o borrar archivos en dicho subdirectorio son: – el propietario del archivo – el propietario del directorio – el superusuario Roberto Gómez C. Lámina 15 Ejemplo uso sticky bit en directorios egarcia> mkdir proyecto egarcia> chmod 777 proyecto egarcia> ls -ld drwxrwxrwx 2 egarcia profes 32 Sep 23 19:30 proyecto /* usuario jvazquez borra un archivo que no le pertenece */ jvazquez> cd /home/usr/egarcia/proyecto ls -lg total 3 -rw-r--r-- 1 rogomez profes 120 Sep 23 19:23 data.rogomez -rw-r--r-- 1 jvazquez profes 3421 Sep 24 20:03 data.jvazquez -rw-r--r-- 1 egarcia profes 728 Sep 25 01:34 data.egarcia -rw-r--r-- 1 aortiz profes 716 Sep 27 12:52 data.aortiz jvazquez> rm data.aortiz Lámina 16 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 8 Admon. Linux: Sistemas Archivos Sistemas Operativos II jvazquez> ls -lg total 2 -rw-r--r-- 1 rogomez -rw-r--r-- 1 jvazquez -rw-r--r-- 1 egarcia profes 120 Sep 23 19:23 data.rogomez profes 3421 Sep 24 20:03 data.jvazquez profes 728 Sep 25 01:34 data.egarcia egarcia> chmod 1777 proyecto egarcia> ls -ld drwxrwxrwxt 2 egarcia profes 32 Sep 23 19:30 proyecto jvazquez> rm data.rogomez data.rogomez: 644 mode ? y rm: data.rogomez not removed Permission denied jvazquez> Roberto Gómez C. Lámina 17 Los usuarios y los procesos • Procesos pertenecen a un solo y único usuario • El propietario es el que lanzó el proceso – puede enviarle señales y, en consecuencia, matarlo • Para lanzarlo debe poseer los permisos de ejecución del archivo que contiene el código binario Lámina 18 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 9 Admon. Linux: Sistemas Archivos Sistemas Operativos II • La “propiedad” del archivo del código no influye en la del proceso – usuario toto ejecuta código de un archivo que pertenece a cachafas – el proceso pertenece a usuario toto • Esto es limitativo – se desea permitir a un usuario modificar el contenido de un archivo sin darle derecho de escritura en él – ejemplo archivo /etc/passwd, un usuario debe poder cambiar su password sin poder modificar el archivo que lo contiene Roberto Gómez C. Lámina 19 El bit Set UID (SUID) • Derecho complementario de un proceso que condiciona la propiedad del proceso que ejecuta su código • Retomando el ejemplo anterior: – si usuario cachafas activa el bit SUID del archivo – el usuario toto es el propietario del archivo, pero el propietario efectivo es cachafas – toto adquiere los derechos de cachafas durante el tiempo que dure la ejecución del proceso Lámina 20 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 10 Admon. Linux: Sistemas Archivos Sistemas Operativos II Cuidados del bit SUID • El bit SUID puede representar un hoyo en la seguridad del sistema • Es necesario minimizar el número de archivos que pertenezcan al super-usuario y que tengan activado el bit SUID • Algunas versiones de Unix ignoran el bit SUID y SGID en scripts, solo programas compilados pueden tenerlo activo Roberto Gómez C. Lámina 21 El bit Set Group ID (SGID) • Mismo principio que SUID pero para grupos • Ejecutar un archivo con bit SGID activo asigna el ID de grupo del usuario al mismo que el del archivo ejecutado, durante el tiempo que dura la ejecución de este • Archivos con SGID o SUID activo pierden sus propiedades especiales cuando son copiados Lámina 22 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 11 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo bits SUID y SGID rogomez@armagnac:3> ls -l /usr/bin/passwd /usr/bin/login /usr/bin/mailx /etc/passwd -rw-r--r-- 1 root 752 Oct 22 1998 /etc/passwd -r-sr-xr-x 1 root 29192 Jul 15 1997 /usr/bin/login* -r-x--s--x 1 bin 127540 Jul 15 1997 /usr/bin/mailx* -r-sr-sr-x 3 root 96796 Jul 15 1997 /usr/bin/passwd* rogomez@armagnac:4> Roberto Gómez C. Lámina 23 Comando chmod: SGID, SUID, sticky bit chmod n777 a1 Valor n Efecto Ejemplo Resultado ls -l a1 1 Activar sticky bit chmod 1777 a1 -rwxrwxrwt 2 Activar SGID chmod 2777 a1 -rwxrwsrwx 4 Activar SUID chmod 4777 a1 -rwsrwxrwx 6 Activar SUID y SGID chmod 6777 a1 -rwsrwxswx 0 Desactivar sticky bit, SUID y SGID chmod 0777 a1 -rwxrwxrwx Lámina 24 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 12 Admon. Linux: Sistemas Archivos Sistemas Operativos II Las listas de control de acceso (acl) • Algunos sistemas que cumplen con el libro Naranja, han cambiado el sistema de protección de permisos al de listas de control de acceso. • Se basa en el concepto de derechos sobreentendidos • Se trata de afinar la noción de permiso a usuarios o grupos específicos • Se puede dotar de permisos de rwx a un determinado usuario o grupo de usuarios • Existen en Unix desde hace más de diez años • No todas las versiones de Unix lo soportan Roberto Gómez C. Lámina 25 Comandos • Dos comandos – getfacl archivo • despliega el ACL del archivo – setfacl archivo • opción -m: modificación del ACL user:<user name>:rwx group:<group name>:rwx other:rwx • opción -x: borrar entradas ACL setfacl -x g:staff file • Necesario montaje apropiado mount -o remount,acl / Lámina 26 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 13 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo uso ACLs Desplegando permisos de forma normal: root@cachafas:2# ls -l /usr/local/sshd - -rwx------ 1 root bin 2616160 Apr 28 1997 /usr/local/sshd root@cachafas:3# Verificando permisos con comando getfacl: root@cachafas:3# getfacl /usr/local/sshd # file: /usr/local/sshd # owner: root # group: bin user::rwx group::--mask:--other:--root@cachafas:4# Roberto Gómez C. Lámina 27 Extendiendo los permisos root@cachafas:4# setfacl -m user:toni:r-x /usr/local/sshd root@cachafas:5# getfacl /usr/local/sshd # file: /usr/local/sshd # owner: root # group: bin user::rwx user:toni:r-x group::--mask:--other:--root@cachafas:6# Lámina 28 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 14 Admon. Linux: Sistemas Archivos Sistemas Operativos II Advertencia ACLs • ACLs no son un estándar entre las versiones de Unix. • Es posible que no funcionen en un ambiente de sistema de archivos en red. • Sun planea soportar ACLs a través de extensiones en NFS3, más que implementar ACLs en su implementación. • Hay que asegurarse que cualquier sistema que se exporte esta protegido adecuadamente por los permisos UNIX por default y las condiciones del propietario Roberto Gómez C. Lámina 29 Respaldos (backups) • Es una copia de los datos escrita en cinta u otro medio de almacenamiento duradero. • De manera rutinaria se recuerda a los usuarios de computadoras que respalden su trabajo con frecuencia. • Los administradores de sitios pueden tener la responsabilidad de respaldar docenas o incluso de cientos de máquinas • Comandos en Unix: – comandos de compresión – comando tar Lámina 30 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 15 Admon. Linux: Sistemas Archivos Sistemas Operativos II Comandos comprimir Formato archivo Comando para comprimir/decomprimir Comentarios .Z zcat / uncompress Lempel -Ziv code .z pcat / unpack Huffman Code .zip zip / unzip Lempel-Ziv code .gz gzip/gunzip versión GNU de zip .rar rar / unrar unrar e -r archivo.rar unrar x -r .bzip bzip / bunzip2 bzip2 archivo unzip2 archivo.bz2 Roberto Gómez C. Lámina 31 Ejemplo comandos compresión toto@cachafas:2>ls -l total 1080 -rw-r--r-- 1 rogomez 394751 Jan 26 -rw-r--r-- 1 rogomez 372670 Jan 26 -rw-r--r-- 1 rogomez 300325 Jan 26 toto@cachafas:3>gzip arch1.pdf toto@cachafas:4>ls -l total 1064 -rw-r--r-- 1 rogomez 382986 Jan 26 -rw-r--r-- 1 rogomez 372670 Jan 26 -rw-r--r-- 1 rogomez 300325 Jan 26 toto@cachafas:5>gunzip arch1.pdf.gz toto@cachafas:6>ls -l total 1080 -rw-r--r-- 1 rogomez 394751 Jan 26 -rw-r--r-- 1 rogomez 372670 Jan 26 -rw-r--r-- 1 rogomez 300325 Jan 26 toto@cachafas:7> Lámina 32 Dr. Roberto Gómez Cárdenas 2001 arch1.pdf 2001 arch2.pdf 2001 arch3.pdf 2001 arch1.pdf.gz 2001 arch2.pdf 2001 arch3.pdf 2001 arch1.pdf 2001 arch2.pdf 2001 arch3.pdf Roberto Gómez C. 16 Admon. Linux: Sistemas Archivos Sistemas Operativos II Comando tar • Crea archivos de cinta, añade o extrae archivos. • El comando archiva o extrae varios archivos en un solo archivo con extensión .tar • Sintaxis: tar c [bBefFhiloPvwX [ 0-7]] [block ] [tarfile ][exclude-file ] [ -I include-file ] [-C directory file | file ]... tar r [bBefFhilvw [ 0-7]] [block ] [ -I include-file ] [-C directory file | file ]... tar u [bBefFhilvw [ 0-7]] [block ] [tarfile ] file ... tar t [bBefFhilvX [ 0-7]] [block ] [tarfile ][exclude-file ] [ -I include-file | file]... tar x [BefFhilmopvwX [ 0-7]] [tarfile ][exclude-file ] [ -I include-file ] [ file ]... Roberto Gómez C. Lámina 33 Opciones comando tar • c: crear archivo • r: reemplazar • u: actualizar. Los archivos son añadidos al archivo tar si no existen • x: extraer/ restablecer • v: verbose, da información de lo que el comando tar está haciendo Lámina 34 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 17 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo comando tar toto@cachafas:7> ls -l -rw-r-r-- 1 al444561 96 Jul 1 17:08 arch1 -rw-r-r-- 1 al444561 456 May 1 18:09 arch2 -rw-r-r-- 1 al444561 56 May 5 2:69 arch3 toto@cachafas:8> tar -cfv nuevo arch1 arch2 toto@cachafas:9> ls -l -rw-r-r-- 1 al444561 96 Jul 1 17:08 arch1 -rw-r-r-- 1 al444561 456 May 1 18:09 arch2 -rw-r-r-- 1 al444561 56 May 5 2:69 arch3 -rw-r-r-- 1 al444561 680 Jul 1 17:10 nuevo.tar toto@cachafas:10> rm arch1 toto@cachafas:11> rm arch2 toto@cachafas:12> Roberto Gómez C. Lámina 35 Ejemplo comando tar (cont) toto@cachafas:12> ls -l -rw-r-r-- 1 al444561 56 -rw-r-r-- 1 al444561 May 5 2:69 arch3 680 Jul 1 17:10 nuevo.tar toto@cachafas:13> tar -xfv nuevo toto@cachafas:14> ls -l -rw-r-r-- 1 al444561 -rw-r-r-- 1 al444561 456 May 1 18:09 arch2 96 Jul 1 17:08 arch1 -rw-r-r-- 1 al444561 56 May 5 2:69 arch3 -rw-r-r-- 1 al444561 680 Jul 1 17:10 nuevo.tar toto@cachafas:15> Lámina 36 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 18 Admon. Linux: Sistemas Archivos Sistemas Operativos II Compresión y empaquetamiento • Comando zip comprime y empaqueta, – gzip ó bzip2 sólo comprimen archivos ,no directorios • Para comprimir y empaquetar en un archivo al mismo tiempo hay que combinar el tar y el gzip o el bzip2 • Archivos .tar.gz (tgz) – Empaquetar y comprimir: tar -zvcf archivo.tgz directorio – Desempaquetar y descomprimir: tar -zvxf archivo.tgz – Ver contenido: tar -zvtf archivo.tgz • Archivos tar.bz2 (tbz) – Empaquetar y comprimir: tar -jvcf archivo.tbz directorio Desempaquetar y descomprimir: tar -jvxf archivo.tbz – Ver contenido: tar -jvtf archivo.tbz Roberto Gómez C. Lámina 37 El comando dump • Construye una lista de los archivos que han sido modificados desde el último dump. – Posibilidad de acceder a multiples cintas – Archivos de cualquier tipo (aún dispositivos) pueden ser respaldados y restablecidos – permisos, propiedades y estampillas tiempo son conservados – respaldos pueden hacerse de forma incremental • No es conveniente usar dump en un sistema de archivo montado con actividad. – la forma _canónica_ de usar dump es respaldar sistemas de archivo _desmontados_; si no se puede desmontar, entonces hacerlo a una hora en la cual no haya movimiento. Lámina 38 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 19 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo comando dump • Realizar respaldo de una partición /dev/sda1 en /dev/rmt0 # dump 0sfu 3600 /dev/rmt0 /dev/sda1 # dump 0sfu mis02: /dev/rmt0 /dev/sda1 • Segunda orden permite copia de seguridad de un disco sobre un dispositivo remoto – por ejemplo situado aquí sobre la máquina "mis02". • Algunas opciones de dump: – 0 a 9 : nivel de copia de seguridad. 0 corresponde a una copia de seguridad completa, mientras que los otros niveles n corresponden a la copia de seguridad de archivos que fueron modificados desde la enésima copia de seguridad; – s : tamaño de la cinta en pies; – f : archivo. Puede estar compuesto de máquina:archivo; – u : escritura de la fecha y del nivel de copia de seguridad en el archivo /etc/dumpdate Roberto Gómez C. Lámina 39 Comando restore • Para restaurar la cinta es necesario: # restore -if /dev/rmt0 # restore -if mis02:/dev/rmt0 • Para restaurar completamente una cinta: # restore -if /dev/rmt0 # restore -if mis02:/dev/rmt0 Lámina 40 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 20 Admon. Linux: Sistemas Archivos Sistemas Operativos II Monitoreando sistemas archivos • Buscar anomalías – comando find() – usarlo para encontrar archivos no usuales o que no deberían de estar en el sistema • Eliminar anomalías – comando rm – comando rmdir Roberto Gómez C. Lámina 41 Comando find • Util para encontrar un archivo que cumpla con determinadas características • El usuario no necesita de ningún privilegio para poder ejecutar dicho comando • Sintaxis: – find pathname(s) expression(s) action(s) – pathname • path del directorio donde empezara la busqueda – expression • criterio de busqueda • si la expresión es verdadera, la acción especificada se llevará a cabo Lámina 42 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 21 Admon. Linux: Sistemas Archivos Sistemas Operativos II Expresiones comando find Expresión -name filename Busca archivos que concuerden con el nombre -size [+|-] n mayores que +n, menores –n o iguales a n -atime [+|-] n -user loginID accedidos mas de +n días, menores –n días y exactamente n días modificados mas de +n días, menores –n días y exactamente n días tengan propietario a loginID -type concuerden con un tipo archivo (f,d,s) - perm cuenten con ciertos permisos -mtime [+|-] n Roberto Gómez C. Lámina 43 Acciones comando find Acción Definición -exec command {} \; ejecuta command a cada archivo encontrado. Los corchetes { }, delimita donde se pasa el archivo como argumento. Espacio, backslash y punto y coma (\;) delimita el final del comando -ok command {} \; especifica la forma interactiva de –exec. Requiere entrada antes que find aplique el command al archivo, -print imprime el path completo en la salida estándar, es el default -ls imprime el pathname con todas sus características Lámina 44 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 22 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplos uso comando find • Busqueda archivos llamado core, desde directorio raíz $ find / -name core • Busqueda archivos llamados core, desde directorio hogar y borrarlos cuando se encuentran $ find ~ -name core - exec rm {} \; • Archivos, desde directorio trabajo, que no han sido modificados en los últimos 90 días $ find . - mtime +90 • Archivos mayores que 57 bloques (512-byte blocks) a partir directorio hogar $ find ~ -size +57 Roberto Gómez C. Lámina 45 Borrando archivos: rm • Sintaxis rm: – rm [-firv ] archivo(s) • borra el nombre de un archivo • si ese nombre fuera el último (numero de ligas = 1), el archivo será "físicamente" suprimido. • opciones: – – – – f: ignora archivos no existentes y nunca previene i: interactivo, previene al usuario r: borra contenido de directorios recursivamente v: imprime nombre archivo antes de borrarlo Lámina 46 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 23 Admon. Linux: Sistemas Archivos Sistemas Operativos II Borrando directorios • Sintaxis: – rmdir directorios • Borra un directorio. • No borra el directorio si este no se encuentra vacío. Roberto Gómez C. Lámina 47 Borrando archivos curiosos • ¿Cómo borrar archivos que comienzan con un guión? – rm -toto – el - es considerado como una opción – existen dos formas borrarlo: emata@francia:7> rm ./-toto emata@francia:8> rm - -toto Lámina 48 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 24 Admon. Linux: Sistemas Archivos Sistemas Operativos II Borrando archivos curiosos • ¿Cómo borrar archivos cuyo nombre incluye caracteres de control? – usar el comando rm con la opción -i y un asterisco emata@francia:7> rm -i * rm: remove faq.html (y/n)? n rm: remove toto (y/n)? y emata@francia:8> Roberto Gómez C. Lámina 49 Descubriendo archivos curiosos • Usar la opción -q del comando ls • los archivos con caracteres de control en sus nombres apareceran con signos de interrogación • se aconseja definir un alias emata@francia:7> alias ls ls -q emata@francia:8> ls f* faq.html fmMacros fmdictionary fo?o faxmenu.sea.hqx fmMacrosLog.backup emata@francia:9> Lámina 50 Dr. Roberto Gómez Cárdenas fmfilesvisited Roberto Gómez C. 25 Admon. Linux: Sistemas Archivos Sistemas Operativos II NFS Network File System Roberto Gómez C. Lámina 51 NFS: Network File System • Desarrollado por Sun Microsystems en 1990. • Diseñado para permitir que diferentes hosts compartan archivos a través de la red. • Uso común: permitir que estaciones diskless almacenen información en un host central. • Basado en paradigma cliente/servidor: – servidor NFS exporta uno o más sistemas de archivos – cliente puede montar el sistema de archivos o un sub-árbol de él en su jerarquía de archivos tal y como si montara un sistemas archivos local Lámina 52 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 26 Admon. Linux: Sistemas Archivos Sistemas Operativos II Particiones disco y puntos de montaje partición de la raíz / } } /dev/hda1 /dev/hda2 tmp etc bin punto de montaje usr users bin lib include hugo paco /dev/hdb luis } Roberto Gómez C. Lámina 53 Los comandos mount/umount • Sintaxis comando mount mount -t sistema_archivos dispositivo directorio [-o opciones] • Los argumentos de mount – sistemas archivos: cualquiera de los siguientes: Tipo Descripción ext2 Sistema de archivos de Linux. msdos Sistema de archivos de DOS. vfat Sistema de archivos de Windows 9X (nombres largos) iso9660 Sistema de archivos de CD-ROM nfs Sistema de archivos compartido por red (``exportado'') Lámina 54 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 27 Admon. Linux: Sistemas Archivos Sistemas Operativos II Montando sistemas archivos remotos • Usar comando mount • A través de las entradas en la tabla de sistema de archivo: /etc/fstab – estas entradas son leídas como respuesta a un comando mount -a o mountall • Usando el automounter, programa que monta un sistema de archivos por demanda y los desmonta de nuevo si no son accesados durante unos minutos – operación controlada usando un conjunto de mapas de automonteo que pueden ser archivos locales o mapas NIS Roberto Gómez C. Lámina 55 Sintaxis mount mount -t sistema_archivos dispositivo directorio [-o opciones] • dispositivo – puede ser cualquier dispositivo del directorio /dev o, en el caso de nfs, un directorio de otra computadora • directorio – directorio donde estará el contenido del dispositivo • opciones – pueden ser cualquiera de la tabla – en el caso de no poner ninguna opción, mount utilizará las opciones por defecto • rw, suid, dev, exec, auto, nouser, async Lámina 56 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 28 Admon. Linux: Sistemas Archivos Sistemas Operativos II Opciones comando mount Opción Descripción rw Lectura/escritura. ro Sólo lectura. exec Se permite ejecución. user Los usuarios pueden ``montar''/``desmontar''. suid Tiene efecto los identificadores de propietario y del grupo auto Se puede montar automáticamente. async Modo asíncrono. sync Modo síncrono. dev Supone que es un dispositivo de caracteres o bloques. • Un ejemplo simple mount /dev/dsk/ls0 /users Roberto Gómez C. Lámina 57 Ejemplos mount y umount • Disquete de DOS: # mount -t msdos /dev/fd0 /mnt/floppy -o rw,noexec # umount /mnt/floppy • Disquete de Windows 9X: # mount -t vfat /dev/fd0 /mnt/floppy -o user,rw # umount /mnt/floppy • CD-ROM: # mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro # umount /mnt/cdrom • Directorio exportado de host2: # mount -t nfs host2:/tmp /mnt/host2 # umount /mnt/host2 Lámina 58 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 29 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo montajes mount local mount local Máquina: toto Máquina: cachafas / toto donald mimi / mount remotos cachafas hugo paco luis toto donald mimi cachafas hugo paco luis • Los puntos montaje /toto /cachafas son nombrados después de la máquina cuyo sistema de archivos es montado en ese punto – no es esencial, pero es una convención que evita confusiones • NFS no garantiza una consistencia global del sistema de archivos Roberto Gómez C. Lámina 59 El archivo fstab • Archivo configuración que almacena información de todas las particiones y dispositivos de almacenamiento en la computadora. – donde y como se van a montar las particiones/dispositivos • Archivo localizado en /etc – /etc/fstab – en Solaris se conoce como /etc/vfstab • Texto en claro, edición con cualquier editor y con privilegios de root • Archivo leído por el comando mount Lámina 60 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 30 Admon. Linux: Sistemas Archivos Sistemas Operativos II Organización del archivo • Dispositivo/partición a montar • Punto de montaje • Tipo de sistema de archivos • Opciones de montaje • Dump • fsck Roberto Gómez C. Lámina 61 La primera columna • Indican el dispositivo o partición y el punto de montaje. • El punto de montaje especificado para un dispositivo en /etc/fstab es el punto de montaje por defecto. • Es el directorio donde el dispositivo será montado, sino se especifica cualquier otro punto de montaje. • La mayor parte de las distribuciones Linux cuentan con directorios especiales para puntos de montaje – RedHat: directorio /mnt – SySE: /media Lámina 62 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 31 Admon. Linux: Sistemas Archivos Sistemas Operativos II Tipos de sistemas de archivos • ext2, ext3, reiserfs – sistemas de archivos estándar de Linux – ext3 y reiserfs soportan “journalisation¨” • swap – partición de intercambio • vfat y ntfs – particiones Windows • auto – no es un sistema de archivos, significa que el sistema de archivos es detectado automáticamente, p.e. floopy, CD-ROM • otros – adfs, affs, coda, coherent, cramfs, devpts, efs, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, proc, qnx4, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, xenix, xfs Roberto Gómez C. Lámina 63 Opciones de montaje … • auto/noauto – con la opción auto el dispositivo se monta automáticamente – es la opción por defecto – con la opcion noauto dispositivo solo se puede montar explicitamente • user/nouser – permite que usuarios comunes y corrientes monten el dispositivo – nouser solo permite que el usuario root (opción por defecto) – posible causa de que un usuario no pueda montar su CDROM, floppy, particion Windows, etc • exec/noexec – exec permite ejeuctar binarios que se encuentran en dicha partición – noexec usado en particiones que contienen binarios que no se desea, o no se pueden, ejecutar (p.e. partición Windows) Lámina 64 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 32 Admon. Linux: Sistemas Archivos Sistemas Operativos II Opciones de montaje (2) • ro – monta el sistema de archivos en solo lectura • rw – monta el sistema de archivos como de lectura/escritura • suid/nosuid – permite/bloquea la operación de los bits SUID y SGID • dev/nodev – permite/bloquea acceso a archivos especiales de dispositivos • sync – especifica como se debe hacer la entrada/salida en el sistema de archivos – sync significa que debe hacer de forma síncrona • defaults – utiliza los opciones por defecto: rw, suid, dev, exec, auto, nouser, y async Roberto Gómez C. Lámina 65 Columna dump y fsck • Columna dump – dump: utilería de respaldo – utilería dump la verifica y usa el número para decidir si el sistema de archivos debe respaldarse – si cuenta con un valor de cero, dump ignora la partición • Columna fsck – fsck: utilidad de verificación de sistemas archivos – comando fsck verifica el valor de la columna para determinar el orden en que el sistema de archivos será verificado – si es cero, el sistema no es verificado Lámina 66 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 33 Admon. Linux: Sistemas Archivos Sistemas Operativos II El archivo /etc/exports • Archivo que lista los archivos que se pueden exportar a otros sistemas. • Una línea en este archivo contiene el nombre del sistema de archivos a exportar y una lista de hosts que puede montarlo. • Si no se especifica ningún host, cualquier host puede montar el sistema de archivos. • Se pueden usar grupos de hosts en lugar de hosts individuales. • Archivo en texto claro. Roberto Gómez C. Lámina 67 Sintaxis archivo /etc/export directorio1 directorio2 maquina1(opciones) maquina2(opciones) maquina1(opciones) maquina3(opciones) • Contiene el directorio a exportar, las máquinas que pueden usarlo y las opciones de cómo exportarlo • Las líneas en blanco son ignoradas, se pueden comentar líneas con el símbolo # • Líneas largas pueden ser divididas con una barra invertida (\). • Cada sistema de archivos exportado debe tener su propia línea. • Las máquinas autorizadas debe estar separada por un espacio. • Las opciones para cada uno de las máquinas deben ser colocadas entre paréntesis directamente detrás del identificador de la máquina, sin ningún espacio de separación entre la máquina y el primer paréntesis. Lámina 68 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 34 Admon. Linux: Sistemas Archivos Sistemas Operativos II Definiendo las máquinas • Una sola máquina – nombre completo de dominio, hostname o IP • Comodines – carácter * o ? para referenciar un grupo de hosts – cuidado: *.gpo.com permite ventas.gpo.com, pero no toto.ventas.gpo.com • Redes IP – permite acceso a máquinas basadas en sus direcciones IP dentro de una red más grande – por ejemplo: 192.168.0.0/15 (192.168.0.0 - 192.168.0.15) • Grupos de redes – permite que un nombre de grupo de red NIS sea usada – escrita como @<group-name> – pone al servidor NIS controlando el acceso al sistema de archivos, donde usuarios pueden ser borrados o añadidos de un grupo NIS Roberto Gómez C. Lámina 69 Opciones /etc/export … • ro – solo lectura • rw – lectura escritura • aync / sync – Permite al servidor escribir los datos en el disco cuando lo crea conveniente – host realiza cambios a sistema archivos rw y el servidor cae, datos se pueden perder – activando opción sync todos las escrituras deben ser confirmadas antes de la que la petición del cliente sea completada • wdelay / no_wdelay – Provoca que el servidor NFS retrase el escribir a disco si sospecha que otra petición de escritura es inminente. – Esto puede mejorar el rendimiento reduciendo las veces que se debe acceder al disco por comandos de escritura separados Lámina 70 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 35 Admon. Linux: Sistemas Archivos Sistemas Operativos II Opciones /etc/export (2) • root_squash / no_root_squash – asigna a los usuarios root conectados remotamente los privilegios del usuario nobody – opción no_root_squash lo desactiva • all_squash – reconvierte a todos los usuarios, no solo a root • anonuid anoigid – permite especificar los ID de usuario y grupo para usar con usuarios remotos desde una máquina particular – se puede crear una cuenta especial para usuarios NFS remotos para compartir y especificar • anouid = <valor-uid> (valor-uid: numero del id del usuario) • anongid = <valor-gid> (valor-gid: número del id del grupo) Roberto Gómez C. Lámina 71 Ejemplos archivos /etc/exports • Un primer ejemplo / /projects /usr /home/joe /pub master(rw) trusty(rw,no_root_squash) proj*.local.domain(rw) *.local.domain(ro) @trusted(rw) pc001(rw,all_squash,anonuid=150,anongid=100) (ro,insecure,all_squash) • Un segundo ejemplo /home /usr/X11R6 /usr/TeX / /home/ftp vale(rw) vstout(rw) vlight(rw) vale(ro) vstout(ro) vlight(ro) vale(ro) vstout(ro) vlight(ro) vale(rw,no_root_squash) (ro) • Cuidado con los espacios: Lámina 72 /home bob.example.com(rw) /home bob.example.com (rw) Dr. Roberto Gómez Cárdenas Roberto Gómez C. 36 Admon. Linux: Sistemas Archivos Sistemas Operativos II NIS Network Information Service Roberto Gómez C. Lámina 73 NIS: Network Information Service • Antes formalmente llamada Yellow Pages, – hoy en día coloquialmente se conoce con ese nombre o YP – nombre se cambió por problemas de marca, pero comandos tiene nombres yp…algo • Desarrollado por Sun para facilitar la administración de grandes grupos de estaciones • Centraliza información en un máquina: master NIS server – programa servidor ypserv que corre en dicha máquina responde peticiones de información de máquinas clientes Lámina 74 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 37 Admon. Linux: Sistemas Archivos Sistemas Operativos II Términos y procesos relacionados • Programa ypserv – corre en el servidor y responde a peticiones de información de máquinas cliente • Dominio – grupo de máquinas que comparten información de configuración común, (están bajo un control de administración común). – cuenta con un nombre tipo texto – por cada dominio se cuenta con una maquina servidora – información a administrar se encuentra en forma de mapas Roberto Gómez C. Lámina 75 Términos y procesos relacionados • Los mapas – cada entrada en el mapa consiste en una llave y un valor, ambos son strings de texto – todos los mapas se encuentran en un directorio bien conocido por el servidor NIS ypserv • /var/yp • Servidores esclavos – opcionalmente pueden definirse servidores esclavos en el dominio – reducen la carga de trabajo del maestro – proporcionan continuidad servicio si el maestro cae Lámina 76 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 38 Admon. Linux: Sistemas Archivos Sistemas Operativos II Maestros, esclavos, mapas Mapa YP Archivo configuración traditional e.g. /etc/hosts Servidor maestro Mapa YP Mapa YP Servidor esclavo Cliente Servidor esclavo Cliente Cliente Roberto Gómez C. Lámina 77 Términos y procesos relacionados • Programa ypbind – “asocia” un cliente con un servidor NIS. – lee el nombre de dominio NIS del sistema y utilizando RPC se conecta con el servidor. – parte central de la comunicación cliente/servidor de NIS • si ypbind muere en una máquina cliente, dicha máquina no podrá acceder al servidor NIS. • El portmap – debe ejecutarse para que se activen las llamadas a procedimientos remotos (RPC) utilizadas por NIS. – si portmap no se está ejecutando no se podrá ejecutar ni clientes ni servidores de NIS. Lámina 78 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 39 Admon. Linux: Sistemas Archivos Sistemas Operativos II Los mapas del servidor • Archivos texto usados para generar mapas son colectados en el directorio /var/yp del servidor maestro del NIS. • Mapas son construidos a partir del comando makedbm: $makedbm infile outfile • Cada línea en archivo texto infile genera un registro en el mapa. – Primer campo de la línea es la llave del registro – el resto es el valor asociado a esa llave • Salida makedbm: par de archivos llamado oufile.dir y oufile.pag – archivo .pag tiene los datos actuales y – el archivo .dir contiene el indice hash. – estos dos archivos forman el mapa. • Todos los mapas de cada dominio están en un sólo directorio – p.e mapas dominio cachafas son dejados en directorio /var/yp/cachafas Roberto Gómez C. Lámina 79 Construyendo e interrogando mapas awk script eddie 201.96.44.5 marvin 201.96.44.6 trillian 201.96.44.7 NIS máquina servidor makedbm .dir Archivo original /etc/hosts 201.96.44.5 eddie 201.96.44.6 marvin 201.96.44.7 trillian mapa hosts. byaddr mapa hosts. byname .pag makedbm .dir .pag ypserv NIS máquina cliente gethostbyname ( ) ? gethostbyaddr ( ) ? Aplicación cliente Lámina 80 Dr. Roberto Gómez Cárdenas llamada RPC a ypserv Roberto Gómez C. 40 Admon. Linux: Sistemas Archivos Sistemas Operativos II Configurando el servidor de NIS • Estableciendo el nombre del dominio NIS – /etc/sysconfig/network – domainname • Crear los mapas – /var/yp/Makefile – makedbm • Inilicializar el servidor – ypinit • Lanzar el demonio de escucha – /etc/yp.conf – ypserv Roberto Gómez C. Lámina 81 Estableciendo el nombre del dominio • Posible usar el comando domainname – #/bin/domainname cachafas – comando fija el nombre del dominio NIS en RAM • Para hacer permanente el nombre es necesario agregar la siguiente línea en el archivo /etc/sysconfig/network – NISDOMAIN=cachafas • Esto entonces fijará el nombre del dominio del NIS automáticamente en el siguiente arranque. Lámina 82 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 41 Admon. Linux: Sistemas Archivos Sistemas Operativos II Creando los mapas • Comando makedbm permite crear mapas – convierte archivos texto en claro en archivos de formato DBM • No es necesario hacer esto con cada uno de los archivos • Usar el Makefile ubicado en /var/yp para lo anterior – posible agregar estancias para crear mapas adicionales – la línea más importante dentro del archivo es la que empieza con la palabra all • Para crear los mapas basta con ejecutar comando make • Es necesario ejecutar este comando cada vez que se modifiquen los archivos a partir de los cuales se crean los mapas Roberto Gómez C. Lámina 83 /var/yp/Makefile • Línea importante del Makefile all: passwd hosts group netid networks protocols rpc services netgrp \ mail shadow ypservers publickey ethers # amd.home bootparams ethers: ethers.byname ethers.byaddr hosts: hosts.byname hosts.byaddr services: services.byname passwd: passwd.byname passwd.byuid group: group.byname group.bygid shadow: shadow.byname • Creando/actualizando los mapas rubis:/var/yp# make make[1]: Entering directory `/var/yp/nis.lab' Updating passwd.byname... Updating passwd.byuid... Updating netid.byname... Updating shadow.byname... make[1]: Leaving directory `/var/yp/nis.lab' Lámina 84 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 42 Admon. Linux: Sistemas Archivos Sistemas Operativos II Inicializar el servidor • La base de datos de NIS se crea con el comando ypinit • Por default (definido en el Makefile) lee los archivos desde /etc y los escribe en /var/yp • La opción -m le permite a usted inicializar el servidor con datos en bruto (-m para el amo) • La opción -s copia las bases de datos del amo a los esclavos (-s como esclavos). Roberto Gómez C. Lámina 85 Ejemplo inicialización servidor maestro rubis:/var/yp# /usr/lib/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. rubis is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: rubis next host to add: toto1 next host to add: toto2 Updating group.byname... The current list of NIS servers looks like this: Updating group.bygid... Updating hosts.byname... rubis Updating hosts.byaddr... toto1 Updating rpc.byname... toto2 Updating rpc.bynumber... Updating services.byname... Is this correct? [y/n: y] Updating services.byservicename... We need a few minutes to build the databases... Updating netid.byname... Building /var/yp/nis.lab/ypservers... Updating protocols.bynumber... Running /var/yp/Makefile... Updating protocols.byname... make[1]: Entering directory `/var/yp/nis.lab' Updating passwd.byname... Updating passwd.byuid... Lámina 86 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 43 Admon. Linux: Sistemas Archivos Sistemas Operativos II Lanzando el demonio ypserv • Antes lanzar ypserv es necesario configurar /etc/ypserv.conf. – archivo ASCII con opciones de tipo [yes|no], comentarios (#) y reglas adicionales • Ahora podemos encender el servidor: root@charly# /etc/rc.d/init.d/ypserv start • Para arrancar el servidor automáticamente al arranque es necesario editar el archivo rc.d • Para verificar que todo este funcionando use: root@charly# /usr/sbin/rpcinfo -u localhost ypserv programa 100004 versión 1 lista y esperando programa 100004 versión 2 lista y esperando Roberto Gómez C. Lámina 87 El archivo /etc/ypserv.conf Lámina 88 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 44 Admon. Linux: Sistemas Archivos Sistemas Operativos II Servidor NIS esclavo • Configuración más sencilla que la del maestro • Establecer el nombre del dominio – igual que en el caso del servidor maestro • Al ejecutar ypinit es necesario usar la opción -s y el nombre del servidor maestro Lámina 89 # ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Roberto Gómez C. Configurando cliente NIS • Paquete yp-tools, que depende paquete ypbind • Configurar el nombre del dominio – igual que en el caso de los servidores – ypwhich: regresa el nombre del servidor NIS – nisdomainanme: regresa el nombre del dominio • Editar archivo /etc/yp.conf – asignar el nombre del dominio y del servidor • Editar archivo /etc/nsswitch.conf – lista orden en que las búsquedas se llevaran a cabo • Arrancar el servico NIS del cliente – /etc/init.d/ypbind start Lámina 90 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 45 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo campos archivo /etc/yp.conf # /etc/yp.conf - ypbind configuration file # Valid entries are # #domain NISDOMAIN server HOSTNAME # Use server HOSTNAME for the domain NISDOMAIN. # #domain NISDOMAIN broadcast # Use broadcast on the local net for domain NISDOMAIN # #ypserver HOSTNAME # Use server HOSTNAME for the local domain. The # IP-address of server must be listed in /etc/hosts. # Roberto Gómez C. Lámina 91 Ejemplo arranque cliente NIS saphir:~# nisdomainname nis.lab saphir:~# ypwhich rubis saphir:~# ypcat hosts 127.0.0.1 localhost 192.168.1.7 saphir 192.168.1.4 rubis saphir:~# Lámina 92 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 46 Admon. Linux: Sistemas Archivos Sistemas Operativos II Obteniendo información desde el cliente • Comando ypbind asocia un cliente con un servidor NIS, y comando ypwhich indica que servidor se usa • Utilerías líneas comando para interrogar los mapas $ypcat passwd.byname $ypmatch cognac panza hosts.byname • Funciones librerías llamadas resolvers, cada una diseñada para interrogar un mapa en específico getpwent(), getpwuid(), getpwnam() gethostent(), gethostbyaddr(), gethostbyname() • Funciones de bajo nivel de propósito general para interrogación de mapas Roberto Gómez C. Lámina 93 Ejemplo utilerías de comando de línea • ypcat y ypmatch disponibles para interrogar mapas • ypmatch – realiza una busqueda por una o más llaves en un mapa específico $ ypmatch cognac panza hosts.byname – buscará los hosts cognac y panza en el mapa hosts.byname, regresando los valores asociados • ypcat – usado para leer el mapa entero $ ypcat passwd.byname – desplegará el mapa completo passwd.byname y es equivalente a teclear: cat /etc/passwd Lámina 94 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 47 Admon. Linux: Sistemas Archivos Sistemas Operativos II Librería resolvers • Funciones disponibles para una aplicación de programador • Como ejemplo se interrogaran mapas derivados de /etc/passwd • Existen dos mapas: – passwd.byname – passwd.byuid utiliza el nombre del usuario como llave usa el id. númerico del usuario como llave • Tres funciones resolver para interrogar: – getpwid() • toma id numérico como parámetro y regresa valor correspondiente del mapa passwd.byuid – getpwnam() • toma nombre usuario como argumento y regresa el valor correspondiente del mapa passwd.byname – getpwent() • no toma ningún argumento, llamándolo repetidamente regresa entradas sucesivas entradas del mapa • Funciones regresa un apuntador a la estructura passwd que contiene la entrada del mapa Roberto Gómez C. Lámina 95 Estructura del password struct passwd{ char *pw_name; char *pw_passwd; /* Nombre usuario*/ /* password encriptado */ /* Los siguientes dos son enteros en algunas versiones * / uid_t pw-uid; /* ID del usuario */ gid_t pw_gid; /* ID del grupo */ char *pw_age; char *pw_comment; char *pw_ gecos; char *pw_dir; char *pw_shell; /* Info personal acerca usuario */ /* Directorio home usuario */ /* Shell usuario*/ } Campos estructura (a excepción de pw_age y pw_comment corresponden a los campos en el archivo /etc/passwd: toto:ESwxx94NP23V.:21:90: toto le_hero:/cognac/toto:/bin/tcsh Lámina 96 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 48 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo uso getpwuid() /* Programa que toma un ID numérico como argumento y muestra el correspondiente username */ # include <pwd.h> main (int argc, char *argv [ ] ) { struct password *pwp; int id = atoi (argv [1]) ; Ejemplo uso: $ getusername 21 User ID 21 is toto $ pwp = getpwuid (id) ; if (pwp != 0) printf (“User ID %d is % s \n”, id, pwp->pw_name) ; else printf (“User ID %d desconocido \n”, id) ; } Roberto Gómez C. Lámina 97 Otros resolvers y sus mapas Mapa group passwd hosts services networks rpc Lámina 98 Dr. Roberto Gómez Cárdenas Resolvers getgrent(), getgrid(), getgrname() getpwent(), getpwuid(), getpwnam() gethostent(), gethostbyaddr(), gethostbyname() getservent(), getservbyport(). getservbyname() getnetent(), getnetbyaddr(), getnetbyname() getrpcent(), getrpcbynumber(), getrpcbyname() Estructura group passwd hostent servent netent rpcent Roberto Gómez C. 49 Admon. Linux: Sistemas Archivos Sistemas Operativos II Funciones de bajo nivel • Resolvers son construidos por encima funciones cliente de bajo nivel • Funciones proporcionan interfaz gráfica genérica al servicio búsqueda de NIS • Descritas en detalle en ypclnt(3) • Ejemplos son: – yp_get_default_domain() • regresa el nombre default del dominio NIS de la máquina local • necesaria para la llamada yp_match() y por otras funciones – yp_match() • especifica un dominio, un nombre de mapa y una llave regresa valor asociado a esa llave • regresa el valor como una cadena de caracteres, no sabe nada de la estructura interna de la cadena Roberto Gómez C. Lámina 99 Otras rutinas • yp_bind(char *indomain) – asociar un proceso a un servidor NIS • yp_unbind(char *domain) – para desasociar un proceso y aprovechar el socket • yp_first(char *indomain, char *inmap, char *outkey, int *outkeylen, char **outval, int outvallen); – regresa el primer valor de la llave del mapa del dominio • yp_next(char *indomain, char *inmap, char *inkey, int *inkeylen, char **outkey, int outkeylen, char **outval, int outvallen); – regresa el siguiente valor de llave en el mapa • yp_all(char *indomain, char *inmap, struct ypall_cxallback *incallback); – proporciona una forma de transferir todo un mapa entero Lámina 100 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 50 Admon. Linux: Sistemas Archivos Sistemas Operativos II Archivos configuración y NIS Archivo Función /etc/passwd base de datos de información de cuentas de usuarios /etc/shadow* contraseñas encriptadas de usuarios, caducidad de contraseñas /etc/group definición de grupos UNIX /etc/hosts mapeo de nombres a direcciones IP de máquinas /etc/networks* asocia nombres en texto con direcciones de red IP /etc/services lista los números de puerto para servicios de red bien conocidos /etc/protocols mapeo de nombres en texto a números de protocolos /etc/ethers* mapeo entre direcciones Ethernet y nombres de máquinas /etc/aliases nombres usados como alias para correo electrónico /etc/rpc lista los números de identificación de servicios RPC /etc/netgroup* define colecciones de usuarios, máquinas y redes /etc/printcap base de datos de información de impresoras /etc/termcap base de datos de tipos de terminal * no usado en todos los sistemas Lámina 101 Roberto Gómez C. NIS y archivos locales • Mayoría de los sistemas NIS puede ser suplementado por la información local del cliente, al menos para algunos archivos. • Enfoque tradicional admite dos tipos situaciones: – prioridad local: los archivos locales tienen precedencia sobre NIS; – prioridad global: NIS tiene precedencia sobre los archivos locales. • Usualmente, sólo /etc/passwd y /etc/group tienen precedencia sobre NIS. – necesario añadir, en ambos, un caraceter “+” al archivo para que la información que no encuentre en el archivo local la busque en el servidor de dominio Lámina 102 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 51 Admon. Linux: Sistemas Archivos Sistemas Operativos II Archivos passwd y group en NIS • En archivo /etc/passwd – añadir +:::::: al final del archivo – para HP-UX, añadir +::-2:60001::: para evitar que usuario se conecte como + – en otros Unix, añadir +::*:::: o +::0:0::: – caracteres “+” y “-” para incluir/excluir o cambiar usuarios – posible cambiar el shell, por ejemplo +:*::::::/etc/NoShell +:::::::/etc/csh • En archivo /etc/group – añadir +::: • Versiones recientes, usan archivo /etc/nsswitch.nis para definir prioridad entre archivos locales y NIS Roberto Gómez C. Lámina 103 Ejemplos archivo /etc/passwd con NIS • Primer ejemplo root:!.k:0:1:/:/usr/bin/csh nobody:*:-2:-2::/: daemon:*:1:1::/: sys:*:2:2::/:/usr/bin/csh bin:*:3:3::/usr/bin: uucp:*:4:4::/var/spool/uucppublic: news:*:6:6::/var/spool/news:/usr/bin/csh +::0:0::: cuentas locales, no se pregunta a NIS por ellas cuentas que no se encuentren en este archivo se pregunta a NIS • Segundo ejemplo root:0AnhFBmriKvHA:0:3: :/:/bin/ksh daemon:*:1:5::/:/bin/sh bin:*:2:2::/bin:/bin/sh adm:*:4:4::/usr/adm:/bin/sh uucp:*:5:3::/usr/spool/uucppublic:/usr/lib/uucp/uucico lp:*:9:7::/usr/spool/lp:/bin/sh hpdb:*:27:1:ALLBASE:/:/bin/sh +::-2:60001::: Lámina 104 Dr. Roberto Gómez Cárdenas cuentas locales, no se pregunta a NIS por ellas cuentas que no se encuentren en Roberto Gómez C. este archivo se pregunta a NIS 52 Admon. Linux: Sistemas Archivos Sistemas Operativos II El archivo nsswitch.conf • Network Services Switch • Permite especificar en que orden será buscada la información – igual que /etc/host.conf • Las posibles elecciones son Campo Donde busca nisplus via NIS+ nis NIS dns DNS (Domain Name Server) files archivos locales db en la base de datos /var/db Roberto Gómez C. Lámina 105 Ejemplo archivo nsswitch.conf • Modos de falla – posible definir comportamiento ante una falla • return o continue – poner expresiones entre corchetes después de la opción Condición Significado UNAVAIL fuente no existe o esta abajo NOTFOUND fuente existe, pero no puede responder la petición TRYAGAIN fuente existe pero se encuentra ocupada SUCCESS fuente pudo contestar la petición • Ejemplo Lámina 106 Dr. Roberto Gómez Cárdenas passwd: shadow: group: hosts: nis files nisplus nis files nisplus nis files nisplus dns [NOTFOUND=return] nis Roberto Gómez C. 53 Admon. Linux: Sistemas Archivos Sistemas Operativos II Ejemplo archivo /etc/nsswitch.nis passwd: group: hosts: networks: protocols: rpc: ethers: netmasks: bootparams: publickey: netgroup: automount: aliases: services: sendmailvars: files nis files nis nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis [NOTFOUND=return] files nis files nis files nis files nis files Roberto Gómez C. Lámina 107 Recomendación • Se debe mantener al menos una cuenta local (por ejemplo, una cuenta que no se importe a través de NIS) en el archivo /etc/master.passwd y además dicha cuenta debería ser miembro del grupo wheel. • Si algo va mal con el procedimiento descrito esta cuenta se puede utilizar para entrar en la máquina cliente de forma remota para posteriormente convertirse en superusuario e intentar solucionar el problema. Lámina 108 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 54 Admon. Linux: Sistemas Archivos Sistemas Operativos II Archivo /var/yp/securenets • En general cualquier usuario remoto puede realizar peticiones para recuperar los contenidos de las asociaciones de NIS siempre y cuando se conozca el nombre de dominio • Archivo securenets previene lo anterior • Al arranque ypserv intenta leer contenido del archivo • Cuando ypserv recibe una petición de una dirección – si coincide con alguna de las reglas especificadas en el archivo se procesa la petición. – si no existe ninguna coincidencia la petición se rechaza y se graba un mensaje de aviso. – si el archivo /var/yp/securenets no existe ypserv acepta conexiones de cualquier máquina. Roberto Gómez C. Lámina 109 Ejemplo archivo /var/yp/securenets # admitir conexiones desde localhost -- obligatorio 127.0.0.1 255.255.255.255 # admitir conexiones desde cualquier host # en la red 192.168.128.0 192.168.128.0 255.255.255.0 # admitir conexiones desde cualquier host # de 10.0.0.0 a 10.0.15.255 # esto incluye las maquinas en el 'testlab' 10.0.0.0 255.255.240.0 Lámina 110 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 55 Admon. Linux: Sistemas Archivos Sistemas Operativos II Limitantes NIS • NIS es altamente asimétrico con respecto a la lectura y escritura de los mapas – lectura es muy eficiente – escritura no es soportada en el protocolo NIS e involucra muchas tareas • No existe un control de acceso – cualquier mapa NIS es accesible por cualquier cliente • No hay un seguimiento faq, (peticiones más frecuentemente hechas), del cliente – ayuda a que todos los clientes vean copias consistentes de los datos – ineficiente cada vez que un resolver es llamada: tráfico red es generado • Mapas NIS están centralizados – datos no están distribuido, se encuentran reunidos en un solo sistema Roberto Gómez C. Lámina 111 NIS+ • Un nuevo servicio de información de red, que fue introducido por Sun • Bastante complejo • Principales ventajas – definición de jerarquías • NIS+ usa nombres de dominio jerárquico, similares a los de intenet – concepto de tablas • Mapas son substituidos por tablas – múltiples criterios de busquedas • p.e. [ name=toto, pais = francia ] de personal.ventas.cuervo.co – seguridad • autenticación RPC y varios permisos acceso – posibilidad de sustituir el manejador de base de datos Lámina 112 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 56 Admon. Linux: Sistemas Archivos Sistemas Operativos II Dominios NIS+ y tablas widget.com Dominio sales .widget .com eng.widget.com Tabla Subdominio Tabla Tabla Tabla Esquema base datos Número de columnas :4 Columnas a buscar :0,3 Máyusculas / Minúsculas : 0 Nombre Sitio Origen ID vodka cognac tequila Rusia Francia México centeno uva agave 1446 1070 0616 Tabla Roberto Gómez C. Lámina 113 Una última palabra sobre NIS+ • Lanzado por Sun principio 90s • Más complejo que NIS y no ha gozado de la misma popularidad que NIS • No existe NIS+ para Linux – existe cliente NIS+ en Linux pero no se encuentra bien integrado en las distribuciones • Punto vista cliente: NIS+ se ve igual que NIS • Sun anunció que no iba a continuar con el soporte de NIS+ • Se rumora que Sun no usa NIS+ internamente Lámina 114 Dr. Roberto Gómez Cárdenas Roberto Gómez C. 57