Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 9 juin 2017

Complétion bash et utilisateur root

La complétion bash nous facilite bien la vie au quotidien puisqu'elle nous aide dans la saisie des options et paramètres des lignes de commandes sans avoir besoin de consulter les man pages.

Mais est t'elle toujours activée ?

J'ai fait le test avec Debian Stretch mais les résultats sont les mêmes avec Debian Jessie.

Lorsque j'utilise un utilisateur non root, la complétion bash est activée que j'utilise un Shell de login (avec Ctrl Alt F1) ou un Shell normal.

Si je tappe apt-get suivi de la touche TAB:

debian@stretch:~$ apt-get 
autoclean        changelog        dist-upgrade     install          source
autoremove       check            download         purge            update
build-dep        clean            dselect-upgrade  remove           upgrade

bash me propose bien la complétion qui convient à la commande apt-get.

Si maintenant je me connecte avec root, j'obtiens le résultat suivant:

debian@stretch:~$ su
Mot de passe : 
root@stretch:/home/debian# apt-get 
.bash_history         .dmrc                 .local/               Téléchargements/
.bash_logout          Documents/            Modèles/              Vidéos/
.bashrc               .gnupg/               Musique/              .Xauthority
Bureau/               .ICEauthority         .profile              .xsession-errors
.config/              Images/               Public/               .xsession-errors.old

Avec l'utilisateur "normal", ici debian, cela fonctionne car le fichier .bashrc par défaut de l'utilisateur se termine comme ceci:

debian@stretch:~$ tail .bashrc 
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

ce qui n'est pas le cas pour l'utilisateur root:

root@stretch:/home/debian# cat /root/.bashrc 
# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

Cette section "enable bash completion in interactive shells" qui n'existe pas dans le fichier /root/.bashrc est bien présente dans le fichier /etc/bash.bashrc mais elle y est commentée:

root@stretch:/home/debian# tail -n 25 /etc/bash.bashrc  | head -n 8
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
#fi

Il suffit donc de la ré-activer pour que la complétion fonctionne aussi pour root.

Une fois cela fait, la section dans le .bashrc utilisateur n'est plus nécessaire.

mardi 30 mai 2017

Devuan Jessie 1.0.0: Test d'installation ... concluant

La version stable de la distribution Linux Devuan est sortie vendredi dernier.

Pour rappel Devuan est un fork de Debian créé en 2014, principalement en raison du choix de Debian d'abandonner init au profit de systemd, ce que les initiateurs du projet Devuan ont refusé. En outre, contrairement à Debian qui utilise Gnome comme environnement de bureau par défaut, devuan installe Xfce par défaut.

J'avais essayé d'installer Devuan plusieurs fois avec VirtualBox, mais sans être convaincu du résultat, le programme d'installation échouant presque toujours à un moment ou à un autre.

Maintenant que Devuan Jessie 1.0.0 est là, il est temps de réitérer l'opération !

Comme je le fais toujours avec Debian, j'ai utilisé l'iso NETINST pour installer Devuan: c'est plus rapide que de télécharger un CD ou un DVD, et mon expérience est que j'ai eu moins que plantages à l'installation qu'avec le media CD ou DVD ...

Au début de l'installation, on choisit l'installation graphique: les années 80 sont finies !

Devuan - début d'installation

Dans la suite de l'installation, comme pour Debian, on choisit le nom de la machine, l'utilisateur par défaut, le mot de passe de root ...

Devuan - partitions séparées

On en arrive au partionnement des disques. J'ai choisi ici des partitions séparées, mais les possibilités de partitionnement sont les mêmes que celles de l'installeur Debian, puisque c'est l'installeur Debian qui tourne !!!

Après maintes et maintes questions pour lesquelles on gardera la valeur proposée, il est temps de choisir les logiciels à installer. Le choix par défaut est le suivant:

Devuan - logiciels par défaut

Si vous acceptez cet écran, Devuan installera Xfce comme environnement graphique puisque c'est l'environnement par défaut de la distribution.

Personnellement, je lui préfère Mate et j'ajoute le serveur SSH à la liste. J'installe donc les logiciels suivants:

Devuan - logiciels installés

Devuan - installée avec Mate

Je vous fait grâce de l'étape d'installation de Grub, la fin de l'installation se passe bien et Devuan démarre avec l'interface Mate.

Et si vous lancez la commande suivante dans un terminal:

ps aux | grep systemd

Vous constaterez que systemd ne tourne pas sur votre système !

En conclusion, Devuan Jessie 1.0.0 s'installe très bien avec VirtualBox, il faudra évidemment faire le test avec une machine réelle et selon le hardware utilisé des surprises (pas toujours agréables) peuvent survenir. Mais l'impression est bonne, et peut-être qu'à la prochaine ré-installation de ma machine Devuan aura sa chance.

mercredi 17 mai 2017

Simplifier vos connexions ssh avec ssh_config

Pour se connecter à une machine, virtuelle ou non, en ssh, on a besoin de spécifier au moins:

  • le nom d'hôte
  • le nom d'utilisateur

et parfois aussi

  • le port d'écoute du serveur ssh
  • certaines variables d'environnement
  • ...

Et c'est parfois long.

C'est oublier que tous ces paramètres passés sur la ligne de commande peuvent aussi être définis dans un fichier pour chaque machine à laquelle on se connecte.

Ce fichier est .ssh/config et a le format suivant:

host@machine:~$ cat .ssh/config 

Host vm-test
    Hostname 192.168.0.1
    Port 2222
    User debian
    SendEnv LANG LC_* HOST_IP

Le mot clé Host définit les paramètres de connexion à l'hôte en question et chaque paramètre suit indenté par quatre espaces.

De cette façon, se connecter à cet hôte se limite à:

ssh vm-test

C'est quand même plus rapide comme cela. Et il faut admettre que la façon de déclarer les Host est simplissime.

ssh comprend énormément de paramètres dans ce fichier config, pour tous les lister:

man ssh_config

jeudi 27 avril 2017

Machine Virtuelle, réseau NAT et redirection de ports

Quand on crée une machine virtuelle avec VirtualBox, le réseau créé par défaut est de type NAT.

Avec le réseau NAT, dans lequel aucune configuration n'est nécessaire, on peut naviguer sur Internet, lire les mails et de manière générale les applications de la machine virtuelle ont accès au réseau.

Dans ce mode réseau, le moteur réseau de VirtualBox agit comme un routeur qui dirige le traffic depuis et vers la machine virtuelle sans configuration de votre part. Chaque machine virtuelle a certes accès au réseau mais pas aux autres machines virtuelles ni à la machine hôte. La machine virtuelle en mode NAT est donc comme dans un réseau privé, connectée au réseau mais invisible de l'extérieur, y compris de sa machine hôte.

On peut s'en convaincre facilement avec la commande ping depuis la machine virtuelle vers la machine hôte et inversement: la VM voit la machine hôte mais l'inverse n'est pas vrai.

Mais alors, si la machine hôte ne voit pas la machine virtuelle, comment faire par exemple pour se connecter en ssh à la machine virtuelle depuis la machine hôte ? De la même façon qu'avec un routeur: en utilisant la redirection de ports.

On va donc configurer le moteur réseau de VirtualBox pour que les connexions sur le port 2222 de la machine hôte soient redirigées sur le port 22 de la machine virtuelle comme ceci:

Capture-Regles_de_redirection_de_ports-1.png

Il ne me reste plus qu'à me connecter à la machine virtuelle comme ceci:

ssh -p 2222 debian@192.168.0.1

Vous noterez que j'ai choisi un port d'écoute d'une valeur supérieure à 1024 (2222) puisque le moteur de VirtualBox se met à l'écoute sur la machine hôte sans avoir les droits administrateurs. Utiliser un port inférieur à 1024 aurait échoué.

Si maintenant je souhaite accéder à un serveur Web démarré sur la machine virtuelle, il faut effectuer une deuxième redirection de port, et ainsi de suite.

- page 1 de 12