bon bouquins unix en ligne : http://www.loli-grub.be/contrib/tlepoint/BASE/version-internet.html
La commande cd permet de changer de répertoire :
cd : pour aller dans le répertoire $HOME (~/ = compte utilisateur).
cd / : pour aller à la racine /
cd .. : pour remonter au répertoire parent (../../../local/bin ..etc…).
cd - : pour retourner au répertoire précédent.
cd /lib : pour ce loger dans le répertoire lib
La commande ls permet de lister le contenu du répertoire :
ls -a : affiche tous les types de fichiers
ls -l : affiche les liens des fichiers
ls -r * : affiche tous les répertoires et leurs fichiers
Pour manipuler les répertoires et leur contenu :
mkdir : création d'un répertoire.
rmdir : suppression d'un répertoire.
cp -r : pour copier un répertoire et ses fichiers.
rm -r : suppression de tous les fichiers d'un répertoire.
mv -r : pour déplacer et/ou renommer un répertoire.
Pour manipuler les fichiers :
cp : pour copier
mv : pour déplacer et/ou renommer
rm : pour supprimer
pour ces commandes l'option -f force l'execution de la commande contrairement à l'option -i qui demande confirmation .
cat /etc/profile > ~/confenv : pour copier le contenu du fichier profile dans le fichier confenv de son répertoire HOME.
Pour afficher les fichiers et/ou leur contenu :
cat : affiche le contenu d'un fichier
cat nom_fic | more : more ou less permet de lister page/page ou ligne/ligne.
ls | less : même chose pour la commande ls et…
groff -Tascii -man page_1 | less : affiche en ASCII le contenu de la page de manuel page_1
ls *.txt | grep ce_nom : rechercher les fichiers ayant l'extension txt qui contiennent ce_nom dans leur nom.
ls *.txt | xargs grep -l ce_mot : recherche les fichiers ayant l'extension txt qui contiennent le texte ce_mot.
cat *.txt | grep ce_mot : rechercher les lignes contenant ce_mot dans tous les fichiers ayant l'extension txt.
find -name nom_fic : recherche le fichier nom_fic
find -iname nom_fic : recherche nom_fic sans tenir compte des majuscule/minuscule.
find / -name '*' | xargs grep -l mon_mot : recherche le(s) fichier(s) contenant le texte mon_mot
find / -user nom_user -ls : recherche les fichiers appartenant à l'utilisateur nom_user
Pour modifier les droits d'accès (voir tableau(1.2) dans la page “Les droits d'accès…”):
chmod : change les droits répertoires et fichiers (chmod xxx)
chown : change le propriétaire et le groupe (chown moi.nous)
Autres commandes utiles :
pwd : indique le chemin du répertoire où vous êtes logé.
free : affiche les informations sur la mémoire.
df : affiche les informations sur les disques (partitions montées).
uname -a : affiche les informations sur ,le noyau ,le cpu et la machine.
who : indique qui est connecté et sur quelle console (tty).
$PATH : indique les chemins déclarés pour accéder aux librairies et binaires.
ldconfig -p : affiche les librairies installées par ordre alphabétique.
ldconfig -V : affiche les librairies installées par répertoire.
ldconfig : met à jour la configuration du système.
locate libc.so : Indique les librairies libc.so.? installées et leur chemin.
type vi : Pour savoir si vi est installé et connaître son chemin.
ldd /usr/bin/vi : Pour connaître les librairies utilisées par vi.
patch < patch.nouveau : appliquer le patch patch.nouveau depuis son répertoire.
patch -p0 < patch.nouveau : appliquer patch.nouveau,sur plusieurs sous-répertoires, depuis la racine.
Source : http://linuxonfire.free.fr/
Ces commandes ne sont pas exhaustives (et en vrac), et servent de mémo pour travailler sous unix
- principe de base : user et root (sytème unix/linux) vous êtes maitre de l’ensemble de votre machine!
terminal : #su #password : votrepassroot - chercher un fichier : #find /home/répertoire -name "nom_fichier*" - print - déplacer un fichier : #cd /home/répertoire_fichier_à_déplacer #mv nom_du_fichier /home/nom_répertoire_vers déplacé_fichier - arrêt opération imprimante : #lpstat -l #cancelimprimante-[68] (chiffre = numéro de l’opération à annuler) - transforme tout un répertoire .wav en .mp3 : #for i in ls -1 nom_du_fichier.wav; do; lame $i $inom-fichier.mp3 ou script mpeu3 (lien à venir) - commande lancement jack : #jack -d alsa - pour copier un fichier : #cd répertoire_fichier_à_copier #cp nom_fichier /home/répertoire_de_la_copie - commande chmod : #cd /répertoire_changement_de_permission #chmod 666 ou 777 ou 755 nom_fichier - force ssh ++ : #ssh -l root serveur - config machine perso via navigateur : https://localhost:1000 - compression tar d’un fichier ou répertoire : #cd nom_répertoire_où_se_trouve_le_fichier #tar cvfz nom_fichier.tar.gz nom_fichier - décompresser un tar #cd nom_répertoire_où_se_trouve_le_fichier #tar xcfz nom_fichier.tar.gz - copie de fichier en ssh : 1- d’une autre machine vers la sienne : ouvrir une console sur sa machine : #scp user@192.168.1.1:nom_fichier . (user@numero_IP:nom_fichier .) 2- de sa machine vers une autre : ouvrir une console, aller dans le répertoire où se trouve le dossier à déplacer #cd /home/user/.. #scp nom_fichier user@numero_IP:/home/user/.. (répertoire sur la machine distante) - vérifier la mémoire de votre ordinateur #more /proc/meminfo
=
/ NB : ceci est mon “pense-bête” _personnel_ : j'y mets mes notes au fur et à mesure de ma découverte de Linux (Mandrake principalement, Debian/Knoppix parfois) : vous y trouverez donc des erreurs, des explications incomplètes et des choses que je suis le seul à comprendre. Mais comme certaines explications peuvent être utiles, je laisse ce fichier en ligne. Il n'y a pas (encore) de classement ou de liens : utilisez la fonction recherche de votre “butineur”. A utiliser à vos risques et périls :) Jean-Claude Garaud /
Les mines de renseignements
http://tldp.org/LDP/intro-linux/html/ Introduction to Linux
http://tldp.org/LDP/intro-linux/html/chap_04.html Processes
http://www.freenix.fr/unix/linux/Guide/ (le guide du rootard) http://www.delafond.org/survielinux/ Guide de survie du débutant sous Linux http://lea-linux.org http://www.funix.org/fr/linux/main-linux.php3?refmain&pagemenu http://www.zebulon.org.uk/ http://christian.caleca.free.fr/index.html http://aplawrence.com http://linux-newbie.sunsite.dk/index.html http://www.unixguide.net/linux/linuxshortcuts.shtml http://www.freeos.com http://www.anfalab.org http://tldp.org http://www.linux-france.org/article/cesar/index.php?page501 http://astuce.linux.free.fr/ http://troumad.free.fr/Linux/Linux.sxw http://guide.andesi.org http://funix.chez.tiscali.fr/informatique/linux/ http://linux-sottises.net http://www.univ-st-etienne.fr/infsci/linfo/l0/unix/Cours/Html/ UNIX Principes de base http://cyberzoide.developpez.com/unix/ Pense bête pour UNIX http://www.lalitte.com/nat Réseau : NAT http://www.commentcamarche.net/
Programmation
BASH
- Bash Guide for Beginners http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html - BASH Programming - Introduction HOW-TO http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html - Guide avancé d'écriture des scripts Bash http://www.bsdbooks.net/shells/scripting/fr/ http://abs.traduc.org/abs-3.1-fr/ Advanced Bash Scripting Guide : http://www.tldp.org/LDP/abs/html/ http://personal.riverusers.com/~thegrendel/abs-guide-3.3.tar.bz2 - Linux Shell Scripting Tutorial http://www.freeos.com/guides/lsst/
Quelques trucs
Identifier le shell
echo $SHELL cf. http://unix.about.com/library/weekly/aa092500a.htm La commande ps retourne les processus actifs, et en particulier le shell
Connaître la configuration matérielle et logicielle
cf. http://lea-linux.org/admin/exploration_config.html
Version de mandrake installée : cat /etc/mandrake-release Version du noyau Linux : uname -sr (cf. man uname)
Déterminer le type d'un fichier
file nomfichier
Infos sur un fichier (ou répertoire)
stat nom_fichier (donne en particulier le nombre de “hard links”)
Récupérer le code de sortie d'une commande (errorlevel)
Très utile dans les scripts, ce code peut aussi être visualisé directement en ligne de commande grâce à echo $?. Exemple : $ mount | grep /dev/hda1 echo $? 1
la partition /dev/hda1 n'est pas montée, n'existe pas, est déjà montée … (voir man mount)
$ mount | grep /dev/sda7 /dev/sda9 on /mnt/backup type ext3 (rw) $ echo $? 0
la partition /dev/sda9 est montée
Configuration matérielle
D'après Gnu/linux magazine N°71
Bus PCI
$ lspci $ lspci -v $ lspcidrake
Bios et hardware
# dmidecode (à installer) Exemple : chercher les caractéristiques de la carte mère : # dmidecode | less Dans less taper h (pour la doc en ligne)
/board (pour trouver la 1° occurence de board)
n (pour la suivante) N (pour revenir à la précédante)
# lshw # lshw -html
Disque dur :
# hdparm -i /dev/hdx Nb : ne fonctionne pas (actuellement 14-4-2005) avec disques SATA ; dans ce cas taper hdparm /dev/sdx qui ne retourne pas des infos vraiment intéressantes
SMARTmontools (smartctl)
Processeurs
$ cat /proc/cpuinfo
Arrêter le PC
cf: http://www.faqts.com/knowledge_base/view.phtml/aid/24476/fid/10 Pour l'arrêter complètement :
halt shutdown now shutdown -h now
(h halt)
Avec redémarrage :
shutdown -r now
(r reboot) ou
<CTRL><ALT><DEL>
A partir de X Window, d'abord
<CTRL><ALT><BACKSPACE>
pour quitter X Windows, puis
<CTRL><ALT><DEL>
shutdown +3
(shutdown dans 3 minutes)
shutdown -c
supprimer l'arrêt programmé par la commande précédante
shutdown -Fr now shutdown -fr now
-F avec fsck au reboot -f sans fsck au reboot
init 5
Fichiers standard
cf. http://livefirelabs.com/unix_tip_trick_shell_script/june_2003/06092003.htm Un programme UNIX standard ouvre par défaut 3 fichiers
Nom Numéro
- standard input (stdin) 0 - standard output (stdout) 1 - standard error (stderr) 2
Redirections
cf. http://unix.about.com/library/weekly/aa110600b.htm#stderr
Rediriger la sortie d'une commande vers un fichier : cmd > fic Rediriger stderr vers un fichier : cmd 2> fic Rediriger stdin et stderr vers le même fichier : cmd > fic 2>&1 Rediriger stdin et stderr dans 2 fichiers différents : cmd > fic1 2> fic2 Rediriger à la fois stdout et stderr vers le fichier fic cmd &>fic Diriger le résultat (stdout) d'une commande simultanément vers l'écran et un fichier : cmd | tee fic
Diriger le résultat d'une commande (stdout + stderr) simultanément vers l'écran et un fichier : cmd 2>&1 | tee fic
Pour ajouter à un fichier déjà existant, remplacer > par » Pour tee, l'option d'ajout est -a : cmd | tee -a fic
Arborescence (nom des répertoires)
http://www.pathname.com/fhs/2.2/ okki666.free.fr/docmaster/articles/linux025.htm
Différence entre bin et sbin : binbinaires, sbinbinaires système.
pour un utilisateur standard bin peut être dans le PATH, mais sbin n'a aucune raison d'y être.
/ racine (root) du système de fichiers /bin programmes nécessaires pour démarrer le système en mode mono-utilisateur. /boot /dev device files : points d'entrées vers des périphériques physiques /etc fichiers de configuration /home données propres à chaque utilisateur /lib shared libraries nécessaires aux programmes de démarrage (principalement des programmes placés dans /bin et /sbin). /mnt pour le montage pour les périphériques en mode block (cdrom, floppy …) /proc infos sur l'état du système et les différents processus /sbin programmes nécessaires au fonctionnement du système
Les commandes placées dans /sbin (et dans /bin) ne sont en général pas exécutées par les utilisateurs.
/tmp fichiers temporaires /usr usr Unix System Resources. Données que les utilisateurs peuvent se partager /var fichiers qui sont susceptibles de changer fréquemment : logs, les files d'attentes pour les impressions, etc.
Répertoires dans /usr
X11R6 système Xwindow X11R6/bin exécutables pour le système Xwindow. X11R6/lib librairies pour les programmes dans /usr/X11R6/bin. X11R6/lib/X11 librairies utiles au démarrage du serveur Xwindow. X11R6/include/X11 fichiers d'entêtes des applications X11.
bin programmes utilisables sur le système. bin/X11 liens symboliques (et historiques) vers /usr/X11R6/bin dict dictionnaires utilisés par les vérificateurs orthographiques etc fichiers de configuration qui peuvent être partagés entre plusieurs machines. Vide sur MDK include fichiers entêtes (.h) pour le compilateur C lib librairies utilisées par les programmes des utilisateurs. Sous-répertoires pour les grosses applications
Contient aussi des programmes qui ne sont jamais lancés directement
X11 lien symbolique vers /usr/X11R6/lib/X11
local ce qui est spécifique à la machine locale local/bin programmes local/lib librairies local/doc documentations man man pages src sources des diverses applications installées sur le système. src/linux sources du noyau.
Les répertoires dans /var lock fichiers de verrouillage. Par convention, le nom des fichiers est toujours LCK.<périphérique> log logs du système preserve sauvegardes d'édition de vi. spool contient les files d'attentes d'impressions spool/cron entrées crontab pour l'automatisation des tâches. spool/lpd fichiers en attente d'impression. spool/mail boîtes à lettres (mailbox) et les messages (mails) des utilisateurs.
PATH
Affichage : echo $PATH
Ajout : PATH$PATH:nouveau_rep
Pour que la nouvelle valeur soit utilisée par le shell et les threads : export PATH
Ou en une seule commande : export PATH$PATH:nouveau_rep
Quelques touches rapides très pratiques
http://linux-newbie.sunsite.dk/lnag_commands.html#shortcuts et touches système : http://www.linux-france.org/article/cesar/index.php?page5035
<Ctrl><+> Zoomer (nombreux browsers, konqueror, firefox …) <Ctrl>↔ 'dé'zoomer <Ctrl><Alt><Esc> lance xkill <Ctrl><Alt><BkSpc> kill le serveur X-windows courant <Ctrl><d> en début de ligne : ferme le terminal courant
sinon envoie EOL au processus courant
<Ctrl><z> Envoie le processus courant en tâche de fond
Sous KDE
<Ctrl><Esc> Visualisation avec possibilité de suppresion des processus <Alt><F12> (Bascule) permet d'émuler la souris à l'aide des flèches du clavier <Alt><PrintScreen> Met une image de la fenêtre courante dans le presse-papier <Ctrl><Alt><PrintScreen> “ de l'écran ” “ <Ctrl><Alt><d> (Bascule) fait apparaître/disparaître les fenêtres présentes sur le bureau <Alt><LeftMouseButton> Permet de déplacer une fenêtre dont la barre de titre est inaccessible
Raccourci touches rapides <Alt><F2>
Ouvre une fenêtre pour taper une commande. A partir d'une session utilisateur, pour lancer une commande en root : kdesu commande
Ce raccourci manque dans KDE, session root Pour l'installer : Menu : System / Configuration / KDE / Accessibility / Keyboard shortcuts / Modifier Keys et cliquer sur Defaults
magic sysrq keys
Pour arrêter une machine plantée. http://snafu.freedom.org/linux2.2/docs/sysrq.txt (EN) NB : il faut que le noyau ait été compilé avec 'Magic SysRq key' à yes (CONFIG_MAGIC_SYSRQ).
<ALT><SysRQ><command key>
<command key> : 'r' - Turns off keyboard raw mode and sets it to XLATE. 'k' - Kills all programs on the current virtual console. 'b' - Will immediately reboot the system without syncing or unmounting
your disks.
'o' - Will shut your system off via APM (if configured and supported). 's' - Will attempt to sync all mounted filesystems. 'u' - Will attempt to remount all mounted filesystems read-only. 'p' - Will dump the current registers and flags to your console. 't' - Will dump a list of current tasks and their information to your
console.
'm' - Will dump current memory info to your console. '0'-'9' - Sets the console log level, controlling which kernel messages
will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
'e' - Send a SIGTERM to all processes, except for init. 'i' - Send a SIGKILL to all processes, except for init. 'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system
will be non-functional after this.)
Utilisation de “info”
<q> quitter <p> previous node <n> next node
Menus : se déplacer à l'aide des flèches sur une entrée de menu indiquée par :: <entrée> sélectionne l'entrée de menu <u> up (pour revenir en arrière)
ps
$ ps affiche tous les processus lancés par l'utilisateur dans le terminal $ ps -x affiche tous les processus lancés par l'utilisateur $ ps -aux affiche tous les processus lancés par tous les utilisateurs
pstree
affiche les processus sous forme d'arborescence
ls
Pour afficher la configuration de l'affichage en couleur :
dircolors -p NB : le code de couleur y est indiqué.
Nombre de fichiers dans un répertoire
ls | wc -l
less
less fichier ls -l /etc | less
Recherche : /chaine_cherchée Les chaînes trouvées apparaissent en surbrillance Pour passer à la suivante : n
précédente : Shift n
Pour quitter : q
Renommer un fichier
mv source destination
Renommer des fichiers
rename .htm .html *.htm
grep, egrep, rgrep
http://www.linux-tutorial.info/modules.php?nameTutorial&pageid32
Rechercher une chaîne de caractères dans l'ensemble des fichiers d'une arborescence
grep -rH chaîne * grep -d recurse grep -R rgrep chaîne
Rechercher une chaîne de caractères dans l'ensemble des fichiers d'un répertoire
find répertoire -print | xargs grep chaîne_cherchée
-print | xargs permet de faire afficher en début de ligne le nom du fichier qui contient la chaîne cherchée
Rechercher simultannément plusieurs chaînes
Exemple egrep “while|read|for” /repertoire/*
Afficher le contenu de tous les fichiers d'un répertoire en évitant les lignes vides et les commentaires
egrep -v “^$|^#” /repertoire/* | less -v –invert-match
$ fin de ligne
Afficher le nom des fichiers contenant une chaîne grep -l chaîne_cherchée /repertoire/*
sed
http://www.faqs.org/faqs/editor-faq/sed/ http://thomas.leduc.free.fr/faqs/index.php?themesed
sed s/“chaîne_cherchée”/“chaîne_de_remplacement”/g fichier_source > fichier_destination s substituer / entre la chaîne à chercher et la chaîne qui la remplace g répéter la substitution Remplacer \ par / (slash et back-slash) ————————————— r”\toto \titi“ echo $r | sed 's/\\/\g' > fic ou bien : echo $r | sed s/\\\\/\\g > fic cat fic /toto /titi Modifier une variable ——————— r$(echo “C'est toi ? Bonjour toi !” | sed 's/toi/vous/g') echo $r C'est vous ? Bonjour vous ! Une meilleure solution est d'utiliser : r”C'est toi ? Bonjour toi !“ $ echo ${rtoi/vous} C'est vous ? Bonjour vous ! cf. “Remplacements” et “Remplacements multiples” ci-dessous
Pour remplacer \ par / (slash et back-slash) r”\toto \titi“ $ echo ${r\\\\/\/} /toto /titi $ c${r\\\\/\/} $ echo $c /toto /titi
Quelques commandes intéressantes
lspci
lspci |less lspci v |less lspci vv |less
Affiche toutes les infos concernant le bus PCI et les périphériques qui y sont connectés.
tail
tail /var/log/syslog affiche les 10 dernières lignes tail -n 30 /var/log/syslog affiche les 30 dernières lignes tail -f /var/log/messages affiche en continu les 10 dernières lignes du fichier
lsof
En l'absence de toute option, lsof retourne la liste de tous les fichiers ouverts appartenant aux pocessus actifs lsof -i tous les fichiers internet lsof -i :25 tous ceux qui utilisent le port 25 (SMTP) lsof -i |grep imap tous les processus IMAP actifs
find
http://www.linux-mag.com/2001-04/newbies_01.html http://www.linux-mag.com/2002-09/power_01.html
Nb: - AND implicite entre les opérateurs ! - la commande est par défaut récursive ; pour limiter la profondeur de recherche : -maxdepth n - ne plus utiliser -name avec les versions récentes de Mandrake : si on l'utilise, le message d'erreur suivant s'affiche :
find: paths must precede expression Usage: find [path...] [expression]
find / -name fichier.txt localiser fichier.txt à partir de la racine find . -name fichier.txt à partir du répertoire où l'on se trouve
find / -name fichier.txt -ls affiche à la manière de ls
find / -name fichier.txt 2>/dev/null supprime les messages d'erreur find / -name '*fic*' trouve la chaîne fic dans les noms de fichiers ou répertoires find / -iname '*fic*' ignore la casse find / -size +10000k trouve les fichiers de plus de 10000k (k kilobytes, c bytes) find /home -iname '*do*' -type d 2>/dev/null tous les répertoires contenant do dans le nom (ignore la casse)
f regular file
l symbolic file -user uname username ou ID
find / -amin -10 # find files accessed in last 10 minutes find / -atime -2 # find files accessed in last 48 hours find / -empty # find empty files and directories find / -group cat # find files owned by group cat find / -mmin -5 # find files modified in last 5 minutes find / -mtime -1 # find files modified in last 24 hours find / -nouser # find files owned by an invalid user find / -user fred # find files owned by fred find /usr/local/toto -user bibi # affiche tous les fichiers à partir du répertoire /usr/local/toto
qui ont pour utilisateur bibi
Expressions (and est implicite !) find / -user fred -or -user george tous les fichiers appartenant à fred ou george
Commandes find ./tmp/ -name '*.tmp' -exec rm \{\} \; efface tous les fichiers *.tmp du répartoire ./tmp
attention, l'alias rm'rm -i' n'est pas utilisé !
chkconfig
pour gérer les services (cf. man chkconfig)
# chkconfig –list |grep on Liste des services démarrés : # chkconfig –add nom_service ajouter un service # chkconfig –level
runlevel
pour afficher le runlevel actuel et le précédent
Liens
- symboliques (symlink) ln -s nom_fichier_réel nom_fichier_lien - hard link ln nom_fichier_existant nouveau_nom_fichier
Prompt
cf. http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/ $ echo $PS1 [\u@\h \W]\$
Quelques séquences escape intéressantes :
\d the date in "Weekday Month Date" format (e.g., "Tue May 26") \h the hostname up to the first `.' \H the hostname \j the number of jobs currently managed by the shell \l the basename of the shell's terminal device name \t the current time in 24-hour HH:MM:SS format \T the current time in 12-hour HH:MM:SS format
\@ the current time in 12-hour am/pm format \u the username of the current user \w the current working directory \W the basename of the current working direc tory
Path
echo $PATH Le path est créé modifié dans de nombreux fichiers d'initialisation : etc/rc.sysinit, /etc/profile, .bash-profile
Pour le modifier : PATH$PATH:/nouveau/path export PATH
Su et PATH
$ su permet de passer sous root, mais avec le path de l'utilisateur d'origine. Pour avoir le path de root : $ su - cf. le prompt : [user@PC user]$ [root@PC user]# [root@PC root]#
Tuer un processus ou un ensemble de processus
# kill -9 n° ou nom du processus # killall -9 nom du processus Tuer une session X plantée (KDE, Gnome ou autre, ça arrive !!!) : <Ctrl><Alt><Backspace>
ksysguard
Device or resource busy
ps ux ps auf lsof liste des fichiers ouverts fuser pour identifer des processus qui utilisent des fichiers ou sockets kill -9 $pid pour tuer le processus qui bloque (quand on le connaît)
Le plus pratique : umount -fl /point/de/montage/recalcitrant
Bash, Bashdb
Commandes internes au bash
Aide en ligne : $ help commande Ou sur page wab : http://www.tldp.org/LDP/abs/html/internal.html
Bashdb
Bashdb BASH with Debugger : à récupérer sur http://bashdb.sourceforge.net/ Bashdb nécessite bash version 3 : récupérer les sources de bash et la doc sur http://www.gnu.org/software/bash/
Installations
voir les fichier “INSTALL” de bash et bashdb
1 - Commencer par patcher le source de bash comme indiqué dans le fichier “INSTALL” de bashdb : se positionner dans le source de bash et : patch -p1 < rep_source_de_bashdb/patch/bash-3.00.patch ./configure –enable-debugger make make install
NB : bash version 3 s'installe par défaut dans /usr/local/bin/. Pour l'installer ailleurs lire le help de configure : ./configure –help (cf. –prefix/endroit/ou/l'installer)
2 - Puis installer le debuggueur : ./configure –with-bash/usr/local/bin/bash (en effet il faut indiquer à configure où se trouve bash3 : il ne trouve que la version bash2 dans /bin !) make râle car il ne trouve pas texi2html : l'installer make check make install
Scripts bash
Première ligne : #! /bin/bash
Tutorials : - Guide avancé d'écriture des scripts Bash : http://abs.traduc.org/abs-3.1-fr/ - Linux Script Programming http://www.comptechdoc.org/os/linux/programming/script/linux_pgscript.html
Exécuter un script sans avoir mis le droit x (et sans le faire précéder de ./) : $ source nom_du_script
Sinon, mettre le droit x : $ chmod u+x nom_du_script puis l'exécuter : $ ./nom_du_script
Utile °°°°° Expressions régulières
http://www.funix.org/fr/unix/expr-sed.htm
Caractères spéciaux
cf. man echo :
\a BEL
\
\n newline (saut ligne)
\b backspace (retour arrière)
\c sans saut de ligne
\f form feed
\r CR
\t tabulation
\v tab vertical
Dans la commande echo, -e permet l'interprétation des caractères précédés de \ : $ echo -e “abc\ndef” abc def $ echo -e “abc\bdef” abdef $ echo -e “abc\tdef” abc def $ echo -e “abc\fdef” abc
def
$ echo -e “abcde\rfg” fgcde
Entrer un caractère spécial dans une commande immédiate Par exemple pour initialiser la variable tab avec un caractère de tabulation, taper: tab” puis <ctrl><v> puis la touche tabulation.puis “. Vérifier que la variable tab contient bien le caractère spécial :
echo “$tab” | od -a 0000000 ht nl
echo “1${tab}2” 1 2
Envoyer le résultat d'un bloc de code dans un fichier
Mettre le bloc de code entre {} { echo “bloc de code” } > trace Le résultat des dans le fichier “trace”
Débogage, “Trace on/off” :
# bash -vx ./monscript
dans le script : set -vx (active le débogage) set +vx (désactive le débogage)
Option de débogage : Nom Option Description No Exec -n Lit les commandes mais ne les exécute pas Verbose -v Affiche toutes les lignes au moment où elles sont lues par le shell Trace -x Affiche les commandes et leurs arguments lorsqu'elle sont exécutées
set -x envoie les messages vers stderr (fichier standard n° 2) set +x les supprime Pour récupérer les messages de stderr dans un fichier : ./monscript 2> /tmp/erreurs ou bien ./monscript 2&1 > /tmp/erreurs
Le fichier est lu ligne à ligne. Les lignes lues ne sont pas précédées du signe +, celles qui sont exécutées sont précédées de +
Utilisation des codes ascii
man ascii Exemples :
En octal : $ echo $'\125' U
En décimal $ echo $'\125' U
en hexadécimal : $ echo $'\x55' U
Afficher le code ascii de chaîne, fichiers, etc.
hexdump od
IFS — http://www.livefirelabs.com/unix_tip_trick_shell_script/oct_2003/10132003.htm
“Internal Field Separator”, variable du shell. Par défaut contient 3 caractères : space, tab, et newline Utilisé pour délimiter les mots dans les commandes telles que read et set
$ echo “$IFS” | od -a 0000000 sp ht nl nl sp space ht horizontal tab nl newline le dernier nl est généré par la commande echo, en effet : echo | od -a 0000000 nl
Pour que echo ne génère pas de “newline” $ echo -n “$IFS” | od -a 0000000 sp ht nl
Idem en octal : $ echo -n “$IFS” | od -b 0000000 040 011 012
Modifier IFS
OLDIFS$IFS IFS$'\n'
Test du contenu : echo “$IFS” | od -a 0000000 nl nl
Puis après utilisation remettre IFS à sa valeur initiale : IFS$OLDIFS unset OLDIFS
read
http://www.faqs.org/docs/bashman/bashref_55.html http://linuxreviews.org/beginner/Bash-Beginners-Guide/en/x4195.html et redirections : http://www.tldp.org/LDP/abs/html/x12886.html
Attention ! read ne retourne pas les caractères IFS (sp tab et nl, cf. ci-dessus) : car” “ echo -n “$car” | od -a
0000000 sp
mais : read -n 1 car # On tape sur la barre espace echo -n “$car” | od -a
0000000 # Comme si on n'avait rien tapé !
Pour que read n'interprête pas ces caractères, modifier IFS.
Lire le contenu d'un fichier ligne à ligne
while read line do echo $line done <fichier
Dans la boucle, stdin est redirigé vers le fichier, ce qui fait qu'une commande “read clavier” dans la boucle n'a aucun effet. Pour y remédier : (cf. redirections http://www.tldp.org/LDP/abs/html/x12886.html)
# duplique stdin dans le “file descriptor” 6 exec 6<&0
while read line do echo -n “Taper sur une touche” # lit sur le fd 6 read -s -n 1 touche <&6 # -s pas d'écho, -n 1 un seul caractère à taper echo echo echo “Contenu de la ligne : ” $line echo “Touche : ” $touche echo done <essai
# remet stdin comme avant la boucle et ferme le fd 6 exec 0<&6 6<&-
“File descriptors”
Nombre de fd disponibles : $ ulimit -n 1024
Fd ouverts : ls /dev/fd
Boucles
Exemples
for I in 1 2 3 ; do echo $I; done ou bien : for 1); do echo $I; done 1 2 3
Avec un fichier “films” contenant par exemple : Le train sifflera trois fois Merlin l'Enchanteur
$ j0 ; for i in `cat films` ; do echo $i ; 2) ; done ; echo Il y a $j mots Le train sifflera trois fois Merlin l'Enchanteur Il y a 7 mots
Pour rompre le déroulement d'une boucle for, while ou until :
revient au début de la boucle
n niveau de boucle n 1 revient début de la boucle n 2 revient au début de la boucle précédente etc. * break [n] o sort d'une ou n boucles o n niveau de boucle comme ci-dessus * exit n o fin du script avec un code de sortie (n)
``, et ”“
————
`` > sortie de la commade incluse dans ``
Exemples : affectation de variable
TOTO`ls *.txt`
echo $TOTO
0t.txt
> prend l'expression plus ou moins littéralement !?
TOTO'ls *.txt' echo $TOTO ls 0t.txt
history
Recherche rapide : ctrl r chaine_à_chercher
history affiche la liste des 500 dernières commandes history | grep chaine_à_chercher affiche les commandes contenant “chaine_à_chercher” !20 Pour rappeler la commande n°20 !p Pour rappeler la commande commençant par p (si plusieurs affiche toutes les commandes) !tel ” tel !-2 rappelle l'avant dernière commande
La liste des commandes semble être mémorisée dans le fichier .bash_history, mais les commandes $ cat .bash_history et $ history ne donnent pas le même résultat (sans doute une écriture différée des dernières commandes dans .bash_history) !
Pour effacer (par mesure de sécurité) l'historique : $ history -c et en plus supprimer le fichier .bash_history
Rappel de cammandes
!$ dernière commande
pushd, popd
pour mémorise un chemin et y revenir. Pour pushd, passer un répertoire en argument, sinon message d'erreur : $ pushd -bash: pushd: no other directory. Pas d'argument pour popd.
Pour mémoriser l'emplacement actuel : $ pushd ./ (ou pushd .)
Disque plein
C'est souvent le cas du disque contenant la racine / Peut provenir d'une poubelle pleine. Elle se trouve dans ~/.local/share/Trash Peut provenir des fichiers de log dans /var
Plusieurs solutions
1 - Visualiser les répertoires les plus gros du -h –max-depth1 / Puis visualiser de proche en proche les répertoires les plus pleins
2 -Lister les fichiers par ordre de taille croissante : du -k | sort -nr | less # trier par taille (en KO) décroissante du -B 1048576 | sort -nr | less # (en GO)
3 - Pour détecter les gros fichiers, taper par exemple (faire varier la taille) : find / -mount -size +500000k -print (ici dans le répertoire /) Puis supprimer les fichiers/répertoires inutiles par la commande : rm -rf /dossier/à/supprimer/* NB : rrécursif fforce, efface sans avoir à valider chaque nom de fichier
4 - filelignt → affichage graphique de l'utilisation des disques
Lister les fichiers supprimés qui sont encore ouverts par des processus en cours : ls -ld /proc/*/fd/* 2>&1 | fgrep '(deleted)'
Pour voir si c'est un problème de manque d'inodes : df -i
Poubelle (trash) sur KDE
Si elle a été effacée par erreur, copier ~/Desktop/trash.desktop d'un autre utilisateur. Vérifier que le propriétaire et les droits sont corrects (rw pour le propiétaire est suffisant)
Correspondance n°IP ↔ adresse
nslookup NomMachine-ou-n°IP host NomMachine-ou-n°IP ipcalc -h n°IP
Si nslookup, host, ipcalc ne retourne rien : whois n°IP
Infos sur le système
cat /proc/cpuinfo cat /proc/meminfo (utilisation de la RAM
NB : Linux utilise toute la ram a sa disposition. Il ne la libère que s'il en a besoin)
cat /proc/net/ip_conntrack table de suivi de connexions
Sous KDE, voir également K > KDE > Configuration > Information
Infos sur la carte écran et les drivers, test de rapidité de la carte écran
glxinfo glxgears xdpyinfo
Police de caractères
cf. http://www.telenovela-world.com/~spade/linux/howto/Francophones-HOWTO-3.html
ISO 8859-1 (latin 1) a tous les caractères Français sauf les « o e liés », l'euro et l'y tréma majuscule. Préférer ISO 8859-15 (latin 9).
Installation d'une distribution par le réseau
La doc est dans la racine de la distribution, fichier INSTALL.txt
A noter avant de commencer l'installation !
- la configuration du disque (pour éventuellement éviter d'effacer par la suite la partition home) - L'adresse IP et le nom de la machine
L'adresse IP du DNS L'adresse IP du gateway (passerelle)
- Le nom du driver (xxx.o) de la carte réseau (sur une machine qui fonctionne déjà, voir mcc > Hardware > Hardware > EthernetCard) - L'adresse du serveur où récupérer la distribution - Le chemin vers le répertoire où se trouve la distribution sur ce serveur, par exemple :
/pub/linux/distributions/mandrakelinux/official/10.0/i585
Puis récupérer network.img et pour MDK10.0 network-drivers.img, graver les images sur disquettes Booter sur la disquette network.img
Installation de MDK 10.1
En mode expert, le choix du clavier a disparu !§“@&& Pour qu'il apparaisse, choisir autre chose que Language English (US) !!!
On peut sélectionner plusieurs langues : arrivé à “Choose language to use”, cliquer sur advanced et cocher les langages à utiliser.
Configuration des imprmantes : passer en mode expert !! la configuration en mode normal met le souk ! CUPS configuration : décocher : - “Automatically find available printers on remote machines” - “The printers on this machine are available to other computers”
“Broadcast” d'un message
wall Voir également : mesg, write, ytalk
Compilation / installation de programmes
Savoir / vérifier (conserver une trace de) ce qui est installé
Avant l'installation : # find /* > avant Après l'installation # find /* > apres Comparer : diff avant apres > modifs
Librairies :
Mise à jour de tables de liens symboliques : ldconfig (cf. man ldconfig)
Noyau
http://lea-linux.org/kernel/ http://www-phase.c-strasbourg.fr/inform/linux/cours/linux-admin-10.html#ss10.7 http://www.freenix.fr/unix/linux/HOWTO/Kernel-HOWTO.html
Infos : uname -a
Mise à jour
# urpmi kernel
Compilation du noyau
Si ce n'est déjà fait, installer (K > Configuration > Packaging >Install software) : - les outils de compilation :
Mandrake choices > Development >
- les sources du noyau
Find in names : kernel kernel-source-xxxxmdk
Les sources s'installent automatiquement dans usr/src/linux-x.y.z-xxxmdk le lien usr/src/linux est créé (ou modifié s'il existe déjà) automatiquement : il pointe sur usr/src/linux-x.y.z-xxxmdk
# cd /usr/src/linux # make xconfig
NB : - sauvegarder la configuration dans un fichier. Avec “Save and exit” la configuration est sauvegardée dans un fichier caché (!!!) .config, la configuration précédante est dans .config.old Pour garder une trace d'une configuration, utiliser “Store configuration to file” qui permet de créer un fichier avec le nom de son choix, mais ce n'est pas cette config qui est utilisée aux étapes suivantes (c'est .config !) - vérifier les messages d'erreur qui s'affichent dans la console texte et corriger si nécessaire.
Puis : # make dep # make clean # make bzImage # make modules
Pour garder une trace de la compilation dans le fichier compil-kernel.txt : script compil-kernel.txt make bzImage Ctrl-D
Pour compiler en une seule commande : make dep clean bzImage modules modules_install
Installation des modules : Attention : si on ne change de version de noyau il est généralement conseillé de faire une sauvegarde des modules actuels: mv /lib/modules/x.y.z-xxxmdk /lib/modules/x.y.z-xxxmdk-old C'est probablement inutile car la commande make modules_install crée un répertoire différent de x.y.z-xxxmdk : x.y.z-xxxmdkcustom
# make modules_install
Installation du noyau
# make install Cette commande : - copie bzImage (qui se trouve dans /usr/src/linux-xxxxmdk/arch/i386/boot) dans /boot sous un nom différent du noyau actuel pour qu'il ne soit pas écrasé (i.e. vmlinuz-x.y.z-xxxmdkcustom). - renomme vmlinuz en vmlinuz.old et crée un nouveau vmlinuz, lien qui pointe sur vmlinuz-x.y.z-xxxmdkcustom - crée initrd-x.y.z-xxxmdkcustom.img et fait pointer initrg.img sur ce fichier - crée config-x.y.z-xxxmdkcustom.img mais le lien config pointe toujours sur le fichier config-x.y.z-xxxmdk.img original - crée un fichier System.map-x.y.z-xxxmdkcustom mais le lien System.map pointe toujours sur le fichier System.map-x.y.z-xxxmdk original - Les fichiers message et message-graphic sont également mis à jour - essaye de modifier Grub et le réinstalle, ce qui est parfaitement inutile !
Il vaut mieux modifier Grub à la main ; rajouter les lignes permettant de booter si nécessaire sur l'ancien noyau dans le fichier /boot/grub/menu/lst :
# Chargement du nouveau noyau : rien à modifier title linux custom (nouveau noyau) kernel (hd1,0)/boot/vmlinuz root/dev/hdc1 quiet devfsmount acpioff vga791 initrd (hd1,0)/boot/initrd.img
# Chargement de l'ancien noyau, indiquer le vmlinuz et le inird d'origine : title linux original (ancien noyau) kernel (hd1,0)/boot/vmlinuz-x.y.z-xxxmdk root/dev/hdc1 quiet devfsmount acpioff vga791 initrd (hd1,0)/boot/initrd-x.y.z-xxxmdk.img
Contrairement à Lilo, inutile de réinstaller grub.
Installation du noyau 2.6 en bref
Télécharger la dernière version (actuellement linux-2.6.10.tar.bz2) sur www.kernel.org : choisir la version full (F).
Décompresser :
$ tar -jxvf linux-2.6.10.tar.bz2
Lire la doc dans le dossier crée (linux-2.6.10/README)
Configurer le noyau à l'aide de l'une ou l'autre des commandes suivantes :make menuconfig ou make O/home/name/build/kernel menuconfig make xconfig " xconfig make gconfig " gconfigAvant toute modification sauvegarder la config par défaut dans (par exemple) .config.original : elle peut éventuellement resservir NB lorsqu'on enregistre la config est mémorisée par défaut dans .config.
Pour le choix des drivers à intégrer dans la config, voir :
la doc de la carte mère lspci -v |less ou encore ce qu'indique une version de MDK déjà installée (mcc -> hardware)
Remarques : - Dans Device Drivers / Character devices, cocher “Legacy (BSD) PTY support” (contrairement aux conseils affichés) sinon rien ne s'affiche dans AUCUNE console graphique (Kde, Gnome …) !
Compiler, créer une image compressée du noyau (bzimage), installer les modules, etc. :
$ make ou make O/home/name/build/kernel # make modules_install # make install ou ou sudo make O/home/name/build/kernel modules_install install
Modifier Grub :
Editer /boot/grub/menu.lst
Rajouter par exemple # Nouveau noyau title linux (noyau 2.6.10) kernel (hd0,0)/boot/vmlinuz-2.6.10 root/dev/sda1 acpiht resume/dev/sdb2 splashsilent vga791 initrd (hd0,0)/boot/initrd-2.6.10.img
NB : rien à changer pour le noyau d'origine, si ce n'est éventuellement le titre # MDK 10.1 noyau 2.6.8.1-12mdk d'origine title linux (MDK 10.1 d'origine) …. En effet les liens vmlinuz et initrd.img pointent toujours sur les fichiers du noyau d'origine. Dans le cas où l'on essaye plusieurs noyaux, il est cependant prudent d'indiquer les fichiers réels : en effet vmlinuz et initrd.img peuvent alors ne pas pointer sur les bons fichiers ce qui peut résulter en un “kernel panic”.
Perl
Version et autres infos : perl -V
CPAN Comprehensive Perl Archive Network
Vérifier la présence de modules
perldoc Librairie::Module ou bien
Info sur un module # perl -MCPAN -e shell cpan> i Librairie::Module
Installer un module
# perl -MCPAN -e 'install Librairie::Module'
ou bien : # perl -MCPAN -e shell Puis au niveau du prompt cpan> : cpan> install Librairie:Module Pour quitter : <Ctrl> D
Nb : A la première utilisation de CPAN un questionnaire de configuration s'affiche. Y répondre. Pour vérifier les paramètres entrés et faire des modifications le mieux est peut-être d'éditer directement le fichier de configuration /usr/lib/perl5/5.8.5/CPAN/Config.pm Voir en particulier les lignes : 'urllist' > [q[ftp://ftp.u-strasbg.fr/CPAN]], 'keep_source_where' > q[/root/.cpan/sources],
Commandes avec mesure du temps
time uptime wait w top
Mesurer le temps d'exécution d'un programme (compilation par exemple) et émettre un bip à la fin
time ma_commande ; echo -e \\a
Débloquer une console occupée par une commande (background, foreground, jobs)
Faire suivre la commande par & ou bien : <ctrl><z> arrête la commande en cours d'exécution bg la fait passer en arrière plan (background) fg la refait passer en premier plan (foreground)
Exemple avec xclock :
$ xclock
< taper <Ctrl><z>
[1]+ Stopped xclock $ jobs [1]+ Stopped xclock $ bg [1]+ xclock & $ jobs [1]+ Running xclock & $ fg xclock
< taper <Ctrl><z>
[1]+ Stopped xclock $ jobs [1]+ Stopped xclock $ kill %1
[1]+ Stopped xclock
Eviter de tuer une application à la fermeture de la console dans laquelle elle a été lancée
Exemple : nohup konqueror &
Comparaison (ou synchronisation) de répertoires
diff diff3 kdiff3
Comparaison de 2 fichiers ou contenus de 2 répertoires
diff fic1 fic2 | less sdiff fic1 fic2 | less comparaison “side by side” sdiff -s fic1 fic2 | less seules les différences sont affichées
Imprimantes
mcc est merdique, utiliser _SOUS ROOT_ : System/Configuration/KDE/Peripherals/Printers
En bas de page choisir dans la liste déroulante : Print system currently used: CUPS (Common…) Cliquer sur la première icône en haut à gauche (elle ouvre le fenêtre “Add printer wizard” Pour une imprimante réseau (TCP) : Network printer (TCP) Entrer l'addresse IP de la machine et le port (9100) Choisir le modèle : pour une imprimante Postscript il y a une case à cocher en bas à gauche sinon choisir le pilote d'impression Dans la page <Test> <Settings…> ne pas oublier de modifier si nécessaire le paramétrage de l'imprimante, en particulier le format qui doit être A4. Dans la page Users Access Settings, définir les utilisateurs autorisés
Réglage des marges de l'imprimante :
Dans l'utilitaire “Configure - Printing manager” - sélectionner l'imprimante, - cliquer en bas à droite sur le bouton “Settings” et dans la page qui s'ouvre - choisir l'onglet “Margin” Pour les imprimante tektronix Phaser la marge minimum est d'environ 20 pixels. Après avoir entré les valeurs de configuration, vérifier que le format de page et bien A4 et ne pas oublier de sauvegarder.
Disques et partitions : commandes utiles
Liste les disques et partitions des disques # fdisk -l
Visualisation des partitions montées : $ mount (sans paramètre) ou bien : $ less /etc/mstab
Nommage des périphériques et partitions avec Linux et Grub
D'après http://www.debian-fr.org/article.php?pageviewarticle&article5
Convention (idem linux et grub ): hd → périphériques IDE sd → périphériques SCSI et assimilés (SATA, etc.)
Numérotation linux IDE :
disque maître esclave
contrôleur primaire hda hdb contrôleur secondaire hdc hdd
Numérotation linux SCSI sda, sdb … a, b … dans l'ordre des N° de la chaîne SCSI
Numérotation grub Numérote les disques 0, 1, 2 etc. dans l'ordre de leur découverte par le BIOS. Le BIOS fait sa recherche dans l'ordre contrôleur primaire maître/esclave, contrôleur secondaire maître/esclave. Exemple : hd(0,2) : 0, n° du disque, 2 numéro de partition
Equivalence :
grub linux hd(1,1) hdb2
Créer, modifier les partitions
fdisk cfdisk Partimage LVM (http://lea-linux.org/leapro/lvm.html)
Webmin
Après installation de webmin, ne pas oublier de le démarrer, sinon message : “Could not connect to localhost (port 10000) Démarrer par : # service webmin start Se connecter https://localhost:10000 Shorewall : il ne semble pas utile de modifier les autorisations. En cas de problème mettre dans le fichier “rules”: ACCEPT loc fw tcp 10000
Copie/clonage de disques et de partitions
Avec 2 disques identiques la commande dd permet d'obtenir une réplique exacte du disque source : sauf erreur la commande doit être :
# dd if/dev/hda of/dev/hdc
Dans le cas où l'on veut remplacer un petit disque par un plus gros, avec éventuellement un changement de la taille et/ou du nombre de partitions, dd ne convient pas.
Après plusieurs essais (rsync, mirrordir, tar, cp), une solution toute simple au problème de “clonage” de disques : en très bref les 3 étapes pour copier le disque d'origine (hd0) sur le nouveau disque :
1 - copie des partitions et répertoires de hd0 vers hd1 à l'aide de la commande :
cp -a
2 - modification du fichier de configuration /etc/fstab 3 - modification du boot (grub ou lilo)
Ce qui donne avec un peu plus de détails :
1 - copie des partitions et répertoires de hd0 vers hd1 à l'aide de la commande cp -a
- Connecter le nouveau disque (hd1) - Lancer Linux (MDK) - Avec diskdrake ou au moyen des outils en ligne de commande (fdisk ou cfdisk, mkfs) créer sur hd1 les partitions désirées et les formater - Redémarrer l'ordinateur avec UN LINUX SUR DISQUETTE OU CD : j'utilise tomsrtbt (http://www.toms.net/rb/), mais tout autre Linux sur disquette ou CD doit convenir, par exemple Knoppix (http://knoppixfr.tuxfamily.org/), ou encore le CD n°1 d'installation de MDK : il suffit qu'il contienne la commande cp - Avec la commande cp -a, copier les partitions et répertoires de hd0 vers leur emplacement prévu sur hd1
Questions : * Pourquoi utiliser un Linux sur disquette ou CD ? C'est pour obtenir une copie de ce qui est réellement sur disque et non pas de ce que Linux y met ou veut bien laisser copier lorsqu'il fonctionne. Par exemple /proc contient une série de fichiers qui n'existent qu'en RAM ; il n'y a rien sur le disque : /proc n'est qu'un point de montage pour l'accès à une partie de la RAM. * Pourquoi utiliser cp plutôt que mirrordir ou rsync plus pratiques ? C'est parce que cp se trouve dans toutes distributions Linux ce qui n'est pas le cas des autres commandes (pas de rsync, mirrordir … dans tomsrtbt).
2 - modification du fichier de configuration /etc/fstab
- Rebooter sous MDK (ce n'est pas indispensable, mais l'interface est plus conviviale que celle d'un Linux sur disquette) - Mettre à jour le fichier /etc/fstab sur hd1
3 - modification du boot (grub ou lilo)
- Mettre à jour le fichier de configuration du programme de boot sur hd0 (et/ou sur hd1 si par la suite on veut démarrer directement à partir de hd1) Dans le cas de GRUB, le fichier à modifier est /boot/grub/menu.lst. Dans le cas de LILO (à vérifier : non testé) modifier /etc/lilo.conf et exécuter la commande ”/sbin/lilo” avec les options -b bootdev et -C config-file pour indiquer d'une part le disque sur lequel installer le boot et d'autre part le fichier de configuration que l'on vient de modifier.
C'est tout. Au redémarrage le menu de grub ou de lilo apparaît et permet de booter le système copié sur hd1.
Avec tous les détails, une réalisation concrète qui a parfaitement fonctionné :
J'ai un PC qui tourne sur MDK9.1. J'utilise l'environnement graphique KDE. Le disque dur d'origine (hd0) a 3 partitions : - hda1 / - hda2 swap - hda3 home Il devient trop petit (3 Go). J'ai récupéré un disque de 20 Go. Après montage dans le PC, ce 2° disque est vu comme hdc. Je désire partitionner le 2° disque dur (hd1) en : - hdc1 / - hdc2 swap - hdc3 usr - hdc5 var - hdc6 home
1 - Avec diskdrake, partitionner le nouveau disque (hd1) et formater les partitions 2 - Redémarrer Linux à partir d'une disquette tomsrtbt. Se “loger” en “root” avec le mot de passe par défaut “xxxx” 3 - Créer les points de montage pour pouvoir monter le disque source et le disque destination
# cd /mnt # mkdir source # mkdir dest # cd /
4 - Monter les disques source (hda) et destination (hdc) et copier le répertoire racine
# mount /dev/hda1 /mnt/source # mount /dev/hdc1 /mnt/dest # cp -a /mnt/source/* /mnt/dest # umount /mnt/dest
5 - La même chose pour /usr
# mount /dev/hdc3 /mnt/dest # cp -a /mnt/source/usr/* /mnt/dest # umount /mnt/dest
6 - La même chose pour /var
# mount /dev/hdc5 /mnt/dest # cp -a /mnt/source/var/* /mnt/dest # umount /mnt/dest
7 - La même chose pour /home
# umount /mnt/source # mount /dev/hda3 /mnt/source # mount /dev/hdc6 /mnt/dest # cp -a /mnt/source/* /mnt/dest # umount /mnt/dest # umount /mnt/source # reboot
Sortir la disquette tomsrtbt
7 - Redémarrer sous MDK
8 - Supprimer de hdc1 non pas les répertoires /usr, /var et /home mais leur CONTENU qui est maintenant sur les partitions respectivement hdc3, hdc5 et hdc6
# mount /dev/hdc1 /mnt/dest
puis sous konqueror supprimer le CONTENU de /usr, /var et /home (NB : la commande
# rm -rf nom_repertoire/*
efface bien le contenu du répertoire nom_repertoire, mais pas les fichiers cachés !)
9 - Mettre à jour le fichier /etc/fstab du nouveau disque Remplacer :
/dev/hda1 / ext3 defaults 1 1 /dev/hda2 swap swap defaults 0 0 /dev/hda3 /home ext3 defaults 1 2
par :
/dev/hdc1 / ext3 defaults 1 1 /dev/hdc2 swap swap defaults 0 0 /dev/hdc3 /usr ext3 defaults 1 2 /dev/hdc5 /var ext3 defaults 1 2 /dev/hdc6 /home ext3 defaults 1 2
10 - Mettre à jour le menu de boot de grub (/boot/grub/menu.lst) pour faire apparaître l'option de boot du système Linux installé maintenant hd1
NB : pour le moment hd0 est toujours en place. On peut donc utiliser son “boot device” ; il suffit d'ouvrir le fichier menu.lst qui se trouve sur hda1 :
# mount /dev/hda1 /mnt/source # kwrite /mnt/source/boot/grub/menu.lst
et de le modifier : j'ai rajouté, juste en dessous de “default 0” (pour que le PC démarre par défaut sur MDK qui est sur hd1) :
title linux dd 20 Go kernel (hd1,0)/boot/vmlinuz root/dev/hdc1 quiet devfsmount acpioff vga791 initrd (hd1,0)/boot/initrd.img
Noter vga791 : ce n'est pas indispensable, mais ça permet de bien mieux voir les messages (d'erreurs éventuelles) au démarrage du système. Pour la signification de ce n°, voir plus loin à “Amélioration de l'affichage des infos au démarrage de MDK”
11 - Rebooter, c'est fini et la nouvelle copie de MDK fonctionne comme l'original
NB : les commandes rsync et mirrordir (au contraire de cp) ont une option “exclude-from” pratique pour éviter de copier les répertoires inutiles avec la commande cp (ça prend du temps et il faut ensuite les effacer, voir points 4 et 8 ci-dessus). Les utiliser si elles sont dispoonibles sur la disquette ou le CD utilisé.
Icônes KDE
Remplacer les infâmes icônes “conectiva crystal” (installées par défaut par MDK 9.1) par les bonnes vieilles icônes KDE classiques
K> System > Configuration > KDE > LookNfeel > Icons Si KDE classic apparaît dans la liste, sélectionner et cliquer sur <OK> Si KDE classic est absent, K > Configuration > Packaging > Install Software Faire une recherche sur le mot “classic” Dans la liste qui apparaît, sélectionner et installer kdeartwork-kde-classicxxxx.mdk Fermer et rouvrir le “KDE control module” ouvert au départ, pour faire appraître KDE classic dans la liste des thèmes disponibles Sous root, il faut sans doute aussi redémarrer KDE pour que les icônes classiques soient affichées.
Outils pratiques ou indispensables
sleuthkit http://www.sleuthkit.org/sleuthkit/
pour récupérer des fichiers effacés, analyser une machine piratée, etc..
Sécurité
Gestion des ACL
http://www.linuxfrench.net/article.php3?id_article1463
setfacl getfacl gtk-acl
Commandes simples
w utilisateurs “logués”, ce qu'il font, etc. rwho -a ? à revoir, ne semble pas fonctionner finger nom_utilisateur Infos concernant un utilisateur last |less Liste des derniers utilisateurs “logués”
msec
http://www.mandrakesecure.net/en/docs/msec.php man msec
draksec
Outil de configuration en mode graphique Accessible ausi via “Mandrake control center”
drakperm
Pour connaître le niveau (msec) de sécurité actuel Pour voir et fixer les permissions
Changer de niveau de sécurité :
Sous root, pour passer au niveau 4, par exemple : msec 4
Configuration : voir le fichier
/var/lib/msec/security.conf
Outils divers
nmap hping tcpdump
nmap
Détecter les PCs on-line : # nmap -sP 192.178.0.*
Tests pour savoir si un serveur n'est pas compromis par un rootkit
cf. A la recherche de Rootkits http://www.viginews.com/affichage_article.php?id822
Installer chkrootkit cd /usr/lib/chkrootkit/ ./ifpromisc pour vérifier que l'interface n'est pas en mode “promiscuous” ./chkproc pour détecter un processus caché cd / chkrootkit vérification complète du système
Scan des ports d'une machine °°°°°°°°°°°°°°°°°°°°°°°°°°°° Lister les ports ouverts
nmap
Exemple : nmap localhost
Attention : 1 - Par défaut nmap ne scanne que les ports 1 à 10024 Pour scanner tous les ports possibles : nmap -p 1-65535 localhost nmap -sU -p 1-65535 localhost
2 - nmap localhost ne montre que les ports ouverts sur l'interface 127.0.0.1 (loopback) ce qui n'est pas représentatif des ports réellement accessibles
netstat
netstat -vtlnp -v verbose -l (–listening) affiche uniquement les sockets en écoute -n (–numeric) addresse du socket en numérique (sinon affichage du nom canonique) -p (–program) affiche le PID et le nom du programme associé au socket
netstat -taup -a (–all) affiche tous les sockets (en écoute ou non) -t –tcp -u –udp
lsof
lsof -i liste les connexions internet ouvertes. lsof -i :80 liste les connexions internet ouvertes sur le port 80
On peux ainsi vérifier quels ports sont ouverts et voir si certains ports n'ont pas derrière eux un programme suspect.
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME httpd2 10738 apache 4u IPv6 22984 TCP *:http (LISTEN) httpd2 10739 apache 3u IPv6 22981 TCP *:https (LISTEN) Dans ce cas par exemple le programme httpd2 avec comme user apache ecoute en TCP sur le port 80 (http) et 443 (https), ce qui est normal
lsof -i permet de détecter des processus suspects éventuellement attachés à des ports connus (80 par exemple). Pour les arrêter : - soit chkconfig <COMMAND> off, ce qui évite que <COMMAND> soit relancé au démarrage mcc → System → Services permet de faire la même chose. - soit trouver la commande ps aux |grep <COMMAND> et tuer le processu correspondant kill -9 <PID> mais il repartira au prochain démarrage.
Contrôle des ports à partir de l'extérieur
Sites proposant des contrôles :
http://outils.sdv.fr/ http://grc.com/x/ne.dll?rh1dkyd2 http://scan.sygatetech.com/
Netfilter / Iptables
http://www.netfilter.org/documentation/ (pointeurs sur documentation) http://iptables-tutorial.frozentux.net/iptables-tutorial.html http://logi.cc/linux/netfilter-log-format.php3 (netfilter log format) http://christian.caleca.free.fr/netfilter.html http://olivieraj.free.fr/fr/linux/information/firewall/fw-03.html
which iptables Pour voir si la commande iptables est présente lsmod | grep iptable pour voir si le module est installé. iptables -L -v affiche les règles de fitrages. iptables -F pour supprimer toutes les règles (F flush)
tail -f netfilter.log |grep 1.25 affiche ce qui concerne la machine x.x.1.25 dans les 10 dernières lignes des logs d'iptables iptables -L FORWARD -vn |grep 80 ce qui concerne le port 80 (http, affichage numérique) iptables -L FORWARD -v |grep 80 ce qui concerne le port 80 (http, affichage en clair)
Shorewall
Tout est très bien expliqué sur le site http://www.shorewall.net/ NB : les actions prédéfinies sont dans /usr/share/shorewall/actions.std (et non pas /etc/shorewall/actions.std)
Installation :
- Récupérer la dernière version de shorewall sur le site http://www.shorewall.net/ - Installer : # rpm -ivh shorewall…. Shorewall a besoin du package iproute. En cas de message d'erreur indiquant qu'iproute n'est pas trouvé, vérifier qu'il est bien installé : # which ip /sbin/ip Puis relancer l'installation avec : # rpm -ivh –nodeps shorewall….
Les 2 fichiers à renseigner obligatoirement pour que ça fonctionne :
/etc/shorewall/interfaces /etc/shorewall/rules
Dans /etc/shorewall/interfaces mettre :
net eth0 detect norfc1918,routefilter,tcpflags,nosmurfs
dans le cas d'une connexion par modem, rajouter :
net ppp0 norfc1918,routefilter,tcpflags,nosmurfs
Dans /etc/shorewall/rules indiquer ce qui est autorisé et ce qui est interdit. Mettre au moins :
ACCEPT net fw icmp 8 ACCEPT fw net icmp ACCEPT net fw tcp http
Rajouter éventuellement :
AllowSSH net fw
et pour un serveur :
AllowFTP net fw AllowSMB net fw AllowSMB fw net AllowSMTP net fw AllowIMAP net fw
Attention, pour que ça fonctionne, le fichier policy doit contenir : fw net ACCEPT net all DROP info all all REJECT info
et non pas comme installé par défaut par les rpm MDK : loc net ACCEPT net all DROP info all all REJECT info
(!!! explication ??)
A partir de Shorewall 2.2.0, le fichier /etc/shorewall/zones est vide : seule la zone fw est défine par défaut. Définir les zones à utiliser, par exemple (cf. http://shorewall.net/shorewall_setup_guide.htm) : net Net Internet loc Local Local networks dmz DMZ Demilitarized zone
Puis démarrer le firewall par : # shorewall start (ou redémarrer par shorewall restart) Vérifier que les règles sont bien installées : iptables -L
Principal fichier à configurer pour autoriser différents services (http, ftp, imap, etc.) à fonctionner : /etc/shorewall/rules Si les services ne sont pas prédéfinis dans /usr/share/shorewall/actions.std autoriser les ports “à la main” comme indiqué dans la doc contenue dans le fichier /etc/shorewall/rules
Commandes intéressantes :
shorewall version par de – ! shorewall stop shorewall clear shorewall start shorewall restart
Pour voir l'état des règles de filtrage :
La dernière ligne générée par shorewall start se termine par “Shorewall Started” si shorewall a bien démarré. Sinon, en cas d'erreur la dernière ligne est “Terminated” et le PC risque de ne pas être protégé sans que l'on s'en rende compte !!! Il est donc indispensable de vérifier à postériori si shorewall a bien démarré en affichant les règles de filtrage : # iptables -L -v Il serait bon de générer un message clair (pop-p et son) pour avertir de la non-installation des règles de filtrage (à voir, ça existe peut-être déjà)
Anti-virus
Clamav/Klamav
Cryptographie, disques virtuels cryptés
http://openpgp.vie-privee.org/linux.html
Mountloop et son interface drakloop
http://www.aerospacesoftware.com/cryptoloop-howto.html /usr/share/doc/mountloop-0.15.1/README
La configuration de drakloop est stockée dans ~/.mountlooprc : on peut y modifier (si nécessaire) le nom du répertoire crypté. NB : par contre le nom du fichier crypté “encfile” est codé en dur dans drakloop (voir le code source perl) : si on modifie ce nom, drakloop ne fonctionne plus. Idem pour les possibilités de cryptage : seul aes est proposé. Il est tout a fait possible de nommer autrement le fichier crypté et d'utiliser d'autres cryptages, cf./usr/share/doc/mountloop-0.15.1/README
dans ce cas, utiliser mountloop en ligne de commande
Montage à la main
$ mountloop <enc> <file> <dir> par exemple : $ mountloop aes256 Dossier_crypte/Fichier_crypte Dossier_crypte
Menu contextuel pour monter ou démonter un fichier crypté
http://developer.kde.org/documentation/tutorials/dot/servicemenus.html http://www.kde-france.org/article.php3?id_article82 http://www.coagul.org/article.php3?id_article91 www.oreilly.com/catalog/linuxdeskhks/chapter/hack40.pdf http://mandrakeusers.org/lofiversion/index.php/t18068.html
Ajouter dans ~/.kde/share/apps/konqueror/servicemenus (à l'usage de l'utilisateur courant) ou dans /usr/share/apps/konqueror/servicemenus (pour tous les utilisateurs) les fichiers .desktop suivants :
- Pour monter le fichier crypté ```````````````````````````````` OpenCryptFile.desktop
[Desktop Entry] ActionsOpenCryptFile ServiceTypesall/allfiles
[Desktop Action OpenCryptFile] NameOpen encrypted file Exec/usr/bin/kdialog –password “Password for this crypted file?” | /usr/bin/mountloop aes256 %f %d Icon/usr/share/pixmaps/password.png
- Pour démonter le système de fichier crypté (ou tout autre système monté) ````````````````````````````````````````````````````````````````````````` UmountFS.desktop
[Desktop Entry] ActionsUmountFS ServiceTypesinode/directory
[Desktop Action UmountFS] NameUnmount File System Execkdesu “/bin/umount -fl %f” Iconencrypted
Pour activer ces actions, clic droit sur le fichier ou le dossier, puis sous-menu “Actions”
Autre possibilité : associer le fichier encfile au programme drakloop
(K> System > Configuration > KDE > Components > File Associations encfile → /usr/bin/drakloop)
un double clic sur le fichier lance drakloop
NB : le fichier .desktop créé se trouve dans ~/.kde/share/mimelnk/application
Serveur de log syslog-ng
Voir doc et FAQ très bien faites sur : http://www.balabit.com/products/syslog_ng/
Installation
Installer à partir des rpm (actuellement syslog-ng-1.4.17-5mdk) ou récupérer les sources sur http://www.balabit.com/products/syslog_ng/upgrades.bbq, actuellement : - syslog-ng-1.6.6.tar.gz - libol-0.3.15+20050407.tar.gz Décompresser : $ tar zxvf nom_fichier Compiler d'abord liblo puis syslog-ng : # cd nom_répertoire # ./configure # make # make install
Fichiers syslog-ng installés : /usr/local/sbin/syslog-ng /usr/local/man/man5/syslog-ng.conf.5 /usr/local/man/man8/syslog-ng.8
Créer le répertoire /etc/syslog-ng Y copier le fichier de configuration autodocumenté que l'on trouve dans les sources /contrib/syslog-ng.conf.doc et le renommer en syslog-ng.conf
Copier le script de démarrage init.d.RedHat-7.3 que l'on trouve dans les sources, répertoire contrib/, et le renommer en syslog-ng et lui donner les droits rwxr–r– : # chmod 744 syslog-ng
Commandes de base
syslog-ng –help syslog-ng -V → version
Classer les fichiers de log
http://linuxfr.org/tips/index,1.html Pour classer les fichiers de log dans des répertoires type AAAA/MM/JJ ou encore HOSTS/AAAA/MM/JJ (si on fait un serveur de log), configurer syslog-ng.log : utiliser les variables $HOSTS $YEAR … Exemple pour auth.log : destination authlog {file(“/var/log/HOSTS/$HOST/$YEAR/$MONTH/$DAY/auth.log”);};
Lancement automatique de processus
at, cron, kcron, drakcronat
http://www.ml.refer.org/LancementAuto.htm http://www.faqts.com/knowledge_base/view.phtml/aid/1005/fid/436
at – Exemple :
# at 12:15 warning: commands will be executed using (in order) a) $SHELL b) utilisateur shell c) /bin/sh at> echo coucou at> df at> <EOT> job 1 at 2003-09-04 12:15
NB : EOT obtenu en tapant <ctrl><d> A 12 H 15 un message est envoyé à l'utilisateur avec le résultat des commandes echo et df
atq : liste des jobs en attente
cron
Voir le man, pour une fois presque clair (il y a des exemples) ! http://lea-linux.org/admin/automate.php3#cron
Les tâches à exécuter sont stockées dans des fichiers texte ayant le nom de l'utilisateur (root, adm, tartempion …) dans le répertoire : /var/spool/cron/ A voir également : les répertoires /etc/cron…..
—- Pour programmer une tâche à répéter plusieurs fois : Exemple : mise à l'heure de la machine à 3 H du matin tous les jours Ouvrir le fichier avec la commande crontab -e (ça ouvre le fichier de l'utilisateur logé). Y inscrire : 0 3 * * * /bin/nice -n 19 /usr/sbin/ntpdate -u ntp1.tuxfamily.net Fermer : un message de mise à jour de la table s'affiche
Les champs de gauche à droite : minute (0-59) / heure (0-23) / jour (1-31) / mois (1-12 ou les 3 premières lettres du mois) / jour de la semaine (0-7) ou les 3 premières lettres du jour.
Listes permises, par exemple : 1,2,3,4,5 pour lundi à vendredi (dans le champ jour) 1-5 idem 0-4,20-23 dans le champ heure : toutes les heures de 0 à 4 et de 20 à 23 heures
NB : - Pour le jour de la semaine 07sun - Bien indiquer le “path” des commandes, sinon elles ne sont pas trouvées.
Les choses qu'il semble utile de mettre dans la crontab : - mise à jour de l'heure - mise à jour de la base slocate (updatedb) - mise à jour des sources urpmi (urpmi.update –all, urpmi.update -a sous MDK10) - mise à jour automatique du système (urpmi –auto-select)
—– Pour changer l'éditeur utilisé par défaut par crontab changer la variable d'environnement EDITOR (ou VISUAL) : $ export EDITORnom_de_l'éditeur
Gestion des tâches
ps
Lister les “process”
top Sous KDE : <ctrl><esc>
Impression
Liste des impressions en cours :
$ lpq
Supprimer une impression :
$ lprm n°_de_job
Lancer une impression à partir de la ligne de commande :
$ lpr nom_du_fichier
Association (KDE)
K> System > Configuration > KDE > Components > File Associations Les associations sont mémorisées dans :~/.kde/share/config/profilerc
Utilisation de la memoire (cache, swap)
free
Permissions
Droits
— 0 No rights at all –x 1 Execute only r– 4 Read only r-x 5 Read and Execute rw- 6 Read and Write rwx 7 Read, Write, and Execute.
Exemples : `````````` # chmod 644 file.txt ou bien : # chmod u+rw-x,g+r-wx,o+r-wx file.txt # ls -l file.txt -rw-r–r– 1 root root 33 Jul 11 17:10 file.txt
Ne changer les droits que sur les répertoires ou les fichiers, exemples : ````````````````````````````````````````````````````````````````````````` find -type d -print0 |xargs -0 chmod 755 ou bien find . -type d -exec chmod 755 {} “;” find -type f -print0 |xargs -0 chmod 644
Utilisateur propriétaire du fichier
chown [-R] nom_du_propriétaire:nom_du_groupe nom_fichiers -R récursif
chown root toto.txt chown root:root toto.txt iti.sh find /usr/local/toto -user bibi -exec chown bobo {} \;
trouve à partir du répertoire /usr/local/toto tous les fichiers ayant pour utilisateur bibi pour le remplacer par l'utilisateur bobo.
Disques durs
Bios : Cas d'un disque dur IDE seul sur sa nappe : s'il est reconnu avec le cavalier sur CS, mais pas sur MA, essayer sans cavalier (cas des disques WD)
Test performances
hdparm -t /dev/drive bonnie
Compression / décompression
http://astuce.linux.free.fr/Archivage/Comment_créer_et_décompresser_une_archive_avec_tar.html http://www.linux-kheops.com/doc/dupoux/compress/
Compresser un fichier :
gzip NomFichier.ext → NomFichier.ext.gz Autre possibilité : bzip2
Décompresser
gunzip filename.ext.gz. NB : le fichier compressé est supprimé : il est remplacé par le décompressé
Compresser plusieurs fichiers en une seule archive
Archiver 2 fichiers dans un seul tar cvf NomArchive.tar NomFichier1.ext NomFichier2.ext
Désarchiver ces fichiers tar xvf NomArchive.tar
Pour en même temps archiver et compresser tar cvfz NomArchive.tgz NomFichier1.ext NomFichier2.ext Options :
c créer l'archive v verbose f dans un fichier archive z compresser
Voir le contenu tar tfz NomArchive.tgz Option :
t "type" le contenu de l'archive
Décompresser : tar -xvfz NomArchive.tgz x extrait les fichiers.
Fichiers .tar.Z gunzip toto.tar.Z → crée toto.tar tar xvf toto.tar → décompresse toto.tar
Fichiers .tar.gz : tar -zxvf toto.tar.gz (ou bien en 2 temps : gunzip toto.tar.gz tar -xvf toto.tar)
Fichiers bz2
En 2 temps : bunzip2 NomFichier.bz2 → NomFichier.tar tar xvf NomFichier.tar En 1 temps : tar jxvf NomFichier.bz2
Fichier zip
Décompresser : unzip fichier.zip
Copier, archiver, mettre à jour un disque, une partition, un répertoire
Avec cp
cp -a source destination
Avec dd
Copie de disque à disque (disques identiques, semble poser des problèmes si disques différents) dd if/dev/hda of/dev/hdc
NB : la taille de block par défaut est très faible, d'où des temps de copie élevés : entrer une taille de bloc élevée, par exemple : dd if/dev/hda of/dev/hdc bs256k
Avec rsync
cf.http://lea-linux.org/trucs/?aff_item202
Créer un fichier d'exclusion : contient la liste des fichiers ou répertoires que l'on ne veut pas r (copier) Exemple
dir_exclus.lst : ………………. /proc /tmp /mnt /home ……………….
NB : il est important d'exclure /mnt surtout si la destination est montée sous /mnt (/mnt/copie dans l'exemple suivant)
# rsync -ravH –exclude-fromdir_exclus.lst / /mnt/copie
Avec mirrordir
# mirrordir –exclude-from /dir_exclus.lst / /mnt/copie
Programmation de tâches (cron)
kcron /etc/crontab
MBR écrasé → partitions disque perdues : comment les récupérer
Le mbr contient plusieurs informations essentielles pour le fontionnement de l'ordinateur : Extrait du “Linux System Administrator's Guide” The MBR, boot sectors and partition table
The information about how a hard disk has been partitioned is stored in its first sector (that is, the first sector of the first track on the first disk surface). The first sector is the master boot record (MBR) of the disk; this is the sector that the BIOS reads in and starts when the machine is first booted. The master boot record contains a small program that reads the partition table, checks which partition is active (that is, marked bootable), and reads the first sector of that partition, the partition's boot sector (the MBR is also a boot sector, but it has a special status and therefore a special name). This boot sector contains another small program that reads the first part of the operating system stored on that partition (assuming it is bootable), and then starts it.
Outils de récupération de la table de partition :
gpart http://www.stud.uni-hannover.de/user/76201/gpart/ fixdisktable http://bmrc.berkeley.edu/people/chaffee/fat32.html testdisk http://www.cgsecurity.org/ Testdisk semble le meilleur
Liens intéressants : http://www.ntfs.com/mbr-damaged.htm http://plug.linux.org.au/~steve/mbr.html#mbr
MBR écrasé : affectation lettre ↔ partition perdue sous W2000
Dans les OS Microsoft les partitions sont désignées par une lettre. Sous Windows 2000 (et NT4 ?) l'affectation lettre ↔ partition dépend d'une information stockée dans le mbr. Si l'on écrase le mbr (sous DOS par fdisk /mbr, par exemple) cette information est perdue, d'où parfois impossibilité d'accéder à une session. Pour y rémédier, consulter les articles suivants de la knowledge base Microsoft
Unable to Log on if the Boot Partition Drive Letter Has Changed (article 249321) HOW TO: Change the System/Boot Drive Letter in Windows (article 223188)
Telnet
Caractère d'échappement :
Escape character is '^]'
soit sur le clavier : Ctrl + AltGr + “]” “]” touche °)] entre le “0” et le “” en haut du clavier.
SSH
http://www-106.ibm.com/developerworks/library/l-keyc.html http://www-106.ibm.com/developerworks/linux/library/l-keyc2/ http://troumad.free.fr/Linux/Linux.sxw
Démarrer / redémarrer …
# service sshd status
start restart stop
Fichiers de configuration
/etc/ssh ~/.ssh
Vérifier si SSH tourne sur le PC distant et quelle est la version du programme:
telnet nom_ou_N°IP_PC_distant 22
Se connecter au PC distant :
ssh nom_ou_N°IP_PC_distant ou bien pour avec un autre utilisateur que celui qui est utilisé ssh -l utilisateur nom_ou_N°IP_PC_distant ssh utilisateur@nom_ou_N°IP_PC_distant
ConnectionTimeout : En cas d'erreur de connexion le timeout est particulièrement long (de l'ordre de 2 minutes ?) Pour le raccourcir par exemple à 10 secondes : ssh -o ConnectTimeout10 user@machine (ConnectTimeout et non pas ConnectionTimeout comme indiqué dans la doc !)
Connection directe sous konqueror
fish:nom_ou_N°IP_PC_distant fish:utilisateur@nom_ou_N°IP_PC_distant fish:utilisateur@nom_ou_N°IP_PC_distant/repertoire/à/consulter Attention : avant d'utiliser fish se connecter au moins une fois avec user@ssh à la machine distante, sinon la connection par fish est refusée. fish ne fonctionne pas sous les autres browsers : “fish is not a registered protocole” Connection directe sous konqueror (variante) ——————————— cf. http://www.linuxgazette.com/node/401 idem fish, mais la commande est sftp : sftp:nom_ou_N°IP_PC_distant sftp:utilisateur@nom_ou_N°IP_PC_distant sftp:utilisateur@nom_ou_N°IP_PC_distant/repertoire/à/consulter
sftp n'a rine à voir avec le protocole ftp : c'est en fait du ssh. Ne fonctionne pas non plus sous les autres browsers : “fish is not a registered protocole”
Monter un répertoire Unix distant : shfs (Secure SHell FileSystem Linux kernel module)
http://shfs.sourceforge.net/ Installation et mode d'emploi : http://www.labo-linux.org/index.php?pagelumieres&id278
shfsmount utilisateur@machine_distante /point/de/montage ou mount -t shfs utilisateur@machine_distante /point/de/montage
Attention, contrairement à fish, pour indiquer un répertoire, rajouter “:” après le nom de machine : shfsmount utilisateur@machine_distante:/repertoire/à/monter /point/de/montage
shfsmount -o rmode755 user@PC_distant:/répertoire/distant /point/de/montage
cf man shfsmount -o rmode755 pour permettre à un utilisateur autre que root d'accéder au point de montage :/répertoire/distant facultatif, si absent c'est le répertoire / qui est monté.
Attention : cas d'une machine W$+Cygwin protégée par firewall (kerio) après un shfsmount -o rmode755 user@PC_distant:/répertoire/distant /point/de/montage si la commande ls /point/de/montage bloque, c'est très probablement kerio qui bloque l'exécution de la commande cygwin ls : le vérifier
Copie de fichiers
Copier un fichier local sur un pc distant: $ 1 /rep_source/fichier utilisateur@pc_distant:~/rep_destination $ scp /rep_source/fichier utilisateur@pc_distant:~/rep_destination/ (même résultat) $ scp /rep_source/fichier utilisateur@pc_distant:~/rep_destination/autre_nom_de_fichier
L'inverse : copier un fichier résidant sur un pc distant dans un répertoire local : $ scp utilisateur@pc_distant:/répertoire_distant/fichier /chemin/vers/rép_local/nom_fichier
Pour les copies récursives, option -r : $ scp -r utilisateur@pc_distant:/répertoire distant
Pour éviter d'avoir à taper à chaque connexion le login/mot de passe :
1 - générer une paire de clés privée/publique ( clé/serrure) $ ssh-keygen -t rsa Répondre à la question “passphrase:” en entrant la phrase de son choix
Les clés générées sont dans ~/.ssh : id_rsa clé privée id_rsa.pub clé publique
2 - Copier la clé publique dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle on veut se connecter : $ scp ~/.ssh/id_rsa.pub utilisateur@nom_ou_N°IP_PC_distant:~/.ssh/authorized_keys ou bien ajouter cette clé publique à un fichier ~/.ssh/authorized_keys existant $ cat ~/.ssh/id_rsa.pub | ssh utilisateur@nom_ou_N°IP_PC_distant “cat » ~/.ssh/authorized_keys”
3 - Utiliser ssh-agent
Utilisation de ssh-agent
ssh-agent est un daemon dont le seul but est de garder en mémoire (de façon sécurisée) la “passphrase” de façon à ce qu'il ne soit pas nécessaire de la taper à chaque utilisation de ssh. La commande suivante crée la variable SSH_AUTH_SOCK qui contient le chemin d'un socket que ssh, scp (et autres commandes) vont utiliser pour dialoguer avec ssh-agent : $ eval `ssh-agent`
Communiquer la clé privée et la phrase de passe à ssh-agent au moyen de ssh-add : $ ssh-add ~/.ssh/id_rsa Enter passphrase for /home/jcg/.ssh/id_rsa:
La clé privée est ainsi décryptée et stockée dans le cache de ssh-agent, prête à être utilisée On peut maintenant utiliser ssh et scp sans avoir à entrer le mot de passe.
keychain
Récupérer la dernière version sur http://www.gentoo.org/proj/en/keychain.xml
Permet d'utiliser un seul processus ssh-agent par systeme, et non par session (login). Particulièrement intéressant si on veut utiliser ssh et scp dans un cron. Keychain supprime les processus ssh-agent éventuellement en surnombre. Il mémorise les variables SSH_AUTH_SOCK et SSH_AGENT_PID dans ~/.keychain/nom_machine.sh
A partir d'une autre session, récupération de ces variables : source ~/.keychain/nom_machine-sh
Pour automatiser, copier les lignes suivantes dans ~/.bash_profile # Keychain lance ssh-agent et stocke les variables SSH_AUTH_SOCK et SSH_AGENT_PID # dans ~/.keychain/nom_machine-sh pour pouvoir les récupérer dans d'autres sessions # cf. http://www-106.ibm.com/developerworks/linux/library/l-keyc2/
/usr/bin/keychain ~/.ssh/id_rsa source ~/.keychain/nom_machine-sh
Tunnel SSH
Soit trois machines : A locale B intermédiaire par exemple une machine autorisée à se connecter sur C C distante par exemple un firewall
tunnel crypté A —–> B —–> C
ssh
Sur la machine locale : ssh -L port_local_quelqconque:C:port_C nom_login@B
Exemple : ssh -L 4091:C:443 nom_login@B # 443 port https ou ssh -L 4091:C:443 nom_login@B sleep 180 ou encore passer en tâche de fond (<Ctrl><z>, puis bg
Le serveur web du firewall est accessible par : https://localhost:4091
* X * Configuration de X.org : http://casteyde.christian.free.fr/online/install_linux/x9482.html
Configuration X (écran/carte graphique)
XFdrake fonctionne aussi bien en mode graphique qu'en mode texte (pas besoin qque X soit lancé)
Login graphique
kdm mdkkdm
Fichiers de configuration
cf répertoires /etc/X11/xdm/
Sessions X multiples
Pour obtenir plusieurs sessions X :
Sous la session X de départ (display 0) <Alt Ctrl Fn> Fn est une des touches de fonction F1 à F6 pour accéder à la console texte à utiliser
Taper le login de l'utilisateur désiré Taper le mot de passe Taper : startx – :n n étant le n° de console graphique virtuelle (0 est le n° de la première console graphhique crée par le système) (NB : attention, espace indispensable entre – et :n) Pour passer d'une console à une autre : <Ctrl Alt F7> pour la première console graphique <Ctrl Alt F8> pour la 2°, etc. (F7 à F11 utilisables) <Ctrl Alt F12> messages système
cf. http://www.mandrakeuser.org/docs/xwin/xnet.html
Démarrer une interface graphique particulière : startx /etc/X11/xdm/Xsession KDE – :n startx /etc/X11/xdm/Xsession Gnome – :n startx /etc/X11/xdm/Xsession IceWM – :n startx /etc/X11/xdm/Xsession WindowMaker – :n startx /etc/X11/xdm/Xsession Enlightenment – :n startx /etc/X11/xdm/Xsession BlackBox – :n startx /etc/X11/xdm/Xsession Sawfish – :n startx /etc/X11/xdm/Xsession XFce – :n
Supprimer le démarrage automatique en mode graphique
Editer /etc/X11/xdm/Xservers Mettre en commentaire (#) la ligne : :0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyphs 16
Mode texte/mode graphique
# init 3 > texte # init 5 > graphique
Au boot avec Grub : “e” pour éditer la ligne de commande Pour booter en init 3, il suffit donc d'ajouter un “3” à la liste des options sur la ligne qui appelle le noyau (kernel….. 3 ), de valider les modifs (Entrée) et d'appuyer sur “b” pour poursuivre le boot. Cette manip n'affecte que le boot présent et donc au prochain passage par grub, tout se passe par défaut (init 5)
Récupérer les messages d'erreur
Exemple : startx – :3 > erreur 2>&1 Le fichier “erreur” contient tous les messages provenant du démarrage du serveur X
XF86Config
Localisation : /etc/X11/XF86Config-4
Souris
Exemples : Section “InputDevice”
Identifier "IntelliMouse" Driver "mouse" Option "Protocol" "ExplorerPS/2" Option "Device" "/dev/psaux" Option "ZAxisMapping" "6 7"
EndSection
Section “InputDevice”
Identifier "LogitechSerial" Driver "mouse" Option "Protocol" "MouseMan" Option "Device" "/dev/ttyS0"
EndSection
Pour que la souris série Logitech fonctionne, il faut renseigner la section : Section “ServerLayout”
Identifier "layout1" InputDevice "LogitechSerial" "CorePointer" Screen "screen1"
EndSection
L'option “CorePointer” indique quelle souris est le périphérique de pointage principal Pour indiquer plus d'un pointeur utiliser l'option “SendCoreEvents”.
Quel répertoire ?
pwd
Gestion des disques
fdisk cfdisk
Exemple : fdisk /dev/hda
Monter une partition, une disquette, un cdrom
mount -t ext3 /dev/hdc2 /mnt/disk mount -t auto /dev/hdc2 /mnt/disk mount -t ext2 /dev/fd0 /mnt/floppy mount -t iso9660 /dev/hda /mnt/cdrom (hda : cas cdrom en maître sur premier contrôleur)
Démonter une partition récalcitrante (à voir)
$ fuser -k -TERM -v -m point_de_montage
ou, plus violent (SIGKILL) :
$ fuser -k -v -m point_de_montage
Trouver ce qui empêche de démonter la disquette (par exemple) #umount /dev/fd0 umount: /mnt/floppy: périphérique occupé
# fuser -m /dev/fd0 /dev/fd0: 1692
# ps aux | grep 1692 root 1692 fam
# kill -9 1692
# umount /dev/fd0
# fam
NFS
- Indiquer dans : /etc/hosts.allow les machines autorisées à se connecter (si vide, pas de connexion possible !). Voir également /etc/hosts.deny - Indiquer dans : /etc/exports les répertoires partagés - Relancer nfs # service nfs restart - Monter le répertoire partagé : # mount NomMachine:RépertoirePartagé /mnt/disk
Mémoriser la configuration de Konqueror
Menu : Window/Save View Profile “File Management”
Changer de console
Sortir de l'environnement graphique
Alt Ctrl F9
Console 1
Alt F1
Revenir à l'environnement graphique
Alt Ctrl F7
Variables
Voir une liste de variables d'environnement (shell, etc)
env
Voir une variable particulière
exemple : echo $SHELL
Supprimer une variable
unset toto (et non pas $toto !)
Substitution de variables °°°°°°°°°°°°°°°°°°°°°°°°° http://www.linuxplusvalue.be/mylpv.php?id187 http://abs.traduc.org/abs-3.4-fr/string-manipulation.html
Affectation
$ TUTU“Le soleil brille” $ echo $TUTU Le soleil brille
Valeur par défaut à utiliser en cas de variable inexistante
NB : TITI est une variable inexistante $echo TITI
$ echo ${TITI:-il pleut} il pleut $ echo ${TUTU:-il pleut} Le soleil brille $echo TITI
ce qui montre que la valeur de TITI est temporaire
Affectation d'une valeur en cas de variable inexistante
$ echo ${TITI:coucou} coucou $ echo TITI coucou
Message à renvoyer en cas de variable inexistante
$ unset TITI $ echo ${TUTU:?Cette variable est vide} Le soleil brille $ echo ${TITI:?Cette variable est vide} bash: TITI: Cette variable est vide
Message à renvoyer si la variable existe
$ echo ${TUTU:+Cette variable est initialisée} Cette variable est initialisée $ echo ${TITI:+Cette variable est initialisée}
Dans un bash utiliser plutôt un code, par exemple 0 pour TRUE $ echo ${TUTU:+0} 0
Extraction d'une sous chaîne
${variable:position:longueur}
$ echo $TUTU Le soleil brille $ echo ${TUTU:3:6} soleil
La numérotation commence à 0 La longueur de la chaîne soleil est 6 caractères
Nombre de caractères dans la variable :
$ echo ${#TUTU} 16 $ LEN${#TUTU} $ echo $LEN 16
Extractions
$echo ${TUTU#Le} soleil brille $ echo ${TUTU%brille} Le soleil
Voir égalemenent la signification de ## par rapport à # et %% par rapport à %
Remplacements
$ echo ${TUTU/soleil/miroir} Le miroir brille
Voir également sed, ci-dessus
Remplacements multiples
$ TUTU“Le chien hurle. Le chien s'endort” $ echo ${TUTU/chien/loup} Le loup hurle. Le chien s'endort $ echo ${TUTUchien/loup} Le loup hurle. Le loup s'endort Noter que la valeur de TUTU n'a pas changé $ echo $TUTU Le chien hurle. Le chien s'endort Suppression(s) ————– TUTU“dix sept, dix huit, dix neuf” $ echo ${TUTUdix} sept, huit, neuf
Opérations (additions, soustractions, multiplications, divisions)
$ r1 $ echo $3) 1 $ echo $r 2
l'affichage se fait avant l'incrémentation
$ r1 $ echo $4) 2 $ echo $r 2
l'affichage se fait après l'incrémentation
$ r1 $ a$5) $ echo $a 2 $ echo $r 2
$ r1 a$6) $ echo $a 2 $ echo $r 1
$ a2 $ b10
$ echo $7) 12 $ echo $8) 20 $ echo $9) 5
b11 $ echo $10) 5 $ echo $11) # modulo (reste) 1
Affecter le résultat d'une commande à une variable
$ r`ls /usr/X11R6` # affectation $ r$(ls /usr/X11R6) # idem $ echo $r # affichage du résultat bin/ GNUstep/ include/ lib/ man/ share/
Affichage ligne à ligne de la variable r
$ for i in $r ; do echo $i; done # ou bien echo “${r[@]}” bin/ GNUstep/ include/ lib/ man/ share/
Tableaux : affectation, affichage
Affecter des variables à un tableau
$ t(bleu blanc rouge)
$ echo $t bleu $ echo ${t[0]} bleu $ echo ${t[1]} blanc $ echo ${t[*]} # ou echo ${t[@]} bleu blanc rouge $ echo ${#t[*]} # Nombre d'éléments dans le tableau 3
$ t[1]vert $ echo ${t[@]} bleu vert rouge
Copie de tableau $ a(${t[*]}) $ echo ${a[*]} bleu blanc rouge
ou bien d'après certaines docs : a“${t[@]}” $ echo ${a[*]} bleu blanc rouge blanc rouge # !!!
Initialiser un tableau
a() $ echo ${#a[*]} # Nombre d'éléments dans le tableau 0
Balayer un tableau
for 12) ; do echo “i$i t${t[i]}” ; done i0 tbleu i1 tblanc i2 trouge
Rajouter un élément
$ t( ${t[*]} vert ) $ echo ${t[*]} bleu blanc rouge vert
$ vviolet t(${t[*]} $v) $ echo ${t[*]} bleu blanc rouge vert violet
Tableau résultat d'une commande
t(`ls /usr/X11R6`) $ echo ${t[*]} bin/ GNUstep/ include/ lib/ man/ share/ $ echo ${t[3]} lib/
Nombre de variables dans un tableau de variables
$ echo ${#t[*]} # attentionn : echo ${#t} donne 4, soit la longueur de t[0] 6
Longueurs
$ echo ${#t} # ou echo ${#t[0]} 4 # nb de caractères dans le premier élément du tableau (/bin)
$ echo ${#t[2]} # nb de caractères dans le 3° élément du tableau (/include) 5
Additions, soustractions
t(10 2 7) $ echo `expr ${t[0]} + ${t[2]} - ${t[1]}` 15
Adressage indirect
$ médorchien $ chiencanidé $ echo $médor chien $ echo $chien canidé $ echo ${!médor} canidé
Voir/ supprimer des processus
ps
Vignettes
Les images sont dans /usr/share/mdk/faces/
Grub
http://www.gnu.org/software/grub/ http://doc.polynum.org/howto/grub/grub-howto-1.html (en français)
I - Créer une disquette grub
1 - Formater une disquette au format ext2fs : # kfloppy ou bien : # mke2fs /dev/fd0
2 - Monter la disquette
3 - Créer un répertoire boot. Dans ce répertoire créer un répertoire grub, Dans /boot/grub, copier les fichiers
menu.lst stage1 stage2
3 - Démonter la disquette
4 - Rendre la disquette bootable La méthode décrite dans le “GRUB manual”, §3.1 “Creating a GRUB boot floppy” ne fonctionne pas. Utiliser plutôt l'une ou l'autre des méthodes suivantes :
a) Methode simple (interactive) # grub grub> root (fd0) grub> setup (fd0) grub> quit
b) Méthode décrite dans la FAQ “4. How to create a GRUB boot floppy with the menu interface”
Lancer la commande batch suivante # grub –batch –device-map/dev/null «EOF device (fd0) /dev/fd0 root (fd0) setup (fd0) quit EOF
Cette disquette permettra de démarrer pratiquement n'importe quel système d'exploitation (Linux ou autre) qui se trouve sur le(s) disque(s) de l'ordinateur.
II - Installer grub sur le MBR d'un disque
Attention : éviter d'écraser le MBR Windows. S'il a été écrasé, voir plus loin Pour éviter cela, sauvegarder le MBR avec dd par exemple sur une disquette : dd ifdevice of/dev/fd0/mbr.win bs512 count1 remplacer device par le device du disque de boot (par exemple hda, sdb …)
1 - Lancer grub : # grub
2 - Vérifier que le “root device” (c'est à dire les fichiers grub) se trouve bien là où l'on pense : en effet la dénomination des disques est différente sous linux et sous grub:
grub> find /boot/grub/stage1 (fd0) (hd1,1)
Le root device est donc ici en hd1,1, c'est à dire hdb2 en nomenclature Linux
3 -Indiquer à grub l'emplacement du root device : grub> root (hd1,1) Filesystem type is ext2fs, partition type 0x83
4 - Installer GRUB dans le MBR grub> setup (hd1) Checking if “/boot/grub/stage1” exists… yes Checking if “/boot/grub/stage2” exists… yes Checking if “/boot/grub/e2fs_stage1_5” exists… yes Running “embed /boot/grub/e2fs_stage1_5 (hd1)”… 17 sectors are embedded. succeeded Running “install /boot/grub/stage1 (hd1) (hd1)1+17 p (hd1,1)/boot/grub/stage2 /boot/grub/menu.lst”… succeeded Done.
5 - Quitter grub grub> quit
6 - Copier le programme de boot que l'on vient de mettre dans le MBR du disque hdb. La copie est mise dans un fichier (ici bootsect.grb) qui sera placé dans la racine de la partition bootable, soit très généralement hda1. Si nécessaire vérifier à l'aide de fdisk que cette partition a bien l'attribut bootable. Dans l'exemple ci-dessous /dev/hda1 est monté en /mnt/win_c
# dd if/dev/hdb of/mnt/win_c/bootsect.grb bs512 count1
Configurer grub pour booter linux
Taper sur la touche <c> pour passer en mode commande et rechercher où se trouve le(s) dossier(s) grub : c'est dans ces dossiers que se trouve le fichier menu.lst à configurer : grub> find /boot/grub/stage1 (fd0) (hd1,1)
dans ce cas il y a 2 dossiers grub
- sur disquette (fd0) - sur la 2° partition du disque hd1
Taper sur les touches <Esc> puis <e> pour éditer les lignes de commande Corriger les valeurs et essayer de booter. Dans le cas d'un déplacement de disque, fstab est probablement incorrect : booter avec un mini-linux sur disquette (tomsrtbt, puis utiliser vi) ou sur CD (Knoppix avec KDE ou le CD1 d'installation Mandrake avec vi) et corriger fstab. En profiter pour corriger le fichier menu.lst qui se trouve dans boot/grub.
NB : sous Knoppix les partitions sont par défaut “read only”. En plus KDE est ouvert pour un utilisateur non root. Donc pas moyen d'écrire. Pour pouvoir écrire, passer dans une console root (il n'y a pas de mot de passe) : <Alt Ctrl F2> Démmarrer KDE en root : # startx – :1 - Sur le bureau, trouver l'icône de la partition qui contient les fichiers menu.lst et fstab à modifier - Click droit sur l'icône de la partition, la monter - A nouveau click droit et changer le mode en read/write - passer dans le répertoire boot/grub/ - clik droit sur l'icône du fichier menu.lst : l'ouvrir avec un éditeur (kwrite) et entrer les bonnes valeurs - idem pour /etc/fstab
Attention : Knoppix et Mandrake ne reconnaissent pas les disques sous le même nom : par exemple hdg sous knoppix peut devenir hdc sous Mandrake. Pour savoir comment mandrake identifie les disques, démarrer avec le CD d'installation n°1 jusqu'au partitionnement : on voit alors comment les disques sont nommés.
Rebooter. S'il n'y a plus d'erreur dans menu.lst et dans fstab, ça boote correctement.
Amélioration de l'affichage des infos au démarrage de MDK
Remplacer vga788 par vga791 dans le fichier /boot/grub/menu.lst
Valeur du paramètre vga cf. http://guide.andesi.org/html/jbootsplash.html
Résolution Nombre de couleurs paramètre vga 640×480 256 769
32000 784 65000 785 16.7 Millions 786
800×600 256 771
32000 787 65000 788 16.7 Millions 789
1024×768 256 773
32000 790 65000 791 16.7 Millions 792
1280×1024 256 775
32000 793 65000 794 16.7 Millions 795
On peut également utiliser : vganormal vgaask
Gestion des disques
diskdrake
Taux d'occupation des disques
df df -h (h human readable, affichage en MO, etc.)
Monter/démonter des disques, occupation
kdf
Formatage d'une partition d'un disque dur
Formatage de la partition hdc2, par exemple : mkfs -V -t ext3 -c /dev/hdc2 Curieusement c'est une partition ext2 qui est crée : pour la passer en ext3 (ça n'efface rien !) tune2fs -j /dev/hdc2
ou bien mkfs.ext3 -c -v /dev/hdc2 -v verbose -c vérifie les blocs défectueux
Formatage rapide : mkfs /dev/hdc2
ext3
Avec le noyau 2.6 les répertoires peuvent être indexés ce qui accélère l'affichage en cas de fichiers en gand nombre (cf. http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt) Par exemple pour ajouter l'indexation à un système de fichiers ext3 existant sur la partition sda3 : # tune2fs -O dir_index /dev/sda3
Formater une disquette
kfloppy
Formatage ext2 (rapide) mke2fs /dev/fd0
Formatage ext2 avec contrôle en lecture/écriture de la surface de la disquette (lent) mke2fs -c -c /dev/fd0
Localiser quelque chose
find locate which ou type whereis kfind
Rechercher à l'intérieur de fichiers
grep rgrep kfind
Copie de disquette (idem diskcopy sous DOS)
1 - Copier le contenu de la disquette sur le disque dur dd if/dev/fd0 offlop.tmp 2 - Facultatif : formatter une disquette (voir ci-dessus) Pas vraiment utile, car dd copie secteur à secteur. permet de vérifier l'état de la disquette 3 - Copier le fichier flop sur cette disquette dd ifflop of/dev/fd0 4 - Effacer le fichier temporaire flop.tmp rm -i flop.tmp
Messagerie (mail)
Format de stockage des messages : 3 possibilités suivant les clients de messagerie utilisés : 1 - Dans un répertoire : 1 fichier par message 2 - tous les messages sont dans un seul fichier, éventuellement organisé en base de donnée 3 - Solution intermédiaire un fichier par dossier : tous les messages du dossier sont groupés dans un fichier.
1 maildir, format le plus sur cf. http://www.qmail.org/qmail-manual-html/man5/maildir.html,
http://en.wikipedia.org/wiki/Maildir
Utilisé par Kmail, Postfix, etc.
Les messages d'un dossier du client de messagerie (par exemple inbox) sont mis dans un répertoire (inbox) subdivisé en trois sous-répertoires : cur, new et tmp - new : les messages nouvellement arrivés, avec l'heure et date d'arrivée - cur : idem new, mais messages lus - tmp : pas clair, voir doc ci-dessus
2 format le plus dangereux et le plus difficile à tranférer sous un autre format Utilisé par Microsoft Outlook
3 mbox, format tès courant cf. http://www.qmail.org/man/man5/mbox.html,
http://en.wikipedia.org/wiki/Mbox
Utilisé par exemple par Eudora
Kmail
Plante avec une message “The application Kmail crashed and caused signal 11 (SIGSEGV)” etc. Remède : supprimer le fichier de configuration de l'utilisateur : $HOME/.kde/share/config/kmailrc Refaire la config de Kmail (menu “Settings”)
Trash (poubelle)
Menu : Settings/Configure Kmail Onglet Receiving Créer une BAL (ou bien choisir la BAL à modifier) Onglet General, en bas de la fenêtre menu déroulant “Trash folder” : bien choisir dans quel dossier mettre les messages à envoyer à la poubelle.
Carnet d'adresses
~/.kde/share/apps/kabc
Envoyer un mail en ligne de commande (mail)
Exemples : - Envoyer le résultat d'une commande : $ date | mail -s “Voici la date et l'heure” toto@serveur_mail (mettre le sujet entre “” si ce n'est pas un mot unique.
- Rédiger le mail à l'aide d'un éditeur de texte quelconque et l'enregistrer dans un fichier. Puis : $ cat nom_fichier | mail -s sujet destinataire@serveur_mail
Transférer les messages du format mailbox au format maildir
Récupérer le programme perl mb2md sur http://batleth.sapienti-sat.org/projects/mb2md/ Le dézipper (gunzip nom_programme) Mettre les droits x Utilisation : voir le mode d'emploi. Par exemple pour remplir /home/utilisateur/Maildir : $ ./mb2md-x.xx.pl -s /var/spool/mail/mbox_utilisateur
Si ça ne fonctionne pas vérifier que perl et perl-TimeDate soient bien installés.
Serveur ftp (proftpd)
Documentation : http://www.mandrakeuser.org/docs/connect/print/ftp.html Fichier de configuration : /etc/proftpd.conf Répertoire de départ (cf. directive <Anonymous ~ftp> dans le fichier de configuration) : /var/ftp
Proftpd, symlinks et chroot
cf. http://castaglia.proftpd.de/doc/contrib/ProFTPD-mini-HOWTO-Chroot.html
Pour faire apparaître un répertoire dans /var/ftp/pub ln ne fonctionne pas. Utiliser à la place : mount –bind /le/repertoire/a/monter /var/ftp/pub
Pour rendre accessible par ftp un partage samba : mount -t smbfs -o usernametoto nom_machine/nom_partage /var/ftp/pub FTP sécurisé sftp utilise le port 22 (SSH) A partir de KDE/konqueror : sftp:NomDeMachine Puis entrer le login et le mot de passe de l'utilisateur : on est alors à la racine du home de l'utilisateur
A partir de W$ : Pas de client sftp dans IE ou Mozilla :( Mais possible avec filezilla : remplir les champs Address, User et Password et taper retour chariot on est alors à la racine du home de l'utilisateur
Serveur http (apache)
- Documentation : http://httpd.apache.org/docs-2.0/ - FAQ : http://httpd.apache.org/docs/misc/FAQ.html - Fichiers de configuration principaux :
/etc/httpd/conf/http2.conf /etc/httpd/conf/commonhttpd.conf
- Répertoire de départ (cf. DocumentRoot dans le fichier de configuration http2.conf) : /var/www/html - Fichier(s) à ouvrir par défaut : à voir ou définir dans commonhttpd.conf. - Fichier de logs : /var/log/httpd/access_log - Fichier d'erreurs : /var/log/httpd/error_log - Version : httpd2 -V
Statut, démarrage / redémarrage, etc.
# service httpd status
extendedstatus start restart stop
ou bien # /etc/init.d/httpd status
Autoriser l'accès local à un répertoire
Mettre dans /etc/httpd/conf/commonhttpd.conf :
Alias /toto /chemin/réel/vers/répertoire_à_autoriser
<Directory /chemin/réel/vers/répertoire_à_autoriser>
Options Indexes FollowSymLinks <IfModule mod_access.c> Order deny,allow Deny from all Allow from 127.0.0.1 192.168.3.27 mabecane.fr </IfModule>
</Directory>
NB : localhost à la place de 127.0.0.1 ne marche pas S'y connecter avec : http://localhost/toto “Options Indexes FollowSymLinks” autorise l'affichage du contenu du répertoire et permet de suivre les liens symboliques
Sites supplémentaires (virtual hosts)
Ajouter les sites dans /etc/httpd/conf/vhosts/Vhosts.conf, par exemple :
################# Named VirtualHosts : Mon_joli_site NameVirtualHost 192.168.1.70 <VirtualHost 192.168.1.70> ServerName mon_joli_site.fr ServerAlias mon_joli_site #ServerPath /domain DocumentRoot /répertoire/de/départ </VirtualHost>
Ajouter les adresses dans /etc/sysconfig/network-scripts Créer un fichier ifcfg-eth0:0 (ou :1, etc.) contenant :
DEVICEeth0:0 BOOTPROTOstatic IPADDR192.168.1.70 NETMASK255.255.255.0 NETWORK192.168.1.0 BROADCAST192.168.1.254 ONBOOTyes
NB : si le fichier est crée avec kwrite on a un mesage d'erreur à l'enregistrement. Enregistrer sous un nom quelquonque (toto par exemple) puis renommer.
Relancer eth0 : ifup eth0 Vérifier (éventuellement) que les modifications ont été prises en compte : ifconfig (pas de eth0 après !)
Ne pas oublier de redémarrer le serveur : service httpd restart
Sécurité
http://httpd.apache.org/docs/howto/auth.html http://httpd.apache.org/docs-2.0/misc/security_tips.html http://httpd.apache.org/docs/misc/FAQ.html :
How do I turn automatic directory listings on or off? G. Authentication and Access Restrictions
Voir sécurisation plus loin
Limiter l'accès par htpasswd
http://httpd.apache.org/docs-2.0/howto/htaccess.html http://www.destrucsaweb.com/ressources/phpmyannu/goto_43.php NB : l'utilisation de .htaccess est déconseillée sauf si l'on ne dispose pas des droits d'administration sur le serveur (cf. http://httpd.apache.org/docs-2.0/howto/htaccess.html). Si l'on dispose des droits d'administration préférer la méthode ci-dessous (voir à “Sécurisation)”.
Analyse des logs (awstats)
Documentation : /usr/share/doc/awstats-5.4/index.html http://awstats.sourceforge.net/docs/index.html Voir aussi le fichier de configuration /etc/awstats/awstats.conf
Programme : /var/www/cgi-bin/awstats.pl Fichier de configuration : /etc/awstats/awstats.conf Remplacer dans ce fichier :
LogFile"/var/log/httpd/mylog.log"
par : LogFile“/var/log/httpd/access_log”
Créer / mettre à jour les statistiques : ./awstats.pl -confignom_serveur ./awstats.pl -confignom_serveur -output -staticlinks > awstats.nom_serveur.html
Analyse des logs (webalizer)
Site : http://www.mrunix.net/webalizer/ Documentation : il suffit de lire le fichier de configuration /etc/webalizer.conf
Sécurité
- Suprimer l'affichage permettant l'identification du système, de la version d'apache, etc. /etc/httpd/2.0/conf/commonhttpd.conf > ServerSignature Off
- Sécurisation par login et mot de passe voir plus loin sécurisation de PhpMyAdmin
Messagerie
MUA : Mail User Agent, client de messagerie ( écriture et la lecture des messages)
Exemple Kmail, thunderbird etc.
MTA : Mail Transfert Agent, pour l'expédier les messages
Exemple : Postfix, Sendmail
MDA : Mail Delivery Agent, pour délivrer les messages dans la(les) boîte(s) aux lettres du MUA
Exemple Procmail
Postfix
*
Liens utiles :
http://www.postfix.org/docs.html
http://vejnar.eu.org/linux/serveur-mdk/index.html
http://troumad.free.fr/Linux/Linux.sxw
NB : pour un serveur autonome (qui ne va pas chercher les messages chez un FAI), fetchmail est inutile : il ne sert que si l'on a pas une connexion permanente.
Connaître la version de posfix installée :
# postconf mail_version
Lister les variables configurées :
# postconf -n
Démarrage …
_
Service postfix status
start
restart
stop
Recharge les paramètres de configuration : postfix reload
Relayage des messages
_
Postfix par défaut ne relaye pas les messages autres que celui du sous-réseau : cf documentation incluse dans le fichier de configuration main.cf.
Pour relayer les messages (déconseillé !) modifier mynetworks ou smtpd_recipient_restrictions
Configuration
_
main.cf
——-
Dans la version postfix-2.1.1-0.1.100mdk (et peut être d'autres, main.cf ne contient que les paramètres adaptés à Mandrake, ce qui fait que postfix ne peut pas fonctionner !!!
Ouvrir main.cf.dist
Copier les paramètres trouvés dans main.cf et les coller où il faut dans main.cf.dist
Renommer main.cf main.cf.mdk (par exemple) et main.cf.dist.main.cf
La configuration par défaut de MDK10 est un peu trop restrictive. Changer :
inet_interfaces localhost par inet_interfaces localhost, $myhostname
mynetworks_style host par mynetworks_style subnet
Gestion des adresses
——————–
Il faut définir la correspondance entre les adresses locales de type utilisateur@monserveur_de_mail et les adresses connues (ou communiquées) aux correspondants extérieurs du type Prénom.Nom@monserveur_de_mail :
Editer (si nécessaire créer) le fichier /etc/postfix/sender_canonical et le remplir avec des lignes du type
login_utilisateur Prénom.Nom@monserveur_de_mail
De même, compléter le fichier /etc/postfix/recipient_canonical avec des lignes du type :
Prénom.Nom@monserveur_de_mail login_utilisateur
pour indiquer à postfix que Prénom.Nom@monserveur_de_mail est un utilisateur local
Générer les fichiers DB correspondants (cf. http://www.postfix.org/canonical.5.html)
postmap /etc/postfix/sender_canonical
postmap /etc/postfix/recipient_canonical
Vérifier la présence des lignes suivantes dans le fichier de configuration /etc/postfix/main.cf :
sender_canonical_maps hash:/etc/postfix/sender_canonical
recipient_canonical_maps hash:/etc/postfix/recipient_canonical
Terminer en relançant Postfix par la commande postfix reload.
Messages à root
—————
Root n'est pas censé recevoir des messages.
Solution :
Modifier le fichier /etc/aliases
Changer la ligne
root: postfix
en
root: un_nom_d'utilisateur_valide
pour rediriger les messages vers la messagerie de cet utilisateur
Terminer en mettant à jour “aliases.db” par la commande newaliases.
NB : avec root: postfix, les messages sont stockés dans le fichier /var/mail/postfix
courier-imap (et imap-2002)
*
NB : imap-2002 ne supporte pas le format maildir (http://www.washington.edu/imap/IMAP-FAQs/#1.31)
Pour utiliser maildir, désintaller (s'il a été installé) imap-2002 et installer à la place courier-imap
Les fichiers de configuration sont dans /etc/courier
Après installation, démarer le service :
# service courier-imap start
Horloge : mise à jour de la date et de l'heure
# ntpdate -u ntp1.tuxfamily.net
Tuer une session X
<Alt Crtl Backspace>
Test de la carte son
# lspcidrake -v | fgrep AUDIO → driver par défaut
# grep sound-slot /etc/modules.conf → “ actuel
# /sbin/lsmod → teste si le driver est chargé
# /sbin/chkconfig –list sound → teste si les services sound et
# /sbin/chkconfig –
list alsa alsa sont configurés pour fonctionner en initlevel 3
# aumix -q → volume on/off
# /sbin/fuser -v /dev/dsp → quel programme utilise la carte son
Bugs :
MDK10, carte MSI Neo FISR, le pilote installé (snd-intel8x0) est incorrect; le remplacer par celui que Knoppix, lui, autodétecte correctement, i810_audio :
# mcc > harware > Soundcard 82801EB AC'97 Audio > Run config tool > Driver
MDK9.1 charge un pilote incorrect pour la carte son de la carte mère DFI CA64/TC : utiliser mcc pour remplacer le pilote snd-via82xx par via82cxxx_audio
Interface réseau
http://rak.isternet.sk/linux-netman/commands.html Linux Network Commands
Vérification - réglage de la carte réseau
—————————————–
mii-tool
Carte ethernet : si ethernet ne démarre pas, vérifier dans :
/etc/sysconfig/network-scripts/ifcfg-eth0
que ONBOOT soit à yes (et pas no)
Configuration
————-
netcardconfig (knoppix)
mcc (Mandrake)
Statut des interfaces actives
—————————–
ifconfig eth0 → statut de l'interface eth0
ifconfig eth0 down → arrêter l'interface eth0
ifup eth0 → redémarrer l'interface eth0 (et non pas ifconfig eth0 up, voir le man, intéressant)
Paramétrage temporaire (il disparaît au reboot de la machine)
————————————————————-
Attention : le paramétrage effectué avec ifconfig disparaît au reboot de la machine.
Pour un paramétrage persistant :
# drakconnect
ou bien encore mieux, voir /etc/sysconfig/network-scripts ci-dessous
Avec la commande ifconfig, entrer l'adresse IP, le masque de sous-réseau, l'adresse de diffusion (broadcast)
# ifconfig eth0 <AdresseIP> netmask 255.255.255.0 broadcast <IPdeBroadcast, e.g. xxx.xxx.xxx.254> up
Broadcast : idem adresse IP, mais se termine par 254 dans le cas d'un masque de sous réseau 255.255.255.0 (CIDR 24) ou 127 dans le cas d'un masque 255.255.255.128 (CIDR 25)
Routage
——-
Configurer le routage vers la passerelle avec route - la machine passerelle permet de sortir sur internet (gateway) :
# route add default gw <AdresseIPduGateway>
Pour un paramétrage permanent
—————————–
Entrer les bons paramètres dans les fichiers qui se trouventt dans :
/etc/sysconfig/network-scripts les fichiers :
ifcfg-eth0
ifcfg-eth0:x (les alias !)
Entrer à la main les valeurs voulues :
DEVICEeth0
BOOTPROTOstatic
IPADDR130….
NETMASK255.255.255.128 (si masque de sous réseau255.255.255.128 cad CIDR25 par exemple)
NETWORK130. . .0
BROADCAST130. . .127 (si masque de sous réseau255.255.255.128 cad CIDR25 par exemple)
GATEWAY130. . .126 (addresse de la passerelle de sortie)
ONBOOTyes
Puis arrêter (ifconfig eth0 down) et redémarrer (ifup eth0)
Enfin vérifier que les valeurs entrées ont été prises en compte (ifconfig).
3 - Mettre l'adresse des serveurs de nom dans /etc/resolv.conf
nameserver <IP du 1° DNS>
nameserver <IP du 2° DNS>
….
e.g nameserver 192.168.1.25
4 - Nom de la machine : à mettre dans /etc/sysconfig/network
HOSTNAMEnom-machine
NETWORKINGyes
Affichage / modification des paramètres de l'interface réseau
————————————————————-
ethtool
snmp (imprimantes en particulier)
—————–
snpm Simple Network Management Protocol
cf. http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/snmp.htm#xtocid1
snmpwalk query a network entity for a tree of information (cf. man snmp)
Exemple : pour voir les infos d'une imprimante :
$ snmpwalk -v 1 -c public nom_ou_IP_de_l'imprimante -system
Moniteur de réseau (network monitoring)
—————————————
- iptraf
Après installation, le mode d'emploi de iptraf est dans : /usr/share/doc/iptraf-2.7.0/Documentation/menus.html
net_applet
Affichage/modification du cache ARP (address resolution protocol)
—————————————————————–
# arp
Cette commande, non suivie d'options, liste les adresses des machines qui sont dans le cache ARP : en général la machine hôte, le routeur et les machines connectées à l'hôte. Pour faire apparaitre une autre machine, faire par exemple un ping vers cette machine et relancer la commande arp.
Bridge
Administration : brctl
# brctl showmacs liste les adresses mac connues
Pour voir si une machine est derrière le firewall :
# brctl showmacs br0 |grep -i adresse_mac
(adresse_mac aura auparavant été récupérée en faisant un ping sur la machine et en lançant arp ensuite). Attention arp retourne les adresse en majuscules, alors que brctl les donne en minuscules, d'où grep -i)
Changer de module
Exemple : dans le cas du module pilote de l'interface ethernet, pour remplacer driver1 par driver2 :
remplacer dans /etc/modules.conf ou dans /etc/modprobe.conf
(NB : noyau 2.4 > modules.conf
2.6 > modprobe.conf)
la ligne :
alias eth0 driver1
par
alias eth0 driver2
ou, pour des tests rapides
# service network stop
# rmmod driver1 (supprime le driver1)
# modprobe driver2 (mettre à la place le driver2)
# service network restart
Modem
Installation réseau / modem
#drakconnect
Configurer les accès réseau
Pour le modem :
lancer (ou installer si ce n'est déjà fait et lancer) kppp
Serveur web
Placer le fichier de départ (Fichier par défaut : index.html) dans :
/var/www/html
Créer les utilisateurs et groupes
# userdrake
Mots de passe et infos utilisateur
cf. http://www.tldp.org/LDP/lame/LAME/linux-admin-made-easy/shadow-file-formats.html
Voir /etc/password
Les mots de passe cryptés sont stockés dans /etc/shadow :
The ``/etc/shadow file contains password and account expiration information for users, and looks like this:
smithj:Ep6mckrOLChF.:10063:0:99999:7:::
As with the passwd file, each field in the shadow file is also separated with ”:“ colon characters, and are as follows:
Username,
up to 8 characters. Case-sensitive, usually all lowercase. A direct match to the username in the /etc/passwd file.
Password,
13 character encrypted. A blank entry (eg. ::) indicates a password is not required to log in (usually a bad idea), and a ``*
entry (eg. :*:) indicates the account has been disabled.
The number of days (since January 1, 1970) since the password was last changed.
The number of days before password may be changed (0 indicates it may be changed at any time)
The number of days after which password must be changed (99999 indicates user can keep his or her password unchanged for many, many years)
The number of days to warn user of an expiring password (7 for a full week)
The number of days after password expires that account is disabled
The number of days since January 1, 1970 that an account has been disabled
A reserved field for possible future use
Créér un nouvel utilisateur sous KDE
kuser
Connaître les utilisateurs connectés
w
Copie de fichiers
—————–
scp utilisateur@PCsource:fichiersource nom_utilisateur@PCdestination:fichier_destination
Possibilité de changer à la volée le type de codage : 3des (défaut), blowfish, des
En cas de machine ou réseau lent :
scp -c blowfish (la suite comme ci-dessus)
Infos système
uname -a
Retourne les infos système (kernel, machine, etc…)
Information sur les périphériques SCSI et USB :
———————————————-
cat /proc/scsi/scsi
Périphériques USB (et autre ieee ?)
usbview
Hotplug est le service qui permet de connecter à chaud des périphériques et de les utiliser immédiatement (cf. http://linux-hotplug.sourceforge.net).
Vérifier si le noyau est prévu avec hotplug :
$ cat /proc/sys/kernel/hotplug
/sbin/hotplug
En cas de problème, quelques contrôles
————————————-
http://www.linux-usb.org/
- Voir si hotplug est installé
# cat /proc/sys/kernel/hotplug
/sbin/hotplug
- Voir s'il a fonctionné : il doit y avoir un répertoire usb dans /proc/bus/usb
# ls /proc/bus
input/ pci/
(pas de répertoire usb !)
- Voir le statut du service hotplug
# /etc/rc.d/init.d/hotplug status | grep -i usb
USB Status for kernel: Linux 2.6.8.1-12mdk i686
usbfs is unavailable.
USB may be statically linked.
If khubd is running, that shows USB is available.
- Voir si khubd tourne :
# ps aux |grep khubd
root 7162 0.0 0.0 0 0 ? S 14:36 0:00 [khubd]
- Voir les éventuels messages d'erreur au lancement de hotplug
# /etc/rc.d/init.d/hotplug restart
/etc/hotplug/usb.rc: line 230: [: -lt: unary operator expected
- Vérifier si le périphérique USB est détecté
Connecter/déconnecter le périphérique. Des messages système sont envoyés. Les visualiser avec l'une ou l'autre des commandes suivantes :
# dmesg
# tail -f /var/log/syslog
(MDK : les mêmes messages apparaissent avec dmesg et tail
Knoppix : les messages ne sont visibles qu'avec dmesg)
Exemple, dans le cas d'un USB qui fonctionne :
# dmesg
…..
usb 1-1: new full speed USB device using address 2
SCSI subsystem initialized
Initializing USB Mass Storage driver…
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: IC35L060 Model: AVVA07-0 Rev: VA3O
Type: Direct-Access ANSI SCSI revision: 02
USB Mass Storage device found at 2
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
SCSI device sda: 120103200 512-byte hdwr sectors (61493 MB)
sda: assuming drive cache: write through
/dev/scsi/host0/bus0/target0/lun0: p1 p2
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
- Si rien ne fonctionne :
Vérifier la présence (ou rajouter à la main) ces 2 lignes dans /etc/modprobe.conf
install usb-interface /sbin/modprobe usb-uhci; /sbin/modprobe
ehci-hcd; /bin/true
Créer ou éditer /etc/modprobe.preload et mettre (si cela n'y est pas), une ligne :
usb-storage
Trouver le device utilisé par un périphérique et monter ce périphérique
————————————————————————
cat /proc/scsi/scsi
Repérer dans le résultat de cette commande ce qui correspond au périphérique recherché, par exemple
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: PIONEER Model: DVD-RW DVR-105 Rev: 1.00
Type: CD-ROM
Chercher avec Konqueror dans le répertoire /dev/scsi le device correspondant, dans ce cas :
/dev/scsi/host1/bus0/target0/lun0/cd
Monter le périphérique :
mount -t iso9660 /dev/scsi/host1/bus0/target0/lun0/cd /mnt/dvd
Mettre dans /etc/fstab la commande ad hoc
USB avec diskdrake
————–
Lancer diskdrake
Un disque usb apparaît généralement comme disque sda, les partitions comme sda1, sda2, etc.
Monter le disque à partir de diskdrake, ou mieux créer à la main les entrées ad-hoc dans fstab
(diskdrake réorganise tout fstab et supprime les commentaires éventuels qui auraient pu y être écrits !)
Trouver le device utilisé par un périphérique
———————————————
mcc > Hardware > hardware list
Voir et monter les disques
————————–
A condition que fstab soit correct, kdf permet de monter/démonter les disques
et voir le % d'utilisation de chaque disque.
Mise à jour des menus
# update-menus
Spécifique debian
Installer un programme:
————————–
dselect
Changement de résolution écran
Xdrakres
Samba
Version installée
—————–
$ net -V
ou
$ net –version
- “Voisinage réseau”
——————–
$ findsmb
# findsmb
- Tester l'état du service samba
——————————–
# service smb status
smbd (pid 2114) is running…
nmbd (pid 2124) is running…
- Démarrer, redémarrer
———————-
start, restart
# service smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
Autre possibilité :
# samba –help
Usage: /usr/sbin/samba {start|stop|restart|status|condrestart}
- Monter un disque externe :
—————————-
# mount -t smbfs -o usernametoto nom-machine_ou-N°IP/nom_partage /mnt/disk
ou bien
smbmount nom-machine_ou-N°IP/nom_partage /mnt/disk -o usernametoto
ou si on préfères, dans fstab (ici avec le mot de passe en clair, beurk !) :
nom_machine/nom_partage /point/de/montage smbfs usernametoto,passwordle_mot_de_passe
ou encore avec login et mot de passe dans un fichier accessible uniquement par root et contenant :
username toto
password le_mot_de_passe
# mount -t smbfs -o credentials/le/nom/de/ce/fichier nom-machine_ou-N°IP/nom_partage /mnt/disk
idem pour fstab :
nom_machine/nom_partage /point/de/montage smbfs -o credentials/le/nom/de/ce/fichier
- Partager un répertoire (cad pouvoir accéder à un répertoire sur le PC linux à partir d'un PC Windows)
————————
Entrer le nom d'utilisateur et son mot de passe (sera mémorisé crypté dans /etc/samba/smbpasswd)
# smbpasswd -a NomUtilisateur
et entrer (2 fois) le mot de passe
Verifier que le fichi1er de mots de passe est bien en lecture/écriture _uniquement_ pour root :
$ ls -al /etc/samba/smbpasswd
-rw——- 1 root root 102 Jan 3 1996 /etc/samba/smbpasswd
Si ce n'etait pas le cas, mettre les droits corrects :
# chmod 600 /etc/samba/smbpasswd
Editer le fichier de configuration /etc/samba/smb.conf et ajouter le répertoire à partager selon les exemples donnés dans ce fichier.
Verifier éventuellement s'il n'y a pas d'erreur dans le fichier smb.conf :
# testparm
Relancer samba pour prendre en compte les modifications (# samba restart)
Se connecter à partir du PC windows.
Erreur “incorrect password or unknown username” > vérifier que le mot de passe des utilisateurs potentiels a été entré, cf. smbpasswd ci-dessus.
Le partage peut également être fait à partir de Konqueror : pointer le fichier, click droit, propriétés, partage ; mais c'est finalement plus compliqué et moins précis dans les permissions que d'éditer le fichier smb.conf.
Netatalk
http://www.megaoctet.net/howto_netatalk.pdf
http://www.mandrakeuser.org/docs/connect/cnatalk.html
http://netatalk.sourceforge.net/faq.php
Paramétrage et utilisation de netatalk
Démarrer/arrêter le serveur …
service atalk start
restart
stop
status
Pour savoir si netatalk fonctionne et avoir la liste des MACS accessibles :
nbplkup
Le service est très long à démarrer (~ 30 secondes). Pour éviter d'avoir à attendre lors du reboot de la machine changer dans /etc/netatalk/netatalk.conf :
ATALK_BGROUNDno en ATALK_BGROUNDyes
Les services :
papd: AppleTalk printer daemon (pap Printer Access Protocol)
atalk: atalk - AppleTalk protocol family
atalkd - AppleTalk RTMP, NBP, ZIP and AEP manager
RTMP - Routing Table Maintenance Protocol
NBP - Name Binding Protocol
ZIP - Zone Information Protocol
AEP - AppleTalk Echo Protocol
afpd: AFP AppleTalk Filing Protocol
Configuration
Fichiers de configuration dans /etc/netatalk
Autoriser l'accès aux répertoires
———————————
/etc/netatalk/AppleVolumes.default
Créer sur le serveur un/des volume(s) accessibles par les Mac → ajouter dans le fichier /etc/netatalk/AppleVolumes.default
#Nom du partage sur le serveur Nom du partage présenté au Mac login des utilisateurs et/ou groupes autorisés
/shares/Mac_Pub “Zone commune MAC-PC” allow:toto, groupe_truc
Autoriser la connexion en “guest (invité)
—————————————–
/etc/netatalk/afpd.conf
Ajouter :
-uamlist uams_guest.so
dans le fichier de configuration /etc/netatalk/afpd.conf
Autoriser l'accès avec login et mot de passe
——————————————–
Créer (ou utiliser le login d') un utilisateur Linux (# userdrake)
Le mot de passe pour netatalk est celui de cet utilisateur
NB : dans l'installation du rpm netatalk-1.6.4xxx.mdk la ligne (dans le fichier /etc/netatalk/afpd.conf) :
- -transall -uamlist uams_dhx.so -nosavepassword
désactive le mot de passe en clair ce qui fait que sans ajout sur les Macs des outils ad-hoc de cryptage il est impossible de se connecter.
Pas très sécurisé, mais acceptable derrière un firewall : mettre en commentaire la ligne
(les valeurs par défaut :
- -transall -uamlist uams_clrtxt.so,uams_dhx.so -nosavepassword
sont alors utilisées)
Droits d'accès
————–
Ne pas oublier d'autoriser l'accès à ce(s) volume(s) :
→ mettre les droits ad-hoc sur le(s) volume(s) partagé(s)
Interdire l'accès au Home directory
———————————–
/etc/netatalk/AppleVolumes.default
Dans AppleVolumes.default, en fin de fichier supprimer ou mettre en commentaire le ~
Ports utilisés par AppleTalk
—————————-
cat /etc/services | grep -i apple
at-rtmp 201/tcp # AppleTalk routing
at-nbp 202/tcp # AppleTalk name binding
at-echo 204/tcp # AppleTalk echo
at-zis 206/tcp # AppleTalk zone information
echo 4/ddp # AppleTalk Echo Protocol
Installation de netatalk (netatalk-2.0.1) sur MDK 9.1 (et autres versions de MDK ?)
- Télécharger la dernière version de netatalk (en l'occurrence netatalk-2.0.1.tar.bz2) sur :
http://netatalk.sourceforge.net/
- Décompresser :
tar -jxvf netatalk-2.0.1.tar.bz2
Le mode d'emploi (mal foutu, opinion personnelle) est dans netatalk-2.0.1/doc
- Installer Berkeley DB
Comme indiqué dans la doc de netatalk Berkeley DB version 4.1.25 ou 4.2.52 doivent être présents. Si ce n'est pas le cas, récupérer les sources (db-4.2.52.tar.gz) sur le site http://www.sleepycat.com/download/db/index.shtml
Décompresser.
Lire la doc : son installation est très bien expliquée et ne pose aucun problème.
NB : j'ai essayé la dernière version Berkeley DB (4.3) : netatalk-2.0.1 la refuse à la compilation.
- Installer netatalk :
# ./configure –with-bdb/usr/local/BerkeleyDB.4.2/include –enable-redhat
* Avec –with_bdb il faut passer le path du répertoire contenant db.h (sinon on obtient un message d'erreur indiquant que Berkeley DB n'a pas été trouvé)
* Configurer avec –enable-redhat ce qui permet une installation des scripts de démarrage au bon endroit (/etc/rc.d/init.d/)
Puis
# make
# make install
Le login et le mot de passe sur Apple sont ceux d'utilisateurs déclarés sur la machine Linux.
Ne pas oublier de mettre les bons droits d'accès (Linux) sur les partages qui sont déclarés dans AppleVolumes.default.
Les fichiers de configuration sont dans /usr/local/etc/netatalk (et non pas dans /etc/netatalk) comme avec la version rpm de netatalk-1.6xxx.
Configurer les fichiers AppleVolumes.default et afpd.conf à sa convenance :
- afpd.conf
On peut laisser tout en commentaires comme ci-dessous ou modifier la dernière ligne à sa convenance :
# default:
# - -transall -uamlist uams_clrtxt.so,uams_dhx.so -nosavepassword
- netatalk.conf
Pas grand chose à modifier non plus, si ce n'est supprimer éventuellement des services inutiles et mettre :
# Control whether the daemons are started in the background
ATALK_BGROUNDyes
pour éviter l'attente (~ 30 sec) au démarrage des services netatalk.
- AppleVolumes.default
Y déclarer les volumes à partager (1 ligne unique par volume) de la façon suivante :
/chemin/vers/partage “partage sur monserveur” allow:toto, groupe_truc dbpath:/chemin/vers/partage
* /chemin/vers/partage : chemin vers le volume accessible
* “partage sur monserveur” : chaîne de caractères qui s'affiche sur le mac, à mettre entre ”” s'il y a des espaces
* allow:toto, groupe_truc : utilisateurs et groupes autorisés
* dbpath:/chemin/vers/partage : emplacement où netatalk crée automatiquement un répertoire .AppleDB dans lequel il stocke les bases de données.
ATTENTION !!!
Pour une raison incompréhensible il existe déjà un répertoire .AppleDB à cet endroit (avec les droits rw pour les utilisateurs déclarés) qui bloque la connexion à /chemin/vers/partage !? Le partage apparaît dans le sélecteur du Mac mais il n'est pas possible d'y accéder (partage en grisé non cliquable ou message d'erreur).
Ma solution : renommer .AppleDB en n'importe quoi (.AppleDB.bak par exemple) et mettre comme cible de dpath /chemin/vers/partage : un nouveau .AppleDB est recréé au même endroit et tout fonctionne correctement.
(Re)lancer netatak :
# service atalk restart
Gravure de CD et images iso
Visualiser le contenu d'une image iso
————————————-
mount -t iso9660 -o ro,loop/dev/loop0 cd_image /mnt/disk
Créer une image iso
——————-
mkisofs -o NomDuFichier.iso -v -R -J -force-rr -iso-level 4 NomDuRepertoireàTraiter
-v verbose
-R extension rockridge
-J extension Joliet
-force-rr pour que Nero veuille bien graver l'image !!
-iso-label 4 : moins de limitations (cf man mkisofs)
Attention : les caratères que mkisofs ne sait pas interpéter (é par exemple) dans les noms de fichiers ou répertoires sont remplacés par _ ! Voir le man mkisofs à charset
Graver une image iso
——————–
Pour afficher le(s) périphériques de gravure SCSI (inscrire la valeur retournée dans dev ci-dessous) :
cdrecord -scanbus
dans le cas d'un graveur ATA :
cdrecord devATA -scanbus
Effacer un CDRW (attention à la vitesse !) :
cdrecord -v speed4 dev0,3,0 blankfast
cas d'un graveur ATA :
cdrecord -v speed4 devATA:0,3,0 blankfast
Graver une image iso (cd_image)
cdrecord -v speed4 dev0,3,0 -data cd_image
cas d'un graveur ATA :
cdrecord -v speed4 devATA:0,3,0 -data cd_image
Contrôler l'image gravée
————————
Monter l'image iso et le CD :
mount -t iso9660 -o ro,loop/dev/loop0 cd_image /mnt/disk
mount -t iso9660 /dev/hda /mnt/cdrom
Contrôler avec diff ou kdiff :
diff /mnt/disk /mnt/cdrom &
kdiff3 /mnt/disk /mnt/cdrom &
Contrôler une image iso téléchargée
———————————–
md5sum -c NomDuFichierContenantLaSommeDeControle
Créer une somme de contrôle d'un fichier
—————————————-
md5sum NomDuFichier > NomDuFichierContenantLaSommeDeControle
Logiciel graphique de gravure
—————————–
k3b
Créer un DVD à partir de plusieurs images iso
cf. http://pagesperso.laposte.net/multipotes/article.php3?id_article136
Installation/désinstallation de paquetages, mises à jour
http://lea-linux.org/software/rpm.php3
http://www.urpmi.org/fr/urpmi_first_fr.php
http://personal.riverusers.com/~thegrendel/build-4.html#ss4.1 (Whats wrong with rpms?)
rpm, urpm*
urpmi
—–
Configurer les sources : plusieurs méthodes :
- http://easyurpmi.zarb.org
- K → Configuration → Packaging → Software source manager
Par exemple menu remove medium pour retirer un CD
- urpmi.setup :
Pour recharger un CD :
urpmi.addmedia CD1_MK9 removable:mnt/cdrom_ide /var/lib/urpmi
cf. #urpmi.addmedia
Pour ajouter une source ftp (ou http)
urpmi.addmedia contrib ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrake/9.0/contrib/RPMS
Pour mettre à jour la base des sources
# urpmi.update –all (urpmi.update -a sous MDK10)
Pour installer un paquetage
—————————
Exemple
#urpmi kdenet
(recherche les paquets qui contiennent “kdenet”)
The following packages contain kdenet: kdenetwork-devel kdenetwork kdenetwork-kppp
#urpmi kdenetwork
et répondre aux questions
Pour installer automatiquement les mises à jour
———————————————–
# urpmi –auto-select
Pour contrôler si l'installation s'est bien passée
—————————————————
# less /var/log/urpmi.log
Faire une base locale de mises à jour
————————————-
Le but est double :
1 - pouvoir faire les mises à jour sur des PCs non connectés au réseau
ou avec une connection trop lente pour être utilisable
2 - pouvoir, lors d'une installation de machine, charger les
mises à jour de sécurité avant de la connecter au réseau : ça permet
d'éviter son piratage éventuel alors qu'elle est encore vulnérable.
Les étapes :
1 - récupérer le répertopire ad hoc (actuellement /mandrake/updates/9.1/RPMS)
à l'aide de wget directement sur un support amovible (ou sur un disque dur, puis graver un CD)
2 - Démonter le support amovible, le monter sur la machine à mettre à jour
3 - Mettre à jour la base urpmi avec urpmi.update
4 - Faire les mises à jour des logiciels avec urpmi –auto-select
En détail
1 - Récupérer sur l'un des nombreux serveurs disponibles les rpms des mises à
jour à l'aide de wget :
$ wget -mirror -P /mnt/disk -nH –cut-dirs3 ftp://NomDuServeurFTP/pub/linux/distributions/mandrake/updates/9.1/RPMS
avec :
-mirror pour créer localement un “mirroir” du répertoire RPMS du serveur.
Avantage : si on lance à nouveau cette commande, seuls les fichiers nouveaux
ou modifiés sont transférés
-P /mnt/disk pour écrire à un endroit donné (ici un support amovible monté en /mnt/disk)
-nH et –cut-dirs options facultatives :
-nH pour effacer le nom du serveur de l'arborescence créée
–cut-dirs3 pour effacer /pub/linux/distributions de l'arborescence créée
Dans cet exemple l'ajout de -P et –cut-dirs permet de simplifier l'arborescence créée en :
/mnt/disk/mandrake/updates/9.1/RPMS
au lieu de :
/mnt/disk/NomDuServeurFTP/pub/linux/distributions/mandrake/updates/9.1/RPMS
2 - Démonter le disque amovible et le monter sur la machine à mettre à jour de façon à avoir (par
exemple) les rpms dans :
/mnt/disk/mandrake/updates/9.1/RPMS
3 - Ajouter le répertoire contenant les rmps à la base urpmi
Ca peut se faire soit en mode graphique, soit en ligne de commande :
Mode graphique :
K → Configuration → Packaging → Software Sources Manager
et ajouter le répertoire contenant les rpms dans les sources à utiliser, dans cet exemple :
/mnt/disk/mandrake/updates/9.1/RPMS
Mode ligne de commande :
# urpmi.addmedia updates file:/mnt/disk/mandrake/updates/9.1/RPMS
Puis mettre à jour la base :
# urpmi.update updates
4 - Faire toutes les mises à jour en mode automatique :
# urpmi –auto-select
Les fichiers “hdlist” ne sont pas indispensables : urpmi.update les crée.
Ceci dit, on peut les récupérer sur le serveur dans /9.1/base. Dans ce cas les
ajouter (ici hdlist.cz) :
# urpmi.addmedia updates file:/mnt/disk/mandrake/updates/9.1/RPMS with ../base/hdlist.cz
Sinon on peut les créer, avec la commande :
$ genhdlist nom_du_répertoire
Attention : les hdlists vont dans le répertoire contenant les rpms.
Il ne semble pas y avoir d'option dans genhdlist pour rediriger les fichiers créés
dans un répertoire “base” : le faire “à la main”.
Dans les messages urpmi
———————–
ETA Estimated Time of Arrival
Vérifier qu'un paquetage est bien installé
rpm -V NomDuPaquet
Rechercher et desinstaller un package
————————————-
> rpm -qa |grep nuke
PHP-nuke-6.0-1mdk
> rpm -e foo ← désinstalle le package foo-x.y.rpm
Remplacer, mettre à jour une package
————————————
rpm -Uvh foo ← installe ou remplace
rpm -Fvh foo ← remplace (mise à jour d'une version préexistante)
Remet une package plus ancien :
rpm -Uvh –replacepkgs –nodeps –oldpackage foo.rpm
Installation de programmes à partir des sources
Ne jamais installer de programme à partir des sources dans /usr (destiné aux programmes de la distribution). les installer dans /usr/local
Cygwin
Récupération/installation de Cygwin
———————————–
Cf. http://people.via.ecp.fr/~alexis/formation-linux/outils-windows.html
Cygwin disponible sur de nombreux sites, par exemple :
http://xfree86.cygwin.com
http://www.cygwin.com
En bref :
Cliquer sur l'icône “Install Cygwin now” en haut à droite de la page web, ce qui permet de télécharger setup.exe
L'exécuter : c'est le programme qui permet de récupérer et d'installer Cygwin.
Passer la 1° page puis sélectionner “Install from Internet”.
Page suivante sélectionner le répertoire d'installation (root directory).
Page suivante sélectionnez le répertoire dans lequel seront écrits les fichiers téléchargés.
Deux pages plus loin, sélectionner un miroir dans la liste.
La liste des packages disponibles s'affiche : 4 possibilités
- Default
- Install
- Reinstall
- Uninstall
Au début tout est à “Default”. Rajouter les packages nécessaires, par exemple net/ssh, rsync, X11, etc.
<Next> provoque le téléchargement et l'installation des packages sélectionnés, leur configuration, la mise à jour du menu “Démarrer” et une icône Cygwin est mise sur le bureau.
Installation/configuration de SSH et SSHD
—————————————–
cf. http://pigtail.net/LRP/printsrv/cygwin-sshd.html
Nb : il faut avoir sélectionné et installé net/ssh, cf. ci-dessus
- Ajouter à W$ une variable d'environnement et modifier le path :
Clic droit sur My Computer, puis Properties/Advanced/Environment Variables
User ou System variables/new > CYGWINntsec tty
User ou System variables/Path/Edit > ajouter c:\cygwin\bin
Cà permet de lancer une commande UNIX directement à partir d'une fenêtre dos (et non pas seulement à partir de la fenêtre cygwin)
- Lancer ssh-host-config et répondre de la façon suivante aux questions :
privilege separation > yes
local user > yes
install sshd as a service > yes
CYGWIN > ntsec tty
- Lancer le daemon sshd :
net start sshd
ou
cygrunsrv –start sshd
- Stopper le daemon sshd
net stop sshd
ou
cygrunsrv –stop sshd
- Tester le fonctionnement de sshd
telnet 127.0.0.1 22
ou
ssh $USERNAME@127.0.0.1
à partir d'une machine distante :
telnet adresse_PC_W$ 22
ou
ssh utilisateur@adresse_PC_W$
Si ça ne fonctionne pas, voir si ce n'est pas un problème de firewall.
Dans le cas de Kerio :
Network Security/Applications, x:\cygwin\usr\sbin\sshd.exe, mettre “ask” ou “permit” au moins pour Trusted/In
- ssh-user-config
Cette commande permet de générer facilement le couple clé privée/publique
Alias
—–
Le fichier ~.bashrc contient un ensemble d'alias très intéressants (mais en commentaires).
Editer le fichier et mettre les alias de son choix (alias rm'rm -i' en particulier !)
Version de cygwin installée
—————————-
uname
cygcheck
Lancer le mode graphique
————————
- Un serveur X windows nu, avec juste une console texte
$ xinit &
Lancer ensuite le gestionnaire de fenêtres de son choix :
$ twm &
ou wmaker &
- Ou bien un serveur X windows avec un gestionnaire de fenêtres (twm est lancé par défaut) :
$ startx &
Et éventuellement une autre session X-Windows :
$ startx – :1
Changer d'environnement graphique
———————————
Lancer le mode graphique (twm est installé par défaut) : startx &
Editeur en mode graphique : nedit
Pour lancer windowmaker à la place de twm :
$ nedit /etc/X11/Xinit/xinitrc
faire une sauvegarde de xinitrc en xinitrc.twm
remplacer twm par wmaker
enregistrer sous le nom xinitrc
Relancer le mode graphique par startx.
Se connecter à un UNIX distant en mode sécurisé (texte uniquement)
—————————–
$ ssh -l utilisateur nom_ou_n°IP_machine
ou bien :
$ ssh utilisateur@nom_ou_n°IP_machine
Se connecter en mode graphique sécurisé à un UNIX distant
—————————–
$ ssh -X -l utilisateur nom_ou_n°IP_machine
ou bien :
$ ssh -X utilisateur@nom_ou_n°IP_machine
A partir de là, si KDE est installé sur l'Unix distant (Linux Mandrake dans mon cas)
on peut lancer différents programmes, par exemple :
$ kwrite &
$ konqueror &
$ kmail &
Toutes les étapes pour avoir en local un KDE distant
—————————————————-
Démarrer cygwin, puis :
$ xinit &
$ ssh -X utilisateur@machine_distante &
$ /usr/bin/startkde -display localhost &
Clipboard
———
Pour des copies entre windows et unix et vice-versa :
$ xwinclip &
Existe aussi en paramètre à passer à XWin.exe, cf. doc cygwin-xfree-ug
Configuration de la session root de KDE pour qu'elle se comporte comme une session ordinaire
Configuration/KDE/LookNFeel/Behavior
Configuration/KDE/Accessibility/Keyboard Shortcuts
Configuration/KDE/Peripherals/Mouse
Browsers
Mozilla, Thunderbird
Taper dans la ligne d'adresse :
about:config → Infos sur la configuration
about:plugins → plugins installés
about:aboutbuildconfig → infos sur les compilateurs utilisés
Installation/désintallation de Mozilla, Firefox et thunderbird
Firefox
——-
Aucune indication incluse dans le fichier téléchargé > voir la doc sur http://www.mozilla.org/ :
Installation :
tar -xzvf firefox-1.0.installer.tar.gz
cd firefox-installer
./firefox-installer
et suivre les instructions qui s'affichent. Choisir le mode d'installation “custom” et indiquer comme répertoire d'installation (par exemple) “/opt/firefox”
Pratique : mettre firefox dans la barre de tâches (drag&drop) ; l'icone est dans /opt/firefox/chrome/icons/default/
Désinstallation :
Pas d'indication précise sur le site Mozilla : sans doute supprimer /usr/share/firefox/ ?
Le profil utilisateur peut être gardé ou effacé au choix : il est dans ~/.mozilla/firefox
Thunderbird
———–
Pas d'installateur.
Sous root, lancer konqueror, cliquer sur le tarball (thunderbird-xxx.tar.gz)
Copier le répertoire thunderbird qui apparaît
Le coller dans (par exemple) /opt
Comme pour firefox ci-dessus mettre thunderbird dans la barre de tâches.
L'icône de thunderbird est dans /opt/thunderbird/chrome/icons/default/ : prendre l'icône messengerWindow.xpm
Configuration :
tous les dossiers distants n'apparaîssent pas automatiquement : pour les faire apparaître, click droit sur inbox (ou un des sous dossiers), menu subscribe, développer l'arborescence et cocher les sous-menus dont le contenu doit apparaître.
Mozilla
——-
cf http://www.mozilla.org/releases/mozilla1.7/installation.html#linux
Récupérer Mozilla (actuellement mozilla-i686-pc-linux-gnu-1.7.6-installer.tar.gz)
tar -xzvf mozilla-i686-pc-linux-gnu-1.7.6-installer.tar.gz
cd mozilla-isntaller
./mozilla-installer
et suivre les instructions
Désinstallation :
Supprimer le répertoire où est installé Mozilla (par oexemple /opt/Mozille)
Supprimer éventuellemnt ~/.mozilla directory (profil utilisateur)
Plugins
Plugin java
————
Télécharger le plugin sur http://www.java.com/en/ (actuellement jre-1_5_0_02-linux-i586.bin)
L'exécuter : il se décompresse localement dans un répertoire “jre1.5.0_02”
Déplacer ce répertoire dans un endroit qui convient (/opt/java/ par exemple)
Implémentations “open source” de Java
————————————-
kaffe, japhar
cf. http://java.oreilly.com/news/freejava_0498.html
blackdown ?
Activation de java dans mozilla et firefox
——————————————
D'après les docs “officielles” SUN et Mozilla
1 - créer un lien soft vers le plugin ; dans le cas de jre1.5.0_02, par exemple, en étant positionné dans l'un des répertoires “plugins” de mozilla ou de firefox
(mozilla/plugins
firefox/plugins
~/mozilla/plugins) :
ln -s /opt/java/jre1.5.0_02/plugin/i386/ns7/libjavaplugin_oji.so
2 -Vérifier que dans la config de ces logiciels java soit autorisé :
Firefox : Edit/Preferences/WebFeatures
Mozilla : Edit/Preferences/Advanced/Scripts & Plug-ins
3 - tester si ça fontionne sur :
http://java.com/en/download/help/testvm.xml
NB :
1 - les docs précisent qu'il faut impérativement créer un lien et non mettre une copie du plugin dans le répertoire plugins.
2 - la création d'un lien par drag'n drop sous konqueror ne fonctionne pas : mozilla et firefox ne veulent plus se lancer.
3 - utiliser le plugin qui se trouve dans i386/ns7 et non pas dans i386/ns7-gcc29 : ce dernier est pour une utilisation avec de vieilles versions de mozilla et firefox compilées avec gcc avant les versions 3.xxx
Pour connaître la version de gcc utilisée pour compiler ces browsers, taper about:aboutbuildconfig dans la ligne d'adresse.
4 - La procédure ci-dessus ne fonctionne pas à tous les coups : il semble que mozilla et/ou firefox ne trouvent pas le path vers l'exécutable “java” (/opt/java/jre1.5.0_02/bin/). Solution ?
Activation de java dans konqueror
———————————
Plus simple et plus logique que pour mozilla/firefox
- Settings/Configure/Java & JavaScripts :
En bas de fenêtre, dans “Path to java executable, or 'java' indiquer /chemin_complet_vers/programme_java (par exemple /opt/java/jre1.5.0_02/bin/java)
- Settings/Configure/Plugins :
indiquer le(s) répertoire(s) à scanner pour trouver le plugin java .so ad-hoc (par exemple /opt/java/jre1.5.0_02/plugin/i386/ns7). Si ce répertoire n'est pas encore dans la liste affichée (quasi certain dans l'exemple donné) cliquer ensuite sur “Scans for New Plugins”.
java
Les exécutables java ne fonctionnent pas
————————————
Définir dans ~/.bash_profile le chemin vers jre/bin, par exemple :
#JAVA
JAVA_HOME/opt/java/jre1.5.0_02
export JAVA_HOME
PATH$PATH:$JAVA_HOME/bin
export PATH
Puis exécuter
source ~/.bashrc
pour que les modifications soient prises en compte.
Pour ajouter le même PATH à tous les utilisateurs
———————————————-
/etc/profile exécute 1 à 1 les fichiers qui se trouvent dans le répertoire
/etc/profile.d
Donc créer dans ce dernier les 2 scripts (rwxr-x-r root root) suivants :
jre-1.5.sh :
#!/bin/bash
JAVA_HOME”/opt/java/jre1.5.0_02/“
export JAVA_HOME
export PATH”$PATH:$JAVA_HOME/bin“
jre-1-5.csh :
setenv JAVA_HOME ”/opt/java/jre1.5.0_02/“
setenv PATH “$PATH:$JAVA_HOME/bin”
Affecter à ces 2 fichiers les bons droits et propriétaires :
chmod 755 jre-1.5.*
chown root:root jre-1.5.*
et mettre à jour :
source /etc/profile
ou ouvrir une autre session
Tester le fonctionnement des applets java :
—————————————–
http://java.com/en/download/help/testvm.xml
Installation du SDK (j2sdk-1_4_2_07-nb-4_0-bin-linux.bin)
———————————————————
http://java.sun.com/j2se/1.4.2/download.html
Exécuter :
./j2sdk-1_4_2_07-nb-4_0-bin-linux.bin
Répondre aux questions
Ca se termine par :
JSE Developpement kit 1.4.2_07 installation location
/opt/java/j2sdk1.1.2_07
To run IDE lanch:
/opt/java/netbeans-4.0/bin/netbeans
To uninstall the IDE lanch:
/opt/java/netbeans-4.0/_uninst/unistaller
To uninstall the J2SE Development Kit 1.4.2_07 launch:
/opt/java/j2sdk1.4.2_07/_uninst/unistall.sh
Installation du SDK (j2eesdk-1_4_01_2005Q1-linux.bin)
—————————————————–
Exécuter :
./j2eesdk-1_4_01_2005Q1-linux.bin
En cas de message d'erreur :“error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file…” installer libstdc++ (suffisant : l'erreur concernant libc6.2-2.so disparait ; de toutes façons il n'y a pas actuellement de rpm pour libc6).
L'installation se termine par :
-Access the About Application Server PE 8 welcome page at:
SUNWappserver/docs/about.html
- Start the Application Server by executing:
SUNWappserver/bin/asadmin start-domain domain1
- Start the Admin Console:
http://localhost:4848
- Access sample applications:
http://localhost:8080/samples/index.html
PHP
Affichage des infos
——————-
PHP étant installé, l'affichage des infos se fait au moyen d'une page html contenant :
<?php phpinfo(); ?>
>
1 - voir ci-dessus Apache “Autoriser l'accès local à un répertoire”, par exemple “toto”
2 - mettre dans ce répertoire (ou un sous-répertoire à condition d'avoir mis les autorisations ad-hoc) un fichier “InfosPHP.php” contenant juste :
<?php phpinfo(); ?>
3 - http://locatlhost/toto
et cliquer sur InfosPHP.php
Bases de données
Mysql
Doc : http://dev.mysql.com/doc/mysql/en/index.html
http://dev.mysql.com/doc/mysql/fr/index.html
Se connecter
$ mysql -h localhost -u joe -p
$ mysql -p
NB : -h localhost et -u joe sont facultatifs : en leur absence c'est localhost et l'utilisateur qui lance la commande mysql qui sont pris par défaut.
- p pour qu'au démarrage de mysql le mot de passe soit demandé
Version, aide en ligne
Lancer simplement mysql :
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.5-gamma
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SHOW DATABASES; liste les DB $ mysqlshow -u root -p ” mysql> SHOW TABLES FROM toto; liste les tables contenues dans la DB toto
mysql> SELECT DATABASE(); affiche la DB actuellement sélectionnée (NULL si aucune DB est sélectionnée) mysql> USE toto Sélectionne la DB toto
mysql> CREATE DATABASE toto; Crée la DB toto mysql> DESCRIBE toto; Affiche la structure de la table toto mysql> DROP DATABASE toto; Supprime la DB toto
Sécurité Afficher les utilisateurs :
mysql> SELECT Host, User FROM mysql.user; +———–+——+
Host | User |
+———–+——+
localhost | |
localhost | root |
+———–+——+ La ligne où user est vide correspond à un accès anonyme avec les pleins droits !
supprimer le compte anonyme :
——————————– mysql> DELETE FROM mysql.user WHERE User ''; suppression mysql> FLUSH PRIVILEGES; mise à jour
Assigner un mot de passe chiffré :
Plusieurs commandes possibles : SET PASSWORD mysql> SET PASSWORD FOR 'root'@'localhost' PASSWORD('mot_de_passe'); mysqladmin $ mysqladmin -u root password “mot_de_passe” $ mysqladmin -u root -h nom_ou_IP_machine password “mot_de_passe” UPDATE mysql> UPDATE mysql.user SET Password PASSWORD('mot_de_passe')
mysql> FLUSH PRIVILEGES;
Vérifier la mise en place du mot de passe
mysql> SELECT Host, User, password FROM mysql.user;
Se connecter apès avoir mis un mdp
$ mysql -h host -u user -p Se connecter apès avoir mis un mdp Enter password:
Ajouter un utilisateur
Utilisateur pouvant se connecter à partir de localhost avec tous les droits : mysql> GRANT ALL PRIVILEGES ON *.* TO 'utilisateur'@'localhost'
Utilisateur pouvant se connecter à partir de n'importe où avec tous les droits : remplacer TO 'utilisateur'@'localhost' par TO 'utilisateur'@'%'
Installation de phpMyAdmin
Voir documentation phpMyAdmin
- Récupérer la dernière version sur le site http://www.phpmyadmin.net/ ] - Décompresser :
tar zxvf phpMyAdmin_x.x.x.tar.gz
- Mettre le dossier dans (sous) la racine du serveur web (/var/www/html), ou dans un répertoire accessible par apache (cf. Apache, alias) - Configurer (fichier config.inc.php) compléter: $cfg['PmaAbsoluteUri'] 'http://localhost/phpMyAdmin-2.6.0-pl3/'; $cfg['PmaAbsoluteUri_DisableWarning'] TRUE; $cfg['Servers'][$i]['host'] 'localhost';
Sécurisation
Pour qu'apache présente une fenêtre login/password :
1 - fichier config.inc.php : remplacer config par http: $cfg['Servers'][$i]['auth_type'] 'http';
2 - Créer un fichier de mots de passe utilisable par apache : cf. documentation apache : file:/usr/share/doc/apache2-manual-2.0.50/howto/auth.html Créer le fichier de mots de passe n'importe où (éviter de le mettre sous /var/www/html qui est la racine du serveur web sous Mandrake, lisible sauf précautions particulières (.htaccess) par tout le monde). Le placer par exemple dans la zone de fichiers de configuration d'apache (/etc/httpd). Créer par exemple un dossier spécial : # mkdir /etc/httpd/passwd Puis créer (-c) avec l'utilitaire (apache) htpasswd un fichier de mots de passe avec un nom quelconque (ici par exemple .htpasswd). Ici pour l'utilisateur root : # htpasswd -c /etc/httpd/passwd/.htpasswd root répondre par le mot de passe à utiliser pour root (NB : pour que le nouvel utilisateur soit pris en compte par apache il est nécessaire de redémarrer apache (service httpd restart). Ici ce n'est pas utile : il sera redémarré au point 4 Pour ajouter un nouvel utilisateur, même commande, mais ATTENTION ! sans -c, sinon le fichier de mots de passe est effacé)
3 - Indiquer à apache où se trouve ce fichier de mots de passe : Dans le fichier de configuration d'apache /etc/httpd/conf/commonhttpd.conf, rajouter dans la partie notée :
# Each directory to which Apache has access, can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories).
et sous :
#<Directory /> # Options -Indexes FollowSymLinks # AllowOverride None #</Directory>
les directives suivantes :
<Directory “/var/www/html/phpMyAdmin-2.6.0-pl3”>
AuthType Basic AuthName "Accès à phpMyAdmin" AuthUserFile /etc/httpd/passwd/.htpasswd Require user root
</Directory>
Explication : <Directory “/var/www/html/phpMyAdmin-2.6.0-pl3”> indique quel répértoire est concerné (celui
qui contient phpMyAdmin) AuthType Basic type d'identification Basic : le mot de passe circule en clair Digest : le mot de passe est transmis crypté : n'est supporté que par les clients web les plus récents : OK avec konqueror Ne fonctionne pas avec Mozilla 1.7.2 et Firefor 0.9.3 AuthName "Accès à phpMyAdmin" Invite affichée dans la fénêtre de demande de login/mot de passe AuthUserFile /etc/httpd/passwd/.htpasswd /path/vers/le/fichier_de_mots_de_passes Require user root utilisateur autorisé
</Directory>
4 - Relancer apache (service httpd restart) pour que les nouvelles directives soient prises en compte
5 - Si on veut indiquer non plus un utilisateur, mais un (ou des) groupes d'utilisateurs <Directory “/var/www/html/phpMyAdmin-2.6.0-pl3”>
AuthType Digest AuthName "Accès à phpMyAdmin" AuthUserFile /etc/httpd/passwd/.htpasswd AuthGroupFile /etc/httpd/passwd/groups Require group Nom_du_groupe
</Directory>
Explication :
AuthGroupFile /etc/httpd/passwd/groups groups : nom du fichier (il peut être quelconque) où sont définis un (ou des) groupe(s)
Dans le fichier texte “groups” définir les groupes de la facon suivante : Nom_du_groupe: user4 user6 user25
Pour d'autres possibilités de sécuriser l'accès au serveur web, voir la documentation apache : file:/usr/share/doc/apache2-manual-2.0.50/howto/auth.html plutôt bien faite.
Installation/configuration de PostgreSQL
http://www.postgresql.org http://www.postgresqlfr.org/?qnode/view/33 (Tutoriel pour installer PostgreSQL et pgacces sous Mandrake et paramétrer les logiciels pour qu'ils fonctionnent ensemble) Groupes de discussion : http://archives.postgresql.org/pgsql-admin/
Installer le rpm MDK Lors de l'installation du rpm un user “postgres” est créé sans mot de passe (!) avec la configuration suivante :
User: postgres Home directory: /var/lib/pgsql Default shell: /bin/bash
Lui assigner un mot de passe avec les commandes sous root : # userdrake (si postgres n'apparaît pas > menu/Options/Filter system/users) ou # passwd postgres
Lancer postgresql, vérifier si postgresql est lancé :
# service postgresql status postmaster (pid 4037 4036 4032) is running…
Lancer (start) ou relancer (restart) # service postgresql restart
[ OK ]
Starting postgresql service: [ OK ]
Ou bien : # /etc/rc.d/init.d/postgresql start
Autre possibilité (cf. pg_ctl –help) pg_ctl start -D /var/lib/pgsql/data
NB : pour autoriser l'accès au serveur via le réseau (localhost y compris) 2 possibilités : - mettre tcpip_socket true dans /var/lib/pgsql/data/postgresql.conf - ou bien rajouter l'option -i à pg_ctl.
Sécuriser le compte postgres
Par défaut postgres n'a pas de mot de passe non plus au niveau de la base. Pour créer ce mot de passe : # psql template1 postgres … template1# SELECT * from pg_shadow ; … template1# UPDATE pg_shadow SET passwd 'mon_mdp';
Pour voir si le mdp a bien été entré : template1# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ———-+———-+————-+———-+———–+———+———-+———– postgres | 1 | t | t | t | mon_mdp | | toto | 1 | t | t | t | mon_mdp | |
Attention : cette commande met tous les mots de passe à la même valeur ! Utiliser plutôt : template1# ALTER USER toto WITH PASSWORD 'fifi' ; et vérifier : template1# SELECT * from pg_shadow WHERE usename 'toto';
Pour que le mot de passe soit inséré (et apparaisse) crypté et non pas en clair, ouvrir /var/lib/pgsql/data/postgresql.conf et dans : # - Security & Authentication - mettre : password_encryption true puis relancer postgresql
Aide en ligne psql : \h \h commande
Pour quitter psql : template1# \q;
Créer un utilisateur
su postgres createuser MonNom Attention : le mot de passe demandé est celui de postgres dans la BD et non pas le mot de passe de l'utilisateur unix postgres. createuser ne permet pas non plus d'affecter un mot de passe au nouvel utilisateur. Pour lui créer un mot de passe : $ psql template1 -U postgres template1# ALTER USER MonNom WITH PASSWORD 'MonMotdePass' ; et pour vérifier : template1# SELECT USER MonNomU from pg_shadow ;
Vérifier où MDK a installé les fichiers de configuration de postgresql
# find / -name pg_hba.* /usr/share/pgsql/pg_hba.conf.sample /var/lib/pgsql/data/pg_hba.conf
les fichiers de configuration sont dans /var/lib/psql/data
Ou bien installer Posgresql à partir des sources Récupérer les sources sur http://www.postgresql.org/ Les décompresser : # tar -zxvf postgresql-xxx.tar.gz Les possesseurs et groupes des fichiers sont rpc:rpc !? # chown -Rv root:root postgresql-xxx.tar.gz
L'installation est très bien expliquée dans le fichier INSTALL : ./configure gmake su gmake install adduser postgres mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 & /usr/local/pgsql/bin/createdb test /usr/local/pgsql/bin/psql test
Ici le programme s'installe dans /usr/local/pgsql /var/lib/pgsql/
Pour pouvoir démarrer et stopper le serveur avec la commande “service postgresql”, récupérer dans les sources le script “linux.sh”. Il permet aussi de lancer automatiquement Postgresql au démarrage du PC et l'arrêter lors de l'arrêt du PC. Ce script est situé dans le répertoire :contrib/start-scripts, a partir de la racine de l'archive. Placer ce fichier dans /etc/init.d/, le renommer “postgresql”. Consulter la doc très claire, contenue dans le script, pour le configurer correctement.
Configurer postgresql *
Fichier /var/lib/pgsql/data/pg_hba.conf (“postgresql host-based authentication”)
cf.http://www.postgresql.org/docs/7.3/static/client-authentication.html Pour commencer mettre des autorisations assez permissives, par exemple : # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD local all all trust host all all 127.0.0.1 255.255.255.255 trust
ce qui signifie :
accès : local (à partir du PC) ou host (à partir du réseau, y compris localhost) bases de données : all accès à toutes les bases de données utilisateurs : all tous méthode d'identification : trust : accepte tout utilisateur sans mot de passe
Puis limiter l'accès au strict minimum nécessaire, par exemple : local all truc, postgres md5 host all truc, postgres 127.0.0.1, machine.fr 255.255.255.255 md5
soit accès permis seulement aux utilisateurs “truc” et “postgres” en local ou par réseau (localhost et machine.fr uniquement), avec mot de passe obligatoire crypté md5.
Fichier /var/lib/pgsql/data/postgresql.conf
tcpip_socket true port 5432 (ou un autre port de son choix)
Après ces changements de configuration, ne pas oublier de faire la mise à jour par : postgresql start (ou restart) Ou bien :
pg_ctl reload
ou en cas d'erreur “pg_ctl: no database directory specified and environment variable PGDATA unset”
pg_ctl -D /var/lib/pgsql/data -l logfile reload
Quelques commandes ** Trouver le n° de version
$ psql –version
Créer une base de données “test”
$ createdb test
Lister les BD disponibles
$ psql -U NomUtilisateur -l
Installation de phpPgAdmin
Installer le rpm fourni par Mandrake est sans intérêt : préférer la dernière version disponible sur : http://phppgadmin.sourceforge.net/ actuellement : phpPgAdmin-3.5.1.tar.bz2
Décompresser : $ tar -jxvf phpPgAdmin-3.5.1.tar.bz2 Déplacer le répertoire créé (phpPgAdmin) vers un endroit acceptable quelconque : par exemple le rpm Mandrake installe phpPgAdmin dans la racine du serveur apache : /var/www/html/admin/phpPgAdmin Si on l'a installé de cette façon, on le lancera donc par : http://localhost/admin/phpPgAdmin
Dans le cas où on l'a installé “à la main” par exemple dans /installe/admin, ajouter dans la config de Apache (/etc/httpd/conf/commonhttpd.conf) :
Alias /toto /installe/admin/phpPgAdmin
<Directory /installe/admin/phpPgAdmin>
Options Indexes FollowSymLinks <IfModule mod_access.c> Order deny,allow Deny from all Allow from localhost </IfModule>
</Directory>
S'y connecter avec : http://localhost/toto Rajouter si nécessaire après “Allow from” les machines autorisées à se connecter en plus de localhost :
Allow from localhost 192.168.1.23 monpc.fr
knoda
2 packages à installer : - hk_classes - knoda Télécharger et décompresser chaque package
Installer en premier hk_classes Pour que les BD postgresql, mysql, sqlite et ODBC soient reconnues il faut que les packages -devel correspondants aient été installés au préalable (avant hk_classes)
xmms
Pour accéder au menu : click droit
Le skin par défaut (noir avec boutons bleu foncé) est illisible/inutilisable, à dégouter d'utiliser xmms : télécharger xmms-skins et choisir un skin correct (Helix-Sawfish par exemple)
La liste des url (radios à écouter) se trouve à la fin du fichier ~/.xmms/config sous la forme : url_history_length2 url_history1http:ogg.tv-radio.fr:1441/encoderfip.ogg url_history2http:accent4.dyndns.org:8000/
Sauvegardes
rsync
rsync -Cvaub –exclude'/tmp/' –exclude'/downloads/' ~/ /sauvegarde_mon_home ou rsync -Cvau –exclude-fromdir_exclus.lst / /sauvegarde_tout
avec un fichier texte dir_exclus.lst contenant par exemple : ………………. /proc /tmp /mnt ……………….
-C évite les fichiers inutile (*~, *.bak,core …) -a sert à passer en mode archive (conservation des droits, des liens …) -u pour transférer uniquement les fichiers nouveaux ou modifiés -b fait une copies des fichiers modifiés (avec un ~, option pas toujours utile). -v verbose
rsync Via SSH : rsync -e 'ssh' -vau –delete –exclude'/tmp/' ~/ utilisateur@machine:~/
–delete efface les fichiers sur la destination qui ne sont pas présents sur le source
tar —
A voir : - backuponcd - cdbackup - rsnapshot - BackupPC - storeBackup
http://sourceforge.net/projects/storebackup
- dar
http://dar.linux.free.fr/
- et KDar
http://members.shaw.ca/jkerrb/kdar/index.html
- DrakBackup - rdiff-backup - bacula - amanda - Rsync: le meilleur des systèmes de sauvegarde
http://linuxfocus.vlsm.org/Francais/March2004/article326.shtml
- rsync examples
http://rsync.samba.org/examples.html
- Easy Automated Snapshot-Style Backups with Linux and Rsync
http://www.mikerubel.org/computers/rsync_snapshots Excellent ! Contient aussi des explications très claires sur le fonctionnement de rsync, cron, hard links, cp
- dirvish - La Sauvegarde sous GNU/Linux
http://linux.ensimag.fr/sauvegarde.html
- Mise en oeuvre d'un solution de clonage sur disque dur IDE externe
http://erick.bullier.org/pub/real_perso/backupDD/
- Linux Backups mini-FAQ
http://kmself.home.netcom.com/Linux/FAQs/backups.html
- Backup and Restore Procedures
http://tldp.org/LDP/lame/LAME/linux-admin-made-easy/backup-and-restore.html
- The Linux System Administrator's Guide: Chapter 12. Backups
http://tldp.org/LDP/sag/html/backups.html
- Backing Up Windows Machines to a Linux Host
http://tldp.org/HOWTO/SMB-HOWTO-11.html
- Linux Complete Backup and Recovery HOWTO
http://tldp.org/HOWTO/Linux-Complete-Backup-and-Recovery-HOWTO/index.html
- EVMS User Guide-Chapter 11. Creating snapshots
http://tldp.org/LDP/EVMSUG/html/whatissnapshotting.html
BUGS
kwrite sous MDK10
Quand les utilisateurs veulent imprimer sous kwrite ils n'ont pas d'imprimante. Solution : modifier le fichier de configuration de kwrite (~.kde/kwriterc) des utilisateurs : remplacer le paragraphe [KPrinter Settings] de l'utilisateur par celui de root.
KDE : “Could not find mime type application/octet-stream”
Solution : supprimer le fichier octet-stream.desktop qui se trouve dans le répertoire ~/.kde/share/mimelnk/application
KDE : No write access to $HOME directory KDE is unable to start
Passer en root et essayer : # chown nom_utilisateur:nom_utilisateur /home/nom_utilisateur