Mostrando entradas con la etiqueta administración. Mostrar todas las entradas
Mostrando entradas con la etiqueta administración. Mostrar todas las entradas

martes, 3 de octubre de 2017

Crear paquete deb con Checkinstall

  1. Instalar los requisitos mínimos para utilizar checkinstall
    sudo aptitude install build-essential checkinstall
  2. Descargar archivo TAR.GZ con el código fuente de la aplicación.
  3. Descomprimir el archivo TAR.GZ
    tar -xzvf paquete-versión.tar.gz
  4. Entrar en la carpeta descomprimida
    cd paquete-versión
  5. Configurar
    ./configure
  6. Instalamos las dependencias de compilación utilizando el comando:
    sudo aptitude install dependencia1 dependencia2 #etc 
  7. Compilar
    make
  8. Crear e instalar paquete
    sudo checkinstall -D --nodoc -y

miércoles, 26 de octubre de 2016

Contar rápidamente una gran cantidad de archivos en Linux

Este es un artículo breve, tengo un directorio lleno de archivos para un proyecto, y quería una forma de poder contarlos eficientemente. El siguiente comando resultó muy bien:
/bin/ls -f | wc -l 

domingo, 22 de mayo de 2016

Compilar un paquete DEB a partir del código fuente

Me encontré en la situación de no tener un paquete DEB adecuado para instalar en el sistema, ya que no había portado a la versión estable todavía, pero sí tener acceso a las fuentes del paquete.

Lo primero es instalar  los paquetes básicos para la compilación de paquetes DEB
sudo aptitude install build-essential devscripts fakeroot
Luego buscamos el paquete deseado en la página de búsqueda de paquetes de Debian, y descargamos los archivos fuentes, los cuales suelen ser de la forma:
  • paquete_versión.dsc : Archivo de Control de Fuente Debian (Debian Source Control)
  • paquete_versión.orig.tar.gz : Código fuente original
  • paquete_versión.debian.tar.xz : Modificaciones realizadas para empaquetar la aplicación
Colocamos estos tres archivos en un directorio de trabajo propio, y descomprimimos el archivo tar.xz con el comando:
tar xf paquete_versión.debian.tar.xz
Creamos un directorio nuevo y movemos la carpeta debian recién descomprimida, allí. Esto, porque compilar el paquete se hace desde el directorio que contenga la carpeta debian, y el archivo paquete_versión.orig.tar.gz se busca en el directorio superior (..)
mkdir deb-src
mv debian deb-src/
Para instalar las dependencias de compilación del paquete, la opción sencilla es ejecutar el comando
sudo aptitude build-depends paquete
Pero esto sólo nos funcionará si el paquete ya se encuentra en los repositorios. De lo contrario, aptitude reportará que no conoce dicho paquete. En estos casos, debemos examinar el archivo paquete_versión.dsc o el archivo control que se encuentra dentro del directorio debian e instalar los paquetes indicados en la sección Build-Depends, utilizando el comando:
sudo aptitude install dependencia1 dependencia2 #etc 
La opción más recomendada para compilar el paquete es entrar en deb-src, y ejecutar debuild
cd deb-src
debuild
Sin embargo, esto produjo el siguiente error
dpkg-source: error: aborting due to unexpected upstream changes
Este artículo tiene más información sobre este error. Y una forma distinta de evitarlo.

Finalmente, logré compilar el paquete, sin tanta complicación, utilizando el siguiente comando
dpkg-buildpackage -b -uc
Con lo cual, obtuve el paquete paquete_versión.deb

Para instalarlo este paquete, ejecutamos:
cd ..
sudo dpkg -i paquete_versión.deb
En caso de que APT nos indique que hubo un error de dependencias con la instalación, procedemos a ejecutar
sudo apt-get install -f
Lo cual debería calcular cuáles dependencias es necesario instalar, intalarlas y culminar la instalación de nuestro paquete.

La estructura de los directorios es de la siguiente forma:
  • Directorio de trabajo/
    • paquete_versión.dsc
    • paquete_versión.orig.tar.gz
    • paquete_versión.debian.tar.xz
    • paquete_versión.deb
    • deb-src/
      • debian/

Instalar un paquete DEB no disponible en el repositorio de Bananian

Conseguí una aplicación que quería instalar en mi Banana Pi, pero sólo se encontraba en la rama de pruebas (testing), todavía no había pasado a estable.

Lo primero que hice fue intentar descargar el paquete DEB desde la página de búsqeda de paquetes de Debian, aunque estas instrucciones aplican a cualquier paquete DEB que se desee instalar.

Para instalar el paquete, ejecutamos el comando:
sudo dpkg -i archivo.deb
Lo cual arrojó un error de APT indicando que no se pudo terminar de configurar la aplicación ya que faltaban dependencias. Este mensaje de error es previsible ya que al instalar el paquete de esta forma, APT no descarga las dependencias necesarias automáticamente.

Para decargar estas dependencias, ejecuté el comando de APT que hace las instalaciones y desinstalaciones necesarias para resolver los conflictos de dependencias en el sistema de gestión de paquetes.
sudo apt-get install -f
Al ejecutar este comando, lo más común es que APT calcule las dependencias necesarias, y solicite una confirmación antes de instalar dichas dependencias y culminar la configuración de la aplicación que instalamos desde el archivo DEB. Sin embargo, en esta ocasión, sí me arrojó un error inesperado, pidiendo que confirmase deshacer  dicha instalación.

Entonces fui instalando una por una las dependencias faltantes utilizando el comando de costumbre
sudo aptitude install dependencia
Hasta que conseguí el problema: el paquete requería una versión más reciente de una de las dependencias que la disponible en el repositorio.

Dado que la aplicación que quería instalar no forma parte del núcleo de la distribución, ni tiene otras aplicaciones que dependan de ella, ni tampoco es particularmente vanguardista, decidí intentar compilar el paquete DEB a partir del código fuente.

viernes, 20 de mayo de 2016

Configurando SAMBA en Bananian

Para poder compartir archivos desde el Banana Pi a los terminales en mi red local, decidí crear una carpeta compartida por SMB.
# Crear carpeta donde se almacenarán los archivos
sudo mkdir /home/media

# Otorgar permiso de lectura y ejecución a todos los usuarios locales
sudo chmod 777  /home/media

# Crear sub-carpetas para clasificar los archivos
sudo mkdir /home/media/music
sudo mkdir /home/media/video
sudo mkdir /home/media/photos
sudo mkdir /home/media/ebook

# Instalar SAMBA
sudo aptitude install samba

# Respaldar archivo de configuración por defecto
sudo mv /etc/samba/smb.conf /etc/samba/smb.bak

# Crear nuevo archivo de configuración
sudo nano /etc/samba/smb.conf

# Reiniciar servicio samba
sudo service samba restart
#sudo service smbd restart

El archivo de configuración tiene el siguiente contenido
[global]
workgroup = workgroup
security = user
map to guest = Bad Password
share modes = yes
deadtime = 15
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536

[media]
path = /home/media/
public = yes
writable = no
comment = smb share
printable = no
guest ok = yes
 Esta configuración no incluye mediadas de autenticación, ya que la carpeta compartida está pensada para archivos sin riesgo de confidencialidad. Aún así, el acceso se limita a sólo lectura.

miércoles, 18 de mayo de 2016

Configurar un servidor DLNA en Bananian (Debian)

Como parte de mi interés de crear un centro de medios utilizando el Banana Pi, decidí configurar un servidor DLNA.
# Crear carpeta donde se almacenarán los archivos
sudo mkdir /home/media

# Otorgar permiso de lectura y ejecución a todos los usuarios locales
sudo chmod 755  /home/media

# Crear sub-carpetas para clasificar los archivos
sudo mkdir /home/media/music
sudo mkdir /home/media/video
sudo mkdir /home/media/photos

# Instalar minidlna
sudo aptitude install minidlna

# Modificar media_dir=/var/lib/minidlna
# Para que quede como media_dir=/home/media
sudo nano /etc/minidlna.conf

# Reiniciar servicio minidlna
sudo service minidlna restart

domingo, 15 de noviembre de 2015

Instalar Webmin y Usermin en Bananian (Debian)

Instalación

Para la administración de mi Banana Pi, me pareció interesante utilizar Webmin, una aplicación CGI que permite administrar computadores a través de una interfaz web.
Lo primero es agregar el repositorio de Webmin a las fuentes de de APT, ya que este paquete no se encuentra en los repositorios de Debian.
Para ello creamos el siguiente archivocon de texto:
/etc/apt/sources.list.d/webmin.list
Y le agregamos las siguientes líneas
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Agregamos la clave pública con la cual están firmados los paquetes DEB de Webmin
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
Actualizamos la información de repositorios de APT y los paquetes instalados
sudo aptitude update && sudo aptitude full-upgrade -y
Instalamos Webmin y Usermin
sudo aptitude install webmin usermin 
Para acceder a Webmin debemos navegar a https://ejemplo.com:10000
Para acceder a Usermin debemos navegar a https://ejemplo.com:20000

Configuración de Webmin en Subdirectorio con HTTPS

Basándonos en las indicaciones para Webmin con Apache (no aptas para proxy con SSL).
Para poder acceder a estas aplicaciones a través de https://ejemplo.com/webmin/
Habilitamos el módulo proxy de Apache HTTPD con
sudo a2enmod proxysudo service apache2 restart
Modificar el archivo /etc/webmin/config, agregando las siguientes líneas
webprefix=/webmin
webprefixnoredir=1
referer=ejemplo.com
Modificar el archivo /etc/webmin/miniserv.conf, agregando la siguiente línea
cookiepath=/webmin
Reiniciar Webmin ejecutando
/etc/webmin/restart 
Y agregamos a dentro de VirtualHost en /etc/apache2/sites-available/default-ssl.conf
### Webmin ###
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

# Put this in the main section of your configuration
# (or desired virtual host, if using Apache virtual hosts)

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
#ProxyRequests Off
#ProxyPreserveHost On

<Proxy *>
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Proxy>

ProxyPass /webmin https://localhost:10000
ProxyPassReverse /webmin https://localhost:10000

<Location webmin="">
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Location>
Esta configuración tiene carácter experimental. Un cambio deseable es que Webmin utilice un certificado SSL en el cual Apache HTTPD confíe, a fin de cambiar "SSLProxyVerify none"

domingo, 8 de noviembre de 2015

Encontrar la dirección IP de un equipo en la red local (nmap)

Lo primero que tuve que hacer cuando comencé a utilizar mi Banana Pi, fue averiguar cuál dirección IP le había asignado el enrutador por DHCP, para poder conectarme por SSH y hacer las respectivas configuraciones.
Aprovechando que tengo Nmap instalado en mi computador de escritorio, hice uso de los siguientes comandos (desde Windows).
Para obtener los datos generales de la red local:
ipconfig
El cual da como respuesta un listado de la información de todas las interfaces de red del equipo. En la interfaz apropiada (inalámbrica o cableada, por ejemplo), nos interesan los siguientes datos:
   IPv4 Address. . . . . . . . . . . : 192.168.0.80
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
Con la dirección IP y la máscara de subred, ejecutamos (con permiso de Administrador)
nmap -sP 192.168.0.80/24
El listado resultante nos indicará cuáles direcciones IP están activas en la red local, así como el nombre del equipo.

sábado, 7 de noviembre de 2015

Windows: Cómo saber quien está conectado a un servidor remoto

A veces es necesario conectarse a un servidor Windows remoto, pero por limitaciones en el número de licencias, se debe revisar primero quién está conectado.
Una forma de hacerlo, es intentar conectarse y que el Servidor indique si hace falta expulsar a alguien para poder conectarse. Pero esa forma me parece poco elegante y algo intrusiva.
Buscando en internet conseguí el comando query, que permite listar los usuarios conectados a un servidor, ejecutando la siguiente sentencia en CMD:
query user /server:example.com

sábado, 31 de octubre de 2015

Instalando Apache HTTPD en Bananian (Debian)

Lo primero que tengo que hacer para poder utilizar mi Banana Pi como un servidor de Intranet en mi casa es instalar el servidor web.
Empezamos con la instalación de Apache2 y los paquetes que recomienda.
sudo aptitude install apache2 -r
Luego viene la configuración de los módulos, en particular userdir, que permite que los usuarios del servidor puedan publicar sitios en html en la dirección servidor/~nombredeusuario, con tan solo guardarlos en el directorio public_html de su carpeta personal.
sudo a2enmod userdir.load
Luego unas medidas de seguridad sencillas: Desactivamos que indique su versión y el sistema operatico en las cabeceras HTTP y en el pie de página de algunas páginas por defecto. Es necesario editar el archivo /etc/apache2/conf-enabled/security.conf y fijar los siguientes valores
ServerTokens ProductOnlyServerSignature Off 
Finalmente, reiniciamos el servicio Apache2
sudo service apache2 restart
Ahora tenemos un servidor web en el Banana Pi.

Para deshacernos del siguiente mensaje:
apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.162. Set the 'ServerName' directive globally to suppress this message
Creamos el siguiente archivo
sudo nano /etc/apache2/conf-available/ServerName.conf 
Cuyo contenido debe ser
ServerName nombredelservidor
Activamos este archivo de configuración con
sudo a2enconf ServerName.conf
Y reiniciamos el servicio Apache2 nuevamente
sudo service apache2 restart

jueves, 29 de octubre de 2015

Requsitos para utilizar una Banana Pi

Un poco tarde, pero estoy llegando a la tendencia de los pequeños computadores integrados, donde destacan los Raspberry Pi. Al analizar mis opciones, decidí irme por un clon, conocido como Banana Pi, que para mí, tenía un balance precio-desempeño más atractivo.
Lo primero fue comprar el Banana Pi, una tarjeta Micro-SD y un cargador Micro USB. En particular me decidí por una tarjeta Micro-SD clase 10 y de 32 GB que me permitiera tener cierta comodidad con el espacio en disco. En cuanto al cargador, me decanté por uno apto para tabletas (5V y 2A), en lugar de uno apto para celulares (5V y 1A).
Luego descargué Bananian Linux, una distribución ligera pensada para estos dispositivos, basada en Debian y lo grabé en la tarjeta Micro SD utilizando Win 32 Disk Imager.
Luego escribiré sobre la configuración inicial de Bananian.

Calcular resumen criptográfico MD5, SHA1 y SHA256 en Windows

Recientemente tuve la necesidad de comprobar la integridad de una descarga en Windows. Usualmente, cuando son descargas grandes, utilizo Firefox con el complemento DownThemAll, el cual permite agregar el valor del resumen criptográfico para validar el archivo. Pero como ya el archivo estaba descargado, decidí buscar una solución para este caso.

Luego de buscar en Internet, conseguí una herramienta de Microsoft que cumple esta función. Se trata de File Checksum Integrity Verifier (FCIV).

  1. Descargué el archivo ZIP desde la página y lo descomprimí.
  2. Creé una carpeta FCIV en Archivos de Programa (Como administrador en la consola de comandos):
  3. mkdir %PROGRAMFILES%\FCIV
  4. Luego, moví el contenido del archivo ZIP a la carpeta recién creada
  5. Finalmente, añadí el directorio creado a la variable de ambiente PATH
  6. setx PATH "%PATH%;%PROGRAMFILES%\FCIV"
Para utilizar la herramienta, sólo hay que ejecutar en la consola
fciv archivo
Para conocer las opciones
fciv /? 

jueves, 10 de septiembre de 2015

Desinstalar actualizaciones de Windows por consola de comandos

Estaba leyendo sobre varias actualizaciones indeseables de Windows, y decidí validar que no estuviesen instaladas en mi sistema, para lo cual fui a la sección de Actualizaciones de Windows en el Panel de Control.

Sin embargo, me resultó engorroso consultar puntualmente si las actualizaciones de mi interés estaban instaladas o no.

Buscando en Internet, conseguí que el comando para listar todas las actualizaciones instaladas es:
wmic qfe list
Podemos filtrarlo utilizando
wmic qfe list | findstr KB1234567
Podemos redireccionar la salida del comando a un archivo de texto, y ahí consultar más cómodamente con
wmic qfe list > C:\kblist.txt
cat C:\kblist.txt | findstr KB1234567
Para desinstalar una actualización, basta con ejecutar
wusa /uninstall /kb:1234567 /quiet /norestart 

viernes, 4 de septiembre de 2015

Instalación sencilla de Sysinternals

Viniendo de Linux, me resultó particularmente frustrante que al intentar ejecutar el comando "whois" en la consola de comandos de Windows, me indicase que no existía ese ejecutable en mi equipo.

Una rápida búsqueda en Google me lleva a la página de Microsoft de Sysinternals, y allí veo que tengo la opción de descargar "whois" individualmente, o la suite completa. Para no pasar otra vez por una molestia similar, decidí descargar la suite.

Pensé que el archivo ZIP iba a tener algunas indicaciones, o por lo menos recomendaciones, para instalarlos, pero no fue el caso. Es un archivo ZIP que contiene un montón de ejecutables, un archivo LEEME, acuerdos de usuario final, y algunos archivos de ayuda para las aplicaciones.

Otra búsqueda en Google, me lleva a varios instaladores desarrollados por terceros -lo cual no me inspira mucha confianza- y algunos guiones de comandos en algunos foros para crear accesos directos en el menú inicio -lo cual no me interesa.

Finalmente, decidí abrir CMD como administrador, ejecutar el comando
mkdir "C:\Program Files\Sysinternals"
Copiar el contenido descomprimido del archivo zip dentro de esa carpeta, y luego agregarla a PATH, para que sea ejecutable desde la consola sin tener que indicar la ruta completa del ejecutable. Para eso ejecuté:
setx PATH "%PATH%;C:\Program Files\Sysinternals"
Listo. Ahora puedo ingresar whois ejemplo.com desde la consola. La primera vez que se ejecuta pide aceptar un acuerdo de usuario final.

domingo, 22 de junio de 2014

Permitir que un usuario regular apague o reinicie la computadora aun si alguien más está autenticado

Como el computista de la casa, la administración de las computadoras domésticas recae sobre mí. Esta responsabilidad es exclusiva y excluyente para evitar que otros miembros del hogar desconfiguren el equipo o instalen algún software indeseable.

El problema es que a veces abro la sesión en Ubuntu (12.04 LTS) y dejo algo descargando o algo instalando toda la noche y se me olvida cerrar mi sesión. No ha pasado que requiera que mi sesión sobreviva más de una noche. Entonces llega otra persona en el hogar, se autentica con su cuenta hace que lo vaya a hacer y desea apagar el equipo (sobre todo cuando me voy de viaje) y no puede porque el sistema le indica que debe introducir una contraseña de administrador para poder apagar o reiniciar la computadora porque alguien más está autenticado.

Algunas opciones que descarté:
  • Aunque utilizo TeamViewer para dar soporte remoto cuando estoy de viaje, no me atrae el prospecto de tener que conectarme para algo tan sencillo como apagar un equipo.
  • Si bien apagar o reiniciar el equipo físicamente es una opción, no es una buena práctica, por lo tanto no me parece conveniente crear ese hábito entre los miembros de la casa que no son computistas.
  • Programar la desautenticación automática de mi usuario le permitiría a los otros miembros del hogar apagar el equipo una vez mi sesión halla expirado. Pero esto me quitaría la flexibilidad de dejar la computadora haciendo alguna operación que se demore mucho, que de otra sólo requeriría avisarle a los demás que no la apaguen y ya.
La solución que apliqué y me funcionó , la encontré en un hilo sobre este problema en Launchpad.
Primero, hay que editar, con permisos de administrador, el archivo /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
Para que los usuarios puedan apagar el equipo, cambiar la siguiente sección en el archivo
 <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
a
<action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
Para que los usuarios puedan reiniciar el equipo, cambiar la siguiente sección en el archivo:
<action id="org.
freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
a
  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
Listo!

Aunque a mí me funcionó, aparentemente hay una mejor forma de hacerlo, la cual probablemente ponga en práctica cuando deba instalar Ubuntu 14.04 LTS en la casa.

La solución correcta (que no he aplicado todavía) para que todos los usuarios puedan apagar el equipo, según AskUbuntu sería crear, con permiso de administrador, un archivo en la ruta /etc/polkit-1/localauthority/50-local.d/ con extensión .pkla (por ejemplo allow_all_users_to_shutdown.pkla) cuyo contenido sea:
[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes
La solución correcta, según la misma fuente, para que todos los usuarios puedan reiniciar el equipo sería crear, con permiso  de administrador, un archivo llamado /etc/polkit-1/localauthority/50-local.d/ con extensión .pkla (por ejemplo allow_all_users_to_restart.pkla) cuyo contenido sea:
[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes