martes, 22 de julio de 2008

Introduccion a Linux


Linux

Dentro del mundo de los Sistemas Operativos, Linux; definitivamente es el sistema operativo , despues de Windows que mas instalaciones tiene.


Dentro de la filosofia del software libre o de fuente abierta, este sistema operativo, goza de bastante preferencia y el patrocinio de empresas importantes como IBM, Oracle, Intel, AMD, VMware entre otras. Lo cual da bastante confianza al que apuesta por este sistema operativo.


Sin embargo debemos aqui tener en cuenta que Linux es una herramienta mas dentro de la arena de las tecnologias de información , y que al igual que Windows ( otra herramienta) tiene sus fortalezas y debilidades, que hay que conocer para poderlo utilizar en los ambientes y plataformas respectivas y cuando la situacion asi lo requiera o amerite.


Existe una enorme cantidad de distribuciones Linux, que se han creado y se siguen creando nuevos desarrollos. Sin embargo para los ambientes de negocios o de produccion, se precisa de sistemas estables, maduros y que sobre todo tenga suficiente respaldo o soporte para su empleo en el dia a dia .


Aqui en este punto es cuando entonces aparecen 3 distros o alternativas , que son los que van abriendose paso a paso de a pocos dentro de los ambientes empresariales y ellos son :


Red Hat.- de la compañia Red Hat, que  conjuntamente con  su version de desarrollo Fedora , van marcando la pauta de avanzada . Esta distribucion es la que mas tiempo de maduracion tiene en el mercado . CentOS es el nombre que toma  otra version que es un paso anterior de la ultima version de Red Hat. Podria decirse que una version CentOS = una version  Red Hat -1.


Ubuntu.- la distribucion mas nueva y mas competitiva que ha aparecido en el mercado. Se deriva de la distribucion Debian, que es una distro bastante compleja de operar para los que no son muy entendidos en Linux.
El trabajo de Ubuntu ha sido el hacer una version tipo click and drag , al mismo estilo de la filosofia Windows. Su parecido es bastante al manejo de los sistemas de Microsoft ,tanto que los usuarios de Windows no tendrian mucho problemas para operarlo. Ha sacado incluso versiones multimedias para los especialistas en graficos , videos y sonido, con lo cual ha potenciado este nicho que ha sido muy descuidado por  distribuciones Linux anteriores.


SuSE .-promovida por Novell Netware, distribución de bastante aceptación en el Asia. Su interface grafica y su manejo sigue la filosofia del click and drag, sin embargo su nicho ha cedido un poco ante la arremetida del sudafricano Ubuntu.


Estas tres distribuciones , por lo general son las mas reconocidas y las que tienen la aceptacion y soporte de los fabricantes de servidores, por lo que los mismos fabricantes recomiendan determinados equipos para determinada distribución.


Es importante tomar en cuenta esto, dado que el tema de los drivers hardware, sera mas facil para el area de soporte técnico si adquirio un equipo que esta garantizado que correra en determinada distribución. De lo contrario habria que  programar y desarrollar drivers para hardware que le es desconocido.


En este terreno del hardware, Ubuntu nuevamente lleva la delantera porque es la distribución que ha tratado de ser compatible con muchos elementos hardware, por lo cual su utilizacion incluso en equipos clientes es mucho mas sencilla y llevadera que las otras distribuciones que estan mucho mas proyectadas solo para equipos de servidores.


Dentro de los sistemas Linux, es importante acotar que existen dos modos de trabajo.


El trabajo en  
modo consola, es decir utilizando solo comandos, es el modo de trabajo para especialistas y el modo de trabajo mas preciso y exacto


modo grafico, aqui es un modo de trabajo al estilo de los sistemas Windows, se utiliza los clicks and drags del mouse y no se precisan comandos, esto es bastante limitado para los Linux cuando se requiere mayor control sobre el sistema.


Dentro del campo de usuarios, tambien hay que acotar que la instalacion obliga a que introduzcamos un usuario de cuenta limitada , aparte de tener al usuario root o super usuario.


Se le dice super usuario porque es el usuario que controla de manera absoluta todo el sistema, por eso el root es un usuario que no debe utilizarse todo el tiempo si no solo para ciertas operaciones de mayor profundidad.


Conscientes de esto es que las distibuciones linux , obligan de todas formas a ingresar un usuario de operaciones o de cuenta limitada para las operaciones rutinarias y que no requieran ingresar constantmente al kernel o nucleo del sistema


Este modo de trabajo es lo que le ha dado muchas ventajas a los sistemas Linux contra los problemas de troyanos y virus, al no comprometer su kernel generalmente, porque obliga al usuario comun a trabajar gran parte del tiempo en modo de usuario de cuenta limitada.


Los ultimos Windows recien han tomado en cuenta esta caracteristica importante de su joven competidor.


Cuando se trabaja en usuario comun el sistema nos indica en modo terminal dandonos el caracter de dolar en el prompt  $.


Si estamos trabajando en modo de super usuario root , entonces el caracter que nos dara sera # .


Para pasar de modo usuario normal o cuenta limitada a super usuario normalmente se tipea en el terminal o consola lo sgte:

$su -s      - aqui nos pedira el password del root para poder entrar a ser admnistradores, al darselo nos dara:

#        - lo cual nos indica que estamos en modo root


Aqui daremos a continuacion algunos comandos, que podemos ejecutar, para ir adentrandonos un poco mas en este sistema operativo




COMANDOS para ARCHIVOS


#ls        - comando para listar el contenido de un directorio


en sus opciones:
#ls  -l       - la l significa lista larga, aqui nos da todos los parametros de cada uno de los archivos que estan en su directorio respectivo


Ejemplos:
# ls  -l     - nos daria lo sgte:

# d rw- rw- rw-  root  root  file1  34k

Otro comando

# cp      - copiar, saca una copia del original y lo copia en el destino

# cp  file1.tgz   /etc/     - aqui copia file1.tgz en el folder /etc/

Se puede copiar varios archivos a la vez por ejemplo


#cp   file1  file2  file3   file4   /home/desktop  - aqui copia file1,file2,file3 y file4 en /home/desktop que es el escritorio.

 
# mv      - sirve para mover el archivo original del directorio fuente al directorio destino.

Ejem:  

# mv archivo1 /etc    - aqui mueve archivo1 al folder /etc

HABILITACION de PERMISOS.- Los archivos en Linux tiene restricciones en cuanto a su lectura , escritura y su ejecucion. Tanto de parte del dueño del archivo como del grupo al que pertenece el dueño del archivo, como tambien de los otros es decir de los que no pertenecen al grupo del dueño del archivo.

En Linux al dar lista larga : # ls   -l nos dice en primer lugar si es un directorio o no.
Cuando vemos la letra d ( d minuscula) al inicio, significa que es un DIRECTORIO, si en su lugar aparece el guion - entonces es un file o archivo.

Ejemplos


#ls -l   - efectuamos este  comando y nos da lo sgte:
# d rwx  rw- r--  root  root  etc
   - rwx  rw- r--  root   root  vmlinuz
 

Aqui vemos que etc es un folder, dado que la d esta delante
luego debajo vmlinuz es un archivo debido a que delante tiene a -

 Despues vienen  los  grupos de los derechos o permisos de lectura, escritura y ejecucion que estan simbolizados por las agrupaciones rwx, r para read w para write y x para execute.


La primera agrupacion de rwx es para el usuario, es decir aqui podemos visualizar que derechos sobre el folder o archivo tiene el usuario; en este ejemplo vemos que son todos.

El segundo grupo de rwx, es del grupo, al que pertenece el usuario; y nos indica que permisos tienen los miembros de ese grupo, en este ejemplo vemo que en lugar de la letra x, esta una - entonces quiere decir que no  tienen los miembros del grupo, el permiso  de ejcucion.

El tercer grupo de rwx, es para los demas o los otros, en nuestro ejemplo de arriba vemos que solo esta la letra r y los demas espacios estan con -, esto significa que solo podemos leer, pero no podemos ni escribir ni ejecutar.





CAMBIO de PERMISOS

Ejem: rw-   significa que solo se puede leer y escribir pero no ejecutar porque falta la x

El comando para cambiar esto es chmod

Si escribimos
# ls   -l     -nos daria por ejemplo


# - rw- r- -  r- -   jzel   jzel    numero   100k

Nos dice que el usuario solo puede leer y escribir pero no ejecutar, el segundo grupo pertenece al grupo del usuario y nos indica que solo puedn leer pero ni escribbir ni ejecutar y el tercer grupo que pertenece a los demas significa que ni pueden ler ni escribir ni menos ejecutar

Al grupo del usuario o tenedor del archivo se le conoce como u de user; a su grupo del usuario como g y a los demas como o , de otros.

Bien ahora cambiemos el permiso del user del archivo numero a que sea ejecutable entonces escribiremos
# chmod u+x  numero
 

con lo cual le damos permisos de ejecución al archivo numero
si listamos tendriamos lo sgte:
# ls -l
# -rwx r- -  r - -  numero


Si quisieramos cambiar los permisos de escritura del archivo numero para los demas miembros del grupo g seria


# chmod  g=w+x  numero       - y al listar se tendria



#  ls -l     - ejecutamos este comando y nos dara luego lo sgte :
 
# -rwx  rwx  r- -   jzel  jzel  numero  100k




Es importante aqui acotar, que poner un signo + delante de r o w o x implicara agregarle este permiso, si le anteponemos un - , significara quitarle este permiso.




COMANDOS de EDICION


Aqui tenemos al mas sencillo cat y su uso seria


# cat file1  - esta opcion sirve para leer el archivo file1
# cat > file100   - con esta opcion estamos creando un archivo llamado file100 y todo lo que escribamos en la pantalla se guardara en dicho archivo. 
Al terminar de escribir dicho archivo salimos ejecutando las teclas CTRL+Z.

Si el archivo que vamos a escribir es  de longitud grande entonces tenemos el editor vi.


Otro muy utilizado es el editor nano, su forma de uso seria :


# nano fileUno   - aqui creamos un archivo con este nombre fileUno si es que este no existiera, y si existiera, entonces simplemente lo abrimos, para su modificacion respectiva


Para grabar con nano se utiliza el juego de teclas CTRL+O, y se escribe el nombre del archivo a guardar, luego se presiona  la tecla ENTER y ya esta.


Para salir de nano se usa el juego de teclas CTRL+X
 

Tanto nano como vi o cat, se utilizan siempre en modo consola o terminal, dado que no precisan de ambiente grafico para su funcionamiento.

Otro editor es gedit, pero solo funciona cuando se esta en ambiente de modo grafico .




COMANDOS para INFORMACION DEL SISTEMA


# free    - para saber la cantidad de memoria fisica del sistema


para  saber con mucho mas detalle utilizar
# cat  /proc/meminfo


Para saber sobre el detalle de el o los cpus que tenemos
# cat  /proc/cpuinfo


Para saber sobre que cantidad de disco duro libre  tenemos

# df


Si queremos saber como esta distribuido o utilizado el disco duro
# du     aunque es mejor utilizarlo asi   # du  |  less    para que nos de la informacion de manera pausada por pantallazos.



Si deseamos saber sobre las particiones de nuestro discos duros y su distribucion
# fdisk  -l

Para saber que particiones de nuestros discos duros o dispositivos de almacenamiento externo estan montadas
# cat /etc/fstab


Para saber que direccion IP tiene nuestro equipo, y como esta configurados los parametros de nuestra tarjeta de red
#ifconfig


Si deseamos saber sobre que procesos estan corriendo en nuestro equipo tenemos ps con las opciones
# ps -A   -para saber todos los procesos existente en general
# ps -ax  -todos los procesos que solo estan corriendo


Para saber lo referente a el estado de los puertos de nuestro sistema
#netstat  -ntul         
-n nos da el numero del port
-t   no s indica que deseamos saber los referidos al protocolo TCP
-u  le decismo que nos indique los referidos al protocolo UDP
-l   le decimos que nos diga los puertos que estan en escucha (listen)


Este comando es util, cuando se configura servidores, porque permite indicarnos si para un servicio determinado su puerto esta en escucha, es decir abireto o esta cerrado.


Otro comando bastante util, cuando se configura servidores es el comando tail , usandose de la sgte forma:


Ubuntu


# tail -v /var/log/syslog  -aqui le indicamos, que nos de los ultimos mensajes que estan en el syslog, al ejecutar un servicio. Muy util para ver en detalle los errores que hemos cometido al configurar un servidor y no haber salido el OK al ejecutarse.


CentOS

# tail -v /var/log/messages  -esto es lo mismo que el anterior solo que valido en CentOS 


SuSE


# tail -v


TUBERIAS o PIPES


Se llama asi a la barra vertical | que se coloca, para unir dos comandos en secuencia, por ejemplo


# ps -A | less

#ls -l | less


En estos dos ejemplos, el primer comando a ejecutar es en el primer caso ps -A, pero al unirlo  al sgte comando con |, le estamos diciendo que la salida del ps sea la entrada de less.


En el segundo caso , estamos diciendoles que la salida de la lista larga ls -l , sea la entrada de less


Por eso su denominacion de tuberia, en ingles pipes, porque une como un ducto la salida de un comando con la entrada del sgte.


Buenos hasta aqui esta primera parte, en los siguientes post, hablaremos ya de configuraciones de servidores.


Nos hemos propuesto, configurar en una primera etapa servidores DHCP y DNS en CentOS, Ubuntu, SuSE, Solaris y FreeBSD.
Luego en una segunda parte continuaremos con los servidores Samba, NFS, OpenVPN, Terminal Server, OpenSSL,Squid
Para una tercera etapa dejar los servidores de aplicaciones LAMP,  y JBoss y terminar con las integraciones con Active directory de Windows y LDAP de los linux/unix.


Nos se olviden de poner sus comentarios que estare llano a responderles sus preguntas y tomar en cuenta sus observaciones y criticas.



Este post ha sido revisado y renovado el 1/09/2011