2. como está compuesta la estructura del sistema de archivos de linux ubunto 10.10
La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar información en un dispositivo físico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural un archivo puede contener cualquier tipo de información, desde una imagen en formato PNG o JPEG a un texto o una página WEB en formato HTML, … El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene.
Linux maneja todos los discos y dispositivos como si fuesen directorios, muy distinto a lo que estamos acostumbrados a ver en Windows. Por ejemplo, en /dev/ se pueden encontrar muchos 'archivos'. En la consola, como root, puedes por ejemplo tirar un "cat /var/mouse", y empieza a mover el mouse. Verás toda la información que el dispositivo le pasa al kernel. Seguimos:
Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas:
Un nombre de archivo puede tener entre 1 y 255 caracteres.
Se puede utilizar cualquier carácter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear ficheros con estos caracteres o espacios hay que introducir el nombre del fichero entre comillas.
Se pueden utilizar números exclusivamente si así se desea. Las letras mayúsculas y minúsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt ó carta.Txt
Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de ficheros empleando una serie de caracteres al final del nombre que indiquen el tipo de fichero del que se trata. Así, los ficheros de texto, HTML, las imágenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o .jpeg) respectivamente.
Pese a esto Linux sólo distingue tres tipos de archivos:
Archivos o ficheros ordinarios, son los mencionados anteriormente.
Directorios (o carpetas), es un archivo especial que agrupa otros ficheros de una forma estructurada.
Archivos especiales, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma introducir información en ese archivo equivale a enviar información a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios.
Enlaces
Los enlaces son un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simbólico éste permite acceder al fichero que enlaza de igual modo que si se hubiera copiado el contenido del mismo a otro fichero, con la ventaja de que este realmente no se ha copiado. Los enlaces simbólicos son especialmente útiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero pero centralizan las modificaciones.
Como ejemplo se puede suponer la existencia de un fichero llamado balance.1999.txt, al que se crea un enlace simbólico balance.txt. Cualquier acceso a balance.txt es traducido por el sistema de forma que se accede al contenido de balance.1999.txt.
El camino o Path
En cualquier sistema operativo moderno la estructura de archivos es jerárquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de árbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Windows cada unidad de disco se identifica como una carpeta básica que sirve de raíz a otras, y cuyo nombre es especial a:, c:, d: etc. En los sistemas Unix, y por lo tanto en Linux, existe una única raíz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de qué dispositivos estén conectados al ordenador.
El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para acceder a un determinado fichero separados por /. Supongamos la estructura de archivos de la Figura 2.
Existen dos formas del path o camino:
el camino absoluto que muestra toda la ruta a un fichero, /home/luis/Carta.txt.
el path relativo a un determinado directorio, por ejemplo si no encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt
Para complicar aun más las cosas, todos los directorios contienen dos directorios especiales: Figura 2 •=El directorio actual, representado por el punto .
•=El directorio padre representado por dos puntos ..
Estando en el directorio /home/pedro se puede acceder a Carta.txt con /home/luis/Carta.txt (path absoluto) o bien ../luis/Carta.txt (path relativo). En luis como ./Carta.txt o simplemente Carta.txt.
Estructura del sistema de archivos de Linux
El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homogénea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no está ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:, d: o m:.
Todos el sistema de archivos de Unix tiene un origen único la raíz o root representada por /. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo. Estos ficheros se organizan en distintos directorios cuya misión y nombre son estándar para todos los sistema Unix.
/ Raíz del sistema de archivos.
/dev Contiene ficheros del sistema representando los dispositivos que estén físicamente instalados en el ordenador.
/etc Este directorio esta reservado para los ficheros de configuración del sistema. En este directorio no debe aparecer ningún fichero binario (programas). Bajo este deben aparecer otros dos subdirectorios:
/etc/X11 Ficheros de configuración de X Window
/etc/skel Ficheros de configuración básica que son copiados al directorio del usuario cuando se crea uno nuevo.
/lib Contiene las librerías necesarias para que se ejecuten los programas que residen en /bin (no las librerías de los programas de los usuarios).
/proc Contiene ficheros especiales que o bien reciben o envían información al kernel del sistema (Se recomienda no modificar el contenido de este directorio y sus ficheros).
/sbin Contiene programas que son únicamente accesibles al superusuario o root.
/usr Este es uno de los directorios más importantes del sistema puesto que contiene los programas de uso común para todos los usuarios. Su estructura suele ser similar a la siguiente:
/usr/X11R6 Contiene los programas para ejecutar X Window.
/usr/bin Programas de uso general, lo que incluye el compilador de C/C++.
/usr/doc Documentación general del sistema.
/usr/etc Ficheros de configuración generales. /usr/include Ficheros de cabecera de C/C++ (.h).
/usr/info Ficheros de información de GNU. /usr/lib Librerías generales de los programas.
/usr/man Manuales accesibles con el comando man (ver más adelante).
/usr/sbin Programas de administración del sistema. /usr/src Código fuente de programas.
Existen además de los anteriores otros directorios que se suelen localizar en el directorio
/usr, como por ejemplo las carpetas de los programas que se instalen en el sistema.
/var Este directorio contiene información temporal de los programas (lo cual no implica que se pueda borrar su contenido, de hecho, ¡no se debe hacer!)
Acceso a los diferentes sistemas de archivos
Como se ha visto anteriormente el sistema de archivos de Linux sólo tiene una raíz y su estructura es independiente de los dispositivos de almacenamiento existentes. Esto implica que el procedimiento a emplear para acceder a la información almacenada en los distintos sistemas de almacenamiento de un ordenador no es tan sencilla como en Windows, y requiere un proceso llamado “montado”, que se verá más adelante. Cuando se ha terminado de trabajar con un determinado dispositivo hay que “desmontarlo” (¡No físicamente!).
Por ejemplo el proceso para leer un disquete sería el siguiente:
1.tretch: normal;font-family:'Times New Roman';font-size:7;" > Introducir el disquete en la disquetera.
2.tretch: normal;font-family:'Times New Roman';font-size:7;" > Montar el sistema de archivos del mismo.
3.tretch: normal;font-family:'Times New Roman';font-size:7;" > Leer, grabar, y manipular el contenido del disquete.
4.tretch: normal;font-family:'Times New Roman';font-size:7;" > Desmontar el sistema de archivos del disquete.
5.tretch: normal;font-family:'Times New Roman';font-size:7;" > Extraer el disquete de la disquetera.
El proceso puede parecer complejo pero es el precio a pagar por la seguridad, puesto que de esta forma se garantiza que no exista ninguna aplicación que esté usando el disquete cuando se extraiga. (En el caso de los CD-ROM Linux impide su extracción hasta que se desmonta).
Para complicar más las cosas sólo el administrador o root tiene permiso para montar y desmontar un sistema de archivos (por motivos de seguridad), aunque esto puede ser arreglado.
Permisos
Linux, al igual que todos los sistemas Unix, mantiene un sistema de permisos de acceso a los ficheros muy estricto, a fin de controlar qué es lo que se puede hacer con ellos, y quien lo puede hacer. Estos permisos se identifican con letras y son:
r permiso de lectura el fichero
w permiso de escritura en el fichero
x permiso de ejecución del fichero
s permiso para cambiar el propietario del fichero
Al contrario que en Windows o MS-DOS los programas ejecutables de Linux no están marcados por una determinada extensión (.exe) sino por un atributo, el permiso de ejecución x. Si se elimina este atributo a un programa, Linux no será capaz de ejecutarlo.
A su vez cada uno de estos permisos se aplica: al dueño del fichero (u), al grupo de usuarios al que pertenece el dueño (g), ó al resto de usuarios (a). Así un fichero determinado puede tener permiso para ser leído, escrito y ejecutado por su dueño, leído y ejecutado por el grupo al que pertenece y no tener ningún tipo de acceso para los demás usuarios. Como se puede entender este tipo de mecanismo es especialmente útil cuando se trabaja en grupo en un determinado proyecto.
3.
Clear: Limpia la pantalla, y coloca el prompt al principio de la misma.
Sintaxis: clear.(prompt)--Se llama prompt al carácter o conjunto de caracteres que se muestran en una linea de comandos para indicar que está a la espera de órdenes. Éste puede variar dependiendo del interprete de comandos y suele ser configurable.
Ls:Lista los archivos y directorios dentro del directorio de trabajo.
Sintaxis: ls.
Mkdir: Crea un nuevo directorio.Sintaxis: mkdir nom_directorio
CD:Cambia de directorio.
Sintaxis: cd nom_directorio
Chmod:Utilizado para cambiar la proteción o permisos de accesos a los archivos.
r:lectura w:escritura x:ejecución
+: añade permisos -:quita permisos
u:usuario g:grupo del usuario o:otros
Sintaxis: chmod permisos nom_archivo
Passwd:Se utiliza para establecer la contraseña a un usuario.
Sintaxis: passwd nom_usuario
Sudo:permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (normalmente el usuario root) de manera segura. Se instala por defecto en /usr/bin.
Su:Con este comando accedemos al sistema como root.
Sintaxis: su.
Aptitude:Muestra una lista de paquetes de software y permite al usuario elegir de modo interactivo cuáles desea instalar o eliminar. Dispone de un poderoso sistema de búsqueda que utiliza patrones de búsqueda flexibles, que facilitan al usuario entender las complejas relaciones de dependencia que puedan existir entre los paquetes. En un principio, se diseñó para distribuciones GNU
apt-get dist-upgrade
Función adicional de la opción anterior que modifica las dependencias por la de las nuevas versiones de los paquetes.
apt-get install (paquetes)
Instala paquetes.
apt-get remove (paquete)
Borra paquetes. Con la opción –purge borramos tambien la configuración de los paquetes instalados.
apt-get update
Actualiza la lista de paquetes disponibles para instalar.
apt-get upgrade
Instala las nuevas versiones de los diferentes paquetes disponibles.
Kill: Permite interactuar con cualquier proceso mandando señales.Kill (pid) termina un proceso y Kill -9 (pid) fuerza a terminar un proceso en caso de que la anterior opción falle.
Sintaxis: kill [opciones] PID.
Rm: Remueve o elimina un archivo.Sintaxis: rm nom_archivo.
Mv: Este comando sirve para renombrar un conjunto.
Sintaxis: mmv nom_archivos1 nom_archivos2.
Tar: Comprime archivos y directorios utilizando la extensión .tar.
Sintaxis: tar -[arg] nom_archivo.tar nom_archivo.
MAKE:Es una herramienta que controla la creación de ejecutables y otros archivos de un programa a partir de los archivos fuente.
Sintaxis: make.
Install: es una herramienta k ejecuta e instala los programas k deseas descargar en Linux Ubuntu 10.10
Sh:
4. Averigüe y responda como se instala un programa en Linux por consola y de un ejemplo, para esto deberá instalar un programa en su equipo bajo dicha plataforma ?
En muchas de las distros actuales, de esas que te dan el “pan masticado” como Ubuntu, Suse, etc. existen los llamados Administradores de paquetes. Es muy importante que sepas esto ya que es la manera más usada para instalar programas en Linux.
Ubuntu trae el administrador de paquetes APT que viene de su distro padre Debian (recuerda que Ubuntu está basado en Debian), en Suse viene Yast, en Fedora viene Yum, etc. cada uno cumpliendo la misma solución, de la misma calidad y estabilidad. Tal como dice su nombre, estos útiles programas administran los programas y aplicaciones que tienes instalados en tu PC y las que puedes instalar. Osea que con ellos puedes desinstalar, instalar, buscar, actualizar todos los programas en tu PC (disculpa por insistir tanto con lo mismo).
Cada uno de estos programas (o administradores de paquetes) tienen formas distintas de utilización: ya sea con entorno gráfico o con la consola. De estos dos últimos prefiero el segundo porque así puedes controlar mejor lo que hace el Administrador. La forma de uso de APT es muy sencilla (en Ubuntu):
$ sudo apt-get install «paquete» (para instalar)
$ sudo apt-get remove «paquete» (para desinstalar)
A pesar de que no uso APT, lo pondré en los ejemplos ya que Ubuntu es la distro más utilizada hoy en día (creo que recibiré uno que otro comentario por esto). Para otros administradores, buscar en Google, jeje…
Como ves, aquí es bastante fácil instalar los programas, solo necesitas los comandos y el nombre del paquete.. y listo!.
También en Ubuntu puedes utilizar los *.deb para instalar programas desde otras fuentes que no estén en los repositorios (ya lo explicaré) haciéndoles un sencillo doble clic. Luego de esto se ejecutará el instalador de paquetes GDebi (si no lo tienes, hazlo con los comandos que te señalé arriba) y te chequeará las dependencias. Si no hay problema con nada, el paquete -o programa- se instalará. Lo mismo va con las distros basadas en RPM (es como *.deb, solo que utiliza distinto modo de empaquetado)
5. Cómo se debe configurar el proxy para realizar una actualización o descarga de un programa bajo una consola de Linux Ubuntu?
Bueno, entonces lo primero que tenemos que hacer es instalar Squid de la siguiente manera:
:~$ sudo apt-get install squid
Una vez instalado, squid nos proveerá un archivo de configuración localizado en /etc/squid/squid.conf. Este archivo contiene toda la documentación de squid. Al ser un archivo muy extenso, nosotros no necesitaremos tal configuración por tal motivo crearemos una copia de respaldo a este archivo de la siguiente manera:
:~$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
Luego, moficamos el archivo de configuración original (/etc/squid/squid.conf) y eliminamos todo lo que contenga. Luego ingresamos lo siguiente:
http_port 3128 transparent
cache_mem 100 MB
cache_dir ufs /var/spool/squid 150 16 256
acl red_local src 10.10.10.0/24
acl localhost src 127.0.0.1/32
acl all src all
http_access allow localhost
http_access allow red_local
Luego, tenemos que configurar las iptables para que podamos tener acceso a Internet y para que lo hagamos mediante el proxy. Por esta razón ingresamos las siguientes reglas:
:~$ sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to 192.168.1.1
:~$ sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
:~$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
NOTA: en las variables –dport, –to y –to-port, nótese que se utiliza doble guíon ( - )ántes de cada variable. Por motivos externos es que en el tutorial aparece como si fuese uno sólo.
Para terminar, tenemos que recargar la configuración de squid. Esto lo hacemos de la siguiente manera:
:~$ sudo squid -k reconfigure
Ahora simplemente desde las máquinas clientes probamos que tenemos acceso a Internet. Vale notar que esta configuración de proxy transparente solo sirve para almacenar en la caché y que la navegación por Internet sea más rápida. Si deseamos bloquear acceso a páginas, tenemos que crear más reglas. Algunas reglas de ejemplo se las mostaré en un próximo tutorial.
6. Cómo se ejecuta un programa bajo consola con la extensión “.sh” y de un ejemplo.
son scripts que ejecutas directamente en la consola. La ventaja de instalar un programa con estos formatos es que por lo general van a funcionar bien en todas las distribuciones, mientras que otros formados precompilados para instalar programas como los .deb o .rpm están más limitados.
Aquí tienes los pasos necesarios para ejecutar archivos en Linux:1º- Dar al archivo permisos de ejecución
Como medida de seguridad, Linux no deja ejecutar ningun archivo salvo que tú le des los permisos necesarios, para ello hacemos click derecho sobre el archivo, vamos a Propiedades > Permisos y marcamos la casilla "Permitir ejecutar archivo como un programa".