Linux
Sommaire
- 1 Introduction
- 2 DEBIAN
- 2.1 version de debian
- 2.2 documentation officielle
- 2.3 mailing liste des annonces de secuirté
- 2.4 mise à jour de debian 6.0 Squeeze vers 7.0 Wheezy
- 2.5 mise à jour de debian 7.0 wheezy vers 8.0 Jessie
- 2.6 Configuration
- 2.7 gestion des paquets
- 2.8 Fichiers et répertoires importants
- 2.9 Gestion des logs
- 2.10 Rotation des logs
- 2.11 Ajout d'un NTP Client
- 2.12 Outils pour Debian
- 3 BASH
- 4 APACHE
- 5 MYSQL
- 6 GIT
- 7 EXIM Commandes admin utiles
- 7.1 Afficher la version actuelle:
- 7.2 Supprimer tous les mails bloqués:
- 7.3 Forcer l'envoie d'un mail:
- 7.4 Forcer une autre queue a démarrer:
- 7.5 Forcer une autre queue a démarrer et essaye d'envoyer les mails bloqués:
- 7.6 Voir les logs d'un message:
- 7.7 voir le corps d'un message:
- 7.8 voir l’entête d'un message:
- 7.9 Supprimer les emails 'bounced'
Introduction
Linux est le nom couramment donné à tout système d'exploitation libre fonctionnant avec le noyau Linux. C'est une implémentation libre du système UNIX respectant les spécifications POSIX. Ce système est né de la rencontre entre le mouvement du logiciel libre et le modèle de développement collaboratif et décentralisé via Internet. Son nom vient du créateur du noyau Linux, Linus Torvalds. La Free Software Foundation préfère utiliser le nom GNU/Linux, ce qui a conduit à une certaine controverse.
Les systèmes basés sur Linux sont majoritaires pour les super-ordinateurs et les smartphones. Sur les serveurs informatiques, le marché est partagé avec les autres Unix et Windows. Il est largement utilisé comme système embarqué dans les appareils électroniques : télévision, modem, GPS, etc. Il reste en revanche utilisé par une minorité des ordinateurs personnels de bureau, sa plate-forme d'origine, bien que cela tende à augmenter.
DEBIAN
version de debian
nano /etc/debian_version
documentation officielle
Lien vers la documentation officielle
mailing liste des annonces de secuirté
https://lists.debian.org/debian-security-announce/
mise à jour de debian 6.0 Squeeze vers 7.0 Wheezy
Lien vers le Tutorial de mise à jour de debian 6.0 vers 7.0 wheezy
mise à jour de debian 7.0 wheezy vers 8.0 Jessie
Lien vers le Tutorial de mise à jour de debian 7.0 wheezy vers 8.0 Jessie
Configuration
Lien vers la configuration d'un serveur linux
gestion des paquets
Liste des commandes pour la gestion des packages Debian
Fichiers et répertoires importants
Lien vers la liste des fichiers & répertoires importants de Linux
Gestion des logs
Lien vers la gestion des logs
Rotation des logs
Lien vers la gestion de la roation des logs
Ajout d'un NTP Client
Lien vers l'ajout d'un client NTP
Outils pour Debian
lien vers les outils pratiques pour Debian
BASH
Documentation Officielle: http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html
Commandes
Liens vers les commandes principales de Bash
Environnement
Liste des variables d’environnement
Couleurs
Gestion des couleurs dans Bash
Tableaux
Gestion des tableaux
Fonctions utiles
Les fonctions utiles en bash
Sed
Liens vers les commandes principales de Sed
Rescue
Réparer un système grace à un live CD
Raccourcis dans VI
i = mode insertion esc = sortir du mode insertion dd = effacer une ligne : = exécuter une commande :q = exécuter la commande sortir :w = exécuter la commande sauvegarder :wq = exécuter la commande sauvegarder et sortir :f {file} = exécuter la commande changer le nom du fichier :cd {dir} = exécuter la commande changer le répertoire courant :$ = exécuter la commande aller à la fin du fichier :! = forcer la commande
par exemple
:wq! = forcer l’écriture si le fichier est en lecture seule :q! = forcer la sortie sans sauvegarder le fichier
Commandes FTP
bin = passer en mode binaire ascii = passer en mode ascii passive = passer en mode passive active = passer en mode active ls = liste des fichiers coté serveur cd = changer de répertoire coté serveur lcd = changer de répertoire coté client get = télécharger un fichier du serveur put = envoyé un fichier vers le serveur mkdir = créer un répertoire sur le serveur rmdir = supprimer un répertoire sur le serveur bye = quitter le client
APACHE
doc officielle: http://httpd.apache.org/docs/current/fr/
doc officielle: http://httpd.apache.org/docs/2.4/mod/core.html
a propos de la sécurité : http://www.petefreitag.com/item/505.cfm
Général
- variables d'environement
/etc/apache2/envars
par exemple
#user apache export APACHE_RUN_USER=www-data #group apache export APACHE_RUN_GROUP=www-data #default log dir export APACHE_LOG_DIR=/var/log/apache2$SUFFIX #default lang export LANG=C
- redémarer le service
apache2ctl restart Or sudo service apache2 restart Or sudo /etc/init.d/apache2 restart
- liste des sites
/etc/apache2/sites-available/{SiteName} available site files /etc/apache2/sites-enabled/{SiteName} enabled site files
a2ensite /etc/apache2/sites-available/{SiteName} enable a site a2dissite /etc/apache2/sites-available/{SiteName} disable a site
ou visualiser avec la commande
apachectl -S
ou
apache2ctl -t -DDUMP_VHOSTS
- Liste des modules
apachectl -M
- plus d'informations
https://httpd.apache.org/docs/2.4/fr/configuring.html
Directives in the configuration files are case-insensitive, but arguments to directives are often case sensitive.
Virtual Host
Virtual host defini les sites web disponibles, ainsi que leur configuration
- configuration de base
#-------------# # [ FROGGCV ] # #-------------# <VirtualHost *:80> # [ Server Domain ] (Can be an IP) ServerName cv.frogg.fr # [ Server Root ] DocumentRoot /var/www/cv/ </VirtualHost>
Modules
commandes
apache2ctl -M #Liste des modules installés a2enmod {moduleName} #Activé un module a2dismod {moduleName} #Désactivé un module
liste
- Description des modules
liste des modules apache : http://httpd.apache.org/docs/2.4/fr/mod/
mod security (Debian 8)
- installation
apt-get install libapache2-mod-security2
- fichier de configuration
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
- configuration
remplacer
SecRuleEngine DetectionOnly
par
SecRuleEngine On
Erreurs personnalisées
- /etc/apache2/conf.d/localized-error-pages
ErrorDocument 404 /404.htm #exemple pour changer la page 404
- partagé les pages d'erreur entre tous les serveurs virtuels
# [ Error documents ]
ErrorDocument 404 /errors/404.htm
ErrorDocument 403 /errors/403.htm
# allow errors pages to be visible from any virtual host
Alias /errors/404.htm /var/www/errors/404.htm
Alias /errors/404.png /var/www/errors/404.png
Alias /errors/403.htm /var/www/errors/403.htm
Alias /errors/403.png /var/www/errors/403.png
Logs personnalisés
# [ Log level ]
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
# LogLevel debug rewrite:trace8 = max level, all is loged
#LogLevel debug rewrite:trace8
LogLevel warn
# [ Log format ]
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# [ Error Logs ]
ErrorLog ${APACHE_LOG_DIR}/error.log
# [ Logs Exeptions ] #add env=!dontlog to log line
# - hack rules
SetEnvIfNoCase Request_URI "\/phppath\/|\/wp-content\/|\/wp-config\.php|\/force-download\.php|\/wp-admin\/|\/MyAdmin\/|\/myadmin\/|\/pma\/|\/phpmy$
SetEnvIf Request_URI "hack\.htm" hacklog
SetEnvIf User-agent "^-?$" hacklog
SetEnvIf Remote_Addr "^(127\.0\.0\.1|192\.168\.0\.1)$" !hacklog
# - Special rules
SetEnvIfNoCase Request_URI "piwik\.php" piwiklog
SetEnvIfNoCase Request_URI "frogglogin\.php" loginlog
SetEnvIfNoCase User-agent "bot|spider|coccoc|slurp" botlog
# - Exeption
SetEnvIfNoCase Request_URI "\/phppath\/|\/wp-content\/|\/wp-config\.php|\/force-download\.php|\/wp-admin\/" dontlog
SetEnvIfNoCase Request_URI "piwik\.php|frogglogin\.php|hack\.htm" dontlog
SetEnvIfNoCase Request_URI "\.jpg$|\.jpeg$|\.gif$|\.png$|\.ico$|\.icon$|\.css$|\.js$|\.woff$|\.woff2$" dontlog
SetEnvIfNoCase User-agent "bot|spider|coccoc|slurp" dontlog
SetEnvIfNoCase User-agent "^-?$" dontlog
# ==[ All Logs ]==
#CustomLog ${APACHE_LOG_DIR}/full_access.log vhost_combined
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined env=!dontlog
CustomLog ${APACHE_LOG_DIR}/bot.log vhost_combined env=botlog
CustomLog ${APACHE_LOG_DIR}/piwik.log vhost_combined env=piwiklog
CustomLog ${APACHE_LOG_DIR}/login.log vhost_combined env=loginlog
CustomLog ${APACHE_LOG_DIR}/hack.log vhost_combined env=hacklog
Header
- autoriser les requêtes cross-domain
Header set Access-Control-Allow-Origin "*"
- connexion persistante
Header set Connection keep-alive
- Supprimer le cache
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Sat, 02 Aug 1980 15:15:00 GMT"
- Ajouter du cache
<FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz|ttf)$">
Header set Cache-Control "max-age=2797200, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=2797200, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=2797200, private"
</FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=86400, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
#Header unset Cache-Control
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Sat, 02 Aug 1980 15:15:00 GMT"
</FilesMatch>
Redirection
Mod Alias
active les redirections
a2enmod alias
doc officielle
https://httpd.apache.org/docs/2.4/fr/mod/mod_alias.html
Alias
Met en correspondance des URLs avec des chemins du système de fichiers
Alias /frogglogin/frogglogin.php /opt/notwww/frogglogin/frogglogin.php
AliasMatch
Met en correspondance des URLs avec le système de fichiers en faisant intervenir les expressions rationnelles
AliasMatch "(?i)^/frogglogin/image(.*)" "/opt/notwww/frogglogin/img/image$1"
Redirect
Envoie une redirection externe demandant au client d'effectuer une autre requête avec une URL différente
- permanent redirige avec le statu (301) identique a RedirectPermanent
- temp redirige avec le statu (302) C'est l'option par défaut identique a RedirectTemp
- seeother redirige avec le statu (303)
- gone redirige avec le statu (410)
Redirect Permanent /wiki_en/ https://en.wiki.frogg.fr/
RedirectMatch
Envoie une redirection externe faisant appel aux expressions rationnelles pour la mise en correspondance de l'URL courante
RedirectMatch permanent ^/$ https://cv.frogg.fr/
avec une expression régulière négative
RedirectMatch 301 ^/(?!server-status)(.*) http://cv.frogg.fr/$1
Mod Rewrite
activer la réecriture d'url
a2enmod rewrite
doc officielle
https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
Regle de réecriture
- RewriteCond : condition
- Structure : {Commande} {Cas} {mots clés} [options]
- RewriteRule : règle
- Structure : {Commande} {Mots clés} {Résultat} [options]
RewriteCond %{HTTP_USER_AGENT} (bot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (spider) [NC]
RewriteRule ^(.*)$ /errors/nobots.htm [L,R=301]
Réecriture de paramètre
l'expression régulière de RewriteCond est récupérée dans %1 instead of $1
RewriteCond %{QUERY_STRING} ^page.php?id=(.*)
RewriteRule .* /%1/ [L,R=301]
Liste des drapeaux
doc officielle : https://httpd.apache.org/docs/2.4/rewrite/flags.html
[CO] Cookie [DPI] Discardpath [E] Env Variable [END] Terminate [F] Forbiden [G] Gone (410) [H] Handler [L] Last [N] Next [NC] No case [NE] Noescape [NS] Nosubreq [OR] Conditional OR [P] Proxy [PT] Passthrough [QSA] Query string append [QSD] Qsdiscard [R=302] Redirect=code [S] Skip [T] Type
liste des codes http
https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP
exemples
- cas pour forcer le https
redirige tout le trafique de http vers https
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
#OU
RewriteCond %{SERVER_PORT} ^80$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Apache ne conseille pas cette syntaxe https://httpd.apache.org/docs/2.4/rewrite/avoid.html
- cas d'un changement de nom de domaine ou d'adresse par exemple
redirige le trafique de l'ancien site vers le nouveau (code 301 = Redirection permanente)
RewriteEngine on
RewriteRule (.*) http://www.ima.umn.edu/~arnaud.marsiglietti/$1 [R=301,L]
- cas de sécurité pour éviter les bot avec user-agent vide ou qui renvoie -
redirige vers une page spéciale et retourne un code 200 grâce au proxy [P]
RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !errors\/noua.htm
RewriteRule (.*) /errors/noua.htm [P]
- case de réécriture d'url
redirige le trafique si le document demandé n'existe pas
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]
Web Proxy
- activer le proxy web
a2enmod proxy ad2enmod proxy_http
- doc officielle
https://httpd.apache.org/docs/2.4/fr/mod/mod_proxy.html
https://httpd.apache.org/docs/2.4/fr/mod/mod_proxy_http.html
- exemple
<VirtualHost *:80>
# [ Server Domain ]
ServerName demo.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/demo/
# [ Proxy Redirect ] + exeption on /errors folder
ProxyPass /errors !
ProxyPass / http://192.168.0.100/
ProxyPassReverse / http://192.168.0.100/
</VirtualHost>
- exemple avec RewriteRule
<VirtualHost *:80>
# [ Server Domain ]
ServerName demo.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/demo/
# [ Proxy Redirect ]
RewriteRule (.*) http://192.168.0.100/$1 [P]
</VirtualHost>
- exemple avec RewriteRule & Auth
<VirtualHost *:80>
# [ Server Domain ]
ServerName demo.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/demo/
# [ Basic Auth ]
<Location />
Order Allow,Deny
Allow from all
AuthName "Authentification utilisateur"
AuthType Basic
AuthUserFile /opt/web/passwd
Require valid-user
</Location>
# [ Proxy Redirect ]
RewriteRule (.*) http://192.168.0.100/$1 [P]
</VirtualHost>
Https/ssl
- activer le mode ssl
a2enmod ssl
- doc Officielle
http://www.modssl.org/docs/2.4/ssl_reference.html
- doc non officielle
http://www.onlamp.com/pub/a/onlamp/2008/03/04/step-by-step-configuring-ssl-under-apache.html https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
- certificat gratuit
https://cert.startcom.org/?lang=fr
- testeur de ssl
https://www.ssllabs.com/ssltest/
- evite apache de demander la clée à chaque reboot
openssl rsa -in mysql.home.frogg.fr.key -out mysql.home.frogg.fr.key
- générer les fichiers soit même
#Create self signed certificat openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout myOwn.pem -out myOwn.pem #Create key file openssl genrsa -des3 -out myOwn.key 2048 #Create csr file openssl req -new -key myOwn.key -out myOwn.csr
ou
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
- tester si le certificat s'applique à un domaine alternatif
openssl x509 -in /etc/apache2/ssl-certs/domain.com.crt -noout -text | grep -A1 "Subject Alternative"
résultat:
X509v3 Subject Alternative Name: DNS:domain.com, DNS:www.domain.com
- Configuration
# [ HTTPS Site ]
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024
<VirtualHost *:443>
SSLEngine on
SSLOptions +StrictRequire
SSLProxyEngine off
SSLHonorCipherOrder on
#SSL Compression (CRIME attack)
SSLCompression off
#HSTS
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
SSLCertificateFile /opt/web/ssl/home.frogg.fr.crt
SSLCertificateKeyFile /opt/web/ssl/home.frogg.fr.key
SSLCertificateChainFile /opt/web/ssl/sub.class1.server.ca.pem
<Directory />
SSLRequireSSL
</Directory>
<IfModule mime.c>
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
</IfModule>
# [ Access Logs ]
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel alert
#LogLevel alert rewrite:trace1
CustomLog ${APACHE_LOG_DIR}/access_ssl.log combined env=!dontlog
CustomLog ${APACHE_LOG_DIR}/bot.log combined env=botlog
CustomLog ${APACHE_LOG_DIR}/piwik.log combined env=piwiklog
CustomLog ${APACHE_LOG_DIR}/login.log combined env=loginlog
#special ssl request
CustomLog ${APACHE_LOG_DIR}/ssl_request.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" env=!dontlog
</VirtualHost>
Authentification
- doc officielle
http://httpd.apache.org/docs/2.4/fr/howto/auth.html
- exemple d'authentification basique
<Location /secure>
AuthType basic
AuthName "private area"
AuthUserFile /www/etc/passfile
Require valid-user
</Location>
ajouter/modifier un utilisateur dans le ficher des utilisateurs
htpasswd -b -m /www/etc/passfile {User} {Pass}
.htaccess
- Doc officielle : https://httpd.apache.org/docs/2.4/fr/howto/htaccess.html
si un fichier .htaccess est crée dans un répertoire avec des instructions de configuration apache, ces instructions vont ré-écraser la configuration globale d'apache. Il est conseillé d'utiliser la configuration apache qui elle est chargée en mémoire plutôt que des .htacess qui ajoutent des accès disque à chaque sollicitation d'une page. La plus part du temps les .htaccess sont utilisés lors de serveurs partagés.
- activer les .htaccess (lancer la commande dans un terminal)
a2enmod rewrite
- autorise l'instruction rewrite (All ou instructions à spécifier)
<Directory /var/www/> AllowOverride all </Directory>
- desactive les .htaccess pour certains répertoires
<Directory /var/www/example/*> AllowOverride None </Directory>
- suppression de l'acces
Deny from all
- autorise l'accès (même à travers une identification)
satisfy any Allow from all #(required if Deny has been set on parents folder)
- identification par fichier
AuthName "user Authentification" AuthType basic AuthUserFile /pathToUsers/passwd Require valid-user
(plus sur auth basic option http://httpd.apache.org/docs/2.4/fr/mod/mod_auth_basic.html)
(plus sur auth options http://httpd.apache.org/docs/2.4/fr/howto/auth.html)
- suppression du cache
#CACHE-CONTROL HEADERS
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Sat, 02 Aug 1980 15:15:00 GMT"
</ifModule>
#EXPIRES HEADERS
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 0 seconds"
</IfModule>
- forcer l'encoding des fichiers
AddCharset windows-1252 .html AddCharset windows-1252 .php
- redirection de trafic
RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.ima\.umn\.edu/~arnaud\.marsiglietti/ RewriteRule (.*) http://www.ima.umn.edu/~arnaud.marsiglietti/$1 [R=301,L]
- redirection si un fichier existe
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
- répertoire de base
RewriteBase /myapp/
- générateur de .htaccess
http://www.htaccessredirect.net/
Benchmark
- test apache
https://httpd.apache.org/docs/2.4/programs/ab.html
ab -n 2700 -c 90 -k -H "Accept-Encoding: gzip, deflate" http://home.frogg.fr/
- test accès disque
inotifywait -mr /var/www/
Cache
http://httpd.apache.org/docs/2.4/programs/htcacheclean.html
Support
MYSQL
Base exportation/importation
mysqldump -u {User} -p{Pass} {BaseName} > dump.sql exporter une base specifique mysqldump -u {User} -p{Pass} --all-databases > dump.sql exporter toute les bases mysql -u {User} -p{Pass} {BaseName} < dump.sql importer une base spécifique mysql -u {User} -p{Pass} < dump.sql importer toute les bases
supprimer un utilisateur
mysql -e "DELETE FROM user WHERE User='{Usr}'" -u root -p{mysqlRootPw} mysql
ajouter proprement un nouvel utilisateur admin
mysql -e "CREATE USER '{NewRootUsr}'@'localhost' IDENTIFIED BY '{NewRootPw}'; GRANT USAGE ON *.* TO {NewRootUsr}@localhost IDENTIFIED BY '{NewRootPw}'; FLUSH PRIVILEGES;" -u root -p{mysqlRootPw} mysql
modifier l'encoding d'une base
ALTER DATABASE froggcv CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE froggcv.page CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
copier une table
CREATE TABLE interwiki LIKE fr_interwiki; INSERT interwiki SELECT * FROM fr_interwiki;
repare database
- erreur
mysqld: Table '{BASE/TABLE}' is marked as crashed and should be repaired
- Attention
Il est conseillé de faire une sauvegarde avant de lancer une opération de réparation; dans certaines circonstances il est possible que surviennent une perte de données.
- doc officielle
http://dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html
- commande de réparation
mysqlcheck -u {USER} -p{PASS} --repair --all-database or mysqlcheck -u {USER} -p{PASS} --auto-repair --all-database
optimisation des bases
mysqlcheck -u {USER} -p{PASS} --optimize --all-database
Erreur de démarrage
can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock' (2)
mysqld_safe /etc/init.d/mysql restart
GIT
- git doc officielle: http://git-scm.com/docs
- Installation => https://help.github.com/articles/set-up-git
- Commandes => http://www.siteground.com/tutorials/git/commands.htm
- Debian package : git-core
Projet
git clone root@192.168.0.123:/opt/git/wiki.git ./ git push (origin master) envoyer les fichiers soumis vers la branche master du serveur de projet git push --tags envoyer les TAGS soumis vers la branche master du serveur de projet git push --delete origin v1 supprime un tag du serveur git git pull récupérer les derniers fichiers du serveur git git branch -r visualiser les branches du server git git branch -a visualiser les branches du server locale git checkout name changer la branche en cours git clean supprime les fichiers qui ne sont pas liés au projet git checkout . supprime les modifications locales
Fichier
.gitignore liste des fichiers à ignorer dans le projet (ne seront pas commit)
Config
git config user.name "Frogg" configure le nom de l'utilisateur du projet git git config user.email "admin@frogg.fr" configure l'email de l'utilisateur du projet git git config credential.helper cache configure l'utilisation du cache de connexion git config credential.helper 'cache --timeout=3600' configure la durée du cache de connexion (en secondes) git config receive.denyCurrentBranch ignore configure l'autorisation de modifier la branch master directement depuis un Git remote git config core.editor nano configure l'éditeur de texte par défaut pour créer/éditer les messages
ajouter --global aux commandes de config pour appliquer la config à tous les projets
Add/Commit
git add -A ajouter tout git add . ajouter tout les fichiers nouveaux et modifiés mais pas les suppressions git add -u ajouter tout les fichiers supprimer et modifiés mais pas les nouveaux git commit -a soumettre la liste des ajouts git commit --amend changer le dernier message de soumission git reset hooks/* supprimer le dernier ajout git rm --cached hooks/* supprimer la dernière soumission git revert HEAD -m1 (ou -n1) supprimer la dernière soumission
Tags
git tag -a v1 -m "Version 1" ajouter un tag et une description git tag afficher tous les tags git tag -d v1 supprimer un tag
Logs
git log afficher les logs git log -1 afficher le dernier log git log --oneline afficher les version
nettoyage du git (si trop long a répondre)
git diff --stat --cached (or can execute before git read-tree / git update-ref / git update-index )
Fichiers spéciaux
- .git/config - Options et configuration du dépot Git
- .gitignore - List des fichiers ignorer dans l'envoie au dépot
- .gitattributes - permet de définir les attributs des fichiers
- .mailmap - permet de regrouper les logs en fontion des mail utilisateurs.
- .gitmodules - Permet de définir des sous modules
Erreurs
- Error
HEAD is now at 11e7efe Merge "collapsibleTabs: Don't mix Arrays and jQuery objects for one property" error occurred while pulling /opt/web/wiki/common/skins/Vector
- Cause
wrong branch
- Solution
git checkout master git pull
EXIM Commandes admin utiles
Afficher la version actuelle:
exim -bV
Supprimer tous les mails bloqués:
exim -bpru|grep frozen|awk {’print $3′}|xargs exim -Mr
Forcer l'envoie d'un mail:
exim -M email-id
Forcer une autre queue a démarrer:
exim -qf
Forcer une autre queue a démarrer et essaye d'envoyer les mails bloqués:
exim -qff
Voir les logs d'un message:
exim -Mvl messageID
voir le corps d'un message:
exim -Mvb messageID
voir l’entête d'un message:
exim -Mvh messageID
Supprimer les emails 'bounced'
cd /var/spool/exim/input find . -type f -iname ‘*’ -exec grep -li "Failed" {} \; -exec rm {}\;