Pourquoi quitter Google ?

J’ai ouvert un compte email chez la firme de Mountain View il y a quelques années déjà car à l’époque les alternatives n’étaient guère réjouissantes. Free proposait un webmail énigmatique puis une version de Zimbra assez douteuse et ne voulant surtout pas utiliser Hotmail qui était déjà alors aussi moisi qu’aujourd’hui … Je me suis tourné vers l’opportunité qu’apportait la firme Google.

GMail propose tout de même certains avantages notables, un espace de stockage plus que suffisant pour un particulier, une intégration à toute épreuve dans tous les systèmes mobiles (Android, iOS, Windows Mobile). La version Web est également très optimisée sur chacun des navigateurs supportés, une prouesse technique à mon avis !

J’ai récemment décidé de quitter Google, quelques uns de ses produits en fait, d’autres étant plus incontournables. Ce revirement ne s’est pas fait d’un jour à l’autre mais les récentes annonces de « simplification » des conditions d’utilisations des produits Google m’a finalement décidé a prendre le grand tournant.

Je vais donc tenter d’exposer les raisons de ce choix et les moyens de remplacement que je vais utiliser.

 

Parlons un peu de Google !

La stratégie des Bêtas

Google est très friande d’application « Beta », GMail est par exemple sortie de la version « beta » le 7 Juillet 2009 soit 5 ans après son lancement en 2004. Une grande majorité des applicaitons proposées par Google passe un temps très long en version beta, exception faite de celles que la firme rachète au fur et à mesure du temps.

Cette utilisation des versions non stables permet à la firme de stopper purement et simplement un service. L’engagement est envers les utilisateurs et moins fort qu’avec une application « stable ». Google Video est un très bon exemple de cela, ce service a été lancé en 2006 et arrêté en 2011. Google a stoppé ce service qui faisait doublon avec Youtube, racheté par la firme en 2006.

La société développe toutes sortes d’outils afin de gagner des parts de marché dans de nouveaux domaines de l’information. Le nombre de services s’étoffe et ceux qui ne prennent pas assez bien courent le risque d’être fermés, pénalisant ainsi leurs utilisateurs. Les derniers exemples sont Buzz, Video et bien d’autre moins connus …

Social quand tu nous tiens …

Plus ça va plus la firme de Mountain View veut faire du « social » parce que le social, ça marche ! La monter en puissance des réseaux sociaux ces dernières années (Twitter vient de passer la barre de 500 millions de comptes) fait saliver Google. Le « social » c’est rentable ! Le chiffre d’affaire de Facebook est monté jusqu’à près de 4 milliard de dollars en 2011. De quoi faire rêver !

Google a donc lancé son propre réseau social Google+. Ce dernier est très intégré dans le moteur de recherche, ce qui n’est pas sans réserver quelques surprise quand on recherche des informations sur des personnes possédant un compte …

Toujours plus d’informations, toujours plus précises

Le but, à peine caché, de Google est de collecter toujours plus d’informations sur ses utilisateurs afin de pouvoir cibler son contenu. Une publicité est en effet d’autant plus attrayante qu’elle répond à vos besoins. Pour cela Google collecte une quantité assez impressionnantes d’informations liées à votre utilisation de leurs outils.

Vous pouvez consulter par le biais de cette page les informations collectées que Google veut bien laisser consulter. Ses données sont liées à votre compte Google.

Parmi les collectes les plus scandaleuses citons celle des données géographiques, j’y reviendrais par la suite. Ou encore les collectes des informations « synchronisées » par Google Chrome, les téléphones Android, ces derniers représentent sans doute l’une des plus grandes intrusions dans la vie privée de ces derniers temps. En effet grâce à ses terminaux ultra pratiques, la firme a accès à toute votre vie : vos contacts, vos mails, vos appels, vos applications … Le système Android serait une vraie pipelette …

J’en viens maintenant aux données géographiques, dites de « localisation » de plus en plus d’appli vous demandent si vous souhaitez être localisé afin de vous proposer des résultats ou des trucs cool près de chez vous. Voici ce que Google collecte lorsque vous utilisé une telle fonctionnalité sur ses services.

  • Données de localisation

Lorsque vous utilisez un service de localisation Google, nous pouvons collecter et traiter des données relatives à votre position exacte, comme par exemple des signaux GPS envoyés par un appareil mobile. Nous pouvons également être amenés à utiliser différentes technologies permettant de vous localiser, telles que les données du capteur de votre appareil permettant par exemple d’identifier les points d’accès Wi-Fi et les antennes-relais se trouvant à proximité.

Un scandale a éclaté il a quelques temps concernant les Google Cars, ces voitures parcourant les routes du monde afin de prendre des photos pour Google Street View, et également collecter un nombre considérable d’informations supplémentaires (telles que les réseaux Wi-Fi à porter par exemple). Ces voitures avaient également stocké plusieurs centaines de giga octets de données glanées sur les réseaux Wi-Fi qu’elles ont captés (voir l’article de 01net de l’époque ci-dessous).

Les nouvelles règles de confidentialité de Google, que vous acceptez implicitement en utilisant leurs services, officialisent cette pratique.

 

Bref, Google a une telle assise en terme de nombre d’utilisateur qu’il est compliqué de faire peser un quelconque poids contre elle… Google continuera de collecter tout ce qu’elle pourra pour ressortir de statistiques à revendre ou pour afficher de la publicité ciblée. La seule différence c’est que d’ici quelque temps ce sera sans moi ! :)

 

C’est bien joli tout ça… Mais comment s’en passer ?

Bon ok, je me suis bien lâché, il est temps de proposer quelque chose de constructif maintenant !

Pour les mails, ce sera sans GMail

Cela fait quelques temps que je me suis monté un serveur de mail chez moi, à base de Postfix et de Courier. Je l’utilise maintenant exclusivement depuis que mes tests sont terminés. C’est pour ça que ceux qui avaient l’habitude de m’envoyer des mails @gmail.com ont pu être surpris par le changement. J’ai mis en place une redirections dans mon compte GMail qui me redirige les mails vers ma nouvelle adresse. Je change au fur et à mesure les informations des différents comptes que j’ai sur le net.

J’ai installé un webmail par dessus, j’accède à mes mails de partout depuis mes terminaux mobiles, de mon côté je suis au même niveau de service que GMail. Cependant je n’ai pas de limite de taille, même si celle proposée par GMail est relativement inatteignable (plus de 7 Go) et surtout, j’héberge tout chez moi !

 

Pour ceux qui n’ont pas le temps / les moyens / l’envie de monter un serveur chez eux, avec toutes les contraintes que cela comprend, il reste la solution des comptes mails fournis par les FAI. Celui de Free est toujours Zimbra mais j’ai été bluffé par les améliorations qui ont été apportées das les nouvelles versions de cette applications.

Attentions tout de même, il semblerait qu’Orange se mette à l’inspection du trafic transitant par les lignes de ses abonnées (plus d’info dans le lien 01net dans les Références).

Les moteurs de recherche alternatifs

Pour les recherches sur Internet, Google c’est bien ! Au fur et à mesure des années la firme c’est imposée comme la reine des moteurs de recherche. Mais Google est également connus pour « ordonner » un peu selon son goût et beaucoup suivant les contrat de pub, les résultats des recherches qui lui sont soumises. Ce service ultra majoritaire stock évidement toutes les recherches que vous faites afin de pouvoir vous servir la pub qui correspond à vos besoins dans les petits encore de pub « Google Ad ».

Il existe pourtant beaucoup d’autres moteurs de recherches. Ils sont peut être moins performants que Google mais, 90% des recherches que je fais sur le Web ne demande pas une puissance d’analyse monstrueuse …

Le moteur de recherche sur lequel j’ai jeté mon dévolu met en avant la défense de la vie privée de ses utilisateurs. Il s’agit de DuckDuck Go ( https://duckduckgo.com/ ) vient de passer le million de requêtes quotidienne. Il suffit, selon moi, pour la très grande majorité des interrogations je ne l’ai pas encore testé pour trouver une réponse sur un problème technique pointu…

 Et pour les news, plus de Google non plus !

Depuis quelques années j’étais également un grand utilisateur de Google Reader, ce lecteur RSS en ligne qui permet de centraliser les flux. Un certains nombres d’agrégateurs clients lourds (comme Reader sur Mac OS) sont compatibles avec Google Reader. C’est assez pratiques pour éviter d’importer chaque flux dans chaque agrégateur… Ceci étant dit Google oblige, il ne serait pas étonnant que la firme récolte des statistiques sur les sites que l’on suit, ou collecte je ne sais quelle informations …

Du coup, dans un élan d’anti-Google, je me suis aussi monté un « Google Reader like » sur mon serveur. C’est une application open source et libre ( Tiny Tiny RSS ), il s’agit d’une application Web mais la communauté proposé également une application sur Android permettant de s’y connecter.

 

 

Conclusion

Voila donc, en conclusion les raisons qui me font, aujourd’hui quitter progressivement Google ! Même si cette société est devenue quasiment incontournable de nos jours, il existe toujours des moyens de se protéger ! :)

Je souhaite par le biais cet article vous faire réagir sur le sujet de la vie privée sur Internet. J’espère également que ma modeste contribution aura pu vous éclairer un peu sur le sujet !

 


 

Sources

GMail sur Wikipedia

Entrée en bourse de Facebook sur 20 minutes

Nouvelles règles de confidentialité de Google

Article sur les Google Cars – 01net

Article Orange et la vie privée – 01net

Vie privée: Google, super Edvige? – Alternatives Economiques

Vie privée : Google refuse de suspendre l’arrivée de ses nouvelles règles – Numérama

Vie privée : Google accusé de tracer les utilisateurs en contournant les paramètres de confidentialité de Safari et IE9 – Developpez.com

 

Ceci est un sticky post Continuer la lecture?

Shell – Utilisation des co-process

Le but de cet article est de décrire comment utiliser les co-process dans des script Shell (KSH dans l ‘exemple).

Ce mécanisme est à rapprocher de celui des forks dans la programmation en C/C++.

Un co-process est en fait un programme exécuté en background dans un script Shell.

Un programme simple avec les co-process

 

#!/bin/ksh

function test_fork {

        ## > Si la fonction n'est apelee qu'avec 1 parametre, c'est le Pere
        if [ $# -eq 1 ]
        then

                ## > On lance les 5 fils
                echo "'test_fork' [Pere] > Je suis le pere num $1, je vais lancer 5 fils"
                test_fork $1 1 &
                pid_fils[1]=$!

                test_fork $1 2 &
                pid_fils[2]=$!

                test_fork $1 3 &
                pid_fils[3]=$!

                test_fork $1 4 &
                pid_fils[4]=$!

                test_fork $1 5 &
                pid_fils[5]=$!

                ## > On attend la fin des 5 fils avant de terminer le co-process pere :
                c=1
                while [[ $c -le 5 ]]
                do
                        wait ${pid_fils[$c]}
                        let c=c+1
                done

                echo "'test_fork' [Pere] > Je suis le pere $1 et tout mes fils ont termines, je finis !"

        ## > Si la fonction est apelee avec plus qu'1 parametre, c'est un des Fils
        else
                echo "'test_fork' [Fils] > Je suis le fils $2 du pere $1 !"
                sleep 5
                echo "'test_fork' [Fils] > Je suis le fils $2 du pere $1 et j'ai fini!"
        fi
}

## > On lance le programme :

echo "le PID du programme est : $$"

## >> La fonction "test_fork" est lancee en co-process :
## >> Avec un seul parametre : le numero de co-process "pere"
## >> Le co-process va lui meme se creer 5 "fils"

num_pere=1
test_fork $num_pere &

## > On sauvegarde le PID de notre co-process pour pouvoir l'attendre plus tard :
pid=$!

echo "La fonction 'test_fork' a rendu la main, mais elle n'est pas terminee !"

## > On attend la fin de l'execution de la fonction "test_fork"
wait ${pid}

echo "Ok, tout le monde est la, c'est fini alors !"
exit 0

Exécutons ce script :

/tmp #./test_coprocess.sh
le PID du programme est : 32590
'test_fork' [Pere] > Je suis le pere num 1, je vais lancer 5 fils
'test_fork' [Fils] > Je suis le fils 1 du pere 1 !
La fonction 'test_fork' a rendu la main, mais elle n'est pas terminee !
'test_fork' [Fils] > Je suis le fils 2 du pere 1 !
'test_fork' [Fils] > Je suis le fils 5 du pere 1 !
'test_fork' [Fils] > Je suis le fils 3 du pere 1 !
'test_fork' [Fils] > Je suis le fils 4 du pere 1 !
'test_fork' [Fils] > Je suis le fils 4 du pere 1 et j'ai fini!
'test_fork' [Fils] > Je suis le fils 5 du pere 1 et j'ai fini!
'test_fork' [Fils] > Je suis le fils 3 du pere 1 et j'ai fini!
'test_fork' [Fils] > Je suis le fils 2 du pere 1 et j'ai fini!
'test_fork' [Fils] > Je suis le fils 1 du pere 1 et j'ai fini!
'test_fork' [Pere] > Je suis le pere 1 et tout mes fils ont termines, je finis !
Ok, tout le monde est la, c'est fini alors !

Visualisation avec PSTREE

La commande pstree permet de visualiser la hiérarchie des process sous la forme d’un arbre.
Voici ce que cette commande nous retourne lorsque nous lui fournissons le PID du programme (fourni par notre premier echo.

[root /tmp]# pstree -G -c 32590
test_coprocess.───test_coprocess.─┬─test_coprocess.
                                  ├─test_coprocess.
                                  ├─test_coprocess.
                                  ├─test_coprocess.
                                  └─test_coprocess.

On voit bien quand dans notre cas, nous avons 6 processus.
Un processus qui en lance un autre qui lui même en lance 5 autres.

Installation unixODBC et selection dans SQL Server depuis Oracle

Le but de cet article est de présenter les étapes permettant d’installer unixODBC et son pilote Microsoft SQL Server sur une machine Linux.

Nous verrons également comment paramétrer Oracle pour utiliser cette Data Source ODBC.

 

Recuperation des sources

 

Il va vous falloir récupérer plusieurs sources, en effet aucun RPM ne correspond à nos besoin dans les dépôts de la Red Hat 5.5 (la version que j’utilise dans cet exemple).

Télécharger les sources du pilotes SQL Server depuis le site de MircoSoft à l’adresse suivate : http://www.microsoft.com/download/en/confirmation.aspx?id=28160

 

Recuperation des sources d’unixODBC

Pour cela, deux solutions s’offrent à vous :

  1. La machine sur laquelle vous aller installer ce système a accès à Internet
  2. La machine n’a pas accès à Internet

 

Dans le cas 1, vous pouvez sauter cette étape.

Télécharger les sources d’unixODBC depuis le site : ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz

La version requise par le pilote SQL Server est la 2.3.0.

 

Installation d’unixODBC et du pilote SQL Server

 

Dézippez l’archive téléchargée depuis le site de Microsoft, dans le dossier /tmp par exemple, puis placer l’archive d’unixODBC dans le dossier ainsi créé (sans la décompresser).

Ainsi, vous devez avoir un dossier contenant ceci :

 

[root ~]# cd /tmp/sqlncli-11.0.1720.0

[root sqlncli-11.0.1720.0]# ls -lrt

total 1840

-rw-r--r-- 1  500 avpdbk    1088 Nov 18 21:08 WARNING

-rw-r--r-- 1  500 avpdbk    7098 Nov 18 21:08 README

-rw-r--r-- 1  500 avpdbk   10677 Nov 18 21:08 LICENSE

-rwxr-xr-x 1  500 avpdbk   10001 Nov 18 21:08 build_dm.sh

drwxrwxr-x 2  500 avpdbk    4096 Nov 21 19:15 lib64

-rwxr-xr-x 1  500 avpdbk   23207 Nov 21 19:15 install.sh

drwxrwxr-x 2  500 avpdbk    4096 Nov 21 19:15 bin

drwxrwxr-x 2  500 avpdbk    4096 Nov 21 19:15 docs

-rw-r--r-- 1 root root   1804749 Dec  8 09:36 unixODBC-2.3.0.tar.gz

 

Installation d’unixODBC

L’installation se fait simplement avec un script fournit par MicroSoft

 

[root sqlncli-11.0.1720.0]# ./build_dm.sh --download-url=file://unixODBC-2.3.0.tar.gz

Répondre YES à la question posée puis attendre que la compilation soit terminée.

Le script vous rend ensuite la main et vous invite à installer les binaires

Exécutez la commande qu’il vous propose :

cd /tmp/unixODBC.<RANDOM_NUMBERS>/unixODBC-2.3.0; make install

 

Installation du pilote SQL Server

Retournez dans le dossier /tmp/sqlncli-11.0.1720.0 et lancez la commande suivante

[root sqlncli-11.0.1720.0]# ./install.sh verify

 

Cette commande vérifie que votre système comporte bie ntout ce qu’il faut. Le résultat attendu pour cette commande est une sortie telle que :

Checking for 64 bit Linux compatible OS ..................................... OK

Checking required libs are installed ........................................ OK

unixODBC utilities (odbc_config and odbcinst) installed ..................... OK

unixODBC Driver Manager version 2.3.0 or later installed .................... OK

unixODBC Driver Manager configuration correct .............................. OK*

Microsoft SQL Server ODBC Driver V1.0 for Linux already installed .... NOT FOUND

 

Lancez ensuite la commande qui va installer le pilote :

[root sqlncli-11.0.1720.0]# ./install.sh install

Déroulez la licence jusqu’en bas et tapez YES.

 

Pour tester que le pilote est bien enregistré dans unixODBC, la commande suivante :

[root sqlncli-11.0.1720.0]# odbcinst -q -d -n "SQL Server Native Client 11.0"

doit retourner ceci :

[SQL Server Native Client 11.0]

Description=Microsoft SQL Server ODBC Driver V1.0 for Linux

Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1720.0

UsageCount=1

 

Parametrage d’unixODBC

Nous allons créer une Data Source qui se base sur le pilote que nous venons d’installer. Pour cela, éditez le fichier /etc/odbc.ini et ajoutez-y un bloc comme suit.

 

[NomDeLaDataSource]

Driver = SQL Server Native Client 11.0

Server = tcp:<IP>,<Port>

Database = <Nom de la base>

 

Pour tester cette data source, nous allons utiliser un binaire fournit avec unixODBC : iusql

[root sqlncli-11.0.1720.0]# iusql -v NomDeLaDataSource <User> <Password>

Si vous arrivez à vous connecter, c’est gagné.

 

Configuration d’Oracle pour utiliser cette Data Source

Nous allons créer dans une source hétérogène dans Oarcle puis ajouter une entrée dans le listener.ora de la base qui doit accèder à cette source.

Ensuite avec un DB Link nous allons pour lire dans cette base distante.

 

Configuration de la source hétérogène

Déplacez-vous dans le dossier $ORACLE_HOME/hs/admin et éditiez le fichier initdg4odbc.ora afin qu’il ressemble à :

 

# This is a sample agent init file that contains the HS parameters that are

# needed for the Database Gateway for ODBC

#

# HS init parameters

#

HS_FDS_CONNECT_INFO = NomDeLaDataSource

HS_FDS_TRACE_LEVEL = OFF

HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so

#HS_FDS_SQLLEN_INTERPRETATION=32

 

HS_LANGUAGE=american_america.WE8MSWIN1252

HS_NLS_NCHAR=UCS2

#

# ODBC specific environment variables

#

set ODBCINI=/etc/odbc.ini

#set ODBCINSTINI=/etc/odbcinst.ini
set LD_LIBRARY_PATH=/usr/lib64:/opt/microsoft/sqlncli/lib64:/usr/lib:/software/oracle/<SID>/11.2.0/lib

#

# Environment variables required for the non-Oracle system

#

#set <envvar>=<value>

Ensuite, faites un lien symbolique sur ce fichier :

[root sqlncli-11.0.1720.0]# ln -s initdg4odbc.ora  initdg4odbc_connect.ora

 

Configuration du listener de la base Oracle

[root sqlncli-11.0.1720.0]# $ORACLE_HOME/network/admin

Nous allons devoir ajouter une entrée SID_DEC dans le champs SID_LIST dans notre listener.ora.

Voici cette nouvelle chaine :

(SID_DESC=

(GLOBAL_DBNAME=dg4odbc_gdbname)

(SID_NAME=dg4odbc_connect)

(ORACLE_HOME=/software/oracle/<SID>/11.2.0)

(PROGRAM=dg4odbc)

(ENVS=LD_LIBRARY_PATH = /usr/lib64:/opt/microsoft/sqlncli/lib64:/usr/lib:/software/oracle/<SID>/11.2.0/lib)

)

 

Modifier le tnsnames.ora

Ajoutez l’entrée suivante à la fin du fichier :

dg4odbcid=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=frora<SID>)(PORT=1521))
(CONNECT_DATA= (SID=dg4odbc_connect))
(HS=OK)
)

Modifier le sqlnet.ora

Editez le fichier suivant et commentez les lignes suivantes

NAMES.DEFAULT_DOMAIN = world
NAME.DEFAULT_ZONE = world

 

Attention, les DB Link créés par la suite devront tous être créé avec un .WORLD à la fin de leur nom.

 

Tester de la configuration d’Oracle Net

Rédémarrer le listener avec les commandes

[oracle ~]$ lsnrctl stop

[oracle ~]$ lsnrctl start

[oracle ~]$tnsping dg4odbcid

Le résultat atetndu est une sortie du type :

TNS Ping Utility for Linux: Version 11.2.0.2.0 - Production on 12-DEC-2011 10:50:59

 

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

 

Used parameter files:

/software/oracle/T998/11.2.0/network/admin/sqlnet.ora

 

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=<machine>)(PORT=1521)) (CONNECT_DATA= (SID=dg4odbc_connect)) (HS=OK))

OK (20 msec)

Installer un support AirPlay sur Ubuntu

Nous allons voir comment faire une plateforme AirPlay depuis un serveur Ubuntu 11.10.

Cette plateforme complètement compatible avec les ordinateurs Mac se base sur ShairPort.

 

Installation des dependances et de ShairPort

sudo apt-get install build-essential libssl-dev libcrypt-openssl-rsa-perl libao-dev libio-socket-inet6-perl libwww-perl avahi-utils pkg-config
cd $HOME/bin
git clone https://github.com/albertz/shairport.git shairport
cd shairport
make
sudo make install

Modifier le fichier shairport.init.sample

vi shairport.init.sample

Repérer la ligne commençant par « DAEMON_ARGS », la modifier comme suit et ajouter les lignes qui suivent.

DAEMON_ARGS="--ao_driver=pulse -w $PIDFILE"
USER=<votre_compte>
GROUP=<votre_groupe>

Mettre en place le script d’init :

sudo cp shairport.init.sample /etc/init.d/shairport
sudo chmod +x /etc/init.d/shairport
sudo update-rc.d shairport defaults

Modifier le script shairport.pl

Vous allez pouvoir positionner le nom de la plateforme AirPlay.

sudo vi /usr/local/bin/shairport.pl

Trouvez la ligne suivante :

my $apname = "ShairPort $$ on " . `hostname`;

Et modifiez la comme vous le souhaitez, par exemple :

my $apname = `hostname` . " AirChannel";

Démarrer le daemon

sudo service shairport start

L’heure de verite

Pour vérifier que tout fonctionne, tester avec iTunes sur votre ordinateur Mac.

En bas à droite de la fenêtre d’iTunes se trouve cet icône : Icône AirPlay.

Cliquer sur le « Triangle dans le rectangle » et sélectionner votre plateforme Ubuntu dans la liste.


La lecture devrait commencer sur votre Ubuntu et plus sur l’ordinateur Mac.

Trouver une liste d’IP par continent

Lors de la configuration de mon serveur, j’ai cherché à bloquer certains continents.

Le site countryipblocks propose une base de données associant adresses IP et pays.

Une autre fonctionnalité sympa du site est un regroupement de ces données par continents.

 

 

Linux – Transformer Ubuntu en serveur Time Machine

Le but de cet article est de présenter comment transformer un serveur Ubuntu en véritable disque réseau pour réaliser des sauvegardes Time Machine à partir d’un Mac.

Prérequis

Cet article se base sur l’installation d’AFP

Il faut aussi que vous ayez identifié l’emplacement ou vous souhaitez stocker ces sauvegardes Time Machine. Idéalement, il faut une partition dédiée.

De mon côté, j’utilise un pool ZFS monté sous /TimeMachine. Je me servirait de ce point de montage pour l’exemple.

Ajout du partage dans la configuration d’AFP

Editer le fichier de configuration d’AFP :
vi /etc/netatalk/AppleVolumes.default

Et ajouter une ligne correspondant à l’emplacement ou les sauvegardes seront stockées.

/TimeMachine "TimeMachine" cnidscheme:dbd options:usedots,upriv,tm allow:utilisateur

Ainsi le dossier /TimeMachine sera partagé via AFP, toute fois, il ne sera autorisé qu’aux personnes enregistrées sous le nom .

Note 1: Vous pouvez mettre plusieurs utilisateurs dans le champ allow.
Note 2: Le ou les utilisateurs en question sont des utilisateurs existants sur le serveur Ubuntu.

Redémarrer les dameons AFP et Avahi

service netatalk restart
service avahi-daemon restart

Configuration côté Mac

Nous allons maintenant configurer le Mac pour qu’il puisse utiliser le disque de sauvegarde Time Machine que nous venons de créer.

Ouvrer les Préférences Time Machine.

Cliquez sur Choisir un disque…

Le disque « TimeMachine » apparaît alors dans la liste.
Sélectionnez le puis validez en cliquet sur « Utiliser le disque de sauvegarde ».

Une boîte de connexion apparaît, chosir alors « Utilisateur référencé » et renseignez le nom du compte que vous avez autorisé dans la configuration d’AFP ainsi que son mot de passe sur le serveur Ubuntu.

L’heure de vérité

Réalisez votre sauvegarde avec Time Machine !

Sur le serveur Ubuntu, dans le dossier que vous avez donné à Time Machine, un dossier a du apparaître portant le nom de votre Mac et l’extension « .sparsebundle ».

Linux – Serveur de fichiers via AFP

Voici comme transformer Ubuntu en un serveur de fichiers via AFP, à destination de nos Macs !

Installation des dépendances

Voici la liste des dépendances a installer :
aptitude install netatalk cracklib2-dev fakeroot libssl-dev cracklib-runtime libpam-cracklib avahi-daemon libnss-mdns

Configuration de NetATalk

Editez le fichier de configuration de NetATalk.

vi /etc/default/netatalk

Modfier la partie concernat AFP afin qu’elle soit de la sorte :

#########################################################################
# AFP specific configuration
#########################################################################
#### Set which daemons to run.
#### If you use AFP file server, run both cnid_metad and afpd.
CNID_METAD_RUN=yes
AFPD_RUN=yes

De même éditer le bloc AplleTalk afin qu’il soit identique à :

#########################################################################
# AppleTalk specific configuration (legacy)
#########################################################################
#### Set which legacy daemons to run.
#### If you need AppleTalk, run atalkd.
#### papd, timelord and a2boot are dependent upon atalkd.
ATALKD_RUN=no
PAPD_RUN=no
TIMELORD_RUN=no
A2BOOT_RUN=no

Configuration d’AFP

Pour cette partie, je pars du principe que vous avez déjà décidé et créé si nécessaire le ou les emplacement(s) que vous souhaitez partager en AFP.

Configurer le daemon AFP

vi /etc/netatalk/afpd.conf

Ce fichier est normalement par défaut complètement commenté, ajouter à fin la ligne :
- -tcp -noddp -uamlist uams_guest.so,uams_dhx.so,uams_dhx2.so -nosavepassword

Déclaration des partages

Le fichier suivant déclare les emplacements qui seront partagés par AFP sur le système.
vi /etc/netatalk/AppleVolumes.default

A la fin du fichier, bien vérifier que la ligne commençant par

 :D EFAULT:

ressemble bien à :
# The line below sets some DEFAULT, starting with Netatalk 2.1.
:D EFAULT: options:upriv,usedots

La suite du fichier sert à définir les différents emplacement partagés.
# By default all users have access to their home directories.
~/ "Home Directory"
/downloads "Storage" cnidscheme:dbd options:usedots,upriv

# End of File

Dans cet exemple, je partage les dossiers home de tous mes utilisateurs, on peut y acceder en remote moyennant une authentification avec le login / mot de passe de l’utilisateur sur le serveur Ubuntu.

Je partage aussi le dossier /downloads un mot de passe valide sur le système Ubuntu sera également demandé.

Redémarrage de NetATalk

On redémarrae NetAtalk pour prendre en compte les modifications faites.
service netatalk restart

Configuration d’Avahi

Vérifier la configuration du daemon

Avahi permet d’annoncer les partages sur les réseau, afin de les voir apparaître dans le Finder.

Editer le fichier de configuration
vi /etc/nsswitch.conf

Vérifier que la ligne hosts finisse bien par mdns.
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns

Ajout de la gestion d’AFP dans Avahi

Editer le fichier afpd.service
vi /etc/avahi/services/afpd.service

Il doit contenir les lignes suivantes.



%h

_afpovertcp._tcp

548

_device-info._tcp

0 model=Xserve

Redémarrage d’Avahi

service avahi-daemon restart

Lancer NetAtalk et Avahi au démarrage

Au cas ou ces daemon ne soit pas configurés pour démarrer tout seul au reboot de la machine, exécuter les commandes suivantes.

update-rc.d netatalk enable 2 3 4 5
update-rc.d avahi-daemon enable 2 3 4 5

Linux – Utiliser Yum pour telecharger des RPM

Dans certains cas, il peut être utile de récupérer directement un RPM et toutes les dépendances qu’il nécessite.

Dans les environnements basés sur Red Hat, le package yum-utils.noarch fournit un outil capable de réaliser cela.

# yum -y install yum-utils.noarch

Télécharger un package

La commande permettant de télécharger des packages est « yumdownloader« .

Elle s’utilise de la même façon que yum install :

[root ~]# mkdir /tmp/rpm_download
[root ~]# cd /tmp/rpm_download/
[root rpm_download]# yumdownloader httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.ircam.fr
* epel: mirrors.ircam.fr
* extras: mirrors.ircam.fr
* updates: mirrors.ircam.fr
httpd-2.2.3-45.el5.centos.1.i386.rpm | 1.2 MB 00:01
[root rpm_download]# ls -lrt
total 1256
-rw-r--r-- 1 root root 1280261 mai 4 14:31 httpd-2.2.3-45.el5.centos.1.i386.rpm

Linux – Chroot SFTP avec OpenSSH 5

Afin de mettre en place le chroot SFTP, il faut que la version du serveur OpenSSH soit en 5 ou plus.

Les nouvelles options de chroot proposées par la version 5

Voici ce que les options que l’on peut désormais utiliser :

# tail /etc/ssh/sshd_config

Subsystem sftp internal-sftp #Déjà présent en version 4

Match Group sftp
ChrootDirectory /data/chroot/%u
ForceCommand internal-sftp
AllowTcpForwarding no

Détail sur ces nouvelles options
  • Match Group sftp
    • C’est la clause qui permet de distinguer les utilisateurs « chrootés » ou non.
    • Dans ce cas, les utilisateurs appartenant au groupe « sftp » seront enprisonnés.
  • ChrootDirectory /data/chroot/%u
    • Cette directive précise dans quel dossier seront enfermés les utilisateurs « chrootés ».
    • Il existe 2 « jokers » pour définir ses dossiers :
      • %h : ce joker sera remplacé par le chemin vers le Home Directory de l’utilisateur « chrooté ».
      • %u : ce joker là, sera remplacé par le nom de l’utilisateur.
  • ForceCommand internal-sftp
    • On n’autorise que le sftp pour les utilisateurs « chrootés », il sera impossible de se connecter en SSH avec ces comptes.
  • AllowTcpForwarding no
    • On empêche aussi la création de tunnel SSH.

Ces options doivent être placées à la fin du fichier de configuration du serveur SSH.

Les contraintes imposées par ce mécanisme

Le chroot requiert que les dossiers accueillant les utilisateur verrouillés, et les dossiers qui sont au dessus, appartiennent à root et au groupe root.
Les droit positionné sur ces dossiers doivent être 750.

Cela implique qu’un utilisateur chrooté ne pourra pas créer de fichiers en directement sous la racine de son dossier d’accueil. Il faudra donc que des dossiers soit créés par root avant, puis donnés ensuite à l’utilisateur.

Dans l’exemple précédent, les utilisateurs sont emprisonnés dans un dossier portant leur nom sous /data/chroot.

Les dossiers « data » et « chroot » apparatiennent à root et au groupe root. Il en va de même pour les dossiers utilisateur situés en dessous.

Par contre, l’utilisateur chrooté « meteo », possède un dossier « html » (/data/chroot/mete/html) qui lui appratient.

Astuce

L’utilisateur meteo est un compte chrooté créé afin de lui permettre le dépot de fichiers html, ceci dans le but de mettre à jour une page web.

Le chroot ne suis pas les liens symboliques.

Donc une méthode possible aurait été d’emprisonner meteo dans le dossier racine de son site web (/var/www/meteo par exemple).
Or, il aurait fallu dans ce cas, changer le propriétaire des dossiers « var » et « www » afin que le chroot soit possible dans ce dossier.

Cette approche n’est pas acceptable car d’autre utilisateurs, non chrootés, accèdent à leur propre dossier sous /var/www.

Une approche possible est donc :

  1. Chrooter meteo dans /data/chroot/meteo
  2. Créer un dossier « html » sous le dossier du chroot, et le donner à meteo
  3. Monter le dossier /var/www/meteo sur le dossier « html » avec la commande si dessous.
  4. mount --bind /var/www/meteo /data/chroot/meteo/html

SQL – Generer un calendrier

Pouvoir se baser sur un calendrier peut s’avèrer utile dans certains cas.
Par exemple pour générer un planning, compter les jours ouvrés d’un mois …

On va pour cela s’appuyer sur les requêtes permettant de retourner des lignes « vides ».

Les lignes vides

On va commencer par générer autant de lignes vide qu’il y a de jours dans le mois (31 pour ce mois de Décembre).

Chaque ligne aura pour valeur :

rownum-1

C’est à dire le numéro de la ligne résultat moins un, c’est la valeur qu’il faut ajouter au premier jour du mois pour avoir chaque dates.

select rownum-1 jours
from dual
connect by level <= to_number( to_char(LAST_DAY(SYSDATE), 'DD') );

     JOURS
----------
         0
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30

31 rows selected.
  • La fonction last_day retourne le dernier jour du mois correspondant à la date passée en paramètre (Décembre dans notre cas).
  • La fonction to_char munie du format de date DD n’affiche que le numéro du jour dans le mois (de 01 à 31)

Dans notre cas, la clause

 to_char(LAST_DAY(SYSDATE), 'DD')

va retourner 31, le nombre de jours que compte le mois de Décembre.

Et maintenant, les jours !

Tout est prêt pour afficher les jours !

select trunc(sysdate, 'MM')+(rownum-1) jours
from dual
connect by level <= to_number( to_char(LAST_DAY(SYSDATE), 'DD') );

JOURS
------------------
01-DEC-10
02-DEC-10
03-DEC-10
04-DEC-10
05-DEC-10
06-DEC-10
07-DEC-10
08-DEC-10
09-DEC-10
10-DEC-10
11-DEC-10
12-DEC-10
13-DEC-10
14-DEC-10
15-DEC-10
16-DEC-10
17-DEC-10
18-DEC-10
19-DEC-10
20-DEC-10
21-DEC-10
22-DEC-10
23-DEC-10
24-DEC-10
25-DEC-10
26-DEC-10
27-DEC-10
28-DEC-10
29-DEC-10
30-DEC-10
31-DEC-10

31 rows selected.

La fonction trunc() appliquée aux dates se révèle être très puissante. Elle prend dans ce cas comme paramètres, une date et un format de date (identiques a ceux de la focntion to_char.

Exemples :

  • Avec le filtre 'DD' : trunc va retourner la date fournie à 00h00.
  • Avec le filtre 'MM' : trunc va retourner le premier jour du mois à 00h00.
  • etc ...

Ainsi, on va incrémenter le premier jour du mois au fur et à mesure.

Le calendrier du mois Décembre est ainsi terminé.

Encore un peu plus loin !

Si maintenant on ne veut garder que les jours ouvrables du mois :

select
     calendrier.jours,
     to_char( calendrier.jours, 'Day', 'nls_date_language=english' ) "Day of week"
from
     (select trunc(sysdate, 'MM')+(rownum-1) jours
     from dual
     connect by level <= to_number( to_char(LAST_DAY(SYSDATE), 'DD') ) ) calendrier
where to_number( to_char( calendrier.jours, 'D', 'nls_date_language=english' ) )
     not in ('7','1');

JOURS              Day of week
------------------ ----------------------
01-DEC-10          Wednesday
02-DEC-10          Thursday
03-DEC-10          Friday
06-DEC-10          Monday
07-DEC-10          Tuesday
08-DEC-10          Wednesday
09-DEC-10          Thursday
10-DEC-10          Friday
13-DEC-10          Monday
14-DEC-10          Tuesday
15-DEC-10          Wednesday
16-DEC-10          Thursday
17-DEC-10          Friday
20-DEC-10          Monday
21-DEC-10          Tuesday
22-DEC-10          Wednesday
23-DEC-10          Thursday
24-DEC-10          Friday
27-DEC-10          Monday
28-DEC-10          Tuesday
29-DEC-10          Wednesday
30-DEC-10          Thursday
31-DEC-10          Friday

23 rows selected.

Le paramètre supplémentaire (nls_date_language=english) passé à la fonction to_char permet de forcer la locale à utiliser pour afficher les jours de la semaine et les numéro de jour. En effet, le système calendaire anglais fait commencer les semaine le dimanche et finir le samedi (le dimanche est le jour 1 et samedi, le jour 7). Alors qu'en France, la semaine commence le lundi et finie le dimanche.

Normalement cet affichage est défini en fonction de la langue utilisée par le logiciel client. Ce paramètre force donc la langue utilisée à english pour que les jours exclus soient bien les bons.