はじめに

この記事は、Ubuntu 18.04 LTSを使い続けているけれど「sudo apt install tor」してもサービスが起動しない・ログを見ても原因がわからない、そんな中級者以上のLinuxユーザー向けです。
読み進めることで、Torが起動しなくなる典型的な二つの理由(AppArmorプロファイルと設定ファイルの矛盾)を見分け、手元の環境に合わせて修正する方法が身に付きます。執筆のきっかけは、自社の検証環境で同じエラーが出て半日潰したため、同じ轍を踏まないように情報を整理しました。

前提知識

  • systemd/unitファイルの基本的な読み書き
  • journalctl -u でログを絞る操作
  • ファイル権限とSELinux/AppArmorの存在を聞いたことがある程度

Ubuntu 18.04のTorパッケージが起動しない背景

Ubuntu 18.04は2018年リリースのLTSであり、2023年以降セキュリティサポートはESM移行です。標準リポジトリのTorパッケージは0.4.5系で凍結されており、それ以降のAppArmorやsystemdの仕様変更に追従していません。その結果、「設定ファイルのパスが変わった」「AppArmorプロファイルが古い」という二重の齟齬が同時に発生し、起動をブロックします。以下ではこの二つの壁を順に突破する方法を示します。

具体的な手順と切り分け

Step 1: エラーログを確実に取る

まず現状を把握します。

Bash
sudo apt update && sudo apt install tor sudo systemctl restart tor # 失敗する journalctl -u tor --no-pager -n 50

よくある出力:

Job for tor@default.service failed ...
Process: 12345 ExecStart=/usr/bin/tor -f /etc/tor/torrc (code=exited, status=1/FAILURE)

この時点で「権限不足」「設定ミス」「AppArmor deny」の3通りが考えられます。以下の2行で切り分けます。

Bash
sudo aa-complain system_tor # AppArmorをcomplainモードに sudo systemctl restart tor

無事に緑の「active (running)」が出れば原因はAppArmorです。それでもダメなら設定ファイル側なのでStep 2へ進みます。

Step 2: AppArmorプロファイルを修正(complainモードで動いた場合)

complainモードで動作確認できたら、プロファイルを最新化します。

Bash
sudo nano /etc/apparmor.d/abstractions/tor # 以下の3行をコメントアウト or 削除 # /var/lib/tor/** r, # /var/log/tor/** r, # owner /run/tor/tor.pid rw, # 新しいパスを追加 /etc/tor/torrc r, /run/tor/** rw, /var/lib/tor/** rwk, /var/log/tor/** rw,

保存後、AppArmorをリロード:

Bash
sudo apparmor_parser -r /etc/apparmor.d/system_tor sudo aa-enforce system_tor sudo systemctl restart tor systemctl status tor # 緑になればOK

Step 3: 設定ファイルの矛盾を解消(complainモードでもダメだった場合)

AppArmorを無効にしても起動しない場合、ほぼ間違いなく/etc/tor/torrcに存在しないパスが記述されているか、権限が足りません。最小構成で動かしてみます。

Bash
sudo mv /etc/tor/torrc /etc/tor/torrc.backup sudo -u debian-tor tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc -f /dev/null --RunAsDaemon 0 --DataDirectory /var/lib/tor

エラーが出なければ元のファイルを1行ずつ戻して切り分けます。以下は頻出ミス:

  • Log notice file /var/log/tor/notices.log を指定しているがディレクトリが存在しない
  • User _torなど存在しないユーザを指定
  • /run/torが自動作成されないためPID書き込み失敗

手っ取り早く直すには、以下の最小/etc/tor/torrcを置くだけでも動きます。

DataDirectory /var/lib/tor
PidFile /run/tor/tor.pid
RunAsDaemon 1
User debian-tor

そのあとディレクトリと権限を補完:

Bash
sudo mkdir -p /var/log/tor /run/tor sudo chown debian-tor:debian-tor /var/log/tor /run/tor sudo chmod 700 /var/log/tor /run/tor sudo systemctl restart tor

ハマりポイントとエラー解決

  1. 「Operation not permitted」が出てAppArmorのログにdenyがない
    → Capabilitiesの問題。AmbientCapabilities=CAP_NET_BIND_SERVICEをunitファイルに追加する必要がある。

  2. 「Directory /var/lib/tor/.tor cannot be read」
    → DataDirectoryが2重に指定されている。tor-service-defaults-torrctorrc両方に書かない。

  3. AppArmorリロード後に即座にfail
    → プロファイルの文法エラー。aa-logprofで最新のallowルールを対話的に追加すると安全。

解決策まとめ

  • Ubuntu 18.04標準のTorパッケージはAppArmorプロファイルが古いので、手動でパスを追記 or complainモードにする
  • 設定ファイルに存在しないディレクトリ・ユーザを指定するとsystemdが即死するので、まず最小構成で起動を確認してから機能を追加する
  • どちらの原因でもjournalctl -u tor/var/log/audit/audit.logを同時に追うと早期に特定できる

まとめ

本記事では、Ubuntu 18.04 LTSでTorが起動しない理由を「AppArmorプロファイルの古さ」と「torrc設定の矛盾」に分類し、それぞれの切り分け・修正手順を示しました。

  • AppArmorをcomplainモードにしてTorが動けばプロファイル修正で復帰
  • それでもfailなら設定ファイルのパス・権限・ユーザ指定を疑う
  • 最小構成で動作確認してから機能を足すのが最短ルート

これで半日溶かすことなくTorネットワークに参加できます。今後は、Ubuntu 22.04以降では問題が解消されていること、およびTor公式リポジトリを使う方法についても記事にする予定です。

参考資料