Notes 1

différences debian / redhat

  • Red Hat -> hierarchie des dépendances mieux organisée
  • fichiers de configuration debian différents sur autres distrib -> exemple conf apache sur debian via ln différents sur centos debian impose l'organisation des répertoires de conf

éditeurs de fichiers

  • vi / vim (featured riched)

déploiements auto

  • Ansible monter une machine Maarch sur Gandi reverse port ssh (solution temporaire) ou VPN privé (solution permanente) -> on peut le faire sans le dire au client via teamviewer possibilité de faire du local avec ansible (fonctionnalité cachée) -> ansible pull les deux solutions sont envisageables pour les collectivités 15 mins pour tout déployer

/var/spool

cron

  • pour voir la liste des crontabs user /var/spool/cron/crontabs/

postfix

  • tous les mails qui n'ont pas été envoyés se retrouve /var/spool/mail

ps

  • ps -faux -> le f donne l'arborescence de dépendance d'exécution utile pour repérer les process créés par des hackers
  • kill ne tue pas le process -> il envoie un signal au processus (SIGTERM) termine proprement le processus kill -9 -> ferme violement le processus kill -l -> donne tous les signaux

divers

  • httpd -> http deamon -> nom du service apache sous les autres distribs de debian

services

systemd

  • la solution de gestion des services uptodate
  • la solution sur toutes les distrib aujourd'hui
  • un deamon qui gère tous les autres processus du systeme le process 1 de la machine est systemd -> c'est lui qui va lancer tous les autres process /sbin/init -> /lib/systemd/systemd est un lien symbolique vers systemd

    sudo systemctl status apache2 charge la conf de démarrage d'apache /lib/systemd/system/apache2.service

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=https://httpd.apache.org/docs/2.4/

[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort

[Install]
WantedBy=multi-user.target

Restart=on-failure -> redémarre si le process est tombé inopinément

    ● apache2.service - The Apache HTTP Server
    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
    Active: active (running) since Wed 2019-08-21 10:48:06 CEST; 8min ago
        Docs: https://httpd.apache.org/docs/2.4/
    Process: 14895 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
    Main PID: 14914 (apache2)
        Tasks: 7 (limit: 4915)
    Memory: 35.3M
    CGroup: /system.slice/apache2.service
            ├─14914 /usr/sbin/apache2 -k start
            ├─14936 /usr/sbin/apache2 -k start
            ├─14937 /usr/sbin/apache2 -k start
            ├─14938 /usr/sbin/apache2 -k start
            ├─14939 /usr/sbin/apache2 -k start
            ├─14940 /usr/sbin/apache2 -k start
            └─14941 /usr/sbin/apache2 -k start

    août 21 10:48:06 lgi-pc systemd[1]: Starting The Apache HTTP Server...
    août 21 10:48:06 lgi-pc apachectl[14895]: [Wed Aug 21 10:48:06.576646 2019] [so:warn] [pid 14911] AH01574: module php7_module is already loaded, skipping
    août 21 10:48:06 lgi-pc apachectl[14895]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName
    août 21 10:48:06 lgi-pc systemd[1]: Started The Apache HTTP Server.
  • pour modifier comment démarre les services il faut toucher à /etc/systemd/system/

  • pour prendre en compte les modifs de la conf de systemd : systemctl daemon reload

sysV

  • démarrage séquentiel
  • ex : /etc/init.d/apache2 restart

upstart

  • pour debian ou ubuntu, démarrage séquentiel

variables d'environnements

  • la déclaration des variables d'environnements des services se trouvent par défaut dans /etc/default/
  • echo $PATH donne le chemin des répertoires contenants des exécutables directement accessibles
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
    
    important pour le cron de la setter pour qu'il trouve bien tous les programmes à exécuter, ça peut être un cas d'erreur au cas où le cron n'arrive pas à exécuter une commande export PATH="$PATH:/opt/..."

connaitre d'où vient une erreur

history

  • pour connaitre la liste des commande tapées stocké dans /home/lgi/.bash_history
  • effacer ses traces pour éviter de retaper des dernières commandes dangereuses unset HISTFILE
  • si l'historique des commandes n'est pas historisé à la deconnexion c'est parceque l'on a plusieurs onglets ouverts (le dernier enregistrement a raison)

personnalisation du bash

  • echo $PS1 donne la chaine d'affichage du prompt

contrôles

  • ctrl-d envoie une fin d'entrée -> utilisation pour les envoies de mail par exemple pour terminer
  • ctrl-c envoie un sigterm : exit
  • ctrl-z on détache un processus -> met un process en pause et nous rend le shell bg -> on repasse le process en route fg -> on remet le process en pause
  • ctrl-s met en pause
  • ctrl-q relance le process après une pause

nohup ou detach

  • ctrl-z + bg + detach (à installer via psutils) -> permet de lancer une commande en arrière plan et de la laisser tourner malgré que l'on coupe la session ssh
  • commandes nohup -> lance une commande en arrière plan directement et ignore les signaux de fin -> pratique

screen

  • un outil puissant notamment utile pour partager une session shell
  • est un deamon qui va nous permettre de faire de la session par le deamon
  • ouvre une nouvelle session dans screen -> utile pour partager une session shell
  • faire un tutoriel pour bien comprendre tout ce que l'on peut faire avec
  • learning curl raide

file descriptor

  • un id d'ouverture de fichiers (filehandler en php)
  • le kernel gere cela
  • 0 -> entrée standard -> stdin -> ex clavier
  • 1 -> sortie standard -> stdoud -> ex écran
  • 2 -> sortie erreur -> stderr -> ex écran

pour enchainer des programmes on utilise le | &1 | &0 la sortie standard du premier programme est passée à l'entrée standard du 2ie programme ex :

    ps -aux  | grep apache
    $$ donne le pid de notre shell courant

sudo ls -al /proc/$$/fd -> donne les files descriptors de notre shell courant on peut remplacer $$ par un pid

sudo ls -al /proc/14941/fd
total 0
dr-x------ 2 root root  0 août  21 11:09 .
dr-xr-xr-x 9 lgi  lgi   0 août  21 10:48 ..
lr-x------ 1 root root 64 août  21 11:09 0 -> /dev/null
l-wx------ 1 root root 64 août  21 11:09 1 -> /dev/null
l-wx------ 1 root root 64 août  21 11:09 10 -> /var/log/apache2/access.log
lrwx------ 1 root root 64 août  21 11:09 11 -> '/tmp/.ZendSem.TvBF6r (deleted)'
lrwx------ 1 root root 64 août  21 11:09 12 -> 'anon_inode:[eventpoll]'
l-wx------ 1 root root 64 août  21 11:09 2 -> /var/log/apache2/error.log
lrwx------ 1 root root 64 août  21 11:09 3 -> 'socket:[1402717]'
lrwx------ 1 root root 64 août  21 11:09 4 -> 'socket:[1402718]'
lrwx------ 1 root root 64 août  21 11:09 5 -> 'socket:[1402721]'
lrwx------ 1 root root 64 août  21 11:09 6 -> 'socket:[1402722]'
lr-x------ 1 root root 64 août  21 11:09 7 -> 'pipe:[1403430]'
l-wx------ 1 root root 64 août  21 11:09 8 -> 'pipe:[1403430]'
l-wx------ 1 root root 64 août  21 11:09 9 -> /var/log/apache2/other_vhosts_access.log

lsof

/proc permet de gérer la ram du system notamment


sudo lsof -p 14941
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
lsof: WARNING: can't stat() fuse file system /run/user/1000/doc
      Output information may be incomplete.
COMMAND   PID USER   FD      TYPE  DEVICE SIZE/OFF     NODE NAME
apache2 14941  lgi  cwd       DIR   259,2     4096        2 /
apache2 14941  lgi  rtd       DIR   259,2     4096        2 /
apache2 14941  lgi  txt       REG   259,2   687944 10896646 /usr/sbin/apache2
apache2 14941  lgi  mem       REG   259,2   282752  6029823 /lib/x86_64-linux-gnu/libnss_systemd.so.2
...
apache2 14941  lgi    0r      CHR     1,3      0t0        6 /dev/null
apache2 14941  lgi    1w      CHR     1,3      0t0        6 /dev/null
apache2 14941  lgi    2w      REG   259,2     1333   393612 /var/log/apache2/error.log
apache2 14941  lgi    3u     sock     0,9      0t0  1402717 protocol: TCP
apache2 14941  lgi    4u     IPv6 1402718      0t0      TCP *:http (LISTEN)
apache2 14941  lgi    5u     sock     0,9      0t0  1402721 protocol: TCP
apache2 14941  lgi    6u     IPv6 1402722      0t0      TCP *:https (LISTEN)
apache2 14941  lgi    7r     FIFO    0,12      0t0  1403430 pipe
apache2 14941  lgi    8w     FIFO    0,12      0t0  1403430 pipe
...

permet de voir par exemple si php a bien chargé une librairie complémentaire : ex php-ldap

modes d'installation d'un OS

  • CD/USB/NETINSTALL -> ISO
  • PXE -> install via le BIOS sur le réseau au moment du boot (va chercher l'ISO sur le réseau)
  • images d'OS préconfigurée
  • bootstrap
  • image/appliance : os précustomisé au moment du démarrage -> paramétrage via vagrant

vagrant

  • utile pour créer des machines d'intégration
  • versionner le vagrant file comme pour le dockerfiles
     mkdir /opt/maarch/vagrant_test/
     vagrant init debian/buster64
     vagrant up
     vagrant ssh
     vagrant ssh-config -> pour voir la conf ssh
    
    demander à Benjamin de nous passer son Vagrantfile former les dev sur ce sujet

démarrage d'un linux

  • alimentation
  • bios uefi ou mbr (master book record)
  • grub -> on peut mettre une image de démarrage dans le bios "splash"

supprimer une partition d'une facon irréversible dd if=/dev/zero of=/dev/sda2 -> rempli le disque de zéro

gestion des disques

fdisk -l fdisk /dev/sdb sfdisk -d /dev/sda -> fait un dump disk de la partition resize2fs pratique si le systeme de fichier est en lvm

gestion des points de montage

mountpoint permet de savoir si un répertoire est lié à un point de montage attention à l'empilement des points de montage (si il y avait déjà des fichiers dans le répertoire ou l'on a monté un nouveau disque)

pour trouver d'où vient un souci d'espace disque alors qu'il y a un point de montage empilé, il faut créer un point de montage ailleurs : mkdir sherlock mount -o bind / sherlock

truncate -s2 -> permet de vider un fichier -> garde que les 2 premiers octets du fichier

preseed kickstart cloudinit

fonctionne avec un fichier de conf pour installer automatiquement un OS à partir d'une ISO -> répond automatiquement aux questions de l'installeur d'OS https://cloudinit.readthedocs.io/en/latest/ -> conf de vm à partir d'images et non pas à partir d'ISO

results matching ""

    No results matching ""