Profitez des offres Memoirevive.ch!
Retour au login

L’autre jour, dans ma boîte aux lettres électronique, j’ai trouvé un message d’un lecteur de Cuk qui se trouvait confronté à un problème peu banal.

Voici ce qu’il me disait:

Bonjour Fabien,

Je lis régulièrement cuk.ch et j’apprécie toujours tes articles très techniques, mais que tu réussis à mettre à la portée de tous.

J’ai été très intéressé par ton article sur MacFuse : il m’apporte une solution pour l’écriture sur un disque formaté NTFS.

Comme je sais que tu es très fort en AppleScript, j’ai pensé à toi pour te soumettre un problème pour lequel je n’ai pas trouvé à ce jour de solution et j’aimerais savoir si ce que souhaite mettre en place est réalisable ou pas.

Voilà le problème :

À mon travail (je travaille dans un labo de recherche au CNRS), j’ai installé des bases FileMaker Pro dans la session Admin : à l’ouverture de cette session, elles se lancent automatiquement pour pouvoir être consultées par mes collègues via leur interface Web. Bien sûr, cette session Admin doit rester active en permanence : les personnes utilisant le Mac qui héberge ces bases travaillent dans leur propre session et ne sont donc pas autorisées à fermer la session Admin à laquelle elles n’ont d’ailleurs pas accès.

Mais il s’avère qu’elles sont parfois amenées à redémarrer ce Mac suite à un plantage d’une appli scientifique qui serait (disent-ils… ;-) “instable”. Le redémarrage se fait donc à l’insu de mon plein gré et je n’en suis jamais avisé, sauf lorsque quelqu’un cherche à accéder aux bases et qu’elles ne répondent pas, puisque la session Admin n’a pas été réouverte au redémarrage de la machine.

Question : est-il possible, au démarrage du Mac (sous OS X 10.3.9), de réaliser une ouverture automatique de la session Admin (avec ID et PWD adéquats) pour que l’ouverture des bases se fasse, puis de revenir à la liste des sessions disponibles sur ce Mac mais sans fermer la session Admin qui a, bien sûr, besoin de rester active ?

Autrement dit, peut-on amener un Mac à exécuter un script (un shell ?) tôt dans la procédure de boot ? “That is the real question” ! Au labo, les gens qui s’y connaissent en Unix ne m’ont pas proposé de solution, justement à cause de la précocité de l’événement à déclencher.

Merci de me donner ton avis et une piste, si tu en as une.

Bon week-end et longue vie à cuk.ch !

Patrick

alias Éole

Alors bon, mettons tout de suite fin aux rumeurs: je n’y connais pas grand chose en AppleScript. Ça ne m’a jamais vraiment intéressé. Je préfère les scripts shell ou la programmation avec Cocoa.

Mais bon.

Le problème de Patrick m’a titillé. Je me suis d’abord dit que ça ne devait pas être très compliqué et que c’est potentiellement un problème que d’autres personnes peuvent avoir.

Après avoir “boutiqué” un peu, j’en suis arrivé à cette petite application:

RetourAuLogin

Il suffit donc de placer cette application quelque part sur le disque dur (par exemple dans Utilitaires) puis de l’ajouter aux éléments à lancer au démarrage, tout à la fin de la liste (pour qu’elle soit exécuté en dernier).

Il faut encore régler les options de démarrage (dans les préférences Comptes -> Options) pour que cette session Admin soit automatiquement ouverte au démarrage de la machine, et le tour est joué.

Une fois le démarrage effectué, RetourAuLogin sera exécuté et le Mac retournera automatiquement à la fenêtre de login.

Evidemment, au niveau sécurité, c’est loin d’être parfait. Il est très simple de désactiver le lancement de cette application, mais bon, je ne vais pas vous dire ici comment faire. Et puis de toute façon, dans ce cas, c’est pas le but.

J’espère que ce tout petit utilitaire pourra être utile à quelqu’un d’autre que Patrick.

22 commentaires
1)
GG
, le 20.08.2007 à 00:40
[modifier]

“Autrement dit, peut-on amener un Mac à exécuter un script (un shell ?) tôt dans la procédure de boot ? “That is the real question” ! Au labo, les gens qui s’y connaissent en Unix ne m’ont pas proposé de solution, justement à cause de la précocité de l’événement à déclencher.”

Grosso modo, ce que Mac OS X fait durant le boot, c’est juste… lancer des scripts :-D Car c’est exactement à cela que servent les Startup Items ou launchd.

Pour résoudre son problème, il y aurait même bien mieux : lancer un LoginHook dès l’ouverture de session de l’utilisateur, ce qui permettrait de lancer ses bases en tant que root. Ce qui est idéal, puisque ça évite d’ouvrir la session admin, et ça rend l’ensemble transparent pour l’utilisateur. Pour les explications sur les LoginHook, voir chez Bombich.com.

On pourra râler que le lancement d’un processus en root n’est pas super sécurisé, mais c’est toujours mieux à mon goût que d’ouvrir un compte admin…

2)
XXé
, le 20.08.2007 à 01:16
[modifier]

Non non, on ne va pas râler GG, c’est en effet très intéressant cette histoire de LoginHook ! Et merci à Fabien pour son article et pour t’avoir amené à nous parler de ça !

On en demande encore des trucs du genre !

Didier

PS : mouaip, le “on” n’est peut-être pas général mais bon, tout le monde n’utilise pas nécessairement des axes qui sentent non plus hein… ;-)

3)
pat3
, le 20.08.2007 à 01:33
[modifier]

Génial! C’est exactement l’appli dont j’avais besoin, vu que sur l’ordi maison je suis en admin, mais que souvent les gamins utilisent l’ordi en mon absence, et parfois oublient de passer sur leur session. Oui, on en veut plus des trucs comme ça sur Cuk!

4)
François Cuneo
, le 20.08.2007 à 07:06
[modifier]

Ah oui Fabien, t’aurais dû penser au LoginHook!:-)

Moi chaque matin, je me lève, et je lui dis bonjour, en passant devant chez Bombich.

Oh que je me sens petit des fois…

5)
fxprod
, le 20.08.2007 à 07:20
[modifier]

Moi chaque matin, je me lève, et je lui dis bonjour, en passant devant chez Bombich.

je connais shell pour son merveilleux diesel qui me permet de me déplacer, mais je ne lui dis pas bonjour tout les matins.

6)
Blues
, le 20.08.2007 à 07:55
[modifier]

Ah, les p’tites applis de SuperFabien… toujours une soluce pour résoudre les problèmes avec une parade simple, pratique et utile à tous.

Yaka demander et vous l’aurez ! encore, encore …

7)
Madame Poppins
, le 20.08.2007 à 08:19
[modifier]

Hum… comment dire…. soupir….. c’est lundi et j’ai pas pigé un seul mot MAIS : j’ai lu ! Puisque je suis là, j’en profite : excellente journée à toutes et tous,

8)
Fabien Conus
, le 20.08.2007 à 08:21
[modifier]

GG merci pour le tuyau sur les LoginHooks. Toutefois, je ne suis pas certain que cela s’applique dans ce cas précis. En effet, FileMaker doit être lancé avec la session admin de Patrick, pas en root !

Mais l’idée est très intéressante, il faut que je creuse un peu.

9)
XXé
, le 20.08.2007 à 09:24
[modifier]

En effet, FileMaker doit être lancé avec la session admin de Patrick, pas en root !

Pourquoi “doit” ? Ça pose quel problème si FM est lancé en root ?

Didier

La pensée du jour : ce matin sur mon autoradio, j’ai lancé la FM en route… ;-)

10)
Fabien Conus
, le 20.08.2007 à 09:56
[modifier]

XXé je me suis mal exprimé. J’imagine que FileMake doit se lancer avec des réglages et des fichiers qui se trouvent dans le répertoire de Patrick. Maintenant, il est tout à fait possible de migrer tout ça dans la session root.

11)
GG
, le 20.08.2007 à 11:04
[modifier]

Si FileMaker doit être lancé sous une session admin, c’est sûrement qu’il a besoin de droits en root pour effectuer certaines tâches, ou plus exactement activer certains services.

Sinon, peut-être voir du côté du SetUID encore que y’en a pas besoin si on utilise un LoginHook.

Enfin, le StartupItem me semble aussi une bonne solution : je l’ai utilisé entre autres pour faire des connexions Active Directory / Open Directory automatiques, et ça marche extrêmement bien. Je pense que pour FMP, il faudrait tracer plutôt ce que souhaite faire Patrick alias Éole, pour éventuellement proposer une solution éventuellement un peu plus sécurisée.

12)
Dan DT
, le 20.08.2007 à 11:11
[modifier]

N’est-il pas possible de gérer la base avec FmPro Serveur ? Chez nous avec FmPro 6 et le vieux FmPro Server 5.5 la base est disponible directement et automatiquement au démarrage du mac. Il suffit de dire quelle session doit être lancée au démarrage

Ou alors j’ai rien compris …

13)
Invite
, le 20.08.2007 à 11:49
[modifier]

Sinon, peut-être voir du côté du SetUID encore que y’en a pas besoin si on utilise un LoginHook.

Enfin, le StartupItem me semble aussi une bonne solution : je l’ai utilisé entre autres pour faire des connexions Active Directory / Open Directory automatiques

Pourquoi tant de haine ?

14)
GG
, le 20.08.2007 à 12:06
[modifier]

Pourquoi tant de haine ?

Parce que chacun a son domaine de compétences, et que quand ça se complique trop, ben peut-être que c’est vraiment pas un sujet pour nous.

Wouala.

15)
Madame Poppins
, le 20.08.2007 à 14:41
[modifier]

Invité, effectivement, j’aurais été tentée d’écrire quelque chose du genre ;-) Mais bon, je vais m’abstenir…. parce que GG l’a si bien dit : je ne suis plus du tout du tout du tout du tout dans mon domaine de compétence !

16)
Mathieu Besson
, le 20.08.2007 à 16:12
[modifier]

Dan DT: effectivement, c’est ça la bonne solution, d’utiliser un FileMaker Server. Dès lors, il n’y aurait pas d’utilisateur qui doive lancer les bases depuis sa session, elles seraient partagées par le démon FMServer tournant sur la machine.

Et en plus, la performance serait nettement, nettement, nettement améliorée pour les utilisateurs (recherches, tris, etc.)

Sans oublier que FileMaker Server permet de faire des sauvegardes des fichiers sans les fermer, sans risquer de les corrompre.

Conseil appuyé pour Éole: acquérir une licence de FMServer, et dédier la machine uniquement à cela (pas de partage de fichiers, typiquement).

17)
Fabien Conus
, le 20.08.2007 à 17:08
[modifier]

Je crois que tout le monde est d’accord pour dire que cette solution n’est pas parfaite, je le dis dans l’article d’ailleurs. Toutefois, c’est une solution Q&D (quick and dirty), qui fonctionne bien et qui est gratuite ;-)

18)
henrif
, le 20.08.2007 à 17:26
[modifier]

Vieux réflexe : avant de chercher une solution compliquée, essayons de supprimer le problème !

Citation de Patrick Mais il s’avère qu’elles sont parfois amenées à redémarrer ce Mac suite à un plantage d’une appli scientifique qui serait (disent-ils… ;-) “instable”.

Comment s’y prennent-ils pour planter le Mac ? On doit pouvoir développer une appli sur une machine Unix en multi-sessions sans planter Unix. Alors ou Unix n’est plus ce qu’il était…ou MacOS X n’est qu’un Unix au rabais…ou il y a vraiment de piètres développeurs au CNRS (trop de fonctionnaires !!)

19)
François Cuneo
, le 20.08.2007 à 22:01
[modifier]

Si FileMaker doit être lancé sous une session admin, c’est sûrement qu’il a besoin de droits en root pour effectuer certaines tâches, ou plus exactement activer certains services.

Sinon, peut-être voir du côté du SetUID encore que y’en a pas besoin si on utilise un LoginHook.

Enfin, le StartupItem me semble aussi une bonne solution : je l’ai utilisé entre autres pour faire des connexions Active Directory / Open Directory automatiques, et ça marche extrêmement bien. Je pense que pour FMP, il faudrait tracer plutôt ce que souhaite faire Patrick alias Éole, pour éventuellement proposer une solution éventuellement un peu plus sécurisée.

Bouhouhouhouhou…snif…

20)
GG
, le 21.08.2007 à 02:52
[modifier]

Bouhouhouhouhou…snif…

Si tu veux que j’ai la même réaction, parle-moi un jour de photographie, je réagirai très vite :-)

21)
Eole
, le 21.08.2007 à 16:23
[modifier]

Je suis ravi de voir l’intérêt que les lecteurs de Cuk ont manifesté pour cette note de Fabien concernant sa solution à un problème disons… plutôt pointu et de fait presque anecdotique ! Quelques-uns des lecteurs y ont vu (ou y verrons) un intérêt parce qu’ils font “tourner” une appli (serveur SMTP, Apache/mySQL via MAMP, etc) dans leur session avec les droits d’administrateur, alors que d’autres utilisateurs, leurs enfants par exemple, usent et abusent du dernier jeu vidéo “de-la-mort-qui-tue” dans leur propre session… Et si le Mac “plante” (c’est rare, je sais…), ils sauront sûrement redémarrer (on leur fait confiance sur ce coup-là !), mais le serveur SMTP, MAMP ou autres applis “vitales” ne seront pas réactivées, elles.

D’où l’intérêt de la solution de Fabien qui a gentiment voulu s’intéresser au problème que je rencontrais et qui a trouvé une “soluce” qui fonctionne parfaitement, même si elle n’est pas “top” pour ce qui concerne la sacro-sainte sécurité de la machine.

Je laisse à Fabien le soin de réfléchir aux autres solutions possibles proposées par GG & coll. et de nous proposer, s’il en voit l’intérêt, une solution plus élégante (?) et/ou plus sécurisée. Pour ma part, sa solution “Retour au Login” me convient parfaitement.

Mes réponses à quelques commentaires sur cette note…

Hum… comment dire…. soupir….. c’est lundi et j’ai pas pigé un seul mot MAIS : j’ai lu !

Et vous avez survécu à cette lecture, Madame Poppins ? Je l’espère, car j’adore vous lire sur Cuk (ou sur votre blog aussi, d’ailleurs…) : vos billets ou vos humeurs nous ravissent dans ce monde de “brutes” où le 0 et le 1 sont rois !

J’imagine que FileMake doit se lancer avec des réglages et des fichiers qui se trouvent dans le répertoire de Patrick. Maintenant, il est tout à fait possible de migrer tout ça dans la session root.

Tout à fait, Fabien. Et pourquoi irais-je travailler sous root si je peux m’en passer ? Moins je ‘root” et mieux j’me sens ! ;-)

Si FileMaker doit être lancé sous une session admin, c’est sûrement qu’il a besoin de droits en root pour effectuer certaines tâches, ou plus exactement activer certains services.

FMP n’a besoin de rien d’autres que ses fichiers. C’est du “basique”, mais ça nous rend service ! Pourquoi faire compliqué quand on peut faire simple…

Conseil appuyé pour Éole: acquérir une licence de FMServer, et dédier la machine uniquement à cela (pas de partage de fichiers, typiquement).

On y pense, on y pense… D’autres bases FMP sont en chantier et le nombre d’utilisateurs va croître. Il sera alors temps de passer à FMP Server.

Comment s’y prennent-ils pour planter le Mac ? On doit pouvoir développer une appli sur une machine Unix en multi-sessions sans planter Unix. Alors ou Unix n’est plus ce qu’il était…ou MacOS X n’est qu’un Unix au rabais…ou il y a vraiment de piètres développeurs au CNRS (trop de fonctionnaires !!)

Henrif, une “appli scientifique” n’est pas une appli forcément “maison”. Dans notre cas, il s’agit d’un logiciel d’acquisition d’images (disons des “empreintes”) scannées par un appareil et de traitement de ces “images” pour en obtenir des données manipulables pour des calculs quantitatifs. Il se trouve que cette application est développée et commercialisée par le fabricant du “scanner”. Un dernier point : il n’est pas sûr que ce soit cette appli qui fasse planter le Mac : je ne suis pas derrière chaque utilisateur lorsqu’il “bricole” dans sa session…

Henrif, la communauté des développeurs du CNRS mériterait quelques excuses pour le malheureux qualificatif que tu as employé, tu ne penses pas ? ;-)

22)
Dan DT
, le 23.08.2007 à 18:26
[modifier]

Ceci aidera peut-être qlq’un ou donneras des idées à d’autres :-)

Starting FileMaker Server 5.5 During System Startup On Mac OS X

APPLICABLE TO FileMaker Server 5.5

The current documentation for FileMaker Server 5.5 on Mac OS X does not provide a method for launching the application automatically when the system is starting up.

This article provides a description of how this can easily be accomplished. On Mac OS X, system services are activated at system startup by a series of scripts residing in the /System/ Library/StartupItems folder.

Each service has it’s own folder containing two or more files. One of these files, a Bourne Shell script which starts the service, has the same name as the folder in which it resides (i.e. the sendmail start up script is called Sendmail and is in the folder /System/Library/StartupItems/Sendmail) and the second is a parameter list file which contains information about other services this service is dependent on. For the FileMaker Server 5.5 we need only create the FileMakerServer folder and these two files.

To proceed with this article you must have Mac OS X Administrator level knowledge that includes complete understanding of administrative functions such as: • Parameter lists • Shell scripts • Setting permissions • Modifying the Hostconfig file

Note: The following instructions assume that FileMaker Server 5.5 is installed in the default directory and that you are not logged in as root. Although you are not logged in as root, in places where you use the “sudo” command you are making a one-time request for administrative privileges. Throughout this process when entering this command you may be prompted for a password. If you see “Password:” on screen, enter your root password, and press the enter key. When typing, your entered password will not display on screen.

A. Creating the FileMakerServer Startup Folder and Script Open the Terminal application (found in /Applications/Utilities) you will see the following line on your screen: [localhost:~] name% (where name is your login name, for example admin%)

1. To move to the start up items folder at the prompt enter the following command then press the return key: cd /System/Library/StartupItems/ Result on screen: [localhost:/System/Library/StartupItems] name%

2. Create a startup folder for FileMaker Server 5.5. To do this, enter the following command then press the return key: sudo mkdir FileMakerServer

3. Move to the new FileMaker Server 5.5 startup items folder. To do this, enter the following command then press the return key: cd FileMakerServer/ Result on screen: [localhost:Library/StartupItems/FileMakerServer] name%

4. Create the parameter list file. To do this, enter the following command then press the return key: sudo pico StartupParameters.plist Result on screen: The Pico text editor opens.

5. Paste the following text into the editor window, include the first and last brackets. { Description = “FileMaker Server 5.5”; Provides = (“FMP”); Requires = (“Resolver”); Uses = (“Network Time”, “NFS”); Preference = “None”; Messages = { start = “FileMaker Server 5.5”; stop = “FileMaker Server 5.5”; }; }

6. Press Control-O and then return, to write out to the file and save, then enter Control- X to exit the editor. Result on screen: The screen will show [ wrote 12 lines] [localhost:Library/StartupItems/FileMakerServer] name%

7. At the prompt create the FileMaker Server 5.5 start up script. To do this, enter the following command then press the return key: sudo pico FileMakerServer Result on screen: The Pico text editor opens.

8. Paste the following text into the editor window, include the first number sign (#) at the beginning and “fi” at the end. #!/bin/sh . /etc/rc.common

  1. Start FileMaker Server
    1. FMS_PATH=”/FileMaker Server 5.5/FileMaker Server Config.app/Contents/Resources/” if [ ”${FMSERVER:=NO}” = “YES” ]; then ConsoleMessage “Starting FileMaker Server” ”$FMS_PATH”“fmserverd” start -c ”$FMS_PATH”“fmserver.conf” fi

9. Press Control-O and then return key, to write out and save to the file, then enter Control-X to exit the editor. Result on screen: The screen will show [ wrote 10 lines] [localhost:Library/StartupItems/FileMakerServer] name%

10. At the prompt set execute permissions for the start up script. To do this, enter the following command then press the return key: sudo chmod 0555 FileMakerServer Result on screen: [localhost:Library/StartupItems/FileMakerServer] name% B. Enabling The Startup Script During the start up process the hostconfig file located at /etc/hostconfig is consulted to see which services should be started. To enable the start up script we have just created, a line must be added to this file for FileMaker Server 5.5.

1. At the prompt open the file /etc/hostconfig. To do this, enter the following command then press the return key: sudo pico /etc/hostconfig Result on screen: The Hostconfig file is opened in the Pico editor.

2. Locate section labeled, ”# Services” and add a line containing only FMSERVER=YES Note: To bypass FileMaker Server 5.5 during system startup change YES to NO. For example: FMSERVER=NO

3. Press Control-O and then return, to save the file, then enter Control-X to exit the editor.

C. Checking That It Works On Mac OS X FileMaker Server 5.5 runs as a daemon and as such has no interface. Once the steps in this article are completed and your machine is restarted you will NOT see a FileMaker Server icon in the Dock. Why is this? When clicking on the FileMaker Server Config app in the FileMaker Server 5.5 folder you are actually launching the configuration app and not the FileMaker Server

Service. The configuration application does display an icon. When following the steps in this article you are only starting the FileMaker Server 5.5 Service and not the FileMaker Server configuration application, thus no icon will appear. There are several ways you can test your work to see if it is working: • Without restarting 1. Launch the FileMaker Server Config application and make sure FileMaker Server is not running. 2. To check that the start up script is working correctly, from the Terminal application enter the following command then press the return key: sudo /System/Library/StartupItems/FileMakerServer/FileMakerServer The following message should appear in the Terminal: Starting FileMaker Server • With Restarting 1. From the Apple Menu choose Restart, while the machine is restarting watch the Mac OS X Boot screen just below the progress bar. You will should eventually see FileMaker Server 5.5 listed. • Using a second machine with FileMaker Pro 5.5 client installed. 1. Make sure you have a multi-user file in the root of the FileMaker Server 5.5 folder. 2. Restart the FileMaker Server 5.5 machine. 3. From another machine on your network, launch FileMaker Pro 5.5 and click the host button. If you see your FileMaker Server machine in the list then it worked. D. Disable Automatic Startup Remember, to disable the automatic startup of FileMaker Server 5.5, once you have completed the above, you can change the parameter in the hostconfig file from: FMSERVER=YES to FMSERVER=NO

Désolé pour la mise en page, je peux vous envoyer le pdf si nécessaire :-)