Pense Bête du Geek

Terminal shell (ssh) via un navigateur web (http)

BUT : Accéder à une console/un terminal shell/bash depuis un navigateur web

Installation :
via apt avec ‘sudo apt install openssl shellinabox

bzg@uc:~$ sudo apt install openssl shellinabox

La configuration se fait en éditant le fichier : /etc/default/shellinabox

bzg@uc:~$ sudo nano /etc/default/shellinabox
# Should shellinaboxd start automatically 
SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=4200

# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox

# Any optional arguments (e.g. extra service definitions). Make sure
# that that argument is quoted.
#
# Beeps are disabled because of reports of the VLC plugin crashing
# Firefox on Linux/x86_64.
SHELLINABOX_ARGS="--no-beep"

SHELLINABOX_DAEMON_START=1 : permet de démarrer en automatique le service ‘shellinabox’ (sinon le mettre à 0)
SHELLINABOX_PORT=4200 : 4200 est le port par defaut sur lequel il faut se connecter pour accéder au terminal shell/ssh. Pour des raison évidente de sécurité il vaut mieux le changer
SHELLINABOX_ARGS= »–no-beep » : C’est là que nous mettrons les arguments de ‘shellinabox’, par défaut les beeps du terminal sont inhibés pour éviter des bugs sur ‘firefox’ avec le plugin ‘VLC’

Changement du port d’écoute :
Changer ‘SHELLINABOX_PORT=4200’ par ‘SHELLINABOX_PORT=4242‘ par exemple pour que le port d’écoute soit 4242
Dans ce cas de figure ne pas oublier de paramétrer le firewall et d’ouvrir le port 4242

Remplacer le port d’écoute par une sous adresse du style https://serveur/shellinabox sur un serveur apache :
Dans ce cas inutile de changer le port d’écoute ni d’ouvrir le port sur le firewall
Changer ‘SHELLINABOX_ARGS= »–no-beep »‘ par ‘SHELLINABOX_ARGS= »–localhost-only –disable-ssl »
L’option –localhost-only n’acceptera que les connections depuis le localhost/127.0.0.1
L’option –disable-ssl supprimera le protocole ssl puisque nous alors faire une redirection web interne
Le fichier ‘/etc/default/shellinabox’ devient :

# Should shellinaboxd start automatically 
SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=4200

# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox

# Any optional arguments (e.g. extra service definitions). Make sure
# that that argument is quoted.
#
# Beeps are disabled because of reports of the VLC plugin crashing
# Firefox on Linux/x86_64.
# SHELLINABOX_ARGS="--no-beep"
SHELLINABOX_ARGS="--localhost-only --disable-ssl"

Pour mettre en place la redirection du port vers une adresse il faut installer le serveur web ‘apache’ puis les modules ‘proxy’ par les commande ‘sudo apt install apache2‘ puis ‘sudo a2enmod proxy proxy_http

bzg@uc:~$ sudo apt install apache2 
bzg@uc:~$ sudo a2enmod proxy proxy_http

puis dans le fichier de configuration du site principal ‘/etc/apache2/sites-available/000-default.conf’ il faut ajouter les deux lignes suivantes :

ProxyPass "/shellinabox" "http://127.0.0.1:4200" 
ProxyPassReverse "/shellinabox" "http://127.0.0.1:4200"

Il faut relancer ‘apache’ par la commande ‘sudo systemctl restart apache2‘ et ‘shellinabox’ par la commande ‘sudo systemctl restart shellinabox

bzg@uc:~$ sudo systemctl restart apache2 
bzg@uc:~$ sudo systemctl restart shellinabox

Pour accéder au terminal avec votre explorateur web (Firefox, google chrome, etc) :
Accéder à l’adresse du serveur https://xxx.xxx.xxx.xxx:4200 si vous avez laissé les paramètres par défaut
https://xxx.xxx.xxx.xxx:4242 si vous avez modifié le port d’écoute 4200 par 4242 (sinon mettre le port que vous avez configuré)
http://serveur_web/shellinabox si vous avez configuré la redirection du port vers une adresse

En résumé : Il est possible d’accéder à un terminal ssh via un explorateur web

Installation Client MeshCentral (Windows 10)

BUT : Installer le client de prise de contrôle à distance Mesh Central (https://meshcentral.com) sous Windows 10

Votre interlocuteur (Mesh Central) vous a fourni un lien pour l’installation. Il suffit de télécharger le programme est de l’exécuter, mais sous Windows il y a un certain nombre d’alertes qui ralentissent cette installation

Cliquez sur le lien fourni :

puis cliquer sur ‘Télécharger le logiciel ici’ :

Attention il faut passer le message d’alerte en cliquant sur ‘Afficher plus’ :

Puis sur ‘Conserver’ :

Encore un message d’alerte où il faut valider par ‘Afficher plus’ :

Puis en cliquant sur ‘Conserver quand même’ :

Vous pouvez enfin installer le logiciel en cliquant sur ‘Ouvrir un fichier’ :

Mais il y a encore une alerte qu’il faut passer en cliquant sur ‘Informations complémentaires’ :

Puis sur ‘Exécuter quand même’ :

Enfin finir par en cliquant sur ‘Installer’ :

En résumé : Mesh Central serveur est déjà installé sur un serveur WEB, l’administrateur vous a fourni un lien mais vous avez des ‘erreurs’ de téléchargement puis d’installation, cet article vous détail comment répondre aux divers message d’alertes

shell avec droit restreint

BUT : Créer un utilisateur qui accède à un shell avec des droits restreints, par exemple pour un développeur qui doit gérer un site via le ssh mais qui ne doit pas avoir tous les droits d’accès au serveur

Même si la gestion des utilisateurs linux permet de gérer les droits au niveau utilisateur et/ou groupe, l’accès à un terminal shell en ssh permet trop d’autorisation sans possibilité d’en faire une gestion fine.

Le shell restreint n’autorise pas :
– le changement de répertoire (commande ‘cd’ inactive)
– la modification des variables systèmes : $PATH, $SHELL, $BASH_ENV, $ENV
– les redirections de sortie
– les commandes avec des chemins (pas de ‘/’ utilisable)

Le lancement du shell restreint se fait par la commande ‘rbash’, certain linux n’ont pas de lien déjà créé entre rbash et bash et il faut explicitement le créer via ‘sudo ln -s /bin/bash /bin/rbash’ mais c’est inutile sous ubuntu.

bzg@uc:~$ ls -l /bin/rbash lrwxrwxrwx 1 root root 4 mars 7 13:30 /bin/rbash -> bash*

Un simple ‘ll’ permet de voir que la commande rbash est un lien vers bash

Il existe deux façon simple de lancer un shell restreint : ‘bash -r’ ou ‘rbash’

bzg@uc:~$ bash -r 
bzg@uc:~$ cd Images 
bash: cd: restreint 
bzg@uc:~$ exit exit 
bzg@uc:~$ rbash 
bzg@uc:~$ cd Images 
rbash: cd: restreint 
bzg@uc:~$ exit exit 
bzg@uc:~$ cd Images 
bzg@uc:~/Images$

Dans les deux cas, nous ne pouvons pas changer de répertoire alors que dès la sortie du shell restreint tout fonctionne parfaitement.

Mais il est simple de contourner la restriction en lançant un programme qui permet de lancer une commande en interne, telque vim, telnet, ftp, etc

bzg@uc:~$ # Vérifions que nous sommes dans un bash standard 
bzg@uc:~$ cd Images 
bzg@uc:~/Images$ cd 
bzg@uc:~$ # Lançons rbash 
bzg@uc:~$ rbash 
bzg@uc:~$ # Vérifions que nous sommes dans rbash 
bzg@uc:~$ cd Images 
rbash: cd: restreint 
bzg@uc:~$ # Lançons ftp puis une commande ouvrant un nouveau bash 
bzg@uc:~$ ftp 
ftp> !/bin/bash 
bzg@uc:~$ # Vérifions que nous sommes dans un bash standard 
bzg@uc:~$ cd Images 
bzg@uc:~/Images$ # Sortons du bash standard 
bzg@uc:~/Images$ exit 
exit 
ftp> quit
bzg@uc:~$ # Vérifions que nous sommes de nouveau dans le rbash 
bzg@uc:~$ cd Images 
rbash: cd: restreint 
bzg@uc:~$ # Sortons 
bzg@uc:~$ exit 
bzg@uc:~$ # Vérifions que nous sommes sortie du rbash 
bzg@uc:~$ cd Images 
bzg@uc:~/Images$

Création d’un utilisateur restreint :

Cet utilisateur s’appelle ‘devel’ il ne pourra accéder qu’à son répertoire et n’exécuter que les commandes qui lui seront autorisées.

Création de son répertoire personnel (‘home’) et d’un répertoire de commandes via la commande ‘sudo mkdir -p /home/devel/bin’ (l’option -p créé les répertoires intermédiaires s’ils n’existent pas)

bzg@uc:~$ sudo mkdir -p /home/devel/bin

Création de l’utilisateur via ‘sudo useradd devel -s /bin/rbash’ et de son mot de passe via ‘sudo passwd devel’ (si l’utilisateur existe déjà changer son shell via ‘sudo usermod -s /bin/rbash devel’) :

bzg@uc:~$ sudo useradd devel -s /bin/rbash 
bzg@uc:~$ sudo passwd devel 
Nouveau mot de passe : 
Retapez le nouveau mot de passe : 
passwd : le mot de passe a été mis à jour avec succès

En se connectant en tant que ‘devel’, l’utilisateur se trouve dans un shell restreint mais il peut toujours s’en échapper via la comme ‘ftp’ :

devel@uc:~$ # La commande cd ne fonctionne pas puisque nous sommes restreint 
devel@uc:~$ cd 
rbash: cd: restreint 

devel@uc:~$ # Après le lancement de ftp puis d'un bash 
devel@uc:~$ ftp 
ftp> !/bin/bash
 devel@uc:~$ # Il n'y a pas d'erreur puisque nous sommes dans un bash standard 
 devel@uc:~$ cd 
 devel@uc:~$ # Sortie du bash standard 
 devel@uc:~$ exit 
 exit 
 ftp> quit

Limitation des commandes de l’utilisateur ‘devel’ :

Nous allons modifier son fichier ‘.bash_profile’ afin de limiter ses commandes au contenu de son répertoire ‘bin’ en y mettant ‘PATH=$HOME/bin’, nous allons changer le propriétaire des fichiers du répertoire utilisateur, puis assigner le fichier .bash_profile à l’utilisateur ‘root’ en autorisant ‘devel’ à l’exécuter

bzg@uc:/home/devel$ sudo nano /home/devel/.bash_profile
bzg@uc:/home/devel$ # Ajoutons PATH=$HOME/bin à la fin du fichier puis vérifions
bzg@uc:/home/devel$ cat .bash_profile 
PATH=$HOME/bin
bzg@uc:/home/devel$ sudo chown -R devel:devel /home/devel 
bzg@uc:/home/devel$ sudo chown root:root /home/devel/.bash_profile 
bzg@uc:/home/devel$ sudo chmod 755 /home/devel/.bash_profile 
bzg@uc:/home/devel$ ls -l /home/devel 
total 4 drwxr-xr-x 2 devel devel 4096 avril 6 18:52 bin 
bzg@uc:/home/devel$ ls -l /home/devel/.bash_profile 
-rwxr-xr-x 1 root root 15 avril 6 19:09 /home/devel/.bash_profile

Désormais l’utilisateur ‘devel’ ne peux accéder qu’aux commandes internes du bash (echo, etc), mais aucune commandes externes n’est utilisables, même pas ftp ou ls. Ce sera beaucoup plus difficile pour s’échapper de ce shell :

devel@uc:~$ echo $PATH 
/home/devel/bin 

devel@uc:~$ pwd 
/home/devel 

devel@uc:~$ ftp 
-rbash: /usr/lib/command-not-found : restriction : « / » ne peut pas être spécifié dans un nom de commande 
devel@uc:~$ ls 
-rbash: /usr/lib/command-not-found : restriction : « / » ne peut pas être spécifié dans un nom de commande

Donner accès aux commandes utiles à l’utilisateur ‘devel’ :

Nous devons simplement créer un lien entre la commande autorisée et le répertoire ‘bin’ de l’utilisateur comme dans l’exemple suivant :

bzg@uc:/home/devel$ sudo ln -s /bin/ls /home/devel/bin 
bzg@uc:/home/devel$ sudo ln -s /bin/cat /home/devel/bin

L’utilisateur ‘devel’ possède maintenant les commandes internes du bash et les commandes se trouvant dans ‘bin’ :

devel@uc:~$ pwd 
/home/devel 
devel@uc:~$ ls 
bin 

devel@uc:~$ cd bin 
-rbash: cd: restreint

Mais toujours pas la possibilité de passer outre les restrictions.

Enfin l’usage des restrictions peuvent être utilisées au sein d’un script bash, soit en démarrant le script par ‘#!/bin/rbash’ soit en armant le flag ‘r’ avec la commande ‘set -r’ :

Premier script :

#!/bin/rbash
echo « Mode restreint – commande autorisée »
pwd
echo « Mode restreint – commande non autorisée »
cd

bzg@uc:~$ nano script-1.sh 
bzg@uc:~$ chmod +x script-1.sh 
bzg@uc:~$ cat script-1.sh 
#!/bin/rbash 
echo "Mode restreint - commande autorisée" 
pwd 
echo "Mode restreint - commande non autorisée" 
cd 
bzg@uc:~$ ./script-1.sh 
Mode restreint - commande autorisée 
/home/bzg 
Mode restreint - commande non autorisée 
./script-1.sh: ligne 5 : cd: restreint

Deuxième script :

#!/bin/bash
echo « Mode standard »
pwd
cd
#!/bin/rbash
set -r
echo « Mode restreint »
pwd
cd

bzg@uc:~$ nano script-2.sh 
bzg@uc:~$ chmod +x script-2.sh 
bzg@uc:~$ cat script-2.sh 
#!/bin/bash 
echo "Mode standard" 
pwd 
cd 
#!/bin/rbash 
set -r echo "Mode restreint" 
pwd 
cd 
bzg@uc:~$ ./script-2.sh 
Mode standard 
/home/bzg 
Mode restreint 
/home/bzg 
./script-2.sh: ligne 9 : cd: restreint

En résumé : L’utilisation du bash en mode restreint permet de donner l’accès shell à un utilisateur en limitant ses autorisations.

Installer un certificat Let’s Encrypt

BUT : Installer un certificat SSL let’s Encrypt sur un site web (Apache) sous ubuntu

Vous devez avoir configuré votre site web pour qu’il soit accessible sans certificat SSL, c’est à dire en mode http://nom_de_domaine.ext

Nous allons installer le magasin snap :

sudo snap install core
sudo snap refresh core

Suppression d’une ancienne version si besoin, puis installation de la dernière version de certbot :

sudo apt remove certbot

Installation de certbot :

sudo snap install --classic certbot

Pour Installer un certificat de manière interactive sur tous les sites du serveur Apache :

sudo certbot --apache

Répondre aux différentes question :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): 

Donnez votre adresse e-mail, cette adresse sera utilisée pour les avertissements de sécurités ou les renouvellement de licence SSL

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017-w-v1.3-notice.pdf.
You must agree in order to register with the ACME server. Do you agree?

Vous devez accepter les conditions d’utilisation en répondant : Y

Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.

Attention, ici on vous demande si vous acceptez de recevoir des informations de « Electronic Frontier Foundation » et de partager cette adresse avec leur partenaires. Répondre Y pour l’inscription aux news letters. Répondre N pour ne pas recevoir de mail d’information et publicitaire.

Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: nom_de_domaine.ext
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

S’il y a plusieurs noms de domaine, sélectionnez ceux qui doivent obtenir un certificat SSL en donnant les numéros de domaine séparés par des espaces ou des virgule. Laisser vide si vous voulez sélectionner tous les domaines.

Requesting a certificate for nom_de_domaine.ext

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/nom_de_domaine.ext/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/nom_de_domaine.ext/privkey.pem
This certificate expires on 2022-12-08.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for nom_de_domaine.ext to /etc/apache2/sites-available/nom_de_domaine.ext-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://nom_de_domaine.ext

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ou pour installer un certificat sur un seul site :

sudo certbot --apache -n -d nom_de_domaine.ext

Et voilà votre site est désormais accessible via https://nom_de_domaine.ext

Installation Nextcloud sur un serveur Ubuntu 22.04 LTS

BUT : Installation d’un serveur Nextcloud sur un serveur Ubuntu 22.04 LTS

Installation des modules utiles à Nextcloud. Un serveur web (apache/PHP) et une base de donnée (MariaDB). MariaDB est compatible avec MySQL, avec de meilleurs performances et stabilité. Ouverture d’un terminal avec les touches CTRL-ALT-T :

sudo apt update && sudo apt upgrade
sudo apt install apache2 mariadb-server libapache2-mod-php \
   php-gd php-mysql php-curl php-mbstring php-intl php-gmp \
   php-bcmath php-xml php-imagick php-zip php-bz2 php-imap php-smbclient php-ldap

Lancement de MariaDB :

sudo mysql

MariaDB affichera son message de bienvenu, puis une ligne d’attente pour entrer les commandes SQL :

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.7-MariaDB-2ubuntu1.1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Création de l’utilisateur de la base de donnée : ‘nextcloud_user’.
Le nom de l’utilisateur peut être modifié.
Il faut changer ‘password’ par un autre mot de passe :

CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud_user'@'localhost';
FLUSH PRIVILEGES;

Sorti de la base de donnée par la commande :

exit;

Téléchargement du fichier d’archive, de la somme de contrôle et de la clé GPG de Nextcloud depuis le serveur officiel :

wget https://download.nextcloud.com/server/releases/latest.tar.bz2
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.md5
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.asc
wget https://nextcloud.com/nextcloud.asc
# vérification du bon téléchargement de nextcloud
md5sum latest.tar.bz2 ; cat latest.tar.bz2.md5
# contrôle de l'authenticité du fichier
gpg --import nextcloud.asc
gpg --verify latest.tar.bz2.asc latest.tar.bz2
# un message Good signature doit apparaitre

Extraction de l’archive puis copie du résultat dans le répertoire du serveur web.
Changement d’utilisateur par ‘www-data’ (utilisateur du serveur web) :

tar -xjvf
sudo cp -r nextcloud /var/www
sudo chown -R www-data:www-data /var/www/nextcloud

Configuration du serveur web. Il existe deux options soit l’utilisation d’une adresse de type « https://nom_de_domaine.ext/nextcloud » (ou http://192.168.0.200/nextcloud) ou une adresse de type « https://nextcloud.nom_de_domaine.ext ». Dans le premier cas il n’y a pas besoin de gérer la DNS du serveur contrairement au deuxième cas qui nécessite la configuration du domaine chez le provider du nom de domaine (OVH, GANDI, IONOS, etc).

Création du fichier de configuration du serveur web (apache) avec une adresse de type « https://nom_de_domaine.ext/nextcloud » (ou http://192.168.0.200/nextcloud) :

sudo nano /etc/apache2/sites-available/nextcloud.conf

Copie du code :

Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>
</Directory>

Sorti de l’éditeur en utilisant CTRL-O (pour enregistrer le fichier avec validation du nom par la touche ‘Entrée’) puis CRTL-X (pour sortir de l’éditeur) :

Création du fichier de configuration du serveur web (apache) avec une adresse de type « https://nextcloud.nom_de_domaine.ext » (ou http://nextcloud.nom_de_domaine.ext) :


sudo nano /etc/apache2/sites-available/nextcloud.conf

Copie du code suivant (en modifiant nextcloud.nom_de_domaine.ext par le vrai nom de domaine) :

<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  nextcloud.nom_de_domaine.ext

  <Directory /var/www/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>
</VirtualHost>

Sorti de l’éditeur en utilisant CTRL-O (pour enregistrer le fichier avec validation du nom par la touche ‘Entrée’) puis CRTL-X (pour sortir de l’éditeur) :

Activation du site :

sudo a2ensite nextcloud.conf

Activation des modules utiles au bon fonctionnement du site :

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enmod setenvif

Redémarrage du serveur web :

sudo service apache2 restart

Si un certificat SSL est nécessaire voir l’article sur l’installation d’un certificat Let’s Encrypt :

https://grappe.info/installer-un-certificat-lets-encrypt

La configuration de nextcloud est prête à être lancée via l’adresse du site
http://nom_de_domaine.ext ou https://nextcloud.nom_de_domaine.ext
ou
http://nom_de_domaine.ext/nextcloud ou https://nom_de_domaine.ext/nextcloud
ou
http://192.168.0.1/nextcloud (avec 192.168.0.1 à remplacer par l’adresse IP locale du serveur)
Une page de configuration s’affiche :

Configuration de Nextcloud

Répondre aux diverses questions pour finir la configuration :
Nom d’utilisateur : admin
Mot de passe : password_admin (à replacer par un autre mot de passe)
Répertoire de données : /var/www/nextcloud/data (aucune raison de le changer)
Utilisateur de la base de données : nextcloud_user (voir la config en début de tuto)
Mot de passe de la base de données : password (celui de la config dans MariaDB)
Nom de la base de données : nextcloud
Cliquer sur le bouton « Installer »

Après quelques minutes l’installation de base est terminée

Nextcloud propose les applications recommandées, sachant que l’installation , le paramétrage ou la désinstallation peut se faire à tout moment depuis la console d’administration.

Bravo, le serveur Nextcloud est opérationnel

Conversion Machine Virtuelle en Réelle

BUT : Créer une machine virtuelle de test puis la transférer sur une vrai machine, au travers de la conversion du disque virtuel et disque physique

Les émulateurs d’UC ne manquent pas, mais les deux plus simples à installer sont VirtualBox et VMWare.
Partons du principe que vous avez créer une machine virtuelle sous VMWare et que vous avez un disque de type ‘vmdk’. Nous allons convertir ce format en une image disque de type ‘raw’. C’est un format qui n’utilise ni compression ni organisation propre à un logiciel, c’est le type de fichier image disque que vous obtiendriez en copiant un disque avec la commande ‘dd’.

Installons l’outil de conversion pour les disques de type VMWare (vmdk) :

sudo apt install -y qemu-kvm

Convertissons le disque provenant de la machine virtuelle en disque ‘raw’ :


qemu-img convert disk_vmware.vmdk -O raw disk_image.img

ATTENTION : Nous allons écrire sur le disque de destination, il ne faut pas se tromper de disque, l’écriture sur le mauvais disque est irréversible et généralement totalement destructeur. Trouvons le disque de destination avec ‘fdisk’

sudo fdisk -l
Disque /dev/nvme0n1 : 1,82 TiB, 2000398934016 octets, 3907029168 secteurs
Disk model: Sabrent Rocket Q                        
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : DA047CB5-EC5B-4F7A-8EA4-FC882F6873F7

Périphérique       Début        Fin   Secteurs Taille Type
/dev/nvme0n1p1      2048    2099198    2097151  1024M Système EFI
/dev/nvme0n1p2   2099200    2361343     262144   128M Réservé Microsoft
/dev/nvme0n1p3   2361344  134795263  132433920  63,1G Données de base Microsoft
/dev/nvme0n1p4 134795264  403230718  268435455   128G Système de fichiers Linux

Disque /dev/sdc : 476,94 GiB, 512110190592 octets, 1000215216 secteurs
Disk model: 2115            
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 33553920 octets

Vous avez obtenu la liste de vos disques branché sur votre ordinateur. Dans cet exemple le Disque ‘/dev/nvme0n1’ est le disque principal contenant notre système (ici Windows et Linux) et le disque ‘Disque /dev/sdc’ est le disque que nous avons branché pour la copie de l’image disque.

sudo dd if=disk_image.img of=/dev/sdc bs=8G

Si vous désirez voir la progression du transfert vous pouvez utiliser la commande ‘pv’ comme suit

# si la commande 'pv' n'est pas encore installée l'installer via 'apt'
sudo apt install -y pv
# puis le transfert de l'image vers le disque dur
# ne pas oublier de changer /dev/sdX en fonction de votre config
dd if=disk_image.img bs=8G | pv -L 8G | sudo dd of=/dev/sdc bs=8G

Voici un disque dur à l’identique du disque virtuel de votre machine VMWare. Il faudra peut être activer la partition de boot suivant votre besoin.

Oui mais moi j’utilise VirtualBox !!!

ah oui, bien sûr, j’en ai parlé en début d’article donc nous allons faire la même manipulation pour les utilisateur de VirtualBox qui ont un disque de type ‘vdi’. Je pars du principe que vous avez déjà installé VirtualBox. Nous allons faire la conversion de la même façon que nous l’avions fait pour VMWare :

# Installation de VirtualBox si ce n'est pas déjà fait
sudo apt install -y virtualbox
# conversion du disque de type 'vdi' en format 'raw'
VBoxManage clonehd virtualbox_disk.vdi disk_image.img.img --format RAW

Vous voilà en possession d’un disque physique copie conforme de votre disque virtuel.

NordVPN sous ubuntu 22.04

BUT : utiliser le VPN NordVPN en ligne de commande sous Ubuntu 22.04

Il semblerait qu’il y ai un bug qui empêche le client NordVPN de fonctionner normalement en ligne de commande sous Ubuntu 22.04

Installation de NordVPN

Téléchargement du fichier nordvpn sur leur site à l’adresse suivante dans un terminal :
https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb

wget https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb

puis installation du fichier :

sudo apt install ./nordvpn-release_1.0.0_all.deb
sudo apt update
sudo apt install nordvpn

Utilisation de NordVPN

Pour commencer il faut se loguer sur son compte NordVPN avec la commande ‘nordvpn login’

nordvpn login

un lien s’affiche il suffit de l’ouvrir dans un navigateur Internet puis de se logger sur son compte
enfin on retourne dans le terminal pour se connecter à un serveur VPN avec la commande ‘nordvpn connect’ ou ‘nordvpn c’

nordvpn c

S’il y a un message d’erreur de login

si un message d’erreur indiquant que vous n’êtes pas loguer apparaît alors utilisez la méthode suivante avant la commande de login : tapez ‘su – $USER’ puis tapez votre mot de passe utilisateur

su - $USER
#   <tapez ensuite votre mot de passe>
nordvpn login
#   clic droit sur le lien affiché puis 'ouvrir le lien'

Maintenant vous êtes loguer

Adresses funs pour se détendre

BUT : Se détendre et s’amuser un peu

Se faire passer pour un hacker :

Lancez votre navigateur préféré puis aller sur l’adresse suivante :
https://www.geektyper.com/fsociety

Puis appuyez sur la touche F11 pour passez en plein écran et tapez n’importe quoi dans le terminal ouvert, vous passerez pour le spécialiste que nous voyons tous dans les films de hackers.

Se faire passer pour un hacker sur un terminal :

Ouvrir un terminal puis installez ‘hollywood’ :

sudo apt install hollywood

Utilisation : lancez la commande ‘hollywood’

hollywood

Pour sortir il suffit de taper les touches CTRL+C

Regarder STAR WAR sur un écran texte :

Trop classe, totalement inutile, donc indispensable. Il faut installer la commande telnet si elle n’est pas déjà installée, puis on lance l’adresse ‘towel.blinkenlights.nl’ dans un terminal telnet

# installation du terminal telnet s'il n'est pas déjà installé
sudo apt install telnet
# lancement du film
telnet towel.blinkenlights.nl

Obtenir la météo en ligne de commande :

On utilise la commande ‘curl’ avec l’adresse ‘wttr.in/Nom_De_La_Ville’ par exemple pour strabourg :

# installation de curl si la commande n'est pas déjà installée
sudo apt install curl
# affichage de la météo pour strasbourg
curl wttr.in/strasbourg

Pour obtenir de l’aide :

curl -H "Accept-Language: fr" wttr.in/:help
bzg@uc:~$ curl -H "Accept-Language: fr" wttr.in/:help
Usage:

    $ curl wttr.in          # emplacement actuel
    $ curl wttr.in/cdg      # météo à l'aéroport de Paris - Charles de Gaulle

Types d'emplacements acceptés:

    /paris                  # nom de la ville
    /~Eiffel+tower          # emplacement quelconque
    /Москва                 # nom Unicode ou emplacement quelconque dans n'importe quelle langue
    /muc                    # code aéroport (3 lettres)
    /@stackoverflow.com     # nom de domaine
    /94107                  # code postal (seulement aux États-Unis)
    /-78.46,106.79          # coordonnées GPS

Emplacements particuliers:

    /moon                   # phases de la lune (ajouter ,+US ou ,+France pour accéder aux villes du même nom)
    /moon@2016-10-25        # phases de la lune pour cette date (@2016-10-25)

Unités:

    ?m                      # système métrique (par défaut partout sauf pour les États-Unis d'Amérique)
    ?u                      # USCS (par défaut pour les États-Unis d'Amérique)
    ?M                      # affiche la vitesse du vent en m/s

Option d'affichage:

    ?0                      # aujourd'hui seulement
    ?1                      # aujourd'hui + demain
    ?2                      # aujourd'hui + 2 jours
    ?n                      # version courte (seulement le jour et la nuit)
    ?q                      # version silencieuse (pas d'en-tête "Prévisions météo pour")
    ?Q                      # version super-silencieuse (pas d'en-tête "Prévisions météo pour", pas de nom de la ville)
    ?T                      # séquences d'échappement pour terminaux désactivées (pas de couleurs)

Options PNG:

    /paris.png              # génère un fichier PNG
    ?p                      # ajoute un cadre autour de la sortie
    ?t                      # transparency 150 (transparence 150)
    transparency=...        # transparence de 0 à 255 (255 = pas de transparence)

Combiner les options:

    /Paris?0pq
    /Paris?0pq&lang=fr
    /Paris_0pq.png          # dans le mode PNG les options sont spécifiées après _
    /Rome_0pq_lang=it.png   # les options longues sont séparées par des underscores _

Localisation:

    $ curl fr.wttr.in/Paris
    $ curl wttr.in/paris?lang=fr
    $ curl -H "Accept-Language: fr" wttr.in/paris

Langues supportées:

    am ar af be bn ca da de el et fr fa hi hu ia id it lt mg nb nl oc pl pt-br ro ru ta tr th uk vi zh-cn zh-tw (Support complet)
    az bg bs cy cs eo es eu fi ga hi hr hy is ja jv ka kk ko ky lv mk ml mr nl fy nn pt pt-br sk sl sr sr-lat sv sw te uz zh zu he (Support incomplet)

URLs particulières:

    /:help                  # affiche cette page
    /:bash.function         # fonction bash recommandée wttr()
    /:translation           # affiche les informations sur la traduction de wttr.in

Et ça fonctionne même avec votre navigateur Internet préféré :
https://wttr.in/strasbourg

Bon amusement

Décompression des fichiers archives en ligne de commande

BUT : Décompression de fichiers archives en ligne de commande en fonction de leurs extensions

fichier.zip

unzip fichier.zip

fichier.tar

tar xvf fichier.tar

fichier.tar.gz

tar xvzf fichier.tar.gz

fichier.tgz

tar xvzf fichier.tgz

fichier.tar.bz2

tar xvjf fichier.tar.bz2

fichier.tar.xz

tar xvJf fichier.tar.xz

fichier.tbz2

tar xvjf fichier.tbz2

fichier.bz2

bunzip2 fichier.bz2

fichier.rar

unrar x fichier.rar

fichier.gz

gunzip fichier.gz

fichier.7z

7z x fichier.7z
      *.tgz)       tar xvzf "$1"    ;;

Sauvegardes incrémentales en FTP

BUT : Créer une sauvegarde incrémental (style rsync) en FTP, seuls les fichiers modifiés ou ajoutés seront transférés

Remplacer :
FTP_SERVER par l’url ou l’IP du serveur
FTP_LOGIN par le login (user)
FTP_PASSWD par le mot de passe
DL_DIR par le répertoire local où vous voulez télécharger les fichiers
EXT_DIR par le répertoire distant à télécharger

lftp -f "
open FTP_SERVER
user FTP_LOGIN FTP_PASSWD
lcd DL_DIR
mirror --delete --verbose EXT_DIR DL_DIR
bye
"