Lister les fichiers ouverts lors de l’exécution d’une commande

Il est parfois utile de connaitre quels sont les fichiers utilisés par un exécutable. Par exemple, pour connaitre quels sont les fichiers utilisés lorsque nous tapons la commande ‘ls -l’, il suffit de faire :

strace -o ./sortie.txt  /bin/ls -l

Puis ensuite, à l’aide d’un grep sur le fichier de sortie :

grep open sortie.txt

Ce qui donne :

Nous y voyons les bibliothèques utilisées par la commande ls mais aussi l’accès à l’ensemble des fichiers utilisés.

Activer l’agent SNMP sur VMware ESX 4.0

Pour surveiller VMware ESX 4.0 à l’aide d’outils tiers, une solution est d’activer l’agent SNMP sur chaque serveur pour pouvoir récolter certaines informations.

Dans les versions précédentes, VMware ESX utilisait l’implémentation de Net-SNMP comme agent SNMP. Depuis la version 4.0 de ESX, VMware dispose de son propre agent SNMP et Net-SNMP est utilisé en tant que proxy pour y accéder.

– Ouvrez une session sur votre serveur ESX en tant qu’utilisateur root.
– Arrêtez l’agent Net-SNMP s’il est en fonctionnement : service snmpd stop
– Éditez le fichier de configuration de l’agent Net-SNMP : vi /etc/snmp/snmpd.conf

com2sec supervision xxx.xxx.xxx.xxx public
group GroupSupervision v1 supervision
view all included .1 80
access GroupSupervision "" any noauth exact all none none
proxy -v 1 -c public udp:127.0.0.1:171 .1.3.6.1.4.1.6876

xxx.xxx.xxx.xxx correspond à l’adresse IP du serveur de supervision.

– Éditez le fichier de configuration de l’agent SNMP de VMware : vi /etc/vmware/snmp.xml

<config>
<snmpSettings>
<communities>public</communities>
<enable>true</enable>
<port>171</port>
<targets/>
</snmpSettings>
</config>

– Redémarrez le service VMware Management : service mgmt-vmware restart
– Lancez l’agent Net-SNMP au démarrage du serveur ESX : chkconfig snmpd on
– Démarrez l’agent Net-SNMP : service snmpd start
– Autorisez le protocole SNMP en entrée sur le serveur ESX : esxcfg-firewall -e snmpd

Depuis votre serveur de supervision, vous pouvez vérifier le fonctionnement en récupérant les informations de votre serveur ESX avec le protocole SNMP à l’aide de la commande snmpwalk.

– Pour l’agent Net-SNMP : snmpwalk -v 1 -c public xxx.xxx.xxx.xxx
– Pour l’agent SNMP de VMware : snmpwalk -v 1 -c public xxx.xxx.xxx.xxx .1.3.6.1.4.1.6876

Executer des scripts php sous différentes identités.

Il peut parfois être utile que des scripts php s’exécutent sous différents UID/GID.

Dans notre exemple,nous allons faire en sorte que les scripts s’exécutent sous l’uid/gid du propriétaire du script. Nous allons également permettre d’executer des scripts sous l’identité du root (ATTENTION : CECI EST UNIQUEMENT FAIT A DES FINS PÉDAGOGIQUES ET NE DOIT PAS ÊTRE MIS EN PRODUCTION POUR DES RAISONS ÉVIDENTES DE SÉCURITÉ).

La plateforme utilisée est une Centos 5.5.

Tout d’abord, il convient d’installer apache ainsi que la version « cgi » de php.

yum install httpd httpd-devel php-common php-cli

Attention à ce que le module apache php ne soit pas installé sinon le désinstaller :

rpm -e php

Nous installons ensuite quelques outils de compilation

yum install autoconf gcc-c++ gcc libtool-ltdl-devel

Il nous faut ensuite installer apr depuis les sources :

wget http://mir2.ovh.net/ftp.apache.org/dist/apr/apr-1.4.2.tar.gz
tar zxf apr-1.4.2.tar.gz
cd apr-1.4.2
./configure --prefix=/usr/ && make && make install

Nous allons ensuite compiler et installer le module Apache suPHP :

wget http://www.suphp.org/download/suphp-0.7.1.tar.gz
tar zxf suphp-0.7.1.tar.gz
./configure --prefix=/usr --disable-checkpath --disable-checkuid --disable-checkgid --with-min-uid=0 --with-min-gid=0 --with-apache-user=apache --with-apr=/usr/bin/apr-1-config --sysconfdir=/etc --with-setid-mode=owner
make
make install

Si nous avions voulu interdire l’exécution de scripts possédant des uid/gid <100, il aurait fallu modifier les parametres –with-min-uid et –with-min-gid en conséquence.

Editons ensuite un fichier /etc/suphp.conf :

Modifions ensuite le fichier /etc/httpd/conf/httpd.conf.

Dans les options générales du fichier de configuration, ajoutons :

LoadModule suphp_module modules/mod_suphp.so
suPHP_Engine on

puis sous la section <Directory /var/www/html> :

  AddType application/x-httpd-php .php
  suPHP_AddHandler application/x-httpd-php

Il faut ensuite relancer le service avec :

service httpd restart

Pour tester, créons un fichier /var/www/html/test.php

<?
 echo("<html><body>");
 system("/usr/bin/id");
 echo("</body></html>");
?>

Positionnons les droits sur ce fichier sur root:root :

chown root:root /var/www/html/test.php

Si nous lancons un navigateur sur http://xxx.xxx.xxx.xxx/test.php
nous obtenons :

Et si nous changeons les droits sur le fichier :

chown nobody:nobody /var/www/html/test.php

Nous obtenons :

Le script est donc bien exécuté en fonction du propriétaire du script et non pas sous l’identité « apache:apache ».

suPhP propose de nombreuses options permettant d’affiner les permissions accordées aux scripts. Pour cela, consultez la documentation officielle ici.