Mostrando entradas con la etiqueta nano. Mostrar todas las entradas
Mostrando entradas con la etiqueta nano. Mostrar todas las entradas

Mensaje de error sudo: unable to resolve host ubuntu: Name or service not known

 En mi caso me ocurrió en una Raspberry en la que había instalado Ubuntu Server. Pero puede que les ocurra al invocar el comando sudo. No es problematico, por que el comando era ejecutado con privilegios de administrador, pero es molesto que cada vez realices una tarea, salga un mensaje de error



sudo: unable to resolve host ubuntu: Name or service not known

Para resolverlo basta con cerciorarse el nombre que le hemos dado a la máquina

 hostname

Y añadir una línea que falta en el archivo  /etc/hosts

sudo nano /etc/hosts

 


Justo debajo de  127.0.0.1 localhost añadiremos una nueva línea similar a la anterior pero con el nombre de nuestro hosts

127.0.0.1 nombre_del_hosts


 

 

 


Listar usuarios en Linux

Si necesitamos acceder al listado de usuarios autorizados en nuestro sistema accederemos al archivo

/etc/passwd

Si solo queremos realizar una consulta, no accederemos con los privilegios de administrador. Cualquier cambio accidental que hagamos, puede afectar gravemente al sistema

nano /etc/passwd

 


Cada línea nos mostrará los usuarios de nuestro sistema y por cada columna separada por el carácter

: 

 Información del usuario

blog_en_fase_terminal:x:1000:1000:Blog_En_Fase_Terminal:/home/blog_en_fase_terminal:/bin/bash

blog_en_fase_terminal:x:1000:1000:Blog_En_Fase_Terminal:/home/blog_en_fase_terminal:/bin/bash


  1. Username: Se usa cuando el usuario iniciar sesión. Debe tener entre 1 y 32 caracteres de longitud.
  2. Password: Un carácter x indica que la contraseña cifrada
  3. User ID (UID): A cada usuario se le debe asignar una ID de usuario (UID). UID 0 (cero) está reservado para root y los UID 1-99 están reservados para otras fuentes predefinidas. Otros UID 100-999 están reservados por sistema para fuentes / grupos administrativos y del sistema.
  4. Group ID (GID): La ID de grupo principal (almacenada en / etc / archivo grupal)
  5. User ID Info (GECOS): El campo de comentarios. Le permite agregar información adicional sobre los usuarios, como el nombre completo del usuario,
  6. Home directory: La ruta absoluta al director en el que estará el usuario cuando abra sesión, y el directorio donde se ubicarán sus archivos personales. Si este director no existe, el director de usuarios se convierte en /
  7. Command/shell: La ruta absoluta de un comando o shell (/ bin / bash).

Cambio de idioma y caracteres a español terminal Linux

Es curioso que siendo el segundo idioma más hablado en el mundo, por defecto las instalaciones basada en Linux utilicen el juego de caracteres anglosajón.

Para comprobar que juego de caracteres que se encuentra instalada por defecto en nuestra instalación Linux y la configuración regional de cada categoría como:

  • nombre
  • moneda
  • dirección
  • configuración numérica
  • teléfono
  • fecha y hora

Utilizaremos desde el terminal el comando:

locale

locale

 Para cambiar la configuración regional a es_ES.UTF-8 lo hacemos de la siguiente manera:

export LANG=es_ES.UTF-8

export LANG=es_ES.UTF-8

Como podemos ver, ya lo tenemos cambiado, pero esto solo nos valdrá para esta sesión. Al cerrar la sesión, o reiniciar el sistema, volveremos a la configuración anterior.

Para guardar los cambios de manera definitiva, debemos de editar el fichero  /etc/default/locale y sustituir la siguiente línea LANG=en_US.UTF-8 por LANG=es_ES.UTF-8.

sudo nano  /etc/default/locale

sudo nano  /etc/default/locale

Estos cambios de configuración serian en general. Si por el contrario quisiéramos cambiar la configuración para un usuario en concreto. Accederemos al archivo de configuraciones del usuario al que queremos que afecte dicho cambio

sudo /home/usuario/.bash_profile


Juego de caracteres habilitados en una configuración en castellano:

locale -a

 

 C

C.UTF-8

en_AG

en_AG.utf8

en_AU.utf8

en_BW.utf8

en_CA.utf8

en_DK.utf8

en_GB.utf8

en_HK.utf8

en_IE.utf8

en_IL

en_IL.utf8

en_IN

en_IN.utf8

en_NG

en_NG.utf8

en_NZ.utf8

en_PH.utf8

en_SG.utf8

en_US.utf8

en_ZA.utf8

en_ZM

en_ZM.utf8

en_ZW.utf8

es_AR.utf8

es_BO.utf8

es_CL.utf8

es_CO.utf8

es_CR.utf8

es_CU

es_CU.utf8

es_DO.utf8

es_EC.utf8

es_ES.utf8

es_GT.utf8

es_HN.utf8

es_MX.utf8

es_NI.utf8

es_PA.utf8

es_PE.utf8

es_PR.utf8

es_PY.utf8

es_SV.utf8

es_US.utf8

es_UY.utf8

es_VE.utf8

eu_ES

eu_ES.iso88591

POSIX

Es posible que la distribución del teclado no sea la correcta, leer el artículo  Cómo cambiar el idioma del teclado en terminal Linux

Conectar a servidor base de datos MariaDB

Puede ser el caso que además de gestionar una base de datos SQL en local, necesitamos gestionarla en remoto. En la mayoría de los servidores de hospedaje web, no nos permiten conectarnos a la servidor de base de datos en remoto, tenemos que hacerlo en local. Una de las herramientas más utilizadas es PhpMyAdmin. Este caso en concreto he instalado un servidor de base de datos MariaDB Server en una Raspberry. Tengo muy oxidado el lenguaje SQL como para acceder al servidor a través de SSL y realizar todas las tareas de instalación de rablas y mantenimiento desde el cliente de MariaDB. Quiero gestionarla en un entorno más amigable, pero no quiero instalar a mayores un servidor Apache con PHP para poder utilizar PhpMyAdmin.

Logo MariaDBMariaDB  es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius —fundador de MySQL—, la fundación MariaDB y la comunidad de desarrolladores de software libre.1​ Introduce dos motores de almacenamiento nuevos, uno llamado Aria —que reemplaza a MyISAM— y otro llamado XtraDB —en sustitución de InnoDB—. Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.
Aunque el tutorial es para MariaDB, este puede ser extensible si así fuera un servidor de MySQL.

De forma predeterminada y por seguridad no permiten el acceso remoto, solo se permite acceso atraves de localhost.

Una vez instalada el servidor y el cliente en nuestra distribución. Aseguramos la instalación lanzando el comando:

sudo mysql_secure_installation 

Enter current password for root (enter for none): Pulsa enter
 Introduzca la contraseña actual para root (ingrese para none): Pulse Enter
 Set root password? [Y/n]: Y
 ¿Establecer contraseña del root? [Y/n]: Y
 New password: Enter password
 Nueva contraseña: Introduzca contraseña
 Re-enter new password: Repeat password
 Reescribir nueva contraseña: Repetir contraseña
 Remove anonymous users? [Y/n]: Y
¿ Borrar usuarios anónimos? [Y/n]: Y
 Disallow root login remotely? [Y/n]: Y
¿No permitir el acceso al root desde remoto? [Y/n]: Y
 Remove test database and access to it? [Y/n]:  Y
 ¿Borrar Bases de datos Test y su acceso? [Y/n]: Y
 Reload privilege tables now? [Y/n]:  Y
 ¿Recargar privilegios a las tablas ahora? [Y/n]: Y

No vamos a permitir al root acceder desde remoto, no es considerado de una buena praxis de seguridad que el administrador se pueda conectar en remoto. Por el contrario vamos a crear un usuario nuevo y le vamos a dar privilegios de acceso desde remoto. En este caso indicaremos que el usuario se puede conectar desde cualquier equipo de nuestra LAN. Con 192.168.100 indicamos que subred se puede conectar usando el carácter % como comodín para indicarle que cualquier equipo de esta. También podríamos limitar aun más indicando la dirección ip del equipo desde el que únicamente puede acceder en remoto. Creando un entorno aun más seguro

CREATE USER 'nuevo usuario'@'192.168.100.%';
 
GRANT ALL PRIVILEGES ON *.* TO 'nuevo usuario'@'192.168.100.%' IDENTIFIED BY 'nueva contraseña' WITH GRANT OPTION;

Seguidamente configuraremos de forma manual, no solo el acceso en local, si no el acceso en remoto.
Deberemos localizar los archivos de configuración de MySQL o de MariaDB.
  • /etc/my.cnf                         
  • $MYSQL_HOME/my.cnf
  • /etc/mysql/my.cnf                      
  • SYSCONFDIR/my.cnf                     
  • DATADIR\my.ini                           Windows
Editando el archivo de configuración /etc/mysql/my.cnf

sudo nano /etc/mysql/my.cnf
 

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

Nos indica los directorios donde se encuetra el archivo que estamos buscando para editarlo. 50-server.cnf

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Buscaremos la sección [mysqld]  donde editaremos los valores que nos permitan conexiones externas. Este es un ejemplo real de configuración que me ha permitido conectarme al servidor desde otro equipo.

[mysqld]

#
# * Basic Settings
#
user                    = mysql
pid-file                = /run/mysqld/mysqld.pid
socket                  = /run/mysqld/mysqld.sock
port                    = 3306
basedir                 = /usr
datadir                 = /var/lib/mysql
tmpdir                  = /tmp
lc-messages-dir         = /usr/share/mysql
#skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address            = 127.0.0.1
bind-address            = 0.0.0.0

.......................................................

 # * Security Features
#
# Read the manual, too, if you want chroot!
#chroot = /var/lib/mysql/
#
# For generating SSL certificates you can use for example the GUI tool "tinyca".
#
#ssl-ca = /etc/mysql/cacert.pem
#ssl-cert = /etc/mysql/server-cert.pem
#ssl-key = /etc/mysql/server-key.pem
#
# Accept only connections using the latest and most secure TLS protocol version.
# ..when MariaDB is compiled with OpenSSL:
ssl-cipher = TLSv1.2
# ..when MariaDB is compiled with YaSSL (default in Debian):
#ssl = on

Te explico de forma más detallada las lineas a editar para un correcto funcionamiento. 

  •  port                    = 3306 Es el puerto por defecto, no es necesario cambiarlo, pero si fuera necesario podríamos especificar otro puerto de accesos.
  • #skip-external-locking Comentamos esta linea para permitir que el servidor sea accesible desde el exterior. Comentamos añadiendo el carácter #
  • #bind-address            = 127.0.0.1 Tambien aañadimso el caracter # para comentar esta linea.
  • bind-address            = 0.0.0.0 Añadiremos una linea con los parametros indicados.
  • ssl-cipher = TLSv1.2 Esta parte hay que tenerla en cuenta si tenemos problemas a la hora de concetar con los certificados. Al utilizar OpenSSL descomentamos esta linea
  • #ssl = on Y comentamos esta otra. Que era la que estaba activa de forma predeterminada pero, que en mi caso no me permitía conectarme.
Una vez modificado las lineas señalas. Guardamos y salimos del editor de textos. Y reiniciamos el servicio.

sudo systemctl restart mariadb.service

Tenemos que tener en cuenta, si en nuestro servidor, tenemos instalado y corriendo un cortafuegos, debemos permitir las conexiones a través del puerto 3306, si lo hemos dejado por defecto, o el puerto que asignemos al servicio. Para añadir el permiso abrir el mencionado puerto utlizando ufw seria:

sudo ufw allow 3306/tcp

Y si solo vamos a permitir el acceso en remoto a un equipo, con una dirección ip en concreto:

 sudo ufw allow from 192.168.100.2 to any port 3306

Usuario desconocido redis en el archivo statoverride

Uno de los problemas que arrastra Linux en la desinstalación de aplicaciones es que no se purgan completamente. Todos los archivos de configuración y librerías de las que dependia pernmanecen instaladas en el sistema. Eso, como ha sido en mi caso, puede causar un problema de secuestro de procesos. En este caso no podía instalar ni actualizar mi distribución Linux.

Mensaje de error al actualizar Linux


dpkg: erro fatal irrecuperable, abortando::
usuario desconocido 'redis' en el archivo statoverrride
E: Sub-process /usr/bin/dpkg returned an error code (2)
Un paquete no se puedo esntalar. Tratando de recuperrarlo:

Buscando al usuario 'redis' no aparece en el sistema lo único que encuentro es una referencia en el arranque del sistema Boot system : Systemd.

redis-server

Redis, que significa Remote Dictionary Server (servidor de diccionarios remoto), es un rápido almacén de datos clave-valor en memoria de código abierto que se puede utilizar como base de datos, caché, agente de mensajes y cola. El proyecto se inició cuando Salvatore Sanfilippo, el desarrollador original de Redis, trataba de mejorar la escalabilidad de su startup italiana. Redis ofrece ahora tiempos de respuesta inferiores al milisegundo, lo que permite que se realicen millones de solicitudes por segundo para aplicaciones en tiempo real de videojuegos, tecnología publicitaria, servicios financieros, sanidad e IoT. Redis es una opción muy habitual en aplicaciones de almacenamiento en caché, administración de sesiones, videojuegos, tablas de clasificación, análisis en tiempo real, datos geoespaciales, servicios de vehículos compartidos, chat/mensajería, streaming de contenido multimedia y publicación/suscripción.

Deshabilitamos el arranque automático. Redis no es un programa que se encuentre actualmente en mi sistema y al no haber purgado correctamente me esta impidiendo actualizarme.
La siguiente acción es acceder al archivo statoverride y borrar la linea creada por "usuario" "redis"

sudo nano /var/lib/dpkg/statoverride

Fichero statoverride
 

Buscando veo que el servidor se instaló al probar Steam. Asi que continuo con la desinstación y purga de redis-server
 
sudo apt-get purge redis-server
sudo apt-get purge redis-server
 

Una vez borrado la carpeta /home/usuario,/steam Ya podremos operar con normalidad y nos permite actualizar el sistema.

Duck DNS servicio gratuito de DDNS

Aunque desde hace tiempo se implementó la ipv6 las operadoras de acceso a Internet no lo implementan en los hogares, aun continuamos con la ipv4 y por tanto nuestros router's aún tienen direcciones públicas dinámicas.
Para el "internet de las cosas", servidores VPN, servidores web, Nubes personales, nuestra propia red de vigilancia de cámaras..... Es complicado no tener una ip estática a la que acceder.

Entre las DDNS que nos ofrecen, de forma gratuita, acceso estable a nuestra ip dinámica, es DuckDNS.
Su página minimalista y muy simple. 




Una vez que nos hemos dado de alta nos mostrará el token que nos han asignado y podremos crear un subdominio que utilizaremos para acceder a nuestra ip dinámica.


Asignamos un nombre. Puesto que vamos a utilizar este para acceder desde internet a un servicio, o servidor que tengamos instalado en nuestra casa o empresa, no debería ser fácilmente reconocible, e incluso deberia ser ofuscado y complejo. Y por puesto no compartirlo de forma pública.

Al crear nuestro subdominio, automáticamente reconoce nuestra dirección ip. Accediendo al dirección creada el servidor DNS redirigirá a nuestro navegador a la ip registrada. Podemos crear hasta cinco subdominios con distintos nombre y podremos asignarles cinco direcciones diferentes.

DuckDNS dispone de herramientas para poder actualizar la dirección ip dinámica de nuestro servidor.


Tenemos distintos scripts,  programas para instalar, dependiendo de nuestro sistema operativo. También podemos implementarlo en nuestro router.

Si por ejemplo disponemos una Raspberry y la utilizamos como servidor, tambien la podemos utilizar para comunicar a DuckDNS nuestra nueva dirección pública.

Accederemos a nuestra Raspberry a través de la pasarela ssh

ssh pi@raspberrypi

Creamos un directorio, accedemos a él y creamos un nuevo archivo llamado duck.sh.

mkdir duckdns
cd duckdns
nano duck.sh

Copiamos el script que le informará a nuestro DDNS de nuestra dirección actual. Si hemos registrado un subdominio nos personaliza el script con dicho subdominio, nuestro TOKEN y solo tendremos que copiar y pegar.

echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K -

Guardamos crtl+o y salimos del editor crtl+x . Y le otorgamos privilegios de ejecución.

chmod 700 duck.sh

Añadimos una línea en el cron que ejecutará nuestro script cada cinco minutos, manteniendo la relación de nuestro subdominio con la ip de nuestro servidor actualizada

crontab -e

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Probamos que que todo está correcto, ejecutando nuestro archivo y comprobando que nuestro archivo de eventos ha recogido el ok.

cat duck.log

Eliminar publicidad mientras navegas en linux

Aunque hay extensiones para bloquear la publicidad mientras navegas por internet, buscaba algo màs simple que no fuera dependiente del navegador que esté utilizando en ese momento.
Encontré un método muy simple, editando el archivo:

/etc/hosts

En este archivo podemos guardar la relación de nombres de dominio y sus direcciones ip's. Cuando naveguemos por internet, nuestro ordenador accede primero a este archivo para localizar el dominio al que queremos acceder. Si no lo encuentra continuará la búsqueda en los servidores DNS que le indiquemos.

Si no disponemos de un servidor DNS en nuestra nuestra red local, nos será útil a la hora de acceder a nuestros servidores a través de nombres y no de direcciones ip.

Pero si añadimos dominios conocidos que son servidores de publicidad y/o rastreadores y le indicamos una dirección falsa, nuestro navegador no nos mostrará ninguna publicidad y no enviará datos de nuestra navegación.

El funcionamiento es similar a Pi-Hole . Pero sin necesidad de instalar un servidor DNS en nuestra red.

El método es muy sencillo. Editamos el archivo /etc/hosts

sudo nano /etc/hosts

Nos saldrá algo parecido a:

127.0.0.1 localhost
127.0.1.1 enfaseterminal
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Añadiremos en al final del archivo:

https://mega.nz/#!maRhEapC!-J7HXuVD0FiJXLpLMm5CtZKdnJUuHoiqSlCdj1kuzGU
 Esta lista negra a sido confecciona a partir del archivo:
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

Montar disco duro usb en linux

En está ocasión quería montar un servidor dlna en una Raspberry. Para ello tenía que montar un disco duro externo en un sistema basado en Linux.
Antes de nada hay actualizar nuestro sistema para que reconozca el sistema de archivos utilizado por Windows NTFS, por que es el sistema en el que esta formateado mi disco duro y no quiero formatearlo para no perder datos.

sudo apt-get install ntfs-3g

Luego deberemos averiguar si nuestro sistema ha reconocido nuestro disco duro y donde se encuentra localizado para poder montarlo

sudo blkid

/dev/sda2: LABEL="Seagate Expansion Drive" UUID="9026****626679C4A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="74fd**27-****-483e-bc23-******0"

/dev/mmcblk0: PTUUID="b78***38" PTTYPE="dos"

/dev/sda1: PARTLABEL="Microsoft reserved partition" PARTUUID="fca0fbe2-***-49b4-8e51-***ec23"

En mi caso el disco duro se encuentra en el directorio:

/dev/sda2

Crearemos un directorio donde montaremos nuestra unidad usb y donde accederemos a su contenido.

sudo mkdir /media/discousb

Le indicaremos a nuestro sistema operativo que monte de forma automática nuestro disco duro en la carpeta que hemos creado. Para ello deberemos editar el archivo fstab que se encuentra en el directorio etc

sudo nano /etc/fstab

Como cambiar servidor DNS en linux

Si tenemos la necesidad de cambiar o actualizar la información de los servidor de DNS  de nuestro equipo, modificaremos el fichero  /etc/resolv.conf
Podremos utilizar el editor nano.

sudo /etc/init.d/networking restart

La lectura del archivo sería:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 9.9.9.9
nameserver 8.8.8.8

En cada línea seguido de namesever indicaremos la dirección ip de nuestro servidor DNS.

Guardaremos nuestra edición Control+O y saldremos del editor con Ctrl+X
Reiniciamos el servicio de red de nuestro equipo:

sudo /etc/init.d/networking restart