Dams-Labs

cat /proc/asound/cards //affiche des infos sur les cartes son configurées
aplay -l //idem
alsactl init //réinitialise alsa et nécessite restart (anciennement alsaconf)
(message unknow hardware normal : http://wiki.debian.org/ALSA)
Par défaut, les programmes utilisent la carte 0.
Pour changer l'ordre des cartes sons, éditez /etc/modprobe.d/aliases.conf en ajoutant des options index, exemple (cartes cs46xx et hda) :
options snd-cs46xx index=0
options snd-hda-intel index=1
//attention : options avec un s, suivit du driver de la carte
sudo modinfo [driver] //infos sur un driver

voir aussi Audio

a2ensite //active un site (a2dissite désactive)
a2enmod //active un module (a2dsimod désactive)
a2enmod rewrite //active le module rewriteengine

apache bench (paquet apache2-utils), pour tester debits, exemple :
ab http://cdimage.debian.org/debian-cd/6.0.0/amd64/iso-cd/debian-6.0.0-amd64-netinst.iso


plantages
/etc/init.d/apache2 restart
Restarting web server: apache2/usr/sbin/apache2ctl: line 83: 3738 Illegal instruction $HTTPD ${APACHE_ARGUMENTS} -k $ARGV
failed!

Mettre à jour la librairie libapr1

VirtualHost
Sous Debian, NameVirtualHost est definit dans ports.conf. Une seule même definition suffit (sinon warning).
Le ServerName doit être déclaré dans le DNS ou dans le /etc/hosts.
Exemple d'un site php:

    <VirtualHost *:80>
    ServerName monsite.localhost
    ServerPath "/var/www/monsite/public/"
    DocumentRoot "/var/www/monsite/public/"
    AddType application/x-httpd-php .php .php5
    DirectoryIndex index.php5 index.php

    <Directory /var/www/monsite/public/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel debug
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>


dans /etc/hosts :
127.0.0.1 localhost
127.0.0.1 monsite.localhost

process
CTRL-z bg //met un processus en fond (job)
jobs //liste des jobs
kill %n //kill le job n°n

hash //affiche les commandes réalisées sous le shell
hash -r //vide le cache des chemins des commandes (utile apres un changement de répertoire)
disown //supprime les jobs actifs

navigation
cd - //retour au répertoire précèdent
CTRL-a CTRL-e //saut au début, à la fin de la ligne
CTRL-f CTRL-b //caractère suivant, précèdent
ALT-f ALT-b //Avance, recule à la fin du mot suivant
CTRL-l //Clear screen
CTRL-p CTRL-n //commande précédente, suivante
ALT-< ALT-> //première, dernière commande
CTRL-r CTRL-s //recherche incrémentale, décrementale dans l'historique
ALT-p Alt-n //recherche dans l'historique non-incrémentale précèdent, suivant
Alt-c //change la lettre en majuscule
CTRL-k CTRL-u //efface tout après, avant le curseur
CTRL-y //coller (l'effacement coupe)
Alt-y //rotation circulaire de la récupération
Alt-? //liste des complétions possibles
Alt-* //insère la liste de complétions possibles
CTRL-x / //liste des complétions de fichiers possibles
Alt-~ //essaye de compléter par un nom d'utilisateur
CTRL-x ~ //liste de complétion possible de nom d'utilisateurs
CTRL ALT y //yank-nth-arg : insère le premier argument de la commande précédente
ALT SHIFT n //pour spécifier un autre argument au yank-nth-arg
//ex : ls [alt shift 2] [ctrl alt y]

redirections
commande > fichier //redirige la sortie standard vers un fichier et l'écrase
commande >> fichier //redirige la sortie standard vers la fin d'un fichier et l'ajoute
commande 1> fichier //redirige la sortie standard vers un fichier
commande 2> fichier //redirige la sortie d'erreur vers un fichier
commande 2>&1 //redirige la sortie d'erreur vers la sortie standard
commande &> fichier //redirige la sortie standard et la sortie d'erreur vers un fichier
commande < fichier //redirige le fichier vers l'entrée de la commande
exemple :
diff <(ls -1a dir1) <(ls -1a dir2) //diff de 2 répertoires

http://www.gnu.org/software/bash/manual/html_node/Redirections.html#Redirections

aide
man bash
bash -c help (puis bash -c "help jobs" par exemple)

Pour envoyer mail de resultats (domaine par defaut), configurer le MTA (exim4)
puis ajouter la variable MAILTO dans crontab, exemple:
MAILTO=toto,bob@bob.com

Pour editer crontab :
crontab -e
Pour lister les taches :
crontab -l

Format : minutes heures jourDuMois mois jourDeLaSemaine (0=dim, 1=lun) commandeShell
*/5 = toutes les 5 (minutes par exemple).

Exemple:
*/5 * * * * /home/bob/script.sh

parted //modifie, redimensionne les partitions, après installation
qtparted //parted en mode graphique
xdiskusage, baobab //taille des dossiers en mode graphique
disk-manager //utilitaire graphique pour monter les disques (ntfs en écriture y compris, avec ntfs-3g)

Pour tester l'adresse user@domain.com:
exim4 -bt user@domain.com

Pour configurer (sous Debian) :
dpkg-reconfigure exim4-config
ou editer /etc/exim4/update-exim4.conf.conf
puis /etc/init.d/exim4 reload
dc_smarthost = IP du serveur SMTP sortant

exemple de fichier update-exim4.conf.conf pour un smtp de free.fr :
dc_eximconfig_configtype='smarthost'
dc_other_hostnames='mamachine'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.free.fr'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

pour tester :
exim -bt <compte local ou compte@domain>

pour envoyer un message en ligne de commande :
exim -v -odf <compte@domain>
<message>
Ctrl-D

pour resoudre probleme de droits sous Debian pour php mail() (www-data vs Debian-exim) (solution qui dépanne, en attendant mieux):
changer user et group apache dans /etc/apache2/envvars
export APACHE_RUN_USER=Debian-exim
export APACHE_RUN_GROUP=Debian-exim

infos
file fichier //infos sur le fichier

recherches
grep -R -n "toto" dossier //recherche tout les fichiers du repertoire dossier contenant le mot toto
find ./dossier "*fichier_de_toto*" //recherche dans le repertoire dossier et ses sous-repertoires tout les fichiers dont le nom contient "fichier_de_toto" (optionnellement -print ou -print0)

substitutions sed
sed -i 's/avant/apres/g' *.txt //remplace tout les mots "avant" par "apres" dans les fichiers .txt.

substitutions perl
perl -pi -e 's/<div .*>/ /g' *.jsp //efface ou mod. Toutes les balises div
//de tout les fichiers jsp du répertoire
//aussi *(\w+) -> mot entier
perl -pi -e 's/\s* $//g' fichier.txt //supprime les espaces en fin de lignes
// \s -> y compris les espace
perl -pi -e 's+changer+$motif+g' fichier //substitution plus pratique pour des variables avec des slash (on peut utiliser + ou tout autre caractère

conversions ISO vers UTF-8
iconv -f ISO-8859-15 -t UTF-8 fichierISO.txt -o fichierUTF8.txt
file -i fichierUTF8.txt //verif

conversions xml, html, csv
xml2, 2xml, html2, 2html, csv2, 2cvs // package xml2 (man xml2)
// http://dan.egnor.name/xml2/ref
fgetcsv() //php

correcteur d'orthographe
aspell --encoding=utf-8 -l=fr -c fichier.txt //en utf-8, paquet aspell-fr

trie
xmlsort //trie un fichier xml selon telle ou telle balise (package libxml-filter-sort-perl (!attention aux modifs des données))

DTD and schema xml validation
xmllint (from xmllib) : validate an xml file with DTD or schema in console (ex : xmllint --valid file.xml). Several options (man xmllint).

Pour la config :
gconf-editor
exemples :
gconftool-2 --get /apps/nautilus/desktop/volumes_visible) (ou --set pour changer)
gconftool-2 --set /apps/gnome-terminal/profiles/Default/login_shell --type bool true
ou ajouter et editer un fichier dans /usr/gconf/defaults/ (pour generaliser)
puis update-gconf-default

Pour changer le theme Debian spacefun pas fun :
verifier /usr/share/desktop-base-grub_background.sh
editer /usr/share/gconf/defaults/15_desktop-base
update-gconf-default
update-alternatives --config desktop-grub
update-grub
update-alternatives --config desktop-background
editez /usr/share/gdm/defaults.conf :
GraphicalTheme=debian-spacefun (a remplacer)
editez /usr/share/gdm/greeter-config/10-desktop-base
/etc/init.d/gdm reload (ou gdm3)


Pour une capture d'écran de session GDM :
chvt 7 ; sleep 5 ; XAUTHORITY=/var/lib/gdm/:0.Xauth DISPLAY=:0.0 import -window root gdm.png

gnome-rdp :
CTRL+ALT+ENTER //maximise ou minimise le plein ecran

grub 2
Pour changer le démarrage par défaut au boot :
editez /etc/default/grub
changer la variable GRUB_DEFAULT (0 pour le 1er de la liste)
et relancez update-grub

Pour changer le fond d'image :
editez /etc/default/grub
changez la variable GRUB_GFXMODE pour une bonne resolution
exemple : GRUB_GFXMODE=1600x1200x32
et editez le fichier /etc/grub.d/05_debian_theme
changez la variable WALLPAPER
(et accessoirement les variables COLOR_NORMAL et COLOR_HIGHLIGHT)
puis relancez update-grub

Pour changer le thème Debian spacefun pas fun :
verifier /usr/share/desktop-base-grub_background.sh
editer /usr/share/gconf/defaults/15_desktop-base
update-gconf-default
update-alternatives --config desktop-grub
update-grub
update-alternatives --config desktop-background
editez /usr/share/gdm/defaults.conf :
GraphicalTheme=debian-spacefun (a remplacer)
editez /usr/share/gdm/greeter-config/10-desktop-base
/etc/init.d/gdm reload (ou gdm3)

Principe : un paquet traverse les règles de 1 à n tant qu'une règle ne concorde pas et ne décide pas de son sort avec une cible (Accept, Drop, Reject).
Si aucune règle ne concorde, l'action par défaut de la table est utilisée (par sécurité, mettre celle-ci à Drop).

iptables -L -v --line-numbers (table)

"pour changer la règle par defaut"
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD DROP


"pour activer le nat :"
# Masquerader ppp0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -D PREROUTING 1 //enlève la règle 1 de prerouting, par ex.

iptables -L -t nat //pour voir les tables NAT.

echo 1 > /proc/sys/net/ipv4/ip_forward //active le forwarding

"Rejeter les paquets NEW et INVALID venant ou forwardés de ppp0"
iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i eth0 0 -m state --state NEW,INVALID -j DROP

"Ne pas chercher à traduire les adresses en nom (utile si déconnecté du DNS)"
iptables -L -vn | less


"Activer le forwarding IP"
echo 1 > /proc/sys/net/ipv4/ip_forward

Créer une nouvelle chaine (-N).
Effacer une chaine vide (-X).
Changer la règle par défaut pour une chaine de départ (-P).
Lister les règles dans une chaine (-L).
Retirer les règles d'une chaine (-F).
Mettre à zéro les compteurs de bits et de paquets d'une chaine (-Z).

Ajouter une nouvelle règle à la chaine (-A).
Insérer une nouvelle règle à une position dans la chaine (-I).
Remplacer une règle à une position dans la chaine (-R).
Supprimer une règle à une position dans la chaine (-D).
Supprimer la première règle qui convient dans une chaine (-D)

iptables -I INPUT 1 -j DACCORD //pour insérer une chaîne par exemple
iptables -F TABLE //pour supprimer une table, d'abord la vider
iptables -X TABLE //puis la supprimer.

"Pour sauvegarder la configuration et la restaurer à chaque démarrage"
Exportez la configuration vers un fichier
iptables-save > /etc/iptables.conf // en mode 640
Placez une commande dans le fichier /etc/rc.local (sous Debian)
iptables-restor < /etc/iptables.conf

Les logs iptables d'une cible LOG se lisent dans /var/log/message

man iptables, pour toutes les options d'iptables...

cat /proc/cpuinfo //donne des infos sur le cpu
dmidecode // pour afficher les infos sur le matos, comme hwinfo --short
eject //pour ejecter un cdrom
hdparm //optimise et test les disques durs (et cdrom) [http://www.pc-boost.com/optimisation_linux.php]
hwinfo et hardinfo //informations sur le materiel (et benschmark avec hardinfo)
lprng et magicfilter //pour imprimante -> enlever cupsys et utiliser magicfilterconfig, puis editer fichier xx-filter pour résolution 600.
lshw et lshw-gtk //informations sur le materiel
mount -o loop -t iso9660 fichier.iso /media/cdrom //pour monter une image iso
printtool //pour imprimante, plus simple -> executer printtool en root
ripperx //pour graver des CD
//choisir driver bjc-7004 en 600x600 pour Canon i455
update-pciids //met à jour la base de données sur le matos, pour lspci.
xev //pour trouver le code d'une touche clavier ou d'un bouton souris

/usr/share/doc/menu/html/index //doc html sur la création de menus
update-menus //commande de mise-à-jour (update-menu --stdout > fichier)
//parcoure les scripts du rep /etc/menu-methods/
//à exécuter en user
install-menu //programme pour faire des scripts d'install de menu debian
//cf /etc/menu-methods/*

memstat //affiche l'usage détaillé de la mémoire (par processus)
//ex : memstat | grep [processus]
memstat | sort -n | tail
gmemusage //affiche graphiquement l'usage de la mémoire en temps réel
ps aux|grep processus //Très pratique
ps -axo pmem,vsz,rss,pid,user,command | sort -n | more
//(ou sort -k 2n par vsz, -k 3n par rss ...)
free //commande qui vérifie la mémoire. ex : free -s 3
vmstat //commande, comme free mais en plus détaillée. ex: vmstat -s 3
xrestop //à installer. Monitoring des ressources

ports NFS : 111 et 2049 (udp et tcp)
Mise en place :

Serveur
configurez le fichier /etc/exports (man exports)
sudo /etc/init.d/nfs-kernel-server start
sudo showmount -a //pour verifier

Client
sudo mount -t nfs <IP serveur>:<repertoire serveur> /home/user/<repertoire client>
ou dans le fstab :
<IP serveur>:<repertoire serveur> /home/user/<repertoire client> nfs rw,user,noauto 0 0
les postes doivent être sur le même réseau


ODBC
Pour se connecter au service mySQL depuis l'extérieur :
Pour une connexion vers un serveur externe Unix, installer unixODBC, paramétrer fichiers odbc.ini et odbcinst.ini
Pour une connexion vers un serveur externe Windows, installer ODBC pour MySQL (sur site de MySQL),
et utiliser en ligne de commande myodbc-installer.exe
Sur le serveur source éditer le fichier /etc/mysql/my.cnf pour modifier ou mettre en commentaire la ligne :
bind-address = 127.0.0.1
remplacer 127.0.0.1 par l'adresse réseau du serveur source, et redémarrage de mysql (vérifier avec netstat -an, port d'écoute 3306 (mySQL)).
Pour la connexion ODBC sous Oracle vers MySQL, se mettre en mode ANSI sous MySQL, en root :
SET GLOBAL sql_mode = 'ANSI';
Ou ajouter dans le fichier my.cnf (ou my.ini) :
transaction-isolation = SERIALIZABLE
sql-mode = ANSI

JDBC
Installer le driver JDBC pour MySQL (sous debian : apt-get install libmysql-java)
Ajouter une reference CLASSPATH vers le driver (exemple en editant le fichier ~/.bashrc )
export CLASSPATH=/usr/share/java/mysql-connector-java.jar:$CLASSPATH
dans l'application utiliser les champs de connexion jdbc:mysql://ADRESSE/BASE
où ADRESSE est l'adresse d'écoute MySQL indiquée dans my.cnf (bind-adress) et BASE la base de donnée

MySQL
Pour activer les logs de requêtes :
éditer /etc/mysql/my.cnf :
general_log_file = /var/log/mysql/mysql.log
general_log = 1
puis /etc/init.d/mysql reload

Principe : sur le serveur, on créer la base SSL, les certificats d'autorités, les certificats privés et les clés du serveur
(attention, les renseignements des clés et des certificats du serveur doivent être identiques).
Sur la machine cliente, on créer une clé privée, puis on envoie une copie de la clé au serveur (avec scp par exemple) pour qu'elle soit certifiée.
Le serveur la certifie et renvoie la copie du certificat privé correspondant, ainsi qu'une copie du certificat d'autorité du serveur.
Sur le serveur, on crée une clé de session cryptée de 1024 bits (par exemple).
Puis on crée le tunel VPN avec OpenVPN

Commandes :
openvpn --config fichierConf //démarre le vpn
/etc/init.d/openvpn start //démarre le vpn en demon


Note :Il faut utiliser OpenSSL avec précision, sinon ça ne marche pas.
voir christian.caleca.free.fr/crypt/openssl.htm

automake //A installer. Converti les Makefile.am en Makefile.in
Debian
dpkg --configure -a //reconfigure les packages
dpkg --purge paquet //pour purger, enlever les fichiers de config d'un paquet
dpkg -l | grep paquet //cherche un paquet installé, non precisement
dpkg -S paquet //idem mais en indiquant les fichiers
dpkg-query -l paquet //infos sur le paquet
apt-cache search -n paquet //cherche uniquement parmis les noms
// --full (infos supplémentaires)
apt-cache policy paquet //info sur la version installée et les versions disponibles
apt-get upgrade --fixe-missings //force l'upgrade
apt-get clean //efface les archives apt (/var/cache/apt/archives)
apt-file search fichier //a installer, recherche un paquet qui contient le fichier

//Pour les clés gpg, ouvrir le firewall à wwwkeys.eu.pgp.net
//puis tapper les commandes (pgp servers : www.keyserver.eu):
gpg --keyserver keyserver.fr --recv-keys [la clé indiqué par apt]
gpg --armor --export [la clé indiqué par gpg] | sudo apt-key add -
//puis apt-get update

pbl avec synaptic -> apt-get install apt

postqueue -p //liste les mails
postcat -q [IDmail] //rend le message lisible et l'affiche

arp //correspondance entre adresses physiques et logiques
//ex: arp -s adresseIP adresseMAC
awstats //analyseur web de sites (log apache)
cat /proc/net/ip_conntrack //pour voir les connexions, une fois le conntrack
cfengine //langage pour configurer les systemes linux (+ demon cfagent sur chaque poste)
chkrootkit //utilitaire qui recherche les rootkits
clusterssh //gere plusieurs shells séparément et simultanément
csync2 //rsync pour clusters (multi-clients)
darkstat //à installer. Analyseur reseau, interface web sur port 667 (plus leger qu'ntop).
dig -t SSHFP truc.com //donne des infos DNS, comme nslookup
dm-crypt //pour crypter disques durs
dsh //envoi de commandes simulatéments sur plusieurs postes (dsh -c) (voir clusterssh)
etherape //moniteur graphique de connexions et flux tcp/ip (à lancer en root)
ethereal //analyseur de trames
ethtool //affiche ou modifie debit carte reseau (mii-tool)
finger //pour voir la liste de personnes connectés, en détail
ganglia //idem mais orienté clusters - graphes
Geoip //pour connaître le pays à partir d'une adresse IP. (geoiplookup)
ifconfig wlan0 promisc //active le mode promiscuous pour l'interface wifi (wlan0) (desactiver = -promisc)
iftop //affiche le trafic en temps réel - console
ip addr //affiche la configuration et l'etat des interfaces réseaux
ip route //affiche le routage (man ip)
lsof //liste le programme actif suivant le port. ex : lsof -i:80
//lsof -i (en root) liste de tout les processus réseaux (-u USER -> par utilisateur)
//lsof -i@host -> liste des processus réseau d'un hôte (nom ou ip)
//lsof -i:port -> infos sur le processus qui ecoute sur ce port
mii-tool //affiche ou modifie debit carte reseau (ethtool)
munin //monitoring du trafic et du system - graphes
netstat -tnapc //lecture en continue (c) des connexions TCP (UDP -unapc)
nmap //scanne d'un reseau (ex : nmap -v -sP 192.168.0.0/24) ou d'un poste
ntop //analyse le trafic en temps réel (interface web, port 3000)
portsentry //utilitaire de surveillance dynamique de scan de port.
rcp //commande à distance
rkhunter //chasseur de rootkits (rkhunter -c)
rpcinfo -p //pour voir les connexions à distance
rsnapshot // rsync incrementale et gere les versions
scp //pour envoyer un fichier directement à un post, sur le réseau.
//ex : scp fichier dams@192.168.0.1:/home/dams/
snort //système de détection d'intrusion réseau (NIDS)
//ex : snort -vde -l ./log -h 192.168.1.0/24 -c /etc/snort/snort.conf
//avec interface graphique BASE (paquet acidbase) : http://www.nbs-system.com/blog/howto-idsips.html
tail -f [fichiers.log] // pour visionner les logs en temps réel // voir /etc/syslog.conf
tcpstat //à installer. Info sur la bande passante (capture de 5 sec)
tcptrack //à installer - liste les connexions tcp. ex: tcptrack -i eth0
tcpdump // à installer, pour écouter le trafic (man tcpdump)
tcpdump -i eth0 -l | tee fichier // affiche et sort (-l) une copie vers fichier.
tcpdump -i eth0 -l > fichier // copie dans fichier sans afficher.
users //liste des utilisateurs connectés
vnstat //monitoring de base - console
who //liste des utilisateurs connectés
xt //(xtraceroute) traceroute sur un globe

exemple d'un fichier /etc/network/interfaces (les lignes "auto" sont importantes):
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp

exemple d'un fichier /etc/resolv.conf (serveurs dns):
nameserver 212.27.10.140
nameserver 212.27.10.141



scp // envoie des données par SSH, scp fichier 192.168.0.2:~/dossierdistant/
/etc/ssh/sshd_config //fichier de configuration du demon ssh.
// ListenAddress pour restreindre les interfaces
// ex : ListenAddress 127.0.0.1
// possibilité d'ajouter des ListenAddress

Pour éviter la saisie de mot de passe, copier la clé publique sur la machine distante :
generer les clés : ssh-keygen -t rsa -b 1024
copie de la cles publique : ssh-copy-id -i ~/.ssh/id_rsa.pub user@poste_distant
mettre la cle privée en sécurité.

supprimer un hôte : ssh-keygen -R hostname


commandes
dmesg //affiche les messages du noyau
encfs //crypte un répertoire puis le décrypte virtuellement (facile a utiliser, très pratique)
//exemple : pour créer (rep est vide au départ) ou monter : encfs ~/rep_crypté ~/rep . Puis pour démonter: fusermount -u ~/rep
fuser //infos processus fichiers et sockets, exemple : fuser /media/usb pour afficher PID des processus utilisant le montage /media/usb
hdparm //optimise et test les disques durs (et cdrom) [http://www.pc-boost.com/optimisation_linux.php]
loadkeys fr //chargement du clavier français (fichier /usr/share/keymaps/i386/azerty/fr.kmap.gz) (touche / en qwerty = !)
mount -n -o remount / //remonte un système / (utile si celui-ci est monté en lecture seule, ou mount -n -o remount -t ext3 /dev/hda2 / (si fstab non ok))
netstat -tnap //liste les process par ports TCP (-unap pour UDP)
showmount -e [serveur] //affiche les exports NFS (en root)
tcpdump -qtel broadcast and port bootpc //affiche les MAC des hotes qui bootent en broadcast
tune2fs //pour gérer fsck. Infos : tune2fs -l /dev/hda1
/proc //répertoire virtuel d'infos sur les processus et le système.
// exemples : cat -v /proc/1755/cmdline (commande d'un processus)
// cat /proc/cpuinfo (infos sur les cpus)
uname -m //vérifie archi
unetbootin //creer une clé usb d'installation (pour un système ou un iso)
useradd -d /home/utilisateur -m utilisateur //ajoute un utilisateur et crée son répertoire home
usermod -d /home/nouveau -m utilisateur //change le répertoire home de l'utilisateur et le crée
xosview //affiche graphiquement l'utilisation des ressources
//éditer le fichier /etc/X11/app-defaults/XOsview
xsysinfo //comme xosview mais en moins détaillé
xman //liste des man, par section.

/etc/nsswitch //fichier de configuration du Name Service (compat, db, files, nis, dns...)

shutdown au clavier
par défaut, dans le fichier /etc/inittab, le raccourci ctrl-alt-sup est positionné sur un reboot :
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
En pratique, le reboot est moins utilisé que l'arrêt (sous Linux). Pour un arrêt du système au lieu d'un reboot, remplacez -r (reboot), par -h (halt) :
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now
Seul le raccourci clavier ctrl-alt-sup est paramétrable dans /etc/inittab (man inittab).
Sous systemd : pointez le lien symbolique /lib/systemd/system/ctrl-alt-del.target vers /lib/systemd/system/poweroff.target

claviers
#xorg utilise hal ou udev par defaut :
si hal, pour claviers francais lien :
editez usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi
et copiez-le dans /etc/hal/fdi/policy/
si udev : editez /etc/default/keyboard
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="latin9"
XKBOPTIONS=""

et redemarrez udev

Sous systemd, pour le numlock : créez le fichier /lib/systemd/system/numlock.service suivant :

[Unit]
Description=Switch on numlock from tty1 to tty6

[Service]
ExecStart=/bin/bash -c 'for tty in /dev/tty{1..6};do /usr/bin/setleds -D +num < \"$tty\";done'

[Install]
WantedBy=multi-user.target

Puis activez le service :
sudo systemctl enable numlock


clés ssh
generer les clés : ssh-keygen -t rsa -b 1024

authorisation express sur machine distante :
ssh-copy-id -i ~/.ssh/id_rsa.pub user@poste_distant

supprimer un hôte : ssh-keygen -R hostname



dépannage au démarrage
init=/bin/sh //a ajouter sous grub au démarrage pour session root (utile pour dépanner)
vga=791 //a ajouter sous grub ou /boot/grub/menu.lst à la ligne concernant le système à charger, pour résolution svga de la console.



compilation express du kernel
  1. téléchargez le dernier noyau (linux-source) et decompressez (dans /usr/src/) (tar -jxvf si tar.bz2) et (ln -s linux-source... linux)
  2. dans le répertoire linux-source... Éditez la config (make menuconfig ou make xconfig)
  3. compilez (sauce debian)
    si multiprocs, faite un export CONCURRENCY_LEVEL=<nombre de cpu> avant de compiler (pour multithreads, cf man make-kpkg, "grep -c '^processor' /proc/cpuinfo" pour le nombre de cpu)
    make-kpkg --initrd --append-to-version=.myversion --revision=1 kernel_image kernel_headers
  4. installez le nouveau linux(...) (situé dans /usr/src) (debian : dpkg -i linux-image-*.deb)
  5. les headers s'y trouve également
  6. clean'up (make clean, make-kpkg clean) et update-grub


kernel drivers
Pour le driver de carte réseau Qualcomm Atheros Killer E220x (sur les cartes MSI 970 par exemple), il faut cocher le module ALX (dans Device Drivers / Network device support / Ethernet driver support / Atheros devices).


kernel panic
VFS : Cannot open root device "hda1" or unknow block (0,0)
Please append a correct "root=" boot option [...]
:: vérifiez si /boot/grub/menu.lst contient une ligne "initrd /boot/initrd.img-[version] pour la version du kernel problématique
:: vérifiez si /boot/initrd.img-[version] existe (contient le necessaire pour charger les pilotes de disques durs)
:: si pas d'initrd.img-[version] créez-le avec la commande update-initramfs (man update-initramfs) (exemple : update-initramfs -k 2.6.30.091007 -c) (version est du meme format que uname -r) puis update-grub


les modules
Pour ajouter un module au démarrage, ajoutez-le dans le fichier /etc/modules
Pour eviter un chargement de module au démarrage, ajoutez-le dans le fichier /etc/modprobe.d/blacklist.conf

les patches
cd /usr/src/linux
bzip2 -dc /usr/src/patch-1.0.0.bz2 | patch -p1 --dry-run
puis si ok
bzip2 -dc /usr/src/patch-1.0.0.bz2 | patch -p1


le démarrage des applications
Les applications devant se lancer au démarrage sont listées par des liens symboliques de scripts se trouvant dans /etc/init.d.
Sous Debian, ces liens symboliques sont situés dans les répertoires /etc/rcN.d où N représente le niveau applicatif.
Pour éviter le lancement d'une application au démarrage, renommer son lien en KXXappli, ou XX est 100-NN, ou plus simplement utilisez l'outil update-rc.d (package sysv-rc).
exemple : rename 's\S30\K70\' S30gdm
ou update-rc.d gdm disable

creation de paquets debian
Si ça compile normalement,
dans un repertoire debian, éditez un fichier rules et un fichier control (voir exemples de paquets debian sources (apt-get source ...))
puis commande : debuild -i -us -uc -b


~utilisateur //répertoire de l'utilisateur (tilde)
~/ //répertoire perso. ou cd (tout court)
bc //calculatrice (quit pour quitter)
cal //affiche le calendrier (cal -3)
calendar //affiche l'éphémeride
dirs //affiche le répertoire courant et la pile de répertoire
du -ch ./ //infos taille rep
du -s * | sort -rn //liste les répertoires et fichier par taille
fc -l 10 //affiche les 10 dernières commandes
fc -s //réexécute la dernière commande ( -s 120 : commande 120, -s cc commande commençant par cc). alias 'r="fc -s"'
find ./ -name "*.jpg" -print //recherche les jpg à partir du rep courant
find . -type f -print | xargs grep toto //recherche récursive dans plusieurs fichiers
find /home/user/ -name "*.xml" -print -exec grep "<titre>" {} \; //recherche les fichiers xml contenant des balises <titre> dans le répertoire /home/user/ et ses sous-répertoires
finger chfn chsh //finger : affiche les infos d'un user; chfn : change les infos d'un user; chsh : change le shell d'un user
file [fichier] //infos sur le type du fichier
fmt //formate la sortie standard (voir aussi pr)
getent //affiche infos sur fichiers de bases (passwd, hosts, networks, ...)
hash //fréquence des commandes
head [fichier] //affiche les 10 premières
history //historique des commandes
info //lit des pages d'informations, comme man. Ex : info man
info coreutils //donne des infos sur les trucs et astuces sous term
ldd /.../programme //affiche la liste des librairies nécessaires au programme
locate [fichier] //recherche un fichier et affiche son chemin
ls [d-f]e[0-9]* //exemple ls. Liste des fichiers commençant par d,e,f
//puis avec un e, un chiffre et n'importe.
ls -mc //affiche en remplissant les lignes (pratique)
ls -rtl //affiche par date de dernière modification
ls -X //tri selon les extensions de fichier
lsof -c commande //infos sur la commande commande (man lsof)
man -k programme //liste des bases man possibles pour un programme
man n programme //lis dans la base n.
md5pass motDePasse //genere un mot de passe crypté (paquet syslinux-common)
mpd & mpc //lecture de musique, en terminal, mpd pour lancer le demon, mpc pour utiliser
//mpc ls | mpc add -> charge la liste. mpc play -> lance la lecture.
mocp (moc) //lecteur de musique en mode console.
modprobe -r pcspkr //supprime le bip sonore, en root (et ajouter dans blacklist)
nslookup [IP] //affiche le nom d'hote d'une adresse IP
od //affiche un texte en octal, en decimal ou en hexadecimal. od -ax. voir aussi hd (hexdump)
popd //se déplace et retire le premier répertoire de la pile
printf "%x\n" 10 //affiche 10 en hexadecimal. Inverse : printf "%d\n" 0x0a
ps -LwFC commande //infos sur la commande commande (man ps)
pushd . //ajoute le répertoire courant dans une pile de répertoire
pushd +2 //se déplace au deuxième répertoire de la pile sans le retirer
rename [sedcmd] fichier(s) //renomme un ou plusieurs fichiers
//ex : rename 's/fihier/fichier/' * renomme tout les fihier en fichier.
screen //à installer. Plusieurs terminaux depuis un terminal
//-> gestionnaire de fenêtres en mode console. man screen
sed -i '/abab/d' fichier //supprime toutes les lignes contenant abab
//en recursif sur un répertoire : find /rep/ -name "*.txt" -exec sed -i '/abab/d' {} \;
sha256sum //hash en sha256, ex : echo -n "test" | sha256sum
su -c commande //mode root pour une commande.
sudo commande //mode superutilisateur pour une commande. Faire visudo en root.
strings [fichier] //affiche les caractères imprimables d'un fichier (texte ou binaire)
tail [fichier] //affiche les 10 derniers lignes d'un fichier
tee //affiche sur la sortie standard et ecrit dans un fichier ( echo "test" | tee -a fichier )
uniconvertor fichier.svg fichier.pdf //convertit le fichier svg en pdf
watch commande //execute périodiquement une commande (ex. watch date)
which [programme] //affiche le chemin du programme
xset b 0 //désactive le bip sonore, sous X (man xset).

desactive le bip sonore
xset b 0
modprobe -r pcspkr (+ blacklist)
editez /etc/inputrc :
set bell-style none

Struts
  1. Installer et configurer Apache2, puis le JSK de sun, Tomcat5, et la librairie Struts1.2.
    Vérifier qu'Apache2 fonctionne
  2. Exporter les paths java jsk, example : export JAVA_HOME='/usr/lib/j2sdk1.5-sun'
  3. Exécuter le script de setup de Tomcat : /usr/share/tomcat5/bin/startup.sh
    Vérifier que Tomcat fonctionne (localhost:8180)
  4. Télécharger le paquet bin de struts pour récupérer les exemples en .war
    Utiliser l'interface de tomcat pour les installer.
    Vérifier qu'ils fonctionnent.
  5. Installer le module pour apache2 jk_mod, pour la liaison Apache-Tomcat
    Vérifier que le jk.load se trouve dans /etc/apache2/mods-enabled/
  6. Créer un fichier /etc/apache2/workers.properties
    Éditer le de la forme :
    workers.tomcat_home=/usr/share/tomcat5
    workers.java_home=/usr/lib/j2sdk1.5-sun
    ps=/
    worker.list=worker1
    worker.default.port=8180
    worker.default.host=localhost
    worker.default.type=ajp13
    worker.default.lbfactor=1
  7. Ajouter les lignes dans le fichier apache2.conf
    #### Pour le module jk (connection Tomcat) ####
    # Pour trouver le fichier workers.properties
    JkWorkersFile /etc/apache2/workers.properties
    # Le log jk
    JkLogFile /var/log/apache2/mod_jk.log
    # Le niveau du log jk [debug|error|info]
    JkLogLevel info
    # Le format du log jk
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    # Les options jk (SSL KEY SIZE)
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    # Les format de requêtes jk
    JkRequestLogFormat "%w %V %T"
    # L'envoi de servlet
    JkMount /jsp-exemples worker1
    JkMount /jsp-exemples/* worker1
    #*/
  8. Relancer Apache.
    Vérifier que ça fonctionne (localhost/jsp-exemples)
    Modifier le fichier apache2.conf pour charger les pages
    struts qui vont bien au lieu de l'exemple jsp.

BIRT
    Après installation du birt.war par le manager de Tomcat (ou recopie du répertoire dans /var/lib/tomcat6/webapps/)
    si Tomcat6, il est nécessaire de copier la lib commons-logging d'Apache http://commons.apache.org/logging dans le repertoire lib de Tomcat.
    /usr/share/tomcat6/lib/commons-logging-1.1.1.jar
    puis de redémarrer Tomcat. L'exemple de Birt fonctionne alors.
    http://www.eclipse.org/birt/phoenix/deploy/viewerSetup.php

    Pour déployer un nouveau rapport, placez le rptdesign dans /var/lib/tomcat6/webapps/birt/ et utiliser l'url avec monRapport.rptdesign (et accessoirement éditer le fichier index.jsp)
    exemple : http://localhost:8080/birt/frameset?__report=monRapport.rptdesign


Le choix du programme utilisé par défaut est celui défini dans /etc/alternatives
update-alternatives --config x-terminal-emulator
Pour déporter l'affichage : dans le serveur, modifier le fichier /etc/ssh/sshd_config, la ligne X11Forwarding=yes
Relancer ssh, et se connecter depuis le client avec ssh -X ...

Pour les curseurs, après installation d'un thème (par exemple xcursor-themes): update-alternatives --config x-cursor-theme
http://www.debianadmin.com/howto-change-default-cursor-theme-in-debian.html

Désactiver le bip sonore : xset b 0 (voir man xset).

xlsfonts : affiche les polices de caractères disponibles (x11-utils)