macOS : Ajouter les commandes pour les développeurs ?

Ajouter les commandes pour les développeurs ?

Lorsque vous utilisez des gestionnaires de Paquets comme BREW et BREW CASK, ces outils reposent sur des outils en ligne de commandes livrées par Apple. Ils seront installés si l’outil de développement d’Apple : XCODE est installé sur votre machine.

Voir ces posts :

Si par contre, vous n‘avez pas besoin d’XCODE ou si vous rencontrez des problèmes avec BREW, placez dans le terminal cette commande :

 $ xcode-select –install
 

Images 01

(la commande et la fenêtre de téléchargement des commandes)

Mac OSX téléchargera les outils et les installera directement dans votre système, effectuer cette opération permet souvent de résoudre des problèmes avec BREW.

Dom


Applwe reasonably small Recevez toutes les semaines le résumé des publications : Abonnez-vous à la Newsletter !
Advertisements

macOS : Comment vérifier les fichiers exclus de Time Machine ?

Backup

Vous avez un doute sur la prise en charge d’un nouveau dossier ou vous souhaitez simplement vérifier les fichiers exclus de Time Machine ?

Ouvrez le Terminal et saisissez cette ligne :

 $ tmutil isexcluded (et le nom du fichier) 

Le plus simple est de glisser/déposer le fichier sur le Terminal.

Le résultat est le suivant :

tmutil_isexcluded

[included] signifiant que le fichier est bien sauvegardé.

Pour découvrir les autres options de la commande tmutil (Time Machine) :

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/tmutil.8.html

Henri Dominique Rapin


Applwe reasonably small Recevez toutes les semaines le résumé des publications : Abonnez-vous à la Newsletter !

Sécurité :: Comment fonctionne le Sandboxing sur Mac OS X ?

Finder

Le SandBoxing sur Mac OS X.

Le terme «SandBox» est particulièrement utilisé dans le monde Linux. Il se traduit par «bac à sable» et décrit un type de protection lors de l’exécution d’un logiciel.

Voir la page WIKI : http://fr.wikipedia.org/wiki/Sandbox_(sécurité_informatique) 

Imaginons un logiciel qui fonctionne sur un Mac, par défaut ce logiciel a les droits en écriture et lecture qui sont ceux de l’utilisateur qui a lancé le programme. Toujours par défaut, un utilisateur sur Mac peut écrire à volonté dans son dossier personnel (la petit maison blanche) mais dès qu’il veut modifier le contenu d’un répertoire hors de ce dossier il lui faut montrer pâte blanche et indiquer un mot de passe.

Cette approche par «compartiments» fait la force des systèmes Unix et participe à leur réputation. Dans le monde Windows les choses sont beaucoup moins claires.

Revenons sur notre exemple, notre application fonctionne sur votre Mac et un personnage mal intentionné a réussi à utiliser une faille de ce programme et le contrôle maintenant de l’extérieur. Il peut à cet instant détruire les fichiers auxquelles votre application et plus directement votre compte ont accès.

Ce genre d’attaque existe bien, certes elle ne s’applique pas en particulier aux applications lancées sur un ordinateur mais plutôt à des fonctions de» serveur» comme le serveur Internet Apache qui est livré avec Mac OS.

Une première réponse à ce type d’attaque est bien sur l’utilisation d’un «firewall», qui empêcherait l’accès de l’extérieur à ce programme. Mais quand vous mettez en place un serveur, c’est en général pour qu’il soit accessible de l’extérieur. Donc cette réponse n’est pas la plus appropriée.

Une autre solution consiste à «isoler» l’application, c’est à dire qu’elle s’exécute, mais n’a pas accès à certaines ressources de la machine. Prenons de nouveau notre exemple, cette fois imaginons que nous avons un moyen technique qui nous permet d’interdire à l’application toute écriture dans le dossier personnel de l’utilisateur ou dans une autre zone du système. Dans ce cas de figure, peut importe celui qui lance l’application, celle-ci ne peut plus écrire n’importe ou.

Ainsi donc un assaillant ayant pris possession du programme ne peut écrire et donc être nuisible. Cette technique est celle du «bac à sable» parce que l’application ou le serveur ne peut pas accéder au dehors de la zone de sécurité et ceci peu importe celui qui lance le service ou l’application.

Si les SandBox sont très communs sur Linux ou BSD, ils étaient très complexes à mettre en place sur Mac… Sauf depuis Leopard, Apple propose un solution qu’elle appelle ironiquement «SeatBelt» ou «ceinture de sécurité» (ils sont toujours très poétiques à cupertino).

Le problème de cette solution est qu’elle n’est pas documentée et Apple a raison sur ce sujet. Moins ils en diront et moins de personne tenteront de la contourner.

La solution d’Apple n’est pas inconnue des Unixiens, il s’agit de l’utilisation du framework de TrustedBSD et SELinux pour les distributions linux. A une époque Apple a essayé une version dite «SEDarwin» compatible SELinux mais a renoncé à ce projet pour se consacrer à «Seatbelt».

En pratique comment ça marche sur Mac OS X  :

les applications qu’Apple a placé dans un Bac à sable sont listées dans le dossier suivant :

/usr/share/sandbox. pour en explorer le contenu dans le terminal lancez cette commande :

$ cd /usr/share/sandbox

puis

$ ls

Une partie de la liste devrait être la suivante :

bsd.sb ntpd.sb
cvmsCompAgent.sb portmap.sb
cvmsServer.sb quicklookd-job-creation.sb
fontmover.sb quicklookd.sb
kadmind.sb sshd.sb
krb5kdc.sb syslogd.sb
mDNSResponder.sb xgridagentd.sb
mds.sb xgridagentd_task_nobody.sb
mdworker.sb xgridagentd_task_somebody.sb
named.sb xgridcontrollerd.sb

Tous les fichiers portent l’extension «.sb». SURTOUT ne modifiez ni ne supprimez ces fichiers. Pour en voir le contenu tapez la commande suivante :

$ cat fontmover.sb

Ce qui affichera le contenu du fichier «fontmover.sb». Ce fichier est divisé en sections :

Capture d écran 2012 05 07 à 18 03 59

Dont une section du nom de « (allo file-read* «, celle-ci détermine l’espace ou le chemin dans lequel l’application peut lire de fichiers. Une autre section du nom de « (allow file-write*» précise les dossiers où peuvent être écrits des informations par l’application «fontmover.» et ainsi de suite, le bac à sable est ainsi défini.

Vous pouvez vous interroger sur l’intérêt de cette technologie pour un utilisateur, prenons un programme qui voudrait communiquer avec l’extérieur (comme «Adobe»), il n’est pas possible de leur interdire l’accès au réseau. ( Pour être honnête, il existe une solution avec le firewall IPFW embarqué dans Mac OS, mais là n’est pas le sujet).

Il est possible grâce à ce mécanisme «SeatBelt» et de« SandBoxing » de lui interdire par exemple le réseau . Pour cela l’opération est simple, j’ai pris comme exemple d’interdire à l’Utilitaire Réseau » d’accéder au réseau :

Premièrement nous allons créer un profil, c’est un simple fichier texte. Dans un éditeur de texte «texedit» ou «Bean» tapez ces trois lignes :

(version 1)

(debug deny)
(deny network*)
(allow default)

La ligne (deny Network*) indique qu’aucun accès au réseau n’est permis à l’application. Vous pouvez ajouter une ligne (deny file-write*) qui interdit l’écriture de fichiers. Vous l’aurez compris l’astérixe signifie «tout».

Bean

Enregistrez le tout sous le nom «noreseau.sb» dans votre dossier personnel.

Lancez cette commande :

$ sudo

Puis après avoir saisi votre mot de passe :

$ sandbox-exec -f ~/noreseau.sb /Applications/Utilities/Network\ Utility.app/Contents/MacOS/Network\ Utility

Il faut, si vous souhaiter placer dans un sandbox une application, récupérer son exécutable qui se trouve dans le paquet de l’application. Dans le cas de l’utilitaire réseau le chemin ets : « /Applications/Utilities/Network\ Utility.app/Contents/MacOS/Network\ Utility » .

Utilitaire1

L’application sera ouverte automatique et ne pourra accéder au réseau. Vous avez là un moyen simple d’empêcher une application d’écrire dans des fichiers ou d’accéder au réseau comme par exemple «Adobe»…

Utilitaire2

Le fait d’être dans un bac à sable ne dure que le temps ou l’application est ouverte, après sa fermeture elle redémarre hors du « sandbox ».

Le principe du Sandbox n’est pas courant, mais il semble que Google Chrome l’utilise, ceci afin de prévenir des composants qui pourraient être néfastes pour les utilisateurs de ce Butineur.

Henri Dominique Rapin

macOS : Comment ouvrir le dossier sélectionné dans le Terminal ?

Le terminal n’a plus de secret pour vous et vous l’utilisez régulièrement et il n’est pas rare que vous naviguiez entre les dossiers pour lancer telle ou telle commande dans le Shell.

Il y a beaucoup de nouveautés dans le Terminal avec depuis Lion, mais il existe aussi quelques astuces livrées par Apple qui restent méconnues. La principale concerne la possibilité de placer le dossier sélectionné, comme le dossier de travail, dans le Terminal.

Vous pouvez bien sur « glisser / déplacer « un dossier sur le Terminal pour qu’il prenne en compte le chemin sous la forme Unix, mais pourquoi ne pas se servir du dossier sélectionné comme base de travail dans le Terminal.

Pour ce faire rien de plus simple, Ouvrez le tableau de préférence « Clavier » puis sélectionnez l’onglet « Raccourcis clavier «  et dans la colonne de gauche, placez vous sur « Services », naviguez dans la liste pour trouver la ligne « Nouveau terminal au dossier ». Cochez la case qui précède cette ligne.

Image1

(la ligne du service « Nouveau Terminal au dossier » à cocher)

Fermez les préférences système et sélectionnez un dossier. Faites apparaître le menu contextuel (click droit de la souris) dans le menu qui apparaît sélectionnez « Services » et dans la nouvelle liste choisissez « Nouveau Terminal au dossier ».

Image2

(le service à sélectionner dans le menu contextuel)

La fenêtre du Terminal s’ouvre et vous êtes automatiquement placé dans le dossier, ce qui est très pratique et pour obtenir le contenu du dossier un simple « ls » fera l’affaire.

Image3

(la fenêtre du terminal ouverte avec le dossier comme point de départ)

Dans la liste des services vous avez peut être remarqué la ligne juste en dessous de celle qui vient d’être sélectionnée et qui porte le nom de « Nouvel Onglet de Terminal au dossier », ce service effectue la même opération que la précédente mais au lieu d’ouvrir une fenêtre du Terminal, elle ajoute un onglet, vous pouvez maintenir dans le Terminal plusieurs onglets, par exemple chacun pour un dossier différent.

En cherchant bien vous trouverez aussi deux lignes faisant référence au « man page » ou pages de manuel en Français, ce sont des fichiers qui expliquent les commandes présentes dans Mac OS X pour la partie Unix.

Image4

(les services listant les « man pages » dans le panneau de préférence clavier)

Ces services fonctionnent sur tous les textes, mais ils sont surtout pertinents dans le Terminal, sélectionnez une commande et dans le menu contextuel des Services choisissez «   Ouvrir la man page dans le terminal », vous aurez à l’écran le détail de la commande sélectionnée (pour autant qu’elle existe).

Image5

(Le service à sélectionner dans le menu contextuel)

Le second service aura plus d’intérêt pour les débutants, sélectionnez le mot ou la commande et choisissez le service « Recherche dans les pages man de Terminal » et le mot sélectionné servira de recherche pour que toutes les « man pages » le contenant soient listées.

Image6

(La fenêtre du terminal avec la « man page » sur la commande « ls »)

Pour terminer il faut noter qu’avec LION, le Terminal ouvre une nouvelle fenêtre au même endroit que lorsque vous l’avez fermé… ça aussi c’est plutôt bien vu par les développeurs d’Apple.

Henri Dominique Rapin

Applwe reasonably small Recevez toutes les semaines le résumé des publications : Abonnez-vous à la Newsletter !

macOS : Comment ouvrir par defaut les nouvelles pages web dans un onglet dans Safari ?

Compass

Il est possible de paramètrer le Butineur d’Apple afin que chaque clic sur un lien ouvre une nouvelle page dans un onglet. Certains liens dans des emails ou documents continuent parfois à faire apparaitre les pages dans des fenêtres isolées au lieu de les afficher dans des onglets. Il est possible de forcer ce réglage caché en utilisant cette ligne de commande  :

Capture d écran 2012 05 07 à 07 41 46

1 – Fermez Safari s’il est ouvert.

2 – Dans votre dossier Application/Utilitaires, cliquez sur Terminal. 3 – Dans le terminal, tapez la ligne suivante :

$ defaults write com.Safari TargetedClicksCreateTabs -boolean YES

Il sera nécessaire de redémarrer Safari pour que cette modification soit prise en compte. Tous les liens y compris ceux commençants par « _blank » seront ouverts dans un onglet.

Mac :: Comment modifier la fréquence des recherches des mises à jour d’OS X Mountain Lion ?

OS X Mountain lion vérifie une fois par semaine les mises à jour disponible, si sous Lion il était possible de modifier la fréquence des vérifications, ce n’est plus possible sous Mountain Lion, le tableau de bord a disparu.

Modifier la fréquence est toujours possible, mais il faut utiliser le Terminal pour cela :

$ sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate ScheduleFrequency 2

Le chiffre indiqué à la fin de la commande, indique le nombre de jours entre deux vérifications. La valeur par défaut est « 7 » pour une semaine.

C’est une bonne pratique de vérifier régulièrement la disponibilité des mises à jour.

Mac :: Comment redémarrer OS X Moutain lion depuis le Terminal ?

Cette commande peut être exécutée dans le Terminal ou au travers d’une connexion SSH (à distance) elle est connue des Unixiens, la voici :

$ sudo shutdown –r now

Vous devrez saisir le mot de passe administrateur mais votre mac redémarra immédiatement ! La fermeture est immédiate et les applications sont « tuées » (kill) les documents ne sont pas sauvegardées. Attention donc !

Pour le plaisir si vous vous connectez à distance et que vous souhaitez informer les utilisateurs voici la même commande mais avec un message :

$ sudo shutdown –r now « Attention, redémarrage immédiat du votre Mac »