La commande "PURGE" ne fonctionne plus sur Maverick

En fait, on peut parfaitement se passer de l'activation du compte root (activation dont l'intérêt est rare, voire inexistant).

Comme je l'ai indiqué ailleurs, on peut autoriser n'importe quel utilisateur à utiliser une ou plusieurs commandes en tant qu'administrateur ; et même, qu'il le fasse sans entrer de mot de passe.
Cela se fait en modifiant le fichier de paramétrage de la commande sudo (/etc/sudoers).

Une fois ceci réalisé, on pourra utiliser dans un script (shell ou Automator ou AppleScript) la commande suivante : "sudo /usr/sbin/purge" sans avoir à entrer le mot de passe.

Il faut toutefois être prudent lors de la modification du fichier /etc/sudoers. En cas de pépin, il suffira de passer par un démarrage de secours pour remettre d'aplomb ce qui doit l'être.

J'utilise cette méthode depuis un petit moment déjà car mon compte n'est plus administrateur : c'est plus sûr mais aussi un peu agaçant ; je l'ai donc autorisé à effectuer quelques opérations sans danger (mais sans avoir à passer par un login intermédiaire sur un compte d'administration).
 
Ok merci.

Comme je n'aime pas trop bidouiller mon mac contrairement à mon nexus 4 qui rooté+ROM Custom, je vais désactiver l'utilisateur root.
 
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) :D.

♤

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 :D.

♧

Ouvrons une fenêtre du «Terminal» et saisissons la commande :

Bloc de code:
sudo visudo

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 :D. 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.]

Bloc de code:

♡

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' :D. [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... :D

♖
 
Dernière édition par un modérateur:
Un petit complément à cet exposé exhaustif : avant de modifier le fichier /etc/sudoers en faire une copie.
Genre :
Bloc de code:
sudo cp /etc/sudoers /etc/sudoers.20131105.bkp
(en mettant la date de son choix, bien entendu ;))

Car si le fichier n'est pas correct, même pour une peccadille, plus aucune action d'administration n'est possible !! (ça m'est arrivé il y a quelques mois :rateau: )
Dans ce cas, il faut redémarrer sur la partition de secours, monter le disque interne et rétablir le bon fichier dans un Terminal.

Une astuce cependant pour s'assurer que l'on n'a pas fait de boulette : dans le Terminal ouvrir plusieurs onglets. L'un dans lequel on travaille et un autre dans lequel on lance un shell en tant qu'administrateur avec la commande
Bloc de code:
sudo -s

Dans l'onglet dans lequel on travaille, une fois la modification du fichier est finie, on peut taper
Bloc de code:
sudo -k
qui résilie le ticket de 5 minutes pour l'utilisation de sudo. Puis lancer une commande
Bloc de code:
sudo purge
. Si tout se passe bien, c'est bon et on peut tout fermer.
Si ça ne se passe pas bien, on passe dans l'autre onglet pour rétablir la situation...
 
quelle mine d'or ce fil !!!!
 
quelle mine d'or ce fil !!!!

☝︎petite boule de Noël dorée rajoutée à ce qui ressemble plus à un sac-à-billes peintes qu'à une poche aurifère par le farceur macomaniac :D

Ce fil est né d'un changement de statut des permissions du binaire : purge sous l'OS «Mavericks 10.9» (binaire d'ailleurs déplacé du répertoire /usr/bin à /usr/sbin) : ce programme nécessite désormais des droits root pour être exécuté, là où antérieurement de simples droits admin suffisaient.

Les solutions qui ont été proposées vont, en résumé, d'une commande : sudo purge dans le «Terminal» (nécessitant le renseignement d'un mot-de-passe admin afin que l'utilisateur soit promu sudoer), à une application 'AppleScript' embarquant un mot-de-passe root (impliquant que l'utilisateur root ait été activé avec renseignement de son mot-de-passe) pour finir avec une édition du fichier 'sudoer' autorisant les utilisateurs à l'exécution du binaire : purge (ce qui implique une édition de ce fichier-système sensible avec l'éditeur de texte vim).

Il n'est pas interdit à quelqu'un qui aurait eu, comme mokuchley, la rare patience de relire l'ensemble des messages de ce fil, d'en tirer l'impression que cette réputée «mine d'or» exige un travail de sape disproportionné pour un résultat des plus maigre.

En guise de cadeau de Noël farceur (tant soit peu tardif) - je propose le raccourci suivant en 2 étapes :

  1. Dans une fenêtre du «Terminal», renseigner :

    Bloc de code:
    sudo chmod 4755 /usr/sbin/purge

    et ↩︎ (avec mot-de-passe admin).

  2. Dans l'«Éditeur AppleScript», renseigner :

    Bloc de code:
    do shell script "purge"

    compiler, puis sauvegarder sous le titre 'purge' au format 'Application'.

☞ placer l'application dans le répertoire des 'Applications' et par un glisser-déposer créer l'affichage d'un raccourci dans le «Dock». Un seul clic sur l'icône du «Dock» permettra le déclenchement de la fonction purge à volonté.

❉

[Commentaire : le binaire : purge n'est exécutable sous «Mavericks» que par son propriétaire = root, l'administrateur-système. Un processus initié par un utilisateur-admin qui n'est pas root n'a donc aucune chance d'exécuter ce binaire, parce que les permissions de ce processus correspondent aux droits réels de l'utilisateur qui l'a initié, et non pas à ceux du propriétaire root du binaire.

Le contournement ici proposé consiste à établir sur le binaire un setuid : l'instauration d'une identité d'utilisateur permettant à un processus initié par un usager qui n'a pas de droits d'exécution sur le binaire de bénéficier d'un passe-droit greffé sur le binaire qui lui confère automatiquement les droits effectifs : root. Pour ce faire, il suffit d'implémenter les permissions du binaire du préfixe 4 qui correspond, en valeurs octales, au setuid en imposant un 4755 <il y aurait pas mal à dire sur les permissions formelles de ce fichier qui sont de 755 en valeurs octales sans néanmoins que la valeur exécutive théorique 1 pour le groupe et le tout-venant soit honorée par le Système>.

Grâce à ce petit contournement, l'AppleScript classique déclenche sans barguigner la fonction purge.
]
 
Rien de plus simple :
do shell script "sudo purge" password "..." with administrator privileges

Dans la zone password tu met ton pass admin et voila
 
Cela a été déjà donné.

Il n'est pas très sain de laisser en clair un mot de passe dans un fichier ; il n'est pas très sain non plus de laisser un mot de passe dans quelque fichier statique que ce soit : s'il est modifié dans l'annuaire, le script ne marchera plus.

Pour une fonction aussi inoffensive que purge il me paraît bien préférable d'autoriser son exécution directement sans passer le mot de passe (si, vraiment, taper un mot de passe est insurmontable...)
Cela se configure aisément dans /etc/sudoers comme indiqué ci-dessus.