1024 Ports behalte ich für mich

Unter Linux (und UNIX) kann man die Ports bis 1024 (die sogenannten Well Known Ports) nur dann binden, wenn man über root Rechte verfügt. Das ist natürlich unschön wenn man einen Server z.B. auf Port 80 laufen lassen will, dieser aber keine dementsprechenden Rechte bekommen darf.

So läuft bei mir zum Beispiel ein Etherpad Light auf dem Port 9001. Jetzt wäre es natürlich schön wenn dieser auf dem Port 80 erreichbar wäre. Dazu würde eine iptables Regel reichen:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9001

Das Problem an dieser Regel ist zum ersten das die Anwendung damit unter Port 80 und Port 9001 zu erreichen ist. Das zweite Problem ist das jeder unprivilegierte Nutzer ebenfalls den Port 9001 öffnen kann und damit auch die Daten von Port 80 bekommt. Und es gibt auch noch ein drittes Problem. Das ganze funktioniert nicht auf Maschinen die mit dem Linux VServer betrieben werden. Dort funktioniert das IP Tables nämlich nicht:

iptables v1.4.4: can't initialize iptables table `nat': Permission denied (you must be root)

Eine weitere Variante wäre setpcaps was allerdings problematisch ist da man diese einem Programm geben muss, was dann bei Skripten nicht funktionieren sollte:

setcap 'cap_net_bind_service=+ep' /path/to/program

Weitere Informationen gibt es unter:
http://www.wensley.org.uk/info#setpcaps
http://serverfault.com/questions/112795/how-can-i-run-a-server-on-linux-on-port-80-as-a-normal-user
http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-li

Etherpad Light auf einem Ubuntu Server installieren

Nachdem gestern Etherpad Light vorgestellt wurde, dachte ich mir das man das ja ruhig mal ausprobieren kann. Bei Etherpad Light handelt es sich um eine Portierung und Neuausrichtung von Etherpad welches nun unter node.js läuft und somit von Java losgelöst ist.

Um es auf einem Ubuntu Server zu installieren müssen erst einmal ein paar Pakete installiert werden:

apt-get install gzip git-core curl python libssl-dev

Anschließend muss node.js heruntergeladen werden, compiliert und installiert werden:

wget http://nodejs.org/dist/node-v0.4.11.tar.gz
tar xf node-v0.4*
cd node-v0.4*
./configure && make && make install

Jetzt fehlt nur noch der Paketmanager für Node:

curl http://npmjs.org/install.sh | sh

Nun legen wir auf dem System einen Nutzer pad an und loggen uns mit ihm ein:

adduser pad
su pad
cd /home/pad/

Im nächsten Schritt wird das Git Repository von Etherpad Light geklont.

git clone 'git://github.com/Pita/etherpad-lite.git'

Nun müssen nur noch ein paar Abhängigkeiten installiert werden:

cd etherpad-lite/bin/
 ./installDeps.sh

Nach der Konfiguration (settings.json) kann man das ganze auch schon starten:

screen ./run.sh

Sollte bei der Benutzung von Screen folgende Meldung (oder ähnlich) erscheinen:

Cannot open your terminal '/dev/pts/5' - please check.

so hilft es diesem (Pseudo)Terminal weitere Rechte zu geben:

chmod 777 /dev/pts/5

und es danach nochmal zu versuchen.

Weitere Informationen gibt es unter:
http://pitapoison.de/
http://www.golem.de/1108/86036.html
http://pitapoison.de/wie-etherpad-lite-entstand
https://github.com/Pita/etherpad-lite/blob/7e4bba0e31d600a5d1d3833211252b1472f07f2c/README.md

UniOS und AndLinux

Nach dem Beitrag von Golem über UniOS kam anhand eines Screenshots schnell die Vermutung auf das im Hintergrund AndLinux arbeitet:

Bei AndLinux handelt es sich um ein Ubuntu (Maik Mixdorf sagt ja selber das das System auf Ubuntu 10.10 aufbaut) welches sich nahtlos in Windows 2000 und höher integriert. So langsam sollten die UniOS Leute einfach mal reinen Tisch machen, denn mittlerweile artet das doch in einer Hexenjagd aus, wenn man sich die Kommentare bei Facebook so anschaut.

AndLinux würde auch erklären warum im Moment nur eine 32 Bit Version von UniOS angeboten wird, es gibt nur eine dementsprechende Version von AndLinux. Alles in allem denke ich ist UniOS in etwa so aufgebaut:

  • Windows XP mit ein paar veränderten Designs und Bootanimationen
  • AndLinux für die Ausführung von Linux Anwendungen
  • ein paar Anwendungen die nicht nach Windows aussehen (Explorerersatz et cetera)

Gerade gab es bei Golem ein Update:

Nachtrag vom 23. August 2011, 17:40 Uhr:

Am Dienstag hatte Maik Mixdorf einigen seiner Kritiker das System vorgeführt. Dabei hat sich bestätigt, was einige Anhand unseres Artikels bereits vermutet hatten: Es handelt sich bei UniOS um ein angepasstes Windows XP, auf dem andLinux läuft. Bei dem verwendeten Theme könnte es sich um GSM VS handeln, wie uns ein Leser per E-Mail mitgeteilt hatte.

Weitere Informationen gibt es unter:
http://andlinux.org
https://seeseekey.net/archive/3976
https://www.facebook.com/bs.uni.os

Minecraft Server unter Ubuntu aufsetzen

Um einen Minecraft Server aufzusetzen muss im ersten Schritt java mittels

apt-get install openjdk-6-jre-headless

installiert werden. Nun kann die Version des installierten Javas (java -version) bestimmt werden. Diese sollte 1.6 oder höher sein:

OpenJDK Runtime Environment (IcedTea6 1.9.9) (6b20-1.9.9-0ubuntu1~10.04.2)
OpenJDK Server VM (build 19.0-b09, mixed mode)

Nachdem damit die Grundvoraussetzungen erfüllt sind wird mittels

adduser minecraft
su minecraft

ein Nutzer für den Server angelegt und in diesen Nutzer gewechselt. Nun schreiben wir uns ein kleines Startskript mit dem Namen start-server.sh:

#!/bin/sh
wget -N http://www.minecraft.net/download/minecraft_server.jar
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui &

Dieses Skript lädt die aktuelle Version herunter und führt sie im Hintergrund aus. Nun fehlt nur noch ein Stopskript, welches auf den Namen stop-server.sh hört:

#!/bin/bash
pkill -SIGTERM java
sleep 5
pkill -SIGKILL java

Nach dem ersten Start des Servers werden einige Konfigurationsdateien angelegt. In die Datei ops.txt tragen wir den oder die Operatoren für den Server ein. In der Datei server.properties sind die grundlegenden Einstellungen für den Server zu finden. In meinem Fall wird die Whitelist aktiviert indem die Eigenschaft white-list auf true gesetzt wird. in der whitelist.txt kann man dann die entsprechenden Nutzer eintragen welche sich in die Welt einloggen dürfen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Minecraft
http://www.debianroot.de/server/minecraft-server-erstellen-auf-einem-debian-server-1297.html

Meine Samba Freigabe

Ich betreibe zu Hause einen Sambaserver. Auf diesem habe ich eine Freigabe auf die jedermann zugreifen darf. Die Gäste sollen dabei Dateien mit den Rechten eines bestimmten Users anlegen und bearbeiten dürfen. In der /etc/samba/smb.conf sieht das ganze dann so aus:

[Daten]
 path = /home/seeseekey/share
 public = yes
 writable = yes
 guest ok = yes
 create mode = 0664
 directory mode = 0775
 force user = seeseekey
 force group = seeseekey

Neugestartet wird der Samba Server in neueren Versionen von Ubuntu im übrigen mittels:

sudo initctl restart smbd

und nicht wie früher mittels:

sudo /etc/init.d/samba restart

Weitere Informationen gibt es unter:
http://wiki.ubuntuusers.de/samba_server
http://wiki.ubuntuusers.de/Samba_Server/smb.conf