web-dev-qa-db-fra.com

Problèmes avec les autorisations avec squid3

J'essaie de faire travailler des calmars. J'ai une configuration pour que le cache soit créé dans le répertoire /var/cache/squid3/. Cependant, j'obtiens cette erreur lors de l'exécution de squid avec la balise "-z" (c'est la première fois):

WARNING: Cannot write log file: /var/log/squid3/cache.log
/var/log/squid3/cache.log: Permission denied
 messages will be sent to 'stderr'.
2015/05/23 20:05:39 kid1| Creating missing swap directories
2015/05/23 20:05:39 kid1| /var/cache/squid3 exists
FATAL: Failed to make swap directory /var/cache/squid3/00: (13)
Permission denied
Squid Cache (Version 3.3.8): Terminated abnormally.
CPU Usage: 0.010 seconds = 0.007 user + 0.003 sys
Maximum Resident Size: 22560 KB
Page faults with physical i/o: 0

J'ai essayé de résoudre ce problème en tapant Sudo chmod 755 /var/cache/squid3, mais aussi sans succès.

Le résultat de namei -l /var/cache/squid3 est:

$ namei -l /var/cache/squid3
f: /var/cache/squid3
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root cache
drwxr-xr-x root root squid3

PDATE: J'ai créé de nouveaux répertoires dans /squid3_log et /squid3_cache. J'ai ensuite émis pour les deux:

Sudo chown -R root:proxy /squid3_log #and squid3_cache

et

Sudo chmod -R 777 /squid3_log #and squid3_cache

Il a corrigé l'autorisation refusée avec squid3_cache mais pas avec squid3_log.

PDATE: J'ai essayé de purger, de réinstaller, de reconfigurer et cela a fonctionné avec la première exécution squid3 -z. Mais ensuite, quand j'ai exécuté le debug squid3 -NCd1, il a montré:

2015/06/01 16:24:24| Starting Squid Cache version 3.3.8 for x86_64-pc-linux-gnu...
2015/06/01 16:24:24| Process ID 20379
2015/06/01 16:24:24| Process Roles: master worker
2015/06/01 16:24:24| With 65536 file descriptors available
2015/06/01 16:24:24| Initializing IP Cache...
2015/06/01 16:24:24| DNS Socket created at [::], FD 5
2015/06/01 16:24:24| DNS Socket created at 0.0.0.0, FD 6
2015/06/01 16:24:24| Adding nameserver 127.0.1.1 from /etc/resolv.conf
2015/06/01 16:24:24| Adding domain Home from /etc/resolv.conf
2015/06/01 16:24:24| Logfile: opening log /home/john/squid3_log/access.log
2015/06/01 16:24:24| WARNING: log parameters now start with a module name. Use 'stdio:/home/john/squid3_log/access.log'
2015/06/01 16:24:24| WARNING: no_suid: setuid(0): (1) Operation not permitted
2015/06/01 16:24:25| Unlinkd pipe opened on FD 11
2015/06/01 16:24:25| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
2015/06/01 16:24:25| Logfile: opening log /home/john/squid3_log/store.log
2015/06/01 16:24:25| WARNING: log parameters now start with a module name. Use 'stdio:/home/john/squid3_log/store.log'
2015/06/01 16:24:25| Swap maxSize 15360000 + 16384 KB, estimated 1182798 objects
2015/06/01 16:24:25| Target number of buckets: 59139
2015/06/01 16:24:25| Using 65536 Store buckets
2015/06/01 16:24:25| Max Mem  size: 16384 KB
2015/06/01 16:24:25| Max Swap size: 15360000 KB
2015/06/01 16:24:25| Rebuilding storage in /home/john/squid3_cache (no log)
2015/06/01 16:24:25| Using Least Load store dir selection
2015/06/01 16:24:25| Current Directory is /home/john
2015/06/01 16:24:25| Loaded Icons.
2015/06/01 16:24:25| HTCP Disabled.
2015/06/01 16:24:25| Sending SNMP messages from [::]:3129
2015/06/01 16:24:25| WARNING: no_suid: setuid(0): (1) Operation not permitted
2015/06/01 16:24:25| Pinger socket opened on FD 17
2015/06/01 16:24:25| /var/run/squid3.pid: (13) Permission denied
2015/06/01 16:24:25| Closing HTTP port [::]:3128
FATAL: Could not write pid file
Aborted (core dumped)

J'utilise Ubuntu 14.04 LTS (Trusty Tahr) et la dernière version de Squid3.

3
TheBro21

squid3 s'exécute sous le nom d'utilisateur proxyname__. Vous devez donc définir l'utilisateur propriétaire (et le groupe) comme proxyname__, puis définir les autorisations en conséquence.

Vous pouvez procéder comme suit pour remplacer de manière récursive le propriétaire et le groupe de propriétaires de tous les fichiers sous /var/cache/squid3 en utilisateur proxyet groupe proxyrespectivement:

Sudo chown -R proxy:proxy /var/cache/squid3 

Assurez-vous également que le propriétaire dispose de la bonne permission, celle que vous avez actuellement, à savoir 0755.

Dans votre cas, comme vous pouvez le constater, le répertoire /var/cache/squid3 est uniquement accessible en écriture pour rootname__, de sorte que vous obteniez l’erreur d’autorisation refusée.

9
heemayl

Dans mon cas (Ubuntu 16.04, Squid 3.5.12), le problème se trouve dans les règles AppArmor standard et dans le répertoire de cache non standard, recherchez /var/log/syslog:

Sep 26 23:08:34 server2 kernel: [ 6458.643201] audit: type=1400 audit(1506449314.016:36): apparmor="DENIED" operation="mkdir" profile="/usr/sbin/squid" name="/BIG/squid_spool/00/00/" pid=4377 comm="squid" requested_mask="c" denied_mask="c" fsuid=13 ouid=13

Les liens symboliques ne fonctionnent pas dans ce cas aussi.

Solutions possibles:

  • Changez l'option cache_dir en standard /var/spool/squid et n'utilisez pas de liens symboliques dans ce chemin;
  • Changer le fichier /etc/apparmor.d/usr.sbin.squid et recharger apparmor:

    Sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.squid
    

    Mais vous pouvez avoir de petits problèmes sur les mises à jour.

  • Monter une partition séparée pour le cache Squid.
0
Alexey Vazhnov