Sous linux, comme sur Windows, nous avons deux interfaces possibles:
- Le GUI(Graphical User Interface), qui permet l'utilisation d'interface graphique
- Le CLI(Commande Line Interface), qui permet d'utiliser la ligne de commande pour effectuer ses actions.
Cette dernière dispose de nombreux avantages par rapport a la première:
- Elle demande très peu de ressource, indispensable pour les serveurs linux qui n'ont pas beaucoup de ressources allouées.
- Elle est plus rapide: Une fois les commandes principales maitrisées, il est beaucoup plus simple de se mouvoir dans son arborescence et de faire des actions sur les fichiers
- La possibilité de faire des scripts permettant d'être beaucoup plus rapide et d'automatiser des tâches
Dans ce wiki, il y aura de répertorié les principales commandes linux.
Rtfm (Read The Fucking Manual) est la réponse que l'ont donne a quelqu'un qui nous demande “Comment marche telle commande ?”
Toutes les commandes sur cette page possèdent une documentation disponible avec la commande “man”
man <nom_de_la_commande>
Cette commande permet d'afficher la documentation de la commande dans le shell linux
La commande “cd” (change directory) permet de bouger dans les différents répertoires de son arborescence. Pour cela, il existe deux types de chemins:
- Le chemin relatif qui cherche le dossier a partir du repertoire en cours (Pour l'exemple suivant nous sommes dans le dossier “/home/user”)
cd Downloads
- Le chemin absolu qui cherche le dossier a partir de la racine de l'arborescence
cd /home/user/Downloads
La commande “mv” (move) permet de deplacer un fichier ou un répertoire vers un autre endroit qu'il soit dans le dossier courant ou non
- Dans le répertoire courant on deplace le fichier1 vers fichier2 (en clair, on le renomme)
mv fichier1 fichier2
- On peut aussi changer le répertoire du fichier ou du dossier
mv fichier1 /home/user/fichier2
la commande “cp” (copy) permet de copier un fichier ou un répertoire vers un autre emplacement Dans l'exemple ci-dessous on copie le fichier1 vers le fichier2
cp fichier1 fichier2
Pour les répertoires il faut utiliser une options supplémentaires “-R” qui permet de copier de manière récursive
cp -R dossier1 dossier2
La commande “ls” (list segments) permet d'afficher le contenu d'un répertoire
ls repertoire1
Il existe différentes options, voici les plus souvents utiliséss:
ls -l
Cette option permet d'afficher tout les fichiers d'un répertoires avec des informations détaillés sur chaque fichier
ls -a
Cette option permet d'afficher aussi les fichiers cachés
La commande “rm” (remove) permet de supprimer un fichier ou un répertoire Par exemple pour un fichier:
rm fichier1
Pour supprimer un dossier il faut ajouter l'option -r
rm -r dossier1
Quelques options utiles:
L'option “rm -i” lors de la suppression d'un répertoire, on demande à l'utilisateur, pour chaque fichier à supprimé, si il souhaite le supprimer, cette commande permet une suppression des données plus controlé.
rm -ri repertoire1
L'option “-f” permet de forcer la suppression d'un fichier ou d'un dossier ATTENTION cette option ne prévient pas l'utilisateur si la suppression est dangeureuse, à utilisé avec précaution !
rm -rf repertoire1
La commande cat permet d'afficher le contenu d'un fichier dans le shell
cat fichier1
La commande “ps” affiche les processus en cours
ps -ef
Il existe plusieurs options, voir:
man ps
La commande “grep” est une commande qui permet de filter un texte. Elle ne fera apparaitre que les lignes qui comprennent le mot données en paramètres. Elle s'utilise avec un “pipe”, de cette facon:
cat fichier1 | grep <mot_a_chercher>
Comment ça marche ? C'est simple la commande grep va s’exécuter sur le résultat de la première commande. Ici, la première commande est “cat”.Celle-ci affiche le contenu d'un fichier et bien la commande grep ne va afficher que les lignes qui contiennent le mot recherché.
Imaginons un fichier “fichier1” qui a le contenu suivant:
nombre1 pizza nombre2 banane quiche
Ce fichier contient donc 5 lignes. La commande:
cat fichier1
va afficher ces cinqs lignes dans le shell. Maintenant imaginons que l'ont souhaite uniquement les lignes avec le mot “nombre”, nous faisons alors:
cat fichier1 | grep nombre
La commande affichera alors seulement 2 lignes:
nombre1 nombre2
La commande grep sert donc a filtrer les données d'un fichier.
La commande scp permet une copie entre différentes machines sur le mêmes serveur.
Imaginons que je souhaite transferer un fichier iso “fichier1.iso” vers la machine 172.17.2.15 dans le dossier /var/lib/vz/template/iso.
Je fais alors:
cp fichier1.iso 172.17.2.15/var/lib/vz/template/iso
Il existe aussi différentes options:
-p : garde les droits, date de dernière modification…
-R : copier de menière récursive pour les dossiers
On peut aussi préciser un utilisateur précis:
cp fichier1.iso utilisateur@172.17.2.15/var/lib/vz/template/iso
Il faut utiliser la commande “passwd”
passwd
La commande df permet d'avoir des informations sur le partitionnement de votre disque(le nom, la taille, le systeme de fichier, l'espace libre, …)
df
Pour editer un fichier, il existe plusieurs utilitaire pour editez un fichier
“vi” ou son homologue amélioré “vim” (qui n'est pas installé par défault) est un des plus anciens editeur de texte en ligne de commande, il est très particulier puique'il fontionne de manière modal. Il demande un certain temps d'adaptation.
“nano” est un éditeur de texte en ligne de commande classique
Emacs est un autre éditeur de texte célèbre pour avoir été créer par Richard Stallman. Il est assez lourd, au point que ces détracteurs sorte régulièrement cette phrase: “Emacs est un système d'exploitation auquel il manque juste un éditeur de texte”. A méditer !
Pour cette section, nous parlerons du systeme de gestion des paquets de debian et de ses dérivés, à savoir “apt”
“APT” est un systeme de gestion de paquets, il permet de télécharger des paquets en ligne de commande
Les dépots sont disponible dans le fichier /etc/apt/sources.list
nano /etc/apt/sources.list
apt-get install <mon_paquet> <mon_paquet2> <...>
Cette commande permet d'installer un ou plusieurs paquets
apt-cache search <nom_du_paquet>
Il est conseillé d'utiliser des jockers comme “*” pour faire des recherches plus amples. Par exemple, pour trouver tout les paquets python3
apt-cache search "python3-*"
(Il ne faut pas oublier les guillemets)
Cette commande liste tout les paquets commencant par “python3-”
apt-get remove <nom_du_paquet> <nom_du_paquet2> <...>
Cependant une “trace” du paquet reste sur votre disque dur, pour tout supprimer tapez la commande suivante:
apt-get remove --purge <nom_du_paquet>
apt-get update
apt-get upgrade
Le fichier de configuration est /etc/network/interfaces
nano /etc/network/interfaces
Pour voir vos interfaces et leurs adresses actuelles:
ifconfig
Il faut bien penser à regarder votre interface par default grâce a la commande ifconfig.
Voici un exemple de configuration:
auto eth0 iface eth0 inet static address 172.17.2.93 netmask 255.255.254.0 gateway 172.17.3.254
Analysons les différentes parties:
auto eth0
L'interface eth0 se connectera automatiquement au démarrage de la machine
iface eth0 inet static
l'interface eth0 utilisera une connexion statique configuré avec l’adresse réseau, le masque et la passerelle que vous indiquerez en dessous.
Il est aussi possible d'utiliser du dhcp, ce qui est plus simple, comme ceci:
auto eth0 iface eth0 inet dhcp
Lors du démarrage, le serveur dhcp fournira une adresse, un masque, une passerelle automatiquement
Dans cette partie nous allons voir comment gérer les utilisateurs et les groupes
Il existe deux commandes pour le faire
Cette commande est un script de création de compte automatique, il vous demandera automatiquement les informations sur le nouvel utilisateur.
adduser <nom_de_votre_utilisateur>
La commande useradd permet une création plus controlé de son utilisateur, on peut rentrer toutes les informations dans des options, par exemple:
useradd -u 1010 -g 1002 -m jane
Dans cette exemple nous avons créer une utilisatrice jane d'uid 1010, de gid 1002 et nous avons aussi créer son dossier home dans le répertoire “/home/jane” (avec l'option -m, marche aussi avec –create-home)
Il existe deux utilitaire CLI connu sur linux:
cfdisk fdisk
“cfdisk” est un utilitaire plus interactif, que je vous invite a découvrir par vous-même. Nous allons nous intéréssez ici a fdisk Pour modifier votre disque, faîtes:
fdisk /dev/<nom_du_disque> ex: fdisk /dev/sda1
(utiliser la commande “df” pour voir l'état de vos partition) Ensuite vous arriver sur utilitaire qui vous demande quoi faire, les principales commandes:
l: permet d'afficher vos partitions d: permet de supprimer une partitions: n: permet de créer une partition w: écrit sur votre disque les changements (ATTENTION: une fois w taper, il est impossible de revenir en arrière) q: quitter, si vous n'avez pas écrit avec w, aucun changement n'est enregistrer
Vous pouvez ensuite formater vos partitions avec un système de fichiers par exemple avec ext4
mkfs.ext4 /dev/<numero_de_la_partition> ex: mkfs.exts /dev/sda1
(ATTENTION: cela efface toutes les données sur votre partition !)
Pour faire ceci, nous allons utiliser le paquet rdesktop.
apt-get install rdesktop
Il faut modifier l’exécutable SystemPropertiesRemote.exe. Taper ceci dans la barre de recherche du menu démarrer
SystemPropertiesRemote.exe
Ensuite il faut faire les modifications suivantes:
- cochez “Autoriser les connexions à distance vers cet ordinateur”
- cochez “Autoriser les connexions d'assistance à distance vers cet ordinateur”
- Cliquez sur “Sélectionnez des utilisateurs” et ajoutez les utilisateurs dont vous voulez prendre le controle de la session
- Trouver l'adresse IP du serveur: cmd > ipconfig > prendre l'adresse ipv4
Maintenant que le serveur Windows est configurer, vous pouvez vous connecter de cette façon:
rdesktop -g 80% <ip_du_serveur>
Avec l'option “-g” qui est la taille en pourcentage d'écran que prendra la fenêtre d'accès a distance du serveur
Les alias sont des raccourcis de commande que l'ont enregistre dans le fichier de configuration de notre shell. Il permette de raccourci des commandes longues en un mot.
Pour créer un alias, ouvrez le fichier de configuration de votre shell:
nano ~/.bashrc
Allez ensuite tout en bas du fichier, et créer un alias comme ceci:
alias n="ifconfig"
Ensuite enregistrer et sorter du fichier et faîtes:
source ~/.bashrc
Ceci permettra a votre shell de prendre en compte les changements de configuration sans fermer/ouvrir de nouveau votre terminal. Taper maintenant la commande “n” dans votre terminal, elle affiche normalement la même chose que la commande “ifconfig”! Vous pouvez en créer autant que vous le souhaitez:
alias google="ping 8.8.8.8" alias ppe="cd /var/www" ...
Nous allons voir comment se connecter en ssh sur son serveur linux depuis notre machine cliente windows. Pour se faire installer le paquet openssh-server sur votre serveur ssh
apt-get install openssh-server
Et voila, il est automatiquement configuré, vous avez avez fait de votre serveur linux un serveur ssh !
Pour se connecter depuis windows, installer un client ssh comme putty et lancez-le.
Ensuite entrer l'adresse ip du serveur, laisser le port sur 22 et cliquez sur connecter. Ensuite connectez-vous avec votre utilisateur et mot de passe(ATTENTION: il n'est pas possible de se connecter directement en root par défault sur un serveur openssh)
Pour peu que vous ayez mal configurer votre clavier lors de l'installation de votre OS GNU/Linux, vous pourriez vous retrouvez avec ce bon vieux clavier qwerty, bien dégueulasse. Vous pouvez le changer comme ceci:
setxkbmap fr
(il faudra le refaire a chaque démarrage de la machine)