web-dev-qa-db-ja.com

squid3の許可に関する問題

私は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の最新バージョンを使用しています

3
TheBro21

squid3はユーザーproxyとして実行されるため、所有者ユーザー(およびグループ)をproxyとして設定し、それに応じて許可を設定します。

以下を実行して、/var/cache/squid3の下にあるすべてのファイルの所有者と所有者グループを、ユーザーproxyとグループproxyにそれぞれ再帰的に変更できます。

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

また、所有者が適切な許可を持っていることを確認してください。現在許可されている許可、つまり0755が許可します。

あなたの場合、ディレクトリを見るとわかるように、/var/cache/squid3rootによってのみ書き込み可能であるため、アクセス許可拒否エラーが発生していました。

10
heemayl

私の場合(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キャッシュ用に別のパーティションをマウントします。
0
Alexey Vazhnov