Category Archives: Server

deny access to .git directory with Apache 2 on Debian

When you use GIT in order to deploy your website on an Apache web server, in everybody can access to the .git subfolder. Which means that it’s possible to get your source code (even passwords…).

Create a file name /etc/apache2/conf.d/denyGIT

# do not allow .git version control files to be issued
<Directorymatch "^/.*/\.git+/">
  Order deny,allow
  Deny from all
</Directorymatch>
<Files ~ "^\.git">
    Order allow,deny
    Deny from all 
</Files>

retart apache

/etc/init.d/apache restart

suPHP

On a web server, suPHP allows PHP to run as the user and group that owns the file.

In WordPress, for example it allows to upload files, update wordpress itself or its plugins.

But obvious security issues can make this Apache module really dangerous for your other websites. Here is how I installed it only for WordPress.

http://wiki.gonzofamily.com/a/SuPHP

Git Server on Debian

After testing GIT, and without hesitation, I decided to abandon SVN/Subversion. I won’t write here one more article comparing them but I wrote (and update regularly) a wiki page explaining how to install it on Debian and give access via HTTP, SSH and HTML.

http://wiki.gonzofamily.com/a/Install_GIT_as_public_repository_on_Debian

I also noted how I transfered my existing local XCode repositories to this server, but I will improve this doc soon:

http://wiki.gonzofamily.com/a/GIT_and_XCode

PID on Mac OS X without Netstat

On Linux we use to see the Processes associated to a listening network port with the following command
netstat -p

On Windows it’s
netstat -o

Sadly on Mac OS X this option doesn’t exist. The equivalent will be
sudo lsof -P

So we can imagine that we need to know which program dare listening on port 123
sudo lsof -Pn | grep 123

You will see something like that:

ntpd 21 root 20u IPv4 0x0899ace4 0t0 UDP *:123
ntpd 21 root 21u IPv6 0x0899ac08 0t0 UDP *:123
ntpd 21 root 22u IPv6 0x0899baa4 0t0 UDP [::1]:123
ntpd 21 root 23u IPv6 0x0899b8ec 0t0 UDP [fe80:1::1]:123
ntpd 21 root 24u IPv4 0x0899b810 0t0 UDP 127.0.0.1:123
ntpd 21 root 25u IPv6 0x098b5658 0t0 UDP [fe80:4::cabc:c8ff:fe90:6472]:123
ntpd 21 root 27u IPv6 0x098b5b80 0t0 UDP [2002:3ba7:d4b1::cabc:c8ff:fe90:6472]:123
ntpd 21 root 28u IPv4 0x15463370 0t0 UDP 10.0.130.101:123
ntpd 21 root 30u IPv6 0x15464b80 0t0 UDP [2002:3ba7:d4b1::c3e:e29a:8de6:68cc]:123

So it was the NTP Daemon with the process ID 21…. petit coquin !

(Cf this page of my Wiki: http://wiki.gonzofamily.com/a/Port_listening_on_Mac,_Windows_or_Linux)

IPv6 Forwarding OVH

Vous arrivez peut-être sur cette page car vous galerez  à votre tour.

Le symptome :

Dès qu’on active le forwarding IPv6 sur un serveur dédié OVH on ne peut plus utiliser l’IPv6. Un ping6 indique “Network unreachable”.

Dans le fichier /etc/sysctl.conf vous avez ajouté la ligne suivante :

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1>

C’est bien indiqué : en activant cette option on perd la configuration automatique de l’ipv6 (Stateless Address Autoconfiguration).
Il faut donc indiquer votre routeur à la main dans /etc/network/interfaces (pour Debian) :

iface eth0 inet6 static
address 2001:DB8:1:52bb::1
netmask 56
up route -A inet6 add default gw 2001:DB8:1:52FF:FF:FF:FF:FF
down route -A inet6 del default gw 2001:DB8:1:52FF:FF:FF:FF:FF

Vous l’avez surement compris avec cette exemple, notre serveur est en fait sur un netmask /56 et sa gateway est basée sur l’ipv6 de votre host où vous remplacez les derniers octets ainsi:

aaaa:bbbb:cccc:ddFF:FF:FF:FF:FF

Cela me perturbait d’écrire /56 au netmask, mais OVH est formel sur cette page : http://guides.ovh.com/Ipv4Ipv6

A présent, je comprend mieux d’où viennent les erreurs kernel régulièrement affichées dans le syslog :

kernel: IPv6 addrconf: prefix with wrong length 56

Mac OS X : comment ajouter manuellement une imprimante Windows partagée

Ajouter une imprimante Windows sur Mac est très simple quand on peut parcourir les workgroup. Mais lorsque le listage ne fonctionne pas pour quelque raison que ce soit… on est bien embêtée !

Il existe en fait un bouton “Options avancée…” que l’on peut ajouter dans la barre de menu qui permet d’accomplir un ajout manuel. Tout est très bien expliqué sur le site du support d’apple

Mac OS X v10.5 ou ultérieur

  1. Choisissez Préférences Système à partir du menu Apple.
  2. Choisissez Imprimante & Fax à partir du menu Présentation.
  3. Cliquez sur le bouton + pour ajouter une imprimante.
  4. Appuyez sur la touche Contrôle tout en cliquant sur l’icône « Par défaut » (ou toute autre icône de la barre d’outils), puis choisissez Personnaliser la barre d’outils à partir du menu contextuel qui apparaît.
  5. Faites glisser l’icône Options avancées (l’engrenage) dans la barre d’outils.
  6. Cliquez sur Terminé.
  7. Cliquez sur l’icône Options avancées, ajoutée à la barre d’outils.
  8. Choisissez Windows dans le menu contextuel Type.
  9. Dans le champ URL, saisissez l’adresse de l’imprimante suivant l’un des formats ci-dessous :smb://groupe_de_travail/serveur/nom_de_partage
    smb://serveur/nom_de_partage/

printer

printer2

VPN Microsoft via Netasq

En ces jours où la grippe A se répend, nous avons changé de système VPN afin de l’installer plus facilement chez tout un chacun.

Ca sera du PPTP avec le login de l’AD à présent, c’est tout de même plus facile et ça fonctionne avec tous les systèmes. Même si sur Mac j’ai du cocher la case “envoyer tout le trafic sur la connexion VPN” dans les options avancées afin que ça fonctionne enfin sur notre serveur VPN en windows 2003, et pas sur le serveur VPN en windows 2008, allez savoir pourquoi.

Ma partie du travail n’a concerné que les reglages des firewalls et les tests sur différents clients, et les Netasq n’ont vraiment pas été faciles sur ce coup là. Un Netasq F60 et un F200, les 2 ont eu le même soucis : ça ne passe pas à l’authentification si on ne fait du nat que sur PPTP.

Après avoir tout essayé, une seule solution :

  1. faire du MAP BIDIRECTIONNEL
  2. faire tout le filtre au niveau des règles de filtrage ou je n’ai autorisé que le port PPTP et le protocol GRE.

La redirection Mes Documents echoue parfois

Avec active directory, on apprécie de rediriger le dossier Mes Documents sur un lecteur réseau afin de retrouver le même dossier sur tout ordinateur. D’autent plus qu’avec un ordinateur portable, la synchronisation assure automatiquement le relais quand on est en déplacement.

Malheureusement, d’une façon qui paraissait aléatoire, parfois la redirection était absente.

J’ai trouvé sur le site de microsoft la solution :

  1. Chargez la Stratégie de groupe appropriée du domaine.
  2. Cliquez sur Configuration utilisateur, cliquez sur Paramètres Windows, puis cliquez sur Redirection de dossiers.
  3. Cliquez avec le bouton droit sur le composant Redirection de dossiers approprié, puis cliquez sur Propriétés.
  4. Cliquez sur le paramètre De base sous l’onglet Cible, puis sous Paramètres, désactivez la case à cocher Accorder à l’utilisateur des droits exclusifs sur le nom de dossier.
  5. Enregistrez les paramètres, puis quittez.

mais en fait ça ne me plaisait pas. J’ai gardé cette option et j’ai préféré supprimer l’option “Déplacer le contenu de Documents vers le nouvel emplacement”.

image-4

Cela a résolu le soucis. Il faut dire que le message d’erreur trouvé dans l’observateur d’évènement était :

La redirection du dossier Mes documents a échoué. Les fichiers pour le dossier redirigé n’ont pas pu être déplacés vers le nouvel emplacement. Le dossier est configuré pour être redirigé vers <\\Serveur\PERSO\%USERNAME%\Mes documents>. Les fichiers ont été déplacés de <C:\Documents and Settings\username\Mes documents> vers <\\Intranet\PERSO\username\Mes documents>. L’erreur suivante est survenue lors de la copie de <C:\Documents and Settings\username\Mes documents\Ma musique> vers <\\Serveur\PERSO\username\Mes documents\Ma musique> :
Cet ID de sécurité ne peut être défini en tant que propriétaire de cet objet. .

Pour plus d’informations, consultez le centre Aide et support à l’adresse

Convertir tous les noms au format Windows

Copier un dossier entier de mac vers pc devient vite un calvaire, en effet la copie est interrompue toutes les secondes pour prévenir qu’un nom de fichier est trop long.

En réalité le problème n’est pas la longueur mais des caractères spéciaux qui sont refusé par windows comme ? * / \ :…. etc

Voici une solution parmi d’autres pour renommer d’un coup tout le contenu d’un dossier. Je l’avais trouvé il y a 2 ans à cette adresse. En tout cas cela fonctionne parfaitement :

Créer un fichier mac2win.pl dont le contenu est :

#!/usr/bin/perl -w

# This script renames all the files supplied as command-line args
# where necessary so that the filename is acceptable to MS Windows
# Cameron Hayne (macdev@hayne.net), June 2004

use strict;

chomp(@ARGV = <STDIN>) unless @ARGV;

# The Microsoft document at
# http://support.microsoft.com/default…b;EN-US;100108
# says that the following characters are not allowed in filenames
# in each of the specified filesystems:
# FAT:   .  ”  /  \  [  ]  |  :  ;  ,  =
# NTFS:  ?  ”  /  \  <  >  |  :  *

# We don’t do anything with the dot (.) since it clearly is allowable
# in spite of what that document says.
# And we don’t do anything with the slash (/) since that character
# will not occur in OS X filenames and modifying it would cause
# troubles when a file path (with directories) is specified.
# The changing of the filenames is done via the ‘tr’ statements below.
# Each occurence of a character in the first curly brackets
# is replaced by the character in the second curly brackets.

foreach my $filename (@ARGV)
{
my $orig_filename = $filename;

$filename =~ tr{\\}{-};
$filename =~ tr{*?}{X};
$filename =~ tr{“><[]|:;,=}{_};

unless ($filename eq $orig_filename)
{
print “About to rename $orig_filename to $filename\n”;
if (-e $filename)
{
print “Oops, there already exists a file named $filename\n”;
print “Skipping the rename – you will have to do it manually\n”;
}
else
{
rename($orig_filename, $filename);
}
}
}

Puis en ligne de commande (dans le terminal donc) :

find /monrep | /rep/mac2pc.pl


Et voila, tous les fichiers sont renommés !

Malheureusement ce script ne remplace pas les / , il ne reste que cela à corriger. Et malheureusement il est très utilisé par les dates.

Nettoyer les fichiers mac cachés sur un partage Windows

La copie et le déplacement de dossiers sur nos serveurs Windows sont un vrai cauchemard à cause des nombreux fichiers caché de mac. Ceci commencent par un point (les dot files).

Je me connecte alors avec mon mac à un lecteur partagé sous windows. Et je lance la commande suivante pour me débarrasser de tous d’un coup :

find /Volume/nom-partage -name “.*” -delete

C’est radicale. Mais aucun fichier commençant par un point n’est nécessaire. On peut imaginer que parfois un .htaccess était important, mais pas dans les cas qui me concernent. On peut toujours faire une recherche avant :

find /Volume/nom-partage -name “.htaccess”