ryu's blog just a few lines of code

12Mar/100

Check CPU virtualization capability on Linux

egrep '(vmx|svm)' --color=always /proc/cpuinfo

8Feb/100

MySQL Dump Backup-Rotation

#!/bin/bash

TIME1=$(date +%d_%m_%Y__%H_%M_%S)
user="root"
passwd="xxxxxx"

# blabla db
db="blabla"
mysqldump -c -f -Q --user=${user} --password=${passwd} --host=localhost ${db} | gzip -f > /root/backup/db_${db}.$TIME1.sql.gz
find /root/backup/db_${db}.*.sql.gz -mtime +3 -exec rm {} ;

Tagged as: , , No Comments
8Feb/100

compress/decompress tar.gz

compress:

tar -czvf archive.tgz files/

decompress:

tar -xzvf archive.tgz

Tagged as: , No Comments
21Jan/100

Select Java version to be used on Ubuntu

sudo update-alternatives --config java

Tagged as: , No Comments
7Jan/100

Howto deliver all messages left in your mailq.

Just type in

sendmail -q

and all your messages left in the mailq will be delivered!

Tagged as: , , No Comments
30Jun/090

HOWTO: chmod, Unix-Dateirechte verstehen und richtig setzen

Auszug: http://de.wikipedia.org/wiki/Chmod

chmod (von englisch: change mode) ist ein Kommandozeilenprogramm unter Unix, mit dem sich die klassischen Unix-Dateiattribute (Zugriffsrechte) verändern lassen. Das chmod-Kommando gibt es bereits seit der ersten Version des AT&T-Unix (Ende der 1970er Jahre).
Die Attributsänderungen lassen sich nur von dem Besitzer der Datei oder dem root-Benutzer durchführen.

Ruft man die chmod Manpage auf wird man folgendes lesen können:

NAME
chmod - change file mode bits

SYNOPSIS
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

Im Laufe dieses Artikels werde ich darauf eingehen wie man die Rechtemaske mit Hilfe der symbolischen Notation oder der numerischen Notation (Oktalnotation) setzen kann.

Es gibt 3 Benutzerklassen:

1. Eigentümer (Owner)
2. Gruppe (Group)
3. Sonstige (World, Others)

Ebenfalls gibt es 3 grundlegende Rechte:

1. Lesen (Read) - r [R-Bit]
2. Schreiben (Write) - w [W-Bit]
3. Ausführen (Execute) - x [X-Bit]

Legt man in einem Verzeichnis neue Dateien oder Unterverzeichnisse an, werden die Rechte nicht vererbt. Sie müssen ggf. angepasst werden. Dies beruht darauf, dass keine ACL verwendet wird.

Ich möchte nun in der Unix-Shell die aktuellen Rechte aller Dateien eines Verzeichnises einsehen. Ich befinde mich in diesem Verzeichnis und rufe folgendes auf:

# ls -l

Als Rückmeldung erhalte ich nun zb diese Liste:

drwxrwxrwx 6 root root 4.0K 2008-11-19 18:59 .
drwx------ 9 root root 4.0K 2009-06-30 10:51 ..
drwxrwxrwx 2 root root 4.0K 2008-11-19 18:59 doc
-rw-r--r-- 1 root root 631 2008-05-07 14:19 Makefile.am
-rw-r--r-- 1 root root 22K 2008-11-19 10:03 Makefile.in

Wir lassen . und .. außer Acht und sehen uns die 3 anderen Zeilen an. Ganz links sehen wir die aktuellen Dateirechte der 3 Eintäge. 'doc' ist ein Verzeichnis, 'Makefile.am' und 'Makefile.in' sind Dateien. Dies erkennt man, da bei dem Verzeichnis vor den Rechten ganz links ein 'd' steht und bei den beiden Dateien ein '-'.

Sehen wir uns nun die Datei 'Makefile.am' an. Die Rechtemaske sieht wie folgt aus: rw-r--r--
Trennen wir diese Zeichenkette in 3 Teile auf:

rw-
r--
r--

Wir können daraus folgendes auslesen:

Eigentümer: Lesen [JA], Schreiben [JA], Ausführen [NEIN]
Gruppe: Lesen [JA], Schreiben [NEIN], Ausführen [NEIN]
Sonstige: Lesen [JA], Schreiben [NEIN], Ausführen [NEIN]

Würde man diese Rechtemaske nun oktal darstellen, würde sie so aussehen: 644

Oktale Notation

1. Lesen (Read) - 4
2. Schreiben (Write) - 2
3. Ausführen (Execute) - 1

Hierzu 2 Beispiele:

Dateirecht: 755
Symbolische Notation: rwxr-xr-x

Eigentümer: Lesen [JA], Schreiben [JA], Ausführen [JA]
Gruppe: Lesen [JA], Schreiben [NEIN], Ausführen [JA]
Sonstige: Lesen [JA], Schreiben [NEIN], Ausführen [JA]

Bedeutung:
Typische Dateirechte für eine ausführbare Datei (ein Programm oder ein Script). Nur der Dateinhaber kann die Datei ändern, alle anderen können lesen und ausführen.

Dateirecht: 664
Symbolische Notation: rw-rw-r--

Eigentümer: Lesen [JA], Schreiben [JA], Ausführen [NEIN]
Gruppe: Lesen [JA], Schreiben [JA], Ausführen [NEIN]
Sonstige: Lesen [JA], Schreiben [NEIN], Ausführen [NEIN]

Bedeutung:
Mögliche Dateirechte für eine nicht ausführbare Datei (z.B. ein Textdokument), welche von Inhaber und Gruppe bearbeitet werden kann, vom Rest allerdings nur gelesen.

Besitzer/Gruppe

Sehen wir und nochmal folgende Zeile an:

-rw-r--r-- 1 root root 631 2008-05-07 14:19 Makefile.am

Wir finden in dieser Zeile ebenfalls 2x 'root'. Das erste 'root' sagt uns das der Besitzer der Datei 'root' heißt. Das zweite 'root' wiederum sagt uns das die Datei ebenfalls der Gruppe 'root' gehört.

Rechte zuweisen - Oktale Notation

Weisen wir der Datei 'Makefile.am' nun andere Rechte zu. Wir möchten zB. das der Eigentümer auf die Datei Lese und Schreib Zugriff hat, aber weder Gruppe noch sonst jemand darauf zugreifen kann. Wir weisen der Datei also das Recht 600 zu.

# chmod 600 Makefile.am

Wir könnten auf allen Dateien und Ordnern im Verzeichnis dieses Recht zuweisen:

# chmod 600 *

Möchten wir sogar, das alle Unterverzeichnisse und darin enthaltene Dateien auch dieses Recht zugewiesen bekommen, führen wir folgendes aus:

# chmod -R 600 *

Rechte zuweisen - Symbolische Notation

Mit der symbolischen Notation ist die Zuweisung ein kleines Bisschen komplizierter, allerdings können damit explizit einzelne Rechte für Eigentümer, Gruppen etc. hinzugefügt oder entfernt werden. Dazu gibt es folgende Regeln:

Betroffene Klasse:
u - user - Eigentümer
g - group - Gruppe
o - others - Andere
a - all - alle, equivalent zu ugo

Verwendeter Operator:
+ Fügt den angegebenen Modus der entsprechenden Klasse hinzu
- Entfernt den angegebenen Modus für die entsprechenden Klasse
= Setzt den exakten Modus für die entsprechende Klasse

Modi (Rechte):
r - read - Lesen, Verzeichnisinhalte auslesen
w - write - Schreiben
x - execute - Ausführen, Verzeichnis öffnen

Beispiele:

Fügt der Datei Lese- und Schreibrechte für die Klassen Eigentümer und Gruppe zu:

# chmod ug+rw Makefile.am

Nimmt allen Klassen jegliche Dateirechte weg:

# chmod a-rwx Makefile.am

Weist den Klassen Eigentümer und Gruppe genau die Rechte Lesen und Ausführen zu.

# chmod ug=rx Makefile.am

Tagged as: , , No Comments
29Jun/094

HOWTO: Install the latest version of rTorrent, Ubuntu

Be sure you are root or have sudo rights. At first we try to clean the system, if there's any older version installed from repository. You can try this:

# sudo apt-get remove rtorrent libtorrent7

On newer systems, like my Ubuntu 9.04 you could try this:

# sudo apt-get remove rtorrent libtorrent11

After this we need to install some packet dependencies and compiling tools.

libTorrent's README says:

libsigc++ 2.0 (deb: libsigc++-2.0-dev)
g++ >= 3.3

rTorrents README says:

libcurl >= 7.12.0
ncurses

So we try to install the following packets. Maybe they differ at your system version.

# sudo apt-get install build-essential libsigc++-2.0-dev pkg-config comerr-dev libcurl4-openssl-dev libidn11-dev libkadm55 libkrb5-dev libssl-dev zlib1g-dev libncurses5 libncurses5-dev

If you got some old packets, which are useless, you can clean them up using this command:

# apt-get autoremove

Go to your home directory or another directory you like.

# cd ~

Now we download the lastest stable release of libTorrent and rTorrent. You can find them here.

# wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.4.tar.gz && wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.4.tar.gz

Now we have to extract the files.

# tar -xvvzf libtorrent-0.12.4.tar.gz && tar -xvvzf rtorrent-0.8.4.tar.gz

Configure, Compile & Install:

# cd libtorrent-0.12.4
# ./configure && make && make install
# cd ../rtorrent-0.8.4
# ./configure && make && make install

If there are no errors, we got rTorrent successfully installed. At this point we need a configuration file, a session directory and a torrent directory.

We change to a normal user.

# su your-user-name

We change to his home directory.

# cd ~

Now we create a torrent directory.

# mkdir torrent

In this directory we create a session directory. I make it invisible because we don't have to access it in the future.

# cd torrent
# mkdir .session

Now we have to create a configuration file. Change to your home directory.

# cd ~
# touch .rtorrent.rc

You can get a default configuration file here. Copy the lines into your configuration file and edit the following two:

directory = /home/your-user-name/torrent
session = /home/your-user-name/.session

Save the file. Now we are finished. You can start rtorrent using this command:

# rtorrent

29Jun/090

HOWTO: Install/Configure vsftpd FTP Server on Ubuntu Server

Log in as root or use 'sudo' to execute the command as root user.

# apt-get install vsftpd

This will install the FTP Server. Now we have to change the config file. You will find the config file in the /etc directory. Use vim or nano to open and edit this file.

# vi /etc/vsftpd.conf

If you have problems using this editors, you could read this HOWTO for vim, or this HOWTO for nano.

Change the following lines. Be sure to remove the # in front, if there is one, to uncomment the line.

anonymous_enable=NO

This will avoid anonymous FTP Login.

local_enable=YES

This will allow local unix users to use the FTP Server. All User's can login with their unix user and password via FTP.

write_enable=YES

This will make writing possible for all users.

ftpd_banner=*****

Use any sentence you like instead of the asterisks. This welcome message will be displayed every time a user logs on the FTP Server.

chroot_local_user=YES

Lock each user in it's home directory. This will prevent, that a user can see files, that do not belong to him.

Now save the config file.

# /etc/init.d/vsftpd restart

In the end you have to restart your new FTP Server, in order to make the config file changes take effect.