私はsquidを動作させようとしました。ディレクトリ/var/cache/squid3/
に作成されるキャッシュの構成があります。ただし、「-z」タグを付けてsquidを実行すると、このエラーが発生します(最初の実行です)。
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
PDATE:/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では拒否されませんでした。
PDATE:パージ、再インストール、再構成を試みましたが、最初の実行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の最新バージョンを使用しています
squid3
はユーザーproxy
として実行されるため、所有者ユーザー(およびグループ)をproxy
として設定し、それに応じて許可を設定します。
以下を実行して、/var/cache/squid3
の下にあるすべてのファイルの所有者と所有者グループを、ユーザーproxy
とグループproxy
にそれぞれ再帰的に変更できます。
Sudo chown -R proxy:proxy /var/cache/squid3
また、所有者が適切な許可を持っていることを確認してください。現在許可されている許可、つまり0755
が許可します。
あなたの場合、ディレクトリを見るとわかるように、/var/cache/squid3
はroot
によってのみ書き込み可能であるため、アクセス許可拒否エラーが発生していました。
私の場合(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
ただし、更新時に小さな問題が発生する場合があります。