====== LINUX ====== apt update && apt install python3 python3-pip vim apt-transport-https ca-certificates curl wget software-properties-common telnet locate tree nmap bind9-dnsutils tcpdump openssh-client ipcalc remmina ncal -y Decouverte new srv: last, env, alias, ps -aux, top, find / -iname "test.txt", grep word /file.txt,ss -tunlp, systemctl list-timers, systemctl --type=service Pour macro => script audit.txt puis exit pour finir Pour record sortie cmd => ls -al | tee contenu.txt {{:linux_perf_troubleshoot.png?500|}} [[https://youtu.be/rwVLa9me7e4?si=1GGNKou3Uvjl1vfd|YT]] ----- ==== GESTION DES TABLES DANS NFTABLE ==== [[https://www.it-connect.fr/chapitres/gestion-des-tables-dans-nftables/ | gestion-des-tables-dans-nftables]] ---- ==== TESTER LIEN LDAP AD / LINUX LDAPSEARCH ==== Commande LDAPSEARCH (option ldap ou ldaps): #ldapsearch -LLL -H ldaps://IP_AD -x -W -D "NOM_USER_BINDDN@DOMAIN_AD.LOCAL" -b "DistinguishedName_OU_USER_CIBLE" "(sAMAccountName=samaccountname_user_cible)" Résultat si ok: Enter LDAP Password: => mdp_USERBINDDN suite option -W dn: CN=????? objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user . . . ---- ---- ==== CRONTAB ROCKYLINUX/CIRIL ==== {{ :crontab-bis.png?400 |}} #cat /etc/cron.d/ciril SHELL=/bin/bash MAILTO="" 00 00 * * 1 root /bin/dnf update -y; /sbin/shutdown -r 0 00 01 * * * root /bin/systemctl stop cirilworkflow 00 01 * * * oracle /u01/app/oracle/admin/CIRI/scripts/export.sh 00 07 * * * oracle /u01/app/oracle/admin/CIRI/scripts/purge_arch.sh 00 05 * * * oracle /u01/app/oracle/admin/CIRI/scripts/util/optimize.sh 00 06 * * * oracle /u01/app/oracle/admin/CIRI/scripts/menage_oracle.sh 30 05 * * * ciril find /ciril/prod/*/expl/{*,.}/{tmp,erreur}/* -type f -mtime +1 -exec rm -f {} \; ; find /ciril/interface/m14/civilgf/pes -type f -mtime +30 -exec rm -f {} \; ; find /ciril/interface/m14/civilgf/cpp/archive -name "*.xml" -type f -mtime +30 -exec rm -f {} \; 30 06 * * * root /bin/systemctl stop php-fpm ; /bin/systemctl stop httpd-ciril-scgi ; /bin/systemctl stop httpd-ciril-webservices ; /bin/systemctl stop ciriljava ; /bin/systemctl stop cirilstartup ; /bin/systemctl stop cirilworkflow ; /bin/systemctl stop cityweb ; /bin/systemctl stop cityremweb ; sleep 30; find /ciril/log/httpd-ciril* /ciril/log/php-fpm -type f -mtime +10 -exec rm -f {} \; ; find /ciril/log/httpd-ciril*/*log /ciril/log/php-fpm/*log -type f | xargs -I \% mv \% \%.`date +\%F`.`date +\%T` ; find /ciril/log/httpd-ciril* /ciril/log/php-fpm -type f -name "*:[0-9][0-9]" -exec gzip -9f {} \; ; /bin/systemctl start ciriljava ; /bin/systemctl start httpd-ciril-scgi ; /bin/systemctl start httpd-ciril-webservices ; /bin/systemctl start php-fpm ; /bin/systemctl start cirilstartup ; /bin/systemctl start cirilworkflowi ; /bin/systemctl start cityweb ; /bin/systemctl start cityremweb 00 08 * * * ciril /usr/bin/rsync -ar --delete /ciril/prod/civilrh/expl/serveur/carriere/arretes.rtf /ciril/prod/client/civilrh/user/arretes_ciril.rtf 15 04 * * * root /ciril/prod2test/prod2test.sh 30 08 * * * ciril /ciril/cityweb/insee/launch.sh 00 10 * * * ciril /ciril/cityweb/AEC/city-exchange-4.6.PATCH/launch.sh 00 15 * * * ciril /ciril/cityweb/AEC/city-exchange-4.6.PATCH/launch.sh 00 20 * * * ciril /ciril/cityweb/AEC/city-exchange-4.6.PATCH/launch.sh */30 * * * ciril /ciril/cityweb/CERTDC/city-exchange-4.6.PATCH/launch.sh exemple: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday et Sunday 02 4 * * * at 04:02:00 every day 22 4 * * 0 root at 04:22:00 on Sunday every week 42 4 1 * * root at 04:42:00 on the first day of every month The key components of a Cron job are: * Minute (0 – 59): Specifies when the job will run within the hour. * Hour (0 – 23): Specifies the hour when the job will run. * Day of the month (1 – 31): Specifies the day of the month when the job will run. * Month (1 – 12): Specifies the month when the job will run. * Day of the week (0 – 7): Specifies the day of the week when the job will run (both 0 and 7 represent Sunday). ---- ==== VERIF SERVICES ET PROCESS APACHE CITYWEB ROCKYLINUX/CIRIL ==== Lister les services: #systemctl list-unit-files --type=service ou #systemctl list-units Process: #ps -ef | grep servedi #ps -ef | grep moteur #ps -ef | grep httpd #ps -ef | grep tomcat #ps -e -o comm,etime,user | grep httpd Services: #systemctl start/status/restart cirilstartup #systemctl start/status/restart cirilworkflow #systemctl start/status/restart cityweb #systemctl start/status/restart httpd Ports/Connexions: Filtre sur le port 80: #sudo netstat -petula | grep 80 ou ##sudo netstat -tunlp | grep 80 Filtre sur apache2 #sudo netstat -petula | grep apache2 ---- ==== ERREUR piix4_smbus - upgrade bios or use force_addr=0xaddr ==== [[https://forum.ubuntu-fr.org/viewtopic.php?id=1999201|Corriger erreur piix4_smbus - upgrade bios or use force_addr=0]] Etape 1 - Taper: #lsmod | grep i2c_piix4 si la commande ne retourne rien, passer à l'étape 2 sinon taper: #modprobe -r i2c_piix4 Etape 2 - Blacklister le module en tapant: #echo "blacklist i2c_piix4" | sudo tee -a /etc/modprobe.d/blacklist.conf Etape 3 - Mettre à jour l’archive initramfs en tapant: #update-initramfs -u ---- ==== ERREUR PARTITION SWAP AU BOOT (repérer nom partition pdt boot) ==== Faire un test avec: #swapon -a Puis: #blkid ou lsblk -o +UUID ou fdisk -l => repérer uuid de la partition swap ex.: /dev/sda1: UUID="1BD6-43FF" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="ee1bfe49-73ca-46ec-ad8b-c0a589cc2513" /dev/sda2: UUID="05f737ce-791d-4fa7-8f45-5028d49e1e70" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="16e2c7ff-872c-8148-afb2-6357ba4a78e7" /dev/sda3: UUID="7a816ed8-1696-4d67-98d4-0fa4d9876503" TYPE="swap" PARTUUID="4f462220-35b4-2849-a5c7-2e0e739bd728" Le renseigner dans: #vim /etc/initramfs-tools/conf.d/resume ex.: RESUME=UUID=7a816ed8-1696-4d67-98d4-0fa4d9876503 Puis dans: #vim /etc/fstab # swap was on /dev/sda3 during installation ex.: UUID=7a816ed8-1696-4d67-98d4-0fa4d9876503 none swap sw 0 0 Puis: #mkswap /dev/sda3 pour tagger la partition en swap #update-initramfs -u Voir si toujours erreur avec: #swapon -a ---- ==== POUR LE PROBLEME OS_PROBER ON: ==== Modifier le fichier suivant: #vim /etc/default/grub Ajouter la ligne: #GRUB_DISABLE_OS_PROBER=true Puis: #update-grub #reboot ---- ==== LISTER LES PORTS EN ECOUTE ==== Pour voir les ports en écoute, on peut utiliser la commandes : #ss ou netstat -tulnp ==== MODIFIER SOURCELIST AVEC SED ==== #grep -r buster /etc/apt/sources.list* #sed -i 's/buster\/updates/bullseye-security/g;s/buster/bullseye/g' /etc/apt/sources.list CONNAITRE LE CODE NAME #(. /etc/os-release && echo "$VERSION_CODENAME") ==== REGLER TIME ZONE ==== taper: #dpkg-reconfigure tzdata ==== NETTOYER APRES MAUVAISE DESINSTALLATION ==== #dpkg --force-all --purge nom_du_paquet ou par exemple avec nftables: #apt-get remove --auto-remove nftables #apt-get purge nftables ---- ==== LISTER PAQUETS INSTALLES LINUX ==== Sous Debian: #dpkg --list #apt list --installed #apt list --installed search ruby Voir la version installée/dispo: #apt-cache policy apache2-utils Sous Centos: #yum list installed Désinstaller plusieurs paquets en même temps: #for pkg in docker.io docker-doc docker-compose podman-docker; do sudo apt-get remove $pkg; done ---- ==== REPRENDRE UNE MISE A JOUR APRES UNE INTERRUPTION ==== Taper la commande suivante: #dpkg --configure -a #apt install -f Check logs: #tail /var/log/apt/history.log #tail /var/log/apt/term.log #tail /var/log/dpkg.log ---- ==== Fix “404 Not Found” Errors in Debian During apt upgrade ==== [[https://www.tecmint.com/fix-apt-get-404-errors-debian|How to Fix “404 Not Found” Errors in Debian During apt-get upgrade]] ---- ==== CREER UN NOUVEAU DD SOUS UBUNTU ==== Créer un nouveau répertoire avec mkdir pour le point de montage du deuxième DD. Par exemple, ici il sera créé à la racine du système de fichier représentée par / et portera le nom disk2 : #mkdir /disk2 Repérer la dénomination du deuxième DD avec : #fdisk –l ici on supposera qu’il s’appelle sdb Pour créer une partition sur ce disk : #cfdisk /dev/sdb Créer la nouvelle partition et confirmer bien en écrivant yes après la commande write. Vérifier la numérotation de la nouvelle partition avec un fdsik -l, ensuite formater la nouvelle partition au format ext4, ici on supposera qu’elle est numérotée sdb1 : #Mkfs.ext4 /dev/sdb1 Ensuite éditer le fichier de point de montage automatique au démarrage du pc “fstab”: #nano /etc/fstab puis ajouter une nouvelle ligne à la suite des autres avec la syntaxe suivante : /dev/sdb1 (tabulation) /disk2 (tabulation) ext4 (tabulation) defaults (tabulation) 0 (tabulation) 0 Puis faire ctrl+O, entrée, ctrl+X pour enregistrer. Redémmarer avec un init 6, et vérifier le bon montage du nouveau DD avec la commande : #df –h il doit apparaitre dans la colonne ainsi que son espace disponible et utilisé. Pour y mettre des fichiers à l’aide de WINSCP à partir d’un autre pc, installer le paquet shh : #apt install openshh-server Puis éditer le fichier conf avec : #nano /etc/ssh/sshd_config Rajouter login yes après #permit root et décommenter la ligne, ctrl+O, entrée, ctrl+X. Redémmarer le service ssh avec : #service ssh restart >>> sous Centos taper : #service sshd restart Créer un nouveau mot de passe pour le compte root avec : #passwd root Maintenant on peut se connecter à distance avec WINSCP ou PUTTY. Pour restreindre accès ssh user ou group: #AllowUsers user1 user2 #AllowGroups root suivi d'un: #service ssh restart ---- ==== CLONER UN DISQUE AVEC LA COMMANDE DD ==== #dd if= of= bs= skip= seek= conv= #dd if=/dev/sda skip=1 of=/dev/sdb seek=1 bs=4k conv=noerror status=progress when the copy is finished: #resize2fs /dev/hdb ---- ==== COMMENT REDIMMENSIONNER VOTRE PARTITION AVEC FDISK ==== Un outil essentiel est FDISK, qui est installé nativement sur les distributions Linux telles que Ubuntu / Debian et CentOS. Étape 1 – Ouvrir le terminal Le terminal correspond à l’invite de commande sur WIndows. Sur les serveurs on y accède généralement grâce au protocole SSH et l’incontournable outil Putty Etape 2 – On liste les disques et les partitions avec la commande lsblk lsblk -f J’ai donc 1 disque dur (sda) et 1 partition sda1. La partition est au format ext4. On ouvre le disque dur avec la commande fdisk /dev/sdx => nom de la partition à vérifier La commande sudo execute la commande en tant qu’Administrateur Voici la totalité des commandes disponibles avec FDISK. Générique | d | supprimer la partition | | F | afficher l’espace libre non partitionné | | l | afficher les types de partitions connues | | n | ajouter une nouvelle partition | | p | afficher la table de partitions | | t | modifier le type d'une partition | | v | vérifier la table de partitions | | i | Afficher des renseignements sur la partition | Autre | m | afficher ce menu | | x | fonctions avancées (réservées aux spécialistes) | Script | I | chargement de l’agencement à partir du fichier de script sfdisk | | O | sauvegarde de l’agencement vers le fichier de script sfdisk | Sauvegarder et quitter | w | écrire la table sur le disque et quitter | | q | quitter sans enregistrer les modifications | Créer une nouvelle étiquette | g | créer une nouvelle table vide de partitions GPT | | G | créer une nouvelle table vide de partitions SGI (IRIX) | | o | créer une nouvelle table vide de partitions DOS | | s | créer une nouvelle table vide de partitions Sun | Etape 4 – Connaître et identifier la partition à agrandir Maintenant nous devons identifier la partition qui sera modifiée. Saisir la touche “p” pour afficher la liste des parititions. Ici on obtient une seule partition la partition SDA1 Étape 5 – On supprime la partition Je vous rassure, les données ne sont pas supprimées. La partition est plutôt “démontée”. Pour démonter la partition vous devez saisir “D” Ensuite vous devez choisir le numéro de la partition dans mon cas il y en a qu’une seule donc je fais “1” La partition est supprimée, nous pouvons donc l’agrandir ! Étape 6 – Création de la partition Saisir “N” afin de créer une nouvelle partition avec le nouvel espace disque. Nous allons devoir choisir le numéro de la partition, dans notre cas c’est la 1. L’outil FDISK demande le premier secteur du disque (laissez par défaut) puis le dernier secteur. Pour le dernier secteur il faut indiquer la taille souhaitée. Exemple ici j’ai fais +60G pour obtenir une partition de 60GO. On peut voir les anciens secteurs avec cfdisk avant de commencer !!! Surtout on ne supprime pas la signature !!! Commande (m pour l'aide) : n Numéro de partition (4,8-128, 4 par défaut) : *Entrée* Premier secteur (102305968-1953525134, 102307840 par défaut) : *Entrée* Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (102307840-1924124671, 1924124671 par défaut) : +60G Une nouvelle partition 4 de type « Linux filesystem » et de taille 60 GiB a été créée. La partition #4 contient une signature ext4. Voulez-vous supprimer la signature ? [O]ui/[N]on : N => !!! surtout mettre NON !!! Étape 7 – On enregistre la partition Tout est paramétré, maintenant on enregistre les modifications dans la table de partition en saisissant la touche “W” Commande (m pour l'aide) : w La table de partitions a été altérée. Synchronisation des disques. Étape 8 – On reboot Un redémarrage est nécessaire pour appliquer les changements. shutdown -r now Le serveur redémarre, on doit désormais redimensionner le système de fichiers. Étape 9 – Redimensionner le système de fichiers La dernière étape consiste à redimensionner le système de fichiers. La commande peut etre différente en fonction du type de volume (ext4, ntfs, ext3 ..). La commande classique est celle-ci : resize2fs /dev/sda1 Il faut ajuster la commande en fonction de votre partition. Pour les autres types de volume vous pouvez installer xfs_growfs Par exemple sur Centos : yum install xfsprogs.x86_64 Pour Debian / Ubuntu : apt-get install xfsprogs Enfin pour agrandir le système de fichiers à sa taille maximale on saisira la commande suivante : xfs-growfs /dev/sda1 ---- ==== PARTITION LVM ==== La commande la plus basique de LVM est l’affichage des différents volumes et groupes, pour cela nous disposons de : pvs : Afficher les détails succincts des volumes physiques vgs : Afficher les détails succincts des groupes de volumes lvs : Afficher les détails succincts des volumes logiques Pour les besoins de cet article, j'utiliserai "my-virtual-group" à la place du nom de votre groupe de volumes. Remplacez donc “my-virtual-group partout dans ce document par le nom de VOTRE groupe de volumes. Pour voir quels groupes de volumes sont sur votre système, exécutez la commande vgs dans votre terminal. Je vais également utiliser /dev/sdXX comme nom de périphérique. Remplacez-le par la partition que vous prévoyez d'utiliser sur votre nouveau disque. Vous pouvez le confirmer avec: #sudo fdisk -l. Pour trouver où se trouve le chemin d'accès à votre volume physique, exécutez lvdisplay et recherchez-le LV Path dans la liste. Nous allons utiliser ce chemin avec la commande lvextend plus tard. Pour étendre les partitions à un nouveau lecteur Créer une partition LVM vide sur le nouveau disque avec fdisk ou gparted. Créez un volume physique sur le nouveau disque avec: #pvcreate /dev/sdXX Vous pouvez vérifier le nom de la nouvelle partition avec: #sudo pvs qui devrait avoir une entrée vide sous VG. Étendez votre groupe de volume au nouveau disque avec: #vgextend my-virtual-group /dev/sdXX. Étendez votre volume logique et redimensionnez la partition à l'intérieur avec: #lvextend -l +100%FREE -r /dev/my-virtual-group/root Dans la commande précédente, vous pouvez changer la valeur de +100%FREE en fonction de l'espace que vous voulez que le nouveau volume logique prenne sur le nouveau disque. Vous pourriez dire par exemple : #lvextend -l +50%FREE r /dev/my-virtual-group/root Ou, si vous voulez l'étendre d'une taille spécifique (+10G l'étend de 10 gigaoctets), utilisez : #lvextend -L +10G -r /dev/my-virtual-group/root Vous pouvez également utiliser +500M pour 500 Mégaoctets et ainsi de suite. À noter que si vous spécifiez des tailles, la commande passe de -l minuscule à -L majuscule après lvextend. Si tout s'est bien passé, vous avez maintenant étendu votre espace au nouveau disque et pouvez à nouveau disposer d’espace de stockage sans modifier votre expérience avec vos programmes ou data stockées sur votre ordinateur ---- ==== FICHIER COMPRESSE SOUS UBUNTU ==== Pour les fichiers .tg ou .tgz utiliser la commande tar native sur ubuntu server : #tar xvf ou zxvf “nom_du_fichier” Pour les fichiers zip installer le paquet zip : #apt install zip Puis décompresser le fichier avec la commande : #unzip “nom_du_fichier” Pour modifier les droits d’accés d’un répertoire de façon récursive (-R) : #chmod –R 755 /disk2/glpi ou /var/www/html/glpi Syntaxe de chmod –R (7 : user, 5 : groupe, 5 : les autres) 7 = 4 lecture + 2 ecriture + 1 modification Pour modifier le proprietaire et le groupe www-data : #chown –R www-data:www-data /disk2/glpi ou /var/www/html/glpi === Fichier GZ === Utilisez la commande gzip pour compresser un fichier sous Linux gzip filename La commande ci-dessus compresse le fichier sans conserver l’original. Nous pouvons également utiliser la commande suivante pour conserver le fichier d’origine. gzip < filename > filename.gz Nous pouvons également conserver le fichier d’origine en utilisant l’option -k. gzip -k filename Nous pouvons utiliser l’option -d avec la commande gzip pour décompresser les fichiers compressés .gz. gzip -d filename.gz Comme dans la compression, nous pouvons utiliser l’option -k pour conserver le fichier compressé d’origine et le décompresser. gzip -d -k filename.gz Nous pouvons également décompresser le fichier .gz à l’aide de la commande gunzip. Pour décompresser à l’aide du fichier à l’aide de gunzip, utilisez la commande suivante. gunzip filename.gz Et pour conserver le fichier compressé. gunzip -k filename.gz Les fichiers avec le suffixe .tar.gz ne sont que des fichiers d’archives .tar compressés Gzip. Nous pouvons extraire ces types de fichiers à l’aide de la commande suivante. tar -xf filename.tar.gz L’archive sera extraite dans le répertoire de travail courant après que la commande tar aura automatiquement identifié le type de compression. ---- ==== POUR UN SERVEUR WEB UBUNTU ==== [[https://doc.ubuntu-fr.org/apache2|Wiki ubuntu APACHE]] === MODE ALIAS === [[https://httpd.apache.org/docs/2.4/fr/mod/mod_alias.html|DOC APACHE ALIAS]] Installer les services: #apt install apache2 mysql-server php Installer les différents services de librairie de php par exemple pour glpi et grr : #apt install php-mysql php-mbstring php-curl php-gd php-intl php-simplexml php-ldap php-apcu php-xmlrpc php-cas php-zip php-bz2 (>une seule ligne) CREER UN ALIAS ET INDIQUER DIRECTORY FICHIER POUR APACHE Par exemple pour glpi. Editer le fichier apache2.conf : #nano /etc/apache2/apache2.conf Pour un alias ajouter la ligne : alias /glpi “/disk2/glpi” Puis pour indiquer une nouvelle directory copier le paragraphe : Options Indexes FollowSymLinks AllowOverride None Require all granted Avec les raccourcis ctrl+k pour couper les lignes une/une, puis ctrl+u pour coller 2 paragraphes, modifier un des deux en : Options Indexes FollowSymLinks AllowOverride Limit Require all granted 1.Chemin dossier pour apache sur disk2, 3.modification pour glpi, puis ctrl+O, entrée, ctrl+X. Puis faire un : #Service apache2 restart ---- ==== POUR CREER UN HOTE VIRTUEL ==== [[https://httpd.apache.org/docs/2.4/fr/vhosts/examples.html|DOC APACHE VIRTUAL HOST]] Ne pas oublier de créer un nouvel hôte, par exemple help.nomdudomaine.dom, dans le serveur DNS avec l’ip du serveur glpi. Dans le répertoire /etc/apache2/sites-available créer un nouveau fichier avec : #nano help.conf pour glpi par exemple. Et renter les lignes suivantes : documentroot /disk2/glpi servername help.nomdudomaine.dom Puis ctrl+O, entrée, ctrl+X. Activer le nouveau lien avec : #a2ensite nomdufichier.conf Puis : #Systemctl reload apache2 Pour éviter l'accès aux fichiers en dehors de la directory root: Si vous souhaitez vous assurer que les fichiers situés en dehors du répertoire racine Web ne soit pas accessibles, vous devez vous assurer que le répertoire est restreint avec "Allow" et "Deny option" dans le fichier de configuration de votre serveur Web. Et éviter de nommer la directory/dossier du site comme l'entête du site. Options None AllowOverride None Order deny,allow Deny from all ---- ==== MYSQL ==== Pour créer une base de donner : #mysql #mysql>create database glpidb; Y créer un nouvel utilisateur : #mysql>create user ‘identifiant’@’localhost’ identified by ‘motdepasse’; Pour lui attribuer les privilèges nécessaires : #mysql>grant all privileges on glpidb.* to ‘identifiant’@’localhost’; #mysql>flush privileges; Pour vérifier existence base de données : #mysql>show databases; Pour vérifier existence utilisateur : #mysql>select user from mysql.user; ; à ne pas oublier localhost à remplacer par % en cas de serveur mysql déporté. Pour un serveur mysql déporté penser également à modifier le fichier : /etc/mysql/mysql.conf.d/mysqld.cnf Puis modifier la ligne : Bind-address = 127.0.0.1 en remplaçant 127.0.0.1 par 0.0.0.0 Enregistrer avec ctrl+O, entrée, ctrl+X. Redémarrer le service avec : #systemctl restart mysql On peut maintenant tester à partir d’un client avec : #mysql -u nom_utilisateur -h IP_serveur_database -p Pour supprimer un utilisateur ou une base de données : #Mysql>drop database nom_de_la_database #Mysql>drop user nom_utilisateur Pour sécuriser de façon basique mysql : #mysql_secure_installation puis répondre aux questions. Pour GRR éditer tables.my.sql dans grr/installation puis corriger les fautes, pour pouvoir finir l’installation. ---- ==== MEMO COMMANDE ET CONFIG UBUNTU ==== Pour passer en root : #sudo su Pour afficher répertoire en cours : #pwd Pour afficher utilisateur en cours : #whoami Pour changer de répertoire : #cd /+chemin à rejoindre #cd+entrée (retour au dossier /home) #cd .. (remonte d’un niveau dans le chemin de fichier) #cd /+entrée (retour au dossier /) Pour nettoyer l’écran de toutes les commandes : #clear Pour voir toutes les commandes taper depuis ouverture de session : #history Pour pouvoir faire défiler le résultat d’une commande avec trop d’info : #commande | less espaces à bien respecter puis faire défiler résultat avec barre espace ou entrée. Exemple : #history | less Pour copier un fichier : #cp nomdufichiersource nomdufichierdestination Pour créer un nouveau répertoire : #mkdir nomdurépertoire Pour créer un fichier : #touch nomdufichier Pour effacer un fichier : #rm nomdufichier Pour déplacer un fichier : #mv nomdufichier /chemindestination Pour lister les fichiers dans le répertoire en cours : #ls #ll pour plus d’info Pour ouvrir un nouveau terminal : #alt+f2 ou f3 autant que vs voulez de terminal. Pour obtenir l’aide d’une commande : #commande –help Ou #man commande Pour lire le contenu d’un fichier config par exemple : #cat nom_du_fichier Pour l’éditer : #nano nom_du_fichier ou #vim nom_du_fichier Pour arreter un serveur : #init 0 ou shutdown -h Pour le redémarrer : #init 6 ou shutdown -r Pour connaitre version d’un paquet : #dpkg –s “nomdupaquet” Dans édition de fichier avec nano : Ctrl+w pour chercher un mot et ctrl+c pour connaître numéro de ligne actuelle Pour lister les processus : #top ou #htop ou #ps -ef ou bien ps -aux Pour tuer un processus « violemment » : #kill -9 PID_du_processus ---- ==== EDITEUR DE TEXTE VIM ==== Pour se déplacer dans VIM : | H | J | K | L | | GAUCHE | BAS | HAUT | DROITE | | Pour quitter sans enregistrer:| :q ! | | Pour quitter en enregistrant:| :wq | | Pour entrer en mode insertion taper: | i | | Pour entrer en mode visuel taper: | v | | Pour entrer en mode ligne de commande taper: | : | | Pour revenir au mode normal taper la touche: | esc | | Pour annuler une commande taper: | u | | Pour effacer taper: | d | | Pour une recherche taper: | / | | Pour aller en bas de page: | G | | Pour aller en haut de page: | g | | Pour remplacer mot dans ligne où est le curseur: | /s/mot_à_changer/nouveau_mot | | Pour remplacer mot dans la page: | %/s/mot_à_changer/nouveau_mot/g | | Copier une ligne: | dd | | Coller | p | il est possible d'éditer un document en utilisant cat par exemple: cat >> essai.txt < The “0” displaying the IPv6 is enabled. modif sysctl: #vim /etc/sysctl.conf Mettre les lignes suivantes: # Disabling the IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 Apply changes: #sysctl -p Update initramfs: #update-initramfs -u Vérif si OK: #sysctl net.ipv6.conf.all.disable_ipv6 Retour => The “1” is showing that the IPv6 has been disabled successfully. To enable the IPv6 on Debian 12 again, open the sysctl configuration file and remove the added line from it. ---- ==== DIG DNS ==== Installation: #apt install dnsutils #yum install bind-utils Syntaxe: #dig * – le nom d’hôte ou l’adresse IP à laquelle la requête est dirigée * – Le DNS (serveur de noms de domaine) du serveur à interroger * – Le type d’enregistrement DNS à récupérer. Par défaut (ou s’il est laissé vide), dig utilise le type d’enregistrement A EXEMPLE: #dig www.malekal.com La commande dig affiche ensuite 5 sections : * Un récapitulatif des drapeaux et en-tête : Les flag et quelques options DNS * OPT PSEUDOSECTION : * EDNS – Extension system for DNS si utilisé * Le cookie DNS si présent * Flags – vide car aucun drapeau n’a été spécifié * UDP – La taille du paquet UDP * Answer Section : la réponse DNS. Pour la supprimer, il faut utiliser +[no]answer * Authority section : les serveurs DNS faisant autorités. Celles-ci ne s’affichent que si vous effectué la recherche DNS avec les serveurs d’autorité. Pour l’afficher ou la retirer, on utilise +[no]authority. * Enfin la section STATISTICS avec des informations supplémentaires sur la requête DNS ; <<>> DiG 9.16.50-Debian <<>> www.malekal.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52679 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;www.malekal.com. IN A ;; ANSWER SECTION: www.malekal.com. 181 IN A 104.22.46.232 www.malekal.com. 181 IN A 172.67.28.10 www.malekal.com. 181 IN A 104.22.47.232 ;; Query time: 12 msec ;; SERVER: 192.9.200.201#53(192.9.200.201) ;; WHEN: Tue Feb 25 12:53:50 CET 2025 ;; MSG SIZE rcvd: 92 La section ANWSER est la plus importante : * La première colonne répertorie la recherche du nom de domaine qui a été interrogé * La deuxième colonne est Time-To-Live, un délai défini après quoi l’enregistrement est actualisé * La troisième colonne montre la classe de requête – dans ce cas, IN signifie Internet * La quatrième colonne affiche le type de requête – dans ce cas, «A» représente un enregistrement A (adresse) * La colonne finale affiche l’adresse IP associée au nom de domaine ;; ANSWER SECTION: www.malekal.com. 181 IN A 104.22.46.232 www.malekal.com. 181 IN A 172.67.28.10 www.malekal.com. 181 IN A 104.22.47.232 Par défaut, Dig utilise la configuration locale (/etc/resolv.conf) pour décider quel serveur de noms utiliser. Utilisez la commande suivante pour spécifier le serveur de domaine de Google : #dig @8.8.8.8 google.fr L’option -t vous permet d’obtenir certaines données DNS spécifiques. Par exemple pour faire une recherche des serveurs MX d’un domaine, utilisez -t mx : #dig -t mx google.fr De même par exemple pour afficher les entrées SPF : #dig -t txt google.fr Pour afficher uniquement l’adresse IP associée au nom de domaine, entrez ce qui suit : #dig google.fr +short Exécutez +noall +answer avec la commande Dig pour accéder aux informations détaillées dans la section answer : #dig google.fr +noall +answer L’option +trace répertorie chaque serveur différent que la requête passe jusqu’à sa destination finale. Utilisez cette option de commande pour identifier l’adresse IP où le trafic tombe. #dig google.fr +trace Pour connaitre le DNS d’une adresse IP (DNS inversé) : #dig -x 8.8.8.8 Dig peut aussi lire un fichier texte afin d’effectuer une recherche de DNS en mode batch Par exemple, créez le fichier dns.txt : #vim dns.txt Puis utilisez dig avec l’option -f pour spécifier ce dernier : #dig -f dns.txt +short Les informations affichées par DIG peuvent être modifiées dans le fichier ~/.digrc. Ouvrez le fichier pour l’édition avec la commande suivante: #sudo vim ~/.digrc Puis ajoutez les options dig souhaitées : +noall +noauthority +answer ---- ==== EN CAS DE NIC OU WIFI DESACTIVEE ==== Pour repérer le nom de la carte réseau: #ip add Activer la NIC: #ip link set eno1 up Redémarrer le service réseau: #systemctl restart networking.service WIFI: Si vous avez perdu votre connexion Wi-Fi après l’installation de Debian, créez temporairement une connexion Internet sans-fil : Identifiez l’interface de votre carte Wi-Fi (ex. : wlp2s0) : #iwconfig Activez l’interface : #ip link set [interface] up Recherchez les points d’accès Wi-Fi accessibles : #iwlist scan | grep SSID Générez un fichier de configuration à partir du nom de votre point d’accès Wi-Fi et sa clé de sécurité : #wpa_passphrase [ssid] [clé_de_sécurité] > /etc/wpa_supplicant/home.conf Démarrez la connexion sans-fil en arrière-plan : #wpa_supplicant -B -D[pilote] -i[interface] -c[/chemin/vers/fichier/conf] #wpa_supplicant -B -Dwext -iwlp2s0 -c/etc/wpa_supplicant/home.conf Récupérez l’adresse IP depuis l’interface : #dhclient [interface] ---- ==== ROUTAGE ==== [[https://www.linode.com/docs/guides/linux-router-and-ip-forwarding/?tabs=iptables|Tuto routage Ubuntu]] Pour activer le routage : #nano /etc/sysctl.conf puis décommenter la ligne : #net.ipv4.ip-forward=1 faire un ctrl+O, entrée, ctrl+X. Puis redémarrer le serveur avec init 6. Pour activer le relais DHCP : #apt install isc-dhcp-relay Puis configurer soit pendant l’installation du paquet ou après en allant dans : #nano /etc/default/isc-dhcp-relay renseigner adresse serveur dhcp + interfaces concernées (mettre des espaces entre les interfaces) puis ctrl+O, entrée, ctrl+X. Si modification réinitialiser le service avec : /etc/init.d/isc-dhcp-relay restart ---- ==== CONFIGURATION TGT POUR DISQUE SAN ==== Sur le serveur SAN installer le paquet avec : #Apt install tgt Puis créer un fichier de configuration avec : #Nano /etc/tgt/conf.d/target01.conf Y inscrire ce qui suit : (libre de choix pour les infos écrites) (tabulation)backing-store /dev/sdb1 Puis ctrl+O, entrée, ctrl+X. Redémarrer le service avec : #Systemctl restart tgt Pour vérifier la conf de TGT taper : #tgt-admin -s Puis dans l’ESXi : Actualiser, puis voir dans périphérique si IET est présent et dans adaptateur si ISCSI est présent => normalement c’est ok. Puis créer nouvelle banque de données dans banque de donnée. Si problème de reconnaissance du format du disque : 1. Activer l’accès ssh sur l’ESXi 2. Se connecter avec PUTTY 3. Repérer l’ID du disque dans stockage>périphériques 4. Puis taper cette commande : #partedutil mklabel /dev/disks/ID_du_disque msdos Vérifier si le format est reconnu puis créer votre nouvelle banque de données. ---- ==== LOCATE ET FIND LINUX ==== Installer le service locate avec : #apt install mlocate Puis initialiser la base de données : #updatedb On peut maintenant chercher un fichier : #locate nom_du_fichier Pour une recherche avec FIND: find -name "" Pour être insensible à la casse: find -iname "" Pour éviter les erreurs en cas de défaut d'accès root: find -name "" 2> /dev/null Recherche par type de fichier: find /var/log/ -type f -name "*sm*" Recherche par type de dossier: find /var/log/ -type d -name "*sm*" Recherche par taille de fichier ex. entre 20 et 40 Mo: find /Téléchargements -size +20M -size -40M Recherche par user: find /tmp -user adrien Sur tous les fichiers trouvés par find, je veux appliquer une commande, on va utiliser l'option -exec. Exemple : tous les fichiers dont l'UID de l'utilisateur est 500, je veux effectuer un chown pour changer son propriétaire : find / -uid 500 -exec chown adrien {} \; Autre exemple de suppression de fichiers dont l'extension finit par .test dans /tmp : find /tmp -type f -name "*.test" -exec rm -i {} \; On peut lister les fichiers vides : find /tmp -type f -empty Et les dossiers avec : find /tmp -type d -empty ---- ==== Gérer les fichiers volumineux ==== Filtrer les dossiers volumineux: #du -Sh | sort -rh | head -5 Ensuite on peut filtrer les fichiers avec: #find /home -type f -size +100M -printf '%s %p\n' | sort -nr | head -10 => top 10 du plus grand au plus petit ---- ==== Commande GREP ==== Pour une recherche de mot basique: #grep -rin -C 2 "occurence" /home/ => r: récursivité; i: non sensible à la casse; n: numéro de ligne dans le fichier; -C 2: pour 2 lignes av et ap l'occurence ---- ==== POUR ACCEDER A UN DOSSIER PARTAGE WINDOWS A PARTIR D’UN POSTE LINUX ==== PARTIE 1 : Installer le paquet cifs-utils : #apt install cifs-utils Créer le répertoire pour accueillir le lecteur réseau : #mkdir -p /home/nom_du_point_de_montage Pour créer le lien taper : #mount -t cifs //IP_du_serveur_windows/nom_du_partage -o username=nom_utilisateur,password=mot_de_passe /home/nom_du_point_de_montage Puis vérifier si le lien est établi avec : #cd /home/point_de_montage PARTIE 2 : Pour faciliter un futur accès à ce point de montage on peut créer un script à exécuter : #echo mount -t cifs //IP_du_serveur_windows/nom_du_partage -o username=nom_utilisateur,password=mot_de_passe /home/nom_du_point_de_montage > nom_du_fichier.sh Rendre le fichier exécutable avec : #chmod u+x nom_du_fichier.sh Maintenant pour monter le dossier de partage taper : #./nom_du_fichier.sh ---- ==== POUR BACKUP BASE DE DONNEES LINUX VERS WINDOWS ==== Créer d’abord un utilisateur qui aura à lui seul les droits de lecture et d’écriture sur un nouveau dossier de partage dédié au backup sur le serveur Windows. Lors de la création de l’utilisateur, dans les options de mot de passe, cocher « l’utilisateur ne peut pas changer de mot de passe » et « le mot de passe n’expire jamais ». Ensuite pour le serveur linux, reprendre la partie 1 du chapitre « POUR ACCEDER A UN LECTEUR RESEAU WINDOWS A PARTIR D’UN POSTE LINUX ». Puis créer un script Shell (par exemple backup.sh) dans le répertoire /root avec : #nano backup.sh Y inscrire les commandes suivantes : Umount /home/point_de_montage mount -t cifs //IP_srv_windows/partage_windows -o username=nom_utilisateur,password=mot_de_passe /home/point_de_montage mysqldump nom_base_de_données > /home/point_de_montage/nom_base_de_données.sql umount /home/point_de_montage Puis enregistrer avec ctrl+O, entrée, ctrl+X. Rendre ce script exécutable avec : #chmod 770 backup.sh On peut tester ce script avec la commande : #./backup.sh Pour planifier une sauvegarde automatique éditer le crontab avec : #crontab -e Dans le crontab la syntaxe est : | M | H | DOM | MON | DOW | COMMAND | | MINUTE | HEURE | Jour du mois | MOIS | Jour de la semaine | par ex: apt update | Par exemple, exécution du script backup.sh placé dans le répertoire /root, tous les jours, tous les mois à 12H00 : 0 12 * * * /root/backup.sh puis taper ctrl+O, entrée, ctrl+X. Pour lire les taches d'un crontab : #crontab -l et pour celui d'un user : #crontab -u user -l pour tous les users faire un alias avec : alias cronall='for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" && crontab -u $user -l; done' Il vous suffit ensuite de faire appel à cronall : #cronall lister tous les scripts : #ls -al /etc/cron.* ---- ==== IMAPSYNC ==== Installer imapsync [[https://github.com/imapsync/imapsync]] puis: imapsync --host1 IP_SERVER_IMAP1 --user1 EMAIL_USER1 --password1 PASSWD_USER1 --host2 IP_SERVER_IMAP2 --user2 EMAIL_USER2 --password2 PASSWD_USER2 --subfolder2 "dossier_dump" --exclude 'Outbox|Junk|Trash|Sent|Drafts|Templates' --nofoldersizes --buffersize 8192000 ajouter option --justfolders et --dry pour faire des tests ---- ==== SERVEUR FTP SUR LINUX ==== Installer le paquet proftpd : #apt install proftpd Decommenter la ligne #defaultroot dans le fichier conf : #nano /etc/proftpd/proftpd.conf puis ctrl+O, entrée, ctrl+X. Redémarrer le service : #service proftpd restart Créer un utilisateur (même nom et mdp que dans l’AD): #adduser utilisateur (renseigner le mot de passe) Tester du poste client (par ex :windows 10) dans explorateur de fichier : #ftp://utilisateur@IP_du _serveur_ftp -> puis renseigner le mdp ---- ==== BACKUP SERVEUR EXTRANET (GLPI) VERS SERVEUR-BDD LINUX VERS LINUX ==== PARTIE 1 : Sur le serveur BDD, installer le service SAMBA : #apt install samba Créer un utilisateur (ici :backweb) : #adduser backweb -> renseigner le mdp Associer cet utilisateur au service SAMBA : #smbpassword backweb -> renseigner le mdp Créer le dossier de partage : #mkdir /disk2/backupweb Rendre l’utilisateur propriétaire du dossier : #chown -R backweb:backweb /disk2/backupweb Editer le fichier conf de SAMBA pour créer un profil : [backupweb] path = /disk2/backupweb writeable = yes browseable = no valid users = backweb Enregistrer avec ctrl+O, entrée, ctrl+X. Redémarrer le service : #service smbd restart PARTIE 2 : Sur le serveur extranet, installer le service CIFS-UTILS : #apt install cifs-utils Créer le point de montage : #mkdir /mnt/backup On peut établir un lien pour tester avec : #mount -t cifs //IP_srvBDD/backupweb /mnt/backup -o user=backweb,password=mdp On peut scripter les sauvegarde (plus une compression des données avec tgz) : #nano backup.sh Y inscrire les commandes suivantes : Umount /mnt/backup Mount -t cifs //IP_srvBDD/backupweb /mnt/backup -o user=backweb,password=mdp tar -zcvf /mnt/backup/glpi.tar.gz /disk2/glpi Umount /mnt/backup puis ctrl+O, entrée, ctrl+X. Rendre le script exécutable : #chmod 770 backup.sh On peut ensuite le mettre dans un crontab pour planifier la sauvegarde (voir chapitre POUR BACKUP BASE DE DONNEES LINUX VERS WINDOWS). On peut également horodater la sauvegarde en remplacent la ligne de commande : tar -zcvf /mnt/backup/glpi.tar.gz /disk2/glpi par : tar -zcvf /mnt/backup/glpi_’date +%d%m%y-%H%M’.tar.gz /disk2/glpi Pour la décompresser: tar -zxvf ... ---------------------------------------------------------------------------------------------------------- ==== COMMANDES A RETENIR ==== ^ Commande ^ Description ^ | last ou lastb | voir historique de logging ou logging raté (avec -i pour voir IP)| | cat /etc/*release | Affiche la version de l'OS | | cat /proc/partitions | Affiche la liste des disques et partitions avec leur id | | ls /dev/{v,s}d* | Affiche les partitions sous forme de fichier de type bloc | | blkid | Affiche les identifiants uniques (UUID) des partions | | lsblk | Affiche la list des partitions et disques | | lsb_release -d ou -a | Affiche la version de l'OS | | findmnt | Affiche les points de montage | | df -h | Affiche les points de montage avec des informations sur le système de fichier | | du | Affiche l’espace réel occupé par des fichiers | | fdisk | Permet de manipuler tables de partitions MBR | | gdisk | Permet de manipuler tables de partitions GPT | | mkfs.* | Binaires qui permettent de préparer des systèmes de fichier | | cat /etc/fstab | Affiche les points de montage autmatiques au démarrage | | cat /proc/version | Affiche la version de linux | | cat /etc/mtab | Affiche les points de montage courant du système | | mount | Commande qui permet de monter des systèmes de fichier | | mount -a | Monte les systèmes de fichier renseigné dans /etc/fstab | | mkswap | Fabrique une mémoire swapd | | swapon | Monte une mémoire swap | | swapoff | Démonte une mémoire swap | | partprobe | Programme qui la la table de partition et en informe le noyau | | fsck.* | Vérifie un système de fichier EX | | dumpe2fs | Affiche les informations sur les blocs et super-blocs EXT | | xfsdump, xfsrestore | Permet de sauvegarder/restaurer un système de fichier XFS | | debugfs | Diagnostic sur des systèmes de fichier EXT | | tune2fs | Configure des paramètres de configuration des systèmes de fichier EXT | | xfs_info, xfs_check et xfs_repair | Diagnostic de systèmes de fichiers EXT | | smartd, smartctl | Utilitaires pour gérer “SMART self-test and error logs” | | mdadm.conf | Fichier de configration RAID logiciel | | mdadm | Permet de manipuler les configuration RAID logiciel | | cat /proc/mdstat | Affiche les informations RAID logiciel | | journalctl --since "2025-12-03 13:00:00" --until "2025-12-03 16:00:00" | affiche les logs | ---- ==== DATE APPROXIMATIVE D'INSTALLATION OS ==== #ls -lct /etc | tail -1 | awk '{print $6, $7, $8}' 10 janv. 08:17 #df / | awk '{print $1}' | grep dev | xargs tune2fs -l | grep create Filesystem created: Fri Jan 10 08:16:17 2025 dumpe2fs -h $(df | awk '/\/$/ {print $1}') | grep created dumpe2fs 1.47.0 (5-Feb-2023) Filesystem created: Fri Jan 10 08:16:17 2025 ---- ==== Use Systemd to Run Scripts at Boot ==== [[https://www.tecmint.com/create-new-service-units-in-systemd/|tecmint page]] ----