Petit bug/debug de squid 3.5.12 en 16.04

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.

Petit bug/debug de squid 3.5.12 en 16.04

Messagede le Manchot Masqué » Ven 19 Aoû 2016, 15:36

Ci-après un petit compte rendu de debogage sur squid, un logiciel qui permet de créer un cache mémoire HTTP sur un serveur, en économisant les requêtes multiples et donc la bande passante réseau. Ce post s'adresse clairement à des administrateurs, l'intérêt de squid étant quasiment nul pour un particulier...

Le contexte :

Après la mise à jour de la 14.04 à 16.04, squid ne veut plus démarrer. Un

Code: Select All Code
squid -d4


affiche l'erreur
Code: Select All Code
Ipc::Mem::Segment::create failed to shm_open(/squid-cf__metadata.shm): (13) Permission denied


autrement dit, squid n'arrive pas à écrire dans /dev/shm.

Essai 1 : désactivation temporaire de apparmor avec

Code: Select All Code
service apparmor stop


et teste : ça ne change rien. Etrange : le dossier /dev/shm est pourtant bien en rwxrwxrwt, comme le /tmp, ce qui signifie que n'importe qui devrait pouvoir écrire dedans. Mais on va quand même tester en utilisateur standard pour essayer de mieux comprendre ce qui se passe.

Essai 2 : test en utilisateur

Squid fonctionne avec l'utilisateur et le groupe proxy. Dans /etc/passwd, on active le /bin/bash pour l'utilisateur proxy et on fait le simple test

Code: Select All Code
su proxy
touch /dev/shm/aa
ls -l aa
rm /dev/shm/aa


Là tout fonctionne normalement : le fichier est bien créé, puis effacé. Bien entendu après ce test, on remet le /usr/sbin/nologin pour l'usage proxy dans /etc/passwd.

Analyse

Il est curieux que le noyau autorise l'écriture dans /dev/shm via bash, mais pas via le binaire de squid, ce qui laisse à penser qu'apparmor est bien en cause quelque part.

On essaie donc de lancer le profil apparmor de squid à la main via:

Code: Select All Code
# apparmor_parser -r /etc/apparmor.d/usr.sbin.squid
Skipping profile in /etc/apparmor.d/disable: usr.sbin.squid


Et là le message est clair : le profil de squid est tout simplement désactivé ! Dans ce contexte, le noyau utilise donc ses permissions internes par défaut, lesquelles restreignent apparemment l'écriture dans /dev/shm, ce qui aboutit à notre message d'erreur.

La désactivation des profils sous apparmor repose sur de simples liens symboliques. Un petit ls dans /etc/apparmor.d/disable/ et l'on trouve

Code: Select All Code
usr.sbin.squid -> /etc/apparmor.d/usr.sbin.squid


Il suffit donc d'effacer /etc/apparmor.d/disable/usr.sbin.squid pour régler le problème.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
 
Messages: 314
Inscription: Lun 26 Mai 2008, 21:05
Localisation: Guebwiller
Distribution: Debian, Ubuntu
Niveau: Moitié plein !

Retourner vers Sur un logiciel

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron