FreshRSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Windows 11 : WSL prend en charge systemd pour les distributions Linux !

23 septembre 2022 à 09:48

Désormais, la fonctionnalité Windows Subsystem for Linux prend en charge systemd grâce aux travaux effectués par Microsoft et Canonical, l'éditeur de la distribution Ubuntu. Cela ouvre la porte à l'installation de paquets supplémentaires !

Pour rappel, Windows Subsystem for Linux dit "WSL" est une fonctionnalité disponible depuis Windows 10 qui permet d'utiliser Linux depuis Windows sans créer de machines virtuelles (bien que la version 2 s'appuie sur des composants d'Hyper-V).

Quant à systemd, c'est un composant essentiel que l'on retrouve sur de nombreuses distributions Linux. Il sert notamment à gérer le démarrage des services au lancement du système : très utile pour faire tourner automatiquement des services/démons.

Systemd lui-même est lancé au démarrage de Linux, puis il gère le lancement des processus correspondants aux services à démarrer automatiquement. Ce qui nécessite de revoir un peu le fonctionnement au sein de WSL. Dans l'annonce officielle, Craig Loewen de Microsoft, précise "Étant donné que le processus WSL init est chargé de fournir l'infrastructure de communication entre les composants Linux et Windows, la modification de cette hiérarchie a nécessité de repenser certaines des hypothèses faites avec le processus WSL init." - En effet, le processus WSL init va devenir un processus enfant de systemd car ce dernier requiert d'avoir le processus avec le PID 1.

Avec la prise en charge de systemd, cela permet l'installation de paquets qui nécessitent ce composant comme systemctl, microk8s (Kubernetes) et Snap.

Comment activer systemd dans WSL ?

C'est là où je vais en décevoir certains : pour le moment, cette fonctionnalité est disponible dans la dernière build de Windows 11 accessible via le programme Windows Insider. Autrement dit, ce n'est pas encore disponible sur une version stable de Windows.

Si vous utilisez une version preview de Windows 11, vous pouvez mettre à jour WSL vers WSL 0.67.6 preview ou supérieur avec ces deux commandes. La première étant pour la mise à jour, et la seconde pour vérifier la version installée.

wsl --update
wsl --version

Ensuite, pour activer systemd au sein de la distribution WSL de votre choix, vous devez modifier le fichier de configuration "/etc/wsl.conf" de la distribution afin d'ajouter ceci :

[boot]
systemd=true

Cette manipulation sera à effectuer sur chaque distribution où vous souhaitez activer systemd.

Source

The post Windows 11 : WSL prend en charge systemd pour les distributions Linux ! first appeared on IT-Connect.

Microsoft adds 'systemd' to the Windows Subsystem for Linux

22 septembre 2022 à 20:03
Microsoft and Canonical have teamed up to add systemd support to the Windows Subsystem for Linux, allowing a larger number of compatible apps to be installed. [...]

Comment créer un paquet .deb pour Debian / Ubuntu / Mint ?

21 septembre 2022 à 09:00
Par : Korben

Dans le cadre de mon Patreon, j’essaye de varier les sujets et de toujours proposer des tutoriels accessibles à tous ! Parfois, je vous parle de développement, parfois de sécurité, parfois de Windows et bien évidemment de Linux. Et cette semaine, je libère cette vidéo qui n’aurait pas vu le jour sans le soutien des gens inscrits sur mon Patreon !

J’y parle de création de paquets .deb pour Debian et systèmes dérivés comme Ubuntu ou Mint. Vous allez voir, c’est easy !

Merci à vous la team !

Comment rechercher et remplacer dans vim

18 septembre 2022 à 10:45

Vim est un éditeur de texte avancé et populaire qui est préinstallé dans la plupart des distributions Linux. Il s’agit d’un éditeur de texte basé sur la ligne de commande qui est principalement utilisé dans les systèmes d’exploitation sans interface utilisateur. Il est hautement configurable et offre de nombreuses fonctionnalités. Un point important concernant Vim est qu’il est hautement optimisé pour la répétition.

Dans ce tutoriel, je vous explique l’une de ses fonctions les plus utiles, à savoir la recherche et le remplacement.
En effet, la substitution de texte est très utile pour modifier un fichier texte.

Comment rechercher et remplacer dans vim

Les méthodes du rechercher et remplacer de vim

Commande de la barre oblique et du point

Utilisez la commande barre oblique et point pour rechercher et remplacer une seule occurrence d’un mot dans Vim.

Ouvrez un fichier dans Vim et suivez les étapes suivantes :

  • Appuyez sur la touche barre oblique /
Comment rechercher et remplacer dans vim
  • Tapez le terme recherché pour le mettre en évidence dans le texte et appuyez sur Entrée
Comment rechercher et remplacer dans vim
  • Utilisez la touche Echap pour revenir au mode normal
  • Tapez cgn cela va supprimer l’occurrence recherchée et passez en mode Insertion
Comment rechercher et remplacer dans vim
  • Saisissez le nouveau terme à remplacer
Comment rechercher et remplacer dans vim
  • Revenez au mode normal
  • Tapez n pour passer à l’occurrence suivante du terme de recherche
Comment rechercher et remplacer dans vim
  • Appuyez sur la touche point . pour remplacer l’occurrence suivante par le même terme de remplacement
Comment rechercher et remplacer dans vim

Quelques explications :

  • La commande c supprime le texte et met vim en mode insertion. c supprime le mouvement que vous spécifiez. Ainsi, cw effacera le mot suivant et vous mettra en mode insertion
  • gn saute au texte qui a été recherché en dernier lieu, et le met en surbrillance
  • Enfin . permet de répéter la dernière opération

Dans cet exemple, nous avons utilisés l’opérateur cgn mais il en existe bien d’autres.

cawSupprime également l’espace de fin de ligne
cwChanger le mot entier
ciwChanger le mot à partir du curseur
Les opérateurs de chercher et remplacer de vim

Plus de détails dans ce lien : http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects

Commande de substitution

La commande de substitution :s est plus polyvalente que les commandes de barres obliques et de points.

Utilisez la commande barre oblique et point pour rechercher et remplacer une seule occurrence d’un mot dans Vim.

La syntaxe de base de la commande :s est la suivante

:s/terme_recherche/terme_remplacement/

Si vous connaissez la commande sed, vous verrez que cela est très proche.

La commande recherche le terme à rechercher dans la ligne courante, la ligne où se trouve le curseur. Ensuite, :s remplace le terme de recherche par le terme de remplacement.

  • Ouvrez un fichier dans Vim
  • Puis saisissez la commande suivante qui vise à chercher le mot www pour le remplacer par forum :
:s/www/forum/
Comment rechercher et remplacer dans vim (commande de subtitution)
  • Puis validez par Entrée
Comment rechercher et remplacer dans vim (commande de subtitution)
  • Vim substitue bien l’occurrence www qu’il remplace par forum

En réalité, la syntaxe de la commande de substitution est un peu plus complexe :

[plage]s/terme_recherche/remplacement_terme/[drapeaux] [nombre]

Suivez le paragraphe suivant pour obtenir des exemples.

Utilisez :help / pour obtenir de l’aide sur les pattern de recherche.

Comment rechercher et remplacer dans vim avec des exemples

Chercher/remplacer sur une ligne

Pour substituer toutes les termes d’une ligne, il faut utiliser le drapeau g pour global.

Ainsi, si on utilise la commande suivante :

:s/www/forum/g
Comment chercher/remplacer sur une ligne dans vim

Toute les occurrences de la ligne sont remplacées.

Comment chercher/remplacer sur une ligne dans vim

Chercher/remplacer sur tout le fichier

Pour rechercher/remplacer avec vim dans tout le texte, il faut utiliser la plage %.
% équivaut à la plage :1,$ soit donc de la première ligne à la dernière ligne.

:%s/www/forum/g
Comment chercher/remplacer sur tout le fichier dans vim

Vim substitue alors les termes dans tout le document.

Comment chercher/remplacer sur tout le fichier dans vim

Chercher/remplacer jusqu’à la fin du fichier

Utilisez un point (.) et un signe de dollar ($) séparés par une virgule pour substituer tout ce qui se trouve sur la ligne actuelle jusqu’à la dernière ligne.

:.,$/www/forum/g

Chercher/remplacer d’un mot entier

Par défaut, la commande de remplacement recherche toute correspondance, qu’elle soit partielle ou complète. Pour trouver le terme exact recherché et le remplacer par le terme de remplacement, il faut inclure le terme recherché dans le champ “<>”.

Par exemple, dans certains documents, vous souhaitez rechercher et remplacer le mot exact “vous” par “moi”. Dans ce cas, la commande suivante sera utilisée :

:s/\<pas\>//

Elle trouvera le mot “pas” et le remplacera par “rien”. Cependant, elle ne remplacera pas les mots avec la syllabe “pas”.

Chercher/remplacer dans un intervalles de lignes

En spécifiant une plage lors de l’exécution de la commande :s, les utilisateurs peuvent rechercher et remplacer des motifs au-delà de la ligne en cours.
La syntaxe est la suivante :

:<debut_ligne>,<fin_ligne>s/vi/Vim/g

Par exemple pour substituer entre la ligne 1 et la ligne 5 du fichier :

:1,5s/www/forum/g
Comment chercher/remplacer dans un intervalles de lignes dans vim

La dernière occurrence n’est pas remplacée car elle se trouve à la ligne 6, soit donc hors de la plage spécifiée.

Comment chercher/remplacer dans un intervalles de lignes dans vim

Pour rechercher et remplacer l’occurrence d’un mot à partir de la ligne actuelle jusqu’au nombre x de lignes suivantes, la syntaxe suivante doit être utilisée :

:s/terme_chercher/terme_remplacer/g x

Ignorer la casse durant la substitution

Par défaut, !le processus de recherche et de remplacement dans Vim est sensible à la casse. Par exemple, l’utilisation de la commande :s pour remplacer www (en minuscules) par vi ne fonctionnera pas sur Www. ou WWW.

Pour ignorer la casse, ajoutez le drapeau i pour ignorer la casse.
Par exemple :

:%s/www/forum/gi

Afficher une confirmation avant de remplacer sur vim

La substitution est automatique mais vous pouvez demander à vim d’afficher une demande de confirmation avant tout remplacement.
Pour cela, ajoutez le drapeau /c.

:%s/www/forum/gc
Comment afficher une confirmation avant de remplacer sur vim

Vim invite les utilisateurs à choisir entre plusieurs options :

  • Remplacer la correspondance sélectionnée par Y
  • Sauter la correspondance sélectionnée avec n
  • Remplacer toutes les correspondances avec a
  • Quitter la commande avec q
  • Remplacer la correspondance sélectionnée et quitter avec I

Supprimer toutes les occurrences

Au lieu de substituer le terme recherché, supprimez le motif en omettant le terme de remplacement. Par exemple, supprimez toutes les instances de Vim avec :

:%s/www./

Remplacer des mots différents par un seul

Utilisez la commande de remplacement pour remplacer différents termes de recherche par un seul terme de remplacement.

:%s/\(mot1\|mot2\)/mot_remplacer/g

Par exemple, remplacez toutes les occurrences de www. ou ftp:// par https://www :

:%s/\(www\.\|ftp:\/\/\)/http:\/\//g
Remplacer des mots différents par un seul avec vim
Remplacer des mots différents par un seul avec vim

Chercher/remplacer avec l’histoire de vim

L’exécution de la commande :s sans aucune option affiche les opérations de substitution précédentes. En outre, exécutez la commande :s et utilisez les touches fléchées haut/bas pour vous déplacer dans le document.

Plus important encore, utilisez la commande :s pour appliquer les substitutions précédentes au nouveau texte. Par exemple, l’historique montre que la commande a remplacé toutes les instances de vi par Vim.

L’exécution de la commande :s permet de trouver toutes les substitutions déjà effectuées, mais aussi toutes les instances de vi qui n’ont pas encore été modifiées.

L’article Comment rechercher et remplacer dans vim est apparu en premier sur malekal.com.

Apprendre vim : 7 bases à connaître

17 septembre 2022 à 08:30

Vim un éditeur modal disponible en ligne de commandes sur les terminaux Linux et Unix.

Mais débuter sur vim n’est pas forcément simple car c’est un éditeur de texte modal.
Cela peut dérouter beaucoup d’utilisateurs.
Pourtant vim est un éditeur de texte très puissant avec lequel vous pouvez effectuer énormément de choses.

Dans ce tutoriel, je vous propose les bases de vim à connaître pour apprendre et débuter dans l’utilisation de vim.
En suivant ce dernier, vous aurez le minimum de connaissances pour utiliser l’éditeur de texte.

Apprendre vim : 7 bases à connaître

Principe générale de vim

Vim est différent des éditeurs de texte Linux traditionnels.
Il propose plusieurs modes pour répondre à ce besoin. Chaque mode fait quelque chose de différent et est contrôlé par des frappes de touches. Les modes essentiels de Vim sont le mode normal, le mode visuel, le mode insertion et le mode commande.

Nous utilisons le mode normal pour réviser le texte ou code et effectuer des opérations rapides. Le mode visuel est utilisé pour mettre en évidence les sections de texte, et le mode insertion permet d’ajouter des textes. Vous utiliserez le mode commande pour saisir diverses commandes vim.

De plus, comme beaucoup d’éditeurs en mode console, vim encourage les utilisateurs à ne pas utiliser la souris. Vous pouvez cependant configurer vim pour activer le support de la souris.
Pour cela, il offre de nombreux opérateurs (sortent de commandes) que vous pouvez utiliser pour effectuer n’importe quelle action.

Quelques bases à savoir :

  • En appuyant sur la touche d’échappement, cela vous sort de n’importe quel mode, vous reviendrez au mode normal
  • Les opérateurs s’utilisent directement. Par exemple l’opérateur d pour delete permet de supprimer ou couper un caractère, mot, paragraphe, section. L’opérateur y (yanking) permet de copier, etc
  • Les commandes nécessitent d’utiliser le mode commande via la touche :

Comment ouvrir un fichier texte sur vim

Cela ne devrait pas poser de problème mais voici de tout de même quelques explications pour ouvrir un fichier en édition sur vim.

Lancez le terminal et exécutez la commande suivante.

vim

Cela ne fera que lancer l’éditeur. Si vous voulez éditer un fichier texte avec Vim, exécutez la commande suivante.

vim /chemin/fichier

Par exemple pour éditer le fichier mak.txt qui se trouve dans votre /home :

vim ~/mak.txt
Comment ouvrir un fichier texte sur vim

Et si vous désirez éditer plusieurs fichiers, il vous suffit de spécifier les noms.

vim <fichier1> <fichier2> … <Fichiern>

Les modes de vim

Vi est un éditeur modal.
Il existe de nombreux modes selon vos besoins.
Voici la liste des opérateurs pour changer de modes.

iMode d’insertion au niveau du curseur.
IMode insertion en début de ligne.
aMode Insertion après le curseur.
AMode insertion en fin de ligne.
oMode Insertion avec une nouvelle ligne en dessous.
OMode Insertion avec une nouvelle ligne au-dessus.
sMode insertion au niveau du curseur, après suppression du caractère courant.
SMode insertion, après suppression de la ligne courante.
vMode visuel au curseur.
VMode visuel en début de ligne.
rRemplacer le mode pour remplacer le caractère actuel.
RRemplacer le mode.
Echap/ESCMode normal ou mode de commande.
Les raccourcis des modes vim

Le mode commande

Dans ce mode, vous pouvez passer des commandes dans vim.
Le mode commande dispose d’une grande variété de commandes et peut faire des choses que le mode normal ne peut pas faire aussi facilement. Pour entrer en mode commande, tapez : à partir du mode normal, puis tapez votre commande qui devrait apparaître au bas de la fenêtre.
On accède au mode commande en utilisant la touche Echap .

Le mode commande de vim

Le mode normal

Le mode normal est celui où vous pouvez utiliser la plupart des raccourcis.
C’est le mode qui s’ouvre par défaut lorsque vous éditez un fichier avec vim.

Le mode insertion (ou édition)

Le mode insertion est le mode classique d’un éditeur de texte à partir duquel vous pouvez modifier le fichier texte ouvert.
Vous pouvez modifier un texte, ajouter du texte, etc.
Vim passe en mode édition lorsque vous appuyez sur une touche de texte du clavier, sinon utilisez la commande I ou i (i de insert).
L’indication — INSERTION — apparaît en bas à gauche de l’écran.

Le mode commande de vim

Le mode visuel

Par défaut, Vim ne permet aucune interaction avec la souris. Cependant, il existe le mode visuel qui permet de sélectionner facilement un morceau de texte. En fait, c’est la SEULE façon dont Vim permet de sélectionner les textes sans aucun raccourci clavier.
Pour passer en mode visuel, utilisez la touche v du clavier.

Le mode remplacement

En mode remplacement, les textes existants sont remplacés ou écrasés au fur et à mesure que vous tapez.

Comment se déplacer dans vim

En mode normal, il existe plusieurs façons de se déplacer dans un fichier ouvert.
En plus d’utiliser les touches du curseur pour vous déplacer, vous pouvez également utiliser h (gauche), j (bas), k (haut) et l (droite) pour vous déplacer. Cela aide particulièrement les dactylographes qui n’aiment pas quitter la ligne d’origine lorsqu’ils effectuent des modifications.

Vous pouvez également apporter des modifications à des caractères uniques en mode normal. Par exemple, pour remplacer un caractère unique, placez votre curseur dessus et appuyez sur r, puis sur le caractère par lequel vous souhaitez le remplacer. De même, vous pouvez supprimer un caractère unique en plaçant votre curseur dessus et en appuyant sur x.

Pour effectuer une annulation, appuyez sur uen mode normal. Vous annulez ainsi les modifications jusqu’à la dernière fois où vous étiez en mode normal. Si vous voulez refaire (c’est-à-dire annuler votre annulation), appuyez sur CTRL + r

Les raccourcis de déplacement dans vim

Voici un résumé des raccourcis et commandes essentiels pour se déplacer dans vim :

RaccourcisDescription
hAller d’un caractère vers la gauche
lSe déplacer d’un caractère vers la droite
j ou Ctrl + JSauter d’une ligne vers le bas
k, Ctrl + PPour remonter d’une ligne
0Pour aller au début de la ligne
$Pour aller à la fin de la ligne
wAller au mot alphanumérique suivant
WAller au mot suivant (délimité par un espace)
3wAvance de 3 mots
bRetourne d’un mot alphanumérique en arrière
BRevenir en arrière d’un mot (délimité par un espace)
5bRevenir à 5 mots en arrière
ggDébut du fichier
GFin du fichier
Les raccourcis et commandes pour se déplacer dans vim

Voici d’autres raccourcis utiles de navigation vim pour passer d’une phrase ou paragraphe suivant ou précédent.

RaccourcisDescription
(Aller à la phrase précédente
)Aller à la phrase suivante
{Aller au paragraphe précédent
}Aller au paragraphe suivant
]Aller à la section suivante
[Aller à la section précédente
Les raccourcis et commandes pour se déplacer dans vim

Comment modifier le texte dans vim

Entrez dans le mode d’édition en appuyant sur “i”, ce qui permet de basculer dans le “mode d’insertion”.

i

Pour sortir du mode “Insertion”, appuyez sur Echap.

Voici quelques-unes des façons spéciales de lancer le “mode Insertion”.

RaccourcisDescription
aInsérer du texte juste après le curseur
AInsertion de texte à la fin de la ligne actuelle
oNouvelle ligne sous le curseur
ONouvelle ligne au-dessus du curseur
Les raccourcis et commandes pour modifier du texte dans vim

Maintenant, souhaitez vous inclure des données provenant d’une autre source ? Par exemple, la sortie d’une commande ou le contenu d’un autre fichier texte ? Vim vous permet de le faire grâce à ces raccourcis intégrés.

Utilisez la commande suivante pour injecter le contenu d’autres fichiers texte dans la position actuelle du curseur.

:r <fichier>

Vous avez besoin de la sortie d’une commande ? Utilisez celle-ci.

:r!  <commande>

Quels sont les raccourcis et commandes vim ?

Vous l’aurez compris, vim possède des dizaines et dizaines de commandes et raccourcis clavier pour effectuer toutes les actions souhaitées.
Cela en fait un éditeur très puissant.

Le tutoriel suivant vous donne la liste COMPLETE des commandes vim :

Comment enregistrer et sortir de vim

Après avoir modifié ou créé son fichier texte, on souhaite enregistrer et quitter vim.
Voici comment faire.

Pour enregistrer un fichier, utilisez la commande suivante :

:w

Pour quitter, utilisez la commande suivante :

:q
Comment enregistrer et sortir de vim ou vi

Vous pouvez combiner les deux commandes comme ceci :

:wq
Comment enregistrer et sortir de vim ou vi

Bien entendu, il est aussi possible d’enregistrer-sous, cela est expliqué dans le tutoriel suivant :

L’article Apprendre vim : 7 bases à connaître est apparu en premier sur malekal.com.

+100 raccourcis clavier et commandes de vim à connaître

17 septembre 2022 à 08:30

Vim est un puissant outil d’édition de code en ligne de commande qui est une version améliorée du vénérable éditeur vi. Bien que la plupart des gens l’utilisent avec Linux, Vim est compatible avec la plupart des systèmes d’exploitation couramment utilisés, notamment macOS, Windows et DOS.

Sa puissance réside dans les dizaines d’opérateurs, commande et raccourcis clavier disponibles pour effectuer n’importe quelle action.
Mais ce qui peut faire la force et aussi une faiblesse, rendant vim déroutant, car il faut connaître une bonne partie de ces opérateurs.

Ainsi, dans cet article, je vous donne une liste des raccourcis clavier et des commandes Vim les plus couramment utilisés qui peuvent vous aider à démarrer avec Vim.

Les raccourcis clavier et commandes de vim à connaître

Les raccourcis clavier et commandes de vim

Si vous êtes novice en matière de Vim, vous pouvez consulter notre tutoriel pour apprendre vim : Apprendre vim : 7 bases à connaître
De plus, vous pouvez aussi ouvrir un terminal et exécutez vimtutor pour vous familiariser avec quelques commandes initiales avant de vous plonger dans le reste.

Les modes

Le mode normal est l’endroit où vous pouvez utiliser la plupart des raccourcis. En mode insertion, Vim se comporte comme un éditeur de texte normal.
En mode remplacement, les textes existants sont remplacés ou écrasés au fur et à mesure que vous tapez.
Le mode visuel nous permet de sélectionner visuellement des textes, puis d’y apporter des modifications.

iMode d’insertion au niveau du curseur
IMode insertion en début de ligne
aMode Insertion après le curseur
AMode insertion en fin de ligne
oMode Insertion avec une nouvelle ligne en dessous
OMode Insertion avec une nouvelle ligne au-dessus
sMode insertion au niveau du curseur, après suppression du caractère courant
SMode insertion, après suppression de la ligne courante
vMode visuel au curseur
VMode visuel en début de ligne
rRemplacer le mode pour remplacer le caractère actuel
RRemplacer le mode
EscMode normal ou mode de commande
Les raccourcis et commandes des modes vim

Se déplacer dans vim

Voici la liste des commandes et raccourcis pour vous déplacer dans un texte dans vim.

kDéplacez-vous d’une ligne vers le haut
jDéplacez-vous d’une ligne vers le bas
hDéplacez-vous d’une ligne vers la gauche
lDéplacez-vous d’une ligne vers la droite
wAller au début du mot suivant (séparé par un espace/ponctuation)
WAller au début du mot suivant séparé par un espace
eAller à la fin du mot suivant séparé par des ponctuations/espaces
EAller à la fin du mot suivant séparé par un espace
bAller au début du mot précédent séparé par un signe de ponctuation/espace
BAller au début du mot précédent séparé par un espace
{Aller au saut de ligne précédent
}Aller au saut de ligne suivant
%Accédez au support correspondant
#Aller à l’occurrence précédente du mot courant sous le curseur
*Aller à la prochaine occurrence du mot courant sous le curseur
^Aller au premier caractère non vide de la ligne
0Aller au début de la ligne
$Aller au bout de la ligne
ggAller au début du fichier
GAller à la fin du fichier
gdAller à la définition
:{number}Allez au numéro de ligne. Remarque : Il ne s’agit pas vraiment d’un raccourci, mais d’une commande Vim
Les raccourcis et commandes de vim pour se déplacer

Les raccourcis de mouvement peuvent être précédés d’un nombre pour répéter le mouvement. Par exemple, pour descendre de 5 lignes, nous pouvons utiliser 5j. De même, pour avancer de 2 mots, on peut utiliser 2w.

Chercher/remplacer

Vous pouvez rechercher un caractère dans la ligne actuelle en utilisant f (find) et t (till).

La différence entre “trouver” et “jusqu’à” est que “trouver” déplace le curseur vers le caractère recherché, tandis que “jusqu’à” déplace le curseur vers le caractère précédent du caractère recherché.

fTrouver la prochaine occurrence d’un caractère dans la ligne courante et y accéder
tTrouver l’occurrence suivante d’un caractère dans la ligne courante et aller au caractère précédent
FTrouver l’occurrence précédente d’un caractère dans la ligne courante et y accéder
TTrouver l’occurrence précédente d’un caractère dans la ligne courante et aller au caractère suivant
Les raccourcis et commandes de vim pour chercher

Pour rechercher une phrase, vous pouvez utiliser la commande Vim / ou ?

/{mot-chercher}Rechercher un mot vers l’avant. Par exemple /export, recherchera et trouvera l’instance suivante du mot “exporter”
?{mot-chercher}Rechercher un mot à l’envers. Par exemple /export, recherchera et trouvera l’instance précédente du mot “exporter”
Les raccourcis et commandes de vim pour chercher/remplacer

Après la recherche, n et N peuvent être utilisés pour rechercher respectivement les occurrences suivantes et précédentes.

nTrouvez la prochaine occurrence. A utiliser après utilisation / ou ?
NTrouver l’occurrence précédente. A utiliser après utilisation / ou ?
Les raccourcis et commandes de vim pour chercher

Supprimer du texte dans vim

Delete( d) est un opérateur dans Vim. Les opérateurs ne peuvent pas fonctionner sans mouvement et d sont donc toujours suivis d’un mouvement. Ici, le mouvement est ce qui indique à Vim ce qu’il faut supprimer.

Cela étant dit, vous pouvez combiner tous les mouvements avec d, comme ça.

dwSupprimer du caractère courant jusqu’à la fin d’un mot (espace/ponctuation/EOL)
dWSupprime du caractère courant jusqu’à la fin d’un mot (espace/EOL)
dbSupprimer du caractère courant au début d’un mot (espace/ponctuation/EOL)
dBSupprime du caractère courant au début d’un mot (espace/EOL)
diwSupprimer le mot courant
diWSupprimer le mot courant
ddSupprimer la ligne courante
di'Supprimez tout ce qui se trouve entre les guillemets simples
di"Supprimez tout ce qui se trouve entre les guillemets
di(Supprimez tout entre parenthèses
di{Supprimez tout ce qui se trouve entre les accolades
di[Supprimez tout ce qui se trouve entre crochets
xSupprimer le caractère actuel sous le curseur
XSupprimer le caractère précédent
Les raccourcis clavier et commandes vim pour supprimer du texte

Vous pouvez également répéter ces commandes en préfixant un nombre. Par exemple, vous pouvez supprimer 5 lignes avec 5dd ou d4j

Modifier le texte dans vim

Dans vim, la modification est similaire à la suppression, la seule différence est qu’après la suppression, le mode d’insertion est activé.

cwSupprimez du caractère actuel à la fin d’un mot (espace/ponctuation/EOL) puis passez en mode insertion
cWSupprimez du caractère actuel jusqu’à la fin d’un mot (espace/EOL) puis passez en mode insertion
cbSupprimez du caractère actuel au début d’un mot (espace/ponctuation/EOL) puis passez en mode insertion
ccChanger la ligne courante
cBChanger le bloc actuel
ciwChanger à l’intérieur d’un mot
ciWChanger à l’intérieur d’un mot
ci'Changez tout à l’intérieur d’une paire de guillemets simples
ci"Changez tout à l’intérieur d’une paire de guillemets doubles
ci(Changez tout à l’intérieur d’une paire de parenthèses
ci{Changez tout à l’intérieur d’une paire d’accolades
ci[Changez tout à l’intérieur d’une paire de crochets
sSupprimer le caractère actuel et passer en mode insertion
SSupprimer la ligne courante et passer en mode insertion
Les commandes pour modifier le texte sur vim

Voici les commandes de basculements de texte :

~Basculer la casse à la position actuelle du curseur
gUUMettre la ligne courante en majuscules
guuMettre la ligne courante en minuscules
5gUwPasser les 5 premiers mots en majuscules
gUap ou gU}Mettre le paragraphe en majuscules
Les commandes et raccourcis clavier de basculement de texte sur vim

Vous pouvez également utiliser gu et gU avec un mouvement. Par exemple, pour convertir 3 lignes en majuscules, vous pouvez utiliser gU3j.

Indentation du texte

>>Décale la ligne actuellement sélectionnée d’une longueur de tabulation vers la droite
<<Décale la ligne actuellement sélectionnée d’une longueur de tabulation vers la gauche
g=GDécaler le tampon courant d’une longueur de tabulation
> %Déplacez le bloc de code actuellement sélectionné vers la droite
< %Décale le bloc de code actuellement sélectionné vers la gauche
>ibDécale le contenu du bloc actuellement sélectionné vers la droite
<ibDécale le contenu du bloc actuellement sélectionné vers la gauche
Déplace le contenu d’un bloc entre crochets (<>) vers la droite
Déplacez le contenu d’un bloc entre crochets (<>) vers la gauche
Les raccourcis clavier de vim pour indenter le texte

Copier (Copier) et Coller

yyCopier la ligne courante
ywCopiez le mot actuel du curseur jusqu’à l’espace/ponctuation
yWCopiez le mot actuel du curseur jusqu’à l’espace
yiwCopiez le mot courant
yiBCopiez le bloc
yi'Copiez tout à l’intérieur d’une paire de guillemets simples
yi"Copiez tout à l’intérieur d’une paire de guillemets doubles
yi(Copiez tout à l’intérieur d’une paire de parenthèses
yi{Copiez tout à l’intérieur d’une paire d’accolades
yi[Copiez tout à l’intérieur d’une paire de crochets
pColler sous la ligne actuelle
PColler au-dessus de la ligne courante
Les commandes vim pour copier/coller du texte

Manipulation de tampon

:sp [chemin du fichier]Ouvrez le [chemin du fichier] en tant que tampon divisé horizontalement
:vps [chemin du fichier]Ouvrez le [chemin du fichier] en tant que tampon divisé verticalement
:lsAffiche une liste de tous les tampons actuellement ouverts dans Vim
:bnAffiche le contenu du prochain tampon ouvert dans la liste des tampons
:bpAffiche le contenu du tampon ouvert précédent dans la liste des tampons
Ctrl + w, puis qDivisez la fenêtre actuelle horizontalement, en affichant le tampon actuellement actif dans les deux fenêtres
Ctrl + w, puis vDivisez la fenêtre actuelle verticalement, en affichant le tampon actuellement actif dans les deux fenêtres
Ctrl + w, puis wBasculer le focus entre les tampons divisés
Ctrl + w, puis xÉchangez la position du tampon actuellement focalisé avec un tampon inactif
Ctrl + w, puis qSupprimer le tampon actuellement sélectionné
Les raccourcis clavier de vim pour manipuler les tampons

Annuler/Répéter des actions dans vim

uAnnuler la dernière action
URefaire la dernière action
:earlier 1mRevenir à 1min dans l’historique du fichier
:later 1mAllez à 1min plus loin dans l’historique du fichier
Les raccourcis clavier vim pour annuler une action

Ces commandes peuvent être répétées en préfixant un nombre. Par exemple, pour annuler les 3 dernières actions, vous pouvez utiliser 3u.

.Répète la dernière modification.
Les raccourcis clavier vim pour répéter une action

Alias

Certaines commandes couramment utilisées ont des alias.

x = dlSupprimer le caractère suivant
C = c$Modifier jusqu’à la fin de la ligne
D = d$Effacer jusqu’à la fin de la ligne
Y = yyRetourner la ligne
S = ccChanger la ligne
A = $aAjouter du texte à la fin de la ligne
s = clCaractère de substitution (suppression et insertion)
S = ccRemplacement de la ligne
Les raccourcis clavier vim pour annuler une action

Autres commandes

helpAfficher l’aide de vim
help vi_diffAfficher les différences entre vim et vi
vimtutor frOuvre le tutoriel de vim en Français
Les commandes vim

L’article +100 raccourcis clavier et commandes de vim à connaître est apparu en premier sur malekal.com.

La commande passwd sous Linux : exemples d’utilisation

16 septembre 2022 à 07:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à utiliser la commande passwd disponible sous Linux. Cette commande sert à modifier le mot de passe d'un utilisateur sous Linux, mais nous verrons qu'elle permet également de réaliser d'autres actions. C'est une commande incontournable et intégrée aux différentes distributions Linux : Debian, Ubuntu, Kali Linux, Rocky Linux, Mint, etc.

Lorsque l'on utilise la commande passwd, on agit directement sur le fichier "/etc/shadow" car ce fichier contient le hash du mot de passe des différents utilisateurs du système. Le super-utilisateur root peut modifier le mot de passe de tous les comptes, tandis qu'un utilisateur standard pourra modifier uniquement son propre mot de passe. Si un utilisateur dispose de privilèges élevés via "sudo", il pourra aussi agir sur d'autres comptes.

Au-delà de permettre de changer un mot de passe, la commande passwd sert à supprimer un mot de passe, à définir une date d'expiration pour un mot de passe, etc.

Version initiale de l'article : 12 juillet 2022

II. Modifier un mot de passe sous Linux

Tout d'abord, il faut savoir qu'en exécutant la commande passwd dans sa propre session, sans spécifier d'argument, de nom d'utilisateur, etc... On peut modifier le mot de passe de son propre compte utilisateur. Si je suis connecté avec le compte "flo" et que j'exécute la commande ci-dessous, je suis invité à changer mon mot de passe.

passwd

Ensuite, pour modifier le mot de passe d'un utilisateur spécifique, il faut utiliser cette syntaxe :

passwd1

Par exemple, si je souhaite modifier le mot de passe de l'utilisateur "it-connect", il me suffira de préciser son nom. Il conviendra de préciser "sudo" en préfixe selon le compte que l'on utilise, ou de basculer sur le compte root avec "su -" le temps de l'opération.

sudo passwd it-connect

Lorsque cette commande est exécutée, il faut saisir une première fois le nouveau mot de passe, puis une seconde fois. Le mot de passe saisit n'apparait pas à l'écran.

Commande passwd Linux

Nous pouvons en profiter pour obtenir le statut d'un compte utilisateur avec l'option "-S", comme ceci :

sudo passwd -S it-connect

Ce sont des informations que l'on peut obtenir dans le fichier "/etc/shadow". Dans cet exemple, la commande me retourne :

it-connect P 09/16/2022 0 99999 7 -1

Ce qui signifie :

  • it-connect : le nom de l'utilisateur
  • L : l'état du mot de passe, à savoir "P" si le mot de passe est valide et utilisable, "L" si le compte utilisateur est verrouillé, et "NP" si le compte n'a pas de mot de passe
  • 09/16/2022 : la date de dernière modification du mot de passe
  • 0 : l'âge minimum du mot de passe, ce qui signifie qu'on peut le changer immédiatement
  • 99999 : l'âge maximum du mot de passe (autant vous dire que l'utilisateur peut le garder très longtemps)
  • 7 : nombre de jours pour la période d'avertissement, lorsque l'expiration du mot de passe approche, avant que le compte soit verrouillé
  • -1 : nombre de jours après l'expiration d'un mot de passe, avant que le compte soit verrouillé.

III. Forcer le changement du mot de passe sous Linux

Il est possible d'indiquer qu'un mot de passe est expiré, ce qui signifie que l'utilisateur concerné devra en définir un nouveau lors de la prochaine ouverture de session. Par défaut, le mot de passe n'expire jamais pour les utilisateurs sous Linux.

Pour réaliser cette action, l'option "-e" ou "--expire" doit être utilisée, selon la syntaxe suivante :

passwd4

Par exemple, si on définit le mot de passe de l'utilisateur "it-connect" comme expiré grâce à la commande :

sudo passwd -e it-connect
passwd: password expiry information changed.

Lors de la prochaine connexion avec cet utilisateur, il sera obligatoire de changer le mot de passe. D'ailleurs, ce sera précisé que c'est suite à une décision de l'administrateur.

Vous devez changer votre mot de passe immédiatement (imposé par l’administrateur).
Changement du mot de passe pour it-connect.

IV. Âge minimum du mot de passe d'un utilisateur Linux

Avec la commande passwd, on peut définir un nombre de jours minimum avant que l'utilisateur puisse modifier son mot de passe. Autrement dit, on impose un âge minimum pour le mot de passe de cet utilisateur. C'est l'option "-n" de la commande passwd qui doit être utilisée. Voici la syntaxe à respecter :

passwd7

À titre d'exemple, on peut imposer à l'utilisateur "it-connect" de conserver son mot de passe au moins pendant 31 jours :

sudo passwd it-connect -n 31

V. Âge maximum d'un mot de passe d'un utilisateur Linux

Dans le même esprit, on peut spécifier l'âge maximum d'un mot de passe afin d'être sûr que l'utilisateur le renouvèle conformément à la politique de mots de passe de l'entreprise. Cette fois-ci, c'est l'option "-x" qui sera utilisée. Voici la syntaxe à respecter :

passwd6

À titre d'exemple, on peut imposer à l'utilisateur "it-connect" un changement de mot de passe une fois par an (365 jours) :

sudo passwd it-connect -x 365

À chaque fois, si vous rejouez la commande avec l'option "-S", vous pouvez vérifier que la modification est bien prise en compte.

VI. Conclusion

Grâce à ce tutoriel et aux différents exemples, vous êtes en mesure d'utiliser correctement la commande passwd sous Linux. La plupart du temps, on utilise cette commande pour changer le mot de passe d'un utilisateur, mais c'est bien de savoir qu'elle est capable d'effectuer d'autres actions importantes en matière de gestion des comptes.

The post La commande passwd sous Linux : exemples d’utilisation first appeared on IT-Connect.

La commande mv sous Linux : exemples d’utilisation

15 septembre 2022 à 07:45

I. Présentation

Sous Linux, la commande "mv" qui signifie "move" sert à déplacer des éléments (fichiers et dossiers) d'une source vers une destination. Cette commande sert aussi à renommer un élément. Pour faire une copie d'un fichier ou d'un dossier, on utilisera plutôt la commande cp.

C'est une commande très pratique et je dirais même qu'elle fait partie des commandes incontournables sous Linux ! C'est une commande native sur toutes les distributions, que ce soit sur Debian, Ubuntu, Rocky Linux, etc.... D'où l'intérêt de vous la présenter dans cet article à travers divers exemples. Pour ma part, je manipule sur une machine sous Debian 11.

Version initiale de l'article : 11 juillet 2012

II. Utilisation de la commande mv

A. Déplacer un fichier vers un autre dossier

Puisque la commande mv sert à déplacer des éléments, commençons par déplacer un fichier vers un autre dossier. Autrement dit, c'est comme si on faisait un "couper-coller". On commence par créer un fichier nommé "it-connect.txt" dans "/home/flo" et qui va servir de cobaye.

cd /home/flo
touch it-connect.txt

Pour déplacer le fichier it-connect.txt vers le répertoire "/tmp", on exécute :

mv it-connect.txt /tmp/

Nous pouvons aussi préciser le chemin complet :

mv /home/flo/it-connect.txt /tmp/

Commande mv - déplacer des dossiers et fichiers sous Linux

On peut voir que ça fonctionne parfaitement :

Linux - Commande mv

B. Déplacer un dossier vers un autre dossier

La commande mv peut aussi déplacer des dossiers complets, c'est-à-dire le dossier avec son contenu. Toujours dans "/home/flo", on crée un répertoire nommé "data", puis un fichier "it-connect.txt" à l'intérieur.

mkdir data
touch data/it-connect.txt

Ensuite, on déplace ce répertoire vers /tmp/ :

mv /home/flo/data/ /tmp/

Vous voyez, la syntaxe n'est pas plus compliquée. Puisqu'il s'agit d'un dossier, il y a un "/" à la fin du chemin de la source.

C. Déplacer plusieurs fichiers vers un dossier

Plutôt que d'enchaîner plusieurs fois la commande mv, on peut déplacer plusieurs fichiers en une seule fois. Commençons par créer 3 fichiers :

touch it-connect1.txt it-connect2.txt it-connect3.txt

Ensuite, on peut déplacer ces trois fichiers vers "/tmp/" comme ceci :

mv it-connect1.txt it-connect2.txt it-connect3.txt /tmp/

Pour que ce soit plus rapide à saisir, on peut utiliser le caractère wildcard ("*") pour prendre tous les fichiers correspondants à ce filtre. Ainsi, grâce à la commande ci-dessous, on cible tous les éléments dont le nom commence par "it-connect".

mv it-connect* /tmp/

D. Déplacer plusieurs dossiers vers un autre dossier

Dans le même esprit, on peut déplacer plusieurs dossiers vers un autre dossier. On peut créer deux dossiers avec mkdir :

mkdir data1 data2

Puis, on déplace ces deux dossiers vers le répertoire "/tmp/" :

mv data1/ data2/ /tmp/

E. Déplacer tout le contenu d'un dossier

Parfois, on veut déplacer tout le contenu d'un dossier, c'est-à-dire tous les fichiers qu'il contient, ainsi que tous les sous-dossiers et leurs fichiers, sans pour autant toucher au répertoire source.

Dans cet exemple, on crée un dossier nommé "data1", qui contient un fichier et un sous-dossier, qui contient lui même un fichier. L'objectif est de déplacer le contenu de "data1" vers "/tmp/".

mkdir data1
mkdir data1/photos
touch data1/it-connect.txt
touch data1/photos/logo.png

Au moment de déplacer le contenu avec la commande mv, on ne précise pas simplement "data1/", sinon on va déplacer le dossier en lui-même. Ici, on précise un astérisque après le "/" pour spécifier que c'est le contenu que l'on souhaite déplacer, puis on indique le répertoire cible.

mv data1/* /tmp/

Dans ce cas présent, le nouveau chemin d'accès du répertoire "photos" sera "/tmp/photos".

F. Déplacer un fichier si la source est plus récente

La commande mv contient différentes commandes plutôt cool... Nous allons en utiliser quelques-unes. Par exemple, l'option "-u" permet de déplacer un fichier uniquement si le fichier source est plus récent que le fichier de destination. Bien sûr, cela s'applique dans le cas où le fichier de destination existe déjà.

Voici un exemple :

mv -u /home/flo/it-connect.txt /tmp/it-connect.txt

G. Déplacer tous les fichiers d'un dossiers sauf un fichier spécifique

Avant de voir d'autres options, regardons un cas très particulier : nous souhaitons déplacer tout le contenu d'un répertoire, à l'exception d'un seul fichier. La commande mv ne dispose pas d'options pour faire une exclusion, mais on peut ruser en utilisant une autre commande... Plusieurs solutions sont possibles. Voici un exemple basé sur la commande ls.

On crée trois fichiers :

touch it-connect1.txt it-connect2.txt it-connect3.txt

Maintenant, on va tout déplacer sauf le fichier "it-connect2.txt" ! Ce qui donne :

mv $(ls --ignore=it-connect2.txt)

Ainsi, tout le contenu sera copié sauf ce fichier ! On peut ajouter d'autres exclusions les unes à la suite des autres :

mv $(ls --ignore=it-connect2.txt --ignore=it-connect1.txt) /tmp/

Commande mv avec exclusion sur un fichier

H. Renommer un fichier ou un dossier

Voyons comment renommer un élément avec la commande mv, que ce soit un fichier ou un dossier. Commençons par créer un fichier :

touch it-connect.txt

On décide de renommer le fichier "it-connect.txt" en "it-connect.txt.old". C'est comme si on déplaçait le fichier au même endroit, en changeant son nom.

mv it-connect.txt it-connect.txt.old

Exemple en image :

Renommer avec la commande mv

Pour un dossier, c'est le même principe si ce n'est que l'on retrouve le "/" à la fin du nom comme pour les cas précédents.

mkdir data2021
mv data2021/ data2022/

I. Demande de confirmation avec la commande mv

Dans le cas où il y a un conflit, c'est-à-dire que le fichier de destination existe déjà, la commande mv ne se pose pas de question : elle écrase le fichier de destination. Néanmoins, on peut ajouter l'option "-i" pour qu'une demande de confirmation soit affichée en cas de conflit.

On crée le même fichier à deux emplacements différents :

touch /tmp/it-connect.txt
touch /home/flo/it-connect.txt

Ensuite, on déplace le fichier d'un emplacement vers l'autre, en ajoutant l'option "-i".

mv -i /home/flo/it-connect.txt /tmp/it-connect.txt

La commande mv indique un message et nous demande de faire un choix :

mv : voulez-vous écraser '/tmp/it-connect.txt' ?

Ouf ! Je n'étais pas loin d'effacer un fichier critique...! Le fait d'écraser automatiquement peut être pratique, dans un script par exemple, mais cela peut aussi être dangereux donc cette option est à connaître.

Commande mv - demande de confirmation

J. Commande mv : ne pas écraser les fichiers existants

En cas de conflit, on peut faire en sorte de ne pas écraser le fichier de destination, sans avoir à le préciser manuellement. Ainsi, on inverse le mode de fonctionnement par défaut. Il suffit d'ajouter l'option "-n" :

mv -n /home/flo/it-connect.txt /tmp/it-connect.txt

Dans le cas d'un conflit, l'opération sera annulée. Aucune information ne sera précisée dans la console.

III. Conclusion

Grâce à ce tutoriel, vous avez suffisamment d'exemples pour maîtriser la commande mv sous Linux et déplacer vos fichiers et dossiers !

The post La commande mv sous Linux : exemples d’utilisation first appeared on IT-Connect.

Bash : comment stocker le résultat d’une commande dans une variable ?

15 septembre 2022 à 07:15

I. Présentation

Dans ce tutoriel, nous allons apprendre à stocker le résultat d'une commande Linux dans une variable. Cette manipulation simple est très utile lors d'écriture de scripts Bash (avec l'extension.sh) car il peut arriver que l'on ait besoin de manipuler le résultat d'une commande. Dans ce cas, on affecte le résultat de la commande à une variable, ce qui permet de l'exploiter par la suite.

Version initiale de l'article : 11 février 2012.

II. La syntaxe : affecter le résultat d'une commande à une variable

Pour stocker le résultat d'une commande dans une variable, on utilisera la syntaxe suivante :

variable=$(commande);

Ainsi, le résultat de n'importe quelle commande se retrouve dans une variable que l'on peut découper, modifier, afficher... Libre à vous de choisir le nom que vous souhaitez pour cette variable.

III. Exemple

Prenons un exemple concret. La première chose à faire, c'est déterminer la commande et vérifier sa syntaxe. Ensuite, quand la syntaxe de la commande est valide, nous pouvons faire en sorte de stocker son résultat dans une variable.

Imaginons que l'on souhaite récupérer la date d'hier sous la forme "<jour><mois>.<année>". On va pouvoir utiliser la commande date pour obtenir cette information :

date -d "1 day ago" +%d%b%Y

Ce qui retourne :

14sept.2022

C'est correct. Autre format possible : "<Année><Mois><Jour>", ce qui donne :

date -d "1 day ago" +%Y%m%d

Comme résultat :

20220914

Gardons à l'esprit que c'est le résultat de la commande "date -d "1 day ago" +%d%b%Y" que nous souhaitons stocker dans une variable. On commence par créer un fichier avec l'extension .sh et on ajoute le Shebang :

#/bin/bash

Ensuite, nous allons créer une variable nommée "Yesterday" qui contiendra le résultat de la commande évoquée précédemment.

#/bin/bash 
Yesterday=$(date -d "1 day ago" +%d%b%Y);

Il est important d'encadre la commande dans un bloc "$()", comme dans l'exemple ci-dessus.

Ensuite, nous pouvons réutiliser cette variable comme bon nous semble... Par exemple, on peut créer un dossier qui prend comme nom le contenu de cette variable :

#/bin/bash 
Yesterday=$(date -d "1 day ago" +%d%b%Y);
mkdir /home/$Yesterday

Quand on appelle la variable, il est impératif de préfixer son nom par le symbole "$" afin que le nom de la variable soit remplacé par sa valeur. Grâce à ce script, on crée un dossier dans "/home/" qui sera nommé avec la date d'hier. Ceci n'est bien sûr qu'un exemple ! A vous de jouer !

The post Bash : comment stocker le résultat d’une commande dans une variable ? first appeared on IT-Connect.

Comment configurer la date et l’heure sous Linux ?

15 septembre 2022 à 07:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer la date et l'heure sur une machine Linux, en utilisant la commande date. Cette commande native est intégrée aux différentes distributions Linux : Ubuntu, Debian, etc... Elle sert principalement à afficher la date et l'heure actuelle, ainsi qu'à effectuer la configuration de sa machine pour modifier la date et l'heure. Nous verrons que l'on peut faire aussi d'autres choses. Nous verrons également comment utiliser la commande timedatectl.

Si vous souhaitez savoir depuis combien de temps votre système Linux tourne, regardez ce tutoriel :

Version initiale de l'article : 11 janvier 2012

II. Syntaxe de la commande date

Si vous exécutez la commande "date" dans un terminal Linux sans préciser d'options, c'est la date et l'heure actuelle qui sera retournée, avec le fuseau horaire en complément. Par exemple :

date
jeu. 15 sept. 2022 11:53:56 CEST

C'est pratique lorsque l'on cherche à voir la date et l'heure locale d'une machine Linux.

Pour la suite, il va falloir utiliser plutôt ce format :

date <option> <format>

Avant de passer aux exemples, je souhaitais vous montrer comment récupérer la date selon le format "Année Mois Jour", sans espace. C'est pratique pour nommer un fichier ou une sauvegarde avec la date du jour, au format compact.

date +%Y%m%d

Cette commande retourne bien la date actuelle, dans un format réduit :

Linux date

III. Exemples d'utilisation de la commande date

A. Modifier la date et l'heure du système

Commençons par l'exemple qui fait l'objet de cet article : modifier la date et l'heure du système. L'option "--set" que l'on peut raccourcir par "-s" doit être utilisée. Pour définir le 15 septembre 2022 à 12:00:00 comme date et heure, cela donne :

date --set "15 SEP 2022 12:00:00"
ou
date -s "15 SEP 2022 12:00:00"

On peut considérer la syntaxe suivante :

date --set "<jour> <mois> <année> <heure>:<minutes>:<secondes>"

Pour le mois, il faut l'indiquer sur trois lettres, mais en se basant sur les noms anglais. Ainsi, si l'on prend l'exemple du mois de février, ce sera "FEB" pour "February", et non "FEV". En exécutant la commande "date", on peut voir que le système a bien pris en compte la modification.

Nous pouvons aussi modifier uniquement la date, ou uniquement l'heure, en précisant le format que l'on veut utiliser.

  • Définir la date au 15 septembre (09) 2022, sans affecter l'heure
date +%Y%m%d -s "20220915"
  • Définir l'heure à 12:30:00, sans affecter la date
date +%T -s "10:13:13"

B. Obtenir une date précise

La commande date sert aussi à effectuer des calculs sur les dates, de manière à obtenir une date antérieure. Non pas pour altérer l'heure du système, mais pour récupérer une autre date, ce qui peut être utile dans un script.

On peut déterminer une date spécifique en précisant l'option "-d", comme dans l'exemple ci-dessous avec le "15/09/2022" à minuit :

date -d "2022-09-15 00:00:00"
jeu. 15 sept. 2022 00:00:00 CEST
  • Les dates antérieures

Récupérer la date d'hier :

date --date="yesterday"

Bien sûr, nous pouvons stocker cette information dans une variable pour la réutiliser. L'exemple ci-dessous stocke l'information dans une variable nommée "DateHier".

DateHier=$(date --date="yesterday")

Récupérer la date 7 jours avant :

date --date="7 day ago"

Récupérer la date actuelle - 1 an :

date --date="1 year ago"
  • Les dates futures

Récupérer la date de demain :

date --date="tomorrow"

Récupérer la date actuelle + 7 jours :

date --date="7 day"

Récupérer la date actuelle + 1 an :

date --date="1 year"

C. Date de dernière modification d'un fichier

Il y a plusieurs manières d'obtenir la date de dernière modification d'un fichier, et la commande date fait partie des commandes qui permettent d'obtenir cette information. Prenons l'exemple du fichier système "/etc/hostname" qui contient le nom d'hôte :

date -r /etc/hostname

IV. L'alternative : la commande timedatectl

La commande timedatectl permet aussi de modifier la date et l'heure du système, à l'instar de la commande date. Lorsque l'on exécute cette commande, elle affiche des informations complémentaires vis-à-vis de la commande date :

timedatectl
Local time: jeu. 2022-09-15 13:41:18 CEST
Universal time: jeu. 2022-09-15 11:41:18 UTC
RTC time: jeu. 2022-09-15 11:41:18
Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Il y a l'heure locale, l'heure universelle, mais aussi le fuseau horaire (Time zone), l'état du service NTP pour la synchronisation de l'heure (NTP service), etc.

Linux timedatectl

A. Changer la date et l'heure avec timedatectl

Pour définir une nouvelle date, on utilise la syntaxe suivante :

timedatectl set-time YYYY-MM-DD

Où "YYYY" correspond à l'année, "MM" au mois et "DD" au jour. Pour le 15 septembre 2022, cela donne :

timedatectl set-time 2022-09-15

On peut aussi modifier l'heure en même temps :

timedatectl set-time YYYY-MM-DD HH:MM:SS

Où "HH" correspond à l'heure, "MM" aux minutes et "SS" aux secondes. Au moment de changer la date et l'heure, si vous obtenez le message "Failed to set time: Automatic time synchronization is enabled", cela signifie que la synchronisation NTP est activée. Pour gérer la synchronisation NTP :

# Désactiver la synchronisation NTP
timedatectl set-ntp 0
# Activer la synchronisation NTP
timedatectl set-ntp 1

Dans le cas où la synchronisation NTP est activée, il faut veiller à configurer un serveur NTP que l'on va utiliser comme source de temps pour se synchroniser. Sinon, cela n'a pas réellement d'intérêt... La configuration s'effectue dans le fichier "/etc/systemd/timesyncd.conf".

B. Changer de fuseau horaire avec timedatectl

Si le fuseau horaire de votre machine ne vous convient pas, vous pouvez le changer. Tout d'abord, vous pouvez lister les différents fuseaux horaires disponibles :

timedatectl list-timezones

Ensuite, il faut repérer la valeur dans la - longue - liste. Une fois que c'est fait, on peut changer le fuseau horaire. Voici un exemple pour utiliser le fuseau horaire "Europe/Paris" :

timedatectl set-timezone "Europe/Paris"

V. Conclusion

Grâce à ce tutoriel, vous êtes capable de gérer la date et l'heure sous Linux, avec les commandes date et timedatectl !

The post Comment configurer la date et l’heure sous Linux ? first appeared on IT-Connect.

Linux : comment activer le MFA sur un accès SSH ?

15 septembre 2022 à 10:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer l'authentification multi-facteurs (MFA) sur l'accès SSH d'un serveur Linux afin de renforcer l'authentification : en complément de l'identifiant et du mot de passe, un code de vérification à usage unique devra être saisi pour s'authentifier sur le serveur.

Le MFA est compatible avec l'authentification par identifiants (utilisateur / mot de passe), mais aussi avec l'authentification par clés.

Sur le serveur Linux, nous allons devoir installer et configurer Google PAM Authenticator, correspondant au paquet "libpam-google-authenticator" (page du projet). Du côté de votre smartphone, vous pouvez utiliser l'application de génération de code de votre choix : FreeOTP, Microsoft Authenticator, Google Authenticator, etc... Il y a du choix !

Cette configuration s'applique à différentes distributions, notamment Debian, Ubuntu, Fedora, Rocky Linux, etc... Pour ma part, j'utilise une machine Debian 11 pour cette démonstration.

II. Installation et configuration de Google PAM Authenticator

Connectez-vous sur votre serveur Linux, mettez à jour le cache des paquets et installez le paquet mentionné en introduction :

sudo apt-get update
sudo apt-get install libpam-google-authenticator

SSH MFA - Installation de libpam-google-authenticator

Une fois l'installation effectuée, nous pouvons attaquer la configuration du module. Ceci va nécessiter d'utiliser votre smartphone avec votre application OTP. Exécutez cette commande :

google-authenticator

Répondez "y" à la première question pour qu'un QR code soit généré. Ce code doit être scanné avec votre application OTP, à partir de votre smartphone.

SSH MFA - QR Code de Google

Sous le QR code, il y a la question "Enter code from app" : saisissez le code affiché sur votre smartphone, et validez, afin de vérifier que cela fonctionne correctement. Notez également les codes d'urgence en lieu sûr, dans votre gestionnaire de mots de passe préféré, par exemple. Ces codes sont à utiliser uniquement si vous avez un problème avec l'application OTP sur votre smartphone.

SSH MFA - Code de secours

Ensuite, il faut répondre à 4 questions pour affiner la configuration. Pour que la configuration soit sécurisée (protection contre certaines attaques), il est nécessaire de répondre "y" donc "oui" à l'ensemble de ces questions. Par exemple, cela va imposer une limite pour les tentatives de connexion : 3 tentatives toutes les 30 secondes.

SSH MFA - Configuration de Google PAM Authenticator

La configuration de Google PAM est terminée ! Passons à la suite.

III. Activer le MFA sur la connexion SSH

Maintenant, nous devons configurer le module d'authentification de Linux et SSH pour qu'ils s'appuient sur Google PAM afin d'activer le MFA. Commencez par modifiez ce fichier :

sudo nano /etc/pam.d/sshd

Ajoutez cette ligne à la fin du fichier et enregistrez :

auth required pam_google_authenticator.so

SSH MFA - Configuration de PAM

Si vous souhaitez autoriser la connexion sans MFA, par exemple pour un utilisateur pour lequel le MFA n'est pas configuré, ajoutez  cette option :

auth required pam_google_authenticator.so nullok

Ensuite, c'est le serveur SSH en lui-même qu'il faut configurer. Ouvrez le fichier de configuration de SSH :

sudo nano /etc/ssh/sshd_config

Recherchez l'option "ChallengeResponseAuthentication" est définissez là sur "yes" à la place de "no".

ChallengeResponseAuthentication yes

Linux - Activer le MFA dans SSH

Pour utiliser le MFA avec l'authentification par clés (ce qui suit n'est pas utile pour une authentification par login et mot de passe), la configuration est un peu différente... Car, en plus de l'option que nous venons d'activer, il faut ajouter cette option :

AuthenticationMethods publickey,keyboard-interactive

Bien sûr, cela vient s'ajouter aux lignes pour désactiver l'authentification par mot de passe et pour activer la méthode basée sur une clé publique :

PubkeyAuthentication yes
PasswordAuthentication no

Fermez le fichier et redémarrez le service SSH pour appliquer les changements :

sudo systemctl restart sshd

Il est temps de tester !

IV. SSH : tester la connexion MFA

À partir d'une machine distante, initiez une connexion SSH vers votre serveur sur lequel le MFA est actif, et connectez-vous avec l'utilisateur pour lequel nous venons d'activer le MFA. Et là, surprise, une nouvelle étape nommée "Verification code" s'affiche ! C'est à ce moment-là qu'il faut ouvrir l'application de génération de code sur votre smartphone pour obtenir un code et le saisir.

Linux - Tester la connexion SSH avec le MFA

Suite à cette connexion, dans le journal "/var/log/auth.log", vous verrez une ligne comme celle-ci :

sshd(pam_google_authenticator)[1192687]: Accepted google_authenticator for flo

Dans le cas où un mauvais code est saisi, il y aura également une entrée dans les logs pour notifier cette tentative. Cet événement est intéressant et peut indiquer un signe de compromission, car il indique que quelqu'un connaît le nom d'utilisateur et le mot de passe, mais qu'il bloque sur le second facteur d'authentification.

Maintenant, c'est à vous de configurer vos serveurs !

The post Linux : comment activer le MFA sur un accès SSH ? first appeared on IT-Connect.

sources.list : un fichier indispensable pour déclarer les sources de paquets sous Debian

13 septembre 2022 à 07:15

I. Présentation

Dans ce tutoriel, nous allons étudier et manipuler le fichier "sources.list" d'une machine sous Debian ou Ubuntu. Mais au fait, qu’est-ce que le fichier « sources.list » ?

Ce fichier se situant dans « /etc/apt/sources.list » est un document texte référençant toutes les sources utilisées par l’utilitaire APT pour télécharger les paquets. Par défaut, des dépôts sont déjà renseignés dans ce fichier, mais vous pouvez ajouter d'autres sources (notamment dans le dossier "/etc/apt/sources.list.d/"). Grâce aux entrées ajoutées par défaut, quand on effectue "apt-get install <nom du paquet>", on peut télécharger et installer un paquet s'il est disponible dans les dépôts officiels pour la version actuelle du système. Pour fonctionner, APT a besoin d'une liste de sources de paquets.

Version initiale de l'article : 5 octobre 2011.

II. La syntaxe du fichier /etc/apt/sources.list

Le fichier "/etc/apt/sources.list" est le référentiel principal sur lequel s'appuie le gestionnaire APT pour télécharger les paquets. Néanmoins, ce n'est pas le seul fichier utilisé par le système puisqu'il y a le répertoire "/etc/apt/sources.list.d/" qui contient aussi d'autres fichiers pouvant permettre de charger d'autres sources (faisant références à des dépôts supplémentaires). C'est intéressant afin d'éviter de modifier le fichier principal, bien que ce soit parfois nécessaire.

Note : Les fichiers à l'intérieur du répertoire "/etc/apt/sources.list.d/" doivent utiliser l'extension ".list".

La bonne pratique convient d'utiliser le fichier "/etc/apt/sources.list" pour les dépôts officiels et d'utiliser le répertoire "sources.list.d" pour les autres dépôts.

Sur une machine Debian 11, voici le contenu du fichier /etc/apt/sources.list :

cat /etc/apt/sources.list

Debian - Fichier sources.list

On peut voir que ce fichier utilise une syntaxe particulière, mise en évidence sur l'exemple ci-dessus grâce aux différentes couleurs. Pour être plus précis, on peut déterminer la syntaxe de ce fichier comme suit :

deb http://<url du dépôt>/<répertoire d'accès> <archive> <composant>

Prenons cette ligne pour exemple :

deb http://ftp.fr.debian.org/debian/ bullseye main

On peut dire qu'elle définit la source de paquets correspondante à l'adresse "http://ftp.fr.debian.org/debian/" sur le serveur "ftp.fr.debian.org", en utilisant l'archive "bullseye" qui est le nom de code de Debian 11 (on peut considérer qu'ici on indique le nom de la distribution), et en ciblant le composant "main".

Cette ligne commence par "deb" tandis que d'autres lignes commencent par "deb-src". Il s'agit du type d'archive. Voici l'explication fournie sur le wiki de Debian : "Le premier mot sur chaque ligne, deb ou deb-src, indique le type d'archive. Deb indique que l'archive contient des paquets binaires (deb) qui sont les paquets précompilés que nous utilisons généralement. Deb-src indique les paquets sources qui sont les programmes Linux originaux sources plus le fichier de contrôle de Debian (.dsc) et le diff.gz contenant les changements nécessaires pour l'empaquetage du programme."

Pour le champ "archive", il faut savoir que :

  • Dans le cas d'une machine Debian 10, on verra "buster" à la place de "bullseye", car c'est le nom de code de cette distribution
  • D'autres valeurs sont possibles comme "oldoldstable", "oldstable" (précédente version stable), "stable", "testing", "unstable" (sid)
  • Les mises à jour de sécurité sont distribuées par l'intermédiaire d'une archive spécifique : <nom de la distribution>-security"
  • Pour utiliser un paquet qui sera disponible dans la prochaine version de Debian (testing) sur sa distribution stable actuelle, on doit cibler utiliser la syntaxe "<nom de la distribution>-backports" - C'est à connaître, car dans certains cas, on a recourt à cette méthode

Pour le champ "composant", il faut savoir :

  • main : correspond à tous les paquets disponibles sur cette version de Debian, et il s'agit exclusivement de paquets libres qui respectent les principes de Debian
  • contrib : correspond à des paquets libres, mais liés à des paquets non libres
  • non-free : correspond à des paquets non libres, c'est-à-dire des paquets propriétaires ou avec une licence d'utilisation stricte, donc on sort du cadre du "logiciel libre"

Note : un dépôt est également appelé repository en anglais.

Pour éditer le contenu du fichier sources.list, il convient de bénéficier des autorisations "sudo" (ou d'utiliser le compte "root") et d'utiliser un éditeur de texte (nano, vi, etc.).

III. Le dossier /etc/apt/sources.list.d/

Comme je le disais, le répertoire "/etc/apt/sources.list.d" peut contenir d'autres fichiers dans le but de déclarer des dépôts non officiels, c'est-à-dire qui ne sont pas liés à Debian directement, mais qui permettent de récupérer des paquets pour Debian. C'est le cas de CrowdSec, Docker, etc...

Par exemple, pour installer CrowdSec sur Debian, on ajoute le fichier suivant :

/etc/apt/sources.list.d/crowdsec_crowdsec.list

Ce fichier contient le contenu ci-dessous, qui reprend les principes évoqués précédemment. Toutefois, il est à noter la présence de la clé GPG qui sert à vérifier la signature des paquets :

deb [signed-by=/usr/share/keyrings/crowdsec_crowdsec-archive-keyring.gpg] https://packagecloud.io/crowdsec/crowdsec/debian/ bullseye main
deb-src [signed-by=/usr/share/keyrings/crowdsec_crowdsec-archive-keyring.gpg] https://packagecloud.io/crowdsec/crowdsec/debian/ bullseye main

IV. Mettre à jour la liste des paquets

Lorsque vous ajoutez un nouveau dépôt dans le fichier "sources.list" (ou dans "sources.list.d"), il est important de mettre à jour le cache du gestionnaire APT. Sinon, il ne prendra pas en compte votre nouveau dépôt ou le changement que vous venez d'effectuer pour rechercher un paquet. Pour cela, exécutez la commande suivante :

sudo apt-get update

Sachez que la commande "apt-get update" ira lire le fichier principal ainsi que les fichiers ".list" situés dans le répertoire "sources.list.d".

V. Les commandes apt-cache et apt-key

Pour finir, sachez qu'il y a deux commandes supplémentaires à connaître pour visualiser la configuration actuelle de sa machine. Tout d'abord, la commande ci-dessous permet de visualiser la liste des dépôts déclarés et la priorité associée à chaque fois.

apt-cache policy

Debian - apt-cache policy - Exemple

Enfin, la commande ci-dessous permet d'afficher la liste des clés GPG déclarées sur votre système avec plusieurs informations, dont la date d'expiration et l'émetteur.

apt-key list

VI. Conclusion

Le fichier sources.list est un fichier essentiel sous Debian et même si on ne le modifie pas tous les jours, c'est important de savoir comment il fonctionne et de connaître son rôle au sein du système. Vous l'aurez compris, il est indispensable au bon fonctionnement du gestionnaire de paquets APT.

The post sources.list : un fichier indispensable pour déclarer les sources de paquets sous Debian first appeared on IT-Connect.

Retbleed : une baisse des performances de 70% sur les VM Linux sous VMware ESXi

13 septembre 2022 à 09:21

VMware alerte ses utilisateurs de la solution VMware ESXi sur la baisse des performances constatées sur les machines virtuelles avec le noyau Linux 5.19. Cette baisse peut atteindre 70% lorsque les mesures d'atténuation contre la faille de sécurité Retbleed sont activées.

Chez VMware, l'équipe chargée d'analyser les performances a constaté une baisse importante sur les machines virtuelles ESXi allant jusqu'à 70% sur le compute, 30% sur le réseau et 13% sur le stockage. Ces chiffres sont le résultat de la comparaison des performances entre une VM Linux avec le noyau 5.18 et une VM Linux avec le noyau 5.19. Cette dégradation des performances très importante est directement liée à la vulnérabilité "Retbleed" et à la mise en place des mesures d'atténuation pour se protéger contre cette faille de sécurité.

VMware a constaté qu'en désactivant les mesures d'atténuation liées à la vulnérabilité Retbleed, cela a rétabli les performances de la VM Linux. Pour être plus précis, ceci implique de configurer l'option "spectre_v2=off" dans les paramètres de démarrage du noyau. Ce paramètre se gère sur la VM Linux en elle-même. Néanmoins, le fait de retirer cette sécurité expose la machine à des attaques, en fonction du modèle de processeur (voir ci-dessous).

Qu'est-ce que la vulnérabilité Retbleed ?

Découverte en juillet 2022, la faille de sécurité Retbleed touche les processeurs et elle permet à un attaquant d'extraire des informations sensibles, comme le hash du mot de passe root, par exemple. En fait, cette vulnérabilité est liée à la célèbre faille Spectre et elle permet de contourner Retpoline, une solution visant à protéger des attaques spectres de type 2. On peut dire que Retbleed est une faille de type Spectre.

Au niveau des processeurs impactés par Retbleed, il y a les modèles Intel Core de la génération 6 (Skylake - 2015) à la génération 8 (Coffee Lake - 2017), ainsi que les processeurs AMD Zen 1, Zen 1+ et Zen 2 sortis entre 2017 et 2019. Autant vous dire qu'il n'est pas rare de croiser des serveurs avec ces générations de processeurs.

Ici, c'est l'exemple de VMware qui est cité, mais c'est certain qu'il y a un impact sur les performances sur les autres plateformes.

Source

The post Retbleed : une baisse des performances de 70% sur les VM Linux sous VMware ESXi first appeared on IT-Connect.

VMware: 70% drop in Linux ESXi VM performance with Retbleed fixes

12 septembre 2022 à 17:33
VMware is warning that ESXi VMs running on Linux kernel 5.19 can have up to a 70% performance drop when Retbleed mitigations are enabled compared to the Linux kernel 5.18 release. [...]

Comment utiliser la commande xargs (avec des exemples)

11 septembre 2022 à 09:54

Certaines commandes Linux prennent les entrées à la fois depuis l’entrée standard (stdin) et en tant qu’argument de ligne de commande. Cependant, d’autres sont conçues pour ne prendre en compte que l’entrée en tant qu’argument. Pour pouvoir traiter l’entrée standard, ces commandes Linux doivent utiliser la commande xargs.

La commande xargs permet cela et donc d’enchaîner des commandes Linux, par exemple, combiner find avec rm ou mv.

Dans ce tutoriel, je vous montre comment utiliser la commande xargs avec de nombreux exemples.

Comment utiliser la commande xargs (avec des exemples)

A quoi sert la commande xargs

Tous les utilitaires Linux standard ont trois flux de données qui leur sont associés. Il s’agit du flux d’entrée standard (stdin), du flux de sortie standard (stdout) et du flux d’erreur standard (stderr).

Ces flux fonctionnent avec du texte. Nous envoyons des entrées (stdin) à une commande en utilisant du texte, et la réponse (stdout) est écrite dans la fenêtre du terminal sous forme de texte. Les messages d’erreur sont également écrits dans la fenêtre du terminal sous forme de texte (stderr).

Bien que toutes les commandes Linux disposent des trois flux standard, elles n’acceptent pas toutes le stdout d’une autre commande comme entrée dans leur stdin. Cela signifie que vous ne pouvez pas leur envoyer de données par pipe.

La commande xargs prend l’entrée standard et la convertit en argument de commande pour une autre commande. Cette fonctionnalité est particulièrement utile dans la gestion des fichiers, où xargs est utilisée en combinaison avec rm, cp, mkdir et d’autres commandes similaires.

Pour bien comprendre, utilisations l’option -1 de la commande ls qui permet d’afficher une liste de fichiers en colonne :

ls -1 *.txt

Si on pipe la commande avec xargs, on obtient alors un flux de texte :

ls -1 *.txt|xargs

Comment utiliser la commande xargs avec des exemples

Utiliser xargs avec wc

Voici un exemple d’utilisation basique de xargs avec la commande wc.
Cette dernière  permet de compter le nombre de lignes, de mots, de caractères et d’octets de chaque fichier donné ou d’entrée standard et d’imprimer le résultat.

ls *.txt | xargs wc

Cela permet d’utiliser wc pour compter facilement les mots, les caractères et les lignes dans plusieurs fichiers.

Voici les explications :

  • ls liste les fichiers *.txt et passe la liste à xargs
  • xargs transmet les noms de fichiers à wc
  • wc traite les noms de fichiers comme s’il les avait reçus en tant que paramètres de ligne de commande
Comment utiliser la commande xargs avec des exemples

Combiner xargs avec find

La commande find précède souvent xargs dans un pipeline. Utilisez-la pour fournir une liste de fichiers pour un traitement ultérieur par xargs. La syntaxe ressemble à ceci :

find <emplacement> -name "<terme à chercher>" -type f | xargs <commande>

L’exemple ci-dessus montre l’utilisation de la commande find pour trouver tous les fichiers portant l’extension .sh. La liste des fichiers est ensuite envoyée à xargs, qui utilise la commande rm pour les supprimer.

Cependant, xargs n’inclut pas automatiquement les fichiers qui contiennent des espaces vides dans leurs noms. Pour inclure ces fichiers également, utilisez l’option -print0 pour find, et l’option -0 pour xargs :

find [location] -name "<terme à chercher>" -type f -print0 | xargs -0 <commande>

Par exemple en combinant find et la commande rm afin de supprimer les fichiers avec l’extension txt :

find . -name "*txt" -type f -print0| xargs -0 rm -f

Combiner xargs avec grep

Utilisez xargs avec la commande grep pour rechercher une chaîne dans la liste de fichiers fournie par la commande find.

find . -name '<terme à chercher>' | xargs grep '<mot à trouver dans les fichiers>'

L’utilisation de la commande grep avec xargs pour rechercher des textes dans les fichiers
L’exemple ci-dessous a recherché tous les fichiers avec l’extension .txt et les a transmis à xargs, qui a ensuite exécuté la commande grep sur ces fichiers.

find . -name '<terme à chercher>' | xargs grep '<mot à trouver dans les fichiers>'
Comment utiliser la commande xargs avec des exemples

Utiliser xargs avec de multiples commandes

Pour exécuter plus d’une commande avec xargs, utilisez l’option -I. La syntaxe est la suivante :

[commande entrée] | xargs -I % sh -c '[commande1] %; [commande2] %'

Par exemple, la commande suivante permet de créer une série de répertoire à partir d’un fichier texte.
La commande cat liste le contenu du fichier texte et la transmet à xargs que l’on peut utiliser dans une variable %.

cat repertoire.txt |xargs -I % sh -c 'echo %; mkdir %'
Comment utiliser la commande xargs avec des exemples

Lire le contenu d’un fichier

Comme mentionné précédemment, xargs lit l’entrée standard. Utilisez l’option -a pour lire le contenu d’un fichier à la place.

xargs -a <fichier>

Créer un fichier archive tar avec xargs

Comme mentionné précédemment, xargs lit l’entrée standard. Utilisez l’option -a pour lire le contenu d’un fichier à la place.

find <emplacement> -name "<terme à chercher>" -type f -print0 | xargs -0 tar -cvzf <nom fichier archive tar-gz>

Imprimer la commande dans la console

Pour voir les commandes exécutées par xargs dans la sortie standard, utilisez l’option -t.

[commande entrée] | xargs -t [commande]

Par exemple pour créer des répertoires en fournissant la liste via la commande echo :

echo 'repertoire1 repertoire2 repertoire3'|xargs -t mkdir
Comment utiliser la commande xargs avec des exemples
[commande entrée] | xargs -p [commande]

Approuver l’exécution de la commande xargs

Certaines opérations de xargs, comme la suppression de fichiers et de dossiers, sont irréversibles. Pour contrôler l’exécution de ces commandes, utilisez l’option -p.

[commande entrée] | xargs -p [commande]

Par exemple, la commande rm sans l’option -f demande une confirmation :

echo "fichier.txt"|xargs -p rm
Comment utiliser la commande xargs avec des exemples

L’utilisation de l’option -p avec xargs pour approuver l’exécution des commandes
Lorsque vous exécutez une commande avec l’option -p, xargs affiche une ligne de confirmation avant de l’exécuter. Tapez y pour continuer, ou n pour annuler l’opération.

Limiter la sortie par ligne

Il est parfois nécessaire de contrôler le nombre d’arguments que xargs prend en même temps. Effectuez cette action en utilisant l’option -n suivie du nombre d’arguments auxquels vous limitez xargs :

[commande entrée] | xargs -n <nombre> [commande]

Dans l’exemple ci-dessous, xargs prend la chaîne de la commande echo et la divise en trois. Ensuite, il exécute un autre echo pour chacune des parties :

echo "1 2 3 4 5 6 7 8 9"|xargs -n 4
Comment utiliser la commande xargs avec des exemples

Spécifier le délimiteur

Le délimiteur par défaut de xargs est un espace vide. Pour modifier le délimiteur par défaut, utilisez l’option -d suivie d’un caractère unique ou d’un caractère d’échappement tel que n (une nouvelle ligne).

[commande entrée] | xargs -d <nouveau délimiteur>|xargs [commande]

Dans l’exemple ci-dessous, la commande xargs demande au système d’utiliser * comme délimiteur et d’appliquer mkdir à chacun des arguments obtenus.

echo "repertoire1*repertoire2*repertoire3"|xargs -d*|xargs mkdir
Comment utiliser la commande xargs avec des exemples

Supprimer tous les fichiers sauf un type

De même vous pouvez supprimer tous les fichiers sauf un type particulier avec l’option -not de la commande find.

find . -type f -not -name "*.txt" -print0 | xargs -0 -I {} rm -v {}
  • -type f : cherche tous les fichiers
  • mais avec l’extension *.txt
  • Puis on envoie le tout à xargs qui va supprimer les fichiers tout en affichant la liste grâce à l’option-0

Lister tous les comptes d’utilisateurs Linux sur le système

Utilisez xargs pour organiser la sortie des commandes, comme cut. Considérez l’exemple suivant :

cut -d : -f1 < /etc/passwd | sort | xargs

La commande cut accède au fichier /etc/passwd et utilise le délimiteur : pour couper le début de chaque ligne du fichier. La sortie est ensuite acheminée vers sort, qui trie les chaînes reçues, et enfin vers xargs qui les affiche :

Comment utiliser la commande xargs avec des exemples

L’article Comment utiliser la commande xargs (avec des exemples) est apparu en premier sur malekal.com.

Comment utiliser les redirections d’entrée, sortie et pipe de Linux

11 septembre 2022 à 09:53

La redirection des entrées-sorties est l’une des plus importantes fonctionnalités du shell Linux qui a donné à la ligne de commande Linux sa flexibilité et la possibilité d’exister encore après toutes ces années.

Les redirections des entrées/sorties et pipe sont un concept basé sur l’efficacité pour collecter et traiter des données volumineuses, vérifier et configurer les fichiers système, et aussi ajouter des données à un fichier existant ou à un nouveau fichier. Le terme de redirection signifie qu’un flux de données est redirigé d’un ou plusieurs processus vers un fichier ou un autre processus.

Dans ce tutoriel je vous guide dans le concept des redirections d’entrée et de sortie et comment utiliser ces redirections sur Linux.

Comment utiliser les redirections d'entrée, sortie et pipe de Linux

Qu’est-ce qu’une redirection ?

Les redirections sont en fait un mécanisme de communication inter-processus fourni par Linux pour permettre aux programmes (processus) et aux fichiers de communiquer entre eux, en transférant la sortie d’un programme/fichier vers l’entrée d’un autre programme/fichier.

Dans Linux, les redirections sont matérialisées par des opérateurs < >.
L’opérateur de redirection est essentiellement un tampon ou un bloc de données qui ont deux descripteurs de fichiers ; l’un est utilisé pour la lecture, et l’autre pour l’écriture.
Comme mentionné dans le paragraphe précédent, les symboles <> sont les opérateurs de redirection ; le symbole supérieur à > est utilisé pour envoyer la sortie d’un programme (processus) vers un fichier en entrée.
De l’autre, le symbole inférieur à < est utilisé pour envoyer la sortie d’un fichier à un programme (processus) en entrée.

  • La sortie standard utilisant le symbole > : la sortie de l’opérande de gauche est envoyée à l’opérande de droite, donc l’opérande de droite prend l’entrée à partir de l’extrémité de lecture du symbole >.
  • Sortie standard utilisant le symbole < : La sortie de l’opérande de droite est envoyée à l’opérande de gauche, donc l’opérande de gauche prend l’entrée de l’extrémité d’écriture du symbole <.
Sortie standard > Entrée standard
Entrée standard < Sortie standard

Ce qui nous donne :

  • commande < fichier d'entrée : Lit un fichier entrée
  • commande > fichier de sortie : Créer/Ecrit un fichier en sortie
  • commande >> fichier de sortie : Modifier un fichier en sortie

Vous trouverez plus d’explications avec des exemples plus bas ce guide.

Stdin, stdout et stderr

Lorsque vous exécutez une commande Linux, il y a trois flux de données qui jouent un rôle dans cette commande :

  • L’entrée standard (stdin) est la source des données d’entrée. Par défaut, stdin est tout texte saisi au clavier. Son ID de flux est 0.
  • La sortie standard (stdout) est le résultat de la commande. Par défaut, elle est affichée à l’écran. Son ID de flux est 1.
  • L’erreur standard (stderr) est le message d’erreur (le cas échéant) produit par les commandes. Par défaut, stderr est également affiché à l’écran. Son ID de flux est 2.
Les entrées stdin, sortie stdout et erreur standard stderr
Entrée/SortieFichierNuméroDescription
STDIN/dev/stdin0Entrée Standard (Standard Input)
En général le clavier
STDOUT/dev/stdout1Sortie Standard (Standard output)
En général l’écran
STDERR/dev/stdout2Standard error
Les entrées et sorties Stdin, stdout et stderr de Linux

Les flux de sorties comportent des numéros.
Lorsque vous utilisez le symbole de redirection de sortie >, il signifie en fait 1>. En d’autres termes, vous dites que le flux de données avec l’ID 1 est sorti ici.

Lorsque vous devez rediriger le stderr, vous utilisez son ID comme 2> ou 2>>. Cela signifie que la redirection de sortie concerne le flux de données stderr (ID 2).

A retenir :

  • Il existe trois flux de données. Un flux d’entrée, stdin (0) et deux flux de données de sortie, stdout (1) et stderr (2)
  • Le clavier est le périphérique stdin par défaut et l’écran est le périphérique de sortie par défaut
  • La redirection de la sortie est utilisée avec > ou >> (pour le mode append)
  • La redirection des entrées est utilisée avec <. Le stderr peut être redirigé à l’aide de 2> ou 2>>
  • Le stderr et le stdout peuvent être combinés en utilisant 2>&1

Comment utiliser la redirection de sortie dans Linux

Rediriger la sortie standard vers un fichier

La redirection de la sortie stdout d’une commande vers un fichier se fait de la manière suivante :

commande > fichier
Comment utiliser la redirection de sortie dans Linux

Par exemple pour rediriger le résultat de la commande ls vers un fichier sortie.txt :

ls > sortie.txt
Comment utiliser la redirection de sortie dans Linux

Le fichier de sortie vers lequel le stdout est redirigé est créé avant l’exécution de la commande prévue. Pourquoi ? Parce qu’il faut que la destination de sortie vers laquelle la sortie sera envoyée soit prête.
Si le fichier est déjà existant alors cela va écraser son contenu (clobber).
Si vous désirez modifier le contenu du fichier, il faut doubler l’opérateur > :

ls >> sortie.txt
Comment utiliser la redirection de sortie dans Linux

La sortie de la commande va s’ajouter à la fin du fichier.

Rediriger l’entrée standard vers un fichier

Vous pouvez utiliser la redirection stdin pour transmettre le contenu d’un fichier texte à une commande comme celle-ci :

commande < fichier
Comment utiliser la redirection de sortie dans Linux

Ce n’est pas que la redirection stdin soit complètement inutile. Certaines commandes en dépendent. Prenez la commande tr par exemple. Cette commande peut faire beaucoup de choses, mais dans l’exemple ci-dessous, elle convertit le texte d’entrée des minuscules en majuscules :

tr a-z A-Z < fichier.txt

En fait, il est conseillé d’utiliser stdin plutôt que pipe, notamment pour éviter l’utilisation inutile de la commande cat.

Par exemple, beaucoup de personnes utiliseraient l’exemple ci-dessus avec cat et ensuite utiliseraient tr sur celui-ci. Franchement, il n’y a pas besoin d’utiliser cat ici.

cat fichier.txt | tr a-z A-Z
Comment utiliser la redirection de sortie dans Linux

Voici un autre exemple où on envoie la sortie de fichier.txt à la commande head.

head < fichier.txt
cat fichier.txt|head

La boucle while du shell Linux utilise aussi la redirection d’entrée.
Ci-dessous, la boucle while lit ligne par ligne le contenu du fichier “entree.file” envoyé en entrée.

while read -r ligne;
do
   echo "$ligne" ;
done < entree.file

Comment utiliser les redirections d’erreur (stderr) sur Linux

Rediriger la sortie standard d’erreur vers un fichier

Dans Linux, les commandes retournent des messages d’erreurs lorsqu’elle ne parvienne pas à effectuer l’action demandée.
Par exemple, si vous lister un fichier qui n’existe pas avec ls, ce dernier retourne un message d’erreur :

ls kikoolol.txt
ls: impossible d'accéder à 'kikoolol.txt': Aucun fichier ou dossier de ce type

Cette erreur s’affiche dans une sortie spécifique nommée stderr.

Il est tout à fait possible de rediriger la sortie standard d’erreur Linux vers un fichier.
Pour cela, on utilise l’opérateur 2>.
Par exemple ci-dessous, on redirige le message d’erreur vers erreur.txt

ls kikoolol.txt 2> erreur.txt
cat erreur.txt 
ls: impossible d'accéder à 'kikoolol.txt': Aucun fichier ou dossier de ce type
Comment utiliser les redirections d'erreur (stderr) sur Linux

On peut combiner une redirection de la sortie standard et de la sortie d’erreur dans une même commande.
Voici comment faire :

ls -l demo.txt kikoolol.txt > sortie.txt 2> erreur.txt
cat sortie.txt 
-rw-rw-r-- 1 mak mak 7 sept.  9 13:22 demo.txt
cat erreur.txt 
ls: impossible d'accéder à 'kikoolol.txt': Aucun fichier ou dossier de ce type
Comment utiliser les redirections d'erreur (stderr) sur Linux

Dans l’exemple ci-dessus, la commande ls essaie d’afficher deux fichiers.
Pour un fichier, elle obtient un succès et pour l’autre, elle obtient une erreur. Donc ce que j’ai fait ici est de rediriger le stdout vers ouput.txt (avec >) et le stderr vers erreur.txt (avec 2>).

La redirection 2>&1 de Linux

Une autre façon, et c’est celle qui est préférée, est d’utiliser l’opérateur 2>&1.
Ce qui peut être traduit grossièrement par “rediriger stderr vers la même adresse que stdout”.

Reprenons l’exemple précédent et utilisons cette fois-ci 2>&1 pour rediriger stdout et stderr vers le même fichier.

ls -l demo.txt kikoolol.txt > sortie.txt 2>&1
cat sortie.txt 
ls: impossible d'accéder à 'kikoolol.txt': Aucun fichier ou dossier de ce type
-rw-rw-r-- 1 mak mak 7 sept.  9 13:22 demo.txt

Gardez à l’esprit que vous ne pouvez pas utiliser 2>>&1 en pensant l’utiliser en mode append. 2>&1 passe déjà en mode append.

Comment utiliser les redirections d'erreur (stderr) sur Linux

Vous pouvez également utiliser 2> en premier et ensuite utiliser 1>&2 pour rediriger stdout vers le même fichier que stderr. En fait, c’est “>&” qui redirige un flux de données vers un autre.

Comment utiliser la redirections entre les commandes avec pipe

Un pipe sous Linux (tube) est simplement une barre verticale sur votre clavier. Il est utilisé pour considérer la commande qui se trouve à sa gauche comme une entrée pour la commande qui se trouve à sa droite.
Avec la redirection par pipe, vous envoyez la sortie standard d’une commande vers l’entrée standard d’une autre commande.

commande1 | commande2 | commande3
Comment utiliser la redirections entre les commandes avec pipe

Par exemple, on liste les fichiers texte avec la commande ls puis on envoie le résultat à la commande wc qui va compter le nombre de ligne données par ls.
Ensuite on redirige le résultat de la commande wc dans le fichier compter.txt.
Cela permet donc de compatibiliser le nombre de fichier texte dans un dossier.

ls *.txt | wc -l > compter.txt
Comment utiliser la redirections entre les commandes avec pipe
IMPORTANT : Pour que cela fonctionne, il faut que la commande prenne en compte son entrée standard.
Ce n’est pas le cas de toutes les commandes.

Par exemple cette utilisation de la commande find qui recherche tous les fichiers txt puis tente de les passer à la commande mv ne fonctionnera pas.
Pourquoi ? car la commande mv ne tient pas compte de son entre standard.

find . -type f -name "*.txt" | mv dossier_destination/

La solution est d’utiliser l’option -exec de find :

find . -type f -name "*.txt" -exec mv dossier_destination/ \;

Mais on peut aussi utiliser la commande xargs.
Celle-ci prend des jetons (délimités par des caractères d’espacement s’il n’y a pas d’indication contraire) à partir de son flux d’entrée standard et les ajoute comme paramètres à la ligne de commande d’une autre commande à exécuter. Dans notre cas, la commande ls donnée à xargs reçoit un ensemble de noms de chemins sur sa ligne de commande et effectue sa tâche sur eux comme documenté par le manuel.

L’article Comment utiliser les redirections d’entrée, sortie et pipe de Linux est apparu en premier sur malekal.com.

Supprimer les ^M dans les fichiers Linux (retour ligne)

10 septembre 2022 à 09:56

Lorsque vous éditez un fichier texte sur Linux avec vim, nano, gedit ou tout autre éditeur, vous apercevez les caractères ^M à la fin de chaque ligne.
Que sont ces caractères ^M et surtout comment supprimer les ^M ?

Dans ce tutoriel, je vous explique comment sont arrivés ces caractères ^M en fin de ligne et surtout comment les supprimer.
Pour y parvenir, je vous donne plusieurs méthodes avec vim, sed, dos2unix et notepad++ pour corriger le retour à la ligne.

Supprimer les ^M dans les fichiers Linux (retour ligne)

Comment supprimer les ^M dans les fichiers Linux

Vim (méthode 1)

  • Ouvrez le fichier en édition avec vim
  • Puis saisissez :
:%s/^M/\r/g
  • Vérifiez que les caractères ^M en fin de ligne sont supprimés
  • Enregistrez les modifications :
:wq

Vim (méthode 2)

Dans cette seconde méthode, on passe le fichier au format Unix :

  • Ouvrez le fichier en édition
  • Puis saisissez :
:set ff=unix
  • Enfin enregistrez les modifications :
:wq

Vim (Méthode 3)

Enfin une dernière méthode avec le mode étendu de vim :

ex -bsc '%s/\r//|x' file
  • -b : mode binaire
  • % : sélectionner toutes les lignes
  • s : remplacer
  • \r : retour chariot échappé
  • x : enregistrer et quitter

Sed

sed (stream editor) est une commande linux puissante pour effectuer des opérations de texte.
Vous pouvez l’utiliser pour supprimer les ^M de cette manière :

sed 's/^M$//' fichier

Si cela est correct, alors appliquez les modifications directement au fichier avec l’option -i :

sed -i 's/^M$//' fichier

Voici une autre syntaxe pour supprimer les ^M en les remplaçant par des retours chariots UNIX :

sed -i -e "s/\r//g" fichier
  • -i : modifier le fichier directement
  • -e : expression régulière
  • \r : retour chariot échappé
  • /g : remplacement globalement

Dos2unix

dos2unix est un utilitaire dédié pour changer le mode de fichier DOS vers UNIX.

Ce n’est pas un utilitaire natif, il faut l’installer, par exemple avec APT :

sudo apt install dos2unix

Puis pour convertir le format d’un fichier :

dos2unix <fichier>
Supprimer les ^M en fin de ligne avec Dos2unix

Notepad++

Notepad++ est un éditeur de texte open source qui permet de changer très facilement le format de retour à la ligne.
Ainsi, vous pouvez très facilement supprimer les ^M.

Pour afficher les caractères de retour à la ligne dans Notepad++ : Menu Affichage > Symboles spéciaux > Afficher les symboles de fin de ligne.

Afficher les caractères de retour à la ligne sur notepad++

Pour changer le format de retour de ligne : Menu Edition > Convertir les sauts de ligne > choisissez le format Windows (CR+LR), Format Unix (LF) ou le format Mac (CR)

Convertir les formats de retour à la ligne (CRLF, LF, CR) avec Notepad++

Ici le même fichier texte avec un retour à la ligne Windows (CRLF)

Convertir les formats de retour à la ligne (CRLF, LF, CR) avec Notepad++

Ou un retour à la ligne format UNIX (LF).

Changer le format de retour à la ligne avec notepad++

Les ^M et retour à la ligne Unix et DOS

Les caractères ^M en fin de ligne apparaissent lorsque vous créez un fichier texte sur Windows et que vous transférez le fichier sur Linux par exemple avec SCP ou FTP.
Ils correspondent au retour chariot de fichier sur DOS.
En effet le retour chariot est différent dans le monde Linux et le monde Windows.

UniversCaractère retour chariotNomSystèmes d’exploitation
UNIXLF, code 10 de la table ASCII)Line Feed Linux, AIX, Xenix, Mac OS X, etc.), BeOS, AmigaOS, et RISC OS
MacCR, code 13 de la table ASCIICarriage Return
(Retour de chariot)
Apple II et Mac OS
WindowsLF + CRCP/M, MP/M, MS-DOS, OS/2 et Microsoft Windows
Les retours chariots par système d’exploitation

Les définitions :

  • CR :  Carriage Return (Retour de chariot) ;
  • LF : Line Feed
  • NL : New Line

L’option -A de la commande cat permet d’afficher les retour chariots.
Par exemple, ci-dessous, on voit le retour chariot Linux et Windows (CR) avec ^M.

Afficher les ^M et retours chariots avec la commande cat Linux
De ce fait, lorsque vous utilisez un fichier DOS/Windows sur Linux, il faut convertir les retours chariots.

L’article Supprimer les ^M dans les fichiers Linux (retour ligne) est apparu en premier sur malekal.com.

Shikitega, un nouveau malware Linux difficile à détecter !

7 septembre 2022 à 08:58

Un nouveau malware baptisé Shikitega a été découvert et il cible les ordinateurs sous Linux, ainsi que les appareils IoT avec un système basé sur Linux. Faisons le point sur cette nouvelle menace.

Le malware Shikitega exploite des vulnérabilités pour élever ses privilèges sur la machine infectée (CVE-2021-4034 correspondante à PwnKit et CVE-2021-3493), et pour être persistant sur la machine, il modifie la crontab (système de tâches planifiées sous Linux) du système. Il peut même aller jusqu'à déployer un logiciel de minage de cryptomonnaie (XMRig version 6.17.0) sur les appareils infectés. Sa particularité, c'est qu'il est relativement furtif et qu'il parvient à échapper à la détection des antivirus grâce à son encodeur polymorphe. Ainsi, il n'est pas possible de le détecter en s'appuyant sur une simple signature. Une nouvelle preuve que la détection par signature n'est pas suffisante et qu'il faut s'intéresser aux comportements.

Dans un rapport, les chercheurs en sécurité de chez AT&T, à l'origine de la découverte de ce malware, précisent : "Le malware Shikitega est diffusé de manière sophistiquée, il utilise un encodeur polymorphe et délivre progressivement sa charge utile, chaque étape ne révélant qu'une partie de la charge utile totale." - En effet, il s'avère que la chaîne d'infection est découpée en plusieurs étapes, et à chaque étape, une partie du logiciel malveillant est déployée. Par exemple, l'infection commence par un fichier ELF de 370 octets.

Pour donner lieu au shellcode malveillant qui sera exécuté au final sur la machine infectée, le malware passe par plusieurs boucles de décodage, où chaque boucle décode la couche suivante jusqu'à ce que la charge utile finale soit décodée, et donc reconstituée, afin d'être exécutée. Une fois en place, le malware Shikitega se connecte au serveur de commande et contrôle (C2) des pirates, dans le but de recevoir des commandes supplémentaires à exécuter. Par exemple, les pirates peuvent télécharger et exécuter Mettle sur l'hôte infecté, une version allégée et portable de Meterpreter, ce qui offre des options supplémentaires comme le contrôle à distance.

Au niveau de la crontab, le malware ajoute 4 tâches, 2 pour le super-utilisateur root et 2 autres pour l'utilisateur en cours. Voici le nom des scripts exécutés via la crontab : brict.sh, politrict.sh, truct.sh et restrict.sh. En complément, le script unix.sh est téléchargé et il sert à vérifier l'existence de la commande "crontab" : si elle n'est pas présente, il installe le paquet nécessaire et démarre le service.

Bien qu'il se concentre pour le moment sur le minage de la cryptomonnaie Monero, il n'est à exclure que le malware Shikitega soit utilisé à d'autres fins par la suite. Pour se protéger contre cette menace, il convient de maintenir à jour son système Linux et d'utiliser des outils de protection, notamment un EDR.

Source

The post Shikitega, un nouveau malware Linux difficile à détecter ! first appeared on IT-Connect.

New Linux malware evades detection using multi-stage deployment

6 septembre 2022 à 17:34
A new stealthy Linux malware known as Shikitega has been discovered infecting computers and IoT devices with additional payloads. [...]
❌