44 votes

Mac Lion: fstab est obsolète. donc quoi le remplace pour empêcher une partition de se monter?

Si fstab est obsolète dans Lion (et avant, je pense?), comment empêche-t-on correctement une partition de se monter au démarrage du système ?

Ceci est vaguement lié à cette question qui n'a pas encore de réponse.

Éditer :

Donc ma confusion vient de la lecture à propos de fstab et qu'on m'a dit de modifier /etc/fstab.hd. Alors.../etc/fstab est ce que je dois créer et où j'ajoute les informations UUID pour empêcher le montage des partitions ?

$ cat /etc/fstab.hd 
IGNORE THIS FILE.
This file does nothing, contains no useful data, and might go away in
future releases.  Do not depend on this file or its contents.

32voto

Daniel Beck Points 105590

Neither man fstab nor man diskarbitrationd (voir ici par exemple) mentionnent la dépréciation de /etc/fstab.

Il n'est pas là par défaut, mais pourquoi devrait-il l'être, s'il était juste vide parce que les valeurs par défaut sont bonnes ? Il est là si vous en avez besoin.


Les allégations de dépréciation de fstab circulent sur le web depuis un certain temps maintenant.

De ici:

etc/fstab est déprécié dans Leopard

De ici:

J'allais suggérer de modifier le fichier /etc/fstab, mais apparemment il a été déprécié dans Leopard, et est probablement maintenant supprimé de Snow Leopard...

Outre le fait qu'il n'y a aucune mention de dépréciation dans sa documentation, pourquoi Apple ajouterait-il des utilitaires pour éditer correctement des fichiers de configuration dépréciés ?

En citant man vifs:

NOM
     vifs -- modifier fstab en toute sécurité
[...]
HISTOIRE
     L'utilitaire vifs provient de Mac OSX 10.5.

Alors que le programme suivant s'exécute (boucle infinie, Ctrl-C pour quitter), aucun disque ne sera monté, avec des conditions appropriées vous pouvez bien sûr le contrôler de manière plus fine :

#include 
#include 

DADissenterRef BlockMount(DADiskRef disk, void *context)
{
        DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault, kDAReturnNotPermitted, CFSTR("interdit !"));
        return dissenter;
}

int main (int argc, const char * argv[])
{
    DAApprovalSessionRef session = DAApprovalSessionCreate (kCFAllocatorDefault);
    if (!session)
    {
        fprintf(stderr, "échec de création de la session d'arbitrage de disque");
    }
        else
        {
        DARegisterDiskMountApprovalCallback(session, NULL, BlockMount, NULL);
        DAApprovalSessionScheduleWithRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

        while (true) {
            CFRunLoopRunInMode(kCFRunLoopDefaultMode, 60 /* secondes */, false);
        }

        DAApprovalSessionUnscheduleFromRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
        DAUnregisterApprovalCallback(session, BlockMount, NULL);
        CFRelease(session);
    }
    return 0;
}

Enregistrez sous main.c et compilez en utilisant ce qui suit (vous avez besoin de Developer Tools) :

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration

21voto

Rin Rio-Oki Points 129

Il n'est pas nécessaire d'exécuter des programmes ou de se préoccuper de l'emplacement de fstab.

Il suffit d'exécuter sudo vifs et d'ajouter les lignes appropriées au fichier. Le mien est :

#
# Attention - ce fichier ne doit être modifié qu'avec vifs(8)
#
# Tout autre façon de le faire n'est pas prise en charge et pourrait être destructrice.
#
UUID=E00F307A-9295-482E-8A79-2FA2C922F3CD none ntfs rw,noauto
LABEL=Tempy none ntfs rw,noauto

Assurez-vous de savoir comment modifier et enregistrer un fichier dans vim. Vimtutor vous enseignera les bases.

PS /private/etc est en réalité le même que /etc. OS X traite l'URL en interne (ceci est expliqué dans la documentation de l'API - même si je ne comprends toujours pas pourquoi)

3voto

user132016 Points 179

Comme j'ai le même problème et que je n'ai pas trouvé de solution raisonnable pour cela, j'ai écrit un petit service de démon de lancement qui empêche le montage de volumes avec des étiquettes spécifiées.

Voici le lien : https://github.com/nanoant/mountblockd

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X