Catégorie : shell

Windows : le shell Linux / Ubuntu enfin acceptable !

Merci à l’un de mes étudiants pour l’astuce :

Sous Windows 10 :

  • Activez le mode développeur ;
  • Cochez l’option « Linux » (il faut la chercher) ;
  • Tentez de lancer un shell via le menu « Démarrer » et tapez « Ubuntu ».

Vous aurez un Shell Linux, mais totalement pourri.

Faites néanmoins le classique « sudo apt-get update && sudo apt-get upgrade« .

Une fois cela terminé, allez récupérer ce qui va vous changer la vie : wsltty.
C’est un outil qui remplace le shell Ubuntu de Windows, mais qui est mieux sur tous les plans.
Et là vous aurez un shell qui ressemble au mintty de Cygwin (mon shell préféré).

Linux tar : faire une archive au format « AAAA-MM-JJ_HHMMSS.archive.tar.bz2 »

C’est tout simple sous Linux.
Il faut juste savoir, pour ceux qui commencent à faire quelques lignes de commande sous Linux, que le « backquotes », donc le ` demande à exécuter quelque chose et le remplacer par le résultat de l’exécution.

Exemple : si vous tapez `(date '+%Y.%m.%d-%Hh%Mm%Ss')` alors il exécutera l’ordre date, et le remplacera par la date en cours.

Exemple concret :

tar cjf "`(date '+%Y.%m.%d-%Hh%Mm%Ss')`.monarchive.tar.bz2" htdocs/*

Vous archivera tout le dossier htdocs dans l’archive :
2018.02.06-09h45m05s.monarchive.tar.bz2

En espérant que cela serve à quelqu’un !

Linux bc : float / flottants

Plein de personnes utilisent « calc » sous Windows. C’est bien.
Mais, comme la plupart des outils Windows : Linux c’est 20x moins ergonomique, mais 20x puissant.

Bah comme Linux en général, en fait…

Let me introduce bc.

C’est le « calc » de Windows, mais en plus laid et en 20 x plus puissant que la calculatrice Windows (déjà dit).

Le seul truc bizarre de bc c’est qu’il ne fait que des calculs en entier.
En bref : bc -l et hop tout est en flottant et fonctionne.
To make a long story short: bc -l and everything is ok.

cheatsheet » Linux / shell

Shell hints / aide

Commandes « one-line »

Chercher les fichiers qui prennent de la place ncdu
Archiver au format %Y.%m.%d-%Hh%Mm%Ss tar cjf "`(date '+%Y.%m.%d-%Hh%Mm%Ss')`.archive.tar.bz2" htdocs/*

https + nginx

Pour génerer le https, avec création de tous les certificats + mise en place des renouvellements, utiliser certbot: root@inyab:~/certbot# ./certbot-auto

Déclaration de script

Shebang le meilleur
Merci stackoverflow
#!/usr/bin/env bash
La calculette version Linux = 10 fois plus puissante, ne pas oublier l’option « l » pour calculer avec des virgules (man bc) bc -l

Outils de capture d’écran

  • scrot = capture en ligne de commande
  • shutter meilleur que celui par défaut
sudo apt-get install scrot
sudo apt-get install shutter
Note : pour mettre shutter par défaut, lire la documentation ici.

Linux : ajouter un client sftp et le chrooter

UPDATE : voici le lien (merci Hervé !) que j’aurais dû lire avant de faire tout cela…
A vous de lire mon blog + celui qui suit et de prendre le meilleur de chacun pour aller au plus vite !

Restrict SSH User Access to Certain Directory Using Chrooted Jail


Voici ce qu’il faut savoir (et qui m’a pris le plus de temps) : pour chrooter vraiment un utilisateur, il faut lui mettre les ordres de commande minimales requises dans un dossier bin et l’autre dossier qui gère les entrées-sorties dev. Et puis ajouter configurer le serveur ssh pour préciser « que du sftp, pas de ssh ». Ce n’est presque jamais documenté dans les sites d’exemples que vous trouverez sur le Web, merci unix.stackexchange !

Dans mon cas, voici tous les ordres que j’ai faits, et qui font qu’au final tout a fonctionné. Si ça se trouve il y en a un ou deux qui sont inutiles… mais je n’ai pas le temps de tout parfaitement nettoyer, je vous dis ce que j’ai compris des ordres, à ma manière :

  • Installer une ligne de commande shell qui peut fonctionner sans aucune dépendance :
    apt-get install bash-static
  • Ajouter l’utilisateur thomas en précisant le nom du shell à lancer :
    useradd -m -c /home/thomas -s /home/thomas/bin/sh thomas
  • Changer son mot de passe :
    passwd thomas
  • S’assurer que le home de Thomas appartient bien à root et est en 755 (sinon ssh refuse la connexion) :
    chmod 755 /home/thomas ; chown root: /home/thomas
  • Créer les dossiers bin et dev :
    mkdir /home/thomas/bin
    mkdir /home/thomas/dev
    cp /bin/bash-static /home/thomas/bin/sh
  • Ensuite il faut copier puis exécuter ce code, mais je ne sais pas trop à quoi ça sert :
    cp /dev/MAKEDEV /home/thomas/dev/
    cd /home/thomas/dev/ && ./MAKEDEV
  • Enfin le plus important : configurer le serveur sshd
    vim /etc/ssh/sshd_config

    Et y ajouter ces lignes, qui précisent où chrooter et (surtout) qu’on n’autorise que le sftp :

    Match user thomas
        ChrootDirectory /home/%u
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

C’est le tout dernier ordre, toute dernière ligne qui m’a fait perdre énormément de temps !

cygwin : problème des espaces avec updatedb : la solution via mount

J’ai eu l’information ici : http://cygwin.com/cygwin-ug-net/using-utils.html#mount

Faire un mount permanent :
Editer le fichier /etc/fstab

Y ajouter le lien vers le répertoire qui a des espaces :
"C:/mon projet/mon sous projet" /monprojetmonsousprojet ntfs binary,posix=0,user,noumount,auto

Lancer un nouveau shell pour que le "mount" soit fait automatiquement