Basic command
La seule partition obligatoire est la racine « / »
/ = partition pour le système
/home = partition pour les documents utilisateurs
swap = fichier d’échange quand la mémoire est saturée
/tmp contient des fichiers temporaires, il est utile de le partitionner pour ne pas saturer le système
/var contient des bases de données, en cas de crash système /var reste intact
Afficher la configuration système ;
fdisk -l ou cfdisk ou sfdisk -l : voir les partitions systèmes
Iscpu : infos sur le CPU
Ishw : lister globalement le hardware du système
hwinfo : pour une liste plus complète du hardware
grub-install --version : connaître la version de GRUB installée
du : affiche l’espace disque restant
1 apt
Un paquet source est un paquet contenant le code source d’un programme
Une source de paquet est un répertoire contenant des paquets
Les sources apt sont listées dans le fichier /etc/apt/sources.list
Les source peuvent être de deux types ; « deb » pour un paquet binaire « deb-src »pour un paquet source
Les commandes apt :
- apt update : cherche les mises à jour des paquets installés
- apt install "paquet -t version" : installe un paquet avec la version voulue
- apt-cache search "paquet" : recherche un paquet
- apt-cache show "paquet" : affiche les détails d’un paquet
- apt install/remove "paquet" : installe/désinstalle un paquet
- apt purge "paquet" : désinstalle toute trace du paquet
- apt upgrade : met à jour les paquets
- apt full-upgrade : met à jour le système et les paquets
- apt dist-upgrade : met à jour la distribution
- apt clean : vide le dossier archive
- apt autoclean : ne supprimes que les paquets inutiles
Changer le proxy de apt :
- nano /etc/apt/apt.conf
- Acquire::http::Proxy ‘’http://ftp.belnet.be :80/’’ ;
2 dpkg
dpkg est le programme qui s’occupe des fichiers .deb, notamment en les installant, supprimant, extrayant et analysant
Les commandes dpkg ;
- dpkg -i "paquet.deb" : installe un paquet .deb
- dpkg -l : liste les paquets installés
- dpkg -s "paquet" : vérifie si un paquet est installé
- dpkg -r "paquet" : supprime un paquet
- dpkg -q "paquet" : supprime le paquet et les fichiers qui lui sont associés
- dpkg -L "paquet" : affiche les fichiers installés par le paquet
- dpkg –configure "paquet" : configure un paquet
Configuration Réseaux
1 Fichiers de configuration
/etc
/hostname : nom de la machine
/hosts : fichier DNS local
/resolv.conf : fichier de désignation de serveur DNS, le système commencera par questionner le serveur de la première ligne. S’il échoue, il questionnera la ligne suivante et ainsi de suite
/host.conf : spécifie comment les nom d’hôtes sont résolus dans un réseau par exemple avec leur adresse IP
/nsswitch.conf : est utilisé par la librairie de GNU pour déterminer la source à partir de laquelle obtenir des infos DNS dans un range de catégories et dans quel ordre, le système questionne ligne par ligne
/network/inteface :
- auto "eth0" : permet d’activer automatiquement l’interface
- allow-hotplug : permet de retirer la carte réseau pendant que la machine est en marche
- iface lo inet loopback : initialise l’interface lo à être l’interface
- iface "eth0" inet static/dhcp
- static
- address "IP"
- netmask "mask"
- gateway "gw"
- Pour prendre en compte les modifications :
- ifdown "eth0"
- ifup "eth0"
- /proc : contient tous les répertoires rel atifs aux processus
- /proc/sys/net/ipv4/ip-forward : est un synonyme de routing pour l’activer
- Autoriser le ping -> nano /etc/sysctl.conf -> #net. ipv4.forward = 1
2 Commandes de configuration
- hostname "nom" : change le nom d’hôte
- lspci : repère les cartes réseaux et leur modèle
- mii-tool : vérifie la présence de connexion sur les interfaces
- Le jeu de commande ip ;
- Attribue une ipv4 statique à une interface réseau :
- ip addr add "192.168.1.5/24" dev "eth0"
- Afficher la config ipv4 des interfaces :
- Supprimer une addresse IP sur une interface réseau :
- ip addr del "192.168.1.5/24" dev "eth0"
- Activer/Désactiver une interface réseau :
- ip link set "eth0" up/down
- Ajouter une passerelle par défaut :
- ip route add default via "192.168.1.1"
- Ajouter une passerelle supplémentaire :
- ip route "192.168.1.0" via "192.168.2.1" dev "eth0"
- Supprimer une route :
- ip route del "192.168.1.0" || ip route del default
- Afficher la table de routage :
- Nettoyer une interface réseau
- Redémarrer l’interface réseau :
- /etc/init.d/networking restart
- Activer l’adressage dynamique sur une interface :
- nslookup : Test le serveur DNS
Gestion des fichiers
1 Gestion générique
- Lister les fichiers avec ls :
- a : affiche également les fichiers cachés
- l (L) : affiche les permissions
- R : affiche de façon récursive
- s : affiche la taille en Ko
- pwd : affiche le répertoire courant
- Copier des fichiers avec cp :
- cp "chemin d’origine" "chemin de destination"
- -u -r : copie de façon récursive et incrémentielle ( pour copier des dossiers entier)
- -p : conserve l’heure et les droits
- -f : force la copie
- -a : archive la copie
- Changer la date et l’heure d’un fichier avec touch :
- Créer des dossiers avec mkdir :
- mkdir -p dir1/{sdir1,sdir2}/ssdir1
- Supprimer des fichiers avec rm :
- -r : récursivement
- -f : forcer
- -i : interactivement
- Afficher le type de fichier avec file :
- file "nom du fichier" "emplacement"
- ex : file *.* /root -> affiche le type de tous les fichiers dans /root
- Rechercher un fichier dans un répertoire avec find :
- find "emplacement" -name "nom du fichier"
- type "type" : précise le type de fichier à rechercher ;
- d = dossier
- c = caractère
- f = fichier standard
- stat : affiche le statut d’un fichier
- Créer des liens vers des fichiers avec ln :
- ln "file" "nom_du_lien" -> crée un hard-link (pointe vers les données du fichier )
- ln -s "file" "nom_du_lien" -> crée un soft link (pointe vers le pointeur originel)
2 Gestion des fichiers texte
- Afficher le contenu d’un fichier texte avec cat :
- -n : numérote les lignes
- -t : afficher les caractères non imprimables
- Afficher le/a début/fin d’un fichier avec head/tail :
- -n "nombre de ligne à afficher"
- -f : affiche en continu
- more : permet d’afficher un fichier écran par écran
- less : permet d’afficher un fichier et d’y naviguer
- sort : trie un fichier vers la sortie
- expand : remplace les tabulations par des espaces
- unexpand : remplace les chaines de deux espaces ou plus par des tabulations
- frmt : formate un fichier texte à une certaine longueur
- nl : numérote les lignes d’un fichier
- pr : convertit un texte en version paginée
- uniq : affiche sans doublons
- split : découpe un fichier en plusieurs fichiers de nombres de ligne spécifié
- wc : compte le nombre de ligne, caractère, etc.
- grep : recherche dans un fichier l’expression entrée
3 Les options de recherche
- [abc] = un des caractères entre crochet
- [^abc] = tous les caractères sauf ceux entre crochet
- {n} = n occurrence de l’expression entrée précédemment
- {n,} = au moins n occurrence de l’expression précédente
- abc* = 0 ou plusieurs occurrence de abc
- abc+ = 1 ou plusieurs occurrence de abc
- ^[abc] = un des caractères entre crochet en début de ligne
- [a-b]$ = l’intervalle compris entre a et b en fin de ligne
- ^hello world/. = hello world avec point en début de ligne, /. sert à ignorer l’option « . »
4 Gestion des droits des fichiers
- chmod u=rwx, g=rx, o=r "file"
- donne les droits de lire, d’écrire et d’exécuter à propriétaire du fichier
- donne les droits de lire et d’exécuter au groupe du propriétaire du fichier
- donne le droit de lire aux autres utilisateurs
- chmod o-r "file"
- enlève le droit de lecture aux utilisateurs
- chmod g+w "file"
- donne le droit d’écriture au groupe du propriétaire du fichier
5 Gestion des redirections
- ls > file.txt : insrit le résultat d’une commande dans un fichier (supprime ce que contenait le fichier s’il n’était pas vierge)
- ls >> file.txt : inscrit à la fin du fichier (ce que contenait le fichier est préservé)
- ls 2> file.txt : inscrit les erreurs d’exécution d’une commande dans un fichier texte
- ls | cat : renvoit le résultat d’une première commande en entrée d’une seconde
Gestion des utilisateurs et des groupes
1 Gestion des utilisateurs
- /etc/passwd : fichier utilisateurs
- Créer un utilisateur :
- adduser "ID" "ID_du_groupe"
- Supprimer un utilisateur :
- Changer l’UID d’un utilisateur :
- Enlever le droit d’accès au shell :
- usermod -s /bin/false user
- /bin/false >> /etc/shells
2 Gestion des groupes
- /etc/group : fichier groupes
- Créer un groupe :
- Supprimer un groupe :
- Changer le GID d’un groupe :
Network
Services de base
1 NTP
Installer NTP : apt install ntp
Configurer ntp pour synchroniser le temps avec un serveur spécifié (belnet) :
nano /etc/ntp.conf
- ajouter ntp.belnet.be et ntp1.belnet.be, il faut commenter les serveur de base
- shutdown -r now
Vérifier si la configuration a réussi : ntpq -p
Mettre à jour l’heure du système en utilisant ntpd :
- -n : pas en arrière plan
- -q : quitter ntpd après la synchronisation
- -g : met à jour même si le décalage est plus grand que 1000s
Sécuriser la configuration
- Les clients du LAN peuvent seulement lire les infos sur le temps :
- restrict "IP_LAN" mask "MASK_LAN" nomodify notrap
- Tout autre client n’ont aucun accès :
- Empêcher les machines de changer la configuration à part le localhost :
- restrict localhost
- restrict default kod notrap nomodify nopeer noquery
2 Telnet
Tester la connection avec un serveur smtp avec telnet :
Pour pouvoir se connecter la machine cible doit avoir installer un serveur telnet :
Pour se connecter avec telnet, il faut être connecter en local avec un autre utilisateur que root
3 SSH basique
Si vous modifiez l’adresse IP du serveur ssh après avoir accepté sa clé rsa/dsa, il vous demandera une nouvelle fois de l’accepter car la clé est lié à l’adresse IP du serveur
Root ne doit pas être autorisé à se connecter avec ssh mais il est possible de passer en tant que root après s’être connecté avec un autre utilisateur en utilisant su
Les fichiers /etc/hosts.allow et /etc/hosts.deny sont une liste des hôtes autoriser ou non à se connecter avec ssh ou un autre service
Installer un serveur ssh :
- apt install openssh-server
Configurer le serveur dans le fichier /etc/ssh/sshd_config
- PermitRootLogin no : évite la connexion root
- PasswordAuthentification no : désactive la connexion par mot de passe
- PermitEmptyPasswords no : désactive les mots de passe vide
- UsePAM no : désactive la connexion par le biais du module PAM
- AllowUsers "login1" "login2" : restreint l’accès aux utilisateurs indiqués uniquement
- AllowGroups "group_ID" : restreint l’accès aux groupes indiqués
- DenyUsers test guest admin root : interdit l’accès à certains utilisateurs
- DenyGroups test guest root : interdit l’accès à certains groupes
- MaxStartups 1 : Limite le nombre de tentatives de connexions à 1 (par défaut 10)
Connection à serveur ssh :
S’authentifier à l’aide de clés publiques/privées (clé publique sur le serveur et clé privée sur le client) :
Générer les clés sur la machine cliente dans le répertoire /home/user/.ssh
Le compte user doit être actif sur le serveur comme sur le client pour pouvoir copier la clé facilement
- ssh-keygen -t dsa
- passphrase : "password"
- Copier la clé sur le serveur ssh :
- ssh-copy-id -i /home/user/.ssh/id_dsa.pub user@192.168.1.10
S’authentifier de façon automatisée
- Créer le fichier .ssh/config
- cat /home/user/.ssh/config
- Host debianServer
- ssh debianServer
3 SCP
scp est similaire à cp mais fonctionne à travers le réseau sous ssh
Copier un fichier du client vers le serveur
- scp -r -p /home/user/scp_test/ user@debianServer :
- La syntaxe fonctionne comme suis :
- scp -r -p "user@serveur1" :"/directory" "user@serveur2" :"/directory"
- -r : récursif
- -p : préserve les dates, les droits, etc.
La commande équivalente sous Windows est Winscp
4 FTP
4.1 Installer et configurer FTP
apt install vsftpd
Désactiver les connexions anonymes et autoriser les utilisateurs authentifiés
- nano /etc/vsftpd.conf
- anonymous_enable=NO
- local_enable=YES
Se connecter sur un serveur FTP :
Autorise le droit d’écriture aux utilisateurs authentifiés (/etc/vsftpd.conf) :
chroot un utilisateur est une manière de s’assurer qu’il soit emprisonné dans un répertoire en l’empêchant de se balader librement dans les fichiers (/etc/vsftpd.conf) :
- chroot_local_user=YES
- Avec cette option il est nécéssaire de changer les permissions du dossier home de l’utilisateur à emprisonner avec les droits 555 et de créer un sous dossier avec les droits 755
- chroot /home/user/ 555
- chroot /home/user/dir 755
4.2 Configurer un FTP sécurisé
nano /etc/vsftpd.conf : décommenter les deux lignes suivantes
- les lignes avec chroot_list
nano /etc/vsftpd.chroot_list : ajouter le nom de l’user autorisé
Associer un répertoire à un user ftp
- mkdir /var/www/toto
- chown toto -R /var/www
- usermod –home /var/www/ toto
DNS-DHCP-APACHE
1 DNS
Installer bind
Configurer un serveur DNS de cache, de base bond9 est directement configuré en serveur cache il n’est donc pas nécéssaire d’y apporter des modifications. Cependant il peut être intéressant de préciser les forwardes à questionner pour ne pas perdre de temps à questionner trop de serveur.
nano /etc/bind/name.conf.options
ensuite ajouter les adresses des serveurs DNS
Créer une zone dns primaire « intranet.local » (IP srv1 : 192.168.160.129)
Utilisons le fichier de configuration du DNS local pour construire notre zone
- cp /etc/bind/db.local /etc/bind/db.xx
Configurons notre zone forward
Créons et configurons maintenant la zone inverse
- cp /etc/bind/db.127 /etc/bind/db.xx
- nano /etc/bind/db.xx - Spécifions à bind quels fichiers à utiliser désormais
- nano /etc/bind/named.conf.local
Redémarrons le serveur DNS : service bind9 restart
Vérification de la configuration grâce à nslookup
- 192.168.169.129
- srv1.intranet.local
- mail.intranet.local
Créer une zone dns secondaire « extranet.local » (IP srv2 : 192.168.160.139)
Réinstaller bind9 sur une autre machine (srv2)
Recréer un zone forward et reverse sur srv2
- cp /etc/bind/db.local /etc/bind/db.xx
- nano /etc/bind/db.xx
- cp /etc/bind/db.127 /etc/bind/db.xx
- nano /etc/bind/db.xx
- nano /etc/bind/named.conf.local
- service bind9 restart
Sur srv1 rajouter srv2 comme zone DNS esclave
- nano /etc/bind/named.conf.local
- service bind9 restart
2 DHCP
Installer le serveur dhcp sur srv1
- apt install isc-dhcp-server
Activer le serveur dhcp sur la bonne interface
- nano /etc/default/isc-dhcp-server
- Mettre le nom de l'interface a utiliser
Avant de configurer le serveur il est judicieux de faire une copie de la configuration de départ
- cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ORIGIN
Configurer le dhcp
- nano /etc/dhcp/dhcpd.conf
choisir le modèle de notre choix ou en créer un et ensuite le remplir
S’il n’y a pas de DNS configuré utiliser l’addr ip du serveur dhcp pour l’option domain-name.
service isc-dhcp-server restart
Donner toujours la même adresse ip à une machine (MAC addr)
- nano /etc/dhcp/dhcpd.conf
host mint {
hardware ethernet "MAC";
fixed-address "IP";
}
service isc-dhcp-server restart
3 Apache2
Installer et configurer Apache2
Modification du site par défaut
Création d’un nouveau répertoire « site1 » dans « /var/www » et d’un nouvel index.html
- mkdir /var/www/site1
- head -n 3 /var/www/html/index.html > /var/www/site1/index.html
- nano /var/www/site/index.html
- faire son code html
Création du fichier de configuration de site1
- cp /etc/apache2/sites-availeble/000-default.conf /etc/apache2/sites-available/site1.conf
- nano site1.conf
Désactivation du site par défaut :
Activation du site1 :
Redémarrage de apache2 :
Ajout d’un site sécurisé
Mise à jour du DNS
- cp /etc/bind/site1 /etc/bind/siteSecure
- nano siteSecure
- nano /etc/bind/named.conf.local
- service bind9 restart
nslookup www.siteSecure.local
Création du dossier /var/www/secure et du fichier index.html
- mkdir /var/www/secure
- cp /var/www/site1/index.html /var/www/secure/index.html
- nano .../secure/index.html
Pour la sécurisation, nous aurons besoin d’un certificat d’authentification et d’une clé privée
- cd /var/www/secure/cert
- Génération de la clé : openssl genrsa -des3 -out private.key 1024
- Génération du certificat csr : openssl req -new -key private.key -out private.csr
Suppression de la passphrase pour éviter qu’apache ne la demande à chaque démarrage
- cp private.key private.key.origin
- openssl rsa -in private.key.origin -out private.key
- Génération du certificat :
- openssl x509 -req -days 365 -in private.csr -signkey private.key -out private.crt
Création du fichier siteSecure.conf
- cd /etc/apache2/sites-available
- cp site1.conf siteSecure.conf
- nano siteSecure.conf
- mettre le chemin vers ses certificats
Activation du site siteSecure
Activation du module SSL dans Apache2
Redémarrage d’Apache (et de bind pour être sûr) : service apache2 reload
Gestion Fichier
1 Partitions
Lister les commandes intégrées à fdisk : -m
Afficher la table de partition : -p
Afficher les différents types de partitions existants : -l
Les codes pour les types de partitions sont :
- Linux 83
- Swap 82
- LVM 8e
- RAID fd
- FAT32 0b
Créer 3 partitions de 300 Mo :
fdisk
Entrer les commandes suivantes
- F : pour afficher l’espace disque libre non partionné
- n : pour créer une nouvelle partition
- +300M : la taille en Mo
- w : pour terminer et écrire les changements sur le disque
reboot
Créer des partitions avec cfdisk ( /dev/sda ou /dev/sdb)
2 Systèmes de fichiers
Formater une partition en Ext4
Formater la 1ere partition en ext2 avec des blocs de 1ko avec 4ko par inode
- mkfs -t ext2 -b 1024 -i 4096 -L ‘’FSext2’’ /dev/sda6
- -L : permet de définir un label pour la partition
Formater la 2e en ext3 :
- mkfs -t ext3 -b 2048 -i 16384 -L ‘’FSext3’’ /dev/sda7
Formater la 3e en ext4 :
- mkfs -t ext4 -b 2048 -i 16384 -L ‘’FSext4’’ /dev/sda8
3 Montage
Monte la partition en ext2 dans /mnt :
- mkdir /mnt/one
- mount /dev/sda6 /mnt/one
Monter de façon temporaire une partition dans /media/backup
- mkdir /media/backup
- mount /dev/sdx /media/backup
Convertir la partition en ext2 en ext3 :
- tune2fs -j /dev/sda6
- umount /dev/sda6
- mount /dev/sda6 /mnt/one
Afficher les montages actifs :
- cat /etc/mtab ou cat /proc/mounts
Recopier la ligne sda6 de /etc/mtab dans /etc/fstab (à la fin)
Lister l’espace disque libre dans les partitions montées
Créer un nouveau home et monter la partition sda8 (ext4) :
- mkdir /newHome
- mount /dev/sda8 /newHome
- Copier le contenu de /home dans /newHome
- cp -a /home/. /newHome
- -a : conserver autant que possible la structure
4 RAID et LVM
Créer un raid miroir avec trois partitions vides, 2 pour le raid et un de secours
- apt install mdadm
- mdadm - -create - -verbose /dev/md0 - -level=mirror - -raid-devices=2 - -spare-devices=1 /dev/sdb1 /dev/sdb2 /dev/sdb3
Utiliser un ensemble LVM par-dessus le Raid
- apt install lvm2
- vgcreate vg0 /dev/md0
- vgdisplay -v vg0 -> repérer la taille du volume
- lvcreate -L396 -n lvtest vg0 ->396 etant la taille du volume
- pvscan -> pour voir le résultat
Déplacer le répertoire home sur vg0
- umount /home
- lvscan -> repérer le nom du volume logique ( lvtest )
- mkfs -t ext4 /dev/vg0/lvtest
- mount /dev/vg0/lvtest /home
df -h -> permet de voir les volumes montés
5 Quotas
Implémenter la gestion des quotas pour /home
- apt install quota quotatool
Retrouver dans mtab la ligne correspondant au point de montage sur lequel se trouve /home et la copier
Copier cette ligne dans le fichier fstab en rajoutant usrquota
Remonter /home pour que les changements prennent effet
Créer les fichiers de quotas et activer les quotas
- quotacheck -avug
- quotaon -avug
Créer un utilisateur toto et lui appliqué une limite dure de 50 Mo avec un avertissement à 45 Mo
- quotatool -u toto -b -l 50MB -q 45MB /home
Afficher les règles de quota actives
repquota -ust /home
File Sharing
1 SAMBA
1.1 Partager un dossier public en lecture
Installer le serveur samba ainsi que le client samba et les fichier nécéssaire :
- apt install samba samba-common-bin sambaclient
Créer le dossier que l’on souhaite partager :
Il est toujours plus judicieux de faire une copie du fichier de configuration initial avant de le modifier
- cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Modification du fichier de config pour partager le dossier pub en ajoutant à la fin du fichier : nano /etc/samba/smb.conf
[share pub]
path = /share/home/pub
browsable = yes
public = yes
writible = no
Redémarrer les services samba :
service smbd restart
service nmbd restart
En entrant l’url dans un explorateur windows, vous devriez voir votre dossier partagé
Sous linux la commande smbtree et testparm permettent de voir les dossiers partagés sur le réseau
1.2 Partager un dossier public en écriture avec des droits spécifiques
Retourner dans /etc/samba/smb.conf et ajouter le partage suivant :
[share pub]
path = /share/home/pub
browsable = yes
public = yes
writible = yes
create mask = 0xxx
L’option create mask spécifie les droits propres au partage
Créer le dossier spécifié dans le partage
mkdir -p /share/home/writablePub
Changer l’appartenance du dossier créer pour autoriser tout le monde
chown nobody:nogroup /share/home/writablePub
Redémarrer les services et essayer d’écrire dans le dossier
1.3 Partager le dossier home d’un utilisateur
Créer l’utilisateur tango et son dossier home : useradd -m tango
Ajouter l’utilisateur tango au domain samba : smbpasswd -a tango
Modifier le fichier smb.conf pour partager le dossier home de tango
[share pub]
path = /home/tango
browsable = yes
public = yes
read only = no
writible = yes
create mask = 0xxx
valid users = tango
nano /etc/samba/smb.conf
Redémarrer les services et essayer d’écrire dans le dossier avec l’utilisateur tango
Gestion des processus
1 Les processus
La commande top permet de lister en continu les processus en cours
La commande pgrep "n°" affiche les pid liés au programme
2 Les signaux
La commande killall permet d’interrompre tous les processus lié à un service
La commande kill "signal" permet d’envoyer des signaux aux processus. Attention les numéros de signaux varient selon l’OS
3 Priorité
La commande nice permet de lancer une commande avec une priorité voulue (-20 à 20)
La commande renice permet de modifier la priorité d’un processus en cours
4 Planification
Le service cron permet la programmation d’évènement à répétition. Il fonctionne à l’aide d’une table, appelée crontab.
Pour éditer sa crontab : crontab -e
Reboot sa machine tous les jours à minuit : crontab -e
- 0 0 * * * /home/user/reboot.sh
Reboot sa machine ce soir à 22h30 :
- at 22:30
- shutdown -r now
- Ctrl+D