Curso Linux Desde Cero
Curso Linux Desde Cero
Curso Linux Desde Cero
Crditos
Septiembre 2015
Que es GNU/Linux?
GNU/Linux es un sistema operativo universal. El sistema operativo se define como un conjunto de
programas que permiten interactuar con un pc y pueden ejecutar otros programas o aplicaciones.
En GNU/Linux, este sistema operativo se forma por un conjunto de programas que permiten controlar
los diferentes elementos fsicos del pc para ofrecerlos al usuario a la hora de ejecutar programas:
escribir y leer datos de discos duros, utilizar dispositivos como impresoras o escneres, etc. El ncleo
que une todos estos programas, en este caso, se llama Linux; el resto del sistema fueron proyectos
programados por o para el proyecto GNU, de ah que para denominar al sistema operativo se utilice el
trmino GNU/Linux, aunque de manera informal se suele llamar solamente Linux.
Este sistema operativo est basado en la filosofa de Unix, es decir, est diseado para ser un sistema
operativo multitarea y multiusuario. Estas caractersticas lo hacen desmarcarse de otros sistemas
operativos conocidos, aunque tambin radica en la filosofa que engloba ya que, a diferencia de otros
sistemas operativos, nadie es dueo de Linux ya que gran parte de su desarrollo lo han realizado y lo
realizan voluntarios de todo el mundo de forma altruista.
concretos. Hoy da existen multitud de distribuciones Linux orientadas tanto a profesiones como a
dispositivos concretos. Como ejemplos en el mbito educativo estn Guadalinex o Edubuntu, en el
artstico Musix, Ubuntu Studio, para las ciencias Scientific Linux, etc; as como recientemente las
distribuciones de Android para Smartphones o Raspbian para los mini pcs tipo Rasperry Pi.
Instalacin de SO Linux
Instalacin mquina virtual
Una vez la aplicacin est instalada vamos a crear una mquina virtual y procederemos a instalar
Ubuntu Desktop.
Lo primero que vamos a hacer es descargar la versin correspondiente de la web de Ubuntu:
Es recomendable utilizar versiones de 64 bits en las mquinas virtuales si contamos con los suficientes
recursos de ejecucin y/o la distribucin nos lo permite, puesto que algunas solo cuentan con la versin
de 32 bits.
Una vez descargada la ISO, procedemos a crear la nueva mquina virtual en Virtual Box.
Y con esto finaliza la fase de creacin de la mquina virtual. Lo siguiente que veremos es en la pantalla
principal la nueva mquina virtual ya creada en estado apagada. Para encenderla, podemos pulsar el
botn Iniciar del men superior o bien con click derecho del ratn sobre la mquina Iniciar:
Instalando Ubuntu
La instalacin del sistema operativo tiene muchas vertientes disponibles de configuracin. Para este
caso concreto vamos a realizar la instalacin estndar.
Una vez arrancada la mquina nos aparece una primera pantalla donde elegir el idioma y si queremos
probar Ubuntu o instalarlo directamente. Seleccionamos la opcin de instalacin:
Tras esta pantalla comenzar la instalacin que tarda un poco en finalizar. Una vez se haya instalado,
pulsamos el botn Reiniciar Ahora y finaliza la instalacin reiniciando el equipo.
Interfaz Grfica
Terminal Virtual
Para entender cmo funciona Linux y su relacin con los elementos fsicos de almacenamiento,
primero vamos a verlo desde el lado del software y a partir de ah desarrollaremos la relacin entre esto
y los componentes fsicos (particiones).
Esta es la composicin del rbol de directorios de un sistema Linux:
Cada directorio que cuelga directamente del raz (/) tiene un propsito concreto en el sistema. Segn el
estndar FHS, cada directorio tiene el siguiente cometido:
/boot : Contiene ficheros estticos y no compartibles relacionados con el arranque del ordenador.
Algunos sistemas imponen limites particulares a /boot , por ejemplo, en BIOS antiguas y versiones
antiguas del LILO pueden requerir que /boot se encuentre por debajo del cilindro 1024 del disco duro.
Tambin puede que se requiera que /boot sea una particin independiente.
/bin : Contiene algunos ficheros ejecutables que son accesibles para todos los usuarios y constituyen
los comandos ms importantes que pueden ejecutar los usuarios normales. Contiene ficheros estticos.
Sus ficheros son compartibles pero son tan importantes para el funcionamiento bsico del ordenador
que este directorio casi nunca se comparte. Cada cliente debe tener su directorio /bin en local.
/sbin : Es similar a /bin pero contiene programas que slo ejecuta el administrador. Es esttico y en
teora compartible. En la prctica sin embargo, no tiene sentido compartirlo.
/lib : Contiene bibliotecas de programa que son cdigo compartido por muchos programas y que se
almacenan en ficheros independientes, para ahorrar RAM y espacio en disco. /lib/modules contiene
mdulos o drivers que se pueden cargar y descargar segn necesitemos. Es esttico y tericamente
compartible aunque en la prctica no se comparten.
/usr : Aloja el grueso de los programas de un ordenador Linux. Tiene un contenido compartible y
esttico lo que permite montarlo en modo slo lectura. Se puede compartir con otros sistemas Linux;
muchos administradores separan /usr en una particin independiente aunque no es necesario. Contiene
algunos subdirectorios similares a los del directorio raz como /usr/bin y /usr/lib , que contienen
programas y bibliotecas que no son totalmente crticos para el funcionamiento del ordenador.
/usr/local : Contiene subdirectorios que reflejan la organizacin de /usr . Aloja los ficheros que instala
localmente el administrador y es un rea a salvo de las actualizaciones automticas de todo el SO.
Despus de la instalacin de Linux debera estar vaco, excepto para determinados subdirectorios stub.
Se suele separar en una particin para protegerlo de las reinstalaciones del SO.
/usr/X11R6 : Alberga los ficheros relacionados con el sistema X Window (entorno GUI). Contiene
subdirectorios similares a los de /usr, como /usr/X11R6/bin y /usr/X11R6/lib.
/opt : Es similar a /usr/local pero est pensado para los paquetes que no vienen con el SO como los
procesadores de texto o juegos comerciales, que se guardan es sus propios subdirectorios. El contenido
de /opt es esttico y compartible. Se suele separar en su propia particin para convertirlo en un enlace
simblico a un subdirectorio de /usr/local.
/home : contiene los datos de los usuarios y es compartible y variable. Se considera opcional en FHS,
pero, en la prctica lo opcional es el nombre. El directorio /home con mucha frecuencia reside en su
propia particin.
/etc: Contiene archivos de configuracin del sistema especficos del Host de todo el sistema.
/root : Es el directorio home del usuario root. Como la cuenta de root es tan crtica y especfica del
sistema, este directorio variable no es realmente compartible.
/var : Contiene ficheros efmeros de varios tipos, de registro del sistema, de cola de impresin, de
correo y news, etc. El contenido del directorio es variable pues algunos subdirectorios son compartibles
y otros no. Se suele colocar /var en su propia particin, sobre todo si el sistema registra una gran
actividad en /var.
/tmp : Es donde se crean los archivos temporales y variables que necesitan los programas. La mayora
de las distribuciones limpian este directorio peridicamente en el inicio. Este directorio raramente se
comparte pero se suele poner en una particin independiente para que los procesos no controlados no
provoquen problemas en el sistema de ficheros al ocupar demasiado.
/mnt : La finalidad de este directorio es albergar el montaje de los dispositivos. En la estructura de
directorios, algunas distribuciones crean subdirectorios dentro de /mnt para que hagan de puntos de
montado; otras utilizan directamente /mnt o incluso puntos de montado independientes de /mnt, como
/floppy o /cdrom . FHS slo menciona /mnt y no especifica cmo se ha de utilizar. Los medios
montados en esta particin pueden ser estticos o variables y, por norma general son compartibles.
/media : Es una parte opcional del FHS como /mnt , pero que podra contener subdirectorios para tipos
de medio especficos. Muchas distribuciones modernas utilizan subdirectorios /media como punto de
montado para los discos extrables.
/dev: Linux trata la mayora de los dispositivos de hardware como si fueran ficheros y el SO debe tener
un lugar para estos en su sistema de ficheros. Ese lugar es el directorio /dev que contiene un gran
nmero de ficheros que hacen de interfaces de hardware. Con los permisos apropiados se accede al
hardware del dispositivo leyendo y escribiendo en el fichero de dispositivo asociado. El kernel permite
que /dev sea un sistema de ficheros virtual creado automticamente. El kernel y las herramientas de
soporte crean sobre la marcha entradas en /dev para adaptarse a las necesidades de los drivers
especficos. La mayora de las distribuciones emplean este recurso.
/proc : Es un directorio inusual ya que no corresponde a un directorio o particin normal sino que se
trata de un sistema de ficheros virtual que proporciona acceso a ciertos tipos de informacin del
hardware dinmicamente. Esta informacin no se encuentra accesible a travs de /dev.
En la administracin de Linux conocer la finalidad de los directorios resulta tremendamente til ya que
si instalamos por ejemplo un programa en una ubicacin equivocada, un binario colocado en /bin c u
ando debera estar en /usr/local/bin puede que se sobrescriba o elimine al realizar una actualizacin del
sistema.
Ref:
https://es.wikipedia.org/wiki/Filesystem_Hierarchy_Standard#Especificando_los_directorios_definidos
_por_FHS
Tras este estudio del sistema de ficheros a nivel software, a continuacin vamos a ilustrar con un
ejemplo grfico cmo se distribuyen los discos y particiones dentro del sistema de ficheros. El ejemplo
consta de un disco SATA que tiene 5 particiones, y cada una de ellas albergar un directorio (o punto de
montaje) de la estructura de directorios visto anteriormente:
Como se puede apreciar en la imagen, cada particin del disco duro est asociado a un directorio de la
estructura de directorios nica del sistema operativo, a diferencia de windows que cada particin del
disco duro se le asigna una letra de unidad (C:, D:, etc) y en ella se contiene su propia estructura de
directorios.
Esta forma de componer la estructura de directorios tiene una serie de ventajas en cuanto a la integridad
y seguridad del sistema operativo que son:
Soporte multi-operativo: Permite alojar varios sistemas operativos.
Eleccin del sistema de ficheros: Cada sistema de ficheros ofrece diferentes caractersticas
eligindolas segn las necesidades que se tengan para esa particin.
Control y administracin del espacio en disco: Se puede controlar el acceso de los usuarios a las
diferentes particiones.
Proteccin de errores en el disco: Al estar dividida la particin un error fsico del disco
probablemente afectar a una parte del sistema operativo, dejando la posibilidad de que se
pueda seguir trabajando con l e intentar recuperar el sector daado.
Seguridad: Puedes asegurar un sector de tu sistema de datos crticos montndolo en solo lectura.
La ventaja de agregar esta caracterstica a la particin y no a los ficheros es por cuestiones de
redundancia.
Backup: Las herramientas de copias de seguridad trabajan mejor en sistemas pequeos y
aislados de tareas de escritura.
Qu es una shell?
El shell es el entorno que hace de intermediario entre el usuario y los recursos del ordenador, como si
fuera un entorno de programacin en tiempo real para ejecutar tareas. La shell aparece cuando nos
logueamos en el sistema en modo consola, o bien cuando en el entorno grfico abrimos una terminal.
La shell se compone de un prompt, que es un texto inicial que normalmente nos ofrece informacin til
como el usuario que est utilizando la shell, el hostname de la mquina o incluso el directorio sobre el
que estamos posicionados en cada momento, y el cursor que recibe las ordenes de teclado.
En el ejemplo anterior hay configurado un alias para el comando ls con el modificador --color
y el
que
se
ha creado
anteriormente
para
el
comando
rm
.
Los alias pueden tener cualquier nombre siempre y cuando no tengan espacios o caracteres
especiales, como signos de admiracin o interrogacin.
exec: Este comando se utiliza para la ejecucin de un programa especificado. Tiene la
funcionalidad adicional de ejecutarse junto a la sesin de consola, no crea un nuevo proceso.
Cuando se finalice la ejecucin del programa se finalizar tambin la sesin en consola.
echo: Repite el texto o el contenido de una variable introducido como argumento.
env: Sin argumentos muestra las variables de entorno y el contenido de las mismas. Se puede
utilizar tambin para ejecutar un comando con una variable de entorno modificada
temporalmente.
En este ejemplo se ejecuta el programa xterminal con la variable DISPLAY modificada a :1.0 en
vez de :0.0 que es el valor que tiene establecido. Una vez se finalice el comando la modificacin
de dicha variable se perder.
export: Define una variable de entorno para la sesin actual y para todas las sesiones iniciadas
a partir de sta.
Comandos bsicos
Antes de pasar a los comandos para la navegacin debemos comprender un poco mejor como funciona
el sistema de archivos y directorios.
Directorios y archivos
Una ruta seala la localizacin exacta de un archivo o directorio mediante una cadena de caracteres
concreta. En lneas generales se compondr de los nombres de los directorios que conforman el camino
hasta nuestro archivo o directorio a lo largo del rbol de directorios, y finalmente estar el nombre del
archivo o directorio al que se quiere llegar.
En Linux estos nombres estarn separados por el carcter delimitador "/".
El acceso a archivos y directorios se hace mediante rutas absolutas o rutas relativas.
Las rutas absolutas sealan la ubicacin de un archivo o directorio desde el directorio raz del
sistema de archivos. Por ejemplo es una ruta absoluta /home/usuario/prueba.txt que seala la
ubicacin del archvo de texto prueba.txt desde la raz del sistema de archivos.
En este ejemplo dentro del directorio /home se hace uso de una ruta absoluta para visualizar el archivo
de texto prueba.txt
Las rutas relativas sealan la ubicacin de un archivo o directorio a partir de la posicin actual en el
sistema de archivos. Por ejemplo es una ruta relativa usuario/prueba.txt que seala al archivo
prueba.txt dentro del directorio /home en la ubicacin actual.
En el ejemplo anterior se hace uso de una ruta relativa teniendo en cuenta que se est dentro del
directorio /home.
rmdir. Permite borrar directorios vacos. Para borrar el directorio creado en el ejemplo
anterior:
El comando ls se utiliza para listar archivos y contenido de un directorio. Tiene varias opciones, entre
las que destacaremos las siguientes:
-l muestra detalles sobre los archivos.
-s muestra el tamao en Kb.
-d muestra las propiedades de un directorio, no su contenido
-h muestra el tamao de los ficheros y directorios en formato de lectura humano (por ejemplo
1K, 234M, 2G)
-a muestra todos los ficheros, incluidos los ocultos (en Linux los ficheros ocultos comienzan
con un punto [.])
-R lista los directorios de forma recursiva.
Un ejemplo del comando ls -lh :
Permisos y propietarios
Ya hemos visto que con el comando ls podemos ver tanto los permisos como el propietario y grupo al
que pertenece un fichero o directorio. A continuacin vamos a explicar la poltica de identidad de los
ficheros contenidos en el sistema Linux:
Los ficheros y directorios tienen 3 tipos de identidad: La individual, la de grupo y la del resto del
sistema. Por tanto, se puede indicar que un fichero o directorio en el sistema Linux tiene un perfil de
propietario, un perfil de grupo y un perfil de sistema. Cada uno de estos perfiles se le pueden asignar
unas normas de uso llamado permisos. Los permisos se componen de tres elementos: lectura,
escritura y ejecucin. De este modo, la combinacin de perfiles con sus respectivos permisos nos
ofrecen una administracin eficiente de los diferentes ficheros y directorios existentes en nuestro
sistema.
Existe una pequea apreciacin en el permiso de ejecucin, ya que hay que discriminar su uso a
ficheros y directorios, puesto que no realizan la misma funcin en ellos. Para los ficheros, el permiso de
ejecucin hace que el fichero sea ejecutable. Esto se suele hacer en shell scripts y otros ficheros
especiales del sistema. Sin embargo para los directorios el permiso de ejecucin permite que se pueda
acceder al directorio (ya que un directorio, por lgica, no se puede ejecutar).
Teniendo esta regla en cuenta, lo habitual es que todos los directorios tengan el permiso de ejecucin
incluido en ellos para, al menos, el propietario del directorio.
Los permisos de lectura, escritura y ejecucin se muestran con las siglas r, w y x respectivamente.
Estos permisos se pueden observar en el comando ls al inicio:
Adems de esto, la primera letra representa el tipo de archivo y determinar como Linux interpretar el
archivo, como un dato, un directorio, etc.
Los restantes caracteres de la cadena se dividen en 3 grupos de 3 caracteres. El primer grupo, controla
el acceso al fichero del propietario, el segundo grupo controla el acceso del grupo y el tercero controla
los accesos de todos los dems usuarios. En cada uno de los tres caracteres la cadena de permisos
determina la presencia o ausencia de cada uno de los tres tipos de acceso: lectura, escritura y ejecucin.
Si se incluye el permiso de ejecucin el fichero se podr ejecutar como un programa y definir el bit de
ejecucin en un fichero que no es un programa no tiene ningn tipo de consecuencia. Si en la cadena de
permisos aparece un guin (-) quiere decir que el permiso est ausente. La presencia del permiso se
indica con una r para lectura, un w para la escritura y una x para la ejecucin.
Por tanto, la cadena de permisos rwxr-xr-x significa que tanto el propietario del fichero como los
miembros de su grupo y todos los dems usuarios pueden leer y ejecutar el fichero, pero slo su
propietario tiene permisos de escritura sobre l.
Linux codifica en formato binario la informacin de los permisos que se puede expresar como un nico
nmero de 9 bits. Este nmero se suele expresar en formato octal (base 8) debido a que un nmero en
base 3 tiene 3 bits de longitud, lo que significa que la representacin en base 8 de una cadena de
permisos tiene 3 dgitos de longitud que corresponden al propietario, el grupo y los permisos globales.
Los permisos de lectura, escritura y ejecucin se corresponden con cada uno de los bits. El resultado es
que se pueden determinar los permisos aadiendo nmero en base 8.
El permiso de ejecucin tiene sentido para los ficheros normales pero no para el resto. Los directorios
utilizan el bit de ejecucin de otra manera: si est definido significa que se puede buscar en el
contenido del directorio. Por eso es difcil ver un directorio en el que el bit de ejecucin no se defina
junto al de lectura. Si a un usuario se le da permiso para escribir en un directorio, este usuario podr
crear, borrar o renombrar los ficheros del directorio aunque no sea el propietario de los ficheros y no
tenga permisos para escribir en ellos.
Los enlaces simblicos siempre tienen permisos 777, sin embargo, este acceso se aplica slo al propio
fichero del enlace y no al fichero enlazado. En cambio, los permisos del enlace de referencia afectan al
fichero enlazado.
La mayora de las reglas de permisos no se aplican a root, por lo que puede leer o escribir en cualquier
fichero del ordenador, incluso en aquellos que tienen permisos 000, ya que root puede cambiar los
permisos de cualquier fichero. Hay algunos ficheros que pueden ser inaccesibles para root, pero slo
porque existe una restriccin subyacente, como por ejemplo que un disco duro no est instalado en el
ordenador.
Este comando acepta muchas opciones, entre las que se incluyen -R o recursive. Esta herramienta es
un subconjunto de funcionalidades de chown , pero la pueden utilizar los usuarios normales.
Las opciones ms usuales del comando chgrp son las siguientes:
-R: Cambia el permiso de archivos que estn en subdirectorios del directorio en el que ests en ese
momento.
-C : Cambia el permiso para cada archivo.
-f : Esta opcin lo que hace es forzar el cambio. No informa de mensajes de errores.
Adems de modificar los 3 dgitos de permisos del archivo, si al comando anterior se le aade un
cuarto bit al principio se pueden definir permisos especiales: si se aade un 4, se definir el bit de la ID
de usuario (SUID); si se aade un 2, se definir la ID de grupo (SGID); y si se aade un 1 se definir el
sticky bit.
Si se omite el primer dgito como en el ejemplo anterior Linux tomar los 3 bits como bits para
permisos y no como bits para permisos especiales.
El modo simblico consta de tres componentes: un cdigo que indica el conjunto de permisos que se
quieren modificar, un smbolo que indica si se desea aadir, borrar o definir el modo del valor indicado
y un cdigo que especifica cul debera ser el permiso. Estos cdigos distinguen entre maysculas y
minsculas:
Para utilizar los parmetros de los permisos simblicos, se combinarn uno o ms cdigos de la
primera columna con un smbolo de la tercera columna y uno o ms cdigos de la quinta columna. Se
pueden combinar varios parmetros, separndolos por comas:
Ejemplos de permisos simblicos con chmod:
El Comando find
El comando find implementa un sistema de fuerza bruta para localizar ficheros ya que realiza una
bsqueda por todo el rbol de directorios especificado para localizar los que satisfagan el criterio
especificado. find tiende a ser lento pero es flexible y tiene una mayor probabilidad de xito.
Se le pueden especificar una o ms rutas para restringir sus operaciones. La expresin es un modo de
especificar lo que queremos buscar; las expresiones ms comunes permiten buscar por varios criterios:
Buscar por nombre de fichero: Utilizando la expresin -nombre patrn se buscarn los
ficheros que coincidan con el patrn especificado. Se pueden emplear comodines delimitando el
patrn entre comillas.
Buscar por el modo de permiso: La expresin -perm modo permite localizar ficheros que
tengan ciertos permisos. El modo se puede expresar simblicamente o en modo octal si va
precedido de un mas (+). El comando find localizar los ficheros en los que estn definidos
todos los bits de permisos especificados.
Buscar por el tamao del fichero: Se puede realizar una bsqueda de un fichero de un tamao
determinado con la expresin -size n , donde n especifica en bloques de 512 bytes (se puede
modificar con una letra que sirva de cdigo para el valor, por ejemplo, k para kilobytes).
Buscar por grupo: La expresin -gid GID , busca los ficheros cuya ID de grupo es GID. La
opcin -group nombre localiza ficheros cuyo grupo tiene el nombre indicado. Esta ltima
opcin suele ser ms fcil de utilizar pero la primera es til en caso de que la GID se haya
quedado hurfana y no tenga nombre.
Buscar por ID de usuario: -uid UID busca los ficheros cuyo propietario tiene UID como ID de
usuario. -user nombre busca los ficheros cuyo propietario es nombre. Esta ltima opcin suele
ser ms fcil de utilizar pero la primera es til en caso de que la UID se haya quedado hurfana
y no tenga nombre.
Restringir la profundidad de la bsqueda: Para limitar el nmero de subdirectorios en los que
buscar se emplea la expresin -maxdepth niveles .
find tiene muchas variantes y opciones adicionales, pero por ejemplo si se desean localizar todos los
ficheros fuente en cdigo #C con nombres que normalmente acaban en .c y se encuentran el directorio
home , se ejecutar:
Esta expresin devolver todos los ficheros que coincidan con el criterio de bsqueda.
Los usuarios normales pueden utilizar find, pero si carecen de permisos para listar el contenido de un
directorio, find devolver un error junto con el nombre del directorio.
El Comando locate
Esta utilidad funciona de forma similar a find pero difiere en dos aspectos importantes:
Es mucho menos sofisticado en sus opciones de bsqueda ya que se utiliza para buscar por el
nombre de fichero con lo que el programa devuelve todos los ficheros que contienen la cadena
especificada.
Trabaja con una base de datos que se encarga de mantener. Normalmente, se incluye una tarea
cron que llama a locate para que actualice su base de datos peridicamente. El comando
updatedb sirve para actualizar la base de datos manualmente. Es importante que se mantenga
actualizada, ya que en caso contrario, al realizar las bsquedas puede que devuelva nombres de
ficheros que ya no existan o que no localice ficheros recientes.
Al trabajar con una base de datos es ms rpido que find , sobre todo en las bsquedas por todo el
sistema. Tambin es probable que devuelva muchas falsas alarmas, especialmente si se quiere localizar
un fichero con un nombre corto. Algunas distribuciones utilizan slocate en vez de locate, que incluye
caractersticas de seguridad que impiden que los usuarios vean los nombres de los ficheros o de los
directorios a los que no tienen acceso. En la mayora de los sistemas con slocate, locate es un enlace a
slocate.
El Comando whereis
Busca los ficheros en un conjunto restringido de localizaciones. Esta herramienta no busca en
directorios de usuario pero es un modo rpido de localizar ejecutables de programas y ficheros
relacionados como ficheros de documentacin o configuracin. El programa whereis devuelve los
nombres de fichero que comienzan por aquello que se escribe como criterio de bsqueda, incluso los
ficheros que contienen extensiones, con frecuencia suele hallar los ficheros de configuracin de /etc ,
paginas MAN y ficheros similares. Para localizar por ejemplo el programa ls, se escribir:
El Comando which
Est considerado comando de bsqueda pero es poco potente. Busca la ruta del comando escrito y la
lista completa, desde la primera coincidencia que encuentre. La opcin -a permite buscar todas las
coincidencias. Puede resultar til, por ejemplo, para saber la ruta completa de un programa que se
desee llamar desde un script.Realiza la bsqueda solamente en los directorios definidos en la variable
del entorno PATH.
Visualizacin de ficheros
Existen mltiples formas de visualizar ficheros con Linux, con diferentes tipos de criterios a la hora de
visualizarlos.
A continuacin vamos a ver algunos de estos comandos para la visualizacin de ficheros:
cat: Concatena ficheros o la entrada estndar, y lo muestra a la salida estndar; aunque el uso
mas habitual de este comando es para mostrar ficheros.
El comando cuenta con varias opciones, entre las que se destacan las mas importantes:
-b aade el nmero de lnea en la salida. Si hay lneas vacias, no las cuenta.
-E muestra el signo dolar ($) al final de cada lnea. Util para scripts.
-n similar a la opcin -b con la diferencia que si cuenta las lneas vacias.
-T muestra el simbolo ^I para las tabulaciones en el fichero.
tac: Tiene la misma funcin del comando cat pero muestra el contenido de forma inversa.
head: Este comando muestra por defecto las diez primeras lneas de un fichero dado. Si se le pasan
mas de un fichero al comando, este mostrar las diez primeras lneas de cada fichero indicando el
nombre del mismo con una cabecera.
La opcin -n X indica que muestre X lneas de cada fichero, en vez de diez por defecto.
La opcin -c K muestra los primeros K bytes de cada fichero.
tail: Este comando muestra por defecto las diez ltimas lneas de un fichero dado. Al igual que con el
comando head , si se le pasa mas de un fichero mostrar las diez primeras lneas de cada fichero.
Cuenta con las siguientes opciones:
La opcin -n X indica que muestre X lneas de cada fichero, en vez de diez por defecto.
La opcin -c K muestra los primeros K bytes de cada fichero.
La opcin -f (follow) hace que el comando no finalice, haciendo que se muestre por la salida estndar
los datos que se van introduciendo en el fichero. Esta opcin tremendamente til para visualizar en
tiempo real cualquier log del sistema, haciendo que sea una opcin muy utilizada por los
administradores.
nl: Numera las lneas en los ficheros. Algunas de sus opciones son las siguientes:
Con las opciones -ba se consigue que se numeren todas las lneas.
Con las opciones -bt se consigue que se numeren nicamente las lneas que no estn en blanco.
uniq: Este comando muestra por defecto el contenido de archivos eliminando las lneas consecutivas
que esten repetidas. Algunas de sus opciones son:
-u muestra nicamente las lneas que no se repiten.
-d muestra nicamente la lnea repetida.
fmt: Formatea un texto para determinado nmero de caracteres por lnea. Por defecto es 75.
pr: Prepara y formatea un archivo para su impresion desde la lnea de comandos. Por defecto es de 66
lneas por 72 caracteres de ancho, modicados por -l y -w , respectivamente.
Edicin de ficheros
En el apartado de edicin de ficheros, Linux cuenta con varias herramientas para esta funcin. Las ms
famosas con vim y nano, aunque existen otras como mcedit, emacs o joe. Para este curso vamos a ver
nano, ya que es un editor bastante sencillo de utilizar, y vim para el uso ms profesional
Nano: Es un sencillo editor de textos que viene instalado en la mayora de distribuciones Linux de uso
profesional y domstico. Debido a su sencillez, cualquier usuario poco experimentado con la terminal
puede aprender a utilizar este editor de textos gracias a las lneas de ayuda inferiores que se muestran
durante la ejecucin de la aplicacin. El uso del comando es bastante sencillo, basta con escribir nano
nombre_archivo y pasaremos a la pantalla de edicin de la aplicacin. Durante la ejecucin de la
aplicacin podremos modificar todo el contenido del texto, aunque los cambios no se harn efectivos
hasta que salvemos. Nano tiene una serie de atajos que vienen explicados en la ayuda inferior. El
carcter ^ representa la tecla < Ctrl >. Asi, la combinacin de teclas < Ctrl + o > nos permiten guardar
los cambios que hemos realizado en el fichero. Un uso interesante de los atajos son la combinacin de
teclas < Ctrl + k > y < Ctrl + u >, que nos permiten cortar y pegar texto respectivamente.
Vim: Este potente editor de texto nos permite la edicin de forma profesional de un fichero. Su uso es
bastante mas complicado que Nano, ya que tiene diferentes modos de uso, pero esto otorga a la
aplicacin unas mejoras en cuanto a la gestin del sistema durante el uso de la aplicacin. Hay que
decir que vim es una evolucin de la herramienta vi, y hereda de esta la funcionalidad bsica de la
herramienta. A continuacin procedemos a explicar un poco su uso:
El uso de la herramienta es similar a nano, tecleando vim nombre_archivo pasaremos a la pantalla de
edicin de la aplicacin. Una vez ah, vamos a comprender los diferentes modos de la herramienta:
Modo de navegacin
Es el modo inicial de Vim . En ste, las teclas del teclado actan bsicamente para la navegacin y
edicin de bloques de texto. Generalmente los comandos son letras nicas. Si viene precedido por un
nmero, el comando se repetir de acuerdo con el valor de este nmero. Algunas teclas comunes
utilizadas en el modo de navegacin son:
Modo de insercin
La manera ms comn de entrar en el modo de insercin es por medio de la tecla [i] o [a] , ya sea en
mayscula o minscula. Es el modo ms intuitivo usado para escribir texto en un documento. La tecla
[ESC] sale del modo de insercin y vuelve al modo de navegacin.
Modo de comando
Accesible al pulsar la tecla [:] en el modo de navegacin. Se utiliza para realizar bsquedas, guardar,
salir, ejecutar comandos en el shell, modicar conguraciones de VI , etc.
Para volver al modo de navegacin se utiliza la instruccin visual o simplemente se pulsa [Enter] con la
lnea vaca. A continuacin se muestran los comandos de VI :
Gestin de ficheros
Las herramientas de gestin de ficheros en Linux nos permiten realizar las tareas cotidianas de
eliminacin, copia, movimiento y renombramiento de ficheros y directorios. Vamos a explicar a
continuacin cuales son estas herramientas y sus opciones de uso, tanto en el mbito local como en el
mbito de red:
Ambito local: Las herramientas que se utilizan son cp, mv y rm:
cp: Se utiliza para copiar ficheros y directorios. Por ejemplo, para copiar el archivo de texto
prueba.txt al directorio Documentos haciendo uso de rutas absolutas:
Tanto el origen como el destino puede ser una direccin remota. Para acceder a la ubicacin remota, el
formato es usuario@host:ruta. Las opciones mas utilizadas del comando son las siguientes:
-i identity_file: Utiliza una llave privada de certificado concreta para realizar la comunicacin
con el host remoto.
-P puerto: Especifica el puerto de conexin con el host remoto.
-p: Preserva los tiempos de modificacin, de acceso y permisos de los ficheros que se copian.
-r: Copia de forma recursiva (obligatorio para copiar directorios)
Al ejecutar estos ejemplos sin argumentos el comando espera a que el usuario inserte informacin para
posteriormente procesarla, dicha informacin de entrada debe ser proporcionada por la entrada
estndar, en este caso por el teclado.
Salida Estndar , en ingls standard output ( stdout ) es el mtodo por el cual el programa
puede comunicarse con el usuario. Por defecto la salida estndar es la pantalla donde se ejecutan
dichos comandos. Ejemplos:
De igual forma stderr devolver mensajes que indicarn los errores de los comandos ejecutados.
El ujo de datos para redireccionamiento y tuberas en lnea de comandos se inicia de izquierda a
derecha.
Redireccionamiento
Para redireccionar la salida estndar de un comando a un archivo se utiliza el smbolo > despus del
cual debe indicarse el nombre del archivo que se crear:
Si el archivo existe previamente, se sobrescribir. Para agregar los valores sin borrar el contenido
existente, se utiliza >> .
Para redireccionar el contenido de un archivo a la entrada estndar de un comando se utiliza < . En este
caso, el ujo de datos va de derecha a izquierda. Este tipo de redireccin se suele utilizar con comandos
como tr que no lee archivos directamente.
Normalmente se suele redireccionar la salida estandar pero si se quiere redireccionar la salida de
errores podemos utilizar 2> . Para redireccionar ambos simultneamente, se usa &> .
>
Crea un fichero nuevo con el contenido de la salida estndar. Si el archivo existe se
sobrescribir.
>>
Aade la salida estndar al contenido de un archivo existente. Si no se especifica el archivo este
se crea.
2>
Crea un fichero nuevo con el contenido de la salida de errores. Si el archivo existe se
sobrescribir.
2>> Aade la salida de errores al contenido de un archivo existente. Si no se especifica el archivo
este se crea.
&>
Crea un fichero nuevo con el contenido de la salida estndar y la salida de errores. Si el archivo
existe se sobrescribir.
<
<<
<>
Usa un fichero tanto para la entrada estndar como para la salida estndar.
Tubera (pipe)
Es posible enviar la salida de un comando a la entrada de otro comando, utilizando el carcter de
tubera [ | ]. Por ejemplo:
Sustitucin de Comandos
Tambin es posible utilizar la salida de un comando como argumento para otro, utilizando comillas
ejecutivas [ ` ] (en el teclado se ubica en la tecla de apertura de corchetes):
En este ejemplo se formatea el contenido de la variable PATH con el comando tr , para listar con ls
los directorios contenidos en dicha variable.
El resultado ser el mismo con:
Comando grep
Muchos programas soportan el uso de estos elementos y el comando grep es el ms comn para
realizar bsquedas en textos mediante patrones. Algunos caracteres tienen un signicado especial en
expresiones regulares como se muestra a continuacin:
^
Inicio de lnea.
Final de lnea.
. (punto)
Cualquier carcter
[]
Un uso comn del comando grep es mostrar el contenido de archivos de conguracin ignorando
nicamente las lneas que corresponden a los comentarios, es decir, las lneas que se inician con el
carcter almohadilla [#]. Para hacer esto, es necesario aadir el parmetro -v que invierte el patrn de
busqueda, seleccionando las lneas que no coincidan con el patrn.
Por ejemplo, para hacerlo con el archivo /etc/default/grub :
Expresiones regulares
Bueno en esta gua os quera explicar de forma mas clara y con ejemplos explicados que
es esto de las expresiones regulares. Para comenzar lo primero que hay que aclarar es la
diferencia entre expresiones regulares y patrones de ficheros, ya que se pueden
confundir y a nivel funcional son diferentes. Las expresiones regulares son las
utilizadas para buscar un texto dentro de un fichero, mientras que los patrones de
ficheros son normalmente los argumentos pasados a los comandos como rm, cp,
mv, etc. para hacer referencia a varios ficheros en el disco duro. Por tanto, podemos
concluir en que tenemos un grupo de comandos que sern los que utilicen expresiones
regulares y que estn orientados al tratamiento de texto: grep, egrep, ed, sed, awk,
vi, etc...
Existen dos tipos de expresiones regulares: las bsicas y las extendidas. Como se
puede deducir de su nombre las extendidas otorgan muchas mas opciones a la hora de
tratar con los patrones a buscar. Antes de comenzar con la gua y ver ejemplos vamos a
ver todas las expresiones regulares as como las reglas de uso de estas mismas:
Reglas
Cuando hablamos de expresiones, estas pueden ser un carcter, un conjunto de caracteres o un
metacracter.
Para utilizar las expresiones regulares es necesario ponerlas entre comillas simples ' '
Los caracteres son tratados de forma literal, es decir, que concuerdan consigo mismo. Por
ejemplo x concuerda con x, abc concuerda con abc, etc...
Para utilizar estos metacaracteres como literales, es necesario escaparlos, esto se consigue
antecediendole el metacaracter de barra invertida \
A continuacin seguiremos viendo algunas reglas ms en conjunto de las diferentes expresiones
regulares. Estas expresiones se pueden subdividir en varias categoras, que son las siguientes:
Hay varias excepciones a la regla anterior. Por ejemplo el carcter del sombrerito si se pone al
inicio del corchete gana una funcionalidad diferente, como hemos visto en la tabla anterior.
El uso de las barras invertidas en los corchetes y los parntesis no sirve en las expresiones
regulares extendidas. Esto quiere decir que lo que hemos visto antes de \( \) y \{ \} ahora se
debe poner de este modo: ( ) y { }. Si queremos que sean caracteres literales es
necesario escaparlos.
Casos prcticos
Bueno, una vez visto todo esto, vamos al caso prctico! Vamos a utilizar este texto para nuestros
ejemplos:
Lo primero que vamos a hacer para esta gua es configurar el comando grep con la opcin de color.
Esto nos va a ayudar mucho a saber realmente lo que estamos filtrando con el patrn que hemos puesto.
Para activar esta opcin se puede hacer de dos formas: o bien con la variable de
entornoGREP_OPTIONS contenga el valor --color o bien creando un alias al comando alias
grep='grep color=always'.
Comenzamos con el ejemplo mas bsico que es buscar una palabra concreta. En este caso vamos a
buscar la palabra Debian:
Como podemos apreciar, no nos ha cogido las palabras debian que existen en el texto. Esto se
debe a que, como ya sabemos, Linux discrimina entre maysculas y minsculas. Para ignorar esta
discriminacin, debemos ponerle al comando grep la opcin -i
Esto mismo podriamos abordarlo del siguiente modo, aunque no es el mas correcto. Usando el punto
podemos sustituir cualquier carcter dentro del patrn de bsqueda, por tanto:
De este modo buscara cualquier palabra que contenga cualquier carcter seguido de ebian.
Ahora vamos a complicarlo mas. Vamos a realizar una bsqueda de todas las lneas que contengan la
fecha de release pertenecientes a los dias 10 hasta el 19 de cualquier mes. Analizando el texto
debemos notar que la expresin debe coincidir los nmeros al inicio de lnea. Viendo la estructura del
fichero lo podemos acometer del siguiente modo:
El acento circunflejo ^ lo utilizamos para indicar que la expresin se debe buscar al inicio de linea,
despues escapamos el corchete para hacerlo literal, a continuacin ponemos el uno y luego un rango
que comprenda entre el 0 y el 9.
Lo siguiente que vamos a ver es el uso de una expresin regular extendida, que va a ser la
interrogacin. Por ejemplo, vamos a seleccionar las lneas que contengan tanto http como https. Para
ello construimos el patrn del siguiente modo:
La interrogacin permite que el carcter que esta a su izquierda sea opcional, por tanto nos va a
buscar tanto cadenas http como https.
Para comprender como funciona el metacarcter + vamos a ver una sucesin de comandos para
poder comprenderlo:
Como podemos apreciar, con los delimitadores \< y \> hacemos que solo encuentren un carcter
comprendido entre la a y z tanto minscula como mayscula repetida la secuencia 4 veces.
Ahora algo mas complicado, vamos a seleccionar las lneas que tengan frases de dos palabras. Para
ello lo primero a la hora de montar la expresin regular es saber que una palabra es una serie de
letras consecutivas. Para afrontarlo como patrn de bsqueda podriamos indicar [a-zA-z]+
Lo siguiente que debemos entender que entre palabras hay un espacio, por tanto lo siguiente que
deberiamos buscar sera cualquier cosa que no sea una letra, tambin hay que tener en cuenta que
el final de la frase entendemos que se realiza con un punto, por tanto [^a-zA-Z]
Bien, ya tenemos una palabra y un espacio/punto. Ahora para saber una frase de dos palabras lo
nico que tendriamos que indicarle es que se repitiera 2 veces, pero claro, si lo ponemos de forma
literal no va a comprender lo que queremos realizar. Por tanto es necesario agrupar las dos
expresiones anteriores para realizar la repeticin y delimitndolas para que entienda que es una
frase, quedando una cosa asi:
Procesos y trabajos
En el sistema Linux, cuando una aplicacin se ejecuta genera lo que llamamos un proceso. Este
proceso tiene un identificador de proceso (PID) y, si la propia aplicacion ejecuta otra aplicacin,
generar otro proceso hijo de la aplicacin inicial, que tambin tendr su propio (PID).
Esta regla tiene la excepcin de los programas internos de la shell, que como ya vimos en el apartado
de la shell, utilizan el propio PID de la shell para su ejecucin.
A continuacin veremos las diferentes aplicaciones que se utilizan en Linux para monitorizar y
gestionar procesos.
Monitorizar procesos
Pueden utilizarse diversos comandos para inspeccionar procesos y son especialmente tiles para
localizar y nalizar procesos que no son necesarios o son sospechosos.
Una de las herramientas ms importantes de administracin de procesos es el comando ps , que
muestra el estado de los procesos. Incluye algunas opciones muy tiles y ayuda a monitorizar lo que
est ocurriendo en el sistema. Su sintaxis es bastante simple:
Mostrar todos los procesos: Por defecto, ps muestra solo los procesos arrancados desde la
propia terminal (por ejemplo xterm, login en modo texto o login remoto). Las opciones -A y
-e muestran todos los procesos en el sistema, y x muestra todos los procesos de los que es
propietario el usuario que ejecut el comando. La opcin x tambin incrementa la cantidad de
informacin mostrada sobre cada proceso.
Mostrar procesos de un usuario: Se pueden mostrar los procesos de un usuario concreto con la
opcin -u user, U user, y --User user. La variable user debe ser un nombre de usuario o el
ID de un usuario.
Mostrar informacin extra: Las opciones -f , -l , j , l u y v expanden la informacin sacada
en pantalla. La mayora de los formatos de salida incluyen una lnea por proceso, pero ps
puede mostrar tal cantidad de informacin que sea imposible mostrar en una sola lnea la
informacin de un proceso concreto.
Mostrar jerarqua de procesos: Las opciones -f , -H y --forest agrupan procesos y muestran
la jerarqua y relaciones entre ellos. Estas opciones pueden ser tiles si se desea saber cual es el
padre de un proceso, o viceversa.
Aqu se muestran los procesos iniciados por el usuario "usuario" y la jerarqua y relacin entre ellos.
Una variante del comando ps es pstree que muestra procesos activos en formato de rbol
genealgico (procesos hijos vinculados a sus respectivos procesos padre).
Para monitorizar continuamente los procesos, mostrando informacin como utilizacin de memoria y
CPU de cada uno de ellos, se usa el comando top . La tecla [H] proporciona ayuda sobre la
utilizacin del programa. Puede utilizarse para modicar la prioridad de un proceso. Esta herramienta
es un programa en modo texto que se puede arrancar desde una terminal, aunque tambin existen
algunas variantes en modo grfico. Como cualquier comando Linux, acepta diferentes opciones,
Como programa se debe especificar el nombre del programa cuyo PID deseemos consultar. El PID
puede ser uno solo o varios, ya que un programa puede tener distintos procesos en ejecucin
relacionados entre s (procesos padre e hijos).
Ejemplo de pidof:
Otra aplicacin que permite visualizar los procesos filtrando por cierto criterio es el programa pgrep .
Funciona de un modo similar al comando grep pero esta variante permite filtrar procesos segn un
criterio dado. La sintaxis bsica es la siguiente:
Como se puede ver, existen muchos criterios de filtrado para pgrep , permitiendo un control total en la
seleccin de criterio a la hora de mostrar procesos. Este comando es muy utilizado en scripts, donde el
filtrado y seleccin de procesos para su gestin se vuelve fundamental para no cometer errores en la
automatizacin de tareas. Un ejemplo sencillo de utilizacin de este comando es, por ejemplo, el de
filtrar los procesos sshd del usuario root. Esto se realiza del siguiente modo:
Finalizar procesos
Un programa puede llegar a quedarse totalmente sin respuesta o bien puede ocurrir que se desee
finalizar un programa que no debera estar arrancado. En estos casos el comando kill es la herramienta
a usar.
Este comando enva una seal (es un mtodo que Linux usa para comunicarse con los procesos) a un
proceso. La seal estndar cuando no se informa ninguna seal es SIGTERM, con el valor numrico 15
que solicita al programa en cuestin su finalizacin. El proceso no necesariamente obedece a la seal a
menos que la seal sea SIGKILL. En algunos casos la seal SIGHUP puede interpretarse como orden
para que el proceso lea nuevamente su(s) archivo(s) de conguracin.
Por ejemplo, para enviar la seal SIGTERM al proceso nmero 4902:
Existen otros comandos muy relacionados con kill para la eliminacin de procesos. El comando
pkill funciona del mismo modo que el comando pgrep visto anteriormente, salvo que la nica
diferencia es que el primero le enva la seal por defecto SIGTERM (se puede modificar con la
opcin -singal ) y el segundo solo muestra el PID del proceso por pantalla.
Otro de los comandos utilizados para eliminar procesos es killall . Este comando enva una seal a
todos los procesos en ejecucin que se relacionen con el patrn dado. Por defecto, al igual que pkill ,
enva la seal SIGTERM , siendo modificable por sus parmetros. La diferencia con pkill reside en
su posibilidad de seleccionar el criterio de eliminacin de procesos mediante expresiones regulares,
eliminacin de procesos de forma interactiva y verificacin de que todos los procesos se han eliminado
con xito. Su sintaxis bsica es la siguiente:
Las entradas del archivo /etc/crontab generalmente utilizan run-parts, cronloop, o una utilidad similar
que ejecuta todos los scripts ejecutables dentro de un directorio. La mayora de las distribuciones
incluyen tareas cron del sistema mensuales, diarias, semanales, y por cada hora, cada una de ellas
correspondiente a los scripts en un directorio llamado /etc/cron.interval, en el que interval es la palabra
asociada a la frecuencia de funcionamiento. Otras distribuciones colocan estos scripts en directorios
/etc/cron.d/interval.
Como alternativa, se puede crear un archivo de configuracin de la tarea cron y pasar el nombre del
archivo a crontab utilizando el parmetro file.
Si se crea la tarea programada y se enva a travs del parmetro file o editndolo con -e, el formato del
archivo cron es similar a lo descrito anteriormente. Se pueden establecer variables de entorno usando la
forma VARIABLE=valor o se puede especificar un comando precedido de cinco nmeros o comodines
que indican cuando se va a ejecutar la tarea. En una tarea cron de usuario no se especifica el nombre de
usuario utilizado para ejecutar el trabajo como en las tareas cron del sistema. Esta informacin est
derivada del propietario de la tarea cron.
Los archivos que almacenan las tareas de usuario se pueden localizar en los directorios
/var/spool/cron, /var/spool/cron/tabs o /var/spool/cron/crontabs. Cada archivo en este directorio es el
nombre del usuario a cuyo nombre se ejecuta la tarea. Por ejemplo, el archivo de tareas programadas
del usuario carlos ser nombrado como /var/spool/cron/tabs/carlos. No se puede editar directamente
este archivo en este directorio pero sin embargo, el uso de crontab permitir realizar cambios.
Permisos ejecutables
El acceso a la utilidad cron puede ser restringido de varias maneras.
Los permisos de los programas de cron y crontab pueden ser restringidos usando mecanismos estndar
en Linux. No todas las distribuciones se configuran de esta forma, pero en aquellas que lo hacen, los
usuarios deben ser capaces de programar los trabajos concron y aadirse al grupo apropiado.
Este grupo normalmente se le llama cron, pero se debe verificar el propietario del grupo y los permisos
en el directorio /usr/sbin/cron y /usr/bin/crontab para estar seguro. El archivo /etc/cron.allow contiene
una lista de usuarios a los que se le permite el acceso a cron.
Si este archivo est presente, solo los usuarios cuyos nombres aparecen en la lista pueden usar cron y al
resto se les deniega el acceso. Si el archivo no est presente cualquiera podr usar cron asumiendo que
el acceso no est restringido por permisos ejecutables o lista de usuarios no permitidos.
La lista a los que no se les permite el acceso est en el archivo /etc/cron.deny. Si este fichero est
presente a cualquier usuario cuyo nombre aparezca en la lista tendr el acceso denegado a cron, pero el
resto podr utilizarlo, asumiendo que los permisos ejecutables y los usuarios de la lista permitida no
tienen el acceso restringido.
Gestin de usuarios
Los usuarios del sistema es uno de los aspectos fundamentales de GNU/Linux. Debido a que
GNU/Linux es multiusuario, la gestin de estos en el sistema se torna sumamente importante en el
aspecto tanto de la propia gestin como de la seguridad del sistema. Podemos identificar 3 perfiles de
usuarios en un sistema Linux:
Usuario root: Tambin llamado superusuario o administrador. Es la nica cuenta de usuario que
tiene privilegios sobre todo el sistema, contando con el acceso a todos los ficheros y directorios
con independencia del propietario o permisos. Adems, puede controlar la administracin de
cuentas de usuario, ejecutar tareas de mantenimiento, detener el sistema, instalar software y
tareas ms avanzadas como reconfigurar el Kernel, compilar e instalar controladores, etc.
Usuarios especiales: Tambin llamadas cuentas del sistema. Estas cuentas tienen privilegios
para el servicio o programa al que estn asociados, siendo esto as para aumentar la seguridad
del sistema. La mayora de estas cuentas no tienen contrasea debido a que no estn pensadas
para iniciar sesin con ellas, y su creacin o gestin dependen del servicio. As, estas cuentas se
crean o destruyen dependiendo si el paquete est o no instalado en el sistema. Un ejemplo de
estas cuentas pueden ser bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache,
etc.
Usuarios normales: Estas son las cuentas de los usuarios personales. Cada usuario dispone de un
directorio de trabajo que se ubica generalmente en /home. Estas cuentas de usuario tienen todos
los privilegios solo en su espacio de trabajo, por tanto pueden personalizar su entorno
modificando ficheros relacionados con el inicio de sesin.
Linux tiene un sistema de identificacin de usuarios, llamado UID, as tambin para los grupos del
sistema llamado GID. El usuario root siempre tiene el UID cero, la gestin de cuentas del sistema suele
tener una reserva de identificaciones que van del 1 al 100, y finalmente los usuarios normales que
suelen comenzar a partir del 500 en adelante. Todos estos valores se pueden modificar en el fichero
/etc/login.defs
Todos los usuarios almacenan la definicin de sus cuentas en el fichero /etc/passwd. Este fichero tiene
un formato concreto, dividido en 7 campos separados por el carcter dos puntos :. Estos campos
determinan el nombre del usuario, la contrasea, el UID del usuario, el GID del usuario, comentarios,
el directorio de trabajo y la shell que utiliza.
La contrasea del usuario, ya de forma predeterminada, se encuentra, de forma encriptada, en el fichero
/etc/shadow. En este fichero, adems de esto, se encuentra otro tipo de informacin relacionada con la
administracin avanzada de usuarios: caducidad de la cuenta, cambios de contrasea, etc.
Para cambiar de usuario la forma general es con el comando su. Esta aplicacin tambin nos permite la
ejecucin de comandos con un usuario diferente al nuestro. Si escribimos solamente el comando su,
cambiaremos de forma automtica al usuario root.
El uso del guin intermedio en el comando anterior es importante como elemento de seguridad. La
utilizacin de su - permite al nuevo usuario o comando ejecutado tomar sus variables de entorno,
debido a que la opcin de guin crea una nueva shell para el usuario. Para la ejecucin de comandos
como otros usuarios existe otra herramienta que se ha convertido en un estndar de administracin
llamada sudo.
La mayora de distribuciones de escritorio (como el caso de Ubuntu) se basa en un estndar de
administracin que indica que el sistema debe tener usuarios normales logueados en su uso habitual, y
para tareas puntuales de administracin usar al usuario root. El uso del comando su tiene una
desventaja o problema de seguridad debido a que, para ejecutar un comando de administracin, se debe
escribir la clave de root en la terminal, y aplicaciones como los keyloggers pueden obtenerla. El
comando sudo fue creado precisamente para evitar esta situacin, ya que la aplicacin permite elevar
los permisos del usuario a root estableciendo la clave del propio usuario para tareas concretas.
Sudo tiene un fichero de administracin y unos comandos para su gestin. El fichero /etc/sudoers tiene
informacin de los usuarios permitidos por la aplicacin, adems de que comando concreto pueden
ejecutar.
Un ejemplo del fichero es el siguiente:
Instalacin de Software
La gestin de software de Linux es una de las bazas ms importante de las que usar software libre.
Como su propio indica, al ser libre los sistemas Linux utilizan los llamados repositorios de paquetera
para nutrirse de aplicaciones. Estos repositorios son servidores web esparcidos por internet donde
cuentan con el almacenamiento de todos los paquetes de las distribuciones. De este modo, cualquier
usuario de Linux se podr descargar de una forma cmoda y sencilla cualquier aplicacin, sin tener que
buscar por pginas web dicho software.
El sistema cuenta con varias formas de poder obtener este software. A nivel grfico en Ubuntu
contamos con la herramienta centro de software, y en otros sistemas est la famosa aplicacin
Synaptics para la gestin. Nosotros para este curso vamos a ver la herramienta utilizada en sistemas
Debian para la gestin de paquetera llamada apt.
El comando apt posee las siguientes caractersticas:
Facilita la actualizacin del sistema de una forma sencilla.
Realiza la gestin inteligente de las dependencias de la paquetera (instalacin de un paquete y
sus dependencias, eliminacin, etc...)
Puede realizar consultas a diferentes repositorios, siendo muy sencillo buscar una aplicacin o
servicio.
Ofrece servicios de eliminacin de paquetes obsoletos o no usados.
Los ficheros de configuracin se encuentran principalmente en el directorio /etc/apt .
A continuacin se indica para qu sirve cada uno:
/etc/apt/apt.conf: Fichero de configuracin global
/etc/apt/sources.list: Fichero de repositorios
/var/cache/apt/: Directorio de cach
El primer comando se utiliza principalmente para realizar bsquedas de paquetera y mostrar
estadsticas de la cach, este comando es apt-cache:
search regularexp : Hace una bsqueda en el repositorio de un paquete. Puede hacer bsquedas de
expresiones regulares.
dist-upgrade: Realiza una actualizacin total del sistema, resolviendo conflictos que podran romper
dependencias.
source: Se descarga las fuentes el paquete deb. Se requiere el repositorio deb-src y el paquete dpkgdev.
clean: Borra totalmente el repositorio local que contiene los ficheros de paquetes descargados.
autoclean: Similar a clean , con la diferencia que solo borra los paquetes que no se pueden descargar
o son inservibles.
autoremove: Sirve para eliminar paquetes que han sido instalados automticamente como
dependencias y ya no estn en uso (por desinstalacin del paquete).
Sus posibles opciones son:
-d: Solamente se descarga el paquete.
-m: No tiene en cuenta los paquetes que no se hayan podido descargar o despus de la descarga estn
daados.
-q: Produce una salida silenciosa, puede ser un nivel mas silenciosa si se aade una segunda q.
Crditos
Septiembre 2015
PDF Realizado con LibreOffice 5.0