PDA

Ver la Versión Completa : La Shell de Linux


Linux_devil2
06-nov-2006, 23:46
Muchos usuarios que recién empiezan en Linux sienten un fuerte temor hacia agarrar esa pantallita negra y ejecutar algunos comandos.

Esa pantallita negra es la shell de linux, y empezar a conocer los comandos para manejarla es sencillo, solo es cuestión de empezar y dar el primer paso.

En un principio, GNU/Linux fue utilizable sólo mediante comandos y poco a poco se ha ido implementando de manera gráfica las cosas que se podían hacer en modo texto. Aún así, las cosas que se pueden hacer mediante comandos es increíble. Inclusive hay gente que no usa el entorno gráfico para sus actividades diarias, pueden hacer todas sus tareas como leer los mails hasta ver videos con solo utilizar esta pantallita negra.

Si quieres utilizar linux, es sumamente recomendable que te relaciones con algunos comandos que siempre te ayudaran en alguna situación critica en el sistema.

ENTRAR Y SALIR DE DIRECTORIOS
El comando cd te ayudará por los caminos de los directorios, su utilización es sumamente sencilla. Si alguna vez has utilizado DOS, es un funcionamiento muy similar.
Ejemplo :

Entrar a la carpeta direc1
$cd direc1
[direc1]$
Salir de esa carpeta
[direc1]$cd ..
$

Hay ocasiones en las que tu deseas saber en que directorio te encuentras, ya que el prompt no te indica donde estas, para eso recuerda siempre a pwd
[direc1]$pwd
/home/user/direc1 --> Indica que estas en el directorio /home/user/direc1
[direc1]$


APRENDAMOS A MONTAR DISPOSITIVOS
¿Que significa esto de Montar Dispositivos?

Para Linux cada uno de sus componentes de Hardware son dispositivos. El lugar de todos los dispositivos que hay en el hardware lo podemos encontrar en la carpeta /dev.
Si nosotros queremos utilizar alguna unidad de almacenamiento tenemos que montarla en algún directorio antes de poder usarlo, generalmente la carpeta donde montamos los dispositivos de almacenamiento es la carpeta /mnt.

Aquí algunos ejemplos :

El disquette, es una unidad de almacenamiento de memoria adicional y extraíble. y su unidad se llama fd0, este se encuentra en la carpeta /dev/fd0. Entonces Linux reconoce a /dev/fd0 como el disquette (Primera unidad de disquette, la segunda sería /dev/fd1 ).

La primera unidad de un CD-ROM SCSI se llama /dev/scd0, también conocida como /dev/sr0.

Un dispositivo usb, como una cámara fotográfica por ejemplo se encuentra en /dev/sda1 (Primer dispositivo usb, /dev/sda2 segundo dispositivo, etc )

Linux esta preparado para muchos dispositivos mas, puedes hacer :

$ls -l /dev
para que observes todos los dispositivos para los cuales esta listo tu computadora. La mayoria no los usarás, de todos modos están ahí a la espera de ser llamados.

ls es un comando que sirve para visualizar los archivos con las caracteristicas que quieras ver. Un simple ls en tu consola te mostrará los archivos que tienes en el directorio en el que te encuentras actualmente.

¿Qué sucede si yo quiero montar el cdrom?

Pues el comando que se te hará tan conocido como tu propio nombre es el comando mount.

Ejemplo :

$mount /dev/cdrom /mnt/cdrom

Como observamos , con el comando mount especificamos donde está el dispositivo, y en que lugar lo queremos montar. Ya es momento que te vayas familiarizando con la carpeta /mnt ( mount pero sin vocales ) , esta es una carpeta y sirve para precisamente montar los dispositivos de almacenamiento de la computadora.

Con mount puedes montar no solo el cdrom, también la disquetera, particiones de tu disco duro, unidades de almacenamiento usb, o las cámaras digitales.

Otra cosa que debes recordar es que así como montas estas unidades, se puede desmontarlas. ¿Para que querría desmontar yo una unidad? Pues simple, para poder extraer dicha unidad. Si tienes montada la unidad del disco duro, puedes desmontarla con el comando umount.

$umount /dev/cdrom

Eso le indica a la maquina que desocupe ese dispositivo. Posteriormente a eso pues ya extraer el cdrom, apretando el botón del cdrom para sacar el cd, o también con la ejecución del comando:
eject

Una vez que has desmontado el dispositivo puedes volver a montar otro dispositivo de la manera arriba indicada.

CAT
Este comando es muy útil en la consola cada vez que sentimos curiosidad por ver el contenido de un fichero, la utilización de este comando es tan sencillo como hacer :
$cat /archivo/a/visualizar
Hay ocasiones en que los archivos son muy largos y no caben en un solo pantallazo, y te preguntas como hago para ver lo que esta mas arriba en mi pantalla negra. Para eso existen las teclas
Shift + RePag --> Retroceder Pantallazos
Shift + AvPag --> Avanzar Pantallazos

EL HISTORIAL: La Shell de Linux tiene un historial, ya que graba todos tus movimientos, inclusive los que tu no recuerdas. La utilidad para acceder al historial de comandos que hemos escrito es el comando history, éste mostrará un historial enumerado de los últimos comandos digitados.
$ history
487 cd /home/
484 cd Desktop/
485 ls
486 history

para hacer uso de alguno de los comandos digitados, es posible llamarlos utilizando el signo de admiración (!) seguido del número del comando digitado en el historial, por ejemplo:

$ !484
cd Desktop/
/Desktop$

De ese modo recuerdas qué comando utilizaste, ya que hay ocasiones en que sabias la utilización de un comando que has realizado antes, pero a la hora que necesitas hacerlo nuevamente ya te olvidaste, el comando history es un buen “refresca memoria para eso”.

Linux_devil2
06-nov-2006, 23:47
Los permisos de Linux, es una parte fundamental en su aprendizaje, ya que involucra el acceso, la seguridad, la accesibilidad y la comodidad de los usuarios para ejecutar sus tareas de acuerdo al nivel de acceso que éste posee en el sistema. Es importante por esto aprender como funciona y cual es la importancia del comando chmod, así como saber también las posibles consecuencias de un mal uso o de una no-aplicación de este último.

Nuestro sistema nos proporciona un mecanismo conocido como permisos para proteger ficheros de usuarios del sistema, de la manipulación de otros usuarios, ya que Linux como sabemos es multiusuario. Los permisos estan divididos en tres tipos:

1.- permisos de lectura, representado por la letra "r".
2.- permisos de escritura, representado por la letra "w".
3.- permisos de ejecución, representado por la letra "x".
A sus vez estos permisos pueden ser fijados para tres clases de usuarios:
1.- dueño del archivo : u.
2.- grupo al que pertenece el archivo : g.
3.- el resto de usuarios : o.

Aqui vemos un ejemplo en cuanto a permisos de un fichero: root@badclustering$ ls -l /home/ drwxr-xr-x 27 juanito juanito 3456 Jan 10 13:03 juanito permisos prop. grupo fecha nombre del fichero.
Hay que tener en cuenta que los permisos de los archivos dependen de los permisos del directorio en el que se encuentra, ya que si no tenemos acceso al directorio , no podemos tener acceso a los archivos que éste contiene.

EL COMANDO CHMOD
El comando chmod es el que te va a permitir manipular todos los permisos a tu gusto, consta de 3 operadores , veamos cuales son :

1.- "+" para agregar permisos.
2.- "-" para quitar permisos.
3.- "=" para asignar permisos.
Por ejemplo, podríamos establecer para asignar permisos de ejecución a un fichero: chmod +x fichero.
En este caso estamos dándole permisos de ejecución, tanto para el usuario propietario, el grupo y para el resto de usuarios.
Pero que sucede , si yo solo quiero que el propietario del sistema tenga permisos de ejecución del fichero, y no todos los demás como lo acabo de hacer anteriormente ?

Pues para eso le indicamos asi :
$chmod u+x fichero
Análogamente lo puedes hacer para darle permisos al grupo o al resto con las letras g y o respectivamente.

DEFINIENDO PERMISOS CON EL SISTEMA OCTAL
Existe otro método para definir permisos. Este sistema se llama : "sistema octal". En este sistema los numeros representan permisos. Por ejemplo: 0001, 0100, 0400, 1000, etcétera.
Estos se basan en la suma de los 3 valores : los de lectura, escritura y ejecución
ejecución -> valor 1
escritura -> valor 2
lectura -> valor 4

La combinación de estos, nos da números del cero al siete, de esta manera :

0 = sin permisos.
1 = ejecución.
2 = escritura.
3 = escritura y ejecución.
4 = lectura.
5 = lectura y ejecución.
6 = lectura y escritura.
7 = lectura, escritura y ejecución.

Un ejemplo :
$chmod 755 fichero
Esto quiere decir que al propietario le estamos dando los permisos de lectura, escritura y ejecución. Para el grupo los permisos de lectura y ejecución, igualmente para el resto de usuarios , ya que ambos tienen el permiso 5.

PERMISOS ESPECIALES
Existen además de los permisos ya mencionados otros permisos, que los necesitarás en alguna oportunidad, y que es necesario que sepas. Son los permisos de SUID, SGID y el sticky bit.

4000 Establece el número de identificación de usuario al ejecutarse SUID
2000 Establece el número de identificación de grupo al ejecutarse SGID
1000 Establece el bit adhesivo (sticky bit)

SUID y SGID
Existen ocasiones que los usuarios necesitan ejecutar algún programa que requiere de privilegios. Un ejemplo de esto es el uso del programa passwd para cambiar la contraseña. Sería un error darle a los usuarios los privilegios necesarios para que puedan ejecutar esta clase de programas ya que el usuario podría cambiarse de grupo o crear una cuenta con privilegios de root.
Para que esto no suceda, se implemento en Unix, un sistema por el cual un programa que cuente con SUID o SGID puede ser ejecutado con los privilegios del dueño y/o grupo del programa. Para que quede más claro se tiene que saber que cada usuario esta identificado por el sistema con un número de identificación tanto para él, como para el grupo. Este número se denomina UID (user ID) para el caso de los usuarios y GID para el caso de los grupos.
Por ejemplo, un usuario podría tener un UID 100 y un GID 500. En el caso del root, este tiene UID 0 y GID 0. Lo que se efectúa con el sistema SUID es una adquisición temporal de un UID o GID distinto al propio cuando se está ejecutando el programa. Cuando un programa cambia de UID se denomina SUID ( se establece UID) y cuando cambia de GID se denomina SGID (se establece GID) Un programa puede ser SUID y SGID al mismo tiempo. Para darse cuenta si un programa es SUID o SGID basta con hacer un listado largo con el comando ls -l y se verá que donde tendría que estar una x, que asigna permisos de ejecución, va a estar una letra s.

Si tienes curiosidad por que programas utilizan el SUID puedes comenzar a buscarlos :
$find / -perm +4000
Algunos archivos con este tipo de permisos pueden resultar ser un problema de seguridad. Para solventar en cierta medida este punto podríamos cambiar los permisos de los programas afectos por este tipo de permisos que no lo necesiten. Sería sencillamente ejecutando: chmod -s archivo. También podríamos eliminar aquellos programas con este tipo de permiso que sean utiles. Podríamos también asegurarnos que no se puede escrbir en los script de SUID e instalar alguna herramienta que verifique los archivos suid del sistema como pueda ser COPS.

EL STICKY BIT
Este es un bit que tiene un significado para los directorios. Cuando este bit está activo, hace que un usuario sólo pueda borrar los ficheros que son de su propiedad en dicho directorio. Esto es particularmente útil en el directorio /tmp. El sticky bit se activa como:
$ chmod +t directorio

Linux_devil2
06-nov-2006, 23:48
EMPAQUETANDO Y COMPRIMIENDO
Es muy común cuando navegamos en Internet descargar archivos zip, tar, o tar.gz, bzip, bz2 ... Pues bien con la shell puedes desempaquetar y descomprimir todos esos archivos.

EL EMPAQUETADOR UNIVERSAL: TAR
El comando tar es utilizado normalmente para empaquetar o desempaquetar ficheros, empaquetar significa guardar en un único fichero una lista de varios ficheros, o el contenido de todo un directorio (o varios directorios). El formato del comando tar es:
tar [opciones] [fichero1][fichero2]...[ficheroN]
Donde es la lista de opciones y hasta es la lista de ficheros a añadir o extraer del archivo.

En las opciones de tar hay algunas que son importantes para su uso :
c: Crea un nuevo archivo tar.
v: Modo verbose, quiere decir que mostrará por pantalla las operaciones que va realizando archivo por archivo, si no se pone esta opción ejecutará la acción pero en pantalla no veremos el proceso.
x: Extrae los archivos (Descomprime los ficheros que se encuentran dentro del archivo tar).
t: Nos muestra el contenido del archivo tar. Esto es cuando tu deseas saber que es lo que contiene ese archivo sin necesidad de desempaquetarlo.
p: Mantiene los permisos originales de los archivos.
f: Cuando se usa con la opción -c, usa el nombre del archivo especificado para la creación del archivo tar; cuando se usa con la opción -x, retira del archivo el archivo específico.
z: Comprime el archivo tar con gzip.
j: Comprime el archivo tar con bzip2.
Aqui algunos ejemplos :

$ tar cvf archivo.tar /etc

Empaquetará todos los ficheros de /etc en el fichero archivo.tar c le dice a tar que cree un nuevo fichero de archivo. La opción v fuerza a tar en el modo verbose, (osea mostrando en pantalla el progreso de la tarea que realiza, en este caso los nombres de los ficheros según se archivan).
La opción f le dice a tar que el siguiente argumento archivo.tar es el nombre del archivo a crear. El resto de los argumentos de tar son los nombres de ficheros y directorios a añadir al archivo.

$ tar xvf archivo.tar

Extraerá el fichero archivo.tar en el directorio actual.
Una de las ventajas que nos ofrece tar es que respeta la estructura de directorio existente en el momento de empaquetar, de forma que al desempaquetar se reproducirá como estaba originalmente.

Ten en cuenta que hasta ahorita solo hemos empaquetado, mas no comprimido.
Para poder empaquetar y comprimir se usa el siguiente comando :

$ tar czvf archivo.tar.gz /etc

Si queremos descomprimir igual que en la linea que desempaquetamos, solo que ahora cambiamos la c por la x de extracción :

$tar xzvf archivo.tar.gz

Hay otro modo de compresión que es el formato bz2. Para comprimir y descomprimir es el mismo procedimiento que con gz, la única diferencia es que ya no va la letra z, sino la j.
Ejemplo :
Para poder empaquetar y comprimir se usa el siguiente comando :

$ tar cjvf archivo.tar.bz2 /etc

Si queremos descomprimir , las opciones son muy similares a la orden anterior, solo que ahora le cambiamos la c por la x de extracción :

$tar xjvf archivo.tar.gz

Comprimiendo: GZIP
Hay una herramienta especializada en la compresión y descompresión, es la herramienta gzip
Normalmente, el fichero a comprimir se reemplaza por otro con la extensión.gz, manteniéndose los mismos permisos, propietarios y tiempos de modificación.
La cantidad de compresión obtenida depende de varios factores, típicamente, texto o código fuente se reduce en un porcentaje del 60 al 70%. Un fichero ya comprimido, como la mayoría de archivos gráficos (gif, jpg), difícilmente reducirán su tamaño.

$ gzip -9 archivo.tar

El resultado será archivo.tar.gz.

Para comprimir, puedes poner gzip -d y el nombre del archivo gz a descomprimir

$ gzip -d archivo.tar.gz

En esta ocasión archivo.tar.gz será descomprimido y reemplazado por archivo.tar. Un equivalente a gzip -d es el comando gunzip :

$gunzip archivo.tar.gz

Ojo que puedes comprimir y descomprimir con esta herramienta , asi como con la poderosa herramienta tar, ambas tienen las mismas extensiones y son compatibles entre ambas. por ejemplo puedes comprimirlo con tar y descomprimirlo con gzip y viceversa. La diferencia esta en que tar también hace la función de empaquetado.

Extensiones ZIP
Comprimir y descomprimir los archivos zip, también es sencillo :

$zip -r documento.zip carpeta_o_archivo_a_comprimir

El parámetro r indica al comando zip que debe hacer una compresión de manera recursiva, en el caso de comprimir un directorio , comprime todo lo que hay en él.

unzip documento.zip
Esta línea descomprime el fichero zip , y deja todos los archivos contenidos en ella en la carpeta donde te encuentres en ese momento.

Ahora podrás hacer tus backups (copias de seguridad), comprimir directorios y descomprimir toda la información que requieras con esta consola de comandos que cada vez se hace mas familiar.

Ojala estos 3 tips les sirvan para aprender mas sobre el shell de linux y saber moverse en su entorno.

Saludos Brothers

funco
16-dic-2006, 20:27
He empezado esta semana por primera vez con linux (Mandriva 2007) por aquello de estar ya un poco cansado del Windows y ver otras opciones.

Como precisamente estaba buscando un resumen de las ordenes en linea de comandos, pues me ha venido estupendo. Te animo a que continues con el resto de opciones, pues creo que es esencial para que el usuario profano como yo, no abandone enseguida por verlo demasiado complicado.



Saludos y suerte

FlexaXP
05-ene-2007, 00:29
MNuy bueno devil_linux se nota que usas a linux como el oxigeno que respiras...
Me lleva como consigo el Linux????la ultima version???