はじめに
この記事は、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: エラーログを確実に取る
まず現状を把握します。
Bashsudo 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行で切り分けます。
Bashsudo aa-complain system_tor # AppArmorをcomplainモードに sudo systemctl restart tor
無事に緑の「active (running)」が出れば原因はAppArmorです。それでもダメなら設定ファイル側なのでStep 2へ進みます。
Step 2: AppArmorプロファイルを修正(complainモードで動いた場合)
complainモードで動作確認できたら、プロファイルを最新化します。
Bashsudo 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をリロード:
Bashsudo 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に存在しないパスが記述されているか、権限が足りません。最小構成で動かしてみます。
Bashsudo 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
そのあとディレクトリと権限を補完:
Bashsudo 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
ハマりポイントとエラー解決
-
「Operation not permitted」が出てAppArmorのログにdenyがない
→ Capabilitiesの問題。AmbientCapabilities=CAP_NET_BIND_SERVICEをunitファイルに追加する必要がある。 -
「Directory /var/lib/tor/.tor cannot be read」
→ DataDirectoryが2重に指定されている。tor-service-defaults-torrcとtorrc両方に書かない。 -
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公式リポジトリを使う方法についても記事にする予定です。
参考資料
