Vendredi 23 novembre 2018

Commandes Linux (cheatsheet)

Utiles pour un serveur de développement ou un serveur web/mail/ftp, notamment sous Ubuntu/Debian.

  • Voir aussi https://explainshell.com/ pour expliquer les commandes shell entrées
  • Voir aussi http://samrowe.com/wordpress/advancing-in-the-bash-shell/
  • Voir aussi https://github.com/donnemartin/awesome-aws pour AWS
  • MiniVim https://github.com/sd65/MiniVim
  • Commandline challenge https://cmdchallenge.com/

Rechercher rapidement dans les précédentes commandes : Ctrl+R


Root

Console root permanente (à utiliser à vos risques et périls)
sudo -i

Impersonification!
sudo -i -u <user>

S’identifier en tant que root
su

Qui est connecté actuellement sur la machine ?
w

Connaître la release Linux
lsb_release -a

Consulter le log mémoire tampon du noyau
dmesg


Chemins courants

  • /var/log/ Logs généraux
  • /var/log/syslog Logs système
  • /var/log/mail.log Logs mail/postfix
  • /var/log/apache2/ Logs Apache
  • /var/log/nginx/ Logs Nginx
  • /var/www/ Hébergement http
  • /var/vmail/ Hébergement mails
  • /var/lib/mysql/ MySQL
  • /var/log/ispconfig/ Logs ISPConfig
  • /var/log/ispconfig/httpd/ Logs Apache individuels

Maintenance et mises à jour avec apt (Debian)

Voir aussi https://debian-handbook.info/browse/fr-FR/stable/sect.apt-get.html

Met à jour les paquets disponibles
apt-get update

Met à jour la distribution avec les paquets trouvés
apt-get upgrade

Met à jour le serveur et l’indique à rkhunter pour éviter les warnings
apt-get update && apt-get upgrade && rkhunter --propupd

Met à jour (supprime/ajoute/met à jour) avec apt
apt full-upgrade

Indications de support des paquets dans le temps
ubuntu-support-status

Met à jour toute la distrib d’une version à l’autre (warning!)
apt-get dist-upgrade

Informations
apt-cache show <paquet>

Installer un paquet
apt-get install <paquet>

Simulation d’installation
apt-get install <paquet> -s

Désinstaller un paquet
apt-get remove <paquet>

Désinstallation complète (avec conf)
apt-get remove <paquet> --purge

Recherche dans les paquets disponibles
apt-cache search <paquet>

Dépendances
apt-cache depends <paquet>

Versions disponibles
apt-cache madison <paquet>

Versions et possibilités
apt-cache policy <paquet>

Vider le cache
apt-get clean

Informations…
aptitude show <paquet>

Liste des paquets installés
dpkg -l

Liste des fichiers d’un paquet
dpkg -L

Connaître le paquet qui a installé un soft/config
dpkg -S /sbin/ifconfig

Reconfigurer un paquet déjà installé
dpkg-reconfigure apache

Reconfigurer le niveau de question
dpkg-reconfigure debconf

dpkg --get-selections
dpkg --set-selections


Autres commandes utiles

Dernières commandes
history

Date du jour
date

Calendrier
cal

Rafraîchir une commande toutes les X secondes à l’écran (ex : cat)
watch <commande>

Uptime du serveur et charge
uptime

Dernières connexions
last


Utilisateurs

Ajouter un utilisateur
useradd <login>

Attribuer un mot de passe
passwd <login>

Modification du shell (/bin/bash, /bin/false, /bin/nologin…)
usermod -s /usr/bin/passwd <login>

Désactivation du compte utilisateur
usermod -L -s /bin/nologin <login>

Supprimer un utilisateur
userdel <login>

Verrouiller le compte (permet à l’utilisateur de retrouver son mot de passe ensuite)
passwd -l <login>

Déverrouiller le compte
passwd -u <login>

Lister les groupes d’un user
groups <login>

Ajouter un groupe
groupadd <groupe>

Supprimer un groupe
groupdel <groupe>

Ajouter un utilisateur à un groupe
gpasswd -a <utilisateur> <groupe>

Supprimer un utilisateur d’un groupe
gpasswd -d <utilisateur> <groupe>

Redéfinir les groupes d’un user
usermod -G <group1,group2> <login>

Attribuer un groupe à un chemin (fichier, répertoire)
chgrp <group> <path>

Samba (partage de fichiers)

Ajouter un user samba (il faut avoir déjà créé un user linux)
smbpasswd -a <login>

Supprimer
smbpasswd -x <login>

Utilisateurs autorisés : dans /etc/samba/smb.conf
valid users <login1> <login2> @group1


Clés

Connaître la clé publique à partir d’une clé privée générée (dsa, rsa, etc) pour l’ajouter à authorized_keys
ssh-keygen -y

Générer une clé RSA 4096
ssh-keygen -b 4096 -t rsa

Générer une clé sécurisée (https://blog.g3rt.nl/upgrade-your-ssh-keys.html) (ne fonctionne pas avec Putty sous Windows)
ssh-keygen -o -a 100 -t ed25519

Lister les types de clés
for keyfile in ~/.ssh/my*; do ssh-keygen -l -f "${keyfile}"; done | uniq


Monitoring

CPU et processus

Top des processus (< > modif colonne tri) (shift+O = tri des colonnes)
top

Processus
ps auxwwwwf

Processus par mémoire requise
ps -eo pmem,pid | sort -r

Rechercher un processus par PID
ps -eaf | grep <PID>

Top 10 CPU
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10

Arborescence des processus
pstree -aA

Fichiers ouverts par le processus PID
ls -l /proc/<PID>/fd

Fichier d’exécution du processus PID
ls -l /proc/<PID>/exe

Commande d’exécution du processus PID
ls -l /proc/<PID>/cmdline

Benchmark rapide cpu
echo '2^2^20' | time bc > /dev/null

Tuer tous les processus d’un utilisateur
pgrep -u <user> | xargs kill -9

Statistiques

Statistiques globales (à installer avec apt-get)
dstat

Stats CPU
mpstat

Stats I/O toutes les 5 secondes
iostat -x 5

Processus générant de l’I/O (débits instantanés)
iotop -o

Processus générant de l’I/O avec totaux lus/écrits
iotop -oa

Temps d’exécution d’une commande
time <command>

Statistiques de la journée
sar

Infos sur un processus d’après son PID
cd /proc/<PID> && ll

Essayer aussi opensnoop (à partir d’Ubuntu 16.x) pour voir tous les fichiers ouverts par un programme

RAM

Etat RAM global
free -m -t

Etat RAM virtuelle
vmstat

Etat RAM détaillé
watch cat /proc/meminfo

RAM (non cachée) utilisée par chaque process Apache2 (colonne RSS en Ko)
ps -ylC apache2 --sort:rss

PHP Poids moyen d’un child (ou autre processus, remplacer php5-fpm dans ce cas)

ps --no-headers -o "rss,cmd" -C php5-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'  

Screen

Exécuter des processus sans les fermer à la fin de la connexion SSH

Initialisation
screen

Liste des screens
screen -ls

Récupérer `screen -r`


Fichiers

Lister les fichiers
ls

Changer de répertoire
cd <path>

Revenir au précédent dossier
cd -

Lister les fichiers par dernière date de modification
ll -rt

Lister les fichiers par taille
ll -rSh

Lister par extension
ll -X

Récursif dans les dossiers
ll -R

Espace occupé par le répertoire
du -skh

Espace occupé, groupé par répertoires
du -h --max-depth=1

Espace occupé, classé par taille
du -h --max-depth=1 | sort -h

Espace occupé en suivant les liens symboliques
du -skhL

Espace occupé par dossier, classé par taille (humaine)
du -skh * | sort -h

Supprimer un fichier
rm <file>

Supprimer un répertoire (vide)
rmdir <dir>

Suppression récursive
rm -rf

Déplacer/renommer un fichier ou un répertoire
mv <file1> <file2>

Copier un fichier ou un répertoire
cp <file1> <file2>


Disque dur

Triple benchmark rapide disque
for i in 1 2 3; do hdparm -tT /dev/hda; done

Statistiques I/O disques durs
cat /proc/diskstats

Démonter un volume
umount /dev/sda1

Démonter un volume (forcer)
umount -fl /dev/sda1

Monter un volume
mount /dev/sda1

Infos de montages
cat /proc/mounts

Qui utilise la ressource ?
fuser -v /media/Backup2To/

Liste de toutes les partitions
fdisk -l

Partitionner (p = afficher, d = supprimer, n = new)
fdisk /dev/XXXX

Liste tous les UUID
blkid

Espace disque libre
df -h

Espace disque dossiers classés par taille
du -hs * | sort -h

Partitions, structure

Lister la configuration des partitions et montages
cat /etc/fstab

Créer une partition ext4 sur /dev/sda
mkfs.ext4 /dev/sda -v

Copier la structure des partitions de sda vers sdb
sfdisk -d /dev/sda | sfdisk /dev/sdb

Taille des partitions
sfdisk -s

Vérifier type/boot partitions
sfdisk -V /dev/sdb

Liste des partitions sur le disque
sfdisk -l /dev/sda

Recopier partitions sda vers sdb (après remplacement disque par exemple)
sfdisk -d /dev/sda | sfdisk /dev/sdb

Checkdisk ext4
fsck.ext4

Raid

Vue globale Raid [U_] : U = Up, _ = Down
cat /proc/mdstat

Administration RAID : scan des array présents
mdadm --detail --scan

Administration RAID : vue des détails pour un array spécifique
mdadm --detail /dev/md0

Si tout va bien, “State : clean”, “Active Devices : 2”, “Working Devices : 2” Qui utilise quoi ? cat /proc/mounts

Marquer comme défectueux avant de remove
mdadm --set-faulty /dev/md0 /dev/sdb

Remove
mdadm --remove /dev/md0 /dev/sdb

Forcer un remove de disque déjà en fail (F) mais devenu indisponible en device
mdadm -r /dev/md0 failed

Remettre à zéro les superblocs Raid (erreur négligeable si aucun reste de raid précédent)
mdadm --zero-superblock /dev/sdb1

Ajouter une partition sdb1 au raid md1
mdadm --manage /dev/md1 --add /dev/sdb1

Voir aussi http://www.ducea.com/2009/03/08/mdadm-cheat-sheet/

Smart

Vérifier santé Smart disque (surveiller valeurs de Reallocated_Sector_Ct et Current_Pending_Sector) - permet aussi d’identifier le disque physique sur la machine avec ses Device Model et Serial Number marqués sur le matériel.
smartctl -a /dev/sdb et smartctl -H /dev/sdb

Lancer un test Smart sur un disque
smartctl -t short /dev/sdb puis dmesg et smartctl -a /dev/sdb pour voir les résultats

Lancer un test Smart approfondi
smartctl -t long /dev/sdb -C (ou sans -C) puis attendre et vérifier smartctl -a /dev/sdb

Voir aussi https://www.cyberciti.biz/tips/linux-find-out-if-harddisk-failing.html

Quota

Liste users (espace utilisé, limites…)
repquota -avs


Cron

Editer la cron list
crontab -e

Lister les cron jobs
crontab -l

Editer pour un utilisateur spécifique
crontab -u <login> -e

Lister pour tous les utilisateurs
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

Syntaxe

Tous les jours à 3h05
5 3 * * * /usr/bin/apt-get update

Backup SQL quotidien

15 2 * * * root mysqldump -u root -p<password> --all-databases | gzip > /mnt/disk2/database_`data ' %m-%d-%Y'`.sql.gz  

Réseau

Connexions actives (serveurs et établies)
netstat -tap

Connexions actives (seulement serveurs)
netstat -tulp

Connexions et processus
netstat -tanpu

IP connectée à Apache en masse ?
netstat -tanp | grep ESTABLISHED | grep apache | awk {'print $5'} | sort -n

Liste des processus
netstat -ntpl

Liste les connexions en écoute ouvertes
lsof -n | grep LISTEN

Liste les connexions UDP ouvertes
lsof -n | grep UDP

Descripteurs ouverts par un processus
lsof -p <PID>

Liste les adresses IP / interfaces
ip addr show

Ports référencés
cat /etc/services

Traceroute
tracert

Nslookup
nslookup <ip>

Host
host <www.....com>

Ping
ping <ip>

Ethernet top
iftop

Connaître la vitesse de connexion du lien Ethernet (adapter le nom de l’interface avec celui trouvé dans ifconfig)
ethtool eth0 | grep -i speed

Capture de paquets réseau selon protocole/port
tcpdump -i eth0 'tcp port 80'

Trafic IP (si installé)
iptraf

Sniffer toutes les requêtes réseau contenant “favicon”
ngrep -d any favicon

IPtables

Bannir l’IP en TCP
iptables -I INPUT -p tcp -s <adresse_ip> -j DROP

Supprimer la règle
iptables -D INPUT -s <adresse_ip> -j DROP

Lister les règles actives
iptables -L -v --line-numbers

Lister la configuration
iptables -S

Effacer la règle n°4 en input (1ere ligne = 1)
iptables -D INPUT 4

Effacer la règle n°1 de fail2ban
iptables -D fail2ban-courierauth 1

Bloquer adresses IP x.x.x.*
iptables -A INPUT -s x.x.x.0/24 -j DROP

Examiner le statut des bans fail2ban
fail2ban-client status <ssh|pure-ftpd|dovecot|...>

Stopper un jail
fail2ban-client stop <ssh>

Tester une regex
fail2ban-regex /var/log/apache2/other_vhosts_access.log /etc/fail2ban/filter.d/apache-wp-login.conf

Envoyer/recevoir avec netcat

Sur la machine qui écoute (pour trouver son ip hostname -I)
nc -l 1337 >bigfile

Sur la machine qui envoie
cat bigfile | nc 192.168.0.37 1337


SCP

Copier fichier vers machine distante (répertoire home)
scp -P 22222 <fichier> login@www.example.org:

Copier fichier vers machine distante avec clé ssh

scp -i ~/.ssh/www.example.org <fichier> ubuntu@www.example.org:
scp -P 22222 -i ~/.ssh/key-rsa.txt <fichier> login@www.example.org:  

Copier fichier vers machine distante (répertoire/fichier destination)
scp -P 22222 <fichier> login@www.example.org:path/<fichier>

Copier répertoire vers machine distante
scp -P 22222 -r directory login@www.example.org:

Copier répertoire depuis machine distante
scp -P 22222 -r login@www.example.org:directory .

RSync de serveur à serveur
rsync -av -e "ssh -p 22222" /tmp/ root@192.168.0.37:/tmp


Fichiers

Trouver un fichier

A partir du répertoire courant
find . -name <fichier>

Taille >50 Mo
find . -size +50M

Trouver les fichiers php contenant mysql_pconnect
find . -name "*.php" | xargs grep "mysql_connect"

Supprimer les fichiers vides
find -size 0 -print -exec rm {} \;

Supprimer les fichiers pollution macOS
find -name "._.DS_Store" -print -delete

Trouver tous les error.log et les classer par taille
find . -name "error.log" -exec ls -sh {} \; | sort -h

Que les fichiers (pas les dossiers)
find -type f

Remplacer dans des fichiers

Dans fichiers html remplacer DATA par DATA2
find . -name "*.html" | xargs sed -i 's/DATA/DATA2/g'

Pareil
sed -i "s/DATA/DATA2/g" **/*.html

Supprimer toutes les balises img
find . -name "*.html" | xargs sed -i 's/<img.*>//g'

Supprimer toutes les balises img contenant co.cc
find . -name "*.html" | xargs sed -i 's/<img heigth.*co\.cc.*>//g'

Texte

Trouver un fichier php contenant “virtual” à partir de .

grep "virtual" `find . -name "*.php"`  

5 Lignes avant dans un fichier
grep "panic" /var/log/syslog -B5

Rechercher/remplacer dans fichiers multiples
sed -i "s/ChaineRecherchee/Remplacement/g" le_fichier

Extraire les lignes d’un fichier texte de 1337 à 2000
sed -n 1337,2000p <fichier>

Info sur les fichiers

Sur l’ensemble du filesystem
locate <fichier>

Rechercher les fichiers exécutables, les sources et les pages de manuel d’une commande
whereis <fichier>

Description d’une commande
apropos <commande>

Page de manuel
man <commande>

Afficher le contenu d’un fichier
cat <file>

Compter le nombre de lignes

wc -l <file>  

Afficher le contenu inversé
rev <file>

Editer un fichier avec vi
vi <file>

Editer un fichier avec nano
nano <file>

Lire un fichier (G = fin du fichier)
less <file>

Début d’un fichier
head <file>

Fin d’un fichier (-n 50 : 50 dernières lignes)
tail <file>

Monitorer un fichier (lignes ajoutées) / Ctrl+C pour quitter
tail -f <file>

Compression

Lister les contenus d’un fichier zip
unzip -l <fichier.zip>

Compression du dossier www dans www.zip
gzip -rc www >www.zip

Déompression de www.zip
gunzip www.zip

Détarer une archive
tar -xvf backup_complet.tar

Détarer la suite…
tar -xvf backup_incr1.tar --listed-incremental=backup.incremental-list.txt

Extraire un tar.gz
tar -xvzf <file.tar.gz>

Créer un tar.gz
tar -cvzf test.tar.gz <path>

Créer un tar.gz et déréférencer les symlinks
tar -cvzfh test.tar.gz <path>


VI/VIM

Quitter un mode : Echap

Mode insertion
i

Mode ajout (append)
a

Supprimer
x

Couper/effacer une ligne
dd

Couper/effacer 10 lignes
10dd

Copier
y

Coller
p

Enregistrer
:w

Quitter
:q

Quitter sans enregistrer
:q!

Aller à la dernière ligne
G

Insérer un fichier à la position du curseur
:r <file>

Voir les options
:set

Numérotation
:set nu

Pas d’autoindent
:set noautoindent

Taille des tabulations
:set ts=4

Rechercher dans tous le fichier le mot1 pour le remplacer par le mot2
:g/mot1/s//mot2/g

Sauver en UTF-8
:set fenc=utf-8

VIM en mode diff entre deux fichiers
vimdiff <file1> <file2>

Modifier la configuration vi par défaut, éditer ~/.exrc

set nu
set noautoindent  

Support UTF-8 pour VI : éditer le fichier /etc/vim/vimrc et ajouter

if has("multi_byte")
				set encoding=utf-8
				setglobal fileencoding=utf-8
				set bomb
				set termencoding=iso-8859-15
				set fileencodings=ucs-bom,iso-8859-15,iso-8859-3,utf-8
else
				echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif  

Scripts utiles et shell

Date
echo $(date +%Y-%m-%d)

Envoyer un mail
echo "Arf" | mail -s "Sujet" destinataire@example.org

Split un fichier PDF en plusieurs autres
pdfseparate -f 1 -l 10 doc.pdf tmp/doc-%d.pdf

Wget : télécharger un fichier par HTTP ou FTP
wget http://www.perdu.com/

Wget récursif, sans accepter les fichiers en gzip (sinon ça ne marche pas)

wget --header="accept-encoding: none" --recursive http://www.azerty0.ironie.org/  

Wget miroir d’un site, récursif, adaptant les liens et extensions, téléchargeant les ressources internes, ignorant robots.txt

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent -e robots=off http://www.azerty0.ironie.org/  

Convertir un fichier en utf8

iconv -f latin1 -t utf8 update.sql >update-utf8.sql  

Compter le nombre de lignes de plein de fichiers dans une arbo web

find . -name "*.php" -o -name "*.less" -o -name "*.css" -o -name "*.js" -o -name "*.html" | xargs wc -l  

Supprimer fichiers vides

for file in * .*; do [ -f "$file" ] && [ 0 -eq "$(wc -c "$file" | cut -d" " -f1)" ] && rm -f "$file"; done  

Trouver les 404 et leur compte dans un log

grep " 404" access.log | awk '{print $7}' | sort | uniq -c  

Lister récursivement tous les fichiers contenant une chaîne sans l’afficher

grep -lR "quelquechose" *  

Trouver les robots en excluant ceux connus (-E expression régulière, -i case insensitive, -v inverse) (on exclut aussi les requêtes sur robots.txt et la font roboto)

grep "bot" other_vhosts_access.log | grep -Eiv "Googlebot|Yahoo|Slurp|WorldSearch|Exabot|facebot|ia_archiver|alexa|msnbot|bingbot|Sogou|Baidu|Yandex|DuckDuckBot|archive\.org_bot|Semrush|orangebot|AhrefsBot|MJ12bot|Twitterbot|robot\.dlweb|dotbot|rogerbot|SEOkicks|AdsBot|spbot|XoviBot|Cliqzbot|SearchmetricsBot|flamingosearch|SeznamBot|smtbot|MojeekBot|robots\.txt|roboto|Slackbot"  

Nombre de requêtes par domaines

awk '{print $1}' /var/log/apache2/other_vhosts_access.log | sort | uniq -c  

Supprimer fichiers de plus de 90 jours dans le répertoire courant

find . -mtime +90 -exec rm {} \;  

Supprimer fichiers de plus de 90 jours dans le répertoire courant, en excluant x.html

find . ! -name "*.html" -mtime +90 -exec rm {} \;  

Effacer fichiers contenant XYZ

#!/bin/sh
for i in ./directory/*
do
	if grep -E "XYZ" $i > /dev/null; then
		rm $i
	else
		echo "Not found"
	fi
done  

Script pour bannir rapidement une adresse IP en ligne de commande

#!/bin/bash
if [[ -z "$1" ]]; then
        echo "Veuillez indiquer une adresse IP"
else
        echo "Ban de l'IP $1"
        iptables -A INPUT -p tcp --source "$1" -j DROP
fi  

Droits/permissions

Changer propriétaire d’un fichier
chown <user>.<group> <file>

Changer droits d’un fichier
chmod 0<rwx> <file>

Voir https://chmodcommand.com/ Chmod Calculator

Changer droits sur les sous répertoires
find <path> -type d -print0 | xargs -0 chmod <permissions>

Changer droits sur certains fichiers
find . -name "*.php" -print0 | xargs -0 chmod -x

Masques

    rwx
0 : 000
1 : 001
2 : 010
3 : 011
4 : 100
5 : 101
6 : 110
7 : 111  
      U   G   O
764 = rwx rw- r--  

Services

NTP

Mise à l’heure grâce à NTP (Network Time Protocol)
ntpdate fr.pool.ntp.org

MySQL

Démarrer le service
sudo service mysql start

Arrêter le service
sudo service mysql stop

MySQL UTF-8 (Import) (ou latin1 à la place d’utf8)
mysql --default_character_set utf8 <...

Mysql dump vers fichier SQL
mysqldump --opt -u<user> -p<password> <database> <tables> >export.sql

MySQL top (slow query à partir de 1 seconde)
mtop --idle --slow=1

Apache

Démarrer Apache
sudo service apache2 start

Arrêter Apache
sudo service apache2 stop

Redémarrage graceful
apache2ctl graceful

Vérifier la syntaxe
apache2ctl configtest

Lister les modules chargés
apache2ctl -t -D DUMP_MODULES
apache2ctl -M

Directives de configuration et MPM
apache2 -V

Ordre de chargement des virtualhosts
apache2ctl -S

Vérifie la syntaxe de la config apache
apachectl configtest

Apache Bench (n : nombre de requêtes, c : en parallèle)
ab -n 10 -c 5 http://www.mammouthland.net/

Apache top (spécifier un fichier de log)
apachetop -f /var/log/apache2/<file.log>

Exemple :
apachetop -f /var/log/apache2/other_vhosts_access.log -T 60 -d 2

Trouver les tentatives wp-login groupées par domaine
grep "wp-login" /var/log/apache2/other_vhosts_access.log | awk '{print $1}' | sort | uniq -c

PHP

Trouver le fichier ini utilisé par PHP
php --ini

Dovecot

Configuration de dovecot
dovecot -a

Recharger dovecot
dovecot reload

Qui est connecté ?
dovecot who

Gitlab

Liste des services
gitlab-ctl service-list

Redémarrer
gitlab-ctl restart

Monitorer tous les logs
sudo gitlab-ctl tail

Pure-ftpd

Connectés FTP
pure-ftpwho

Administration de Pure-ftpd
pure-pw

Ajouter un utilisateur
pure-pw useradd ftpwww -u <user> -d /var/www/

Réactualiser la db
pure-pw mkdb

Divers

pure-pw passwd ftpwww
pure-pw userdel ftpwww
pure-pw show ftpwww
pure-pw list  

Rkhunter

Afficher les résultats de la recherche
rkhunter --check

Mise à jour db du net
rkhunter --update

Mise à jour propriétés fichiers après changements volontaires
rkhunter --propupd

Clam antivirus

Mise à jour db antivirus
freshclam

Scanner /
clamscan -r /

Postfix

Vérifier la syntaxe de la configuration
postfix check

Afficher la configuration spécifique
postconf -n

Liste avec Queue ID (ou postqueue -p)
mailq

Afficher le contenu d’un mail
postcat -q <Queue ID>

Purger un item
postsuper -d <Queue ID>

Purger toute la file d’attente
postsuper -d ALL

Flush (Forcer l’envoi des messages en Queue)
postqueue -f

Replacer tous les messages en queue (plus puissant que postqueue -f)
postsuper -r ALL

Spamassassin

Apprendre ce mail comme spam => Learned tokens from 1 message(s)
sa-learn --spam <fichier mail>

Apprendre ce mail comme non-spam
sa-learn --ham <fichier mail>

Oublier ce mail
sa-learn --forget <fichier mail>

Effacer l’apprentissage
sa-learn --clear

Faire un backup d’apprentissage (STDOUT)
sa-learn --backup

Restaurer un backup d’apprentissage
sa-learn --restore <fichier_backup>


Alternatives

update-alternatives --config editor


Services version init.d

Démarrer un service
/etc/init.d/<script> start

Stopper un service
/etc/init.d/<script> stop

Recharger un service (après modif. conf par exemple)
/etc/init.d/<script> reload

Ajouter au démarrage, option defaults, priorité 99
update-rc.d <script> defaults 99

Supprimer
update-rc.d <script> remove


AWS S3

Récupérer un fichier
s3cmd get s3://bucket-name/<file> <local_file>

Espace occupé
s3cmd du s3://bucket-name/

Lister les fichiers
s3cmd ls s3://bucket-name/

Supprimer un fichier
s3cmd del s3://bucket-name/<file>


Sécurité Linux

  1. Vérifier que les utilisateurs inutiles sont retirés ou n’ont pas de mot de passe (passwd -d )
  2. Vérifier les groupes
  3. Utiliser des clés SSH et le groupe sudo/sudoers
  4. Chmod approprié sur les dossiers home et .ssh (dont authorized_keys, etc)
  5. Firewall
  6. Fermer les services et ports inutiles
  7. Suivre les mises à jour de sécurité