domingo, enero 22, 2017

Crear usuarios en OS X desde la línea de comandos

Para añadir desde la línea de comandos un usuario en MacOS X es necesario usar el comando dscl - Directory Service command line utility -, cuya misión es interaccionar con el servicio de directorios de la máquina local o de una máquina remota.

Por ejemplo, para listar todos los usuarios que hay en la máquina se puede usar la siguiente orden que generará la salida que se muestra en el segundo bloque.

dscl . -list /Users
...
_amavisd
_appleevents
_appowner
_appserver
...

Si se quiere ver todos los atributos de los registros de usuario se puede ejecutar con las siguientes opciones y puede verse parte de la salida en el siguiente bloque:

dscl . -readall /Users
GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000053
NFSHomeDirectory: /var/virusmails
Password: *
PrimaryGroupID: 83
RealName:
AMaViS Daemon
RecordName: _amavisd amavisd
RecordType: dsRecTypeStandard:Users
UniqueID: 83
UserShell: /usr/bin/false

Para añadir un usuario nuevo, será necesario crear un nuevo registro bajo /Users y añadir una serie de atributos que configuren la cuenta. Para proceder a esta creación y modificación de atributos, será necesario ejecutar el comando dscl desde una cuenta que tenga los privilegios adecuados. Si se quiere crear un usuario mldonkey, cuyo directorio $HOME sea /Users/mldonkey, con contraseña password1234, los pasos necesarios son:

# Crear el nuevo registro
sudo dscl . -create /Users/mldonkey
# Añadir el atributo que define el shell
sudo dscl . -create /Users/mldonkey UserShell /bin/bash
# Crear el atributo donde se guarda el nombre
sudo dscl . -create /Users/mldonkey RealName "Usuario par ejecutar mldonkey"
# Añadir el directorio $HOME
sudo dscl . -create /Users/mldonkey NFSHomeDirectory /Users/mldonkey

Ahora, nos falta dos atributos importantes: El UniqueID, el número que define el uid del usuario y el PrimaryGroupID , el número que identifica el grupo primario del usuario. Normalmente, usamos el grupo llamado staff, pero será necesario ver cual es su GroupID. Para ello con el siguiente comando nos devolverá el valor que se necesita:

dscl . -read /Groups/staff|grep PrimaryGroupID
PrimaryGroupID: 20

El un sistema de tipo Unix, el uid es único. Normalmente, OS X asigna los uid de usuarios normales a partir de 500, y este debe ser único. ¿Cómo se puede generar el siguiente libre?. Pues con esta orden:

dscl . -readall /Users|grep UniqueID |awk -v max=0 '{if($2>max){v=$2; max=$2}} END{print v+1 }'

Una vez que se tienen esos dos números, se añaden al registro los atributos, se establece la password, se crea el directorio raíz del usuario y se le ponen los permisos adecuados. Por ejemplo, en mi sistema el siguiente uid libre es el 507 y el PrimaryGroupID de staff es 20

# Añadir el uid
sudo dscl . -create /Users/mldonkey UniqueID 507
# Añadir el atributo con el grupo primario
sudo dscl . -create /Users/mldonkey PrimaryGroupID 20
# Establecer la password. Ni se te ocurra usar una como la de ejemplo
sudo dscl . -passwd /Users/mldonkey password1234
# Crear el directorio $HOME
sudo mkdir /Users/mldonkey
# Establecer permisos de usuario en el $HOME
sudo chown mldonkey /Users/mldonkey
# Establecer el grupo en el $HOME
sudo chgrp staff /Users/mldonkey
# Establecer los permisos
sudo chmod 755 /Users/mldonkey

Por último, decir que mejor hacer un script que se encargue de todo :)

sábado, enero 21, 2017

La parroquia de mi pueblo en 3D

Mi prima Mª Dolores Mora se ha currado un estupendo modelo 3D de la parroquia de mi pueblo, la Iglesia de Santo Domingo de Guzmán. Una particularidad de este templo es su españada, no muy habitual en las iglesias de la costa de Huelva.

vim pathogen

pathogen es un script de Vim que permite manejar con facilidad la opción runtimepath del editor: La lista de directorios donde el editor buscará los diferentes scripts y ficheros necesarios para su ejecución, permitiendo que residan en directorios distintos bajo $HOME/.vim/bundle, siendo por tanto muy sencillo de instalar nuevas extensiones de Vim. Su autor es Tim Pope y puede encontrarse el código fuente del mismo en el repositorio de pathogen.

Instalar el plugin es el $HOME de un usuario es muy sencillo:

$ mkdir -p ~/.vim/autoload ~/.vim/bundle
$ curl -LSso ~/.vim/autoload/pathogen.vim \
    https://tpo.pe/pathogen.vim

Modificar el $HOME/.vimrc del usuario para que al principio incluya la siguiente llamada:

" Pathogen
execute pathogen#infect()

Una vez configurado de esta manera, se podrán añadir nuevos plugins y ficheros de runtime en $HOME/.vim/bundle, cada uno en un directorio separado.

Por último: No me gusta demasiado bajarme un fichero de script directamente de Internet y hacer que el vim lo ejecute: Aunque los troyanos de vim no suelen ser muy normales, se tiene acceso a todo el sistema y se puede colar un "bicho" al bajarlo con curl. Prefiero bajarlo del repositorio del autor y comprobarlo.

Otro sistema de este tipo, que no he probado es

miércoles, diciembre 21, 2016

El dron del USNS Bowditch y sus mediciones: ¿Caracterizando el canal SOFAR?

Esta última semana se ha publicado la noticia de la captura y posterior devolución por parte de China de un dron submarino encargado de hacer mediciones de temperatura , salinidad y otras parámetros no clasificados de la columna de agua en mar de China, en una zona donde existen tensiones estratégicas entre varios países. El dron pertenece al USNS Bowditch, buque de la clase Pathfinder encargado de diversas investigaciones oceanográficas y operado por la US Navy. Fue capturado por la marina China a unas 50 millas al noroeste de la Bahía de Súbic en Filipinas.

El dron , Slocum Glider,no tiene equipamiento clasificado. Sus especificaciones pueden consultarse en la web del fabricante y el modelo que es Slocum G2 Glider. Con apenas 50 kg de peso, una longitud de 1.5 metros y 22 cm de diámetro, puede operar en dos rangos de profundidades: de 4 a 200 metros y de 40 a 10000 metros (data sheet completo). Se configura con un conjunto de sensores de entre más de cuarenta a elegir y dispone de diversos enlaces - incluido con la red iridium - para mandar los datos que recoge.

La temperatura, salinidad y presión pueden parecer anodinos datos oceanográficos, pero permiten caracterizar una capa de agua llamada el Canal SOFAR o deep sound channel: La principal propiedad de esa capa es que la velocidad de propagación del sonido en la misma es mínima y permite que una onda sonora de baja frecuencia viaje por el mismo miles de kilómetros antes de que se disipe. La localización de esta capa depende de la temperatura, la presión y la salinidad. Colocando hidrófonos en el mismo se puede usar par detectar submarinos, cosa que los Estado Unidos hicieron durante la Guerra Fría con el sistema SOSUS.

Simplemente tengo la teoría que los datos que recogía el dron tienen un doble objetivo: Por un lado el estudio oceanográfico y por otro lado estudiar dónde en el Mar de China se encuentra dicho canal, que es vital para la guerra submarina (y no se puede olvidar que en la Bahía de Subic, los EEUU tienen una base naval)

martes, noviembre 22, 2016

Tor: ¿Bloqueado en algunos países?

Tor: ¿Bloqueado en algunos países?

No sigo demasiado las novedades del Proyecto Tor, un software y una serie de servidores que permite realizar una navegación más o menos anónima y que intenta proteger el tráfico de nuestro ordenador de miradas indiscretas. Es usado por muchas personas en países donde la censura y el análisis del tráfico de red a través de técnicas DPI están a la orden del día para intentar localizar a ciudadanos desafectos. Hoy, vía @revskills llegaba a un mensaje mandado a la lista de correos del proyecto Tor donde se habla que hay ciertos países que han conseguido dificultar - incluso bloquear - su uso: están a la orden del día

I increasingly think we need a network team engineer who focuses on the censorship side of things. We have a growing number of countries where Tor is being blocked in new and surprising ways -- Kazakhstan, Egypt, Turkey, etc -- and there is nobody on the Tor side who is investigating them or working to fix them or even keeping up-to-date on what's happening. I get that there's value in having another more generic network team developer too, so I don't want to stomp in and declare this as a priority over that though.

Si realmente eso lo han conseguido países como Turquía o Egipto, me pregunto que no serán - y que planes no tendrán - países tecnológicamente más avanzados. Siempre hay que recordar que en esto de la censura en Internet, no importa que un % bajo de la población lo use, lo importante es que el nivel sea lo suficientemente complejo para que la inmensa mayoría de la misma no pueda acceder a estar redes. El Gran Firewall de China es un ejemplo de esto.

Sobre la censura de Tor en Egipto, se puede leer un Egypt: Media censorship, Tor interference, HTTPS throttling and ads injections?