M6 UF2 . Indicacions per a la configuració d’un RAID-1 en OpenSuse

Descriuré en aquest apunt algunes indicacions per a muntar un RAID-1 amb la distribució OpenSuse emprant el programa VirtualBox.

La configuració dels discs en la màquina virtual del VirtualBox serà la següent:

raid-0

 

Procedim a instal·lar l’OpenSuse amb normalitat. De fet, la configuració del RAID és molt senzilla i la podem fer a través de l’assistent d’instal·lació. Afegeix-ho aquí un parell de captures de pantalla indicatives:

 

La resta consisteix en instal·lar la distribució amb normalitat.

 

Visualització de l’estat del RAID

 

Una vegada tinguem el sistema operatiu funcional, podem executar la comanda següent per a descobrir la ubicació on s’ha muntat cada dispositiu:

df -k

El RAID recau en el dispositiu /dev/md0

Emprant qualsevol de les comandes següents podem observar l’estat del RAID:

more /proc/mdstat
mdadm --detail /dev/md0

Nota: Aquest darrer programa prové del paquet: mdadm.

 

Simulem (via software) la fallida d’un disc

 

Es tracta, evidentment, d’una fallida a nivell de programari. Veurem que el sistema continua funcionant amb tota normalitat. Establim la fallida amb la comanda següent:

mdadm --manage --set-faulty /dev/md0 /dev/sda1

Fixem-nos com ha canviat l’estat del RAID emprant les comandes que hem vist anteriorment.

El següent pas serà suprimir el disc avariat del RAID.

mdadm /dev/md0 -r /dev/sda1

i el tornem a afegir amb la comanda:

mdadm /dev/md0 -a /dev/sda1

És interessant veure com es reconstrueix el RAID amb les comandes de visualització de l’estat.

 

 

 

 

 

Aprofundint en el protocol FTP : Modes actiu i passiu (via comandes telnet)

L’objectiu d’aquesta entrada és el d’aprofundir en la comprensió del protocol FTP, veient les diferències entre els modes passiu i actiu, i emprant comandes de telnet.

Considerem que tenim ja una màquina amb un servidor FTP. En aquest cas utilitzem el VSFTP i la distribució OpenSuse. Recordem que el servidor de FTP escolta habitualment en el port TCP/IP 21 per tal de rebre comandes. A continuació, un exemple de connexió. En negreta les comandes que s’executen des del client. En cursiva, comentaris.

telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 (vsFTPd 2.3.2)
S'envia al servidor el nom d'usuari
USER gerard
331 Please specify the password.
S'envia la contrasenya en text pla
PASS lamevacontrasenya
230 Login successful.
Informació d'estat del servidor
STAT
211-FTP server status:
     Connected to ::ffff:127.0.0.1
     Logged in as gerard
     TYPE: ASCII
     No session bandwidth limit
     Session timeout in seconds is 300
     Control connection is plain text
     Data connections will be plain text
     At session startup, client count was 1
     vsFTPd 2.3.2 - secure, fast, stable
211 End of status
Es demana pel tipus de sistema
SYST
215 UNIX Type: L8
Canviem de carpeta (Change Directory)
CWD programari
250 Directory successfully changed.
CWD ..
250 Directory successfully changed.
Print Working Directory
PWD
257 "/home/gerard"
Llistat de fitxers i carpetes del servidor
LIST
425 Use PORT or PASV first.

Atenció en aquest punt. El servidor demana que s’especifiqui com escollir un port per on trametre dades. Ordres possibles: PORT o PASV. Escollim primer mode passiu.

PASV
227 Entering Passive Mode (127,0,0,1,117,113).

El servidor ha respost: 127,0,0,1,117,113. Les primeres quatre xifres es corresponen a l’adreça IP del servidor. Les dues següents, al port. S’ha de fer l’operació: 117*256 + 113 = 30065. Ara, en un altre terminal, executem el següent:

telnet 127.0.0.1 30065

I, des del terminal d’ordres,

LIST
150 Here comes the directory listing.
226 Directory send OK.

Ara, fem el mateix emprant el mode actiu. En aquest mode serà el client qui esculli el port i qui s’ha d’encarregar de posar-lo a l’escolta.

PORT 127,0,0,1,150,10
200 PORT command successful. Consider using PASV.

Ara, en un altre terminal, i emprant el programa nc (netcat), obrim el port 38410 ( 150 * 256 + 10 = 38410 )

nc -l 38410

Des del terminal d’ordres:

LIST
150 Here comes the directory listing.
226 Directory send OK.

D’una manera similar, també seria possible obtenir un fitxer:

RETR fitxer-de-text.txt
150 Opening BINARY mode data connection for fitxer-de-text.txt (133 bytes).
226 Transfer complete.

Atenció amb la diferència entre el mode PORT i el mode PASV. En el primer d’ells és el client qui s’encarrega d’escollir i obrir port per a transmetre les dades. En el mode PASV, en canvi, ho fa el servidor.

Finalment, podem ja tancar sessió:

QUIT
221 Goodbye.
Connection closed by foreign host.

Més informació: List of raw FTP commands

chroot jail per a usuaris SFTP

Configuració d’una chroot jail per a usuaris SFTP.

Explico en aquest post com configurar un servidor SFTP per tal que els usuaris puguin accedir en solament una carpeta a través del protocol SFTP i no tinguin permisos per tal d’explorar la resta del sistema. Sistema operatiu: OpenSuse 11.4. Les comandes a executar, marcades en negreta.

Primer pas. Modificació del fitxer de configuració del servidor de SSH (vi /etc/ssh/sshd_config)

# override default of no subsystems
 #Subsystem      sftp    /usr/lib/ssh/sftp-server
 Subsystem       sftp    internal-sftp
# Això va al final de tot. Als usuaris del grup nomessftp 
# se'ls aplica les instruccions següents:

 Match group nomessftp
 ForceCommand internal-sftp
 ChrootDirectory /gabies/%u
 X11Forwarding no
 AllowTcpForwarding no

Reiniciem el servei amb la nova configuració.

# /etc/init.d/sshd restart
 Shutting down SSH daemon                                         done
 Starting SSH daemon                                              done

Segon pas. Creació del grup i dels usuaris

groupadd nomessftp
mkdir /gabies
useradd -m -d /gabies/engabiat1 -s /bin/false engabiat1
passwd engabiat1
usermod -A nomessftp engabiat1

Tercer pas. Establiment de permisos (aquest punt és molt important! Si els permisos no son els adequats, la connexió no funciona! Si teniu problemes, fer un tail -10 /var/log/messages us pot donar alguna pista).

chown root:nomessftp /gabies
chmod 750 /gabies
chown root:nomessftp /gabies/engabiat1
chmod 750 engabiat1

Provem-ho!

sftp engabiat1@localhost
Password:
Connected to localhost.
sftp> ls -l
drwxr-xr-x    2 1006     100          4096 Jan 11 20:13 bin
drwxr-xr-x    2 1006     100          4096 Jan 11 20:13 public_html
sftp> pwd
Remote working directory: /
sftp> quit

Installing gbrainy with zypper (compiled with libzypp + metalink support)

Right now, with libzypp hacked version than I have in my laptop, I can do this:

./zypper install gbrainy
Reading installed packages…

The following NEW package is going to be installed:
gbrainy

Overall download size: 127,0 K. After the operation, additional 472,0 K will be used.
Continue? [YES/no]: YES
Downloading package gbrainy-0.61-31.1.noarch (1/1), 127,0 K (472,0 K unpacked)

——————–
getFile ( /media.1/media )
doGetMetalinkFileCopy –> http://download.opensuse.org/distribution/11.0/repo/oss/media.1/media.metalink
\ Downloading: media.metalink [starting]Metalink file exists – We can parse it 😉
We have 69 mirrors for this file
Downloading from http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.0/repo/oss/media.1/media
HTTP response: 200
done: /var/adm/mount/AP_0x00000003/media.1/media{- 0644 0/0 size 42}

——————–
getFile ( ./suse/noarch/gbrainy-0.61-31.1.noarch.rpm )
doGetMetalinkFileCopy –> http://download.opensuse.org/distribution/11.0/repo/oss/suse/noarch/gbrainy-0.61-31.1.noarch.rpm.metalink
| Downloading: gbrainy-0.61-31.1.noarch.rpm.metalink [starting]Metalink file exists – We can parse it 😉
We have 69 mirrors for this file
Downloading from http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.0/repo/oss/suse/noarch/gbrainy-0.61-31.1.noarch.rpm
/ Downloading: gbrainy-0.61-31.1.noarch.rpm [starting]HTTP response: 200
done: /var/adm/mount/AP_0x00000003/suse/noarch/gbrainy-0.61-31.1.noarch.rpm{- 0644 0/0 size 129095}
Downloading:  [done]
Installing: gbrainy-0.61-31.1 [done]

All seems well and correct but… right now begins a new problem 🙁 If the server responds with HTTP code 304, I get this error message:

Can’t provide ./suse/noarch/gbrainy-0.61-31.1.noarch.rpm : Can’t copy /var/adm/mount/AP_0x00000003/suse/noarch/gbrainy-0.61-31.1.noarch.rpm to /var/cache/zypp/packages/repo-oss
Repository ‘repo-oss’ is out of date. Running ‘zypper refresh’ might help.

Really, this error is caused because this file (/var/adm/mount/AP_0x00000003/suse/noarch/gbrainy-0.61-31.1.noarch.rpm{does not exist}) NOT exists 🙁

Post updated 02/07: In effect, we receive 304 response code because we send “If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT” in the header.

GET /distribution/11.0/repo/oss/media.1/media HTTP/1.1
User-Agent: ZYpp 5.0.0 (MediaMetalink – with curl 7.18.1 & libmetalink )
Host: opensuse.mirror.solnet.ch
Accept: */*
If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT

HTTP/1.1 304 Not Modified
Content-Type: text/plain
Accept-Ranges: bytes
ETag: “3592996126”
Last-Modified: Wed, 02 Jul 2008 02:42:38 GMT
Date: Wed, 02 Jul 2008 13:31:06 GMT
Server: httpd/1.4.x

I’m thinking in this actions:

  • Disable “If-Modified-Since” in our petition via libcurl, or,
  • Try the next mirror when libzypp receives 304 HTTP code response.

Updated: We can disable “If-Modified-Since” header in our petition, simply commenting these lines:

curl_easy_setopt(_curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
curl_easy_setopt(_curl, CURLOPT_TIMEVALUE, PathInfo(target).mtime());

Good solution 🙂 ?

OpenSUSE 10.3 in my old (and dusty) laptop

Finally, summer is here 🙂 And, after a lot of rainy days and some exams, my head is thinking in something most appropriated to this time, like:

Go to the beach (21-25 june) 🙂 , go to Renens (Switzerland) (chez mon frere 🙂 (28 June – 6 July) ), and, of course, hack libzypp to try to add Metalink support 🙂

For these reasons today I have spent some hours in backup some files and remove (forever) Windows partition in my old (and dusty 🙁 ) laptop, and install OpenSUSE 10.3 in this free place. Also I’ve installed all the needed software (= my new friends ) : gcc compiler, cmake, subversion client, etc..- I must remember, however, upgrade to OpenSUSE_11.0 new week 🙂

So, now, I can tell than I’m ready to travel and to enjoy this Google Summer of Code 🙂

Renens, this days (picture taken from http://www.renens.ch/):

Renens, this days (picture from http://www.renens.ch)