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

Syntaxes:

# ll `which 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

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


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"
[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:

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!!!

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/hdes


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 (ou -*/3 pour Suse)
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
*/1 7-18 * * 1-5 bash -l -c '/opt/machin/gdbp_generateJobsStatus.sh' Exécuter avec le bon environnement
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

Copie à l'identique un répertoire d'un serveur à un autre
# rsync -e "ssh" -av --progress root@serveursource:/tmp/nsa/ /tmp/nsa/

Recherche:
# find / -name chaine (Recherche la chaîne partout)
# find / -name chaine -print 2>/dev/null (Enlève les résultats "Permission denied")
# 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 jouli 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/
# scp -rp sn04028adm@172.30.13.37:/srv/www/htdocs/it/ ./


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:

AuthType BasicDigest
AuthClass Group
AuthGroupName sys
order Deny,Allow
Deny from All
Allow from 127.0.0.1

# Lppasswd -a root -g sys (Pour donner les mots de passe. 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):

Option None
AllowOverride None
Order allow,deny
Allow from all

Directives (limitation IP):

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.)

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...

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/apache2/htpasswd
Require user toto

Authentification:
créer les users avec htpasswd, voir plus haut

AuthType Basic
AuthName "Accounting Intranet"
AuthUserFile /etc/apache2/htpasswd
Require user toto1
Require user toto2
Require user toto3

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

(changer 80 par 443)
ServerName accounting.da.com:443 (ajouter :443)
Ajouter...

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
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:



# 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"




Petite magouille pour être admin:

# ln -s /bin/bash workaround (crée un softlink sur bash)
# vi super (crée un super-batch, y mettre les trois lignes ci-dessous)
#!/bin/bash
echo Tadaaaaa!!!
sudo ~/workaround
# chmod 700 super (met les bons droits pour le super-batch)



Exemple d'installation d'un serveur web:

Installer un serveur Debian (par exemple) sur un serveur physique ou une VM avec un iso Debian qui va bien
(Le premier login dans Cinnamon prends des plombes, c'est normal. Et faire [Crtl]-[Alt]-[F1] pour passer directement en mode console)

Mettre le serveur à jour:
# apt-get update
# apt-get upgrade


Booter en mode console, pour faire plus sérieux:
editer /etc/default/grub
nano /etc/default/grub
Activer la ligne: "GRUB_TERMINAL=console"
Activer la ligne, et mettre "text": "GRUB_CMDLINE_LINUX="text"
Commenter la ligne: "#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# systemctl set-default multi-user.target
# update-grub
# reboot


Ajouter un user, si besoin:
# useradd ursule
# passwd ursule
# usermod -aG sudo ursule
(pour lui donner les droits sudo)

Installer SSH pour le prendre avec Putty:
# apt install openssh-server
Vérifier avec # netstat -pantuv

Mettre ll en alias:
# cd
# nano .bashrc

Ajouter # alias ll='ls -la --color=auto'

Installer SQL si besoin:
# apt-get install mysql-server

Installation de Apache2:
# apt-get install apache2
Les fichiers sont dans /var/www/html/

Installer php7:
# apt install php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json php7.0-gd php7.0-mcrypt php7.0-msgpack php7.0-memcached php7.0-intl php7.0-sqlite3 php7.0-gmp php7.0-geoip php7.0-mbstring php7.0-xml php7.0-zip
# reboot

Installer mySQL:
Upgrade System:
# apt-get update && apt-get upgrade -y
Module pour php
# apt-get install mcrypt
Restart Apache
# systemctl restart apache2
phpmyadmin... (db-config common: Oui)
# apt-get install phpmyadmin
# cd /var/www/html
# mkdir coucou
# cd coucou
# ln -s /usr/share/phpmyadmin

browser sur : http://192.168.117.128/coucou/phpmyadmin/ phpmyadmin / 1234 (p.ex)
Secure:
# cd /var/www/html/coucou/phpmyadmin
# nano .htaccess

order allow,deny
allow from 12.34.56.78
Mettre les bons droits pour phpmyadmin (pour créer une nouvelle DB)
# mysql mysql -p
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;


IP fixe:
# nano /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.0.15/24
static routers=192.168.0.1



Installer FTP pour y mettre les fichiers:
# apt-get install proftpd



Clé USB Pi:

Voir avant/après pour connaitre le nom de la clé (souvent: /dev/sda1)
# ls -l /dev/disk/by-uuid/

Créer dans /media le répertoire usb, si ce n'est pas déjà fait:
# mkdir /media/usb
# sudo chown -R pi:pi /media/usb

Monter la clé dans /media/usb
# mount /dev/sda1 /media/usb -o uid=pi,gid=pi

Démonter la clé:
# umount /dev/sda1

Formater la clé en FAT32
# apt-get install dosfstools // si ce n'est pas déjà fait
# mkfs.vfat -F 32 /dev/sda1



Divers:

Sauvegarde de carte SD:
Insérer SD sur le MAC
# diskutil list
Sauvegarder:
# sudo dd if=/dev/disk1 of=~/sauvegardeCarteSD.dmg
Restaurer:
# sudo dd if=~/sauvegardeCarteSD.dmg of=/dev/disk1
(si message "Ressource busy": df -h puis umount /dev/disk1s1 )
Pour éjecter:
# diskutil unmountDisk /dev/disk1



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