Sujet du TP1

Transcription

Sujet du TP1
Départment d’Informatique
TP - LIF12 système d’exploitation
Administration Système – GNU/Linux rules
2016/09/12
I
Préambule : ssh
Le logiciel ssh, pour secure shell, permet de se connecter sur une machine distante afin de l’utiliser ou de l’administrer. Vous avez sans doute déjà utilisé la connexion en fournissant vos identifiants par
exemple sur les serveurs d’accès de l’université pedagolinux710.univ-lyon1.fr et linuxetu.univ-lyon1.fr.
Sans entrer trop dans les détails, ssh permet aussi une connexion utilisant un couple clef publique/clef
privée, ce qui a deux intérêts :
— permettre la connexion sans utiliser de mot de passe (donc automatique) ;
— ne fournir que la clef publique à la machine cible (donc pas de transmission d’informations
sensibles à une machine distante).
Q.I.1) - En local, lancer les commandes mkdir -p ${HOME}/.ssh
chmod go-rwx ${HOME}/.ssh
ssh-keygen -b 4096
L’ordinateur vous demandera le nom du fichier où stocker la clé privée. Vous pourrez par
exemple le nommer ${HOME}/.ssh/lif12_VM_nickname où nickname est votre login.
Si vous voulez aller plus loin : Pour créer les clefs, sous linux, vous devez utiliser la commande
ssh-keygen : elle vous demandera un nom de fichier et une passphrase. Cela crée 2 fichiers, par défaut
${HOME}/.ssh/id-rsa et ${HOME}/.ssh/id-rsa.pub qui contiennent respectivement la clef privée et
la clef publique. Il suffit d’écrire la clé publique sur les machines distantes, dans le fichier
${HOME}/.ssh/authorized_keys.
Et sous windows : Vous pouvez télécharger et utiliser PuTTY, qui permet de se connecter à distance.
Le programme PuTTYgen permet de gérer et utiliser les clés. Par contre, sans utiliser Cygwin-X, il vous
sera impossible d’afficher des interfaces graphiques à distance depuis linux.
II
Introduction
Une machine virtuelle est... https://fr.wikipedia.org/wiki/Machine_virtuelle
Attention : la page wikipedia est perfectible car elle ne semble guère faire de différence entre émulation
et simulation. Mais ça reste une bonne approche pour se faire une idée.
III
III.1
Création et utilisation d’une machine virtuelle avec OpenStack
La VM
Nous allons utiliser l’infrastructure de cloud computing du département financée par la région
Rhône-Alpes. C’est un ensemble de machines pilotées par le logiciel OpenStack avec lequel vous allez
avoir un premier contact. Vous allez l’utiliser afin de créer une machine virtuelle, que vous pourrez
conserver, effacer (mais perdre ainsi toutes les configurations effectuées), re-générer... La VM créée va
ici nous servir de base d’entraı̂nement à des manipulations que vous pourrez ensuite effectuer sur vos
Départment d’Informatique
machines personnelles, ou en vue d’utiliser des outils qui ne sont pas disponibles sur les systèmes des
salles de TPs banalisées, mais dont vous auriez besoin.
Pour cela, vous devez vous connecter à l’interface d’administration :
http://cloud-info.univ-lyon1.fr/horizon et utiliser l’identifiant LIF12.chaprot et le mot de
passe lif12. Cet utilisateur fait partie d’un projet dédié dans OpenStack. Il a des droits limités. Vous
devez bien faire attention à ne pas créer trop de machines, ni utiliser trop de ressources.
Remarque : L’URL précédente, tout comme les VMs que vous pourrez générer, n’est pas accessible
depuis l’extérieur de l’Université, sauf en passant par une machine relais, c’est-à-dire un proxy. Nous
verrons un peu plus tard dans l’année comment procéder.
Vous devez créer une instance de votre machine grâce à
Projet->Calcul->Instances->Lancer une instance. Faites attention à :
— donner un nom reconnaissable pour votre instance ;
— utiliser le type (ensemble de ressources) m1.xsmall ;
— utiliser Démarrage depuis une image ;
— utiliser l’instantané Ubuntu 16.04 LTS Xenial ;
— ne créer qu’une seule instance ;
— ajouter une clef ssh à l’instance avec un nom reconnaissable ;
— choisir comme groupe de sécurité default ;
— Lancer la création.
La machine virtuelle va être créée (cela demande un peu de temps) et apparaı̂tre dans la liste des
Instances. Elle obtiendra une adresse IP que vous noterez. Nous allons l’utiliser plus loin, sous le nom
VM_IP. Attendez que l’État de l’alimentation soit En fonctionnement avant de pouvoir vous y
connecter.
III.2
S’y connecter
Q.III.1) - Connectez-vous en utilisant la commande ssh -i ~/.ssh/lif12_VM ubuntu@VM_IP
L’ordinateur vous demandera de vérifier l’empreinte de la clé, nous supposerons que tout est
bon. Comment comprenez-vous cette commande ?
Notez que ssh lif12 fonctionnera si le fichier ${HOME}/.ssh/config a été mis en place, comme
donné dans le fichier TP1.txt de la page web.
Q.III.2) - La première chose à faire est de changer le mot de passe, avec la commande passwd. Attention
à ne pas l’oublier. Sauf autre configuration particulière, vous seul aurez accès à votre VM.
Q.III.3) - Pouvez-vous passer root ? Comment ?
Q.III.4) - Créez un autre utilisateur. Comment vérifier que le nouvel utilisateur a été créé. Quel est son
id ? Comment connaı̂tre les groupes auxquels il appartient ?
Notez que vous pouvez ainsi créer des utilisateurs/groupes, pour laisser un accès à votre binôme
par exemple, et/ou partager des fichiers avec d’autres personnes, pour peu que les droits soient
correctement mis en place.
IV
Administration Système
Où il est intéressant de connaı̂tre les commandes top source alias less tail head ps grep
whoami chown chgrp passwd adduser addgroup sudo su lsmod modprobe apt-get aptitude
dpkg man et certaines de leurs options.
IV.1
Les utilisateurs et root
Q.IV.1) - Quel utilisateur êtes-vous ?
Q.IV.2) - À quoi sert le fichier /etc/passwd ? Quels sont ses droits ?
Départment d’Informatique
Q.IV.3) - Dans une console sur la VM, sous l’identité ubuntu, créez un fichier avec touch poi et exécutez
ls -l
Q.IV.4) - Dans une console sur la VM, sous l’identité root, faites un chmod go-rwx /etc/passwd.
Exécutez ls -l et expliquez. Remettez les bons droits au fichier /etc/passwd.
Alors... Où sont stockés les mots de passe ?
IV.2
Les “fichiers” du noyau Linux
Q.IV.5) - Naviguez dans /boot, /usr/src/, /lib/modules/
Peut-on lire la même chose en local ?
Quelles sont les capacités du noyau chargé ?
Q.IV.6) - Faire dmesg, distant et local.
Repérer le type de processeur, et de disque dur.
Faites cat /proc/cpuinfo et cat /proc/meminfo
Quelles informations obtenez-vous ?
Peut-on les obtenir en local et/ou distant ?
Du coup, quel utilisateur peut exécuter la commande ?
Comment était-il possible de le savoir avant ?
Q.IV.7) - Listez /proc/ et commentez ce que vous y trouver.
Des remarques sur /proc/sys/net/ipv4/ip_forward ?
Q.IV.8) - Quels systèmes de fichiers le noyau installé est-il capable de lire ?
Q.IV.9) - Qu’est-ce que /dev/ ?
Qu’est-ce que /dev/shm/ ? Qu’est-ce que /dev/disk/by-uuid/ ?
IV.3
Le côté pratique des variables d’environnement
Q.IV.10) - En local, exécutez env. Que constatez-vous ?
Ouvrez une 2e console et recommencez : les sorties sont-elles identiques ?
Exécutez
PS1=’’\[\033]0;\u@\h:\w\007\]\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]’’
(La ligne est donnée dans le fichier TP1.tex de la page web)
Que cela change t-il ? Les 2 consoles sont-elles impactées et pourquoi ?
Q.IV.11) - Connectez-vous sur votre VM.
Changez le prompt pour qu’il soit clair sur quelle machine vous êtes connectés. Rendez ce
changement persistant. Pour vous en assurer, déconnectez-vous de la VM et reconnectez-vous.
Q.IV.12) - Pour quel(s) utilisateur(s) avez-vous effectué les manipulations, et sur quelle(s) machine(s) ?
Q.IV.13) - Mettez en place également la complétion “intelligente”.
Q.IV.14) - Quelle est la différence entre ${HOME}/.bashrc et ${HOME}/.bash_profile ?
Attention : ces fichiers concernent quel shell ?
Comment savoir quel shell vous utilisez ? Avec quelle commande en changer ?
Q.IV.15) - Exécutez en local puis en distant ifconfig : Localement, est-il possible d’utiliser la complétion
automatique pour compléter la commande ? Pourquoi ?
Q.IV.16) - Quels sont tous les modules que peut charger le noyau ?
Q.IV.17) - Exécutez et commentez pour chaque ligne suivante :
alias
l
alias l=’’ls -l’’
l
alias
Q.IV.18) - Aller plus loin (voir TP1.txt de la page web) :
Départment d’Informatique
— lesspipe -h et https://www-zeuthen.desy.de/~friebel/unix/less/README
Exécutez less filename où filename est un fichier C, une archive ou /bin/bash.
Puis LESSCOLOR=yes LESS=’’−R −M −−shift 5’’ LESSOPEN=|lesspipe %s et recommencez.
Commentaire ?
— Exécutez man man puis
man() { env LESS_TERMCAP_mb=$’\E[01;31m’ LESS_TERMCAP_md=$’\E[01;38;5;74m’ \
LESS_TERMCAP_me=$’\E[0m’ LESS_TERMCAP_se=$’\E[0m’ LESS_TERMCAP_so=$’\E[38;5;246m’ \
LESS_TERMCAP_ue=$’\E[0m’ LESS_TERMCAP_us=$’\E[04;38;5;146m’ man "$@"; }
man man
IV.4
Q.IV.19)
Q.IV.20)
Q.IV.21)
Q.IV.22)
Q.IV.23)
-
IV.5
Q.IV.24)
Q.IV.25)
Q.IV.26)
Q.IV.27)
-
Q.IV.28) Q.IV.29) -
Q.IV.30) Q.IV.31) -
IV.6
Les démons !
Donnez des exemples de démons.
Quel type de fichiers sont-ils généralement ? Où sont-ils stockés ?
À quoi sert /etc/rc$i/ avec i prenant quelles valeurs ?
Qu’est-ce que systemd ?
Qu’est-ce que distcc ? Comment se lance t-il ?
Les packages et leur gestion
Quelle est la liste complètes des packages installés ?
Mise-à-jour de la base des packages.
Mise-à-jour du système
Comment savoir si apache est installé ?
Quel est le package concernant apache ?
Voir si apache est installé.
Quelle version serait installée si on décidait d’installer apache ?
Voir les fichiers de configuration de apache.
Quels sont les fichiers installés par apache ?
Les fichiers de log de apache
Apache est-il démarré ? (2 réponses)
Faire tail -F /var/log/apache2/access.log
En tant que quel utilisateur avez-vous réalisé cette commande ?
Démarrer un navigateur. Tapez dans la zone d’URL l’adresse IP de la VM et validez. Que se
passe t-il dans le navigateur, dans la console locale, dans la console distante ?
Où est stockée la page web que vous voyez ? Modifiez et rafraı̂chissez le navigateur.
Exécutez /etc/ init .d/apache2 stop. Rafraı̂chissez le navigateur. Expliquez !
Les logs !
Q.IV.32) - Naviguez dans /var/log. Quels sont tous ces fichiers, leurs droits et que contiennent-ils ?
V
Copie de fichiers à distance
Vous devez apprendre à utiliser ssh pour copier des fichiers à distance. Une excellent alternative
est rsync.
Q.V.1) - Faites le en utilisant la ligne de commande, via scp, pscp (PuTTY) ou rsync.
Certains logiciels reposant sur la bibliothèque FUSE (File System in User Space) permettent de
configurer un système de fichiers en réseau en tant que simple utilisateur. Vous pourrez en installer et
utiliser un pour associer à un répertoire du compte ubuntu de la VM un répertoire que vous utilisez
à l’université pour les TPs de LIF12.
Départment d’Informatique
Q.V.2) - Qu’est-ce qu’un disque réseau ? Donner un exemple de logiciel utilisant ce type de bibliothèque.
Q.V.3) - Installez le logiciel sshfs.
Q.V.4) - Regardez le manuel de la commande sshfs, utilisez-la pour que le répertoire
votrevm:/home/ubuntu/univ/ corresponde au répertoire ${HOME}/LIF12/VM sur votre poste
de travail de l’université.
Q.V.5) - Quel est l’intérêt de faire des systèmes de fichiers dans
l’espace utilisateur ?