Faire executer un script par root

Admettons que vous ayez un acces utilisateur lambda a une de vos machine, par exemple au travers d’un script telnet HTTP. Vous souhaitez passer une commande qui necessite les droits root. Pour celà, la solution consiste à lancer la commande suivante :

echo RootPassword | exec su root -c Commande

Eventuellement, la Commande peut être l’appel à un script : “sh script”

Connaitre la version et le type d’un serveur web

Pour connaitre le type de serveur web a qui l’on a affaire, une solution est de se connecter à l’aide de la commande telnet sur le serveur et de l’interroger :

telnet adresse_serveur 80
puis tapez (rien ne va s’afficher)
GET / HTTP / 1.0
suivit de 2 carriage return

Le serveur doit vous renvoyer un message avec en entête sa version et son nom.

Renomer une liste de fichiers avec des espaces

Lorsque l’on souhaite renommer un ensemble de fichiers contenant des caractères espace, l’utilisation d’une boucle de type :

for i in `find . -name “*” ; do

done

n’est par vraiement envisageable, en effet, les espaces identifiés comme des séparateurs de mots font que i prend pour valeur des sous ensembles du nom.

Pour résoudre ce problème, une solution consiste à modifier la variable IFS dont le rôle est de définir les séparateur de mots dans le shell bash.
La solution peut être la suivante :

export IFS=$’\n’
for i in `find . -name “*” ; do

done

i prend alors successivement les noms des fichiers, espaces inclus.

Changer l’encodage des caractères avec Apache2

Lors du passage de ce site sur Apache2, j’ai été confronté à des problèmes d’affichage des caractères, Mozilla n’affichait d’ailleurs même pas tous les caratères.
Ce problème vient de l’encodage par défaut des caractère qui est en UTF-8. Ce format ne semble pas totalement supporté par les borwsers ou alors mes documents sources n’utilisent pas ce format.

La solution consiste donc à modifier le format par défaut pour revenir à quelque chose de standard. Pour celà, il faut éditer /etc/apache2/mod_mime-default.conf et changer l’option AddDefaultCharset … pour AddDefaultCharset ISO-8859-1 par exemple.

Dans le cas de l’utilisation d’apache1, la solution est la même hors mis que le fichier doit être /etc/httpd/httpd.conf.

Notez que cet encodage est plutot obsolete et ne gère entre autre pas l’euro, ISO-8859-15 serait peut être plus adapté.

Complément : A noter que j’ai aussi rencontré des problèmes avec les accents lorsque je faisais des include de pages html depuis une jsp. Je ne saurais vraiment en expliquer la cause mais la solution simple et rapide que j’ai utilisé a été de renomer mes fichiers .html en .jsp ! depuis ça fonctionne vraiement mieux.

Inclusion de page html coté serveur

Les inclusions coté serveur ou SSI (Server Side Includes) sont très utiles pour inclure dans une page html une autre page html.

Ce site utilise par exemple ce système pour les entêtes et pieds de page de tous les documents interne, comme ça, il n’est pas nécessaire d’écrire ce code partout et sa mise à jour est centralisée en un seul et unique point.

La configuration se fait en chargeant dans apache le module mod_include, puis en le configurant :
Dans le fichier http.conf, dans la description du repertoire dans lequel on souhaite réaliser des include, on doit ajouter l’option +Includes, ce qui donne :

<Directory /src/www/htdocs>
Options […] +Includes
</Directory>

Il faut aussi ajouter l’activation dans la partie globale :

<IfModule mod_include.c>
xBitHack on
</IfModule>

Enfin, le fichier qui réalise l’inclusion doit avoir des droits d’execution et contenir une inclusion qui peut être de la forme suivante :
<!–#include virtual=”/model/fichier.html” –>

Utiliser Vim en multifenetres

Créer une nouvelle fenetre sous Vim peut se faire à l’aide des commandes :split et :vsplit qui peuvent être suivies par un nom de fichier à ouvrir dans la nouvelle fenêtre.
Il est aussi possible de creer un nouveau fichier à l’aide des commandes :new et :vnew
La navigation entre les fenêtres se fait à l’aide des combinaisons de touches suivantes :

  • CTRL+w suivi de h
  • CTRL+w suivi de j
  • CTRL+w suivi de k
  • CTRL+w suivi de l

Charger une page Web avant de l’afficher

Il est souvent préférable de terminer le chargement d’une page et entre autre de ses images avant son affichage, de sorte à éviter que la disposition des éléments soit instable durant ce temps.
Pour ce faire, un petit java Script peut vous venir en aide :

Dans la partie HEAD :
<SCRIPT>
<!–
function show() {
document.getElementById(“hidDiv”).style.visibility = “visible”
}
</script>
–>
Dans la partie BODY :
<BODY onLoad=”show()”>

Partie Affichée durant le chargement

<div id=”hidDiv” style=”visibility:hidden”>

Partie Affichée une fois la page chargée

</div>
</body>

Forward de ports avec SSH

SSH peut être utilisé pour forwarder des ports, il est ainsi possible d’accéder à un port distant dont l’accès serait restraint au réseau local puisque SSH permet de simuler un accès local à distance.

On peut souhaiter, par exemple acceder, au travers d’un port local 2000 au port 80 d’une machine distante. La commande est alors la suivante :

ssh -N -l root -L 2000:ip_host_distant:80 host

L’option -N indique que l’on ne souhaite pas de Shell.
L’option -R peut être utilisé pour l’inverse à savoir mapper sur la machine distante un port qui sera en fait local (visible depuis le client).

Note : le terme local correspond au client ssh. Le termer distant correspond au réseau du serveur sshd.