NAME

sans_edix_windows_msys2 - Description de l'installation et l'utilisation de msys2 sur windows

DESCRIPTION ET INSTALLATION

msys2 est un émulateur d'unix(7f) pour le système d'exploitation windows(7f). Pour l'installer, aller sous https://www.msys2.org/ et télécharger msys2-x86_64-latest.exe, puis lancer l'installateur.

Choisir d'installer msys2 à l'adresse

C:\msys64

Ensuite, mettre à jour msys2 avec la commande suivante :

$ pacman -Syu

Accepter de rédémarrer et recommencer la même commande, jusqu'à ce que tout soit à jour.

Vous aurez alors une invite de commande shell usuelle et vous pourrez donc vous entraîner à la pratique du shell. Les répertoires de votre système windows sont accessibles directement. Par exemple pour accéder au répertoire de téléchargement d'un utilisateur windows sur le disque C:

$ cd /c/Users/nom_utilisateur/Downloads

Pour accéder au disque D:

$ cd /d

CONFIGURATION INITIALE

La gestion des paquets

On met à jour la liste des paquets accesibles et on met à jour les paquets déjà installés avec la commande

$ pacman -Syu

Pour installer un nouveau paquet, par exemple le paquet tmate, vous utilisez la commande

~ $ pacman -S tmate

Les paquets que nous vous conseillons d'installer

$ pacman -S rsync openssh vim git tmate ttyrec make gcc

Création de deux répertoires de travail

~ $ mkdir ${HOME}/bin ~ $ mkdir ${HOME}/tmp

CLONER LE PROJET EDIX

edix(7f) est prévu pour tous nos travaux pratiques sous unix. Il contient donc les éléments nécessaires pour une découverte d'unix et un accès aux séances de travail collectif à distance. Pour utiliser pleinement edix sous windows, vous devez utiliser une machine virtuelle, ou bien utiliser wsl : voir windows(7f).

Mais dans un premier temps, vous pouvez cloner le projet edix sous msys2, c'est à dire télécharger l'ensemble des fichiers de documentation et de configuration d'edix. Cela vous permettra déjà d'accéder à quelques premiers éléments, de parcourir la documentation et par exemple d'accéder à un terminal partagé via tmate.

Nous vous invitons à cloner les projets edix et edix_premiers_pas avec les commandes suivantes :

~ $ git clone https://nastar.laplace.enseeiht.fr/git/edstar/edix.git ${HOME}/edix ~ $ git clone https://nastar.laplace.enseeiht.fr/git/edstar/edix_premiers_pas.git ${HOME}/edix_premiers_pas

CONFIGURATION PLUS AVANCEE

Configuration du shell

Vous pouvez remplacer votre fichier de configuration .bashrc par celui proposé sur edix_premiers_pas :

~ $ cp ~/edix_premiers_pas/windows/bashrc_windows ~/.bashrc

Ensuite activer ces éléments de configuration en lisant ce fichier avec la commande

~ $ . ~/.bashrc

Installation des pages de manuel de edix

Les pages de documentation du projet edix sont accessibles en utilisant la commande man : voir edix_man(7f). Elles sont dans le répertoire ~/edix que vous avez cloné avec git. Pour les installer sur msys2 vous pouvez utiliser les commandes suivantes :

~ $ cd ~/edix/doc ~ $ make ~ $ make install

Vous pourrez ensuite utiliser la commande suivante pour apprendre à utiliser les pages de manuel :

~ $ man 7f edix_man

Utiliser tmate pour suivre une séance de terminal partagé

Pour utiliser tmate, consulter la page de manuel edix_tmate(7f).

Comme tmate utilise ssh, que vous aurez installé si vous avez suivi nos recommandations (openssh dans les installations par pacman ci-dessus). Cependant, il est possible que vous rencontirez des difficultés avec ssh si les droits de votre répertoire .ssh ne sont pas ceux attendus par ssh. Le problème peut aussi venir des fichiers qui sont situés dans ce répertoire, typiquement les fichiers known_hosts et authorized_keys. Dans ce cas, consutez la section ci-dessous sur la gestion des droits des fichiers sous windows, et par précaution, faites en sorte que le répertoire .ssh et son contenu ne soient accessibles que par l'utilisateur qui utilise msys2 (aucun droit de lecture/écriture/exécution par les autres utilisateurs).

GESTION DES DROITS DES FICHIERS SOUS WINDOWS ET CONFIGURATION DE SSH

Voir les droits d'un fichier ou d'un répertoire

Il n'y a pas de correspondance stricte entre les droits de type unix, par exemple rw-r--r--, et les droits windows. Sous msys2, ce sont les droits windows qui s'expriment (par exemple openssh est compilé de façon à comprendre ces droits windows). Donc on ne peut pas controler les droits des fichiers avec ls /-l (qui renvoit toujours rw-r--r-- ou drwxr-xr-x) ni les modifier avec chmod : la commande chmod ne renvoit aucune erreur mais ne fait rien.

Pour gérer les droits, on doit passer par windows.

Pour cela on lance PowerShell.

Sous PowerShell, on peut afficher les droits d'un fichier avec la commande icacls. Par exemple pour voir les droits du fichier config sous .ssh :

PS C:\> icacls.exe 'C:\msys64\home\nom_utilisateur\.ssh\config'
On obtient une ligne par utilisateur, typiquement Système, Administrateurs et nom_utilisateur. Sur chacune de ces lignes, il y a des lettres qui indiquent les droits, par exemple (F) pour full, (RX) pour read-execute, (R), (W), etc.

On peut aussi afficher les droits d'un répertoire avec la même commande, mais alors on voit aussi d'autres lettres : (0I) pour s'applique aussi aux fichier, (CI) pour s'applique aussi aux sous-répertoires, (I) pour hérité d'un dossier parent.

Changer les droits d'un fichier ou d'un répertoire

Pour changer les droits, on passe également sous PowerShell. On commence par définir l'identité windows de l'utilisateur :

PS C:\> $acct = (whoami)
La commande suivante affiche le contenu de la variable ainsi créée :
PS C:\> "${acct}"

Ensuite, par exemple pour limiter les droits du fichier du repertoire .ssh (les mettre à l'équivalent de rwx------) :

PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh /inheritance:r PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh /grant:r "${acct}:(OI)(CI)F"
En affichant les droits on obtient :
PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh C:\msys64\home\nom_utilisateur\.ssh NOM-ORDINATEUR\nom_utilisateur:(OI)(CI)(F)

Ensuite, par exemple pour limiter les droits du fichier config sous .ssh (les mettre à l'équivalent de rw-------) :

PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh\config /inheritance:r PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh\config /grant:r "${acct}:(R,W)"
En affichant les droits on obtient :
PS C:\> icacls.exe C:\msys64\home\nom_utilisateur\.ssh\config C:\msys64\home\nom_utilisateur\.ssh\config AUTORITE NT\Système:(F) BUILTIN\Administrateurs:(F) NOM-ORDINATEUR\nom_utilisateur:(R,W)

VOIR AUSSI

edix(7f), edix_man(7f), edix_premiers_pas(7f), edix_tmate(7f), unix(7f), windows(7f)