Aide-mémoire (Fourre-tout) Linux:

Syntaxes:

# ll `which ifconfig`
-rwxr-xr-x    1 root     root        55388 Oct 13  2003 /sbin/ifconfig (Le "Back Tick" ` exécute d'abord la commande avant l'instruction de gauche)

# ll 1>resultat.txt 2>erreur.txt (Les I/O standards sont:    IN:0 (par défaut le clavier)  OUT:1 (par défaut l'écran)  ERR:2 (par défaut l'écran))

# ll r* && echo 'J ai trouvé des fichiers commencant par r' (Les signes && exécutent s'il n'y a pas d'erreurs et || s'il y en a)
# ll r* || echo 'J ai pas trouvé des fichiers commencant par r'

# find / -name truc\* (Le backslash \ permet de mettre un caractère spécial après.)

# MYVAR="Coucou";echo $MYVAR (Syntaxe pour les variables)

# cat passwd | grep ^n | tee intermediaire | wc -l (Affiche le nombre de ligne (instruction wc) qui contiennent un résultat contenant la lettre "n" (instruction grep) dans le fichier password et crée un fichier "intermediaire" (instruction tee) avec le résultat des lignes trouvées)

Lance un programme (xeyes) EN TACHE DE FOND:
# xeyes&


Expressions régulières:
^[A-z]    Qui commence par une lettre
[0-9]$    Qui fini par un chiffre
coucou$  Qui fini par la chaîne "coucou"
\<Mot\>  Recherche le mot entier "mot"
[abc]       Recherche a, b ou c
[^abc]     Recherche tout sauf a, b ou c
fichier.     Le point désique un seul caractère, donc fichier1 ou fichier2 mais pas fichier10
[0-9]{1,5} Recherche les nombres de 1 à 5 digits
[A]{2}    Recherche AA
file|File    Recherche file et File
(f|F)ile     Recherche file et File



Structure des répertoires:

/etc/skel        Répertoire des futurs users (un peu comme default users)
/boot             Répertoire de boot
/dev              Devices. Tout le matériel
/etc               Config. Equivalent à c:\windows\system32
/home           Mes documents :-)
/lib                Librairies
/media           Point de montage des CD, clés et disquettes
/root              Home de root
/bin                Programmes important
/sbin               Programmes systèmes
/srv                Datas diverses
/tmp               Tout ce qui peut s'effacer sans domages
/usr                 Unix Specific Resources. Trucs spéciaux
/var                Contient ce que le system écrit en cours d'utilisation
/proc              Process
/mnt                Point de montages

/etc/resolv.conf => DNS
/etc/HOSTNAME => Hostname
/etc/sysconfig/network/routes => Table de routage
/etc/sysconfig/hardware/hwcfg-vpid-8086-24d5-103c-12bc => Config Carte réseau



File System:

S'il y a une erreur disque, notamment après la commande find
Booter sur le CD en Rescue => Login Root (sans password) => reiserfsck  -rebuild-tree  /dev/hda2

Pour partager un répertoire:
inclure la ligne dans /etc/exports
            /home/répertoire_partagé    *(rw,all_squash,sync)
puis faire un   exportfs -a  (vérifier avec exportfs tout court)

Pour accéder à un répertoire distant:
S'assurer que tourne:
mountd
    /etc/init.d/nfs start  (peut lancer les services ci-dessous...)
portmap
    /etc/init.d/portmap start
nfsd
    /usr/sbin/rpc.mountd
Créer un répertoire (ex: /home/nicolas)
puis editer le fichier /etc/fstab
172.30.98.113:/home/all_user    /home/nicolas    nfs    noauto 0 0
puis faire un mount -a (vérifier par mount)

Changer l'heure:
# date -s 09:05:00

Sauvegardes par images:
# dd   if=/dev/hda   of=/home/secteur_boot.dd
# dd   if=/home/secteur_boot.dd   of=/dev/hda
# dd   if=/dev/hda   of=/dev/hde

Partitions:
(Par disque, 4 partitions primaires max. L'une d'elle peut être étendue et contenir des partitions logique)
# fdisk -l (Liste des partitions)
# fdisk /dev/hda (Crée une partition, w pour écrire à la fin, p pour afficher)
# partprobe (Relis dynamiquement la table de partition)

Formatage:
# mkfs -t reiserfs /dev/hda3
ou
# mkreiserfs /dev/hda3

Montage:
# mount (Affiche ce qui est monté)
Méthode 1:
# vi /etc/fstab
(Label ou UUID)  (Point de montage)  (FileSystem) (Options - noauto, default, ...) (Dump - Backupable) (Check - 0:non 1:root directory 2:all FS)
/dev/hda3        /newdisk            reiserfs     default                1                  2
# mkdir newdisk
# mount -a
Méthode 2:
# mount /dev/hda3 /newdisk
ou
# mount -o noexec /dev/hda3 /newdisk
# mount -o remount,ro,noexec /dev/hda3 /newdisk (remount si options différentes sur existant)
# mount -t nfs machine:/Repertoire /mnt
dans fstab:
192.168.1.31:/products/sles10   /export/sles10  nfs     defaults,rsize=8192,wsize=8192,soft 0 0
# showmount -e machine (Regarde les répertoires partagés d'une machine)



Taille des disques:
# df -h

Checks:
# fsck /dev/hda2 (Check sur partition DEMONTEE (au pire booter sur Rescue disk)) e2fsck pour EXT2 et EXT3, reiserfsck pour REISER
# reiserfsck --rebuild-tree /dev/hda2 ("--rebuild-tree" est l'option la plus efficace et la plus longue)

Volumes Logiques:
# pvcreate /dev/hda9 (Transformation d'une vraie partition en préparation pour LVM)
# pvscan (visualisation)
# vgcreate nomdupool /dev/hda9 (Là, on crée la couche virtuelle sur laquelle viendra les volumes logiques)
# pvscan (visualisation)
# lvcreate -L 100M -n data nomdupool (Création - enfin - du volume logique)
# lvscan (visualisation)
# lvextend --- (Redimentionnement +)
# lvreduce (Redimentionnement -)

Quotas:
/etc/fstab => defaults,usrquota,grpquota 1 1 (ajouter ,usrquota,grpquota pour rendre le volume quotifiable)
Remonter les disques pour prendre en compte
# insserv boot.quota start  (Démarre les quotas au boot)
# /sbin/quotaon filesystem
# /sbin/quotaoff filesystem
# edquota -u geeko (edition du quota pour geeko)
# quotaon -av
# edquota -t (Détermine la période de grâce entre la limite soft et hard)
# edquota -p user1 geeko (copie du user1 en user "geeko")
# quotacheck -mavug
# /etc/init.d/boot.quota start (Initiation des Quotas)
# repquota -aug (Affiche le dépassement soft des quotas)



Quelques commandes standard:


Crontab:
minute  heure  jour_mois   mois  jour_semaine(7=dimanche)
Exemple:
3 * * * * root /bin/echo coucou => Toutes les heures .03
-*/3 * * * * root /bin/echo coucou => Toutes les 3 minutes
3,7,14 * * * * root /bin/echo coucou => Toutes les 3, 7, 14 minutes de chaque heures
3-24 * * * * root /bin/echo coucou => Toutes les 3 à 24 de chaque heure
3 * 1 4 * root /bin/echo coucou => Le premier avril toute les heures .03
Mettre le fichier contenant la ligne dans /etc/cron.d

Arrêt de la machine:
# shutdown -h now => Manière correcte
# init 0 => Manière bûcheronne
# halt => Manière bûcheronne

Reboot de la machine:
# shutdown -r now => Manière correcte
# reboot => Manière bûcheronne

Changement des droits d'un fichier ou d'une arborescence:

# chmod xxx -R fichier
Ou xxx est le chiffre de 0 à 7 (4=r 2=w 1=x)
# chmod u+r -R fichier
# chmod a-wx  fichier (u=user g=group o=other a=all   et   + - =  r w ou x)
# chown user:mongroupe fichier

Affiche en live les derniers logs system:
# tail -f /var/log/messages

Recherche:
# find / -name chaine (Recherche la chaîne partout)
# find /rep1 /rep2 /rep3 -name truc\* -exec ls -al {} \; (La commande exec après le find est un outil puissant)
# find / -size 10M
ou
# find / -size +10M -exec ls -al {} \;
(cherche tous les fichiers de + de 10M)
# which crontab
(Comme find, mais n'affiche que le résultat pris par le système)
# find / -noleaf -type f -name fichieràchercher (-noleaf "corrige" le bug)
# find /srv/www/htdocs -name "*.htm" -exec mv {} {}l \;  (remplace tous les htm par les html)

Synchronisation avec un serveur de temps:

# ntpdate swisstime.ethz.ch
# ntpdate ntp.metas.ch
# ntpdate 172.30.76.150 (exemple)
# ntpdate swisstime.ethz.ch
# chkconfig xntpd 35 (L'ajoute au démarrage)
# vi /etc/ntp.conf
# chkconfig -l ntp (Pour voir si au démarrage il est enclenché)
# ntpq -p (Affiche l'état des synchro)

Active ou désactive la connexion eth0:
# ifconfig eth0 down
ou up.
Ajoute une adresse ip sur la même carte:

# ifconfig eth0:1 192.168.42.1

Force l'état de la carte réseau en full duplex:
# mii-tool -F 100baseTx-FD eth0
# ethtool -s eth0 speed 100 duplex full

Version de Linux:
# uname -a
ou
# cat /proc/version
ou
# cat /etc/SuSE-release

Liste les modules:
# lsmod

Teste un module:
# modprobe

Gestion des modules:
# modprobe module (Ajoute proprement un module, avec les dépendances, mieux que insmod)
# modprobe -r module (Supprime proprement un module, avec les dépendances, mieux que rmmod)

Affiche dhcp:
# cat /etc/resolv.conf

Création d'un lien:
# ln FichierExistant NouveauLien (Créé un Hard-Link, les deux liens sont identiques et pointent sur le même contenu)
# ln -s FichierExistant NouveauLien (Créé un Link standard (softlink) et le nouveau lien n'est qu'un raccourci sur le fichier existant)

Alias:
# alias essais='date>coucou.txt;cat coucou.txt'
# unalias essais

Taille d'un répertoire:
# du -h /home/geeko

Top ten des plus gros répertoires:
#  du -k / | sort -n | tail

Liste les fichiers ouverts:
# lsof -s -u geeko

Liste de qui tient les fichiers:
# fuser -v -u /home/geeko

Affiche un touli calendrier:
# cal

Sécurité:
# echo Pas de Login aujourd hui connard>/etc/nologin (Le fichier /etc/nologin empêche tout autre que root de se loguer)
# vi /etc/pam.d/login (Gère les authorisations de login)
# vi /etc/sudoers
ou
# visudo (gère les permissions de sudo)
...puis mettre un commentaire dans les 2 lignes suivantes: (les 2 dernières, pour ne pas utiliser le password root dans sudo)
# In the default (unconfigured) configuration, sudo asks for the root password.
# This allows use of an ordinary user account for administration of a freshly
# installed system. When configuring sudo, delete the two
# following lines:
# Defaults targetpw    # ask for the password of the target user i.e. root
# ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
puis y insérer les lignes selon le schéma:
user/group  host  = commande1,commande2,...
exemple:
geeko ALL = /sbin/shutdown
nsa ALL=(ALL) ALL
nsa ALL=!/sbin/shutdown # ligne précédente autorise tout, mais j'interdis le shutdown

Paramètres des newusers:
# cat /etc/default/useradd

Locker et rêgler le lockage des profils:
# faillog [options] :-)

Paramêtres du [ctrl]-[Alt]-[Del]
# grep ctrlaltdel /etc/inittab

ACL:
# getfacl /etc/hosts (Voir les droits ACL d'un élément)
# setfacl -m u:user:rx /etc/hosts (Ajoute des droits ACL sur hosts)
# setfacl -m m::r /etc/hosts (Modifie le mask pour mettre le fichier en lecture pour tous. Le mask est une synthèse de droits appliqués pour tous)
# setfacl -d -m u:user:rw . (Créé les droits par defaults dans le répertoire courant - PRINCIPE DE L'HERITAGE)
# setfacl -x u:user fichier (Supprime l'ACL pour un user et fichier)
# setfacl -b element (Supprime tout l'ACL et redevient POSIX)

Voir adresse IP:
# ip address show (Mieux qu'ifconfig)

Ip-ip-ip... Houra!
# ifdown eth0
# ifup eth0
# ip route show
# ip route add 192.168.1.0/24 via 10.0.0.100
# ip route add default via 10.0.0.254
# ip route delete 192.168.1.0/24 dev eth0
# ip address add 172.30.112.25/24 brd + dev eth0
# ip link set eth0 up
# ip route add default via 172.30.112.1

Traitement des Jobs:
# jobs (Liste des applications ouvertes)
[4]   Running                 xeyes &
[5]-  Running                 xeyes &
[6]+  Running                 xeyes &

# fg 5 (prends la main sur job 5)
- Ctrl Z -
# jobs
[4]   Running                 xeyes &
[5]+  Stopped                 xeyes
[6]-  Running                 xeyes &

Process:
# ps -ef (PID=Process ID et PPID=Process ID du Parent)
# pstree (très joli)
# top (par CPU, interactif)
# watch pstree
# nice -n +10 xeyes& (Priorité de 10 sur xeyes) Les priorites vont de -20 (le plus rapide) à +19 (le plus lent)
# renice -5 5954 (value PID) (change les priorités du PID)
# kill -15 PID (Gentil)
# kill -9 PID (Méchant)
# kill -SIGUP PID (Relis tes fichiers de config et reload sans t'arrêter)
# killall xeyes (peut mettre le nom du process)

Retrouver les messages au boot:
# dmesg

Info Système:
# cd /proc => cat fichier (exemple cat meminfo)
# hwinfo ¦ less (Montre l'ensemble hardware)
# lspci (-vv) (Montre tout les périfériques pci (normaux))
# lsscsi (Montre les SCSI, SATA ou clé USB)

Affiche les ports ouverts et leur process associés:
# netstat -pantuv

Syslog:
# vi /etc/syslog-ng/syslog-ng.conf.in
# SuSEconfig --module syslog-ng (Valider la modif)

Qui est logué?:
# w

Donne le dernier login de chaque user:
# lastlog ( <!> Attaque si un compte system donne un log )

Rotation des logs:
# logrotate /etc/logrotate.conf (Lance la rotation de log des logs spécifiés dans les fichiers du répertoire /etc/logrotate.d)
Exemple:
# cat /etc/logrotate.d/local4
/var/log/fichierlog1 /var/log/fichierlog2 /var/log/fichierlog3
{
compress
dateext
maxage 365  => Nombre max de jours
rotate 5    => Nombre de rotations
size +4096k => Taille max en k
postrotate  => Début du script
date >>/var/log/local4.info
endscript   => Fin du script
}
# cat /var/lib/logrotate.status

Mieux que clear, rend un terminal propre:
# reset

GRUB:
# grub
> root=(hd0,1)
> setup (hd0)
> quit
(Réparer le MBR. Préalablement, prendre le DVD -> Install -> [Other] -> "Boot installed system")

Runlevel:
init 0 => Arrêt
init 1 => Que root. Peinard pour dépanner
init 3 => Normal mais sans graphique
init 5 => Normal avec graphique
init 6 => Reboot
# runlevel (Affiche le runlevel dans lequel je suis)
dans /etc/inittab...
    # The default runlevel is defined here
    id:5:initdefault:
(donc prend le init 5 par défaut)
# chkconfig ntp (ntp démarre-t-il dans le runlevel actuel?)
# chkconfig -l ntp (ntp démarre-t-il dans quels runlevels?)
# chkconfig ntp 35 (MET ntp dans le runlevel 3 et 5)
# chkconfig -l | grep 5:on (Affiche tous les services enclenchés dans le runlevel 5)
Dans GRUB (Menu au début) mettre bêtement un chiffre dans la zone texte pour choisir son runlevel

Packages RPM:
# rpm -ivh /opt/software/visualbasic.rpm (Installe un package à la con)
# rpm -e /opt/software/visualbasic.rpm (Desinstalle un package à la con)
# rpm -Uvh --force /opt/software/visualbasic.rpm (Upgrade de force (optionnel) un package à la con)
# rpm -qpi http://www.nicolassalamin.com/softwarealacon/ms_vi.rpm (Affiche les infos sur ce package)
# rpm -qpl /opt/softwarealacon/ms_vi.rpm (Affiche les fichiers à l'interieur de ce package)
# rpm -qa | grep ms_vi (Liste tous les packages installés et grep celui voulu)
# rpm -qf fichier.truc (Donne le package à qui appartient ce fichier)

Compression avec TAR:
# tar -zcvf fichier.tar.gz repertoire (Crée un tar compressé par l'option z)
# tar -zxvf fichier-tar-gz (Décompresse)
# tar -ztvf fichier-tar-gz (Regarde le contenu)

Copie d'un CD-Rom ou DVD en local:
# dd if=/dev/hdc of=/tmp/cd_rom.iso
# mount -o loop /tmp/course_cd.iso /mnt/ (L'expression loop permet de faire croire au système que le fichier iso est un lecteur)

SSH:
# vi /etc/ssh/sshd_config (config du SERVEUR SSH)
# vi /etc/ssh/ssh_config (config du client SSH)
# ssh -X machine (Session SSH toute conne, mais avec X activé, le graphisme fonctionne. Permet d'enclencher p.ex. yast2 au lieu de yast)


Clé SSH:

Générer la clef:
# ssh-keygen -t rsa  -C "Commentaire" -f ./nom_du_fichier_clef
ou
# ssh -keygen -t dsa (passphrase=password à chaque fois. Si rien alors ne demande rien)
ou
# ssh-keygen -b 1024 -G rsa -f /tmp/key-file
(# l /root/.ssh) la clé dsa est un poil plus forte que la rsa, mais c'est pratiquement pareil

Copier la clé publique sur l'autre serveur.
# scp id_dsa.pub user@192.168.1.24:/home/user/nom_du_fichier_clef.pub
# ssh serveur_cible
  > cat nom_du_fichier_clef.pub >> .ssh/authorized_keys
  > exit
(si .ssh/authorized_keys n'existe pas: chmod 700 .ssh et chmod 600 authorized_keys)

Copie finale du fichier sans restrictions (spécifier le nom de la clé privée, celle sans le ".pub"):
# scp -i /root/.ssh/
nom_du_fichier_clef nomuser@xxx.xxx.xxx.xxx:/chemin_source/fichiersource.txt /chemin_cible/fichiercible.csv



Agent SSH:
# ssh-agent bash
# ssh-add .ssh/nomdemaclé (Ajout de la clé privée dans le wrapper)

Copie par SCP:
# scp user@192.168.1.23:/etc/hosts /tmp/

VNC:
Autoriser vnc avec Yast sur la machine cible
http://adressedelamachine:5801

CUPS:
Gestion des imprimantes. Tout est dans /etc/cups/cupsd.conf
Existe un module YAST
# rccups restart
# Lpadmin -p queue -u allow :user1,user2
# Lpadmin -p queue -u allow :user1,user2 (Restrictions pour les imprimantes.)
Restriction pour le Web:
<Location /admin>
AuthType BasicDigest
AuthClass Group
AuthGroupName sys
order Deny,Allow
Deny from All
Allow from 127.0.0.1
</Location>
# Lppasswd -a root -g sys (Pour donner les mots de passes. Stockés dans /etc/cups/cupsd.comf - Pas forcément les vrais users Linux)

Xen:
Installation:
Besoin de     - xen (superviseur)
                    - xen-tools (outils)
                    - kernel-xen (kernel modifié)
                    - xen-doc (facultatif)
il ajoute un menu dans GRUB (/boot/grub/menu.lst)
Puis désactiver le firewall:
# insserv -r SuSEfirewall2_setup
# insserv -r SuSEfirewall2_init
Rebooter et choisir dans GRUB le menu (en dernier souvent) généré par Xen
Création d'une machine se fait dans Yast2:
Démarrer:
# xm create -c -f /etc/xen/vm/vm1
Utiliser:
# xm list (voir l'ID)
# xm console 3 (3 p.ex.)
Désactiver:
# xm destroy 3 (3 p.ex.)

Apache:
Installation:
Besoin de    - apache2 (basic)
                    - apache2-prefork (add pack)
puis...
# insserv apache2 (démarre au boot de la machine)
# rcapache2 start (start Apache)
Configuration:
/etc/apache2/httpd.conf
/etc/apache2/vhosts.d/  (Pour host virtuel)
Site:
/srv/www/htdocs (Contenu html)
Directives (Standard):
<Directory "/srv/www/htdocs">
    Option None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
Directives (limitation IP):
<Directory "/srv/www/htdocs">
    Order deny,allow           (d'abord j'exclue et en suite j'autorise)
    Deny from all              (J'exclue tout le monde...)
    Allow from 10.0.0.0/24       (...sauf eux.)
</Directory>
Limitation d'accès:
# htpasswd2 -c /etc/apache2/htpasswd toto (Création du user toto)
# htpasswd2 /etc/apache2/htpasswd toto2 (Création du user toto2 si déjà un user)
# htpasswd2 -D /etc/apache2/htpasswd toto (Suppression du user toto)
Dans le httpd.conf...
<Directory "/srv/www/monsite">
    AuthType Basic
    AuthName "Restricted Files"
    AuthUserFile /etc/apache2/htpasswd
    Require user toto
</Directory>
Authentification:
créer les users avec htpasswd, voir plus haut
<Directory "/srv/www/monsite">
    AuthType Basic
    AuthName "Accounting Intranet"
    AuthUserFile /etc/apache2/htpasswd
    Require user toto1
    Require user toto2
    Require user toto3
</Directory>
check...
# apache2ctl configtest
et redémarrer:
# rcapache2 reload

SSL:
https --> Port 443
Config:
/etc/apache2/ssl-global.conf (dans SLES, sinon tout est dans httpd.conf)
/etc/apache2/vhosts.d/vhost-ssl.template --> Exemple de config, possibilité de copier à la place du ssl-global.conf
création:
# cat /dev/random > /tmp/random
# openssl genrsa -des3 -out /tmp/accounting.key -rand /tmp/random 1024
# openssl req -new -x509 -key /tmp/accounting.key -out /tmp/accounting.crt
# cp /tmp/accounting.key /etc/apache2/ssl.key/
# cp /tmp/accounting.crt /etc/apache2/ssl.crt/
# rm /tmp/accounting*
# chmod 400 /etc/apache2/ssl.key/accounting.key
# chmod 400 /etc/apache2/ssl.crt/accounting.crt
# vi /etc/apache2/ssl-global.conf
    <VirtualHost accounting.da.com:443> (changer 80 par 443)
      ServerName accounting.da.com:443 (ajouter :443)
Ajouter...
    <VirtualHost accounting.da.com:443>
        ServerAdmin webmaster@dummy-host.example.com
         ServerName accounting.da.com:443
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /etc/apache2/ssl.crt/accounting.crt
        SSLCertificateKeyFile /etc/apache2/ssl.key/accounting.key
# vi /etc/sysconfig/apache2
    APACHE_SERVER_FLAGS="SSL"
    APACHE_START_TIMEOUT="10"
# apache2ctl configtest
# rcapache2 restart
# insserv -r apache2

PHP:
Installer Package:
    - apache2-mod_php5
    - php5
(redémarrer apache: rcapache2 restart)
créer un PHP dans /srv/www/htdocs/php_exemple.php
    <?PHP
    phpinfo();
    ?>
accessible: http://localhost/php_exemple.php

Tomcat:
Installer Tomcat_
    - tomcat5-admin-webapps
    - tomcat5
Copier template Tomcat:
/usr/share/tomcat5/conf # cp server-minimal.xml server.xml
Copier un WAR (Web ARchive, java inside) dans /usr/share/tomcat5/webapps
et restarter Tomcat:
# rctomcat5 restart
Manager Tomcat:
# vi /usr/share/tomcat5/conf/tomcat-users.xml
Ajouter:
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="polux password="novell" roles="manager,admin"/>
# rctomcat5 restart
RINETD (Redirecteur de port)
installer le package "rinetd"
# vi /etc/rinetd.conf
    192.168.1.23 80 192.168.1.23 8080
    allow 192.168.1.*
    logfile /var/log/rintetd.log
    logcommon
# rcapache2 stop
# rcrinetd start

SAMBA:
/etc/samba/smb.conf (Tout est là-dedans)
exemple:
(Share pour user Geeko)
# cd /etc/samba/
# cp smb.conf smb.sauve_en_cas_de_gros_pépin
# vi smb.conf
    [global]
    workgroup=Accounting
    netbios name=Fileserver_da3
    security=user
    [geeko-dir]
    comment=Geeko Directory
    path=/srv/samba/geeko
    valid users=geeko
    read only=no
ou
[partage-dir]
        comment = marketing Directory
        path=/tmp/marketing
        valid users=PSmith
        read only=no
(Créer /tmp/marketing, créer user linux PSmith, voir droits répertoire et tester avec "smbclient -U PSmith //localhost/marketing-dir")
# cat smb.conf
# mkdir /srv/samba
# mkdir /srv/samba/geeko
# touch /srv/samba/geeko/my_file
# chown geeko /srv/samba/geeko
# chown geeko /srv/samba/geeko/my_file
# smbpasswd -a geeko
# testparm
# rcsmb start
# rcnmb start
(Access the Share pour User Geeko)
# smbclient -U geeko //localhost/geeko-dir
>help
>ls
>get my_file
> [Ctrl]-D
(Monter un Share)
# mount -t cifs -o username=geeko,password=novell //localhost/geeko-dir /mnt
# ls /mnt
# umount /mnt

XINETD:
Super-deamon, qui peut chapeauter tous les autres deamons (ftp, cups, swat, finger, ssh, ...) et qui permet un gestion d'accès unique pour tout un serveur.
Il existe un module YAST pour Xinetd (dans Network Services)
sinon les modules tenus par xinetd sont dans /etc/xinetd.d (changer la ligne "disable" en yes ou no)

# hwclock --show (montre l'heure hardware (BIOS))
# hwclock --hctosys (Pousse l'heure hardware to system)
# hwclock --systohc (Pousse l'heure system to hardware - Met à jour le Bios)
# cat /proc/driver/rtc (donne l'heure réel et, entre autre, le statut de la pile)
# netdate ptbtime1.ptb.de  (Met ponctuellement le système à jour, pas très utilisé)
# rcntp start (Beaucoup mieux, met le deamon NTP)
# vi /etc/ntp.conf (Détermine la source)
# ntpdate ptbtime2.ptb.de (Comme netdate, mais utilise ntp, Hachement mieux. utiliser par la suite "hwclock --systohc")
# chkconfig -l ntp (Pour voir si au démarrage il est enclenché)
# ntpq -p (Affiche l'état des synchro)
Un Module Yast fait ça très bien...

Compiler:
Yast2 -> installer pattern "CC Compiler and Tools"
# cd /opt (Mettre le fichier tarball dans opt)
# tar -zxvf xpenguins-2.2.tar.gz
# cd xpenguins-2.2/
# cat INSTALL
# ./configure --help
# ./configure (passage obligé, créé le makefile)
Si message d'erreur: Yast, installer packages ...-devel (Cocher la case "RPM "Provide" pour voir quels packages contient le mot de l'erreur et chercher le devel à partir du mot clé)
# make (Compile. Un fichier Makefile est nécessaire)
# make check
# make install

# top
load average: 1=full. (display dans cette minute, 5 minutes avant et 15 minutes avant)
Load Average est beaucoup, mais alors beaucoup plus significatif que l'utilisation CPU
taper "h" pour l'aide de TOP

Mémoire:
# free (etat de la mémoire)
# vmstat (ou "vmstat 1" pour lire toute les secondes)
# swapoff -a (Désactive la swap)
# swapon -a (Active la swap)
# iostat (status des disques)
# iostat -x 1 /dev/hda (await: temps d'attente pour qu'une requete soit acceptée et swctime: Temps moyen pour qu'une requete soit exécutée du moment qu'elle a été acceptée. Tout est en ms)
# ksysguard (panel de surveillance)

# vi /etc/inittab => ligne "id:5:initdefault" remplacer 5 par 3 pour enlever la couche graphique
# hdparm -t /dev/hda (Affiche les performances disques)
# mount -o remount,atime /dev/hda2 (supprime l'acces time sur les fichiers. Augmente les perfs. possibilité d'ajouter noatime dans /etc/fstab) (ou notail qui supprime la suballocation, donc le fait que ReiserFS "bouche les trous sur le FS)

# mail root </tmp/coucou.txt (Envoye un message à root)

# /etc/init.d/boot.udev stop (Arrêt du détecteur HotPlug)
# udevmonitor --env (Monitoring)
# ll /etc/udev/rules.d (Liste des rêgles de montage. A l'intérieur le nom d'un script qui s'exécute lors de l'apparition du Hardware)

# vi /etc/modprobe.d/blacklist (Enlever le module du montage automatique, p.ex. une clé usb. Trouver d'abord le nom exact de ce module)
    blacklist   usb_storage


Aide:

# man commande
Aide standard

# whatis commande
Description et section d'aide

# man -k password
Recherche toute les commandes au sujet de

# info commande
Sorte de super-aide. Ne foncionne pas dans les versions antérieures
Utiliser [Tab] pour l'hypertexte et [L] pour revenir en arrière

Sur le web, chercher "howto" ou "sxs"



Divers:

acpi=Gestion d'énergie

Si bootloader est défectueux => DVD SuSE -> Install -> [Other] -> "Boot installed system"

Mask:
/24 = 255.255.255.0
/16 = 255.255.0.0

ext2: Pas journalisé (en cas de crash, moins sur) => Rapide
ReiserFS: Journalisé => Top mais un poil plus lent

POSIX:
drwxr-xr-x  2 root root
ACL:
Comme M$ - Gestion avancée des droits FS
drwxr-xr-x+  2 root root --> le + en fin montre les droits ACL résumés dans la place du groupe. Les 3 premiers et derniers xxx ne changent pas

Exemple de shell:
 #!/bin/bash
 BOUCLE=2
 while [ $BOUCLE -gt 1 ]
 do
 echo
 echo Bienvenue dans le Super Programme de la Mort !!!
 echo ===================================
 echo 1 - Répertoire courant
 echo 2 - date actuelle
 echo 3 - gag du jour
 echo 4 - Fin - ou touche q
 read REPONSE
 echo
 echo
 case $REPONSE in
 1) pwd;;
 2) date;;
 3) echo Après 9 mois d'enquêtes, j'ai découvert en inox;;
 4) BOUCLE=0;;
 *)
 esac
 if [ $REPONSE = "q" -o $REPONSE = "Q" ]
 then BOUCLE=0
 fi
 echo
 echo
 echo
done

Autre script:

AFDATE=`date +'%d'`.`date +'%m'`.20`date +'%y'`
AFHEURE=`date +'%H'`.`date +'%M'`.`date +'%S'`
echo Mise à jour le $AFDATE à $AFHEURE>publications.txt
cat /.../fichierlog.log|sort -r|grep -i "chaine"|grep -i $AFDATE>>publications.txt
ftp -vni nomserveur</root/cmdftp
Fichier cmdftp:
user nomuser password
put publications.txt
close
quit


Autre script:

#!/bin/bash
echo "Je renomme tous les fichiers en minuscules"
for FILE in `find . -type f -maxdepth 1`
do
 NEWFILE=`echo $FILE | tr [A-Z] [a-z]`
 if test $FILE != $NEWFILE
 then
   echo mv $FILE $NEWFILE
 fi
done

Autre script:

#!/bin/bash
clear
echo
echo ----------------------
echo ¦ Salut les copains! ¦
echo ----------------------
echo
echo
echo
NOMBRE=`cat /var/spool/mail/geeko | grep '#' |wc -l`
echo -------------------------
echo ¦ Nombre de requetes: $NOMBRE ¦
echo ----------------------------------------------------------------------------------
cat /var/spool/mail/geeko | grep '#'
echo ----------------------------------------------------------------------------------
echo
echo
TODAY=`date +%m/%d/%Y`
echo "Nous sommes le $TODAY"
echo Vous avez entré $# arguments
if test $# -eq 1
then
 echo votre seul argument est $1
else
 echo Tous vos arguments sont $*
fi
echo
echo
echo ----------------------
echo ¦ Le Quiz de l\'hiver ¦
echo ¦ Entrez un chiffre: ¦
echo ----------------------
read CHIFFRE
echo
TABLEAU[1]='¦'
TABLEAU[2]='/'
TABLEAU[3]='-'
TABLEAU[4]='\'
TABLEAU[5]='¦'
TABLEAU[6]='/'
TABLEAU[7]='-'
TABLEAU[8]='\'
TABLEAU[9]='¦'
TABLEAU[10]='/'
TABLEAU[11]='-'
TABLEAU[12]='\'
TABLEAU[13]='¦'
TABLEAU[14]='/'
TABLEAU[15]='-'
TABLEAU[16]='\'
for ((i=1;i<=16;i++))
do
 printf '\b\b'
 printf ${TABLEAU[$i]}
 sleep 0.1
done
printf '\b\b'
echo Reponse:
CHIFFRE2=$(($CHIFFRE+1))
echo $CHIFFRE2 - J ai gagné!!!
if test $CHIFFRE -eq 10
then
 echo Ce chiffre est 10.
fi
echo
echo
ENTREE='Coucou'
until test $ENTREE = "quit"
do
 printf 'da3:~ # '
 read ENTREE
 if test $ENTREE = "quit"
 then
  echo FIN DU SCRIPT!
 else
  echo Linux Error
 fi
done



Fichiers de démarrage:
/etc/.profile
/home/user/.profile
/home/user/.bashrc
/etc/init.d/boot
/etc/init.d/boot.local  => Le script dans lequel on peut ajouter des choses!!!