MLDonkey chrooted en OpenBSD
Primeramente instalamos chrootuid, el cual se encargará de hacer más sencilla la tarea de ejecutar un servicio de red en un entorno restringido y con permisos limitados:
# pkg_add chrootuid-1.3.tgz
# wget http://hanz.nl/download/mldonkey-2.7.0.static.i386-OpenBSD.tar.gz
# tar xfvvz mldonkey-2.7.0.static.i386-OpenBSD.tar.gz
# mkdir /var/mldonkey
# cd /var/mldonkey
# mv mldonkey-distrib-2.7.0/ core
# ls
core mldonkey-2.7.0.static.i386-OpenBSD.tar.gz
# mkdir /var/mldonkey/src
# mv mldonkey-2.7.0.static.i386-OpenBSD.tar.gz src/
# mkdir /var/mldonkey/etc
# mkdir /var/mldonkey/dev
# mknod -m 666 /var/mldonkey/dev/null c 2 2
# mknod -m 644 /var/mldonkey/dev/urandom c 45 2
# cp /etc/resolv.conf /var/mldonkey/etc/
# groupadd _mldonkey
# useradd -g _mldonkey -d /var/mldonkey/ -s /bin/sh
sh sha1
# useradd -g _mldonkey -d /var/mldonkey/ -s /bin/sh _mldonkey
# chown -R _mldonkey:_mldonkey /var/mldonkey/
# /usr/local/sbin/chrootuid /var/mldonkey/ _mldonkey core/mlnet -stdout
2006/01/09 09:41:55 Starting MLDonkey 2.7.0 ...
2006/01/09 09:41:55 Language EN, locale ASCII
2006/01/09 09:41:55 MLDonkey is working in /root/.mldonkey
2006/01/09 09:41:55 [DNS] Resolving [bromo.enlugo.com] ...
2006/01/09 09:41:56 [DNS] Resolving [www.mldonkey.net] ...
2006/01/09 09:41:56 [cCO] Options correctly saved
2006/01/09 09:41:56 Check http://www.mldonkey.net/ for updates
2006/01/09 09:41:56 enabling networks: Donkey BitTorrent FileTP
2006/01/09 09:41:56 disabled networks: Fasttrack G2 Gnutella
2006/01/09 09:41:56 [EDK] Updating options to version 1
2006/01/09 09:41:57 To command: telnet 127.0.0.1 4000
2006/01/09 09:41:57 Or with browser: http://127.0.0.1:4080
2006/01/09 09:41:57 For a GUI check out http://sancho-gui.sourceforge.net
2006/01/09 09:41:57 Connect to IP 127.0.0.1, port 4001
2006/01/09 09:41:57 If you connect from a remote machine adjust allowed_ips
2006/01/09 09:41:57 [cCO] Options correctly saved
2006/01/09 09:41:57 Core started
...
ml_tcp="{ 4000, 4010, 4080, 4661, 4662, 9512 }"
ml_udp="{ 53, 4665, 4672, 161, 199, 9512, 6667 }"
ml_range="{ 6881:6999 }"
...
pass in log quick on $ext_if inet proto tcp from any to any port $ml_tcp flags S/SA keep state
pass in log quick on $ext_if inet proto tcp from any to any port $ml_range flags S/SA keep state
pass in log quick on $ext_if inet proto udp from any to any port $ml_udp keep state
De todas formas podemos encontrar más información aquí y aquí. Como todos los servicios que instalamos, deben tener su entrada propia en rc.local:
# MlDonkey
if [ -x /var/mldonkey/core/mlnet ]; then
echo -n ' mldonkey'; /usr/local/sbin/chrootuid /var/mldonkey/ _mldonkey core/mlnet & > /dev/null
fi
Para resolver el problema que anteriormente he citado sobre el nºde archivos abiertos por el usuario podemos utilizar ulimit instantaneamente o configurarlo permanentemente en login.conf.
:openfiles-cur=1024:\
Y el resto ya lo sabeis de la anterior nota:
# telnet localhost 4000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to MLDonkey 2.7.0
Welcome on mldonkey command-line
Use ? for help
> add_user admin ****
Password changed
> auth admin ****
Full access enabled
> set allowed_ips "127.0.0.1 192.168.0.255"
option allowed_ips value changed
> save
options and sources saved
> q
#
Actualización: Hans van Leeuwen ha actualizado el binario a la versión 2.7.2, podeis encontrar más información en su howto.