Chiffrer avec Cryptsetup sous Linux

Récemment je me suis mise au chiffrement

Premier chiffrement à faire

Chiffrer une installation Linux avec un dual-boot Windows

Les étapes:

  • Partitionner l’espace disque avec un live Linux, à l’aide de Gparted.
  • Installer Windows sur une partie de l’espace, au début du disque de stockage (il peut être chiffré plus tard avec bitlocker, depuis le système en fonctionnement).
  • Suivre cette documentation:

https://gist.github.com/luispabon/db2c9e5f6cc73bb37812a19a40e137bc

On peut y remarquer cette partie:

sudo cryptsetup luksOpen /dev/nvme0n1p5 cryptdrive

Ici, le terme «cryptdrive» à la fin de la ligne de commande est personnalisable : il correspond au nom de l’espace chiffré tel qu’il se présentera une fois «monté» sur /dev/mapper.

Pourquoi personnaliser le nom du volume chiffré peut être important : quand on aura besoin, de copier des données depuis ou vers un autre support de stockage, chiffré de la même manière, cela permettra au système de les reconnaître et de les distinguer les uns par rapport aux autres.

Second chiffrement à faire

Chiffrer un périphérique de stockage pour des sauvegardes

Cette fois, je propose un autre tutoriel, chez Connect-IT cette fois: https://www.it-connect.fr/creer-une-cle-usb-chiffree-via-luks-avec-cryptsetup/.

Et on peut remarquer, que cette fois l’auteur du tutoriel a utilisé un nom différent dans la ligne de commande que j’ai citée au paragraphe précédent:

cryptsetup luksOpen /dev/sdc1 usbkey1

Pour ma part, j’ai utilisé un disque dur 2,5″ de réforme de 750 Go, installé dans un boitier USB (ce qui le transforme en disque dur externe) et que j’ai formatté avec Gparted avant de passer à la suite. Le volume a été repéré par la commande lsblk sous le nom sdd1, et j’ai nommé le volume à chiffrer usbdisk1. (Pourquoi pas ?)

cryptsetup luksOpen /dev/sdd1 usbdisk1

Quand on tente de monter ou démonter le volume chiffré depuis un gestionnaire de fichiers graphique, selon l’environnement et le gestionnaire de fichier utilisé, cela peut échouer, avec un message d’erreur. En ce cas c’est une question d’autorisation avec PolicyKit. Il faut alors soit le configurer, soit passer en ligne de commande, ou tenter de changer de gestionnaire de fichiers. (Ex: Thunar, Nautilus… )

Une fois la ou les sous-volumes créés dans l’espace chiffré, on peut connecter le périphérique externe à l’ordinateur dont on veut sauvegarder les fichiers (qu’il soit chiffré ou pas), et initier la copie à l’aide d’un outil adapté.

Je pense prochainement essayer zulyCrypt à la place de rsync en lignes de commandes.

Pour le chiffrement, cette documentation, qui se base sur le système de fichiers BTRFS pour la création des partitions (volumes), semble également intéressante:  https://blog.flozz.fr/2022/06/11/guide-installation-ubuntu-dans-partition-btrfs-chiffree.

 

Robot.txt pour remplacer .htaccess

Comment demander aux moteurs de recherche de ne pas indexer certains répertoires de votre installation WordPress (ou autre moteurs de publication), sans exposer le fichier à la vue des visiteurs ?

Si votre site web affiche le contenu de votre robot.txt sur l’espace public, (par exemple : https://votre-site.paris/robot.txt), vous le remplacerez avantageusement par un fichier .htaccess.

Puis pour interdire aux robots des moteurs de recherche d’indexer les pages se trouvant dans les répertoires sensibles de votre installation, vous ajouterez dans votre .htaccess ce contenu:

Header set x-robots-tag: noindex

Vous pouvez inclure un commentaire dans le fichier (une ligne informative précédée d’un signe ‘#’) :

# Forbid search engines from indexing this directories
Header set x-robots-tag: noindex

Une fois la ligne ci-dessus insérée dans un fichier .htaccess, vous pourrez placer ce dernier dans les répertoires du site à protéger (par exemple dans le cas de WordPress, sous wp-includes, wp-content/uploads), et sous la racine de l’installation.

 

 

Fichier de swap sur partition BTRFS

J’ai installé mon système Bento Openbox Remix (reconstruite sur Ubuntu LTS) sur un SSD, aussi pour éviter des usures prématurées je n’ai bien sûr pas créé de partition de swap.

J’ai bien tenté d’y installer zram-config, mais avec ma carte graphique nvidia et pas mal de RAM le PC a tendance à freezer. (Tout se bloque, plus qu’à invoquer les SysRQ magiques 🤔 )

Un petit tour dans mon système pour ajouter un fichier de swap a échoué du premier coup. Voici ce que je suivais, et qui est une très bonne doc : https://www.howtogeek.com/455981/how-to-create-a-swap-file-on-linux mais arrivée à la commande «sudo swapon /swapfile» ma console me répondit:

sudo swapon /swapfile swapon: /swapfile : échec de swapon: Argument invalide

Voici bien de quoi râler. Une recherche plus tard sur DuckDuckGo voici ce que je découvrais: https://superuser.com/questions/539287/swapon-failed-invalid-argument-on-a-linux-system-with-btrfs-filesystem.

Sympa ça, le système de fichiers BTRFS ne supporte pas d’avoir un fichier de swap, et ce jusqu’à la version  5 du kernel.

J’ai bien un noyau Linux 5.xyz donc j’ai suivi la piste depuis la discussion sur le site superuser.com et voici le lien direct vers la page la plus actuelle: https://btrfs.readthedocs.io/en/latest/Swapfile.html. Pour aller au plus court, voici comment créer et activer le fichier de swap avec un noyau Linux 5 et plus sur un système de fichiers au format BTRFS:

en root

# truncate -s 0 swapfile
# chattr +C swapfile
# fallocate -l 2G swapfile
# chmod 0600 swapfile
# mkswap swapfile
# swapon swapfile

Il sera bien sûr nécessaire de l’ajouter au fichier /etc/fstab afin qu’il soit pris en compte lors des redémarrages suivants.

Insérer le montage du swap dans /etc/fstab

Insérer le montage du swap dans /etc/fstab

Donc, ouvrir le fichier /etc/fstab en root avec votre éditeur de textes non graphique préféré (mcedit, nano, vim, le… ) et ajoutez à la fin du fichier la ligne suivante:

/swapfile    none     swap    sw    0   0

(les deux caractères de la fin de ligne sont des zéros). Pensez à enregistrer la modification avant de quitter l’éditeur de textes.

Par convention et pour faire simple, j’ai nommé le fichier de swap «swapfile», vous pouvez le nommer autrement si vous le souhaitez, tant que le même nom est employé dans les lignes de commande et dans le fichier fstab (par exemple, «fichierswap»).

 

Scanner sous Linux

Parfois il est nécessaire de créer une règle UDEV (de « dev », périphérique) afin qu’un scanner soit pris en compte, après avoir installé le pilote. Je ne me souviens pas toujours de la bonne syntaxe pour les règles UDEV.
Voici un tuto en anglais récupéré depuis le site web « pigeon nest » qui semble ne plus être en ligne et qui fournit la bonne syntaxe pour le fichier de règles UDEV, concernant les scanners. (Je le traduirai un jour prochain si j’ai envie de prendre le temps).

***********************************

Ubuntu: udev rules for USB scanner

How to create a udev rule to get a USB scanner working in Ubuntu jaunty.

Assumes that: (1) user is a member of group « scanner », (2) sane is installed.

Symptoms of problem: « sane-find-scanner » detects the existence of the scanner, but « scanimage -L » does not report it when run with user permissions, only when run with root permissions. Scanning works as root, but not as a normal user.

1) Run « lsusb » to find the scanner’s manufacturer and device IDs. Example output:

$ lsusb
Bus 003 Device 014: ID 04b8:012e Seiko Epson Corp.
Bus 003 Device 012: ID 046d:c408 Logitech, Inc. Marble Mouse (4-button)
Bus 003 Device 011: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 013: ID 04b8:0005 Seiko Epson Corp. Stylus Printer
Bus 001 Device 001: ID 0000:0000
$

In the above example, the first line relates to the scanner… in this case an Epson Perfection V200… it is somewhat unhelpful that this particular scanner’s text ID string is nothing more than « Seiko Epson Corp. », but it is easy to determine that that device is indeed the scanner by running « lsusb » both with and without the scanner plugged in.

The four-digit hex number « 04b8 » is the manufacturer ID (observe that the Epson printer on the penultimate line has the same manufacturer ID), and « 012e » is the device ID.

2) Create a file /etc/udev/rules.d/40-scanner.rules containing the following (your browser may have wrapped this; it should be all on one line):

SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="012e", ENV{libsane_matched}="yes", GROUP="scanner"

Of course you will substitute the appropriate values for your scanner, obtained from « lsusb », for the idVendor and idProduct entries.

The SUBSYSTEMS and ATTRS entries have double == signs whereas the ENV and GROUP entries have single = signs. This is not a typo.

3) Restart udev:

$ sudo /etc/init.d/udev restart
* Stopping kernel event manager… [ OK ]
* Starting kernel event manager… [ OK ]
$

4) Unplug the scanner and plug it in again.

5) Check that it has obtained the correct permissions. Run « lsusb » again to determine the bus and device IDs – they will have changed due to the unplugging and replugging. Then check the appropriate device node in /dev/bus/usb:

$ lsusb
Bus 003 Device 015: ID 04b8:012e Seiko Epson Corp.
Bus 003 Device 012: ID 046d:c408 Logitech, Inc. Marble Mouse (4-button)
Bus 003 Device 011: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 013: ID 04b8:0005 Seiko Epson Corp. Stylus Printer
Bus 001 Device 001: ID 0000:0000
$ ls -l /dev/bus/usb/003/015
crw-rw-r-- 1 root scanner 189, 269 Apr 24 19:10 /dev/bus/usb/003/015
$

If the output corresponds with the above, all should be well, and running « scanimage -L » with user permissions should now pick the scanner up:

$ scanimage -L
device `epkowa:libusb:003:015' is a Epson Perfection V200 flatbed scanner
$

Note that the V200 requires a driver. Two packages, iscan and iscan-plugin-gt-f670 (apparently the V200 is also called that sometimes) must be installed, before carrying out the procedure described above. The latest versions (iscan is up to 2.30 at the time of writing) are available on Epson’s website (used to be on Avasys’s). I tried these, for experiment. They didn’t work. I cannot now remember how or why they didn’t work. The reason I can’t remember is because I also don’t care. The reason I don’t care is because I have older versions installed and they work just fine. Here are tarballs of the versions I am using, containing both the i386 and amd64 versions of the packages:

iscan_2.19.0-4doctormo2_orig_and_debs.tar.gz
iscan-plugin-gt-f670_2.1.2-1_rpms_and_debs.tar.gz

You don’t, of course, need this driver if your scanner is not a V200; you need only the udev rules. A few other scanners also require their own specific drivers, but the majority of scanners do not. Use the SANE project database to check the compatibility and requirements of your particular scanner.

***********************************

Un ajout, pour configurer le scanner d’une imprimante Epson ET-4500 (ou autre Epson, le principe sera toujours le même).

Pour le scanner de l’imprimante Epson ET-4500 (un modèle Ecotank), dans le fichier 60-sane.rules (ou dans le fichier 79-udev-epson.rules fourni par le paquet de chez Epson) ajoutez:

# Flatbed Espon scanner ET-4500
SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="1107", ENV{libsane_matched}="yes", GROUP="scanner"

Supprimez le bit executable s’il y en a un (sudo chmod a-x <nom du fichier>). Commenter toute autre ligne de configuration fournie par défaut.

Redémarrer l’ordinateur et scannez des documents.

Comment traduire une application

Source de l’article, intégralement copié:

http://pclinuxos-fr.org/2011/01/15/howto-translate-ou-comment-traduire-une-application

Ce tutoriel est une traduction de celui rédigé par Pinoc, sur le forum de PCLinuxOS. Il s’applique aux paquets RPM, et peut aussi être transposé à d’autres formats de paquet, selon votre distribution.

Pinoc commence ainsi:
Peut-être pouvons-nous utiliser ce post (Howto translate) pour recueillir, mettre à jour, ou modifier toutes informations utiles nécessaires aux traductions.

Plus d’informations sur les commandes ci-dessous peuvent être trouvées à l’aide de la konsole (ou un autre terminal) ‘man <commande>’ (<où > commande peut être tr / min, msgfmt, etc) et bien sûr il y a aussi Google…

Supposons que nous nous penchions sur l’application Synaptic (ceci est aussi vrai pour n’importe quelle autre application) et que nous nous intéressions à la locale « fr » (où « fr » correspond au français tout comme « de » correspond à l’allemand et « it » à l’italien, etc… disons génériquement « <yy> »). Les informations relatives à la langue, à l’intérieur d’un paquetage rpm, sont contenues dans les fichiers « mo » qui sont habituellement stockés sous /usr/share/locale/<yy>/LC_MESSAGES/.

Les fichiers « mo » sont les versions compilées des fichiers éditables « po », aussi les fichiers « po » sont ceux où la traduction est en fait réalisée. Quand vous avez fini de traduire le fichier « po » et que vous l’avez converti en un fichier « mo », ce fichier « mo » devra être proposé aux packagers de PCLinuxOS pour être inclus dans un paquet rpm lors de sa prochaine mise à jour.

Comment traduire / éditer les fichiers po

Tout d’abord installez, via Synaptic, l’application « poedit » qui est un excellent outil de traduction.

Lancez Poedit:

  • Sous « Catalogue », vous trouvez une entrée qui permet de « traduire automatiquement » mais je n’ai jamais essayé.
  • Assurez-vous de vérifier dans: Catalogue -> Configuration -> Onglet Informations que vous avez spécifié un nom de projet valide et la version, sinon vous ne pouvez pas enregistrer votre travail de traduction.
  • Veuillez également compléter les autres champs, en particulier « Jeu de carectères: iso-8859-15 » et « Jeu de caractères du code Source: utf-8 ».
Comment convertir un fichier « mo » <–> en fichier « po »

Pour convertir un fichier « mo » en un fichier éditable « po », il suffit d’utiliser la commande suivante:

msgunfmt synaptic.mo -o synaptic.po

Et inversement, pour convertir le fichier éditable « po » en un fichier « mo », la commande sera:

msgfmt synaptic.po -o synaptic.mo
liste Howto / extraire les fichiers mo

a) à partir d’un paquetage rpm/deb

Pour voir quels fichiers de langue sont déjà disponibles à l’intérieur d’un paquetage rpm, faites la commande suivante :

rpm -qlp <chemin complet vers>/synaptic-0.57.2-20pclos2007.i586.rpm | grep synaptic.mo

Ou utilisez la même commande sans « | grep synaptic.mo », simplement pour lister le contenu de l’archive rpm.

D’autres infos utiles peuvent être obtenus avec la commande :

rpm -qip <chemin complet vers>/synaptic-0.57.2-20pclos2007.i586.rpm

Pour extraire les fichiers d’une archive, copiez l’archive dans un nouveau dossier vide, puis dans ce nouveau dossier, utilisez la commande:

rpm2cpio synaptic-0.57.2-20pclos2007.i586.rpm | cpio -idmv

Si vous trouvez quelque chose d’intéressant à l’intérieur d’une archive deb, utilisez la commande:

xv <quelquechose>.deb

b) à partir de scripts bash

Par exemple à partir du script « update-notifier  » (remplacer update-notifier par le nom du script que vous voulez traduire), allez dans votre répertoire home (commande: cd ~) et entrez:

bash --dump-po-strings /usr/bin/update-notifier | xgettext -L PO -o ~/update-notifier.pot -

Ensuite, entrez la commande:

msginit -l fr -i ~/update-notifier.pot -o ~/fr.po

Cet exemple est pour l’extraction des informations en langue française (fr), (changez « fr » par le code iso de la locale sur laquelle vous voulez travailler). Informations complémentaires: Localizing Bash scripts

Note: vous devez insérer le signe dollar ($) devant chaque entrée de texte dans votre script bash pour que la commande ‘bash –dump-po-strings’, tel ci dessus, reconnaisse la chaine de traduction par exemple :

zenity --error --text=$"Please run this script as root.\n\nExiting..."
Modifier un fichier PO (par exemple pour GetOpenOffice)

Ouvrez le fichier « po » avec poedit, aller au menu « Catalogue > Paramètres », onglet « Info Projet » : dans le champ « Nom du projet et version » insérez: « GetOpenOffice 0.6 », insérez votre langue et le pays et dans la rubrique « charset code source »: utf-8. Vous devez compléter ces champs sinon vous ne pourrez pas enregistrer le fichier modifié !

Localisation d’infos sur le web

Traduction : mypclinuxos , Ubuntu-Launchpad, firefox-addon, le ‘KlipOQuery ‘-panelapplet peut être installé via Synaptic et transférera le contenu du presse-papier au service de traduction sélectionné. KDE / Gnome: kde-l10n, gnome-i18n, kde-i18n, KDE-Localization

Locales: Locales, ISO_639

Si vous connaissez d’autres outils utiles, des applications, liens, tours de magie, ou que ce soit d’autre, alors s’il vous plait faites le nous savoir afin que nous puissions l’ajouter ici.

En espérant que cela vous aide, bonne chance,

Pinoc

Créer 12 répertoires numérotés en une ligne de commande

Sous GNU/Linux, pour créer les 12 dossiers correspondants à chaque mois de l’année, une courte ligne de commande suffit.

mkdir {01..12}

et les répertoires correspondant aux 12 mois de l’année sont là !

J’ai besoin de sous-répertoires pour ma comptabilité. Afin de créer automatiquement ces sous-répertoires, je les crée d’abord dans le dossier nommé «01», puis depuis le répertoire parent (celui correspondant à l’année) la ligne de commande suivante fera le job:

for dir in {02..12}; do cp -r 01/* "$dir"/; done

Le signe ‘*’ après l’argument ’01/’ permet de copier le contenu du répertoire «01». Sans le caractère ‘*’, il copierait 01 et son contenu, et ce n’est pas ce que l’on veut.

Pour le faire en une seule ligne:

mkdir -p 2024/{01..12}/{Clients,Banque,Fournisseurs/Perso}

Merci à moviuro. 🙏

 

swapfile sur btrfs et Ubuntu 20.04

L’activation du fichier swapfile échouait avec ce message :

sudo swapon /swapfile : echec de swapon : argument invalide

Après avoir galéré cherché sur le web pendant 5 à 10 minutes pour trouver la « formule magique » qui allait me permettre d’activer un fichier de swap sur un SSD, j’ai trouvé l’information dans les commentaires de cette page de rapport de bug : +bug/1788321.

J’ai fait de même, hormis pour le nom du fichier, je l’ai nommé “swapfile”. Et déjà positionnée à la racine du système j’ai utilisé le chemin relatif dans mes lignes de commande au lieu du chemin absolu. (donc ‘swapfile’ au lieu de ‘/swapfile’).

$ sudo touch swapfile
$ sudo chattr +C swapfile
$ sudo fallocate -l 1G swapfile
$ sudo chmod 600 swapfile
$ sudo mkswap swapfile 
Configure l'espace d'échange (swap) en version 1, taille = 1024 MiB (1073737728 octets)
pas d'étiquette, UUID=5a58f21f-7b7e-48f4-afb3-e3becbb279f0
$ sudo swapon swapfile
$ swapon --show
NAME TYPE SIZE USED PRIO
/dev/zram0 partition 867,3M 1,3M 5
/swapfile file 1024M 0B -2
$ sudo mcedit /etc/initramfs-tools/conf.d/resume

Et dans le fichier resume créé un peu plus tôt, j’ai ajouté:

RESUME=UUID=5a58f21f-7b7e-48f4-afb3-e3becbb279f0

Le fichier /etc/fstab contenait déjà la ligne pour swapfile:

/swapfile none swap sw 0 0

Après un redémarrage, tout était bien pris en compte.

Sécurité par le .htaccess

Vous avez un site web, et vous voudriez qu’il soit aussi à l’abri que possible des attaques ? Assurez-vous que les fichiers du moteur qui propulse votre site ne puissent pas être visibles depuis le web ou même listés par des programmes ratissant le web à la recherche de sites internet vulnérables.

Que faudrait-il ajouter à la racine du site, dans le fichier .htaccess ?

Options All -Indexes
<FilesMatch ^wp-config.php$>
deny from all
</FilesMatch>

La première ligne interdit l’accès aux listes des fichiers du site wesb (comme les fichiers d’une installation WordPress).

Les lignes suivantes concernent spécifiquement les sites WordPress et protègent le fichier de configuration qui contient les informations clé de l’installation.

Créer une ancre sans plugin avec WordPress

Source et cible

Vous écrivez un article. Et vous voulez placer un renvoi depuis une partie du texte vers une autre partie de votre texte. ⌨️ Vous allez créer une ancre en plaçant un petit code aux endroits voulus.

Pour la créer cette ancre vous pouvez utiliser un code depuis le texte qui source du renvoi et une ancre ⚓ dans la section cible du contenu de votre joli blog ! 😊

D’abord, le code qui permettra de faire le renvoi. Disons que vous écrivez un tutoriel. Par exemple,

<a href="#grub">Installation du chargeur de démarrage</a>

puis l’ancre: ⚓

<a name="grub"></a>
<h4>Installation du chargeur de démarrage</h4>

Ensuite  rendez-vous à la section →

<a href="#grub">Installation du chargeur de démarrage</a>

quelques lignes plus bas. 🤔

L’exemple présenté est tiré de cette page : http://pclinuxos-fr.org/2010/10/23/installer-pclinuxos-2010

Si chemin faisant vous voulez mettre du texte en gras, mettez-le autour du texte visible, à l’intérieur des balises “<a href” …

Je vous propose de découvrir plus de méthodes pour créer des ancres et des exemples + des avantages et inconvénients autour de l’utilisation des ancres dans vos textes avec un article chez Kinsta.com.