1# Introduction 2 3Calife est un programme permettant à certains utilisateurs, dont les noms sont présents dans une liste, de passer sous un quelconque ID utilisateur (par exemple, mais pas uniquement, `root`) en rentrant leur propre mot de passe. 4 5Ce système permet de ne pas divulguer le mot de passe de `root` (par exemple pour le mode *single-user* de certains Unix) tout en conférant les droits de `root` à certains utilisateurs bien identifiés. 6 7L'introduction obligatoire du mot de passe lors du changement d'ID permet de ne pas compromettre l'accès `root` si l'utilisateur reste logé sur une machine puis s'en éloigne. 8 9La barrière de sécurité finale réside dans le mot de passe de ces utilisateurs, qui, nous l'espérons, connaissent les règles élémentaires. 10 11Des listes d'utilisateurs vers lesquels quelqu'un a le droit d'utiliser `calife` permettent d'affiner la gestion des personnes autorisées. 12 13# Distribution 14 15Calife est distribué sous la GNU General Public Licence qui vous permet de diffuser, utiliser et modifier ce programme tant que vous en diffusez les sources et me communiquez toutes les modifications effectuées. Cela me permet de l'améliorer et de le maintenir dans de bonnes conditions. 16 17Vous trouverez la licence GNU dans le fichier `COPYING` fourni avec l'archive. 18 19Le fichier `compiler.h` est sous une forme modifée de la licence BSD à 3 clauses & (c) Bertrand Petit. 20 21Ceci dit, si vous l'utilisez et le trouvez utile, je ne refuserais pas une Guinness :-) 22 23Le site primaire pour Calife est [ici](http://www.keltia.net/programs/calife/) et en [FTP](ftp://mutt.frmug.org/pub/calife/). Un miroir existe [ici](ftp://postfix.EU.org/pub/calife/). 24 25Calife utilise maintenant [Bitbucket](http://bitbucket.org/) comme frontal de gestion des tickets, flux RSS, release, forums, etc. Le site est accessible [ici](https://bitbucket.org/keltia/calife/). Il y a aussi un [dépôt Git](https://github.com/keltia/calife/) 26 27# Installation 28 29## Autoconf 30 31Calife utilise dorénavant le programme GNU `autoconf` pour la configuration. GNU cc n'est pas obligatoire pour compiler Calife mais ne sont testés régulièrement que les compilateurs suivants : 32 33- GNU cc 4.x et suivantes 34- Clang 3.x et suivantes 35- SUN cc sur plateforme Sparc 36 37Tapez la commande : 38 39 ./configure 40 41Le script va analyser votre système et créer les fichiers suivants : 42 43- `Makefile` 44- `config.h` 45- `calife.1` 46- `calife.auth.5` 47 48Le binaire et les pages de manuels seront par défaut installés, lors du `make install`, sous `/usr/local`. 49 50Utiliser l'argument de configure `--prefix=/le/prefixe` pour indiquer le nom du répertoire adéquat. 51 52Quelques options spéciales sont disponibles : 53 54 --with-etcdir=PATH Directory containing calife.auth (default /etc) 55 --disable-shadow=yes|no Disable getspnam(3) usage for some Linuxes 56 --enable-debug=yes|no Set the debugging mode (default is no) 57 --enable-shellhack=yes|no (default is no) 58 --enable-dynamic Build the program dynamically (default static) 59 --enable-global-rc Add /etc/calife.out support. 60 61`--with-etcdir=CHEMIN` 62 63Permet de placer les fichiers calife.auth et calife.out ailleurs que dans /etc. 64 65`--enable-debug` 66 67Exige l'affichage des messages de "debugging". Inutile en usage normal. 68 69`--enable-shellhack` 70 71Si vous avez le message "Permission denied" après avoir tapé votre mot de passe, essayez de relancer `configure` avec cette option. 72 73`--enable-dynamic` 74 75Si vous désirez avoir le binaire lié dynamiquement et non pas statiquement. L'utilisation du binaire statique permet non seulement d'améliorer le partage des pages entre de multiples instances de calife mais aussi de ne pas être dépendant de la version de la bibliothèque standard. 76 77Parmi les systèmes devant utiliser `--enable-dynamic`, on compte Solaris 2.x, HP-UX, Linux et MacOS X/Darwin. 78 79## Cas de Linux : 80 81Ce système utilise plusieurs systèmes de *shadow passwords*. Il est possible que `configure` ne parvienne pas à déterminer le type d'outil de *shadow passwords* employé. Je n'ai pas de Linux, il m'est donc difficile de tester... Toute suggestion et modification de `configure.in` appréciées. 82 83L'option suivante permet à calife de ne pas utiliser `getspnam(3)` dans le cas où la fonction existe mais les shadows passwords ne sont pas utilisés. 84 85`--disable-shadow` 86 87Le défaut est d'utiliser getspnam(3) si elle est définie. 88 89Si vous devez créer une nouvelle section dans `conf.h` ou une nouvelle entrée dans `Makefile.in` ou `configure.in` , merci de me communiquer les modifications pour incorporation dans les versions suivantes. 90 91Le programme s'installe sous forme d'un binaire nommé `calife` pour des raisons de facilité mais le nom historique est `...`. 92 93Il installe aussi un fichier de configuration d'exemple, appelé `calife.auth-dist` et par défaut placé dans `/etc`. 94 95Consulter les pages de manuel fournies (`calife` et `calife.auth`) pour en apprendre davantage. 96 97Le programme essaie de lancer le fichier `calife.out` (par défaut dans `/usr/local/etc` sur FreeBSD et `/etc` ailleurs) à la sortie de `calife`. Ceci permet par exemple d'envoyer un mail à chaque utilisation de calife. Cette possibilité est optionnelle et dépend de l'option `--enable-global-rc`. 98 99## Compatibilité 100 101Calife a été testé et développé sur les systèmes UNIX suivants (les versions testées peuvent être anciennes et devraient être retestées mais je n'ai plus accès à pas mal de ces machines...) : 102 103- FreeBSD 1 - 12.x (mach. de développement de l'auteur) 104- MacOS X 10.2 - 10.12. 105- Linux 0.99+ et 1.* (1.2.* et 1.3.*), 2.* 106- Solaris 2.x (et la plupart des SVR4) 107- HP-UX 8.*, 9.*, 10.* et 11.* 108 109Bien que Calife n'ait pas été testé par l'auteur sur NetBSD et OpenBSD, il est fort probable du fait de la base commune de code, il n'y ait que peu de souci à utiliser Calife sur ces systèmes, à part sans doute quelques différences dans le sous-système PAM. 110 111NOTE: la version 3.0 sera une version orienté PAM de manière à simplifier le code, sa maintenance et la compatibilité avec les UNIX le supportant, le code non PAM restant a priori utilisable. 112 113Systèmes pour lesquels la compatibilité n'est pas/plus testée directement par l'auteur, ceux-ci étant donc non supportés. 114 115- SunOS 4.1.* 116- SunOS 3.2 117- NeXTStep 3 118- SCO 3.2 119- HP-UX 8.* et 9.* 120- SVR4 NeWSOS 5.02 121- Encore Gould NP1 122- AIX 3.x & 4.x 123- IRIX 5.x (probablement 6.x aussi) 124- GNU Hurd (nouveau) 125 126Pour calife 3.0/PAM, voir les exemple de fichier de configuration de PAM dans le répertoire `pam/` de l'archive. Placer ce fichier dans `/etc/pam.d` (ou l'endroit demandé par votre implémentation de PAM) sous le nom `calife`. 127 128Il existe à l'heure actuelle deux fichiers : 129 130- `macosx` pour les systèmes MacOS 10.3/Panther à 10.5/Leopard ; 131- `macosx10` pour Mac OS X Snow Leopard 10.6 ; 132- `freebsd5` pour les systèmes FreeBSD 5.x à 8.x 133- `freebsd9` pour les systèmes FreeBSD 9.x et supérieurs 134- `solaris` pour Solaris 8, 9 et 10 (à insérer dans pam.conf) 135- `linux` 136 137Pour utiliser LDAP/NIS et autres systèmes d'authentification, il faudra modifier le fichier PAM correspondant. 138 139La fonctionnalité syslog(3) est maintenant obligatoire pour compiler calife. Ca simplifie le code manière significative. 140 141Des packages FreeBSD et Debian existent dorénavant grâce à Thomas Quinot. Alain Thivillon a généré des packages Red-hat (RPM) pour 2.8.4b. 142 143## Pages de manuel 144 145Les pages de manuel sont très succinctes et utilisent le système de macros mis au point à Berkeley appelé `mandoc` donc si vous n'avez pas ces macros, le résultat n'est pas très lisible. Je conseille vivement d'utiliser ce système qui est plus complet que le `man` habituel. 146 147Si vous disposez de GNU groff, alors la commande pour les pages de manuel est `nroff -mandoc` ou `groff -mandoc`. 148 149# Historique 150 151Ce programme est né en 1991 d'une idée commune à François Berjon et moi, qui utilisions un système très simple, appelé ``...'', capable de lancer un shell root après vérification de l'uid du requérant, sans demander de mot de passe. 152 153Il a évolué lors de mon travail à Antenne 2 et surtout lors de mon stage à l'Université de Marne-la-Vallée, où il a gagné la majorité de ses possibilités actuelles. 154 155Il est utilisé quotidiennement par plusieurs sites et donne des résultats satisfaisants. 156 157Tout commentaire, critique [constructive] et patches bienvenus à l'une des adresses suivantes : 158 159[adresse privée maison](mailto:roberto@keltia.net)<br/> 160[Main site](http://bitbucket.org/keltia/calife/) 161 162# Remerciements 163 164René Cougnenc<br/> 165François Berjon <fcb@gwynedd.frmug.org><br/> 166Laurent Chemla <laurent@brainstorm.fr><br/> 167Pierre Beyssac <pb@fasterix.frmug.org><br/> 168Nathanaël Makarévitch <nat@nataa.frmug.org><br/> 169Thomas Quinot <thomas@cuivre.fr.eu.org><br/> 170Christian Perrier <bubulle@kheops.frmug.org><br/> 171Philippe Regnault <regnauld@starbsd.org><br/> 172Thierry Besancon <Thierry.Besancon@csi.uvsq.fr><br/> 173Laurent Wacrenier <lwa@teaser.fr><br/> 174Erwan David <erwan@rail.eu.org><br/> 175Bertrand Petit <elrond@phoe.frmug.org><br/> 176Denis Ducamp <Denis.Ducamp@hsc.fr><br/> 177 178et à tous ceux qui ont participé pour la mise au point et les tests. 179 180# $Id$ 181