Le contrepoint de
bompi révélant combien la 'somme_des_possibles' est loin d'être épuisée par un
AppleScript implémenté du mot-de-passe
root en ce qui concerne l'activation de la fonction
purge sous «
Mavericks» - je me sens incité à
détailler ici son procédé. Pourquoi diantre s'en aller
détailler scolairement ce dont le
Plan a été sufisamment dessiné de main de maître? - ouïs-je demander d'un interlocuteur invisible. Eh bien! Par simple
curiosité rhétorique, répondrais-je : d'un qui se demande si le procédé '
édition_sudoers' prend
plus ou moins de place à le détailler pédagogiquement que le ci-devant procédé '
activation_root' (ce qui révèle le caractère 'masochiste', pour ne pas dire 'innocent du village', de votre serviteur au clavier)
.
♤
Le fichier '
sudoers' (
/private/etc/) paramètre par défaut les conditions d'accès d'
agents opérant dans le Système aux privilèges de
root. C'est donc un fichier sensible qu'il serait malvenu de maltraiter par des bidouillages inconsidérés. Il est par conséquent avisé, avant toute intervention éditrice, de sauvegarder une
copie conforme de ce fichier (sachant, néanmoins, que cet acte de copie modifie les droits d'accès afférants, et transforme illico l'accès en
lecture seule du fichier par l'utilisateur
root et le groupe-système
wheel , en
lecture seule pour l'utilisateur
admin et le groupe-ayant_compte
staff. Aucune rétro-substitution directe au fichier bidouillé dans le répertoire
/private/etc/ de la copie du fichier original '
sudoers' ne rétablissant les droits-système natifs - ce qui par voie de conséquence interdit dans le «
Terminal» à un utilisateur-admin de passer des commandes
sudo dans ces conditions, le fichier n'ayant plus de propriété
0 comme attendu, mais
501. Ce qui peut vite créer un cercle vicieux). Bref, il vaut mieux y aller avec prudence et discernement lorsqu'il s'agit d'éditer le fichier '
sudoers'.
Une difficulté supplémentaire réside dans le fait que pour éditer ledit fichier, il faut passer (pour que ça se passe le mieux possible) par un
éditeur de texte du «
Terminal» : ce qui implique, d'une part de connaître la musique, comme on dit, càd. de savoir quelles
combinaisons de touches font quoi dans la fenêtre ouverte de l'éditeur en question (combinaisons sans rapport avec l'usage intuitif du clavier dans un éditeur de texte courant) ; d'autre part, de connaître la
grammaire de base permettant de transformer une intention préalable (comme d'accorder un privilège de commandes
sudo sans mot-de-passe admin à un agent donné) en une ligne de texte qui la consigne adéquatement pour le Système).
Bref, on nage dans des eaux plus profondes que lorsqu'on se borne à activer l'utilisateur
root en mode graphique. Ces avertissements préalables, incontournables quoique peu opératoires, m'amènent déjà à penser que le procédé '
édition_sudoers' est d'un exposé pédagogique plus
long, rhétoriquement parlant, que le procédé '
activation_root' - à quoi se lit un de ces '
effets_farceurs' dont est friand votre serviteur au clavier
.
♧
Ouvrons une fenêtre du «
Terminal» et saisissons la commande :
qui implique le renseignement d'un mot-de-passe admin intronisant justement l'utilisateur
sudoer pour être exécutée. Cette commande ouvre le fichier
sudoers dans une fenêtre de l'éditeur de texte
vim (qui est l'éditeur dédié au fichier
sudoers, une sorte de
voie moyenne entre le plaisant
nano et l'exigeant
emacs). Ledit fichier s'ouvrant par défaut en mode '
Read_Only' inéditable (Lecture seule), appuyer résolument et exclusivement sur la touche du clavier
e (sans shift) pour passer en mode
Édition. S'affiche le texte du fichier
sudoers qui, par défaut, sous «
Mavericks», ressemble à ceci :
Bloc de code:
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
Defaults env_reset
Defaults env_keep += "BLOCKSIZE"
Defaults env_keep += "COLORFGBG COLORTERM"
Defaults env_keep += "__CF_USER_TEXT_ENCODING"
Defaults env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
Defaults env_keep += "LINES COLUMNS"
Defaults env_keep += "LSCOLORS"
Defaults env_keep += "SSH_AUTH_SOCK"
Defaults env_keep += "TZ"
Defaults env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
Defaults env_keep += "EDITOR VISUAL"
Defaults env_keep += "HOME MAIL"
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
Aussi
lapidaire et
cryptique qu'une
Pierre_de_Rosette - qu'on me permettra de ne pas commenter afin de donner au procédé '
édition_sudoers' sa chance rhétorique d'appartenir à la
forme_brève . Je préfère néanmoins prévenir quiconque s'amuserait à suivre le mode d'emploi que je décris sans
connaître le musique, qu'il vaut mieux s'abstenir de tripoter le clavier inconsidérément (encore que
vim cache bien son jeu pour ce qui est de sauvegarder définitivement les écritures farfelues qu'on aurait rajouté au fichier '
sudoers'). Donc, face à cette page du fichier '
sudoers' offerte à l'écriture, nous nous bornerons a presser la touche du clavier
i (sans shift) afin de passer dans le mode
Insertion.
Dans le pied de page, l'indication
--INSERT-- signale qu'on est passé dans le mode '
Insertion', càd. capacité de saisie de texte dans la page du fichier '
sudoers'. Et, ce qui simplifie la tâche, par défaut une
ligne vide s'affiche en tête de page, avec le pointeur exactement à gauche en
départ de ligne, comme ceci :
Bloc de code:
[B]��[/B][COLOR="Red"]-----------------------------------------------------------[/COLOR]
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
Defaults env_reset
Defaults env_keep += "BLOCKSIZE"
Defaults env_keep += "COLORFGBG COLORTERM"
Defaults env_keep += "__CF_USER_TEXT_ENCODING"
Defaults env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
Defaults env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
J'ai rajouté exprès les pointillés rouges pour figurer la ligne vide à partir de la position sélestre du pointeur. Toute frappe régulière au clavier, voire tout copier-coller, va s'inscrire à partir de la marge gauche. Le pointeur se déplace oisivement à droite ou à gauche grâce aux touches
flèches (◀︎ et ►
du clavier. Le pointeur déplacé oisivement à la fin d'un mot ou de la ligne efface ce qui le précède par action réitérée sur la touche de suppression du clavier ←.
Comme ce qui nous importe est uniquement l'implémentation du fichier '
sudoers' par l'attribution à
un ou à
tous les utilisateurs du Mac de passer une commande
sudo sans avoir à renseigner de
mot-de-passe, ce uniquement afin de lui permettre d'activer un script de type "
sudo purge' sans qu'un mot-de-passe de promotion_
sudoer ne soit requis (facilité attendue au final) - nous avons le choix entre deux saisies du genre :
Bloc de code:
[COLOR="Red"]nom_d'utilisateur_abrégé[/COLOR] ALL=NOPASSWD: /usr/sbin/purge
pour l'utilisateur-admin isolé (=Moi) où
nom_d'utilisateur_abrégé se remplace par le
nomabrégé exact de l'utilisateur-admin, ou pour tous les ayant-comptes de l'OS quelque chose du genre :
Bloc de code:
%localaccounts ALL=NOPASSWD: /usr/sbin/purge
Une fois la ligne saisie convenablement, se contenter de presser la touche
esc ('
escape') en haut à gauche du clavier pour quitter le mode '
Insertion' de la page ouverte dans
vim (ce qui se signale par la disparition de
--INSERT-- dans le pied de page où ne se montre plus qu'une ligne de saisie vide). Alors (et attention! la manœuvre a valeur de sauvegarde dans le fichier '
sudoers' de toute écriture éditrice précédente) - presser successivement la touche
: (qui s'inscrit d'emblée, quelle que soit la position préalable du pointeur, tout en bas à gauche en début de pied-de-page, le pointeur apparaissant à la droite immédiate du
:) suivie de
w et de
q, de manière à ce que
:wq soit inscrit à l'extrême gauche du pied-de-page.
Actionner ↩︎ (retour-chariot = presser la touche 'Entrée' = 'Retour' du clavier tout à droite) afin de valider la commande. L'éditeur de texte
vim est quitté sur cette sauvegarde du fichier '
sudoers' édité, et il y a retour au prompt classique du
bash du «
Terminal».
[NB. La modification du fichier '
sudoers' a valeur immédiate pour le Système, sans nécessité de re-démarrage. La ligne saisie tout en haut de la page ouverte dans
vim en mode '
Insert', à la sauvegarde du fichier vient s'inscrire à l'emplacement attendu dans le corps du fichier, sous le titre commenté :
# User privilege specification.]
♡
Le plus dur est fait - et moi j'ai dès à présent la confirmation de ce que je soupçonnais déjà : le procédé '
édition_sudoers' est
rhétoriquement plus long à détailler que le procédé '
activation_root'
. [
Donc je pourrais m'en tenir là? Allons, encore un petit AppleScript pour conclure...]
Ouvrir l'«
Éditeur Applescript» (dans les
/Applications/Utilitaires) et dans sa fenêtre saisissons :
Bloc de code:
do shell script "sudo purge"
quit
sur 2 lignes, puis presser le bouton '
compiler', choisir au menu '
Fichier', la rubrique : '
Enregister'. Renseigner le nom du script (ex.
Purge), l'emplacement d'atterrissage, et surtout le '
Format' :
Application et presser le bouton : '
Enregistrer'.
Normalement, s'il n'y a pas eu de lézard, un double-clic sur l'icône du script (ou simple-clic s'il est dans le
Dock) devrait lancer sans barguigner l'exécution du fichier
purge (
/usr/sbin). Done.
♢
Je possède les 2 '
AppleScripts', l'un activant la fonction
purge grâce au renseignement du mot-de-passe
root qui a demandé l'activation du
Super-Administrateur (et sa désactivation consécutive éventuellement) ; l'autre activant la fonction
purge grâce à l'invocation de
sudo que l'édition du fichier '
sudoers' permet à l'utilisateur de performer sans renseignement d'un mot-de-passe admin. Eh bien! les 2 méthodes marchent aussi bien l'une que l'autre, somme toute elles prennent à peu près autant de temps l'une que l'autre à mettre en place dans la
pratique, mais quant à leur exposition
détaillée à des fins
pédagogiques - ô combien la deuxième est-elle la plus longue...
♖