mardi 1 janvier 2008

Installer Big Brother client sur Mac OS X

Ah oui, tout d'abord, bonne année !

Aujourd'hui je vais vous expliquer comment installer Big Brother client sur une machine Mac OS X. Big Brother est un outil de monitoring freeware (mais qui existe aussi en version commerciale). Je l'utilise ou je l'ai utilisé sous Debian GNU/Linux, Red Hat, PC-BSD, FreeBSD, Solaris, AIX et Windows. Voyons comment l'installer sous Mac OS X:

Création d'un utilisateur bb
Tout d'abord je crée un utilisateur dont le login sera (par tradition) bb:
Dans "Préférences Systèmes" allez dans "Comptes"
(Pour créer un utilisateur vous devez avoir un compte d'administrateur)
Si le cadenas est fermé, je clique dessus, et je tape mon nom et mot de passe pour le débloquer.
Cliquez sur le "+"
Nom: Big Brother
Nom abrégé: bb
Pour le mot de passe, je tape quelque chose de difficile à trouver, par exemple 5dAkr42, de toutes façons je n'aurai jamais besoin de ce mot de passe (nous verrons plus loin pourquoi)
Je ne coche pas "Autoriser à administrer cet ordinateur"
Je clique "Créer le compte"

Rapatriement de Big Brother
Je vais chercher Big Brother à l'adresse suivante:
http://bb4.org/dnld/bb-1.9i.tar.gz
Je place ce fichier dans le répertoire /Users/bb

Je deviens l'utilisateur Big Brother. Vous me direz: "Oui mais, je ne connais pas son mot de passe !". Pas besoin, avec mon compte d'administateur il me suffit de faire:
[pierre@ibook] /Users/pierre>sudo su - bb
Password:
[bb@ibook] /Users/bb>

Décompression du fichier de Big Brother
En tant que l'utilisatateur bb:
Je décompresse le .tar.gz, j'obtiens trois fichiers:
[bb@ibook] /Users/bb>tar -zxvf bb-1.9i.tar.gz
BB.README.FIRST
BBSVR-bb1.9i-btf.tar
BBCLT-bbc1.9i-btf.tar

Il y a à ce moment trois fichiers que je peux effacer:
[bb@ibook] /Users/bb>rm bb-1.9i.tar.gz
[bb@ibook] /Users/bb>rm BBSVR-bb1.9i-btf.tar
[bb@ibook] /Users/bb>rm BB.README.FIRST
(Le premier je viens de le décompresser, le deuxième c'est la partie serveur dont je n'ai pas du tout besoin sur Mac OS X, et le troisième, passons...)

Il me reste le fichier BBCLT-bbc1.9i-btf.tar. Je le décompose:
[bb@ibook] /Users/bb>time tar -xvf BBCLT-bbc1.9i-btf.tar
bbc1.9i-btf/LICENSE
bbc1.9i-btf/README
bbc1.9i-btf/README.INSTALL
bbc1.9i-btf/README.CHANGES
bbc1.9i-btf/README.SECURITY
bbc1.9i-btf/README.SUPPORT
bbc1.9i-btf/runbb.sh.DIST
bbc1.9i-btf/bin/bb-combo.sh
bbc1.9i-btf/bin/bb-cpu.sh
bbc1.9i-btf/bin/bb-disk.sh
bbc1.9i-btf/bin/bb-local.sh
bbc1.9i-btf/bin/bb-msgs.sh
bbc1.9i-btf/bin/bb-ping.sh
bbc1.9i-btf/bin/bb-procs.sh
bbc1.9i-btf/etc/bb-bbexttab.DIST
bbc1.9i-btf/etc/bb-cputab.DIST
bbc1.9i-btf/etc/bb-dftab.DIST
bbc1.9i-btf/etc/bb-msgstab.DIST
bbc1.9i-btf/etc/bb-proctab.DIST
bbc1.9i-btf/etc/bbchkcfg.sh
bbc1.9i-btf/etc/bbchkcmds.sh
bbc1.9i-btf/etc/bbchkhosts.sh
bbc1.9i-btf/etc/bbdef.sh.DIST
bbc1.9i-btf/etc/bbdef-client.sh
bbc1.9i-btf/etc/bbinc.sh
bbc1.9i-btf/etc/bbinc-client.sh
bbc1.9i-btf/etc/bbsys.sh
bbc1.9i-btf/etc/bbwarnsetup.cfg
bbc1.9i-btf/etc/bb-hosts
bbc1.9i-btf/ext/ext-proto
bbc1.9i-btf/install/README
bbc1.9i-btf/install/README.SMS
bbc1.9i-btf/install/bbconfig
bbc1.9i-btf/install/bbmachine
bbc1.9i-btf/install/bbsys.aix
bbc1.9i-btf/install/bbsys.bsdi
bbc1.9i-btf/install/bbsys.bsdi4
bbc1.9i-btf/install/bbsys.caldera
bbc1.9i-btf/install/bbsys.darwin
bbc1.9i-btf/install/bbsys.debian
bbc1.9i-btf/install/bbsys.dgux
bbc1.9i-btf/install/bbsys.dynix
bbc1.9i-btf/install/bbsys.fedora
bbc1.9i-btf/install/bbsys.freebsd
bbc1.9i-btf/install/bbsys.hpux
bbc1.9i-btf/install/bbsys.hpux9
bbc1.9i-btf/install/bbsys.irix
bbc1.9i-btf/install/bbsys.linux
bbc1.9i-btf/install/bbsys.mandrake
bbc1.9i-btf/install/bbsys.netbsd
bbc1.9i-btf/install/bbsys.openbsd
bbc1.9i-btf/install/bbsys.osf
bbc1.9i-btf/install/bbsys.redhat
bbc1.9i-btf/install/bbsys.redhatES
bbc1.9i-btf/install/bbsys.sco
bbc1.9i-btf/install/bbsys.sco3
bbc1.9i-btf/install/bbsys.sinix
bbc1.9i-btf/install/bbsys.solaris
bbc1.9i-btf/install/bbsys.sunos
bbc1.9i-btf/install/bbsys.suse
bbc1.9i-btf/install/bbsys.ultrix
bbc1.9i-btf/install/bbsys.unixware
bbc1.9i-btf/install/bbsys.unixware7
bbc1.9i-btf/tmp/.helloworld
bbc1.9i-btf/src/README
bbc1.9i-btf/src/bb.c
bbc1.9i-btf/src/bb.h
bbc1.9i-btf/src/bbrun.c
bbc1.9i-btf/src/bbsend.c
bbc1.9i-btf/src/bbstat.c
bbc1.9i-btf/src/minimake/Makefile
bbc1.9i-btf/src/minimake/README
bbc1.9i-btf/src/minimake/bbmachine
bbc1.9i-btf/src/minimake/genbbdefs
bbc1.9i-btf/src/minimake/genmake
bbc1.9i-btf/src/minimake/getid
bbc1.9i-btf/src/minimake/client
bbc1.9i-btf/src/touchtime.c
bbc1.9i-btf/src/utils.c
bbc1.9i-btf/src/getipaddr.c
bbc1.9i-btf/src/Makefile

Je renomme le répertoire bbc1.9i-btf en bbclient:
[bb@ibook] /Users/bb>mv bbc1.9i-btf bbclient

Je me place dans le répertoire bbclient:
[bb@ibook] /Users/bb>cd bbclient
[bb@ibook] /Users/bb/bbclient>

Si vous êtes curieux et/ou si vous avez le temps, lisez le fichier README.INSTALL qui vous expliquera en détail l'installation. Mais bon comme j'explique tout ici vous n'avez pas vraiment besoin de RTFM :)

Compilation de Big Brother
Allons-y pour compiler le client Big Brother:
D'abord, configurer les sources pour Mac OS X (Darwin):
[bb@ibook] /Users/bb/bbclient/install>./bbconfig darwin
(Lisez et acceptez la licence)

Je répond à une première question:
Big Brother needs it's own user id. If your BB user doesn't exist, you'll have to create it then re-run bbconfig.
What will be the user ID for BB [bb]:
Je tape ENTER

---> BB will only run from user 'bb'
Making sure BBHOME is writable...
---> OK, /Users/bb/bbclient is fine...

Je répond à une deuxième question:
When you set up your machines, you should use Fully Qualified
Domain names, this means you use the whole name, like www.bb4.com,
instead of just 'www'. This is recommended.
Use FQDN (y/n): [y]
Je réponds n pour non

Ca y est, je peux compiler:

[bb@ibook] /Users/bb>cd /Users/bb/bbclient/src
[bb@ibook] /Users/bb/bbclient/src>make
Making darwin makefile
BBOS="darwin" CC="gcc" CFLAGS=" -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O" make -e bball
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bb.o -c bb.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bbsend.o -c bbsend.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o utils.o -c utils.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/bb bb.o bbsend.o utils.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o touchtime.o -c touchtime.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/touchtime touchtime.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o getipaddr.o -c getipaddr.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/getipaddr getipaddr.o utils.o
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o bbrun.o -c bbrun.c
gcc -DZOMBIE -Ddarwin -DGETTIMEOFDAY -DREGEXEC -O `./minimake/genbbdefs` -g -o ../bin.`./minimake/bbmachine OS`/bbrun bbrun.o utils.o
[bb@ibook] /Users/bb/bbclient/src>make install

(Ah oui, évidemment, à cette étape le script d'installation fait appel à gcc, il faut donc que vous ayez installé XCode)

La compilation est terminée, j'approche du but.

Création du fichier de configuration de Big Brother
Il me faut maintenant créer le fichier de configuration. Allons dans le répertoire adéquat:
[bb@ibook] /Users/bb>cd bbclient/etc
Je regarde le fichier bb-hosts livré par défaut:
[bb@ibook] /Users/bb/bbclient/etc>cat bb-hosts

Je renomme le fichier livré par défaut:
[bb@ibook] /Users/bb/bbclient/etc>mv bb-hosts bb-hosts.DIST

Je crée mon fichier bb-hosts et j'y écris simplement deux lignes:
10.42.10.1 venus # BBPAGER BBNET BBDISPLAY
10.42.10.28 ibook

Ici 10.42.10.28 ibook est l'adresse IP et le nom de ma machine client Mac OS X, et 10.42.10.1 venus l'adresse IP et le nom de ma machine serveur Big Brother. (Pour connaître l'adresse IP de votre machine, tapez ifconfig en0 ou allez dans Préférences Systèmes > Réseau). Evidemment cela ne fonctionnera correctement que si votre machine Mac OS X a une adresse IP fixe...

Sur mon serveur Big Brother, j'ajoute une ligne du genre:
10.42.10.28 ibook
(Ou si la machine Mac OS X n'est pas allumée en permanence:)
10.42.10.28 ibook #noping

Premier lancement du client
Je peux enfin lancer le client:
[bb@ibook] /Users/bb>cd /Users/bb/bbclient/
[bb@ibook] /Users/bb/bbclient>./runbb.sh start
Starting Big Brother
Starting Local tests (bb-local)...
Big Brother 1.9i started
[bb@ibook] /Users/bb/bbclient>

Ca y est, ca tourne !
Je regarde maintenant mon serveur Big Brother et j'y vois des boules vertes !

Si vous voyez des boules rouges, il peut y avoir plusieurs problèmes:

Premier problème possible:
La boule "msgs" est rouge, et quand je clique dessus je vois "/var/log/system.log is unreadable". Comme le message le dit, l'utilisateur bb ne peut pas ouvrir le fichier /var/log/system.log en lecture. Voyons les permissions sur ce fichier:
-rw-r----- 1 root admin 478K Jan 1 15:10 /var/log/system.log
Dès lors, pour que l'utilisateur bb puisse lire ce fichier, deux solutions:
a) Changer les permissions du fichier en . Mais alors, il est world-readable, ce qui peut être considéré comme un "problème de sécurité" par les Unix gurus.
b) Mettre l'utilisateur bb dans le groupe adm. A nouveau, ceci peut être considéré comme un "problème de sécurité" par les Unix gurus.

Deuxième problème possible:
La boule "disk" est rouge, et quand je clique dessus je vois "red Mon Dec 31 16:00:00 CET 2007 - Filesystem of /Users/bb/bbclient/tmp is FULL"
J'ai constaté que ce problème survient avec Léopard, mais pas avec Tiger. Il est dû à une nouvelle syntaxe de la commande sort sous Mac OS X Léopard. La solution à ce problème m'a été donnée par Martin Costabel (grand merci à lui). Il suffit d'éditer le fichier /Users/bb/bbclient/bin/bb-disk.sh . D'abord, je renomme l'original et je crée une copie:
[bb@ibook] /Users/bb>cd bbclient/bin
[bb@ibook] /Users/bb/bbclient/bin> mv bb-disk.sh bb-disk.sh.DIST
[bb@ibook] /Users/bb/bbclient/bin> cp bb-disk.sh.DIST bb-disk.sh
Ensuite j'édite bb-disk.sh: je remplace \"+${DFSORT}\" par \"-k$(($DFSORT+1))\" (Attention: Il faut le faire deux fois à deux endroits différents dans le fichier)

Pour que le client Big Brother démarre automatiquement
Avec ceci, il faut à chaque démarrage de la machine Mac OS X, aller démarrer le client Big Brother en effectuant des commandes du genre:
[pierre@ibook] /Users/pierre> sudo su - bb
[bb@ibook] /Users/bb> ./bbclient/runbb.sh start
... ce qui est assez pénible
Je vous conseille donc fortement de mettre le client Big Brother en "démarrage automatique". Pour cela, devenez l'utilisateur bb (par sudo su - bb par exemple), et ensuite:
[bb@ibook] /Users/bb>crontab -e

Dans le crontab de bb, une seule ligne à écrire:
@reboot /Users/bb/bbclient/runbb.sh start

Eventuellement, redémarrez pour vous assurer que le client Big Brother démarre bien tout seul

Ajustement cosmétique
Comme j'ai créé un utilisateur bb, il apparaît évidemment dans l'écran de connexion et dans la "permutation rapide d'utilisateur". Cela vous ennuie ? J'ai la solution:
[pierre@ibook] /Users/pierre> sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add bb

Pour les "bêtes de Mac OS X", enfin je veux dire: les utilisateurs avancés
Il est possible de créer l'utilisateur bb, et de le mettre dans le bon groupe, tout ça en ligne de commande. Par exemple:
Créer l'utilisateur bb:
sudo dscl . -create /Users/bb
sudo dscl . -create /Users/bb UserShell /bin/bash
sudo dscl . -create /Users/bb RealName "Big Brother"
sudo dscl . -create /Users/bb UniqueID xxx
sudo dscl . -create /Users/bb PrimaryGroupID 20
sudo dscl . -create /Users/bb NFSHomeDirectory /Users/bb
sudo mkdir /Users/bb
sudo chgrp staff
/Users/bb
sudo chown bb /Users/bb

(où xxx est le UID, faites bien attention d'en choisir un qui n'existe pas déjà, pour cela faites sudo dscl . list /users UniqueID pour voir ceux qui sont déjà utilisés. Dans mon cas l'UniqueID est 503. Le PrimaryGroupID 20 correspond à staff, en tous cas sous Tiger et Léopard)

Ceci a l'avantage de pouvoir choisir avec précision l'UID et le GID. De plus, les répertoires "qui ne servent à rien" pour l'utilisateur bb: Library, Pictures, Desktop, Movies, Public, Documents, Music, Sites ne sont pas créés.

(N'oubliez pas de mettre un mot de passe en faisant sudo passwd bb)

... et voilà, on y est arrivé !

1 commentaire:

Francois a dit…

"Ensuite j'édite bb-disk.sh: je remplace \"+${DFSORT}\" par \"-k$(($DFSORT+1))\" (Attention: Il faut le faire deux fois à deux endroits différents dans le fichier)"

--> Nickel, merci !