Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for October, 2010

Niveau :      
Résumé : setcap ; getcap ; getpcaps

Sous linux la gestion des droits des processus est héritée de posix et donc extrêmement simple.

Si on exclut les modules de sécurité comme SELinux, il n'y a que deux systèmes. Seul le premier est véritablement connu.

Les droits unix

Un processus porte en lui-même 2 informations associées à ses droits : un utilisateur et un groupe. Ceux-ci permettent de déterminer ses actions possibles sur les fichiers (donc partout puisque tout est fichier) avec les attributs correspondants.

Malheureusement tout n'est pas fichier, pour le reste il existe une distinction entre les processus d'uid 0 (root) et les autres. Cette distinction donne des droits supplémentaires au processus root lors de ses appels système, par exemple l'écoute sur un port inférieur à 1024 ou la possibilité de redémarrer une machine.

Ces droits sont hérités d'un processus à un autre sauf dans 2 cas :

  • un fichier exécuté a le bit suid alors on change l'uid du processus (augmentation des droits en général vers root)
  • le processus a l'uid root et demande à en changer (réduction des droits, par exemple pour login)

Les capabilities

C'est ici que ça devient intéressant. Sous linux, un processus dispose aussi d'un ensemble de droits spécifiques que peu de gens connaissent.

En supposant que votre noyau soit compilé pour (c'est en général le cas), il associera à chaque processus (pour être précis, chaque thread) un champ de bits lui listant ses droits (dont celui de garder le silence). Ce champ est hérité d'un processus à un autre et, miracle, il peut être associé à un fichier exécutable comme le bit suid.


continue reading...

Niveau :      
Résumé : iptables -m hashlimit

Aujourd'hui un ami me dit "hey j'ai un truc pour toi" et il me file sa configuration iptables pour limiter les barbares qui viennent lui détruire son serveur et sa connectivité à coup de robots farceurs.

De coup je me suis penché sur son script et je vous le livre avec son accord (toujours accorder un complément d'objet webesque comme dirait la métraisse).

Le script

Il est court mais bref :

IPT=/sbin/iptables
WEBMAXPERMIN="260"
WEBBURST="40"

$IPT -N throttle

# hashlimit-htable-expire en millisecondes 
$IPT -A throttle -m hashlimit \
 --hashlimit-name webthrottle \
 --hashlimit-upto $WEBMAXPERMIN/minute \
 --hashlimit-mode srcip \
 --hashlimit-burst $WEBBURST \
 --hashlimit-htable-expire 300000 \
-j ACCEPT
$IPT -A throttle -j LOG --log-prefix "FREIN " --log-level 1
$IPT -A throttle -j REJECT

#puis dans  le INPUT
$IPT -A INPUT -d $ETH00 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j throttle


continue reading...

Niveau :      
Résumé : test d'expression régulière

Vous essayez de développer une expression régulière mais vous ne savez pas pourquoi ça ne marche pas ?

Tester une expression

Je vous propose le petit programme suivant qui vous aidera dans la compréhension du fonctionnement de votre regex. Son usage est simple :

./regtest.pl <regex> <chaine>

Exemple :

./regtest.pl "(\d+7)\.1\." "127.127.1.12"
127.127.1.12 : \d+
127.127.1.12 : \d+7
127.127.1.12 : (\d+7)
127.127.1.12 : (\d+7)\.1\.
    127      : $1

Le programme découpe l'expression en éléments syntaxiquement corrects et les applique à la chaine pour voir ce qui matche et le met en évidence. A la fin la liste des groupes qui ont matchés est affiché.

Il est aussi possible de remplacer une des paramètres (la chaine ou la regex) par un '-'. Le programme boucle alors sur l'entrée et vous permet d'entrer une ligne à chaque fois. Vous pouvez donc faire un test en continu. L'avantage et surtout pour les regexp, cela permet de s'affranchir des caractères spéciaux qui pourraient être interprétés par le shell.

Notez que vous aurez besoin de Regexp::Parser qui n'est pas installé par défaut.


continue reading...

Niveau :      
Résumé :

Quoi ?

Vous connaissez le standard ISO 216 ? C'est celui qui définit la taille des pages A4, A3, ... Ces pages ont un ratio hauteur/largeur de racine de 2. Caractéristique intéressante qui permet de coller 2 pages côte à côte pour passer au format du dessus.

Je digresse, mais disons que la plupart des papiers écrits ont a peu près ce ratio, en format paysage (revues, livres de poche, document imprimés, ...) Quand je dis a peu près c'est très approximatif, 1.4, 1.3, 1.6 c'est a peu près pareil.

L'important étant que les écrans respectent en général l'inverse de ce format (mode paysage quoi). Pourtant si les papiers utilisent ce genre de ratio ce n'est pas vraiment pour le côté standard, mais pour le coté lisibilité. Les journaux mettent même plusieurs colonnes sur une même page pour augmenter cette lisibilité.

C'est pourquoi je vous propose de retourner votre écran. Si vous avez la chance d'avoir un écran que le pied vous permet de pivoter vous pouvez le mettre en format portrait assez facilement.

Comment ?

Sous linux xrandr permet de faire ce genre de chose assez facilement :

$ xrandr -o left

Pour ceux qui ont un dual boot, notez que les raccourcis ctrl-alt-fleche permettent aussi de tourner virtuellement l'écran de windows.

Pourquoi ?

Une fois cette modification effectuée, vous constaterez que beaucoup de choses n'apparaissent plus de la même façon.

  • Un manuel d'une page fait ... une page, plus besoin de scroller.
  • Un document à éditer a le même format que le papier sur lequel il sera imprimé, pratique pour ce qu'on appelle le WYSIWYG
  • Les PDF sont rendu sur une page similaire à ce qu'ils seraient s'ils étaient imprimés (pas besoin d'acheter ipad, bande de ...)
  • Les sites webs restent lisible (les exceptions sont tellement rare que je n'ai jamais eu besoin de retourner mon écran pour en lire un) voire deviennent plus lisibles pour certains.
  • Vous pouvez maintenant mettre votre barre des taches en bas de l'écran sans que cela vous grille votre précieux espace de lecture.

continue reading...