Проблемы с разрешениями с squid3

Я пытался заставить кальмаров работать. У меня есть конфигурация для кэша, который будет создан в каталоге /var/cache/squid3/, Тем не менее, я получаю эту ошибку при запуске squid с тегом "-z" (это первый запуск):

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

Я пытался это исправить, набрав sudo chmod 755 /var/cache/squid3Однако также безуспешно.

Выход из namei -l /var/cache/squid3 является:

$ 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

ОБНОВЛЕНИЕ: я сделал новые каталоги в /squid3_log а также /squid3_cache, Я тогда выпустил для обоих:

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

а также

sudo chmod -R 777 /squid3_log #and squid3_cache

Исправлено разрешение, запрещенное в squid3_cache, но не в squid3_log.

ОБНОВЛЕНИЕ: я попытался очистить, переустановить, перенастроить, и он работал с первого запуска squid3 -z, Но потом, когда я запустил отладку squid3 -NCd1, Показал:

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)

Я использую Ubuntu 14.04 LTS (Trusty Tahr) и последнюю версию Squid3

3 ответа

squid3 работает как пользователь proxyТаким образом, вы устанавливаете владельца пользователя (и группу) как proxy и затем установите разрешения соответственно.

You can do the following to change recursively the owner and owner group of all files under /var/cache/squid3 пользователю proxy и группа proxy соответственно:

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

Also make sure the owner has the right permission, the permission you currently have ie 0755 Сделаю.

In your case, as you can see the directory /var/cache/squid3 is only writable by root, hence you were getting the permission denied error.

В моем случае (Ubuntu 16.04, Squid 3.5.12) проблема заключается в стандартных правилах AppArmor и нестандартном каталоге кэша. /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

Симлинки в этом случае тоже не работают.

Возможные решения:

  • Изменить вариант cache_dir к стандарту /var/spool/squid и не используйте символические ссылки в этом пути;
  • Изменить файл /etc/apparmor.d/usr.sbin.squid и перезагрузите apparmor:

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

    Но у вас могут быть небольшие проблемы с обновлениями.

  • Смонтировать отдельный раздел для кеша Squid.

Смените владельца на прокси для установленного каталога sudo chown proxy:proxy /usr/local/squid -R и установите пользователя прокси в squid.conf

vi /usr/local/squid/etc/squid.conf cache_effective_user proxy

Затем перезапустите Squid, проблема с отказом в разрешении исчезла и ВНИМАНИЕ: Не удается записать файл журнала, также решена.

Я проверил в Ubuntu 14.x моей системы, а затем прокомментируйте здесь

Другие вопросы по тегам