lunes, 28 de octubre de 2013

Integrar el antivirus Avast en Nemo

Tener instalado un antivirus en Linux en realidad solo sirve para verificar que no tienes virus que vayan a afectar a Windows: , para no enviarlos a tus amigos que usan ese sistema, o compartirlos a través de un pendrive, o afectar a tu pc si en él tienes ambos sistemas operativos, Windows y Linux , o a una red casera con Linux en un pc  y Windows en otro. Si solo usas Linux y nada mas que Linux, y no compartes archivos con nadie, no te sirve de mucho tener un antivirus.

En un documento que lei hace tiempo, y que lamentablemente ya no esta disponible en la dirección en la que lo encontré (  http://www.iberprensa.com/todolinux/articulos/TL89_reporvirus.pdf  )  (*) aclaraba mucho sobre virus en general y en Linux en particular.   (*) Ahora se puede descargar desde: http://foro.ubuntu-guia.com/file/n4034652/TL89_reporvirus.pdf
Lo mas claro que dice ese documento:
“Mi experiencia como administrador: En más de diez años que llevo administrando Linux, con instalaciones en cientos de máquinas de centros de cálculo, laboratorios de alumnos, empresas, etc, nunca me ha “entrado” un virus, nunca he conocido a alguien que le haya ocurrido, nunca he conocido a alguien que haya conocido a alguien que le haya ocurrido. Conozco a más gente que ha visto al monstruo del Lago Ness a que haya visto virus para Linux.”
Se puede decir mas alto, pero no mas claro.

Instalar Avast Antivirus:

El antivirus Avast se pueden descargar desde la siguiente dirección, e instalarlo con un doble click sobre el paquete.deb ( hay que tener instalado el programa gdebi, que normalmente viene por defecto ):  http://avast-linux-home-edition.uptodown.com/ubuntu/descargar
  ( al ejecutarlo por primera vez te pide una contraseña, y para conseguirla te reenvia a una página desde la que te tienes que inscribir con tu dirección de correo, a la que luego te mandan la contraseña).

Conviene ejecutar el programa gráfico y asegurarse de que la base de datos de virus esta actualizada: En Avast->Tools->Preferencias->pestaña Update, se puede configurar como hacer la actualización de la base de datos: de forma manual desde el botón correspondiente de la interfaz gráfica, de forma automática cuando se inicia la interfaz gráfica, o solo cuando haya actualizaciones nuevas.

También se puede actualizar la base de datos de virus de Avast ejecutando en la terminal el comando: avast-update

Si tras una actualización de la base de datos no volviera a abrirse el programa, como me paso a mi una vez, ( pero solo una vez, ya que tras hacer lo que pongo a continuación ya se arregló el problema ) debemos realizar lo siguiente para solucionar el tema: 

1. Abriremos la terminal en modo root: desde Alt+F2 con el comando gksu gnome-terminal , o desde la terminal de usuario, con sudo -i
2. Tecleamos lo siguiente:
echo 128000000 > /proc/sys/kernel/shmmax
3. Luego abrimos el archivo: rcS , con gedit tecleando lo siguiente:
gedit /etc/init.d/rcS
4. Dentro de este archivo incluiremos la siguiente linea:
sysctl -w kernel.shmmax=128000000

Debe quedar así:
#! /bin/sh
# rcS
# Call all S??* scripts in /etc/rcS.d/ in numerical/alphabetical order
sysctl -w kernel.shmmax=128000000
exec /etc/init.d/rc S

5. Guardamos el archivo rcS y salimos de gedit.
7. Cerramos la terminal de root (recordar que se debe salir de la terminal de root con el comando exit )
8. Reiniciamos el PC. Luego abrimos Avast, actualizamos la base de datos de virus, y ya está.

---------------------------------------

Integrar Avast antivirus en Nemo:

Integrar Avast en Nemo significa que podamos usar el antivirus desde el menú contextual de Nemo, sin necesidad de abrir la interfaz gráfica de Avast.  ( Si se utiliza una distro que en vez del administrador de archivos Nemo se use Nautilus, ver: Integrar el antivirus avast en Nautilus  )

Para integrar Avast en Nemo crearemos dos nuevas acciones en el menú contextual de Nemo, una para mantener actualizada la base de datos de virus de Avast, y la otra para analizar con Avast uno o varios archivos y/o directorios, según lo explicado en el tema  Añadir acciones al menú contextual de Nemo,

1) Para integrar la actualización de la base de datos de virus en Nemo, crearemos una nueva acción actualizar-avast.nemo_action , que nos sirva para desde el menú contextual de Nemo actualizar la base de datos de virus de Avast, con el siguiente texto:

[Nemo Action]
Active=true
Name=Actualizar Antivirus Avast
Comment=Actualizar base de datos de Antivirus Avast
Exec=xterm avast-update
Icon-Name=
Selection=Any
Extensions=any

Con esto nos aparece en el menú contextual de Nemo, al seleccionar uno o varios archivos y/o directorios,  una nueva acción con la que podemos actualizar la base de datos de virus de Avast. Tras un breve espacio de tiempo en la ventana de una terminal xterm, totalmente en negro -sin prompt - , 


nos aparece un mensaje similar al de la imagen siguiente:


Y finalmente, tras otro periodo de tiempo, cuando la base de datos se actualiza, la terminal se cierra. Si la base de datos de virus esta actualizada, la terminal xterm se abre y cierra sin llegar a poder verse ningún mensaje.

2-) Para integrar el análisis de virus con Avast en Nemo crearemos una nueva acción, analizar_con_antivirus_avast.nemo_action ,  en el menú contextual de Nemo, con el siguiente texto:

[Nemo Action]
Active=true
Name=Antivirus
Comment=antivirus
Exec=xterm -hold -e avast -p3 %F
Icon-Name=
Selection=Any
Extensions=any

La opción -p3 indica que Avast analiza el archivo seleccionado, y si está infectado lo intenta reparar. Si queremos que Avast en vez de intentar reparar el archivo, elimine los archivos infectados, debemos poner la opción -p1  (  opción -p3 = analizar y reparar ; opción -p1 = analizar y eliminar ) 

Con esto nos aparece en el menú contextual de Nemo, al seleccionar uno o varios archivos y/o directorios,   una nueva acción con la que podemos analizar en busca de virus en uno o varios archivos y/o directorios. Tras un breve espacio de tiempo en la ventana de una terminal xterm, totalmente en negro - sin prompt- similar a la vista anteriormente ,  nos aparece un mensaje similar al de la imagen siguiente:




De esta forma aparecen en Nemo dos nuevas acciones en el menú contextual al seleccionar uno o varios archivos y/o directorios.


Aconsejo primero usar la acción de Actualizar la base de datos de virus, y luego la acción de Analizar el o los archivos o directorios en busca de virus.

-------------------------------------------------


martes, 22 de octubre de 2013

Ejemplos de nuevas acciones en el menú contextual de Nemo

En la ventana del menú contextual del administrador de archivos Nemo aparecen por defecto una serie de opciones predeterminadas, al seleccionar un directorio o archivo , que varían según el tipo de archivo o directorio seleccionado. A partir de Cinnamon 1.8, podemos añadir nuevas “acciones” en el menú contextual de Nemo, siguiendo los pasos indicados en el tema: Añadir acciones al menú contextual de Nemo

En este tema expongo, como ejemplo,  algunas de las nuevas acciones que he añadido al menú contextual de Nemo en mi sistema Mint Cinnamon.

1-Editar archivos de imagen con Pinta:

Podemos añadir una opción para editar los archivos de imagen con un editor sencillo con la acción Editar_Imagen.nemo_action para que uno, o varios,  archivos de imagen ,jpg, o .png se abran con el programa de edición de imágenes Pinta:

[Nemo Action]
Active=true
Name=Editar con Pinta
Comment=Edición sencilla de imágenes con Pinta
Exec=pinta %F
Icon-Name=pinta
Selection=Any
Extensions=jpg;png;



Si en vez de Pinta tenemos otro editor sencillo de imágenes  favorito podemos crear una acción similar, solamente poniendo en los campos Exec e Icon-name el nombre del ejecutable de dicho editor, y cambiando por el nombre adecuado en los campos Name y Comment.

----------------------------------------------------

2-Adjuntar archivos a Sylpheed:

En Nemo por defecto no existe la opción "Enviar a" que nos permitia en Nautilus enviar un archivo bien por correo como archivo adjunto, o bien por bluetooth; tampoco podemos añadirsela instalado un paquete similar a nautilus-sendto, ya que no existe el paquete nemo-sendto, por lo que he optado por crear dos acciones nuevas para el menú contextual de Nemo: una para enviar archivos como adjuntos a traves del programa que uso como correo electrónico (Sylpheed ) , y otra acción para enviar archivos a través de bluetooth.

En este ejemplo se ha añadido una opción (-- attach %F)  al ejecutable, de forma que desde Nemo elegimos uno o varios archivos con una extensión cualquiera, y con la acción Adjuntar_a_Correo.nemo_action se abre el programa Sylpheed en la ventana de enviar, con los archivos seleccionados adjuntados.

[Nemo Action]
Active=true
Name=Adjuntar a Correo
Comment=Los archivos seleccionados se adjuntan en la ventana de Enviar Correo de Sylpheed
Exec=sylpheed --attach "%F"      
Icon-Name=sylpheed
Selection=Any
Extensions=any

----------------------------------------------

3-Enviar archivos de imágenes y sonido por bluetooth:

En este ejemplo, hemos instalado primero el paquete blueman y hemos puesto en el campo Exec el comando blueman-sendto %F ; de forma que desde Nemo elegimos uno o varios archivos de imagen (.jpg .png .jpeg ) o de audio (.mp3 .ogg ), y con la acción Enviar_bluetooth.nemo_action se abre la ventana de blueman desde la que seleccionamos el dispositivo bluetooh al que se le van a enviar los archivos seleccionados desde Nemo.

[Nemo Action]
Active=true
Name=Enviar por bluetooth
Comment=Enviar archivos de imagen y/o sonido por bluetooth
Exec=blueman-sendto %F
Icon-Name=bluetooth
Selection=Any
Extensions=jpg;png;jpeg;mp3;ogg;


---------------------------------------------

4-Oir música con Audacious:

Audacious es mi reproductor de archivos de música favorito, por la  simplicidad de su interfaz gráfica. Con la siguiente acción, Reproducir_música.nemo_action, añadida al menú contextual de Nemo se puede elegir reproducir con Audacious, o un solo archivo, o varios, o uno o varios directorios con archivos de música, o una mezcla de ambas cosas. Para que al abrir Audacious se abra la lista de reproducción debe de estar seleccionada en Audacious->Ver->Mostrar el editor de lista de reproducción.

[Nemo Action]
Active=true
Name=Reproducir Música
Comment=reproducir archivos y/o directorios de música
Exec=audacious %F
Icon-Name=audacious
Selection=Any
Extensions=dir;mp3;ogg;

Si en vez de Audacious tenemos otro reproductor de música favorito podemos crear una acción similar, solamente poniendo en los campos Exec e Icon-name el nombre del ejecutable de dicho reproductor.

---------------------------------------------

5-Reiniciar Nemo:

Aveces debemos reiniciar Nemo para que algún cambio en él se lleve a cabo, esto normalmente se puede hacer saliendo de la sesión gráfica y volviendo a entrar en ella, o bien ejecutando un script reiniciar-nemo.sh :

#!/bin/bash
# Script para reiniciar nemo
nemo -q           ( salimos del administrador de archivos)
sleep 4s            ( esperamos 4 segundos )
nemo                ( volvemos a ejecutar Nemo)

Una vez creado el script podemos añadir una acción, Reiniciar_Nemo.nemo_action, en el menú contextual de Nemo, para poderlo ejecutar desde cualquier dirección en la que estemos: Si el script lo guardamos en la carpeta de las acciones de Nemo ( /home/nicasio/.local/share/nemo/actions ) , en el campo Exec pondremos Exec=<reiniciar-nemo.sh> ; si el script esta en otro directorio, hay que poner la dirección completa en donde este, por ejemplo: Exec=/home/usuario/.local/share/nemo/actions/reiniciar-nemo.sh

[Nemo Action]
Active=true
Name=Reiniciar Nemo
Comment=Reiniciar Nemo
Exec=<reiniciar-nemo.sh>       ( Si el script está en la carpeta de las acciones de Nemo )
Icon-Name=nemo
Selection=Any
Extensions=any

o

[Nemo Action]
Active=true
Name=Reiniciar Nemo
Comment=Reiniciar Nemo
Exec=/home/usuario/.local/share/nemo/actions/reiniciar-nemo.sh  ( Si está en otro directorio )
Icon-Name=nemo
Selection=Any
Extensions=any

---------------------------------------------

6- Descomprimir archivos .rar:

En Nemo hay una acción por defecto para poder elegir uno o varios archivos y directorios, y crear un archivo comprimido, y también otra acción para elegir un archivo comprimido y abrirlo con File-roller. Con la acción siguiente - descomprimir-rar.nemo_action - se puede elegir un archivo comprimido en formato .rar y descomprimirlo automáticamente en el Escritorio del usuario.

[Nemo Action]
Active=true
Name=Descomprimir
Comment=Descomprimir en el Escritorio
Exec=unrar x %F /home/usuario/Escritorio
Icon-Name=file-roller
Selection=S
Extensions=rar;

Hay que tener instalados los paquetes rar , unrar, y unrar-free



---------------------------------------------

7- Descomprimir archivos .zip:

De forma similar a la anterior podemos crear una acción - descomprimir-zip.nemo_action - que nos descomprima en el Escritorio del usuario el contenido de un archivo .zip seleccionado desde el menú contextual de Nemo; con ello ya tendremos las dos acciones para descomprimir los dos tipos de archivos comprimidos mas frecuentes.

[Nemo Action]
Active=true
Name=Descomprimir
Comment=Descomprimir en Escritorio
Exec=unzip %F -d /home/nicasio/Escritorio
Icon-Name=file-roller
Selection=S
Extensions=zip;

Hay que tener instalados los paquetes zip y unzip

---------------------------------------------

8-Descomprimir otro tipo de archivos comprimidos:

En http://doutdex.wordpress.com/2008/04/28/comprimir-y-descomprimir-rargzipziptartargzbz2-lha-zoo-en-linux-comando-consola/  podemos ver los comandos que se podrían usar para crear acciones en el menú contextual, para descomprimir otro tipo de archivos comprimidos, con otras extensiones; para ello habría que modificar el comando en Exec=  , y el nombre de la extensión en Extensions=

Por ejemplo, con esta acción - descomprimir-tar.nemo_action - podemos descomprimir un archivo .tar en la carpeta del usuario.

[Nemo Action]
Active=true
Name=Descomprimir
Comment=Descomprimir en la carpeta del Usuario
Exec=tar xvf %F
Icon-Name=file-roller
Selection=S
Extensions=tar;

---------------------------------------------
Editado/añadido:
Para que una vez creada una nueva acción de Nemo, aparezca en el menú contextual, el archivo de la acción debe de tener permisos de ejecución, como se ve en la siguiente imagen:



y se debe reiniciar Nemo: Reiniciar el administrador de archivos

viernes, 18 de octubre de 2013

Añadir acciones al menú contextual de Nemo

El menú contextual en un administrador de archivos es la ventana que se abre cuando hacemos clic con el botón secundario del ratón al seleccionar un directorio o archivo y que varia según el tipo de archivo o directorio seleccionado. Cuando abrimos el menú contextual pinchando con el botón derecho del ratón (el izquierdo si lo tienes configurado para zurdos) obtenemos una ventana en la que se encuentran multitud de opciones/acciones como crear una carpeta o acceso directo, comprimir un archivo, copiar, mover, eliminar , ejecutar scripts, abrir con...etc, y todo esto podremos hacerlo directamente y sin tener que abrir con antelación el programa implicado en la acción seleccionada.

Tanto en Nautilus como en Nemo aparecen por defecto una serie de opciones que realizan acciones predeterminadas; podemos añadir nuevas acciones al menú contextual.

En Nautilus se pueden añadir acciones al menú contextual instalando desde Synaptic el paquete nautilus-actions, y ejecutando la interfaz gráfica de dicho programa: /usr/bin/nautilus-actions-config-tool  (ver mas detalles en  añadir acciones al menú contextual/)

Sintaxis general de una nueva acción en el menú contextual en Nemo:

En Nemo no existe el paquete nemo-actions, pero a partir de Cinnamon 1.8, podemos añadir “acciones” en el menú contextual de Nemo si las añadimos al directorio: /usr/share/nemo/actions (Si se guardan ahí estarán disponibles para todos los usuarios) o al directorio /home/usuario/.local/share/nemo/actions ( en este caso estarán disponibles solo para ese usuario; con lo que se puede hacer que distintos usuarios tengan distintas acciones añadidas en el menú contextual de Nemo). Para ello creamos en esos directorios un archivo de texto con el nombre general: extensión.nemo_action , y el contenido con la sintaxis que se explica a continuación.

Vamos a ver un resumen de la sintaxis de una nueva acción en el menú contextual en Nemo, con un ejemplo, la acción Abrir_Videolan.nemo_action, como explicación y ayuda ( en verde he puesto cada uno de los campos que forman la sintaxis de este archivo, y a continuación,entre paréntesis una pequeña explicación)::

[Nemo Action]
Active=true
Name=Abrir  Videolan  (sera el nombre del menú contextual que aparecerá en Nemo)
Comment=abrir videolan  ( Comentario que aparece en la barra de estado de Nemo; podemos poner lo que queramos  )
Exec=vlc        ( ejecutable del programa que queremos que se ejecute; en este caso Videolan)
Icon-Name= vlc ( aparece el icono de videolan; si no ponemos nada no aparece ningún icono)
Selection=S    ( S si queremos usar la acción con un solo archivo, o M con múltiples archivos; o Any  - con la A en mayúscula - si queremos que se ejecute tanto si seleccionamos uno o múltiples)
Extensions=avi;mpg;flv;mp4;mp3;ogg;  ( extensiones de los archivos sobre los que aparecerá la nueva acción; si se quiere que se ejecute la acción con un archivo con una extensión cualquiera hay que poner Extensions=any - en minúsculas )

Con lo que desde Nemo seleccionando un archivo que tenga una de las extensiones indicadas ( o cualquier archivo si hemos puesto Extensions=any ) aparece una nueva acción contextual con la que se abre el programa, pero no se reproduce el archivo que se seleccionó.

Si queremos que además de iniciarse el programa se inicie la reproducción de un archivo de los que tienen las extensiones seleccionadas, en la linea Exec habrá que poner: Exec=vlc %F ; en la línea Name= Reproducir con Videolan , y en Comment= reproducir archivo multimedia con Videolan

Para que esto funcione correctamente el nombre del archivo seleccionado no debe de tener espacios en él; por ejemplo con un archivo que se llame let it be.mp3 no funcionara, para que funcione se debe llamar por ejemplo let_it_be.mp3




Para ver mas posibles opciones ver el contenido del siguiente archivo ( está en ingles ): gedit /usr/share/nemo/actions/sample.nemo_action  (*)

(*) Aquí una traducción mas o menos libre de ese archivo:

[ Nemo Acción]

Campo Active:
La opción Active es para activar (true)  o desactivar (false) la acción/extensión. Si no se indica se asume que está activa, está opción está más que nada para cuando se tiene problemas con Nemo y se cree que pudiese ser por causa de alguna extensión.

Ejemplo:
Active=false  ( o true )

Campo Name:
La opción Name es el nombre que se mostrará en el menú contextual y es una opción obligatoria. Se puede usar el parámetro %N para que muestre el nombre del archivo que se tenga seleccionado, pero no funciona si en el campo Selection se ha puesto múltiple (M), None o Any, en esos casos mostrará la opción %N. Si se seleccionan múltiples archivos , entonces se utilizará arbitrariamente el nombre de un archivo seleccionado.

Ejemplo:
Name=Adjuntar para enviar por correo

Campo Comment:
Comentario que aparece en la barra de estado de Nemo. El parámetro % N se puede utilizar como con el campo Nombre , aplicándose las mismas reglas.

Ejemplo:
Comment=los archivos seleccionados aparecerán en la ventana de escribir texto del correo, del programa de correo, como archivos adjuntos

Campo Exec:
Otro campo obligatorio, en este se especifica el comando a ejecutar y el/los parámetro/s que se le pasará, el/los cual/es puede/n ser %F (para una lista de archivos) o %U (se le pasará la lista URI de la selección). Encierre entre < > para ejecutar un archivo ejecutable ( vg myaction.py )que se encuentra en la carpeta de acciones ( /home/usuario/.local/share/nemo/actions). Si el ejecutable es un script que no esta en la carpeta de acciones se debe poner la dirección completa.

Ejemplos:
Exec= <myaction.py -r -g %F>
Exec=/home/usuario/Scripts/reiniciar-nemo.sh
Exec=vlc %F
Exec=sylpheed --attach %F

Campo Icon-Name:
Nombre del icono a utilizar en el menú - debe ser un tema de nombre del icono.

Ejemplo:
Icon-Name =folder

Gtk Stock ID a utilizar para el icono. Tenga en cuenta que si ambos Icono-Name y Stock-Id están definidos Stock-Id tiene prioridad.

Ejemplo:
Stock-Id = gtk -cdrom

Puede dejarse en blanco, Icon-Name=        , y de esta forma no aparecerá ningún icono en la acción añadida al menú contextual

Campo Selection:
El tipo de selección para la cual debe aparecer la acción, acepta valores de solo un archivo (S), múltiples (M), cualquiera (Any), (NotNone) ¿?, o ninguno (None) - que es cuando se hace click en un espacio vacío del navegador- ; o un numero que defina cuántos archivos deben estar seleccionados para que aparezca la acción. Si no se pone nada, el valor predeterminado es S

Ejemplos:
Selection=S
Selection=M
Selection=Any

Campo Extensions:
Esta opción es obligatoria.Hay que poner la extensión del archivo, o de los archivos, para la cual debe estar activa la acción. No es sensible a mayúsculas o minúsculas: es lo mismo poner jpg que JPG, jPg, jpg, etc... Se ponen las extensiones, separadas por ; y acabando también en ;
Use dir para selección de un directorio y none para archivos sin extensión
Use any seguido de ; para cualquier tipo de extensión de archivos

Ejemplos:
Extensions=any;
Extensions=mp3;ogg;
Extensions=dir;
Extensions=dir;mp3;ogg;

Para que una vez creada una nueva acción de Nemo, aparezca en el menú contextual, el archivo de la acción debe de tener permisos de ejecución, como se ve en la siguiente imagen


y se debe reiniciar Nemo: Reiniciar el administrador de archivos

En este tema hay mas ejemplos de Acciones en el menú contextual de Nemo:  Ejemplos de nuevas acciones en el menú contextual de Nemo
-------------------------------------------------------------------

jueves, 10 de octubre de 2013

Viajando por los directorios con la terminal

El uso de la terminal es muchas veces muy útil para ejecutar comandos, o para abrir/editar archivos, cambiar permisos de archivos, etc y para ello es necesario saber como ir viajando a través de ella por el árbol de directorios de todo el sistema. Para ello debemos saber: a) si estamos en una terminal de usuario o en una con permisos de root b) como pasar de una con permisos de usuario a una con permisos de root c) saber la diferencia entre la dirección relativa y la dirección absoluta de un directorio d) comandos importantes que ayudan a viajar con la terminal por el árbol de directorios e) viajar desde la terminal por el árbol de directorios ( Puede ser interesante leer el tema Árbol de directorios) f) solucionar algunos errores a la hora de escribir la dirección de un directorio.

A) Saber si estamos en una terminal de usuario, o en una terminal de root:

Terminal con permisos de usuario: Cuando abrimos la terminal de usuario (El comando para abrir la terminal desde alt+f2 es: gnome-terminal) , la línea que siempre se abre en nuestra terminal se denomina prompt ; tiene el siguiente aspecto: nicasio@mint15:~$
Está compuesta por:
- nombre de usuario, en este ejemplo: nicasio
- símbolo @
- nombre del equipo, en este ejemplo: mint15
- dos puntos :
- símbolo ~ , que equivale a la propia carpeta personal del usuario en cuestión: en este ejemplo, /home/nicasio
( Si necesitamos escribir el símbolo ~ se obtiene con la combinación de teclas AltGr+4 )
- símbolo del dolar $

-- Desde el administrador de archivos ( tanto si usamos Nautilus o Nemo ) , estando en un directorio cualquiera, podemos con el botón derecho del ratón elegir la opción "abrir en la terminal", con lo que se abrirá la terminal, no en el directorio del usuario, sino en el directorio desde el que se seleccionó esa opción. Por ejemplo, si hacemos lo indicado desde el directorio ~/Musica en la terminal aparece el prompt: nicasio@mint15 ~/Musica $

Terminal con permisos de root: Si cambiamos a una terminal de root (como se indica mas abajo), en el prompt solo apareceran tres componentes:  mint15 ~#
Es decir solo aparecen:
- nombre del equipo: mint15,
- símbolo ~  que ahora equivale al directorio /root
- el símbolo $ cambiará a #


B) Como pasar de una terminal de usuario a una de root, y viceversa:

Pasar de una terminal con permisos de usuario a tener permisos de root: el comando que se tiene que escribir es: sudo -i
Al darle a la tecla intro la terminal pide la contraseña, la escribes, pero no se verá lo que escribes, ni asteriscos ni nada de nada, sin embargo está realmente escribiendo cuando termines de escribir la contraseña le das de nuevo a la tecla "intro" y si la contraseña es correcta verás que en el prompt el signo $ cambia a  # . Eso quiere decir que tienes privilegios de root.

Lo normal, es acceder a la terminal como root solo para hacer algo en concreto que requiera los permisos de root, y luego volver a la terminal con permisos de usuario, para cerrarla a continuación.

Pasar de una terminal con permisos de root a tener permisos de usuario: Es muy importante no cerrar la terminal como root, porque con este comando te quedas como root sin limite de tiempo, así que antes de cerrar la terminal debes escribir el comando  exit y darle a la tecla intro, verás entonces que en el prompt el signo # vuelve a convertirse en $, es decir hemos pasado de la terminal con permisos de root de nuevo a la terminal con permisos de usuario.

Aquí vemos lo que irá apareciendo en la terminal según vamos haciendo lo arriba indicado:  en verde se ve como se pasa de una terminal con permisos de usuario ( nicasio@mint15 ~ $ ) a una con permisos de root (mint15 ~# ) ; en azul se ve como se pasa de una terminal de root ( mint15 ~# ) a una de usuario ( nicasio@mint15 ~ $ ) .
nicasio@mint15 ~ $ sudo -i
[sudo] password for nicasio:
mint15 ~# exit
logout
nicasio@mint15 ~ $

C) Dirección relativa y absoluta de un directorio:

Para viajar por el árbol de directorios con la terminal debemos indicar la dirección en la que esta el directorio al que queremos llegar. Hay dos tipos de direcciones: la completa o absoluta, y la relativa.

- Dirección completa o absoluta: Las rutas absolutas se caracterizan por empezar siempre desde la raíz, es decir desde  /, y contener todos los directorios que hay desde la raíz hasta el directorio que queremos indicar, sólo es posible escribir de una forma una ruta absoluta. Se puede usar se este donde se este, tanto si abre la terminal desde el directorio del usuario, o si se abre desde cualquier otro, y con ella se puede llegar a cualquier directorio, tanto si es un subdirectorio de /home/usuario , como si es cualquier otro directorio, tanto si es un directorio o subdirectorio del disco duro interno en el que esta instalado el sistema, como si es de un pendrive, tarjeta de memoria, disco duro externo, etc que se montan en /media .
Otra cosa es que una vez que se esta en el directorio que deseamos, para ejecutar en él ciertos comandos, tendremos que o bien anteponer sudo delante del comando para que se ejecute con permisos de root, o bien ejecutar sudo -i para pasar a una terminal con permisos de root, como se explicó anteriormente..
Usar la dirección absoluta nunca falla, salvo que no se halla escrito correctamente, y para ello hay que tener en cuenta que cualquier sistema GNU / Linux distingue entre mayúsculas y minúsculas, y palabras con o sin acento. No es lo mismo musica, música, Música, o  Musica. Éste último es el nombre de un directorio de mi carpeta de usuario.

Ejemplos de direcciones absolutas son por ejemplo:
/home/nicasio/Musica/Beatles
/var/cache/apt/archives
/media/nicasio/mi_disco/fotos

- Dirección relativa: En cambio las rutas relativas nunca empiezan por la raiz  / y puede haber varias rutas relativas para el mismo directorio que queremos indicar. Esto es así por que la ruta relativa depende del directorio en el que se esté trabajando, ya que señalan la ubicación de un archivo o  directorio a partir de la posición actual en el árbol de directorios. Es una ruta que parte del directorio actual como origen. Esta ruta sólo es válida desde el directorio que en se esté en un momento concreto , es decir es relativa a ese directorio. Mas abajo se ven ejemplos de direcciones relativas.

Si abrimos la terminal en un directorio-a , desde el administrador de archivos, como se explico anteriormente, y el directorio-b al que queremos llegar es un subdirectorio del directorio-a, podemos usar la dirección relativa. Si el directorio-b no es un subdirectorio del directorio-a , deberemos usar la dirección absoluta.

D) Comandos que nos ayudan a viajar por el árbol de directorios: comandos: ls, pwd, whoami, cd

- Comando ls ( hacer un LiStado ) : desde la terminal el comando ls que te saca un listado con el nombre de los subdirectorios del directorio desde el que se ejecuta. Muy útil para saber que subdirectorios hay en el directorio en el que se está en ese momento en la terminal. Con el comando ls se nos muestra un listado de los subdirectorios y archivos que contiene el directorio; si solo queremos ver los subdirectorios usamos:  ls -d */
- Comando pwd (de las siglas en inglés print working directory = imprimir directorio de trabajo): nos indica el directorio en el que nos encontramos en la terminal; útil si nos hemos perdido y no sabemos donde estamos en el viaje a lo largo del árbol de directorios.
- Comando whoami ( who am I ? = ¿ quién soy yo ? ): nos indica el nombre de usuario
- Comando cd ( change directory = cambiar directorio ): sirve para cambiar de directorio; es el comando con el que propiamente hacemos el viaje por el árbol de directorios.


E) Viajar a través de la terminal por el árbol de directorios:

Estando en un directorio cualquiera podemos ir a otro mediante el comando cd, usando con la sintaxis: cd dirección_del_directorio , pudiéndose usar la dirección absoluta o la relativa.
Por ejemplo, si estamos en ~ y queremos ir al subdirectorio Musica, podemos escribir: cd Musica (dirección relativa ) o cd /home/nicasio/Musica (dirección absoluta )
Otro ejemplo, si estamos en el directorio /opt y queremos ir al mismo directorio, esta vez solo podremos hacerlo usando la dirección absoluta, ya que Musica no es un subdirectorio de /opt; escribimos por tanto: cd /home/nicasio/Musica
Si estamos en el directorio /opt y queremos ir al subdirectorio /opt/spotify/spotify-client/Icons, podemos usar la dirección absoluta: cd /opt/spotify/spotify-client/Icons , o la dirección relativa: cd spotify/spotify-client/Icons

Para volver desde un directorio cualquiera al directorio ~ ( carpeta personal del usuario ), basta con escribir el comando cd  , sin necesidad de añadir ninguna dirección.

F) Solucionar algunos errores a la hora de escribir la dirección de un directorio:

= Errores de ortografía: Hay que tener en cuenta que cualquier sistema GNU / Linux distingue entre mayúsculas y minúsculas, y palabras con o sin acento. No es lo mismo musica, música, Música, o  Musica. Éste último es el nombre de un directorio de mi carpeta de usuario.

= Para ir a un directorio con nombre de dos o mas palabras separadas por un espacio vacio, por ejemplo /home/usuario/mis fotos ( este tipo de directorio suele ser uno creado por nosotros mismos como un subdirectorio de la carpeta de usuario ), si intentamos entrar en él con: cd mis fotos , no deja ya que sale este error: bash: cd: mis: No existe el archivo o el directorio ( osea en realidad el comando cd ha buscado y no encontrado el directorio correspondiente a la primera palabra del directorio, en este caso: mis ).

Hay tres formas de solucionar este asunto.
-- Usar comillas: Poniendo cd nombre del directorio entre comillas: con  cd "mis fotos" si que se entra en el directorio.
nicasio@mint15 ~ $ cd "mis fotos"
nicasio@mint15 ~/mis fotos $
-- Autocompletar el nombre: Otro método es poner el comando cd, luego la primera palabra del nombre del directorio, y a continuación y antes de pulsar la tecla enter, pulsar la tecla tab, para que se autocomplete la sentencia;  de forma que en el ejemplo quedaría:
nicasio@mint15 ~ $ cd mis\ fotos/   Ahora pulsamos enter y entramos ya en el directorio
nicasio@mint15 ~/mis fotos $
-- Cambiar el nombre: otra forma de solucionar el asunto es obviamente cambiar el nombre del directorio de forma que no contenga espacios vacíos, por ejemplo en vez de mis fotos, llamarlo mis_fotos, mis-fotos, o misfotos

= Para comprobar que los nombres de las carpetas predeterminadas de tu usuario son las habituales, hazlo con la siguiente línea de comandos en la terminal:
gedit /home/tu_usuario/.config/user-dirs.dirs
Editando ese archivo puedes modificarlas a tu gusto. Podría darse el caso de que un directorio, por ejemplo el directorio Escritorio no se llame así, sino Desktop, porque por algún motivo esté en inglés, en cuyo caso no lo encontrarías con el comando habitual: cd Escritorio, sino con: cd Desktop .
Este es mi archivo /home/nicasio/.config/user-dirs.dirs ( en color turquesa la parte del archivo que podemos editar )

# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/Escritorio"
XDG_DOWNLOAD_DIR="$HOME/Descargas"
XDG_TEMPLATES_DIR="$HOME/Plantillas"
XDG_PUBLICSHARE_DIR="$HOME/Publico"
XDG_DOCUMENTS_DIR="$HOME/Documentos"
XDG_MUSIC_DIR="$HOME/Musica"
XDG_PICTURES_DIR="$HOME/Imagenes"
XDG_VIDEOS_DIR="$HOME/Videos"

El nombre de los directorios de la carpeta de usuario aparecen en color turquesa  tras "$HOME/  , y al escribirlos en la terminal no hay que ponerlos con comillas: Escritorio, Descargas, Plantillas, Publico, Documentos, Musica, Imagenes, Videos

Si se ha modificado el archivo ~.config/user-dirs.dirs , para que los cambios tengan lugar, además de guardar los cambios en el archivo y cerrar éste, se debe salir de la sesión gráfica y volver a entrar en ella.

---------------------------------
Editado/Añadido:

Por defecto al ejecutar la terminal se inicia en el directorio /home/usuario:
usuario@mint17 ~ $

Si por algún motivo queremos que siempre se inicie desde otro subdirectorio de /home/usuario, por ejemplo en /home/usuario/Musica , añadimos la siguiente linea:
cd Musica ( ruta relativa ) al archivo /home/usuario/.bashrc , guardamos los cambios realizados en el archivo, y la próxima vez que iniciemos la terminal nos aparecerá:
usuario@mint17 ~/Musica $

Si lo que queremos es que la terminal siempre se inicie desde un directorio que no sea subdirectorio de /home/usuario, hay que poner la ruta completa hacia ese directorio, por ejemplo cd /var/cache/apt/archives, y lo que nos saldrá al ejecutar la terminal será:
nicasio@mint17 /var/cache/apt/archives $

viernes, 4 de octubre de 2013

Ejecutar un comando, que normalmente requiere permisos de administrador, con permisos de usuario

Normalmente hay muchos comandos y programas que para ser ejecutados requieren que en la terminal antepongamos el comando sudo a dicho comando ,  tras lo cual nos pide la contraseña de administrador y luego si, se ejecuta el comando o programa. Si tratamos de ejecutar este tipo de comandos o programas sin anteponer el comando sudo, simplemente no se ejecuta o nos indica que necesita permisos de root.

Para la explicación de este tema voy a hacerlo con el comando pm-hibernate. Si lo ejecutamos en la terminal, nos sale un mensaje:"This utility may only be run by the root user." Es decir que este comando solo se puede ejecutar con permisos de root. Por defecto si ejecutamos este comando anteponiendo el comando sudo  ( sudo pm-hibernate) nos pedirá la contraseña al ejecutarlo, y si que se ejecutará,

Pero podemos hacer que no nos la pida, para ello en la terminal escribimos el comando: sudo gedit /etc/sudoers
y añadimos al final del archivo de texto una línea del tipo:
nombre_de_usuario ALL = (ALL) NOPASSWD: dirección_del_comando
por ejemplo:
usuario ALL = (ALL) NOPASSWD: /usr/sbin/pm-hibernate
guardamos los cambios hechos y cerramos el archivo.

En vez de nombre_de_usuario ponemos el nombre del usuario que queremos que use el comando sin permisos de root. En vez dirección_del_comando pondremos la dirección completa donde esté el comando que queramos ejecutar sin permisos de root, en este caso la dirección del comando es /usr/sbin/pm-hibernate .

Para mayor seguridad de que se realizan los cambios, reiniciamos el pc, y ya deberíamos poder ejecutar el comando sin permisos de root, es decir sin que se nos pida la contraseña de administrador.

Podemos añadir varias líneas, para hacer que un único usuario ejecute varios comandos sin permisos de root, por ejemplo:

usuario ALL = (ALL) NOPASSWD: /usr/sbin/pm-hibernate
usuario ALL = (ALL) NOPASSWD: /usr/sbin/update-grub

También podemos añadir varias líneas para que diversos usuarios puedan ejecutar diversos comandos sin permisos de root, por ejemplo:

usuario ALL = (ALL) NOPASSWD: /usr/sbin/pm-hibernate
usuario ALL = (ALL) NOPASSWD: /usr/sbin/update-grub
usuario2 ALL = (ALL) NOPASSWD: /usr/sbin/pm-hibernate
usuario2 ALL = (ALL) NOPASSWD: /sbin/poweroff



No debemos abusar de este método añadiendo comandos a la lista de los que se pueden usar sin permisos de administrador, ya que según en que casos podemos afectar a la seguridad del sistema.

El poder usar con permisos de usuario un comando que normalmente necesita permisos de root nos puede servir para ejecutar de forma manual o de forma automática, un script, sin que nos pida la contraseña de root y/o que de otra forma no podríamos ejecutar.

-------------------------------------