Source: http://braianet.blogspot.com/2008/07/
Timestamp: 2017-06-28 14:04:37+00:00

Document:
My Blog. Gnu/Linux!: July 2008
My Blog. Gnu/Linux!
Operadores de busqueda para Google
Google tiene algunas formas de buscar páginas utilizando sus "palabras clave". allinanchor: Seguido de varias palabras, te da resultados de páginas en la que están todas las palabras en el enlace. allintext: Seguido de varias palabras, te da resultados de páginas en la que están todas las palabras en la página. allintitle: Seguido de varias palabras, te da resultados de páginas en la que están todas las palabras en el título. allinurl: Seguido de varias palabras, te da resultados de la búsqueda de todas esas palabras en la URL. author: (Sólo funciona en Google Groups) Busca en los grupos artículos escritos por el nombre o la dirección de correo que le pasemos. bphonebook Si le pasas un lugar o dirección, te da el número de teléfono. cache: Seguido de una URL, te mostrará la página en caché. datarange: define: Seguido de una palabra, te da la definición. ext: ver filetype. filetype: Seguido de una extenisó determinada, busca documentos en ese tipo de fichero. group: (Sólo funciona en Google Groups) Te restringe la búsqueda con el grupo que le pases. groups: ver group. id: ver info. inanchor: Sólo la primera palabra de las que le siguen, ha de estar en el enlace. info: Seguido de una URL, mostrará una página con enlaces relacionados, páginas que contiene esa URL... insubject: (Sólo funciona en Google Groups) Busca en el asunto del mensaje. intext: Sólo la primera palabra de las que le siguen, te da resultados de páginas en la que esté la palabra en la página. intitle: Sólo la primera palabra de las que le siguen, ha de estar en el título. inurl: Sólo la primera de las palabras que le siguen, ha de estar en la URL. link: Seguido de una URL, te encuentra todas aquellas páginas que enlazan con la URL dada. location: (Sólo funciona en Google News) Si le pasas un país a la búsqueda, te restringe los resultados a ese país. msgid: (Sólo funciona en Google Groups) Busca el mensaje con ese ID. phonebook: Te dará resultados de teléfonos con las palabras que le siguen. related: Seguido de una URL, tiene el mismo efecto qe cuando se pulsa sobre el enlace de "Enlaces Relacionados". rphonebook: Te dará resultados de teléfonos residenciales con las palabras que le siguen. site: Seguido de un dominio, te da los resultados de la búsqueda sólo en ese dominio. source: (Sólo funciona en Google News) Te limita las búsquedas al medio de comunicación que le indiques. spell: stocks: Seguido de un código de Bolsa, te dará los datos concretos. store: (Sólo funciona en Froogle) Te limita las búsquedas a un determinado comercio.Fuente: http://www.googlemania.com/palabras.php Publicado por
Como funciona el DNS
El DNS se utiliza principalmente para la resolución de nombres, esto es, decidir qué dirección IP pertenece a determinado nombre completo de host. Usos del DNS El DNS se utiliza para distintos propósitos. Los más comunes son: Resolución de nombres: Dado el nombre completo de un host (por ejemplo blog.smaldone.com.ar), obtener su dirección IP (en este caso, 208.97.175.41). Resolución inversa de direcciones: Es el mecanismo inverso al anterior. Consiste en, dada una dirección IP, obtener el nombre asociado a la misma. Resolución de servidores de correo: Dado un nombre de dominio (por ejemplo gmail.com) obtener el servidor a través del cual debe realizarse la entrega del correo electrónico (en este caso, gmail-smtp-in.l.google.com). Por tratarse de un sistema muy flexible, es utilizado también para muchas otras funciones, tales como la obtención de claves públicas de cifrado asimétrico y la validación de envío de e-mails (a través de mecanismos como SPF). Terminología básica Antes de proseguir, es necesario introducir algunos términos básicos para evitar confusiones y ambigüedades. Otros términos más complejos serán tratados más adelante. Host Name El nombre de un host es una sola "palabra" (formada por letras, números y guiones). Ejemplos de nombres de host son "www", "blog" y "obelix". Fully Qualified Host Name (FQHN) Es el "nombre completo" de un host. Está formado por el hostname, seguido de un punto y su correspondiente nombre de dominio. Por ejemplo, "blog.smaldone.com.ar" Domain Name El nombre de dominio es una sucesión de nombres concatenados por puntos. Algunos ejemplos son "smaldone.com.ar", "com.ar" y "ar". Top Level Domains (TLD) Los dominios de nivel superior son aquellos que no pertenecen a otro dominio. Ejemplos de este tipo son "com", "org", "ar" y "es". Arquitectura del DNS El sistema DNS funciona principalmente en base al protocolo UDP. Los requerimientos se realizan a través del puerto 53. El sistema está estructurado en forma de "árbol". Cada nodo del árbol está compuesto por un grupo de servidores que se encargan de resolver un conjunto de dominios (zona de autoridad). Un servidor puede delegar en otro (u otros) la autoridad sobre alguna de sus sub-zonas (esto es, algún subdominio de la zona sobre la que él tiene autoridad). Un subdominio puede verse como una especialización de un dominio de nivel anterior. Por ejemplo, "smaldone.com.ar" es un subdominio de "com.ar", que a su vez lo es del TLD "ar". El siguiente diagrama ilustra esto a través de un ejemplo: Zonas y delegación Los servidores con autoridad sobre los TLD son los llamados "root servers" (o "servidores raíz") del sistema. Estos son fijos, ya que rara vez cambian, siendo actualmente 13. Tomemos como ejemplo el dominio "com.ar". Este dominio pertenece al TLD "ar". Los servidores con autoridad sobre el dominio "ar" son: ns-ar.ripe.netmerapi.switch.chuucp-gw-1.pa.dec.comuucp-gw-2.pa.dec.comns.uu.netns1.retina.arathea.arctina.ar En tanto que los servidores con autoridad sobre "com.ar" son: merapi.switch.chrelay1.mecon.gov.arns.uu.netns1.retina.arathea.arctina.ar Podemos ver que ns.uu.net, ns1.retina.ar, athea.ar y ctina.ar tienen autoridad tanto sobre "com.ar" como sobre "ar". El proceso de resolución de nombres Cuando una aplicación (cliente) necesita resolver un FQHN envía un requerimiento al servidor de nombres configurado en el sistema (normalmente, el provisto por el ISP). A partir de entonces se desencadena el proceso de resolución del nombre: El servidor de nombres inicial consulta a uno de los servidores raíz (cuya dirección IP debe conocer previamente). Este devuelve el nombre del servidor a quien se le ha delegado la sub-zona. El servidor inicial interroga al nuevo servidor. El proceso se repite nuevamente a partir del punto 2 si es que se trata de una sub-zona delegada. Al obtener el nombre del servidor con autoridad sobre la zona en cuestión, el servidor inicial lo interroga. El servidor resuelve el nombre correspondiente, si este existe. El servidor inicial informa al cliente el nombre resuelto. Ilustremos esto con un ejemplo concreto. Supongamos que el navegador necesita resolver el nombre "blog.smaldone.com.ar". El sistema tiene configurado el servidor de nombres 200.49.156.3 (perteneciente al proveedor argentino Fibertel). Por lo tanto envía a éste el requerimiento de resolver "blog.smaldone.com.ar". El servidor de 200.49.156.3 envía la consulta root server 198.41.0.4. 198.41.0.4 le informa que el servidor con autoridad sobre "ar" es athea.ar, cuya dirección IP es 200.16.98.2. (En realidad, informa la lista de todos los servidores con tal autoridad, pero para simplificar el ejemplo tomaremos solamente uno.) 200.49.156.3 envía nuevamente el requerimiento a athea.ar (el cual, recordemos, también tiene autoridad sobre "com.ar"). athea.ar responde que la autoridad sobre smaldone.com.ar la tiene ns1.mydomain.com cuya dirección IP es 64.94.117.213. 200.49.156.3 envía ahora la consulta a ns1.mydomain.com. ns1.mydomain.com informa que la dirección IP de "blog.smaldone.com.ar" es 208.97.175.41. Finalmente, 200.49.156.3 devuelve este resultado a la aplicación que originó la consulta. Mecanismos de caché Cada vez que un servidor de nombres envía una respuesta, lo hace adjuntando el tiempo de validez de la misma (TTL o "tiempo de vida"). Esto posibilita que el receptor, antes la necesidad de volver a resolver la misma consulta, pueda utilizar la información previamente obtenida en vez de realizar un nuevo requerimiento. Esta es la razón por la cual los cambios realizados en el DNS no se propagan instantáneamente a través del sistema. Dependiendo de la naturaleza de los mismos (y de la configuración de cada servidor), la propagación puede tardar desde algunos minutos hasta varios días. Correo electrónico y resolución de nombres Normalmente los usuarios de correo electrónico redactan su mensajes usando un cliente de correo y enviándolo a través de un servidor SMTP provisto por su ISP o a través de un sistema de correo vía web (webmail). En cualquier caso, una vez que el mensaje es recibido por el servidor, debe ser entregado al destinatario. Aquí interviene el sistema DNS: El servidor del emisor solicita al DNS (de acuerdo al mecanismo analizado anteriormente), la entrada MX del dominio del receptor del mensaje. MX significa "mail exchanger", esto es, el nombre del servidor (o los servidores) encargado de recibir los mensajes destinados a determinado dominio. El DNS devuelve el FQHN y la dirección IP del mail exchanger. El servidor del emisor se conecta al puerto 25, mediante TCP, del servidor del destinatario y entrega el mensaje según el protocolo SMTP. El proceso podrá continuar si el servidor receptor del mensaje no es el último de la cadena. Existen servidores que actúan como "puertas de enlace" o "gateways" de correo electrónico, y que se encargan de recibir los mensajes de determinados dominios para luego enviarlos a otros servidores. Tipos de registro en un servidor de nombres Un servidor de nombres puede almacenar distinta información. Para ello, en cada zona de autoridad dispondrá de entradas de distinto tipo. Entre los más importantes se encuentran: A (Address) Este registro se utiliza para traducir nombres de hosts del dominio en cuestión a direcciones IP. CNAME (Canonical Name) El nombre canónico es un alias para un host determinado. (No define una dirección IP, sino un nuevo nombre.) NS (Name Server) Especifica el servidor (o servidores) de nombres para un dominio. MX (Mail Exchange) Define el servidor encargado de recibir el correo electrónico para el dominio. PTR (Pointer) Especifica un "registro inverso", a la inversa del registro A, permitiendo la traducción de direcciones IP a nombres. TXT (Text) Permite asociar información adicional a un dominio. Esto se utiliza para otros fines, como el almacenamiento de claves de cifrado, "DomainKeys" o "Sender Policy Framework". Bind, "el" servidor de nombres Prácticamente el único software utilizado en los servidores de nombres de Internet es bind ("Berkeley Internet Name Domain"), creado originalmente en la Universidad de California, y actualmente propiedad del Internet Systems Consortium. Este programa, distribuido bajo una licencia libre, es utilizado en prácticamente todos los sistemas Unix del mundo. Esto ha sido considerado un problema de seguridad, al punto que se ha propuesto la migración de algunos root servers a otro sistema, ya que la aparición de algún problema de seguridad en bind podría implicar la caída de todo el DNS de Internet. Uso del DNS en una red local Ya en redes de tamaño medio (quizás más de 5 equipos) es conveniente la utilización de DNS. Esto nada tiene que ver con el DNS de Internet (aunque el servidor local puede estar vinculado a este sistema). Básicamente, es conveniente montar un servidor local de DNS por los siguientes motivos: Agilizar el acceso a Internet Al tener un servidor de nombres en nuestra propia red local (que acceda al DNS de nuestro proveedor o directamente a los root servers) se agiliza el mecanismo de resolución de nombres, manteniendo en caché los nombres recientemente usados en la red y disminuyendo el tráfico hacia/desde Internet. Simplificar la administración de la red local Al contar con un DNS propio (ya sea uno o varios servidores de nombres) es posible definir zonas locales (no válidas ni accesibles desde Internet) para asignar nombres a cada uno de los hosts de la LAN. De esta forma es posible, por ejemplo, referirnos a la impresora de red como "hplaser.mired.local" en vez de "192.168.0.2" y a nuestro servidor de correo interno como "smtp.mired.local" en vez de "192.168.0.3". (Pensemos, por ejemplo, que ocurriría con las configuraciones de las aplicaciones si un día decidimos cambiar el esquema de direcciones IP de nuestra red.) Problemas del DNS El principal problema que presenta el DNS es que, al estar basado en UDP (protocolo de transporte que no garantiza la recepción de la información enviada), tanto las consultas como las respuestas pueden "perderse" (por ejemplo, a causa de congestionamiento en algún enlace de la red). Es común apreciar cómo, en el caso de servidores y redes no muy bien configuradas, la resolución de nombres se resiente sensiblemente ante cualquier anomalía (saturación de tráfico o del servidor de nombres local). Otro inconveniente, que ya hemos hecho notar, es la lentitud de la propagación de las modificaciones en el sistema, producto de la propia arquitectura del mismo. Pero quizás el mayor problema no sea inherente al sistema mismo, sino a la pésima configuración de los servidores de muchos ISP. Fibertel, el proveedor que utilizo, es un notable ejemplo de esta falencia. Una buena solución a esta situación es ejecutar un servidor de nombres en alguna PC de la red local, de forma tal que se comunique directamente con los root servers (evitando de esta forma pasar a través de los servidores de nombres de nuestro proveedor). Herramientas para aprender más En sistemas Unix el comando dig (ver "man dig") permite realizar requerimientos "a mano" para poder investigar un poco más sobre el funcionamiento del DNS y, cómo no, también para detectar y solucionar problemas en la red. Los usuarios de sistemas Windows disponen del comando nslookup (aunque no tan potente como dig), para el mismo propósito. Lectura adicional    * La página de Wikipedia sobre DNS contiene bastante información y buenos enlaces sobre este tema.* El "DNS Cómo" explica la configuración de bind en GNU/Linux.* El RFC 1591 explica detalladamente la estructura del DNS.* Los RFC 1034 y 1035 (ambos en inglés), describen completamente el DNS. Fuente Este articulo ha sido tomado de la siguiente fuente. El mismo tiene la siguiente licencia Creative Commons. Algunas correcciones menores se han realizado para ajustarla a los fines de este sitio. Muchas Gracias a Javier Smaldone por escribirlo de una manera tan simple y amena.Fuente: wiki.xtech.com.ar
GNU Mensajes - Envía SMS a todo el mundo!
GNU Mensajes es un software de código libre, con el cual se pueden enviar mensajes de texto(SMS) a diferentes compañías telefónicas.Funciona perfectamente en cualquier versión de Windows (98 / ME / NT / 2000 / XP / 2003 / Vista).También funciona en Linux y Solaris mediante WINE (actualmente 90% funcional)Existe una versión Portable para pendrive(Solo funcional en Windows).Algunas de las funciones de GNU Mensajes:- Envío de Mensajes de Texto.- Detección de Proveedor Telefónico (solo para Argentina)- Historial de Mensajes enviados.- Agenda de Contactos.- Importar/Exportar agenda de contactos.- Lenguaje Mate.- Abreviaturas pre-configuradas.- Importar/Exportar abreviaturas pre-configuradas.- Saludos pre-configurados.- Firmas pre-configuradas.- Caras, caritas, dibujos ASCII.Compañías telefónicas soportadas:Argentina - ClaroArgentina - ConectelArgentina - MovistarArgentina - NextelArgentina - PersonalArgentina - SkytelCanada - FidoCanada - RogersChile - BellsouthChile - Entel PCsChile - SmartcomColombia - BellsouthEcuador - BellsouthEspaña - VodafoneEstados Unidos - AT&TEstados Unidos - BellsouthEstados Unidos - CingularEstados Unidos - SprintEstados Unidos - T-MobileEstados Unidos - U TextEstados Unidos - Verizon WirelessHonduras - CeltelItalia - VodafoneInglaterra - OrangeMexico - IusacellMexico - NextelParaguay - TigoParaguay - VoxPortugal - TelcelVenezuela - Telcel BellsouthVenezuela - MovilnetVenezuela – MovistarIMÁGENESGNU Mensajes en Windows XPGNU Mensajes en Ubuntu 8.04 (utilizando Wine)GNU Geo integrado!!! (Detecta a que empresa corresponde un número telefónico)Descargar GNU Mensajes 1.0.0Links:Página Oficial de GNU MensajesForo Oficial del Proyecto GNU MensajesTutorial para Instalar GNU Mensajes en Linux (mediante Wine)Fuente: Linuxzarpele
Uso de Gawk o awk
Copyright 2005-2008 Sergio González DuránSe concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation. autor: sergio.gonzalez.duran@gmail.com awk o la versión GNU gawk es más que un simple comando de procesamiento de patrones, es todo un lenguaje de análisis semántico. Su dominio es como aprender todo un lenguaje de programación, pero en esta ocasión veremos unos ejemplos de su potencia en unos casos sencillos de análisis de patrones de cadenas, espero te sirvan de base para que puedas aprender aun más sobre esta interesante herramienta.Ejemplo 1: Una lista personalizada de usuarios para HTML Una línea típica de /etc/passwd es como la siguiente: luis:x:504:504:Luis Hernandez:/home/luis:/bin/bash Bien, supongamos que deseamos un listado de todos los usuarios normales (personas) del sistema, pero solo necesitamos su nombre de usuario, su nombre o real y su shell por defecto, es decir, si vemos la línea anterior, la separación entre campos es ":" asi que para nuestro reporte queremos el campo 1,5 y 7. Pero además, este reporte será parte de una tabla HTML, asi que sería bueno si puderian incluirse de una vez las etquietas " y " necesarias de una vez. Es decir, el resultado deseado es el siguiente: luisLuis Hernandez/bin/bash El primer paso es determinar los usuarios normales del sistema, podríamos usar un grep "home" /etc/passw | gawk ..., pero podría haber usuarios que tengan su HOME en otra ubicación, además se trata de usar solo awk, asi que lo primero que entenderemos es que los campos obtenidos del resultado de un comando awk, se numeran por $1, $2, etc. y el delimitador de campos se indica mediante la variable "FS". #> gawk '{print $3}' FS=":" /etc/passwd012...8186500501502503504 Aunque no muy útil todavía, podemos ver como seleccionamos el caracter separador FS=":", que viene de 'Field Separator', y tenemos indicada una acción '{print $3}', que significa imprime el campo 3. Aunque realmente no lo queremos imprimir, lo queremos evaluar, y si deseamos imprimir el $1, $5 y $7 que se mencionarion previamente, asi que agregamos una expresión de evaluación antes de la acción: #> awk '$3 >= 500 {print $1 $5 $7 }' FS=":" /etc/passwdsergonSergio Gonzalez/bin/bashvaleriaValeria Perez/bin/bashfernandaFernanda Lozano/bin/shalejandraAlejandra Lopez/bin/nologinluisLuis Hernandez/bin/bash Mucho mejor, agregamos '$3 >= 500' previo a la acción (que es imprimir lo que deseamos), ya que como se sabe en la mayoría de distros modernas, los usuarios normales del sistema se numeran del 500 en adelante (más sobre administración de usuarios). Nótese que los campos en el resultado salen pegados, es necesario agregar entre comillas " ", ya sea un espacio o lo que se desee, en este caso etiquetas de tablas de HTML y además ordenaremos "sort" los registros obtenidos: #> awk  '$3 >= 500 {print ""$1""$5""$7"" | "sort" }' FS=":" /etc/passwdalejandraAlejandra Lopez/bin/nologinfernandaFernanda Lozano/bin/shluisLuis Hernandez/bin/bashsergonSergio Gonzalez/bin/bashvaleriaValeria Perez/bin/bashEjemplo 2: Una lista personalizado de usuarios para reporte Ahora veamos como crear una lista similar a la anterior pero especificando un par de líneas de títulos al inicio: #> awk 'BEGIN { print "Usuario UID Shell\n------- --- -----" } $3 >= 500 { print $1, $3, $7 | "sort -r"}' FS=":" /etc/passwdUsuario UID Shell------- --- -----valeria 501 /bin/bashsergon 500 /bin/bashluis 504 /bin/bashfernanda 502 /bin/shalejandra 503 /bin/nologin Iniciamos con la sentencia BEGIN (que tiene varios usos, checa el manual) que en este caso nos permite indicar lo que se imprimirá una sola vez, en este caso los títulos, un retorno '\n' y guiones para separar los títulos, después viene de nuevo la evaluación ya conocida y ahora al indicar la impresión de los campos 'print $1, $3, $7', los separé por comas, que automáticamente añade un espacio, y solo para aumentar el ejemplo, el ordenamiento es ahora al revés 'sort -r'. Pero podemos ver en la salida, que los registros no se acomodan bien con respecto a los títulos, con dos o tres campos tal vez resulte fácil añadir espacios o tabuladores '\t' para hacer el acomodo, pero en varios campos será realmente frustrante lograrlo. Mejor usamos 'printf': #> awk 'BEGIN { print "Usuario      UID Shell\n------------ ---- ----------" } $3 >= 500 \{ printf "%12s %4d %10s\n", $1, $3, $7 | "sort -r"}' FS=":" /etc/passwdUsuario      UID Shell------------ ---- ----------   valeria  501  /bin/bash    sergon  500  /bin/bash      luis  504  /bin/bash  fernanda  502    /bin/sh alejandra  503 /bin/nologin Sigo usando 'print' para los títulos, pero ahora uso 'printf' que me permite formatear la salida, la sintaxis es 'printf "formato", $1, $2'. Cada formato comienza con '%' después el número de posiciones seguido del tipo de campo 's' para string, 'd' para enteros, etc. '%12s' 12 posiciones de tipo cadena. (checar el manual para el resto de formatos de printf), termino el formato con un salto de línea '\n'. Pero como se puede apreciar por defecto las cadenas se justifican a la derecha y en este caso las deseamos a la izquierda, esto se arregla agregando un '-' guión en el indicador de formato de la siguiente manera '%-12s', el resultado correcto sería el siguiente: # awk 'BEGIN { print "Usuario      UID Shell\n------------ ---- ----------" } $3 >= 500 \{ printf "%-12s %4d %-10s\n", $1, $3, $7 | "sort -r"}' FS=":" /etc/passwdUsuario      UID  Shell------------ ---- ----------valeria       501 /bin/bashsergon        500 /bin/bashluis          504 /bin/bashfernanda      502 /bin/sh alejandra     503 /bin/nologinEjemplo 3: Extrayendo campos sin posición fija Hay ocasiones en que no se tiene exactamente la posición de los campos a extraer, asi que usaremos otra técnica basada en el número total de campos encontrados. En este caso, necesitamos la variable "NF" (Number of Fields) que representa el total de campos encontrados. Y usaremos como caracter separador FS el espacio, es decir FS=" ", pero dado que el espacio es el separador por defecto no es necesario indicarlo. Como ejemplo, veamos la salida del comando uptime: $> uptime19:32:15 up  2:28,  1 user,  load average: 1.75, 1.54, 1.54 Y deseamos crear un pequeño script que de como resultado el siguiente: $> ./cargacarga actual del sistema: 1min=1.75, 5min=1.54, 15min=1.54 Como se puede observar, se necesitan los tres últimos campos, aparentemente los campos $8, $9 y $10. Pero el problema esta en que conforme pasa el tiempo, el comando uptime mostrará de hecho más campos, ya que el que en este momento es el $3 '2:28' después de unos días puede quedar asi '3 days 3:50', asi que al usar NF nos dará el total de campos, veamos: $> uptime | gawk '{print NF}'gt; uptime | gawk '{print NF}'10(Podemos usar NF no como varibale del total de campos sino como variable de contenido con $NF)$> uptime | gawk '{print $NF}'1.33 Entendiendo lo anterior, es fácil de deducir entonces que los campos requeridos son entonces NF-2, NF-1, NF es decir, los tres últimos, y no importará cuantos campos haya en el resultado. $> uptime | gawk '{print $(NF - 2), $(NF - 1), $NF}'0.72, 0.54, 0.47 El script quedaría entonces así: #!/bin/bashecho "Carga actual del sistema: "uptime | gawk '{print "1min:"$(NF - 2), "5min:"$(NF - 1), "15min:"$NF}'Fuente: Linuxtotal.com.mx
Un pirulo más…
Hoy es mi cumpleaños, cumplo 18...huy ahora puedo tener problemas legales jaja XD. Mmm que dificil es esta edad, en realidad nose si será de esta manera la vida siempre, pero pienso que es el momento que uno decide que va a ser con la misma y la verdad tengo mas dudas que certezas...es decir nose si el resto de mi vida seguiré con esto, que se yo. Solo sé que no va con mis valores seguir enfrente de una pc mientras el mundo sigue así...Desde los 11 tengo una pc en casa, y desde ese momento empecé a aprender todo lo que podía sobre informática, primero con windows 98, Xp, reparación de pcs,redes y luego con lo que me cambió la manera de observar todo: Gnu/Linux. La filosofía de libertad y compartir información me llenó profundamente...Pero me siento vacío, como decir: "Haaa esto era el mundo de las redes, esto era el hacking??, va al final la culpa el 90% es del usuario, y mediante ingeniería social se obtiene todo, es decir, nisiquiera es necesario una computadora para hacerse rico, todo esta en torno a la mentira, si uno desea ser rico sin importarle los demás, con Ing. Social puede hacerlo en un par de días..."Y eso me dió asco, si una persona se propone puede verderle un animal a otra persona diciendole que es un gato y en realidad es un perro, solo es necesario inundarlo de imagenes televisivas, recargarlo de llamadas y llenarlo de volantes, inundar su casilla de mail, darle un perfume de regalo, etc...Pufff así es el mundo...Todo tiene un valor, la voluntad de las personas, el pensamiento, todo se compra y encima es muy común, tanto que ya nos parece normal.Por eso, les dejo mis humildes consejos: conserven su valor, su voluntad, su pensamientos, que nadie les robe nada, escuchen y sepan escuchar, sean felices y dejen ser feliz a los demás y principalmente traten de devolver una sonrisa y hacer sonreir. Jueguense por lo que buscan, arriesguense y no se queden atrás. Pidan disculpas cuando lástiman a alguien, se sentirán mejor y harán sentir mejor.El camino de la felicidad está en cada uno de nosotros...Bueno espero que cada uno encuentre su camino y llegue a ser lo que deseó sin destruir el entorno en el que vivimos.Sean felices. Saludos!
Montar pendrive o disco extraible manualmente en Gnu/Linux
Bueno seguimos con el montado de discos, recomiendo que lean el anterior articulo sobre UUID entre otras cosas y claro para comprender que estamos haciendo tener conocimientos sobre el fstab.Muchas veces tenemos la necesidad de montar un disco extraible o un pendrive, en mi caso tengo un reproductor de MP3 y prácticamente es lo mismo en el funcionamiento de almacenamiento.Prosigamos...Se acuerdan que no tengo instalado HAL, por lo tanto, cuando yo conecte un disco extraible voy a tener que montarlo manualmente, o en el mejor de los casos, agregarlo al fichero /etc/fstab para que al iniciar el equipo lo monte automáticamente o que se mantenga en estado de espera, es decir esperando ser montado al ser detectado.Primero conectemos el dispositivo y luego verificamos(como root) que aparezca en el listado de discos del comando fdisk.[root@ArchLinux braianet]# fdisk -lDisco /dev/sda: 40.0 GB, 40020664320 bytes255 heads, 63 sectors/track, 4865 cylindersUnits = cilindros of 16065 * 512 = 8225280 bytesDisk identifier: 0x4c2ba12cDisposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema/dev/sda1   *           2        2365    18988830    7  HPFS/NTFS/dev/sda2            2366        4675    18555075   83  Linux/dev/sda3            4761        4865      843412+  82  Linux swap / Solaris/dev/sda4            4676        4760      682762+  83  LinuxLas entradas de la tabla de particiones no están en el orden del discoDisco /dev/sdb: 15.0 GB, 15020457984 bytes16 heads, 63 sectors/track, 29104 cylindersUnits = cilindros of 1008 * 512 = 516096 bytesDisk identifier: 0x90909090Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema/dev/sdb1               1        1008      508000+  82  Linux swap / Solaris/dev/sdb2   *        1009       15540     7324128   83  Linux/dev/sdb3           15541       29104     6836256   83  LinuxDisco /dev/sdc: 522 MB, 522043904 bytes17 heads, 59 sectors/track, 1016 cylindersUnits = cilindros of 1003 * 512 = 513536 bytesDisk identifier: 0x20736f63Esto no parece una tabla de particionesProbablemente ha seleccionado el dispositivo que no era.Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema/dev/sdc1   ?     1911394     2454136   272185273   6f  DesconocidoLa partición 1 tiene distintos principios físicos/lógicos (&#191;no Linux?): físicos=(361, 101, 36) lógicos=(1911393, 0, 3)La partición 1 tiene distintos finales físicos/lógicos: físicos=(255, 115, 46) lógicos=(2454135, 5, 27)La partición 1 no termina en un límite de cilindro./dev/sdc2   ?     1338820     2115804   389657273   69  DesconocidoLa partición 2 tiene distintos principios físicos/lógicos (&#191;no Linux?): físicos=(100, 101, 32) lógicos=(1338819, 12, 59)La partición 2 tiene distintos finales físicos/lógicos: físicos=(367, 115, 35) lógicos=(2115803, 6, 6)La partición 2 no termina en un límite de cilindro./dev/sdc3   ?      168145      168145           0   20  DesconocidoLa partición 3 tiene distintos principios físicos/lógicos (&#191;no Linux?): físicos=(353, 117, 46) lógicos=(168144, 10, 47)La partición 3 tiene distintos finales físicos/lógicos: físicos=(355, 116, 37) lógicos=(168144, 10, 46)La partición 3 no termina en un límite de cilindro./dev/sdc4         2877051     2877106       27619    0  VacíaLa partición 4 tiene distintos principios físicos/lógicos (&#191;no Linux?): físicos=(0, 0, 0) lógicos=(2877050, 0, 3)La partición 4 tiene distintos finales físicos/lógicos: físicos=(0, 0, 0) lógicos=(2877105, 1, 16)La partición 4 no termina en un límite de cilindro.Las entradas de la tabla de particiones no están en el orden del disco[root@ArchLinux braianet]#Las líneas azules, nos indican los diferentes discos y lo que marque de rojo es una falencia en el sistema de archivos del reproductor de mp3, porque como sabrán, tiene una partición para su propio sistema(fabricante, firmware, etc), no se preocupen por esto.Bueno el disco extraible se encuentra en:Disco /dev/sdc: 522 MB, 522043904 bytesAhora lo montaremos manualmente si necesitan utilizarlo solo una vez, al ser montado como root, solo él puede modificar su contenido:Método común# mkdir /media/MP3# mount -t vfat /dev/sdc /media/MP3Lo que hicimos fué crear un directorio en /media llamado MP3 y luego montarlo. El parámetro -t es para el tipo, en este caso es un sistema fat32(vfat lo llama linux)./dev/sdc es la ruta para el dispositivo, y /media/MP3 el directorio donde se montará.Esta opcion nos quitará mas de un apuro pero no lo recomiendo si van a utilizar el disco extraíble continuamente.Método modificando el FstabLlegamos a lo que necesitaba, este artículo en sí, lo hice para explicar esto, pero no podía empezar asi de la nada. Es la mejor opción si no cuenta con hal.Obtenemos el UUID del disco extraíble:[root@ArchLinux braianet]# blkid/dev/sda1: UUID="100CA78D0CA76D02" TYPE="ntfs"/dev/sda2: UUID="5e716466-9f33-44c3-8455-383c8d1e9a10" SEC_TYPE="ext2" TYPE="ext3"/dev/sda3: TYPE="swap" UUID="fe97b59c-3776-452c-9232-65966a5cc230"/dev/sda4: UUID="11f5a43a-5904-47bf-845d-8d95ac8730d4" SEC_TYPE="ext2" TYPE="ext3"/dev/sdb1: TYPE="swap" UUID="70c4f0be-c6a0-449e-b2f2-b9689d1f93b6"/dev/sdb2: UUID="dfa49bd0-dd2c-4c76-a318-a044fc691a6a" SEC_TYPE="ext2" TYPE="ext3"/dev/sdb3: UUID="7824e60c-2dfd-4919-88df-b672eea43400" SEC_TYPE="ext2" TYPE="ext3"/dev/sdc: LABEL="BR414N" UUID="7453-103F" TYPE="vfat"[root@ArchLinux braianet]#Modificamos el fstab y agregamos:UUID=7453-103F /media/MP3 vfat rw,noauto,user,async,gid=100 0 0 Explicación:rw: significa lectura y escritura.noauto: significa que no se monte cuando inicie el sistema, ya que puede no estar conectado.user:Permite a cualquier usuario del sistema montar o desmontar un dispositivo físico sin necesidad de ser root.async: Con esto hacemos que las operaciones que realicemos no se hagan de forma asíncrona. Elegi esta opcion porque me funcionó mas rápido,aunque sync es mejor para no tener un solo error.gid: el grupo especificado tiene el control sobre los archivos del dispositivo. En mi caso el el numero 100 que es el grupo users, ustedes pueden tener otro número, consulten con el comando id.Ahora solo nos queda teclear mount /dev/sdc como usuario normal y listo o si tienen Gnome cuando lo conecten ya les mostrá el ícono, solo será necesario hacer clickSi quieren demontarlo y no saben porque le tira el error:[root@ArchLinux Pascal]# umount /dev/sdcumount: /media/MP3: dispositivo ocupadoumount: /media/MP3: dispositivo ocupadoUtilicen el comando lsof para saber que es lo que esta impidiendo al mismo, ahí nos muestra el PID y si desean matar el proceso utilicen el comando kill.[root@ArchLinux Pascal]# lsof /dev/sdcCOMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEbash    3042 root  cwd    DIR   8,32     4096 3884 /media/MP3/Pascallsof    3312 root  cwd    DIR   8,32     4096 3884 /media/MP3/Pascallsof    3313 root  cwd    DIR   8,32     4096 3884 /media/MP3/Pascal[root@ArchLinux Pascal]#Espero que le haya servido. Saludos!
Para los que han usado MS-DOS por muchos años y pretenden pasar a sistemas Linux, es muy útil tener una tabla con comandos equivalentes de ambos sistemas operativos. A continuación, un listado con los comando más comunes:Comando DOS Comando Linux cd directorio cd directorio dir, dir/w ls, ls -l chdir (directorio actual) pwd del (borra un archivo) rm deltree (borra un directorio y todo su contenido) rm -r copy cp xcopy (copia todo el contenido de un directorio) cp -R rename, move mv type (imprime el contenido de un archivo a la pantalla) cat help, [comando] /? man cls (limpia la pantalla) clear find (busca por una palabra(s) en un determinado archivo) grep fc (compara 2 archivos y encuentra diferencias entre ellos) diff set (muestra variable de entorno) env set variable (fija una variable de entorno) export edit nombre-de-archivo vi archivo, pico archivo, nano -w archivo (varios basados en el editor de tu preferencia) attrib +h archivo (fija un archivo como oculto) mv file .file mem (muestra la memoria disponible) free, top scandisk fsck defrag c:\ debugfs format mke2fs, mk32fs -j, mkreiserfs, mkswap, etc. (varios basados en el sistema de archivos de tu preferencia) pkzip (crea un paquete de archivos) tar, utilizado en conjunto con gzip para compresión) tracert traceroute ipconfig (visualiza dirección IP y configuración de red) ifconfig nbtstat -a nombrehost (toma la información DNS de un determinado host) nslookup nombrehost route print (muestra tablas de ruteo) route -n net send host/ip message (envia un mensaje a otro computador) smbclient -M Windows Host, talk (Linux hosts)Fuente: archivogeek.com
Otros S.O
Fuente: Geeki
Geeki comic
UUID, Labels, Particiones y Fstab
Antes de comenzar a hablar sobre UUID y Labels es necesario conocer el funcionamiento del fichero /etc/fstab, pueden ingresar en la siguiente entrada donde se habla del mismo.En la última versión de Archlinux(Core Dump), podemos observar que una de las características sobresaliente es la siguiente:"- Se utilizan los UUID para una nomenclatura persistente de discos".A decir verdad, no tenía ni la menor idea de lo que significaba, claro hasta hoy que necesité montar un disco. Hacía mucho no montaba nada, luego de instalar hal ni me preocupaba por las conexiones usb o discos posteriores que pudiera conectar en mi máquina, ya que lo detectaba automáticamente...Pero no todo es color de rosa, en Gnome, hal me molestaba, noté una baja de velocidad al iniciar ya que detecta los discos u particiones que tuviese en el equipo, y bueno lo terminé desactivando.Ahora era necesario editar el fstab para poder montar de nuevo aquellas particiones desde el inicio y me encontré con algunas sorpresas, veamos que nos muestra /etc/fstab:## /etc/fstab: static file system information## &lt;filesystem&gt;          &lt;dir&gt;      &lt;type&gt;     &lt;options&gt;   &lt;dump&gt;   &lt;pass&gt;none                   /dev/pts      devpts    defaults            0      0none                   /dev/shm      tmpfs     defaults            0      0/dev/cdrom /media/cdrom   auto    ro,user,noauto,unhide   0      0UUID=70c4f0be-c6a0-449e-b2f2-b9689d1f93b6 swap swap defaults 0 0UUID=7824e60c-2dfd-4919-88df-b672eea43400 /home ext3 defaults 0 1UUID=dfa49bd0-dd2c-4c76-a318-a044fc691a6a / ext3 defaults 0 1Como podrán observar ha aparecido un nuevo campo(columna) en la parte donde se declaran los discos, llamada UUID.Algo de teoríaUtilizando nombres persistentes en dispositivos de bloques:Mientras que las distribuciones Gnu/Linux están evolucionando y la detección de hardware es más confiable, hay un número de nuevos problemas y también de nuevos cambios:Si usted tiene más de un controlador de discos sata/scsi o ide, el orden en que es agregado al sistema es al azar. Esto da como resultados nombres de dispositivos como hdX y hdY variando al azar con cada arranque. Lo mismo para los sdX y sdY. El uso de nombres persistentes permite que el usuario no se tenga que preocupar de ninguna manera por esto.Con la introducción del nuevo soporte para libata pata, todos los dispositivos hdX serán dispositivos sdX en el futuro. Nuevamente, con nombramientos persistente, puede ser que ni se note este cambio.Máquinas con controladores sata e ide son bastante común hoy en día. Con los cambios libata mencionados anteriormente, el primer problema no se presentará, así que ambos discos, sata e ide tendrán nombres sdX.¿Qué nombre debo usar?Hay cuatro métodos diferentes para utilizar nombres persistentes.Por UUID (by-uuid): UUID significa Identificador Único Universal(Universally Unique Identifier) y es un mecanismo para dar a cada sistema de archivos un identificador único. Esta diseñado para que las colisiones sean poco probables. Todos las sistemas de archivos de Gnu/Linux (incluyendo el swap) soportan UUID. Los sistemas de archivos FAT y NTFS no soportan UUID, pero se encuentran listados en "by-uuid" con una identificador único. Método Recomendado:[root@ArchLinux braianet]# ls -lF /dev/disk/by-uuid/total 0lrwxrwxrwx 1 root root 10 jul 10 12:24 100CA78D0CA76D02 -> ../../sda1lrwxrwxrwx 1 root root 10 jul 10 12:24 11f5a43a-5904-47bf-845d-8d95ac8730d4 -> ../../sda4lrwxrwxrwx 1 root root 10 jul 10 12:24 5e716466-9f33-44c3-8455-383c8d1e9a10 -> ../../sda2lrwxrwxrwx 1 root root 10 jul 10 12:24 70c4f0be-c6a0-449e-b2f2-b9689d1f93b6 -> ../../sdb1lrwxrwxrwx 1 root root 10 jul 10 12:24 7824e60c-2dfd-4919-88df-b672eea43400 -> ../../sdb3lrwxrwxrwx 1 root root 10 jul 10 12:24 dfa49bd0-dd2c-4c76-a318-a044fc691a6a -> ../../sdb2lrwxrwxrwx 1 root root 10 jul 10 12:24 fe97b59c-3776-452c-9232-65966a5cc230 -> ../../sda3[root@ArchLinux braianet]#Como puede ver, los particiones fat y ntfs (100CA78D0CA76D02 --> NTFS) tienen nombres cortos, pero todavía están listado. La ventaja de usar el método "uuid" es que es mucho menos probable que puede tener una colisión que con labels (etiquetas); la desventaja es que son mucho más difícil de memorizar.Por etiqueta(by-label): En Archlinux no contamos con este método.Casi todos los tipos de sistemas de archivos pueden usar un "label". Todos los particiones que tiene una están listada en el directorio /dev/disk/by-label:$ ls -lF /dev/disk/by-labeltotal 0lrwxrwxrwx 1 root root 10 Oct 16 10:27 data -> ../../sdb2lrwxrwxrwx 1 root root 10 Oct 16 10:27 data2 -> ../../sda2lrwxrwxrwx 1 root root 10 Oct 16 10:27 fat -> ../../sda6lrwxrwxrwx 1 root root 10 Oct 16 10:27 home -> ../../sda7lrwxrwxrwx 1 root root 10 Oct 16 10:27 root -> ../../sda1lrwxrwxrwx 1 root root 10 Oct 16 10:27 swap -> ../../sda5lrwxrwxrwx 1 root root 10 Oct 16 10:27 windows -> ../../sdb1Puede cambiar estas etiquetas de la sistema de archivos utilizando estos comandos:* swap: Crear un nuevo área de intercambio, así: mkswap -L  /dev/XXX* ext2/ext3: e2label /dev/XXX * reiserfs: reiserfstune -l  /dev/XXX* jfs: jfs_tune -L  /dev/XXX* xfs: xfs_admin -L  /dev/XXX* fat/vfat: No hay una herramienta en Linux para cambiar el etiqueta (label), pero al crear la sistema de archivos, utilizar mkdosfs -n  .También puede cambiar la etiqueta de una sistema de archivos utilizando Windows.* ntfs: ntfslabel /dev/XXX  o cambiarlo en Windows.Tenga cuidado: Las etiquetas tienen que ser únicas para hacer este trabajo, a fin de asegurar su correcto funcionamiento. Por Id (by-id): Crea un nombre único en función del número de serie de hardware. Ej:[root@ArchLinux braianet]# ls -lF /dev/disk/by-id/total 0lrwxrwxrwx 1 root root  9 jul 10 12:24 ata-ST340823A_6EF0VBZA -> ../../sdalrwxrwxrwx 1 root root 10 jul 10 12:24 ata-ST340823A_6EF0VBZA-part1 -> ../../sda1lrwxrwxrwx 1 root root 10 jul 10 12:24 ata-ST340823A_6EF0VBZA-part2 -> ../../sda2lrwxrwxrwx 1 root root 10 jul 10 12:24 ata-ST340823A_6EF0VBZA-part3 -> ../../sda3lrwxrwxrwx 1 root root 10 jul 10 12:24 ata-ST340823A_6EF0VBZA-part4 -> ../../sda4lrwxrwxrwx 1 root root  9 jul 10 12:24 ata-WDC_WD150AA-34BAA0_WD-WMA2N1336879 -> ../../sdblrwxrwxrwx 1 root root 10 jul 10 12:24 ata-WDC_WD150AA-34BAA0_WD-WMA2N1336879-part1 -> ../../sdb1lrwxrwxrwx 1 root root 10 jul 10 12:24 ata-WDC_WD150AA-34BAA0_WD-WMA2N1336879-part2 -> ../../sdb2lrwxrwxrwx 1 root root 10 jul 10 12:24 ata-WDC_WD150AA-34BAA0_WD-WMA2N1336879-part3 -> ../../sdb3lrwxrwxrwx 1 root root  9 jul 10 12:24 scsi-SATA_ST340823A_6EF0VBZA -> ../../sdalrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_ST340823A_6EF0VBZA-part1 -> ../../sda1lrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_ST340823A_6EF0VBZA-part2 -> ../../sda2lrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_ST340823A_6EF0VBZA-part3 -> ../../sda3lrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_ST340823A_6EF0VBZA-part4 -> ../../sda4lrwxrwxrwx 1 root root  9 jul 10 12:24 scsi-SATA_WDC_WD150AA-34BWD-WMA2N1336879 -> ../../sdblrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_WDC_WD150AA-34BWD-WMA2N1336879-part1 -> ../../sdb1lrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_WDC_WD150AA-34BWD-WMA2N1336879-part2 -> ../../sdb2lrwxrwxrwx 1 root root 10 jul 10 12:24 scsi-SATA_WDC_WD150AA-34BWD-WMA2N1336879-part3 -> ../../sdb3[root@ArchLinux braianet]#Por ruta (by-path): Crea un nombre único, dependiendo de la ruta más corta física (de acuerdo a sysfs). Ambos contienen cadenas para indicar al subsistema al que pertenecen (es decir, "-ide-", por "by-path", y "ata-" por "by-id ') y, por lo tanto, no son adecuadas para la solución de los problemas mencionados en el principio de este artículo. No recomendado utilizar este método.[root@ArchLinux braianet]# ls -lF /dev/disk/by-path/total 0lrwxrwxrwx 1 root root  9 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:0:0 -> ../../sdalrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:0:0-part1 -> ../../sda1lrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:0:0-part2 -> ../../sda2lrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:0:0-part3 -> ../../sda3lrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:0:0-part4 -> ../../sda4lrwxrwxrwx 1 root root  9 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:1:0 -> ../../sdblrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:1:0-part1 -> ../../sdb1lrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:1:0-part2 -> ../../sdb2lrwxrwxrwx 1 root root 10 jul 10 12:24 pci-0000:00:00.1-scsi-0:0:1:0-part3 -> ../../sdb3lrwxrwxrwx 1 root root  9 jul 10 12:24 pci-0000:00:00.1-scsi-1:0:1:0 -> ../../sr0[root@ArchLinux braianet]#Basta de Teoría je. Ahora continuemos con mi objetivo, poder montar una partición, vemos las particiones en mi sistema con el comando fdisk -l:[root@ArchLinux braianet]# fdisk -lDisco /dev/sda: 40.0 GB, 40020664320 bytes255 heads, 63 sectors/track, 4865 cylindersUnits = cilindros of 16065 * 512 = 8225280 bytesDisk identifier: 0x4c2ba12cDisposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema/dev/sda1   *           2        2365    18988830    7  HPFS/NTFS/dev/sda2            2366        4675    18555075   83  Linux/dev/sda3            4761        4865      843412+  82  Linux swap / Solaris/dev/sda4            4676        4760      682762+  83  LinuxLas entradas de la tabla de particiones no están en el orden del discoDisco /dev/sdb: 15.0 GB, 15020457984 bytes16 heads, 63 sectors/track, 29104 cylindersUnits = cilindros of 1008 * 512 = 516096 bytesDisk identifier: 0x90909090Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema/dev/sdb1               1        1008      508000+  82  Linux swap / Solaris/dev/sdb2   *        1009       15540     7324128   83  Linux/dev/sdb3           15541       29104     6836256   83  Linux[root@ArchLinux braianet]#Quiero agregar /dev/sda2 al fstab pero no conozco su UUID, ahora lo averiguaremos, tenemos dos opciones, una es haciendo un ls -l /dev/disk/by-uuid y la otra es utilizando el comando blkid, la segunda opción es la que recomiendo:[root@ArchLinux braianet]# blkid /dev/sda1: UUID="100CA78D0CA76D02" TYPE="ntfs"/dev/sda2: UUID="5e716466-9f33-44c3-8455-383c8d1e9a10" SEC_TYPE="ext2" TYPE="ext3"/dev/sda3: TYPE="swap" UUID="fe97b59c-3776-452c-9232-65966a5cc230"/dev/sda4: UUID="11f5a43a-5904-47bf-845d-8d95ac8730d4" SEC_TYPE="ext2" TYPE="ext3"/dev/sdb1: TYPE="swap" UUID="70c4f0be-c6a0-449e-b2f2-b9689d1f93b6"/dev/sdb2: UUID="dfa49bd0-dd2c-4c76-a318-a044fc691a6a" SEC_TYPE="ext2" TYPE="ext3"/dev/sdb3: UUID="7824e60c-2dfd-4919-88df-b672eea43400" SEC_TYPE="ext2" TYPE="ext3"[root@ArchLinux braianet]#Ya obtuvimos su UUID, el tipo de sistema es ext2/3. Creamos un directorio en /media llamado Datos_Linux y lo agregamos al fstab:## /etc/fstab: static file system information## &lt;filesystem&gt;          &lt;dir&gt;      &lt;type&gt;     &lt;options&gt;   &lt;dump&gt;   &lt;pass&gt;none                   /dev/pts      devpts    defaults            0      0none                   /dev/shm      tmpfs     defaults            0      0/dev/cdrom /media/cdrom   auto    ro,user,noauto,unhide   0      0UUID=70c4f0be-c6a0-449e-b2f2-b9689d1f93b6 swap swap defaults 0 0UUID=7824e60c-2dfd-4919-88df-b672eea43400 /home ext3 defaults 0 1UUID=dfa49bd0-dd2c-4c76-a318-a044fc691a6a / ext3 defaults 0 1UUID=5e716466-9f33-44c3-8455-383c8d1e9a10 /media/Datos_Linux defaults 0 2Bueno ya logré lo que buscaba, espero que les haya resultado útil el artículo, lo recomendable es utilizar el UUID en el Grub, así independientemente del lugar donde conecten sus discos se podrá bootear igual.Ejemplo de mi /boot/grub/menu.lst:# (0) Arch Linuxtitle  Arch Linux (Core Dump)root   (hd1,1)kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/dfa49bd0-dd2c-4c76-a318-a044fc691a6a roinitrd /boot/kernel26.img# (1) Arch Linuxtitle  Arch Linux Fallbackroot   (hd1,1)kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/dfa49bd0-dd2c-4c76-a318-a044fc691a6a roinitrd /boot/kernel26-fallback.img## (1) Windowstitle Windowsrootnoverify (hd0,0)makeactivechainloader +1[braianet@ArchLinux ~]$Con Gnu/Linux siempre algo nuevo se aprende todos los días. Saludos!Referencias: wiki.archlinux.org, dalealteclado.com, manual.sidux.com
Howto de sudo, visudo, sudoers
Copyright 2005-2008 Sergio González DuránSe concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation. autor: sergio.gonzalez.duran@gmail.com [ÍNDICE...] En ambientes donde varios usuarios usan uno o más sistemas GNU/Linux, es necesario otorgar distintos permisos o privilegios para que estos puedan hacer uso de comandos propios del usuario administrador 'root'. Totalmente fuera de lugar e impensable es 'entregar' la contraseña de root para que los usuarios puedan hacer uso de los programas propios de sus funciones pero que son propiedad de 'root'. Por otro lado, hacer uso del comando su tampoco es práctico porque es lo mismo, necesitan la contraseña de root, asi que la mejor alternativa es hacer uso de sudo. ¿Exáctamente que es y que hace sudo?. sudo permite implementar un control de acceso altamente granulado de que usuarios ejecutan que comandos. Si un usuario normal desea ejecutar un comando de root (o de cualquier otro usuario), sudo verifica en su lista de permisos y si está permitido la ejecución de ese comando para ese usuario, entonces sudo se encarga de ejecutarlo. Es decir, sudo es un programa que basado en una lista de control (/etc/sudoers) permite (o no) la ejecución al usuario que lo invocó sobre un determinado programa propiedad de otro usuario, generalmente del administrador del sistema 'root'. sudo, para fines prácticos se puede dividir en tres partes: sudo, el comando con permisos de SUID, que los usuarios usan para ejecutar otros comandos a los que se les permite usar.visudo, el comando que permite al administrador modificar /etc/sudoers./etc/sudoers, el archivo de permisos que le indica a sudo que usuarios ejecutan cuáles comandos. sudo sudo (SUperuser DO) lo ejecuta un usuario normal, al que se supone tiene permisos para ejecutar cierto comando. Entonces, sudo requiere que los usuarios se autentifiquen a si mismos a través de su contraseña para permitirles la ejecución del comando. Veamos un ejemplo: $ sudo /sbin/ifconfigPassword:eth0      Link encap:Ethernet  HWaddr 4C:00:10:60:5F:21    inet addr:200.13.110.62  Bcast:200.13.110.255  Mask:255.255.255.0    inet6 addr: fe80::4e00:10ff:fe60:5f21/64 Scope:Link... Como se podrá observar se usa el comando sudo seguido del comando (con toda su ruta si es que este no esta en el PATH del usuario) al que se tiene permiso. sudo pregunta por la contraseña del usuario que ejecuta el comando y listo. Por defecto, después de hacer lo anterior tendrás 5 minutos para volver a usar el mismo comando u otros a los que tuvieras derecho, sin necesidad de ingresar la contraseña de nuevo. Si se quiere extender el tiempo por otros 5 minutos usa la opción sudo -v (validate). Por el contario, si ya terminaste lo que tenías que hacer, puedes usar sudo -k (kill) para terminar con el tiempo de gracia de validación. Ahora bien, ¿Qué comandos son los que puedo utilizar?, pues la opción -l es la indicada para eso: $ sudo -lUser sergio may run the following commands on this host:(root) /sbin/ifconfig(root) /sbin/lspci En el caso anterior se ejecutó un comando de root, pero no tiene que ser asi, también es posible ejecutar comandos de otros usuarios del sistema indicando la opción -u: $ sudo -u ana /comando/de/ana Una de las opciones más interesantes es la que permite editar archivos de texto de root (claro, con el permiso otorgado en 'sudoers' como se verá más adelante), y esto se logra con la opción -e, esta opción esta ligada a otro comando de sudo llamado sudoedit que invoca al editor por defecto del usuario, que generalmente es 'vi'. $ sudo -e /etc/inittab(Permitira modificar el archivo indicado como si se fuera root) Cuando se configura sudo se tienen múltiples opciones que se pueden establecer, estás se consultan a través de la opción -L $> sudo -LAvailable options in a sudoers ``Defaults'' line:syslog: Syslog facility if syslog is being used for loggingsyslog_goodpri: Syslog priority to use when user authenticates successfullysyslog_badpri: Syslog priority to use when user authenticates unsuccessfullylong_otp_prompt: Put OTP prompt on its own lineignore_dot: Ignore '.' in $PATHmail_always: Always send mail when sudo is runmail_badpass: Send mail if user authentication failsmail_no_user: Send mail if the user is not in sudoersmail_no_host: Send mail if the user is not in sudoers for this hostmail_no_perms: Send mail if the user is not allowed to run a commandtty_tickets: Use a separate timestamp for each user/tty combolecture: Lecture user the first time they run sudolecture_file: File containing the sudo lectureauthenticate: Require users to authenticate by defaultroot_sudo: Root may run sudo...varias opciones más Bastante útil, ya que nos muestra las opciones y una pequeña descripción, estás opciones se establecen en el archivo de configuración 'sudoers'. Una de las opciones más importantes de consulta es -V, que permite listar las opciones (defaults) establecidas por defecto para sudo todos los usuarios, comandos, equipos, etc. Más adelante en este tutorial, aprenderemos como establecer opciones específicas para ciertos usuarios, comandos o equipos. NOTA: tienes que ser 'root' para usar esta opción. # sudo -VSudo version 1.6.9p5Sudoers path: /etc/sudoersAuthentication methods: 'pam'Syslog facility if syslog is being used for logging: local2Syslog priority to use when user authenticates successfully: noticeSyslog priority to use when user authenticates unsuccessfully: alertSend mail if the user is not in sudoersLecture user the first time they run sudoRequire users to authenticate by defaultRoot may run sudoLog the hostname in the (non-syslog) log fileAllow some information gathering to give useful error messagesVisudo will honor the EDITOR environment variableSet the LOGNAME and USER environment variablesReset the environment to a default set of variablesLength at which to wrap log file lines (0 for no wrap): 80Authentication timestamp timeout: 5 minutesPassword prompt timeout: 5 minutesNumber of tries to enter a password: 3Umask to use or 0777 to use user's: 022Path to log file: /var/log/sudo.log...varias opciones más listadas Con intención, trunque el listado anterior en la línea "Path to log file: /var/log/sudo.log", donde se indica cual es el archivo 'log' o de bitacora por defecto de sudo, en este archivo se loguea absolutamente todo lo que se haga con sudo, que usuarios ejecutaron que, intentos de uso, etc.visudo Permite la edición del archivo de configuración de sudo sudoers. Invoca al editor que se tenga por defecto que generalemente es 'vi'. visudo cuando es usado, bloquea el archivo /etc/sudoers de tal manera que nadie más lo puede utilizar, esto por razones obvias de seguridad que evitarán que dos o más usuarios administradores modifiquen accidentalmente los cambios que el otro realizó. Otra característica importande de visudo es que al cerrar el archivo, verifica que el archivo este bien configurado, es decir, detectará si hay errores de sintaxis principalmente en sus múltiples opciones o reglas de acceso que se tengan. Por esta razón no debe editarse /etc/sudoers directamente (perfectamente posible ya que es un archivo de texto como cualquier otro) sino siempre usar visudo. Si al cerrar visudo detecta un error nos mostrará la línea donde se encuentra, y la pregunta "What now?": >>> sudoers file: syntax error, line 15 <<<> Se tienen tres opciones para esta pregunta: e - edita de nuevo el archivo, colocando el cursor en la línea del error (si el editor soporta esta función.)x - salir sin guardar los cambios.Q - salir y guarda los cambios. Por defecto el archivo de configuración es /etc/sudoers pero se pueden editar otros archivos que no sean ese y que se aplique la sintaxis de sudo, y esto se logra con la opción -f (visudo -f /otro/archivo). Si tan solo se desea comprobar que /etc/sudoers esta bien configurado se usa la opción -c, toma por el archivo de configuración por defecto o si no se indica algún otro. #> visudo -c/etc/sudoers file parsed OK La opción -s activa el modo 'estricto' del uso de visudo, es decir no solo se comprobará lo sintáctico sino también el orden correcto de las reglas, por ejemplo si se define el alias para un grupo de comandos y este se usa antes de su definición, con esta opción se detectará este tipo de errores.Sudoers Archivo de configuración de sudo, generalmente ubicado bajo /etc y se modifica a través del uso de visudo. En este archivo se establece quien (usuarios) puede ejecutar que (comandos) y de que modo (opciones), generando efectivamente una lista de control de acceso que puede ser tan detallada como se desee. Es más fácil entender sudo si dividimos en tres partes su posible configuración, estás son: AliasOpciones (Defaults)Reglas de acceso Por extraño que parezca ninguna de las secciones es obligatoria, o tienen que estar en algún orden específico, pero la que al menos debe de existir es la tercera, que es la definción de los controles o reglas de acceso. Se detallará cada uno de estos en un momento. Para los que les gusta saber más la cuestión técnica es interesante saber que la construcción de un archivo sudoers esta basado en la forma BNF (Backus-Naur Form), concretamente en versión extendida (EBNF), si estudiaste algún curso de informática universitario seguramente sabes de lo que hablo. EBNF describe de una forma precisa y exacta la gramática de un lenguaje, esta se va creando a través de reglas de producción que a la vez son la base para ser referenciadas por otras reglas. Afortunadamente no necesitas saber nada de esto, solo entender como se aplican estas reglas.Alias Un alias se refiere a un usuario, un comando o a un equipo. El alias engloba bajo un solo nombre (nombre del alias) una serie de elementos que después en la parte de definición de reglas serán refiridos aplicados bajos cierto criterio. Es decir, regresando a EBNF estamos creando las reglas de producción inicial. La forma para crear un alias es la siguiente:tipo_alias NOMBRE_DEL_ALIAS = elemento1, elemento2, elemento3, ... elementoN tipo_alias NOMBRE1 = elemento1, elemento2 : NOMBRE2 = elemento1, elemento2 En el segundo caso, separado por ":" es posible indicar más de un alias en una misma definción.El tipo_alias define los elementos, es decir, dependiendo del tipo de alias serán sus elementos. Los tipo de alias son cuatro y son los siguientes: Cmnd_Alias - define alias de comandos.User_Alias - define alias de usuarios normales.Runas_Alias - define alias de usuarios administradores o con privilegios.Host_Alias - define alias de hosts o equipos. El NOMBRE_DEL_ALIAS puede llevar letras, números o guión bajo ( _ ) y DEBE de comenzar con una letra mayúscula, se acostumbra a usarlos siempre en mayúsculas. Los elementos del alias varian dependiendo del tipo de alias, asi que veámoslos por partes asi como varios ejemplos para que comience a quedar claro todo esto.Cmnd_Alias Definen uno o más comandos y otros alias de comandos que podrán ser utilizados después en alias de usuarios. Ejemplos:Cmnd_Alias WEB = /usr/sbin/apachectl, /usr/sbin/httpd, sudoedit /etc/httpd/ Indica que a quien se le aplique el alias WEB podrá ejecutar los comandos apachectl, httpd y editar todo lo que este debajo del directorio /etc/httpd/, nótese que debe de terminar con '/' cuando se indican directorios. También, la ruta completa a los comandos debe ser indicada.Cmnd_Alias APAGAR = /usr/bin/shutdown -h 23\:00 Al usuario que se le asigne el alias APAGAR podrá hacer uso del comando 'shutdown' exactamente con los parámetros como están indicados, es decir apagar -h (halt) el equipo a las 23:00 horas. Nótese que es necesario escapar el signo ':', asi como los símbolos ' : , = \Cmnd_Alias NET_ADMIN = /sbin/ifconfig, /sbin/iptables, WEB NET_ADMIN es un alias con los comandos de configuración de interfaces de red ifconfig y de firewall iptables, pero además le agregamos un alias previamente definido que es WEB, asi que a quien se le asigne este alias podrá hacer uso de los comandos del alias WEB.Cmnd_Alias TODO_BIN = /usr/bin/, !/usr/bin/rpm A quien se le asigne este alias podrá ejecutar todos los comandos que estén dentro del directorio /usr/bin/ menos el comando 'rpm' ubicado en el mismo directorio. NOTA IMPORTANTE: este tipo de alias con un permiso muy amplios menos '!' algo, generalmente no son una buena idea, ya que comandos nuevos que se añadan después a ese directorio también podrán ser ejecutados, es mejor siempre definir específicamente lo que se requiera.User_Alias Definen a uno o más usuarios, grupos del sistema (indicados con %), grupos de red (netgroups indicados con +) u otros alias de usuarios. Ejemplos:User_Alias MYSQL_USERS = andy, marce, juan, %mysql Indica que al alias MYSQL_USERS pertenecen los usuarios indicados individualmente más los usuarios que formen parte del grupo 'mysql'.User_Alias ADMIN = sergio, ana 'sergio' y 'ana' pertenecen al alias ADMIN.User_Alias TODOS = ALL, !samuel, !david Aqui encontramos algo nuevo, definimos el alias de usuario TODOS que al poner como elemento la palabra reservada 'ALL' abarcaría a todos los usuarios del sistema, pero no deseamos a dos de ellos, asi que negamos con '!', que serían los usuarios 'samuel' y 'david'. Es decir, todos los usuarios menos esos dos. NOTA IMPORTANTE: este tipo de alias con un permiso muy amplios menos '!' algo, generalmente no son una buena idea, ya que usuarios nuevos que se añadan después al sistema también serán considerados como ALL, es mejor siempre definir específicamente a los usuarios que se requieran. ALL es válido en todos los tipos de alias.User_Alias OPERADORES = ADMIN, alejandra Los del alias ADMIN más el usuario 'alejandra'.Runas_Alias Funciona exactamente igual que User_Alias, la única diferencia es que es posible usar el ID del usario UID con el caracter '#'. Runas_Alias OPERADORES = #501, fabian Al alias OPERADORES pertenecen el usuario con UID 501 y el usuario 'fabian'Host_Alias Definen uno o más equipos u otros alias de host. Los equipos pueden indicarse por su nombre (si se encuentra en /etc/hosts) por nombre de dominio, si existe un resolvedor de dominios, por dirección IP, por dirección IP con máscara de red. Ejemplos:Host_Alias LANS = 192.168.0.0/24, 192.168.0.1/255.255.255.0 El alias LANS define todos los equipos de las redes locales.Host_Alias WEBSERVERS = 172.16.0.21, web1 : DBSERVERS = 192.168.100.10, dataserver Se define dos alias en el mismo renglón: WEBSERVERS y DBSERVERS con sus respectivas listas de elementos, el separador ':' es válido en cualquier definición de tipo de alias.Opciones (defaults) Las opciones o defaults permiten definir ciertas características de comportamiento para los alias previamente creados, para usuarios, usuarios privilegiados, para equipos o de manera global para todos. No es necesario definir opciones o defaults, sudo ya tiene establecidas el valor de cada uno, y es posible conocerlas a través de sudo -V (ver en la sección sudo de este tutorial). Sin embargo, la potencia de sudo está en su alta granularidad de configuración, asi que es importante conocer como establecer opciones espécificas. Las opciones o defaults es posible establecerlos en cuatro niveles de uso: De manera global, afecta a todosPor usuarioPor usuario privilegiadoPor equipo (host) Se usa la palabra reservada 'Defaults' para establecer las opciones y dependiendo del nivel que deseamos afectar su sintaxis es la siguiente: Global: Defaults opcion1, opcion2 ...Usuario: Defaults:usuario opcion1, opcion2 ...Usuario Privilegiado: Defaults>usuario opcion1, opcion2 ...Equipo: Defaults@equipo opcion1, opcion2 ... La lista de opciones es algo extensa, pueden consultarse en las páginas del manual (man sudoers) o en el excelente manual sobre sudo del sitio web de www.rpublica.net http://www.rpublica.net/sudo/indice.html#defaults, está en español y define muy claramente lo que significa cada opción. En este tutorial de LinuxTotal.com.mx me concretaré a ejemplificar varios ejemplos del uso de establecer opciones. Los defaults los divide el manual (man sudoers) en cuatro: flags o booleanos, enteros, cadenas y listas. Veamos entonces algunos ejemplos de uso para cada uno de ellos:flags o booleanos Generalemente se usan de manera global, simplemente se indica la opción y se establece a 'on' para desactivarla 'off' se antepone el símbolo '!' a la opción. Es necesario consultar el manual para saber el valor por defecto 'on' o 'off' para saber si realmente necesitamos invocarla o no.Defaults mail_always Establece a 'on' la opción 'mail_always' que enviara un correo avisando cada vez que un usuario utiliza sudo, a la vez, este opción requiere que 'mailto_user' este establecida.Defaults !authenticate, log_host Desactiva 'off' el default 'authenticate' que por defecto esta activado 'on' e indica que todos los usuarios que usen sudo deben identificarse con su contraseña, obviamente esto es un ejemplo y sería una pésima idea usarlo realmente, ya que ningún usuario necesitaria autenticarse, esto es porque estamos usando Defaults de manera global. La segunda opción 'log_host' que por defecto está en 'off' la activamos y bitacoriza el nombre del host cuando se usa un archivo (en vez de syslog) como bitácora de sudo.Defaults:ana !authenticate Aqui se aprecia algo más lógico, usamos opciones por usuario en vez de global, indicando que el usuario 'ana' no requerira auténticarse. Pero todos los demás si.Defaults>ADMIN rootpw Opciones para usuarios privilegiados, en vez de usar una lista de usuarios, usamos un alias 'ADMIN' que se supone fue previamente definido, y establecemos en 'on' la opción 'rootpw' que indica a sudo que los usuarios en el alias 'ADMIN' deberán usar la contraseña de 'root' en vez de la propia.Enteros Tal como su nombre lo indica, manejan valores de números enteros en sus opciones, que deben entonces usarse como opción = valor.Defaults:fernanda, regina passwd_tries = 1, passwd_timeout = 1 Ejemplo donde se aprecia el uso de opciones con valores enteros. En este caso se establecen opciones para los usuarios 'fernanda' y 'regina' solamente, que solo tendrán una oportunidad de ingresar la contraseña correcta 'passwd_tries' el valor por defecto es de 3 y tendrán un minuto para ingresarla 'passwd_timeout' el valor por defecto son 5 minutos. La mayoría de las opciones de tiempo o de intentos, al establecerlas con un valor igual a cero entonces queda ilimitado la opción.Defaults@webserver umask = 011 Se establecen opciones solo para los usuarios que se conectan al servidor 'webserver' y el valor 'umask' indica que si mediante la ejecución del comando que se invoque por sudo es necesario crear archivos o diectorios, a estos se les aplicará la máscara de permisos indicada en el valor de la opción.Cadenas Son valores de opciones que indican mensajes, rutas de archivos, etc. Si hubiera espacios en el valor es necesario encerrar el valor entre comillas dobles (" ").Defaults badpass_message = "Intenta de nuevo: " Para todos los usuarios, cuando se equivoquen al ingresar la contraseña, es el mensaje que saldría. En este caso la opción por defecto es "Sorry: try again".Listas Permite establecer/eliminar variables de entorno propias de sudo. Los 'Defaults' para variables es de los menos usados en las configuraciones de sudo y ciertamente de los más confusos. Para entender como se aplican es más fácil si primero ejecutas como 'root' el comando sudo -V, y al final del listado encontrarás en mayúsculas las posibles variables de entorno que se pueden establecer o quitar y que vienen del shell. Solo existen tres opciones de listas: env_check, env_delete y env_keep, las listas pueden ser remplazadas con '=', añadidas con '+=', eliminadas con '-=' o deshabilitadas con '!'. Con un par de ejemplos quedará más claro.Defaults env_delete -= HOSTNAME Elimina la variable de entorno 'HOSTNAME', (pero preserva todas las demás que hubiera) y comandos que se ejecuten bajo sudo y que requieran de esta variable no la tendrían disponible.Defaults env_reset Defaults env_check += DISPLAY, PS1 La primera opción 'env_reset' reinicializa las variables de entorno que sudo utilizará o tendrá disponibles, y solo quedan disponibles LOGNAME, SHELL, USER y USERNAME. La siguiente línea indica que agregue (+=) a lo anterior, también la variable de entorno DISPLAY a su valor establecido antes del reset.Reglas de acceso Aunque no es obligatorio declarar alias, ni opciones (defaults), y de hecho tampoco reglas de acceso, pues el archivo /etc/sudoers no tendría ninguna razón de ser si no se crean reglas de acceso. De hecho podríamos concretarnos a crear solamente reglas de acceso, sin opciones ni alias y podría funcionar todo muy bien. Las reglas de acceso definen que usuarios ejecutan que comandos bajo que usuario y en que equipos. La mejor y (según yo, única manera) de entender y aprender a configurar sudoers es con ejemplos, asi que directo al grano:usuario host = comando1, comando2, ... comandoN Sintaxis básica, 'usuario' puede ser un usuario, un alias de usuario o un grupo (indicado por %), 'host' puede ser ALL cualquier equipo, un solo equipo, un alias de equipo, una dirección IP o una definición de red IP/máscara, 'comandox' es cualquier comando indicado con su ruta completa. Si se termina en '/' como en /etc/http/ entonces indica todos los archivos dentro de ese directorio.daniela ALL = /sbin/iptables Usuario 'daniela' en cualquier host o equipo puede utiliar iptables.ADMIN ALL = ALL Los usuarios definifos en el alias 'ADMIN' desde cualquier host pueden ejecutar cualquier comando.%gerentes dbserver = (director) /usr/facturacion, (root) /var/log/* Un ejemplo más detallado. Los usuarios que pertenezcan al grupo del sistema llamado 'gerentes' pueden en el equipo llamado 'dbserver' ejecutar como si fueran el usuario 'director' la aplicación llamada 'facturacion', además como usuarios 'root' pueden ver el contendido de los archivos que contenga el directorio /var/log.Lo anterior intoduce algo nuevo, que en la lista de comandos es posible indicar bajo que usuario se debe ejecutar el permiso. Por defecto es el usuario 'root', pero no siempre tener que asi. Además la lista 'hereda' la primera definición de usuario que se indica entre paréntesis ( ), por eso si se tiene más de alguno hay que cambiar de usuario en el comando conveniente, el ejemplo anterior también sería válido de la siguiente manera: %gerentes dbserver = /var/log/*, (director) /usr/facturacion No es necesario indicar (root) ya que es el usuario bajo el cual se ejecutan los comandos por defecto. También es válido usar (ALL) para indicar bajo cualquier usuario. El ejemplo siguiente da permisos absolutos.sergio ALL = (ALL) ALL Se establece permiso para el usuario 'sergio' en cualquier host, ejecutar cualquier comando de cualquier usuario, por supuesto incluyendo los de root.SUPERVISORES PRODUCCION = OPERACION Una regala formada solo por alias. En el alias de usuario 'SUPERVISORES' los usuarios que esten indicados en ese alias, tendrán permiso en los equipos definidos en el alias de host 'PRODUCCION', de ejecutar los comandos definidos o listados en el alias de comandos 'OPERACION'.En este último ejemplo se aprecia lo últil que pueden ser los alias, ya que una vez definida la regla, solo debemos agregar o eliminar elementos de las listas de alias definidos previamente. Es decir, se agrega un equipo más a la red, se añade al alias 'PRODUCCION', un usuario renuncia a la empresa, alteramos el alias 'SUPERVISORES' eliminándolo de la lista, etc. checo ALL = /usr/bin/passwd *, !/usr/bin/passwd root Este es un ejemplo muy interesante de la potencia y flexibilidad . Al usuario 'checo', desde cualquier equipo, tiene permiso de cambiar la contraseña de cualquier usuario (usando el comando 'passwd'), excepto '!' la contraseña del usuario 'root'. Lo anterior se logra mediante el uso de argumentos en los comandos. En el primer ejemplo '/usr/bin/passwd *' el asterisco indica una expansión de comodin (wildcard) que indica cualquier argumento, es decir, cualquier usuario. En el segundo caso '!/usr/bin/passwd root', si indica un argumento específico 'root', y la '!' como ya se sabe indica negación, negando entonces el permiso a cambiar la contraseña de root.Cuando se indica el comando sin argumentos: /sbin/iptables sudo lo interpreta como 'puede usar iptables con cualquiera de sus argumentos'.mariajose ALL = "/sbin/lsmod" Al estar entre comillas dobles un comando, entonces sudo lo interpreta como 'puede hacer uso del comando lsmod pero sin argumentos'. En este caso el usuario 'mariajose' podrá ver la lista de módulos del kernel, pero solo eso.Tags (etiquetas de comandos) Cuando se definen reglas, en la lista de comandos, estos pueden tener cero (como en los ejemplos anteriores) o más tags. Existen 6 de estas etiquetas o tags, NOPASSWD Y PASSWD Por defecto sudo requiere que cualquier usuario se identifique o auténtifique con su contraseña. Aprendimos en la sección de 'Opciones' o 'Defaults' que es posible indicar que un usuario o alias de usuario no requiera de autentificación. Pero el control granular propio de sudo, permite ir aun más lejos al indicar a nivel de comandos, cuáles requieren contraseña para su uso y cuáles no.gerardo webserver = NOPASSWD: /bin/kill, /usr/bin/lprm, /etc/httpd/conf/ Usuario 'gerardo' en el equipo 'webserver' no requerira contraseña para los comandos listados. El tag se hereda, es decir no solo el primer elemento de la lista de comandos, sino los subsiguientes. Suponiendo que el último '/etc/httpd/conf/' elemento, que permite modificar cualquier archivo contenido en el directorio, si deseamos que use contraseña, lo siguiente lo conseguirá: gerardo webserver = NOPASSWD: /bin/kill, /usr/bin/lprm, PASSWD: /etc/httpd/conf/ Aunque ya que solicitar contraseña es el default o defecto preestablecido, lo anterior también funcionará de la siguiente manera: gerardo webserver = /etc/httpd/conf/, NOPASSWD: /bin/kill, /usr/bin/lprm, NOEXEC Y EXEC Este es un tag muy importante a considerar cuando sobre se otorgan permisos sobre programas que permiten escapes a shell (shell escape), como en el editor 'vi' que mediante el uso de '!' es posible ejecutar un comando en el shell sin salir de 'vi'. Con el tag NOEXEC se logra que esto no suceda, aunque no hay que tomarlo como un hecho, ya que siempre existe la posibilidad de vulnerabilidades no conocidas en los múltiples programas que utilizan escapes a shell. Al igual que los tags anteriores, el tag se hereda y se deshabilita con su tag contrario (EXEC), en caso de que en la lista de comandos hubiera varios comandos. valeria ALL = NOEXEC: /usr/bin/vi SETENV Y NOSETENV Una de las múltiples opciones que pueden establecerse en la sección 'Defaults' u 'opciones' es la opción booleana o de flag 'setenv' que por defecto y para todos los usuarios esta establecida en 'off'. Esta opción si se activa por usuario (Defaults:sergio setenv) permitirá al usuario indicado cambiar el entorno de variables del usuario del cual tiene permisos de ejecutar comandos, y como generalmente este es 'root' pues es obvio que resulta bastante peligrosa esta opción. A nivel de lista de comandos, es posible entonces especificar el tag 'SETENV' a un solo comando o a una pequeña lista de estos y solo cuando se ejecuten estos se podrán alterar su entorno de variables. Es decir, en vez de establecerlo por usuario, sería mas conveniente establecerlo por comando a ejcutarse solamente. ADMIN ALL = SETENV: /bin/date, NOSETENV ALL A los usuarios definidos en el alias de usuario 'ADMIN' en cualquier host, pueden alterar las variables de entorno cuando ejecuten el comando 'date' (que puede ser útil por ejemplo para cambiar variables del tipo LOCALE), y cualquier otro comando, no tendrá esta opción al habilitar el tag contrario 'NOSETENV'. Y ya que este es el default, también sería válido de la siguiente manera y harían lo mismo: ADMIN ALL = ALL, SETENV: /bin/date ARCHIVO /ETC/SUDOERS DE EJEMPLO Para concluir este manual, veamos un pequeño ejemplo de un archivo /etc/sudoers: # ***********************# LinuxTotal.com.mx, ejemplo de un archivo sudoers# sergio.gonzalez.duran@gmail.com# ***********************# ***********************# DEFINCION DE ALIAS# ***********************# administradores con todos los privilegiosUser_Alias ADMINS = sergio, ana# administradores de red - network operatorsUser_Alias NETOPS = marcela, andrea# webmasters -User_Alias WEBMAS = cristina, juan# supervisores de producción (todos los del grupo de sistema supervisores)User_Alias SUPPRO = samuel, %supervisores# usuarios que pueden conectarse desde InternetUser_Alias INETUS = NETOPS, ADMINS, samuel# servidores webHost_Alias WEBSERVERS = 10.0.1.100, 10.0.1.101# servidores de aplicacionesHost_Alias APLICACIONES = WEBSERVERS, 10.0.1.102, 10.0.1.103, mailserver# comandos de red permitidosCmnd_Alias REDCMDS = /sbin/ifconfig, /sbin/iptables# comandos de apacheCmnd_Alias APACHECMDS = /usr/sbin/apachectl, /sbin/service httpd *# ***********************# DEFINCION DE OPCIONES# ***********************# Los usuarios administradores, requieren autentificarse con la contraseña de 'root'Defaults>ADMINS rootpw# Para todos los usuarios, tienen hasta dos intentos para ingresar su contraseña y 3 minuto para que esta expireDefaults passwd_tries = 4, passwd_timeout = 1# Los usuarios que se conectan desde Internet, solo tienen una oportunidad y cero timeout lo que implica# que cada comando que usen a través de sudo requerira siempre de autentificación.Defaults:INETUS passwd_tries = 1, passwd_timeout = 0# Máscara de directorios y archivos por default, para los que ejecuten sudo en los servidores webDefaults@WEBSERVERS umask = 022# ***********************# DEFINCION DE REGLAS# ***********************# administradores todo se les permite en cualquier equipo (&#161;&#161;&#161;&#161;&#161;cuidado con esto en la vida real!!!!!ADMINS ALL = (ALL) ALL# administradores de red, en todos los equipos, los comandos de redNETOPS ALL = REDCMDS# webmasters, en los servidores web con los comandos indicados en apachecmds y además sin necesidad# de contraseña acceder a las bítacoras de apache y reiniciar los servidores.WEBMAS WEBSERVERS = APACHECMDS, NOPASSWD: /var/log/apache/, /sbin/reboot# supervisores, pueden ejecutar los comandos indicados en los equipos indicados en el alias# aplicaciones y además son ejecutados bajo el usuario apps.SUPPRO APLICACIONES = NOEXEC: (apps) /usr/local/facturacion.exe, /usr/local/ventas.exe, /usr/local/nomina.exe# no definidos por alias previos, sino directamente# regina es de recursos humanos y puede cambiar contraseñas de cualquier usuario menos de rootregina ALL = /usr/bin/passwd *, !/usr/bin/passwd root# david, puede apagar los equipos de aplicacionesdavid APLICACIONES = /sbin/shutdown, /sbin/halt#  El equipo firewall de la red puede ser reiniciado (no apagado) por fernanda que es asistente de redesfernanda firewall = /sbin/shutdown -r now Referencias Como siempre, la referencia más a la mano la tienes en las páginas de manual: man sudoman visudoman sudoers Y en los siguientes sitios encuentras información que complementa esta manual. http://www.sudo.ws/ - sitio oficial de sudohttp://www.rpublica.net/sudo/sudo.html - Aqui puedes consultar en español, varias de las opciones de sudo, además de que es un buen manual de sudo en lo general.http://www.onlamp.com/pub/a/bsd/2002/08/29/Big_Scary_Daemons.html - sitio en inglés con una explicación muy completa de como funciona sudo.Fuente: www.linuxtotal.com.mx
Seguridad en Gnu/Linux,
Mi blog en Hosting Casero
Cerebro Trabajando
Tecnomaty
Floamescout
Dragojar
The hacker Webzine
Taller GTK2/Ruby
Técnicas Criptográficas
This blog is licensed under the CC-GNU GPL.

References: resolución 
 Resolución 
 Resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución