CouchDB: Datenbanken umbenennen

Logo der Datenbank "CouchDB"

Um eine Datenbank von CouchDB umzubenennen, muss ihr Name lediglich im Dateisystem geändert werden. Die Datenbanken liegen im Verzeichnis /var/lib/couchdb.

Folgende Befehle habe ich unter CentOS 6 genutzt. Es werden root-Rechte benötigt.

# Datenbank stoppen (wichtig!)
/etc/init.d/couchdb stop

# In das Daten-Verzeichnis von CouchDB wechseln
cd /var/lib/couchdb/

# Datenbank umbennnen
mv alter_name.couch neuer_name.couch

# Zugehörige Design-Dokumente umbenennen
mv .alter_name_design .neuer_name_design

# Datenbank wieder starten
/etc/init.d/couchdb start

Ubuntu: Schreibrechte für Gruppe

Logo des freien Betriebssystems "Ubuntu"

Ich musste kürzlich feststellen, dass sämtliche von mir erstellten Dateien und Verzeichnisse auf meinem Entwicklungsserver (Ubuntu 12.04) standardmässig Gruppen-Schreibrechte bekommen haben. Das Problem war schnell gefunden:

mw@server:~$ umask
0002

Die umask war also “falsch”. Da Ubuntu standardmässig sogenannte User-Groups1 verwendet, ist das auch nicht weiter tragisch, da andere Benutzer des Systems trotzdem keine Schreibrechte bekommen. Passt man aber nicht auf und überträgt so eine Datei oder ein Verzeichnis auf ein anderes System, kann es zu ungewollten Sicherheitslücken kommen.

Der Wert für umask wird mittlerweile nicht mehr in der /etc/profile gesetzt, sondern in der Datei /etc/login.defs. Allerdings stand der Wert bereits wie gewünscht auf 022. Der Kommentar darüber gibt aber Aufschluss:

If USERGROUPS_ENAB is set to “yes”, that will modify this UMASK default value for private user groups, i. e. the uid is the same as gid, and username is the same as the primary group name: for these, the user permissions will be used as group permissions, e.g. 022 will become 002.

Also muss man die Option USERGROUPS_ENAB auf no setzen.

USERGROUPS_ENAB no

Nach einem erneuten Login werden die Rechte jetzt wie gewünscht gesetzt. Natürlich gilt das nur für neue Dateien. Mit find lassen sich aber schnell und einfach alte Dateien ändern:

find /path/to/fix -type f -exec chmod 644 {} \;
find /path/to/fix -type d -exec chmod 755 {} \;

Achtung! Die Befehle sollte man wirklich nur ausführen, wenn man ganz genau weiß was man da tut! Damit kann man sich sehr schnell Probleme einfangen!

1 Das bedeutet, dass jeder Benutzer seine eigene Gruppe bekommt, in der standardmässig nur er ist. Eine Alternative wäre eine “globale” Gruppe wie “users”, in der alle Benutzer des Systems sind.

Reguläre Ausdrücke mit reFiddle testen

/reFiddle+/

Der Dienst jsFiddle ist mittlerweile recht bekannt und ist sehr praktisch um kleinere JavaScript-Snippets zu testen und zu teilen. Nun bin ich auf reFiddle gestoßen. Der Dienst ist so ähnlich aufgebaut, aber auf die Entwicklung von regulären Ausdrücken ausgerichtet.

Die Snippets können natürlich auch gespeichert und geteilt werden. Sehr praktisch!