Validación “edit unique” en CodeIgniter

No Comments

Extracto

Es cierto, CodeIniger, tiene muy buen sistema de validaciones, aunque le falten algunas tan tontas como un validador de fechas, y uno que antes de realizar un update en la base de datos compruebe que los campos que hemos declarado como claves UNIQUE sigan siéndolo con los nuevos datos que estamos modificando.

@pedroruizhidalg―La situación es la siguiente: tengo una tabla a la que llamo kanban, cuyo campo kanban_name he descrito como único. Así: Read More…

Gestor de copias de seguridad incrementales en Linux

No Comments

Extracto

@pedroruizhidalg― Ya escribimos sobre las copias de seguridad en Linux, otra estupenda opción es rsync. Este comando (https://rsync.samba.org/) de los creadores de samba, tiene, en principio, está pensado para la sincronía remota de directorios. No obstante, su funcionalidad es muy amplia y puede ser dedicado a otros usos.

Read More…

Los permisos de archivos en Linux

No Comments

Extracto

@pedroruizhidalg― Cada archivo y directorio en Linux tiene asociado un conjunto de permisos de determina quiénes pueden acceder y en qué forma. Estos permisos se pueden establecer para restringir el acceso a tres entidades y de tres formas: a usted, al grupo al que perteneces y a otros ―es decir, todo el mundo―.

Read More…

Categories: Computación, linux, Tecnología, Tecnologías Tags: Etiquetas: , , ,

Linux, comando file

No Comments
linux shell bash

Extracto

@pedroruizhidalg― En ocasiones necesitamos clarificar el contenido de un directorio. En Linux todo es archivo. Es decir, el sistema operativo no necesita ni requiere las extensiones de los archivos. En otras palabras, podemos dar la extensión .mp3 a un archivo de python, o bien .txt a un archivo de sonido. Las extensiones para Linux «son cosas de humanos».

El comando file sirve para clarificar a qué tipo, o cómo se ejecuta ―qué papel juega― un archivo dentro del sistema. Bien usado puede ser una herramienta interesante.

Abreviaturas usadas

mp3― Formato de compresión digital para la transmisión rápida de archivos de audio y vídeo a través de Internet.

txt―Un archivo de texto llano, texto simple, texto plano, texto sencillo o texto pelado es un archivo informático compuesto únicamente por texto sin formato, sólo caracteres, lo que lo hace también legible por humanos. …

Descripción

El comando file determina el tipo al que pertenece un archivo. Este comando acepta la opción -f para poder leer la entrada desde un archivo. Algunas veces tenemos tal pollo formado en un directorio que esto termina por poner algo de luz en él.

$ file archivos
archivos: ASCII text
$

Ejecución

Por regla general, uso este comando de la siguiente forma:

$ ls > archivos
$ file -f archivos >> archivos
$ cat archivos
archivos
lexico.l
sintactico.tab.c
sintactico.tab.h
sintactico.y
archivos:         ASCII text
lexico.l:         UTF-8 Unicode text
sintactico.tab.c: C source, ASCII text
sintactico.tab.h: C source, ASCII text
sintactico.y:     C source, UTF-8 Unicode text
$
  1. Introducimos el listado del directorio en un archivo (al que llamo «archivo»).
  2. Ejecutamos el comando file con -f para que pueda tomar como entrada el archivo que hemos generado. Haciendo que él escriba añadiendo al archivo el análisis de tipo de los ficheros del directorio.
  3. Mostramos por la salida estándar el contenido de «archivo» y comprobamos que la primera parte corresponde a la descripción de los componentes del directorio y la segunda a su análisis de tipo.

Epílogo

 

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

9cf76-ubuntu

Clave pública @pedroruizhidalg.pub.key

#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel
Categories: Computación, linux, Tecnología Tags: Etiquetas: , ,

Leer argumentos en scripts en bash

No Comments
keep calm and #!/bin/bash

Extracto

@pedroruizhidalg― Como venimos escribiendo acerca del entorno de terminal bash sobre sus variables, las posibilidades del entorno y preparar nuestro sistema para ejecutar scripts incluso con algún ejemplo sobre criptografía en este artículo vamos a ver la forma de recibir argumentos desde la linea de comandos para ser leídos en un script bash.

Abreviaturas usadas

Descripción

Como describimos en el artículo sobre bash  los comandos en Linux por regla general se ajustan al siguiente esquema.

$ Orden Opciones Argumentos

También por regla general los argumentos en Linux suelen ser nombres de archivos. Pero nosotros podemos crear scripts conforme a nuestros gustos, apetencias, forma de trabajar…

Ejecución

Una vez creado ambiente para ejecutar scripts, a modo de ejemplo vamos a crear un script para copiar archivos a un directorio que vamos a crear para tener un repositorio de los archivos que nos interese.

$ cd ~/
$ mkdir sandbox
  1. Nos situamos en nuestra directorio home.
  2. Creamos el directorio sandbox en nuestro home.

Ahora nos dirigimos al directorio que hemos preparado para ejecutar scripts ―en mi caso ~/.bin―. Allí vamos a crear un script que copie automáticamente a sandbox.

$ cd ~/.bin
$ touch tosandbox
$ chmod u+x tosandbox
$ gedit tosandbox &
  1. Cambiamos el directorio a .bin.
  2. Creamos el archivo “tosandbox” vacío.
  3. Le damos permisos de ejecución para el usuario (o sea, nosotros)
  4. Editamos con gedit el archivo en background. Por supuesto puedes usar el editor que más te guste. Guardamos el archivo.
#!/bin/bash
cp $1 ~/sandbox/
  1. En la primera linea informamos al sistema que este script debe ser ejecutado en bash.
  2. En la segunda $1 corresponde al argumento ―es decir, en este caso al nombre del fichero que queremos copiar― en la carpeta sandbox. Es decir, los argumentos, por orden de aparición, adquieren dentro del script como nombre para referirnos a ellos $1, $2, $3
Probamos que funciona
$ cd ~/
$ touch archivodeprueba
$ tosandbox archivodepueba
$ ls -l sandbox
$ ls -l
total 0
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:25 archivodeprueba

Como podemos comprobar, y era previsible, tosandbox a enviado nuestro archivo de prueba a la carpeta deseada.

Usar un número desconocidos de argumentos

Sí. Se puede hacer así. Modificamos nuestro ~/.bin/sandbox

#!/bin/bash
cp $* ~/sandbox/

En la segunda línea hemos sustituido 1 por *. Esto significa que “todos los argumentos que enviemos serán copiados a la carpeta sandbox. Lo probamos.

$ cd ~/
$ touch unfichero otrofichero
$ tosandbox unfichero otrofichero
$ ls -l sandbox
total 0
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:25 archivodeprueba
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:35 unarchivo
-rw-rw-r-- 1 pedro pedro 0 oct 24 16:35 otroarchivo

Epílogo

Con esta entrada del blog podéis empezar a crear vuestros propios scripts aportándoles argumentos desde la linea de comandos.

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

Clave pública @pedroruizhidalg.pub.key

#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel
Categories: Computación, linux, Tecnología, Tecnologías Tags: Etiquetas:

data mining: técnicas y procedimientos

No Comments
técnicas de data mining

@pedroruizhidalg― A principios de 2002, el director del FBI, John Aschcroft, anunciaba que el Departamento de Justicia comenzaría a analizar las bases de datos comerciales referentes a los hábitos de consumo y preferencias de compra de los consumidores estadounidenses. Expertos aseguran que la intención del FBI es aunar toda la información que dispongan en una mega base de datos con el fin de poder hacer el seguimiento ―en USA es casi sospechoso pagar con efectivo repetidas veces, siempre lo hacen con tarjeta― del reguero de información que vamos dejando en nuestro día a día.

Permitidme ilustrarlo con un ejemplo. Fulano de Tal se levanta un sábado y mira su Facebook, contesta a lo que le ha llamado la atención. Consulta su cuenta de Twitter y retuitea la cosa tan graciosa que ha visto. Luego mira su email. Tras esto desayuna, se ducha y se va en moto hacia una gasolinera para poner 10€ de carburante. Va a unos grandes almacenes, en la búsqueda mira una gorra, la fotografía y la envía a su novia a ver qué le parece; se compra un pantalón vaquero y una camiseta para la playa. En la esquina de siempre, le espera su novia, con la que van a tomar algo a un bar de moda. Fotografían ambos la tapa, la mandan a sus redes sociales, algunos amigos contestan con un «like» otros retwitean. Aquí paramos el ejemplo. Ahora vamos a verlo desde el punto de vista de las redes sociales y quien tenga acceso a ellas.

Cuando accedemos a una de nuestras redes sociales, se graba todo, se graba, por ejemplo, si accedemos con móvil, tablet u ordenador de sobremesa, la hora y el lugar desde el que accedemos, el sistema operativo que usamos, el tipo de navegador, el ancho de nuestra página, la última página que hemos visitado, y, desde luego, nuestra IP, por tanto, también se está grabando si accedemos desde wifi o por conexión directa 3 ó 4G. Así que puede reconstruirse la historia que antes he descrito desde la siguiente óptica:

Nuestro protagonista se conecta el sábado a las 8:35 desde una ubicación determinada ―su casa― accedió mediante la aplicación de Facebook que tenía en el móvil, contestó a su amigo de la primo ―nosotros somos quienes describimos las relaciones en facebook― algo relacionado con Messi ―sí, esto también es catalogado, pues es muy importante para los gurús del márketing―, en Twitter se hace eco del chiste del presidente de gobierno ―ya conocemos su tendencia política―, conocemos quienes le han escrito a su cuenta de Google y cuál ha sido su reacción ante ese mail. Ha puesto 10€ de gasolina 98 a las 9:43 ―llegado el caso la gasolinera tiene cámaras― y lo ha pagado con la tarjeta de crédito de su banco número tal. No ha ido al centro comercial por el camino más corto, lo sabemos por el GPS de su móvil, aparca en la puerta de un bar. Usa la talla XXL de camiseta y de pantalón la XL en lo que ha invertido 44.54€ en total, pero con su tarjeta de crédito ―que caduca el próximo enero― lo pagará el mes que viene. En la puerta del bar donde tiene aparcada la moto, se encuentra con su novia a las 11:17 horas, y tomaron unas patatas bravas con cerveza ―ellos mismos lo tuitearon― a su amigo, Fran ―el de Huelva― le gusta la foto de las patatas bravas.

Y así… podíamos seguir hasta obtener un perfil completo de ese Don Nadie, que si bien no nos aporta nada especial, sí que unido al ejército de «donnadies» que, es verdad, llevan vidas grises aburridas y previsibles, sí podemos coleccionar todos esos datos porque a las empresas de márketing les interesa muchísimo.

Clave pública @pedroruizhidalg.pub.key
#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel

manual de gpg (PGP)

No Comments

Extracto

@pedroruizhidalg― PGP,  fue considerada por el gobierno de Estados Unidos como el mayor de los secretos. Tan secreto como el código de lanzamiento de los misiles nucleares. En buena medida, los códigos de los misiles dependían del código PGP. Un día, alguien publicó este código en una web. Aunque hubieron sospechosos no se pudo determinar quien era el «culpable».  La historia es apasionante, y algo farragosa. GPG es un sistema multiplataforma de gestión de llaves utilizado para el cifrado y firma digital de mensajes y archivos. Es un software libre liberado bajo la licencia GPL e implementa el estándar OpenPGP. GPG puede comunicarse con la versión actual de PGP y con cualquier otro sistema que implemente el estándar OpenPGP. GPG es un software híbrido de cifrado que combina tanto criptografía simétrica o de clave privada y criptografía asimétrica o de clave pública.

Nomenclatura y abreviaturas usadas

Criptografía simétrica.
Criptografía asimétrica.
RSA: En criptografía, RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977. Es el primer y más utilizado algoritmo de este tipo y es válido tanto para cifrar como para firmar digitalmente.
GPG: GnuPG.

Descripción

GPG es un sistema de criptografía de clave pública. Su código es libre, abierto y gratuito. Es multiplataforma, puede ser instalado en Linux, Windows y otros sistemas. De facto viene instalado en la mayoría de las distribuciones Linux. La instalación, si fuera necesario, en ubuntu sería así:

$ sudo apt-get install gnupg
$ gpg < /dev/null

Esta última línea dará un error. Gracias a la ejecución con ese error se han creado los directorios y los archivos de configuración necesarios. Continuamos con la instalación:

$ cp /usr/share/gnupg/options.skel ~/.gnupg/gpg.conf
$ gedit ~/.gnupg/gpg.conf &

Esto debería abrir el archivo de configuración de nuestro usuario. Buscamos la línea keyserver-options auto-key-retrieve y eliminamos el símbolo «#» que debe tener a la izquierda. Si no lo tuviera lo dejamos tal cual. Guardamos y salimos.

Creación de la pareja de claves
$ gpg --gen-key
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Por favor seleccione tipo de clave deseado:
 (1) RSA y RSA (predeterminado)
 (2) DSA y Elgamal
 (3) DSA (sólo firmar)
 (4) RSA (sólo firmar)
¿Su selección?: 

Si nuestra intención es tan solo firmar, cualquiera de las opciones nos sirve. Si, como es lógico, ademas, queremos cifrar mensajes de forma que únicamente el receptor pueda descifrarlo y trabajar con el contenido que le enviamos, recomiendo la opción 1.

DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits

Una clave de 1024 es considerada como débil. 4096 puede ser lento. Mi clave personal es de 2048. Seguidamente nos reguntará acerca de la caducidad de la clave.

Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

Supongamos que se usa la clave para enviar trabajos de un curso que terminará en un año, nuestra respuesta sería 1y. 0 para que la clave no expire jamás.

Tras esto nos pedirá algunos datos personales. Es importante dar los correctos, ya que como veremos más adelante, nuestra clave terminará en servidores de claves a nivel mundial. Si nuestra clave no nos representa, simplemente no es confiable. En Linux, generalmente no vas a tener problemas. Si trabajas en Windows te recomiendo no usar acentos tanto en el nombre como en el resto de la información que suministres. Cuando suministres la información el programa te insta a que lo revises cuidadosamente. Así:

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Fulano De Tal (Mi empresa) <fulanodetal@miempresa.com>"
Real name: Fulano De Tal
Email address: fulanodetal@miempresa.com
Comment:
You selected this USER-ID:
"Fulano De Tal <fulanodetal@miempresa.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o

Podemos encontrar que en vez de pedir (O)kay pide (V)ale.

You need a Passphrase to protect your secret key.
Enter passphrase:
Repeat passphrase:

Si estamos trabajando desde un terminal gráfico, vuestro sistema os podría solicitar la contraseña en una ventana emergente. En cualquier caso, suministrar una contraseña que sea segura, que contenga números y símbolos, que no sea una palabra del diccionario, una fecha de nacimiento, o una matrícula. Esta palabra de paso es tu única defensa ante los posibles usos inadecuados. De ahí la importancia de que sea segura.

Ahora viene la parte que me gusta, GPG te invita a que hagas cosas con las ventanas, con el ratón con los discos duros, que abras carpetas, que mires fotos, compiles programas y cosas así. Es porque está calculando números aleatorios con nuestros procesos. Pudiera darse el caso que tengas que volver a repetir ver carpetas porque le falten datos aleatorios, tú simplemente sigue las instrucciones. Un comando que crea bastante entropía es:

$ ls / -laR

Ábrelo en otro terminal. Finalmente:

gpg: key E0CABB25 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid:
2 signed:
0 trust: 0-, 0q, 0n, 0m, 0f, 2u
pub
1024D/E0CBB25 2005-12-22
Key fingerprint = CEDB 1451 1F26 83D9 DB69 7ADA FFEE 1F18 E0CA 9E25
uid
Fulano De Tal <fulanodetal@miempresa.com>
sub
2048g/88885614 2016-12-31

Aquí es importante el número de usuario: E0CBB25, que es tu identidad en el anillo de claves. No te preocupes, siempre puedes volver a recuperarlo. No obstante también puedes usar como identidad tu correo o tu nombre.

¡IMPORTANTÍSIMO: Creación del certificado de revocación!

Seguidamente debes crear un certificado de revocación. Ya que en caso de que tus claves se vieran comprometidas, o tu contraseña averiguada (violada), debes tener las herramientas suficientes para revocar tus claves, tanto en tu propio ordenador con en los servidores de claves mundiales.

$ gpg --gen-revoke -armor --output revoke.key.asc E0CBB25

otra forma sería:

$ gpg --gen-revoke -armor --output revoke.key.asc fulanodetal@miempresa.com

y otra:

$ gpg --gen-revoke -armor --output revoke.key.asc 'Fulano de Tal'

Como resultado obtendrás un archivo llamado revoke.key.asc. La extensión asc es para indicarnos que la revocación la hemos creado en ascii y eso es debido a que hemos incluido en el comando el argumento –armor. Sin ese argumento la clave de revocación sería en formato binario, lo que nos supondría un problema para revocar mediante Internet, en caso de que nuestra clave esté en un servidor público.

Ya tenemos creada nuestro par de claves con el certificado de revocación.

Ejecución

La primera acción a realizar sería proteger nuestro certificado de revocación. Como nunca sabemos en qué circunstancias vamos a tener que realizar la revocación, si desde nuestro ordenador, desde otro, con nuestro sistema operativo, con Windows… en fin, hablamos de una circunstancia futura. Vamos a crear un archivo zip al que vamos luego cifraremos de forma simétrica.

$ zip revoke.zip revoke.key.asc
$ gpg -c revoke.zip

Desgraciadamente, el cifrado simétrico es el más débil de los cifrados, se trata de un archivo con una clave. Quien sepa la contraseña tendrá acceso al contenido. Esto lo realizamos para guardar el archivo en un dispositivo seguro, un cd, un dvd, un pen drive… Algo al que no tenga acceso nadie.

Ahora debemos borrar nuestro archivo revoke.key.asc de forma cuidadosa. Ya que un simple borrado no nos garantiza la eliminación del contenido del archivo en disco. Tan solo, lo elimina de los índices, si bien la información sigue ―o puede seguir― estando ahí.

Difusión de la clave pública

Vamos a crear un archivo en ascii para la difusión de la clave pública. Mediante el siguente comando.

$ gpg -a --export --output mi.pkey.asc fulanodetal@miempresa.com

o bien listando las claves que existen en nuestro sistema y eligiendo el id de usuario. Así:

$ gpg --list-keys
$ gpg -a --export --output mi.pkey.asc E0CBB25

El archivo mi.pkey.asc es nuestra clave. Obviamente el nombre es arbitrario, puedes elegir otro que te guste o se adecúe mejor a tus nemotécnicos.

Ahora tenemos varias opciones:

  • Copiar el archivo en un CD para entregar en mano a nuestros contactos.
  • Enviar nuestro archivo como adjunto a nuestros contactos como adjunto en emails.
  • Publicar en nuestra web nuestra clave pública. Mira la mía.
  • Enviar la clave a un servidor de claves.
    • Yo uso pgp.rediris.es. Redirige a http://www.rediris.es/keyserver/
    • Si en la cadena de búsqueda introducís mi nombre ‘Pedro Ruiz Hidalgo’ aparecen dos entradas. Ambas son mías. La que corresponde a 6-9-2003 ya no me pertenece porque perdí la clave de revocación. Eso estará ahí por los siglos de los siglos.
    • El servidor de rediris, igual que otros, comunica todas las identidades a otros servidores. De esta forma es fácil identificarnos para poder enviarnos mensajes cifrados.
    • Podemos crear nuestra identidad copiando la totalidad de nuestro archivo de clave pública y enviarlo desde web. Otra forma sería así:
$ gpg --keyserver pgp.mit.edu --send-keys E0CABB25
gpg: sending key E0CABB25 to hkp server pgp.mit.edu

La mayoría de los servidores de claves están conectados entre sí. Siempre puedes revocar la clave con el certificado de revocación. Si lo perdieras, la clave deja de pertenecerte. Así de crudo.

Importar la clave de pública de un amigo a nuestro anillo de claves

Supongamos que Silvia me envía un certificado. La voy a incluir en mi anillo de claves, pero como no la conozco en persona no firmaré su clave.

$ gpg --import silvia.pkey.asc
gpg: key E02BF32C: public key "Silvia Pérez <silvia.perez@empresadesilvia.com>" imported
gpg: Total number processed: 1
gpg:
imported: 1

En todo esto hay un punto débil. Que sería fabricar una clave con una identidad falsa y hacerla circular. De forma que os recomiendo que hagáis un uso muy paranóico de la seguridad de las claves.

La huella digital

Cuando importemos el certificado, antes darle carta de credibilidad, usamos la huella digital. Esta huella digital es fácil ser leída por teléfono ―siempre que la llamada la efectuémos nosotros―, entregada en mano, o por cualquier «canal seguro» que no nos dé absoluta confianza.

Listar una huella digital:

$ pgp --fingerprint 'Silvia'
pub   2048R/E02BF32C 2015-10-17
      Huella de clave = AC9E F5FD 1888 5BDE 0C6A  CAB· CE69 CDEF 20BA 9950
uid                  Silvia (Para propósitos de encriptación del sistema) <silvia.perez@laempresade silvia.com>
sub   2048R/E02BF32C 2015-10-17

Si la huella de la clave, transmitida por un «canal seguro» es correcta (AC9E F5FD 1888 5BDE 0C6A CAB· CE69 CDEF 20BA 9950) podemos firmar la clave de Silvia. Así:

$ gpg --sing-key silvia.perez@laempresadesilvia.com

O bien con su ID de usuario. GPG nos mostrará en pantalla información de Silvia, si estamos seguros pulsamos “sí”, no obstante, aún gpg duda de que quien esté tratando de firmar la clave sea realmente el usuario de así que pedirá la palabra de paso de quien está firmando. A partir de este momento la clave de Silvia queda unida a la mía, y, si yo envío mi clave pública estaré también enviando la de Silvia.

Firmar un documento
$ gpg --sign midocumento.doc

Pedirá la clave del usuario. Esto genera un documento llamado “midocumento.doc.gpg”. Este archivo .gpg  podemos entregarlo. Para comprobar la firma:

$ pgp midocumento.doc.gpg
gpg: Signature made vie 23 feb 2015 19:00:43 CET using DSA key ID E0CAFE95
gpg: Good signature from "Fulano de tal <fulanodetal@miempresa.com>"

Tras la comprobación de la firma tenemos otra vez los dos documentos. El original y el firmado pues gpg lo ha separado.

Cifrado para un destinatario en concreto

Expresamos en el recipiente “-r” la identidad del destinatario, bien mediante su Id. de usuario, su correo o simplemente su nombre. Si quiero encriptar un documento para que sea leído exclusivamente por Silvia:

$ gpg --encript -r Silvia documento.doc
Cifrado para varios destinatarios determinados

Ahora, además de cifrar para Silvia, voy a hacer que Antonio tenga también una copia de ese documento cifrado, pues se lo enviaré a ambos por correo. Así:

$ gpg --encrypt -r Silvia -r Antonio [-r otro] documento.doc

Epílogo

Estas son las operaciones básicas con gpg (PGP). Incluyo un buen manual de José Luis Díaz, GnuPG, realizado en 2006.

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

Clave pública: @pedroruizhidalg.pub.key

#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel

procesos en Linux

No Comments
linux shell bash

Extracto

@pedroruizhidalg― Linux tiene una forma más completa de ejecutar los procesos si lo comparamos con otros sistemas operativos. Nuestros procesos pueden ser parados, enviados al background, traidos de nuevo al foreground, abortados, y todo ello obteniendo una lista de los procesos que tenemos en ejecución. Veamos cómo.

Abreviaturas usadas

PID, abreviatura de Process ID. Identificación del proceso.
CPU, Unidad Central de Procesos del inglés “Central Process Unit”.

Descripción

Algunas ocasiones solicitamos un proceso en el terminal de Linux y tarda más de lo que habíamos previsto. En otras ocasiones, sabemos que lo que vamos a ejecutar va a tardar un buen rato y decidimos ejecutarlo en segundo plano (a esto lo llamaremos background). Otras veces simplemente queremos detener un proceso. Llamaremos al primer plano (foreground) a lo que se está ejecutando en el terminal. Veamos cómo.

Enviar un proceso directamente al segundo plano
$ [comando de linux] &

Como podéis observar al terminar el comando en andpersand (&) le indicamos a Linux que esa orden ha de ser ejecutada directamente en segundo plano. Independientemente de la duración de ese comando, nuestro terminal debe quedar libre para seguir trabajando. Automáticamente nos saldrá un número entre corchetes y otro junto a él. Este número entre corchetes es el número de tarea que como usuarios tenemos pendientes en segundo plano. El número que hay a continuación es el número de tarea que ese comando ocupa en el sistema.

Conocer los procesos que tenemos activos como usuario.
$ jobs
Traer un proceso de background a foreground
$ fg %numero-de-proceso-usuario

Siendo el número de proceso el número que aparece con el comando “jobs” entre corchetes. Por ejemplo para pasar de background a foreground el proceso 3:

$ fg %3

Se detiene inmediatamente un proceso mediante control-c. No obstante también podemos ordenarlo conociendo su número de proceso. Lo veremos más adelante.

Un proceso tan solo puede ser parado en foreground , la forma de detener un proceso es pulsando control-Z mientras está activo en primer plano. Veamos un ejemplo. Vamos a crear un proceso largo y lo paramos así:

$ ls / -laR > qqq

Esto empezará a incluir el contenido de todos los archivos del disco duro desde la raíz en un archivo que hemos llamado qqq. La forma de detener el proceso es pulsar control-Z. Debe aparecer el siguiente mensaje:

[1]+  Detenido                ls --color=auto / -laR > qqq

En ese momento este proceso no está ni en foreground ni en background. Está detenido.

Activar en background un proceso detenido.
$ bg %numero-proceso-usuario

En el caso del comando que tenemos ahora detenido sería así:

$ bg %1

Ejecución

La orden top nos lista en tiempo real todos los procesos que están activos en el sistema, aportándonos además más información. Para más información “man top”.

$ top

Una forma de obtener una “foto fija” de los procesos activos es así:

$ ps -aux

Como verás aporta, básicamente, la misma información que top pero no en tiempo real.

Parar un proceso conociendo su numero de tarea de usuario

Si deseamos eliminar un proceso conociendo su número de tarea de usuario lo hacemos de la siguiente forma. Supongamos que deseamos eliminar la tarea 5.

$ kill %5

O bien eliminarlo inmediatamente conociendo su PID que nos aporta los comandos top o ps -aux. Supongamos que queremos eliminar el proceso 5443

$ kill -9 5443

 Epílogo

Esto puede daros bastante juego a la hora de trabajar con procesos en Linux. Deberíamos desconfiar sistemáticamente de los procesos largos, de los que ocupen mucha memoria, y de los que ocupen mucha CPU. Esta información puede ser obtenida tanto con top como con “ps -aux”. Normal mente podemos echar un vistazo a los procesos copiándolos a un archivo de la siguiente forma.

$ ps -aux > procesos
$ gedit procesos &

Espero que este artículo os haya ayudado en vuestras dudas acerca de los procesos. Estaré encantado de atender vuestros comentarios.

Si te ha parecido que este artículo es de utilidad, puedes compartirlo, dar me gusta, incluirlo en tus redes sociales, rellenar la encuesta o todo junto.

#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel
Categories: Computación, linux, Tecnología, Tecnologías Tags: Etiquetas: ,

Script en php para desencriptar con gpg (PGP) de forma más cómoda

No Comments

Extracto

@pedroruizhidalg―Usar PHP como lenguaje de script para crear un programa que desencripte con el comando gpg (PGP).

Abreviaturas usadas

No descritas en este arículo

Descripción

Como primer paso es muy conveniente crear un directorio con permisos de ejecución y modificación de la variable de sistema $PATH.

En el directorio ~/.bin ejecutamos las siguientes órdenes para crear el archivo y asignarle permisos de ejecución.

$ touch ~/.bin/desencriptar
$ chmod +x ~/.bin/desencritar

Con nuestro editor preferido abrimos el archivo ~/.bin/desencriptar. Si no tienes mucha experiencia gedit es una buena forma de empezar. Teclea en un terminal de linux:

$ gedit ~/.bin/desencriptar &

Y coloca el siguiente contenido.

#!/usr/bin/php -q

Este script desencripta 

Saludos a la afición!!!

<?php

$archivo        = $argv[1];
$salida            = $argv[2];
$encriptar        = "gpg --output $salida --decrypt $archivo";

if(!file_exists($archivo))
{
    exit("no existe $archivo\n\n");
}

if(file_exists($salida))
{
    echo "el archivo $salida existe";
    exit("saliendo...\n\n");
}

echo shell_exec($encriptar);

?>

Guarda el archivo y lo tenemos listo.

Ejecución

$ desencriptar [archivo-encritado] [nombre-archivo-desencriptado]

Epílogo

Puedes ver el proceso de encriptación mediante PHP en un script similar.  Atenderé cualquier duda que me planteéis el los comentarios.

Si te ha resultado útil este artículo no estaría mal que lo hicieras saber, publicándolo, dándole me gusta, mediante la encuesta, en tus redes sociales.

#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel

pequeño script linux en php con gpg sin complicaciones

No Comments

@pedroruizhidalg―Cuando uso el comando gpg de Linux para encriptar me ocurre que el orden de los argumentos no me gusta. Yo lo hubiera diseñado de otra forma, pero es como es. Así que me he creado un pequeño programa en php al que le suministro los argumentos como me gusta. Cumple su misión pues a mí me sirve.

Ubicación y activación

Tengo un directorio oculto al que he llamado ~/.bin. Para que se ejecuten los scripts ―tengo muchos― que creo para linux hay que incluir el nombre de este directorio en la variable de sistema $PATH. El procedimiento es el siguiente:

  1. Editamos el archivo ~/.bashrc y en su última linea incluimos “export PATH=$PATH:~/.bin”. Realmente, en mi caso puse la ruta completa “/home/pedro/.bin”.
  2. Comprobar que está incluida mediante el comando de linux “echo $PATH”. En la retahila aparece el último debe ser nuestro .bin.
  3. mkdir ~/.bin
  4. cd ~/.bin
  5. touch encriptar
  6. chmod +x encriptar

Lo editamos con nuestro editor preferido y colocamos el siguiente código:

#!/usr/bin/php -q

<?php

$recipient         = (isset($argv[3])&&(strtolower($argv[3]=='pedro'))) ? 'E1AEA6C0' : 'B9CDAB41';
$recipiente        = ($recipient=='E1AEA6C0') ? 'Pedro Ruiz Hidalgo' : '@pedroruizhidalg';

?>

Este script encripta gpg (asimétrico) con el recipiente <?=$recipiente?>

Saludos a la afición!!!

<?php

$archivo        = $argv[1];
$salida            = $argv[2].".gpg";


$encriptar        = "gpg --output $salida --encrypt --recipient $recipient $archivo";



if(!file_exists($archivo))
{
    echo "no existe $archivo";
    exit();
}

if(file_exists($salida))
{
    echo "el archivo $salida existe";
    exit("saliendo...");
}

echo shell_exec($encriptar);

?>

Funcionamiento

En mi anillo de claves tengo varias identidades, una de ellas es “Pedro” y la otra es “@pedroruizhidalg”, a esto es a lo que gpg llama recipientes y podéis listar así

$ gpg --list-keys

allí podéis ver el número hexadecimal que vuestro anillo de claves asigna a cada “recipient” ―identidad, vaya―. En mi sistema quien firma por defecto es la identidad “@pedroruizhidalg” a no ser que especifique literalmente en el tercer argumento que se trata de “pedro”. El funcionamiento es este:

$ encriptar [archivo_existente] [nombre_del_archivo_de_salida] [opcionalmente "pedro"]

Espero que este script os sirva de ayuda. Podéis hacerme consultas, estaré encantado de atenderlas.

#aboutpedroruizhidalgo
[polldaddy poll=9120832]
♻ miotroblogsite ahorra papel