[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: La FAQ



On Sat, Nov 27, 1999 at 10:17:42PM +0100, Martin Quinson wrote:
> 
> Voici la derniere version en date de cette FAQ. Deux sortes de remarques:
> I) La forme
> 
Principe de base : c'est celui qui fait qui décide. Donc c'est nécessairement
OK :-)

> II) Le fond
> 
Personnellement ce que je reproche aux FAQ, c'est d'être une collection
d'astuces, dépendant de la configuration. Il est plus puissant, plus simple
d'expliquer la «grammaire» --- i.e. le pourquoi du comment --- que de donner
une collection de mots --- les astuces. Bref d'avoir une FAQ synthétisée, à
mi-chemin du HOWTO.
En application du principe, tu trouveras ci-après une réécriture de la section
init | shutdown, que tu pourras toujours remanier à ta sauce, sachant que cette
version là ne plaira pas --- ce qui explique que j'en fasse profiter tout le
monde :-D

> 3. Diverses questions
> ---------------------
> 
> 3.1. Comment éteindre facilement l'ordinateur ?
> -----------------------------------------------
> 
Eteindre l'ordinateur est un acte grave... puisqu'il consiste à tuer tous les
processus.

On peut procéder à une boucherie --- éteindre directement l'unité centrale ---
à condition de comprendre qu'il s'agit aussi d'un suicide, car votre ordinateur
ne pourra *jamais* redémarrer proprement, et vous vous arracherez les cheveux
qui vous restent à essayer de rétablir la situation.

Ou on peut faire «ça» à la Ponce Pilate, en confiant la basse besogne à un
programme qui le fera pour nous. Quitte à être lâche, autant être intelligent :
il faut choisir un programme qui tuera les processus tout en permettant à votre
ordinateur d'être un phénix renaissant à l'identique de ses cendres à la 
prochaine mise en route. 

Un tel programme existe qui possède les moyens de savoir ce qui a été fait,
puisqu'il est le père de tous les processus : INIT ( processus de pid 1). Si
Dieu existe, il a été créé par INIT. Et si INIT existe, c'est parce qu'il est
issu du chaos créé par les informaticiens ( si vous n'en aviez pas déjà fait
l'expérience, vous n'éprouveriez pas le besoin de vous farcir la FAQ...).

Arrêter l'ordinateur ( ou le faire redémarrer), cela consiste donc à signifier
à INIT de se transformer en Médée, c'est-à-dire d'aller zigouiller tous ces
enfants et de faire le ménage.

Donc arrêter l'ordinateur peut se faire de toutes les manières dont on peut
passer des paramètres à INIT.

3.1. Debian/Linux- FAQ, opus 1 : LES VARIATIONS INIT

  3.1.1 Les commandes
  
	Le seul à avoir le droit de commettre des génocides, c'est le
dictateur : root ( à quand une nuit du 4 août pour l'abolition des privilèges
de root ?). Donc les commandes suivantes ne peuvent être lancées que par
le super-utilisateur :

# halt		// pour arrêter
# reboot	// pour rebooter
# shutdown	// pour arrêter en spécifiant différents paramètres

	En fait reboot n'est qu'un lien vers halt, et halt se contente 
d'appeler shutdown.
	Et que fait shutdown ? Il appelle INIT en lui disant de basculer
vers le niveau d'exécution spécifié : 

0 => arrêt
6 => redémarrage

( Tous niveaux que vous trouverez spécifiés dans /etc/inittab, le fichier
de configuration d'INIT).

	Ce qui signifie qu'on peut donc faire exactement la même chose en
invoquant directement INIT :

# init 0 	// arrêter
# init 6	// redémarrer
    
    3.1.1.1 Élargir le champ des privilégiés

    Comme pour toute commande, vous pouvez permettre à d'autres que root
de les utiliser, en optant pour l'un des trois choix suivants :

o Changer les droits d'exécution

o Donner votre mot de passe à des utilisateurs de confiance ( rien que le
nom m'amuse...) pour qu'ils se *substituent* à vous --- par l'intermédiaire
de la commande « su » ( substitute user, et non pas super-user ! On peut se 
substituer à n'importe quel utilisateur dont on connaît le mot de passe : 
« su tartempion » vous permet de devenir tartempion ! grisant...), et qu'ils
puissent alors faire toutes les c... | bêtises que vous vous réserviez.

o Autoriser de distingués utilisateurs à n'exécuter que cette commande en se
faisant passer pour vous, grâce à la commande « sudo » et au fichier de configuration « /etc/sudoers »

 	Dans le premier cas, comme pour INIT il faut que l'utilisateur soit 
root, si vous changez les droits d'exécution de shutdown par exemple en 
créant un nouveau groupe « shutdown », il faut set-uid root la commande : 
> 
>                        rwsr-x--- root shutdown
> 
>              * ajouter les utilisateurs privilégies dans le groupe
> 
>              * Évidement, pour éviter d'avoir à remettre ce SUID à chaque
>                mise à jour, on peut utiliser le fichier `/etc/suid.conf'.
> 

  3.1.2 Un raccourci clavier pour le mode console

	Il existe la possibilité de provoquer un arrêt, un redémarrage ou
autre en affectant certaines fonctions à certaines associations de touches
du clavier.
	En effet, la seule chose fixe se produisant lorsque vous tapez sur
votre clavier, c'est l'envoi d'identifiants ( en gros les scan-codes) disant
quelles sont les touches ou combinaisons de touches frappées. ET C'EST TOUT !

	Il est de la responsabilité de l'administrateur de dire au noyau ce
qu'il doit déduire de la frappe de ces touches. L'association des touches à
des codes est réalisée * POUR LA CONSOLE * par un fichier image du clavier
( keymap ) chargé par loadkeys(1).
	X en charge un autre, ce qui explique que les indications suivantes
ne sont valables que pour la console ( et non pas dans un xterm).

	Une association courante est celle de ctrl+(alt | altGr)+suppr avec
le redémarrage.
	La frappe de cette association invoque INIT, qui trouve le programme
à appeler en consultant /etc/inittab, en l'occurrence la ligne suivante :

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

	INIT invoque donc /sbin/shutdown ( qui va l'appeler d'ailleurs) pour
un redémarrage ( « -r »), avec appel immédiat de shutdown ( « now »), en 
demandant à INIT d'attendre 1 seconde (« t1») avant de génocider.

	Et l'option « -a » ? Bonne question.
	L'appui sur les touches du clavier peut être effectué par n'importe
qui. Le signal sera lancé à INIT, qui n'a pas les moyens de dépister l'origine
du signal ( le signal n'est pas généré dans un shell, il vient directement du
clavier ). Conclusion : par une telle configuration du clavier N'IMPORTE QUI
PEUT FAIRE REDÉMARRER L'ORDINATEUR. Bref, c'est le génocide démocratisé...

	L'option « -a » permet de limiter la casse, en spécifiant dans quelles
circonstances --- c'est-à-dire en présence de qui logé sur une console 
virtuelle --- il faut autoriser le redémarrage.
	Pour que ce filtre fonctionne, il FAUT que soit créé le fichier
/etc/shutdown.allow. En l'absence d'un tel fichier, l'option n'a aucun effet
et vous en restez à votre passoire ( c'est le cas par défaut sur slink, et 
c'est une bogue ).
	Dans ce fichier, vous listerez, à raison d'un par ligne, les
utilisateurs en présence desquels le redémarrage peut être effectué. Inutile
de spécifier root : le dictateur a tous les droits par défaut. Ce qui explique
qu'en présence d'une fichier /etc/shutdown.allow vide, il faut que root soit
logé sur une console virtuelle pour que le redémarrage ait lieu.

	Attention : quand nous parlons de « présence » d'un utilisateur, il
ne s'agit pas d'une constatation faite de visu par le noyau qui se serait
servi en l'occurrence de ses grands yeux bleus. Un utilisateur présent, c'est
un utilisateur logé sur une console virtuelle.
	Donc, si root est le seul à posséder le droit de faire redémarrer par
le raccourci clavier ( /etc/shutdown.allow EXISTE && ( est vide | contient
juste root ) && l'option -a est spécifiée dans /etc/inittab à l'invocation de
shutdown ), et qu'il est logé sur tty1, tartempion logé sur tty2 peut faire
redémarrer par le raccourci clavier. Si root n'est pas logé : nenni !

	Enfin, notez que l'option « -a » n'a de sens que dans le cadre d'INIT
ou d'un ( autre ) démon.
	En effet, comment un utilisateur non autorisé pourrait-il invoquer
shutdown -a alors qu'il n'est pas autorisé à lancer le programme ?
	Et pourquoi un utilisateur autorisé le lancerait-il avec cette option :
pour vérifier après l'avoir lancé qu'il avait le droit de le faire ?

> 3.1.3. Méthodes pour éteindre graphiquement
> -------------------------------------------
[..]

A+
-- 
Thierry LARONDE
thierry.laronde@polynum.com
website : http://www.polynum.com


Reply to: