Catégorie : Mémo

4 août 2015 /

Pour faire transiter des paquets d’une interface réseau à une autre, il faut activer l’Ip Forwarding.
Cette fonctionnalité doit être activée manuellement.

C’est souvent utilisée lorsque l’on cherche à partager sa connexion, faire d’une machine Linux un routeur entre plusieurs réseaux, mais aussi lorsqu’on fait de l’écoute réseau (attaque Man in the middle notamment).

Pour activer l’ip forwarding jusqu’au prochain redémarrage:

echo 1 >/proc/sys/net/ipv4/ip_forward

et pour Ipv6

echo 1 >/proc/sys/net/ipv6/ip_forward

ou

sysctl -w net.ipv4.ip_forward=1

et pour Ipv6

sysctl -w net.ipv6.conf.all.forwarding=1

 

Pour activer l’ip forwarding définitivement, il faut aller modifier le fichier de configuration de sysctl pour qu’il charge nos modifications à chaque démarrage, il s’agit du fichier “/etc/sysctl.conf”. Il faut ajouter/décommenter cette ligne :

net.ipv4.ip_forward = 1

et pour Ipv6

net.ipv6.conf.all.forwarding=1

Puis il faut recharger la configuration pour que les modifications soient prises en compte.

sysctl -p /etc/sysctl.conf

4 août 2015 /

Il ya une idée répandue parmi les utilisateurs de Linux qui est fausse. A savoir que nos disques n’ont jamais besoin d’être défragmenté. Cette situation découle de la performance des systèmes de fichiers utilisés par la plupart des distributions, y compris EXT2,3 et 4, JFS, XFS, ZFS, ReiserFS et BTRFS. Tous ont une façon intelligente de fonctionnement  et de techniques en ce qui concerne l’allocation des fichiers dans les disques, en minimisant le problème de la fragmentation à un tel point qu’il n’y a pratiquement aucune raison de défragmenter son disque même après de nombreuses années d’utilisation, d’installation et de désinstallation d’applications et de bibliothèques.

Les fichiers sont stockés à plusieurs endroits sur le disque, laissant d’immenses espaces entre eux, leurs permettant de grandir au fil du temps si nécessaire, contrairement aux systèmes de fichiers comme les NTFS, qui place les fichiers côte à côte.
Si le disque devient saturé et qu’un fichier a besoin de plus d’espace sans découper le fichier, Un système de fichiers Linux tentera de réécrire complètement le fichier sur un autre secteur qui a assez d’espace pour le stocker en entier. De cette façon, tout est propre, bien rangé et sur tout, en un seul morceau. Cela va générer au fil du temps des espaces vide sur le disque.

Voici donc comment faire face à ce problème et comment défragmenter son disque sous Linux:

La première chose à faire c’est d’installer un outil de défragmentation. Il y a beaucoup de défragmenteurs disponibles pour de Linux, je vais utiliser « e4defrag», il y a de grande chance qu’il soit déjà installé sur votre système. Le programme de e4defrag fait partie du paquet e2fsprogs qui devrait déjà être installé sur votre ordinateur.

Dans le cas où le programme est manquant, vous pouvez l’installer avec cette commande sur Ubuntu:

sudo apt-get install e2fsprogs

Grâce à cet outil, vous pouvez déterminer si vous avez des fichiers fragmentés et le niveau de gravité de la fragmentation.
Pour cela, ouvrez un terminal et tapez:

sudo e4defrag -c /emplacement

Ici, j’ai scanné mon /home et e4defrag a trouvé cinq fichiers fragmentés. Mon niveau de fragmentation est cependant assez faible donc une défragmentation ne fera pas beaucoup différente en termes de performance pour mon système dans ce cas de figure.

e4defrag

Si cette sortie rapportée plus de « 30 » fichiers fragmentés, une petite défragmentation serait une bonne idée.

 

Voyons maintenant comment défragmenter ses fichiers.
Dans un premier temps, je vais montrer comment défragmenter ses fichiers fragmentés un par un.

Pour ce faire, on utilise la commande ed4defrag suivit du chemin du fichier:

sudo e4defrag /chemin/fichier/fragmenté

Exemple en image:

e4defrag2

Maintenant si vous souhaitez défragmenter un disque entier, alors vous devrez d’abord démonter toutes les partitions puis d’exécuter la commande suivante:

sudo e4defrag /dev/*

Si vous souhaitez défragmenter le disque entier sans démonter les partitions:

sudo e4defrag /

Si vous avez un SSD, il est tout simplement inutile de se soucier de fichiers fragmentés car ces disques peuvent accéder à leurs cellules stockage au hasard, alors que les disques durs le font séquentiellement.
Défragmenter votre SSD ne fera qu’augmenter le nombre d’accès en lecture/écriture et ainsi réduire sa durée de vie.

3 août 2015 /

Pour supprimer tous les fichiers « .db » a partir du répertoire courant:

find . -type f -name "*db" -exec rm -f {} \;

Pour supprimer tous les fichiers « .db » à partir de la racine en demandant une confirmation:

find . -type f -name "*.db" -exec rm -i {} \;

Pour supprimer tous les repertoires se terminant par « db » à partir du répertoire courant:

find . -type d -name "*db" -exec rm -rf {} \;

2 août 2015 /

Logrotate est conçu pour faciliter l’administration des systèmes qui génèrent un grand nombre de journaux. Il automatise la permutation, la compression, la suppression, et l’envoi des journaux. Chaque journal peut être traité quotidiennement, hebdomadairement, mensuellement, ou quand il devient trop volumineux.

Il est lance automatiquement via /etc/cron.daily/logrotate.

La configuration de logrotate se fait en deux parties :

  • 1 –  les options générales (le fichier de configuration par défaut est /etc/logrotate.conf)
  • 2 –  les fichiers à archiver et les options spécifiques à leurs archivages (les fichiers particuliers se trouvent dans /etc/logrotate.d/).

1 – Voici un exemple de /etc/logrotate.conf:

# see "man logrotate" for details
# Fréquence de rotation par défaut :
weekly
# Utilise par defaut le groupe syslog, avec l'utilisateur roots
su root syslog
#nombre de semaine où sont conservé les logs ( a cause de weekly plus haut)
rotate 4
# Lors d'une rotation, un fichier de remplacement est créé avec les droits 0640 appartenant à
# root et au groupe root.
create 0640 root root
# Le fichier sur le point d'expirer est envoyé à cette adresse:
mail starmate@entropia
# Insertion de la date dans l'archivage des journaux.
dateext
# Les logs sont compréssé avant rotation :
#compress
# Inclusion des scripts propres aux logs.
include /etc/logrotate.d
# Définition de la rotation des logs de wtmp et btmp :
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here

 

Voici les options les plus utilisés:

  • compress : impose la compression des anciens fichiers de log au format gzip.
  • compresscmd Permet de définir la commande à exécuter pour la compression.
  • compressext, uncompresscmd et compressoptions Permettent respectivement de définir l’extension des fichiers compressés, la commande utilisée pour décompresser les archives et les options de compressions à passer a l’outil de compression.
  • copytruncate : copie le fichier de log original, le compresse et vide ensuite le journal système d’origine. Cette notion est très importante car elle répond aux problème du type : “je logue dans le fichier que j’archive…” qui peut poser quelques problèmes à certains services…
  • create : Permet de spécifier les droits, le propriétaire et le groupe auquel un nouveau fichier de log vide devra appartenir après avoir été archivé.
  • daily, weekly, monthly et yearly : Spécifie quand un fichier doit être archivé.
  • dateext : Par défaut, les fichiers archivés sont numéroté de 1 à N, l’option dateext remplace cette numérotation par la date. Si le format de date par défaut ne vous convient pas, il peut être spécifié par l’option “dateformat“.
  • dateformat -%Y-%m-%d:  Spécifie la façon dont est écris la date sur le fichier archivé. Les valeurs par defaut sont  -%Y%m%d.
  • dateyesterday: Utilisez la date d’hier au lieu d’aujourd’hui pour créer l’extension dateext , de sorte que le fichier en rotation possède une date dans son nom qui soit la même que ses données.
  • delaycompress : Reporte la compression du journal précédent au prochain cycle de permutation. Ceci n’a un effet qu’utilisé en combinaison avec l’option compress. Elle peut être utilisée quand il n’est pas possible de demander à un programme de fermer son journal et qu’il puisse par conséquent continuer à écrire pour un moment dans le journal précédent.
  • extension log:  Vous avez un fichier journal nommé journal.log et que vous voulez le faire pivoter à journal.1.log.gz lieu de journal.log.1.gz .
  • ifempty : oblige la rotation des logs même si le fichier est vide… (ce qui simplifie les recherche parfois…).
  • include fichier_repertoire: Permets de renseigner un fichier ou répertoire contenant une configuration a prendre en compte.
  • mailfirst, maillast, mail adresse@domain : après un certain délais, les archives peuvent être automatiquement détruites. Dans ce cas, si maillast est définit, le fichier détruit est envoyé par mail a l’adresse spécifiée par la variable “mail“. Si mailfirst est définit, c’est la dernière rotation qui est expédiée.
  • maxage : définit l’age maximum des archives (en jours).
  • maxsize: demande la rotation des log si le fichier fait au maximum la taille définie par cette variable.
  • minsize : demande la rotation des log si le fichier fait au minimum la taille définie par cette variable.
  • missingok : aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
  • notifempty : n’archive aucun fichier vide.
  • nocompress: Les vieux log ne sont pas compressés.
  • nocopytruncate: Ne tronque pas le journal original en place après avoir créé une copie (ceci outrepasse l’option copytruncate).
  • nocreate: Les nouveaux journaux ne sont pas créés (ceci outrepasse l’option create).
  • nodelaycompress: Ne reporte pas la compression du journal précédent au prochain cycle de permutation (ceci outrepasse l’option delaycompress).
  • nomail: N’envoie aucun journal.
  • nomissingok: Si un journal n’existe pas, produit une erreur (ceci est la valeur par défaut).
  • noolddir: Les journaux sont permutés dans le répertoire où ils résident normalement (ceci outrepasse l’option olddir).
  • size : les fichiers ne sont archivés que si leur taille dépasse la valeur définie ici.
  • olddir : précise le répertoire dans lequel placer les archives.
  • prerotate, postrotate/endscript : définissent respectivement une séquence de script à effectuer avant ou après la rotation des logs (redémarrage d’un service, etc.).
  • firstaction, lastaction/endscript : définissent des séquences de scripts à exécuter avant et après avoir archivé les logs.
  • rotate : spécifie le nombre d’archives a conserver. Passé ce nombre les archives sont soit détruite (comportement par défaut) soit envoyées par mail voir mail* ci dessus.
  • sharedscripts : permet d’executer qu’ une fois le script postrotate par rotation
  • shred: Supprime les log en utilisant shred
  • start count: C’est le chiffre à utiliser pour commencer la numérotation. Par exemple , si vous spécifiez 0 , les journaux seront créé en commençant la numérotation par 0. Si vous spécifiez 9 , les fichiers journaux seront créés avec un en commençant par 9 , en sautant 0 à 8 .
  •   tabooext [+] list: Change la liste courante des extensions taboues (voir la directive include pour les informations sur les expressions taboues). Si un + précède la liste d’extensions, la liste courante des expressions taboues est augmentée, sinon elle est remplacée. Au démarrage, la liste des extensions taboues contient .rpmorig, .rpmsave, .v et ~.

2 – Déclarer les fichiers à archiver

Voici comment on déclare un fichier de log pour le mettre dans la rotation (à mettre dans un fichier spécifique dans le répertoire /etc/logrotate.d/:

/chemin/du/fichier/nom_du_fichier_log {
options propres au fichier
}

Exemple avec dpkg:

cat /etc/logrotate.d/dpkg

/var/log/dpkg.log {
monthly #tous les mois
rotate 12 #conserve 12 fichiers
compress #compresse les fichiers
delaycompress #Reporte la compression du journal précédent sur le prochain
missingok #aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
notifempty # n’archive aucun fichier vide.
create 644 root root #lors d'une rotation, un fichier est créé avec les droits 0640 appartenant à root:root.
}
/var/log/alternatives.log {
monthly #tous les mois
rotate 12 #conserve 12 fichiers
compress #compresse les fichiers
delaycompress #Reporte la compression du journal précédent sur le prochain
missingok #aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
notifempty # n’archive aucun fichier vide.
create 644 root root #lors d'une rotation, un fichier est créé avec les droits 0640 appartenant à root:root.
}

Une fois la configuration terminée, on peut forcer sont exécution:

logrotate -f  /etc/logrotate.conf

en mode Debug:

logrotate -d /etc/logrotate.conf

30 juillet 2015 /

On commence par lister les disques détectés:

fdisk -l

Pour partitionner votre disque en ligne de commande, on utilise la commande fdisk suivie du nom du disque sur lequel vous voulez installer Linux, par exemple:

fdisk /dev/sda.

tapez m, afin d’accéder à la liste de toutes les commandes possibles.

fdisk3

On choisi les options à appliquer en entrant des lettres, généralement des initiales de ce pour quoi c’est programmé.

Les principales commandes de fdisk sont donc :

a   bascule le drapeau d'amorce
b   éditer l'étiquette BSD du disque
c   basculer le drapeau de compatibilité DOS
d   supprimer la partition
l   lister les types de partitions connues
m   afficher ce menu
n   ajouter une nouvelle partition de type linux native (ext2fs) par défaut.
o   créer une nouvelle table vide de partitions DOS
p   afficher la table de partitions
q   quitter sans enregistrer les changements
s   créer une nouvelle étiquette vide pour disque de type Sun
t   modifier l'identifiant de système de fichiers d'une partition (83 linux native, 82 linux swap).
u   modifier les unités d'affichage/saisie
v   vérifier la table de partitions
w   écrire la table sur le disque et quitter
x   fonctions avancées (pour experts seulement)

Rappel: rappelez-vous que le nombre de partitions dites primaires est limité à 4. Donc, si vous souhaitez définir plus de 4 partitions sur le même disque, l’une de ces 4 partitions primaires doit être définie comme étendue.

Pour regarder les partitions que nous avons sur notre disque, on tape  « p » dans la console :

fdisk2

On vas supprimer maintenant la partition  /dev/sdb1 comme cela :

fdisk4

Nous allons créer une partition primaire sur la totalité de l’espace:

fdisk5

Fdisk nous demande le type de partition ( » p  » pour primaire et  » e  » pour étendue):

fdisk6

Taper Entrer pour validez la valeur par defaut.

Pour sauvegarder et quitter l’utilitaire et créer la table des partitions sur le disque il suffit d’utiliser la lettre w :

fdisk7

Pour avoir une prise en compte des partitions créés sans avoir à redémarrer:

partx -v -a /dev/sdb

Si cela ne fonctionne pas, redémarrez votre machine….

Il ne vous reste plus qu’à créer le système de fichiers pour les partitions créés grâce à une commande de type mke2fs (ext2), mkreiserfs (ReiserFS), mkfs.ext4 (ext4).

Pour formater sa partition en ext3:

mkfs.ext3 -b 4096 /dev/sdb1

Pour formater sa partition en ext4:

mkfs.ext4 -b 4096 /dev/sdb1

Pour une partition swap:

mkswap /dev/sdb5

Il ne vous restera plus qu’à créer un point de montage, du genre mkdir /media/starmate, puis monter la partition dans ce répertoire, par exemple mount /dev/sdb1 /media/starmate.