A la découverte du Z Shell ….

La plupart des distributions utilise bash comme shell par défaut pour les utilisateurs.
Pourtant il existe d’autres shells et nous allons, dans cette article, découvrir le Z-shell aussi appelé zsh.

Installation :

La distribution utilisée ici est LinuxMint 18 mais, hormis l’installation de zsh, le reste devrait être transposable
à n’importe quelle distribution.

Tout d’abord, il faut installer le paquet zsh :

sudo apt-get install zsh zsh-common

Ensuite, pour changer le shell par défaut de l’utilisateur courant :

chsh -s /usr/bin/zsh

Puis créer un fichier de configuration initial en editant ~/.zshrc :

autoload -Uz compinit
compinit

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
setopt correctall
autoload -U promptinit
promptinit

bindkey -e
zle -N edit-command-line
bindkey '^xe' edit-command-line
bindkey '^x^e' edit-command-line

HISTSIZE=1000000
SAVEHIST=1000000
HISTFILE="$HOME/.history"
setopt HIST_VERIFY
setopt SHARE_HISTORY
setopt APPEND_HISTORY 
setopt INC_APPEND_HISTORY SHARE_HISTORY  
setopt HIST_IGNORE_ALL_DUPS  
setopt HIST_REDUCE_BLANKS

Quelques fonctionnalités :

Parmi les fonctionnalités qu’offre zsh, vous pouvez éditer facilement le contenu de variables d’environnement avec la commande vared. Par exemple :

vared PATH

La complétion est également très poussée. Par exemple, si vous tapez :

cd /v/log/a

et que vous pressez ensuite la touche tab, zsh var compléter la commande en :

cd /var/log/apt

La complétion fonctionne également à partir de sous-chaines. Par exemple, si vous tapez :

cd urea

suivi d’un appui sur TAB, zsh va compléter en :

cd Bureau

La complétion fonctionne également pour certaines commandes. Par exemple si vous tapez :

kill 

zsh va vous lister les noms des processus et les PID associés.

A noter que si vous exécutez plusieurs sessions zsh simultanément, l’historique des commandes est partagé entre les sessions. Plus besoin donc de savoir dans quel terminal vous avez tapé telle ou telle commande.

zsh permet également de faire du récursif dans les répertoires à l’aide de **. Par exemple la commande :

ls **/toto

va afficher tous les fichiers toto présents dans le répertoire courant et ses sous-répertoires.

Une autre fonctionnalité intéressante est de pouvoir éditer la ligne de commande en cours dans l’éditeur défini par la variable $EDITOR. Pour ceci, il suffit simplement de presser Ctrl+X suivi de Ctrl+E.

Z-Shell permet de créer des aliases suffixes. Par exemple, en insérant dans le .zshrc la ligne :

alias -s log="less -MN"

Ainsi, sous le shell, lorsque vous taperez le nom d’un fichier .log, zsh l’affichera à l’aide de la commande less -MN

 

Encore plus de personnalisation !

 
Nous allons maintenant installer Oh My Zsh qui est un framework permettant d’aller encore plus loin dans la personnalisation de zsh

L’installation se fait de la manière suivante :

sudo apt-get install curl git
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

L’installation de Oh My Zsh remplace votre .zshrc qui sera renommé en .zshrc.pre-oh-my-zsh

Nous allons maintenant installer le thème powerlevel9k.

Nous allons installer la police inconsolota-awesome. Tout d’abord il nous faut la télécharger :

wget https://github.com/gabrielelana/awesome-terminal-fonts/raw/patching-strategy/patched/Inconsolata%2BAwesome.ttf

Pour l’installer, il suffit d’ouvrir un explorateur de fichier et de cliquer sur le fichier .ttf puis de cliquer sur le bouton installer.

Nous pouvons ensuite installer le thème :

git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

Puis de modifier notre .zshrc :

POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon dir vcs)
POWERLEVEL9K_MODE='awesome-patched'
ZSH_THEME="powerlevel9k/powerlevel9k"

Il faut aussi penser à modifier la police utilisée dans le terminal par l’inconsolata awesome medium installée précédemment :

Pour appliquer les modifications, il suffit soit de fermer et réouvrir le terminal, soit de faire un source .zshrc

Nous avons alors le thème powerlevel9k appliqué à zsh ainsi que les extensions fournies par Oh My Zsh :

Dans cet exemple un double appui sur la touche Tab lors d’une complétion de commande permet de naviguer et de sélectionner de manière visuelle le répertoire mdm.
Autre exemple, si vous tapez cd suivi d’appuis sur la fleche du haut, vous naviguerez dans l’historique de toutes les commandes cd qui auront été tapées auparavant.

Autoconfig pour Thunderbird

Depuis la version 3.0 de Mozilla Thunderbird, à la création d’un compte de messagerie, ce dernier cherche par plusieurs moyen à configurer automatiquement les paramètres des serveurs de messagerie. Les paramètres peuvent ainsi être renseignés dans un fichier au format XML. La liste des paramètres pouvant être utilisée dans ce fichier XML se trouve à l’adresse https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat

 

Supposons que l’on rentre l’adresse toto@mondomaine.com.
La recherche de la configuration se déroule suivant plusieurs étapes. En cas d’échec à une étape, on passer à la suivante. En cas de succès à une étape, les étapes suivantes ne seront pas effectuées :

  • Recherche sur le disque dur d’un fichier domaine.com.xml situé dans le répertoire isp présent dans le répertoire d’installation de thunderbird
  • Téléchargement du fichier http://autoconfig.domaine.com/mail/config-v1.1.xml?emailaddress=toto@domaine.com
  • Téléchargement du fichier http://domaine.com/.well-known/autoconfig/mail/config-v1.1.xml
  • Recherche DNS d’un enregistrement TXT contenant une URL indiquant à quelle adresse télécharger le fichier XML
  • Téléchargement sur la base mozilla : https://autoconfig-live.mozillamessaging.com/autoconfig/domaine.com
  • Recherche heuristique ( imap.domaine.com, pop.domaine.com, …)
  • Saisie manuelle

Nous allons donc implémenter la solution utilisant le téléchargement du fichier http://autoconfig.domaine.com/mail/config-v1.1.xml?emailaddress=toto@domaine.com.

Cette solution présente l’avantage de pouvoir récupérer côté serveur l’adresse email de la personne cherchant à configurer son compte. Ainsi il sera possible de générer un fichier xml personnalisé qui contiendra son login de messagerie. En effet, il est possible que, pour l’adresse toto@domaine.com, le login à utiliser ne soit pas toto mais un login tout autre.
La solution que nous allons implémenter permet de rechercher le login associé à l’adresse toto@domaine.com soit dans un annuaire ldap soit dans une base mysql (ou d’utiliser toto tout simplement).

Les autres solutions ne fournissent qu’une configuration « générale » dans lequel l’identifiant de messagerie ne peut être que soit l’adresse mail complète, soit la partie située avant l’arobase dans l’adresse.

Tout d’abord il faut créer un enregistrement DNS autoconfig.domaine.com. pointant vers un serveur hébergeant une solution apache+php.

Considérons que le serveur apache+php soit installé sous Centos 5. Il nous faut créer un vhost autoconfig.domaine.com. Par exemple :

<VirtualHost *:80>
        ServerName      autoconfig.domaine.com
        ServerAdmin     root@domaine.com
        DocumentRoot    /var/www/html/autoconfig/
</VirtualHost>

Dans le fichier  /etc/httpd/conf.d/php.conf modifions la ligne :

AddHandler php5-script .php .xml

Sous /var/www/html/autoconfig, mettons en place un répertoire nommé mail et téléchargeons à l’intérieur de ce répertoire le script de configuration :

mkdir -p /var/www/html/autoconfig/mail/
cd /var/www/html/autoconfig/mail/
wget http://be-root.com/downloads/autoconfig/config-v1.1.xml

Modifiez les variables présentes au début de ce script en fonction de votre configuration et redémarrez votre serveur apache.

En allant à l’url  http://autoconfig.domaine.com/mail/config-v1.1.xml avec un navigateur, vous devriez voir apparaître le code xml contenant les balises <username>%EMAILLOCALPART%</username>.

Si vous avez défini un driver (ldap ou mysql) pour faire une correspondance entre l’adresse email d’un utilisateur et son login, alors, en allant à l’url http://autoconfig.domaine.com/mail/config-v1.1.xml?emailaddress=utilisateur.existant@domaine.com
vous devriez voir une balise <username>login_utilisateur</username>.

Si cette étape fonctionne correctement, alors, lorsque vous configurerez votre compte sous Thunderbird, la configuration des serveurs pop/imap/smtp se fera alors correctement.

 

LightDM : désactiver la possibilité de se connecter à un bureau à distance

Sous ubuntu 12.10, par défaut, il est possible d’accéder à une autre machine depuis l’écran de connexion LightDM.
Actuellement, les protocoles supportés par cette fonctionnalité sont Citrix ICA, Microsoft RDP et Vmware View.

Cependant, il peut être utile de désactiver cette fonctionnalité. Pour ce faire, il faut éditer le fichier /etc/lightdm/lightdm.conf : et d’ajouter dans la section [SeatDefaults] la ligne :

greeter-show-remote-login=false