SSブログ

clamav-daemon.service の停止処理に想定外の時間を要する [Debian]

[ソフトウェアのバージョン]
・clamav-daemon 0.103.3+dfsg-0+deb11u1 (on Debian 11)

1. 発生事象


clamav-daemon.service の停止処理に想定外の時間を要する。

・shutdown 時に、度々発生する。
・90 秒(systemd のタイムアウトのデフォルト値) の待ち時間が発生する。
・clamdscan が実行中か否かに関係なく発生する。

(補足)
・Debian 10 (clamav-daemon 0.103.3+dfsg-0+deb10u1) でも同様の問題が発生する。
・CentOS 7 (clamd-0.103.3-5.el7.x86_64) では発生しない。


2. 対処方法


clamav-daemon.service の停止時のタイムアウト時間を短縮する。
このため、/lib/systemd/system/clamav-daemon.service を編集する。

# diff clamav-daemon.service clamav-daemon.service.org
14d13
< TimeoutStopSec=30


・[Service] 欄の TimeoutStopSec の設定値を変更する。
・停止処理でのタイムアウトまでの時間が変更される。



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Debian 11のカーネルのバージョンアップ [Debian]

Debian 10.10 からアップグレードを行った Debian 11.0 において、カーネルのバージョンアップを行った。
(3.16.0-4-686-pae → 5.10.0-8-686-pae)

1. 実施した理由


カーネルのバージョンが Debian 10.10 と同じことに気付き、確認してみると、カーネルのバージョンアップが行われていなかった。

更新パッケージの適用を定期的に行っているが、何故かカーネルは古いバージョンのままであった。

・Debian 10.10 において、このような状況であった。
・以前は、カーネルのバージョンアップも問題なくできていた。


2. 得られた効果


今回のカーネルのバージョンアップにより、下記の問題が解決できた。

・iptables 1.8.7-1 の起動エラー … (注1)
・apache2 2.4.48 の起動エラー … (注1)
・e2scrub_reap.service (e2fsprogs 1.46.2-2) の起動エラー … (注2)

(注1)
cf. https://dan-project.blog.ss-blog.jp/2021-09-08
(注2)
cf. https://dan-project.blog.ss-blog.jp/2021-09-10


3. 実施手順


今回実施した手順は、以下の通りである。

(1) カーネルのバージョンアップ

[パッケージの更新]
# apt-get install linux-image-5.10.0-8-686-pae-unsigned

[システムの再起動]
# shutdown -r now


(2) apahce のバージョンアップ

# apt-get install libapr1 libaprutil1 libaprutil1-dbd-sqlite3  libaprutil1-ldap
# apt-get install apache2 apache2-bin apache2-data apache2-utils


(3) iptables のバージョンアップ

# apt-get install iptables libiptc0 libxtables12


(4) 古いカーネル、不要なパッケージの削除

# dpkg --purge linux-image-3.16.0-4-686-pae

# apt-get clean
# apt-get autoclean
# apt-get autoremove


(5) apparmor の無効化

[サービスの停止]
# systemctl stop apparmor
# systemctl disable apparmor

[システムの再起動]
# shutdown -r now

[パッケージの削除] … パッケージを削除する場合
# dpkg --purge apparmor


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Debian 11への追加対応 [Debian]

先日 Debian 11.0 へのアップグレードを行った環境に、追加の対応を行った。
これで、アップグレード前の Debian 10.10 と同程度に使用できる状態となったと思われる。

1. 追加対応

1-1. ブート時の e2scrub_reap.service のエラー


(1) 発生事象


(a) エラーメッセージ

Failed to Start Remove Stale Online ext4 Metadata Check Snapshots.
see 'systemctl status e2scrub_reap.service' for details.


(b) ブート後の当該サービスの状態

# systemctl status e2scrub_reap.service
* e2scrub_reap.service - Remove Stale Online ext4 Metadata Check Snapshots
     Loaded: loaded (/lib/systemd/system/e2scrub_reap.service; enabled; \
             vendor preset: enabled)
     Active: failed (Result: exit-code) ...
       Docs: man:e2scrub_all(8)
    Process: 833 ExecStart=/sbin/e2scrub_all -A -r (code=exited, \
             status=218/CAPABILITIES)
   Main PID: 833 (code=exited, status=218/CAPABILITIES)
...

# systemctl is-enabled e2scrub_reap.service
enabled


(c) ブート後のサービスの再起動の結果

# systemctl restart e2scrub_reap.service
Job for e2scrub_reap.service failed because the control process exited \
with error code.
See "systemctl status e2scrub_reap.service" and "journalctl -xe" for \
details.


(2) 対処方法


取り敢えず、当該サービスの自動起動を無効化する。

# systemctl stop e2scrub_reap.service
# systemctl disable e2scrub_reap.service

1-2. journald の永続的なジャーナル機能の有効化


(1) 発生事象


journald の永続的なジャーナル機能が有効となる。
(ディスク上の /var/log/journal/ への出力となる。)


(2) 対処方法


無効化するには、下記の手順により、/var/log/journal/ を削除する。


(a) サービスの停止

# systemctl stop systemd-journald.service
# systemctl stop systemd-journald.socket


(b) ディレクトリの削除

# rm -fr /var/log/journal


(c) サービスの開始

# systemctl start systemd-journald.socket
# systemctl start systemd-journald.service


(補足)
原因は、/var/log/journal/ が存在するためである。
・Debian 11.0 へのアップグレード時に作成されたものと思われる。
・journald の初期設定では、/var/log/journal/ の有無により出力先が変わる。
 存在する場合: ディスク(/var/log/jounal/)へ出力
 存在しない場合: RAM ディスク(/run/log/journal/)へ出力


1-3. Wireshark の起動エラー


(1) 発生事象

[エラーメッセージ]
wireshark: error while loading shared libraries: libQt5Core.so.5: \
cannot open shared object file: No such file or directory


・Wireshark のバージョン: wireshark-qt 3.4.4-1
・該当するライブラリは存在する。

# find /usr/lib -name libQt5Core.so\*
/usr/lib/i386-linux-gnu/libQt5Core.so.5.15.2
/usr/lib/i386-linux-gnu/libQt5Core.so.5 … libQt5Core.so.5.15.2 へのリンク
/usr/lib/i386-linux-gnu/libQt5Core.so.5.15 … libQt5Core.so.5.15.2 へのリンク


(2) 対処方法


該当するライブラリから、余分な情報を削除する。

# /usr/lib/i386-linux-gnu
# cp -p libQt5Core.so.5.15.2 libQt5Core.so.5.15.2.org
# strip --remove-section=.note.ABI-tag libQt5Core.so.5.15.2


'for GNU/Linux 3.17.0' という部分が問題の原因とのこと。
(cf. https://myn.meganecco.org/1562249040.html)

# file libQt5Core.so.5.15.2.org
libQt5Core.so.5.15.2.org: ELF 32-bit LSB shared object, Intel 80386, \
version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, \
BuildID[sha1]=b682831b8118e8378863be17f9e45a8cd6c66e31, \
for GNU/Linux 3.17.0, stripped

# file libQt5Core.so.5.15.2
libQt5Core.so.5.15.2: ELF 32-bit LSB shared object, Intel 80386, \
version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, \
BuildID[sha1]=b682831b8118e8378863be17f9e45a8cd6c66e31, stripped

2. 備考


(1) インストール済のパッケージ数の増減


・Debian 10.10: 1579
・Debian 11.0: 1603 (+24)


(2) ディスクの使用量の増減


・Debian 10.10: 約 3.6GB を使用
・Debian 11.0: 約 3.8GB を使用 (+200MB)



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Debian 11へのアップグレード後の不要パッケージの削除 [Debian]

Debian 11 へのアップグレードにより、不要なパッケージが多数発生した。

・'apt-get autoremove' で、多数のパッケージが削除対象となる。
・必要なパッケージが削除対象に含まれている。
・対象とする環境は、これまでにアップグレードを繰り返してきた環境である。

このため、この機会に、パッケージ毎に削除の有無を検討し、対応することにした。

1. 手順


(1) 'apt-get autoremove' で削除対象のパッケージの一覧を取得


削除開始時の確認に対して、No を回答し、パッケージを削除しない。


(2) 該当するパッケージについての削除の有無を検討

(3) パッケージの削除には、'dpkg --purge <package name>' を使用


2. 手順の実施


(1) 1 回目

  bsdmainutils
* cpp-8 ... cpp-10 が存在する
  distro-info-data
  javascript-common
* libapt-inst2.0 ... libapt-pkg5.0 の被依存パッケージ
* libapt-pkg5.0 ... libapt-pkg6.0:i386 が存在
* libasan5 ... libasan6:i386 が存在
  libayatana-appindicator3-1
  libayatana-ido3-0.4-0
  libayatana-indicator3-7
  libbind9-161
  libboost-python1.67.0
* libcdio18 ... libcdio19:i386 が存在
* libcodec2-0.8.1 ... libcodec2-0.9:i386 が存在
  libcroco3
  libcrystalhd3
  libcupsfilters1
  libcupsimage2
  libdbusmenu-glib4
  libdbusmenu-gtk3-4
* libdns1104 ... libdns1110:i386 が存在
  libdns1110
* libevent-2.1-6 ... libevent-2.1-7:i386 が存在
* libexiv2-14 ... libexiv2-27:i386 が存在
* libfluidsynth1 ... libfluidsynth2:i386 が存在
* libgssdp-1.0-3 ... libgssdp-1.2-0:i386 が存在
* libgupnp-1.0-4 ... libgupnp-1.2-0:i386 が存在
* libhogweed4 ... libnettle6 の被依存パッケージ
* libicu63 ... libicu67:i386 が存在
* libilmbase23 ... libilmbase25:i386 が存在
* libip4tc0 ... libip4tc2:i386 が存在
* libip6tc0 ... libip6tc2:i386 が存在
  libiptc0
  libirs161
* libisc1100 ... libisc1105:i386 が存在
  libisc1105
  libisccc161
  libisccfg163
* libisl19 ... libisl23:i386 が存在
  libjs-jquery
  libjs-sphinxdoc
  libjs-underscore
* libjson-c3 ... libjson-c5:i386 が存在
* libjte1 ... libjte2:i386 が存在
  libkyotocabinet16v5
* libllvm7 ... libllvm11:i386 が存在
  liblwres161
* libmpdec2 ... libmpdec3:i386 が存在
  libmpx2
* libmysofa0 ... libmysofa1:i386 が存在
* libnettle6 ... libnettle8:i386 が存在
* libnfs12 ... libnfs13:i386 が存在
* libnftables0 ... libnftables1:i386 が存在
  liboauth0
* libopenexr23 ... libopenexr25:i386 が存在
* libperl5.28 ... libperl5.32:i386 が存在
* libpgm-5.2-0 ... libpgm-5.3-0:i386 が存在
* libpoppler82 ... libpoppler102:i386 が存在
* libprocps7 ... libprocps8:i386 が存在
* libpython2.7 ... libpython3.9:i386 が存在
* libpython3.7-minimal ... libpython3.9-minimal:i386 が存在
* libpython3.7-stdlib ... libpython3.9-stdlib:i386 が存在
* librpm8 ... librpm9 が存在
* librpmbuild8 ... librpmbuild9 が存在
* librpmio8 ... librpmio9 が存在
* librpmsign8 ... librpmsign9 が存在
* libsnmp30 ... libsnmp40:i386 が存在
* libssl1.0.2 ... libssl1.1:i386 が存在
  libtagc0
* libusbmuxd4  ... libusbmuxd6:i386 が存在
* libvpx5  ... libvpx6:i386 が存在
* libwireshark11 ... libwireshark14:i386 が存在
* libwiretap8 ... libwiretap11:i386 が存在
* libwscodecs2 ... libwsutil9 の被依存パッケージ
* libwsutil9 ... libwsutil12:i386 が存在
* libx264-155 ... libx264-160:i386 が存在
* libx265-165 ... libx265-192:i386 が存在
  libxapian30
* libxcb-util0 ... libxcb-util1:i386 が存在
  libxcb-xf86dri0
  lsb-release
* perl-modules-5.28 ... perl-modules-5.32 が存在
  python-six
* python3.7-minimal ... python3.9-minimal が存在
  sgml-base
  x11proto-input-dev
  x11proto-kb-dev


・'apt-get autoremove' で削除対象となるパッケージの数: 87
・行頭に * を付けたパッケージを削除する。


(2) 2 回目

  bsdmainutils
  distro-info-data
  javascript-common
  libayatana-appindicator3-1
  libayatana-ido3-0.4-0
  libayatana-indicator3-7
  libbind9-161
  libboost-python1.67.0
  libcroco3
  libcrystalhd3
  libcupsfilters1 ... printing
  libcupsimage2 ... printing
  libdbusmenu-glib4
  libdbusmenu-gtk3-4
  libdns1110
  libiptc0
  libirs161
  libisc1105
  libisccc161
  libisccfg163
  libjs-jquery
  libjs-sphinxdoc
  libjs-underscore
  libkyotocabinet16v5
  liblwres161
  libmpx2
  liboauth0
  libtagc0
  libxapian30
  libxcb-xf86dri0
! lsb-release
  python-six
  sgml-base
  x11proto-input-dev ... dummy package (only doc)
  x11proto-kb-dev ... dummy package (only doc)


・apt-get autoremove で削除対象となるパッケージの数: 35
・'apt-get autoremove' を実行する(削除対象のパッケージが削除される)。
・行頭に ! を付けたパッケージについては、後で再インストールする。


3. 実施結果の検証


今回は、下記の手順を実施した場合と同じ結果となった。

・'apt-get autoremove' の実行
・アンインストールされた lsb-release パッケージを再インストール



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Debian 11へのアップグレード後の問題点への対応 [Debian]

先日、Debian 10.10 から Debian 11.0 へのアップグレードを行った。
致命的なエラーは発生しなかったが、数個のパッケージで問題が発生した。
以下は、上記の発生事象と対処方法をまとめたものである。

1. Emacs 27.1 の起動エラー


(1) 発生事象


Emacs 27.1 の起動時にエラが発生する。
このため、~/.emacs に設定している '(shell)' が実行されない。

[エラーメッセージ]
Symbol's function definition is void: process-kill-without-query

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the '--debug-init' option to view a complete error backtrace.


(2) 対処方法


~/.emacs に、下記の設定を追加する。

;; add function (Emacs-27 or later)
(when (>= emacs-major-version 27)
  (defun process-kill-without-query (process &optional flag)
    (set-process-query-on-exit-flag process nil)
    t))


(補足)
obsolete になっていた関数が、本バージョンで削除されたとのこと。
(cf. https://twitter.com/shg/status/1295166707594452993)


2. iptables 1.8.7-1 の起動エラー


(1) 発生事象


iptables の起動時にエラーが発生する。

[エラーメッセージ]
iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: \
Invalid argument


(2) 対処方法


Debian 10 の iptables 1.8.2 にバージョンダウンする。

(a) パッケージのダウンロード

iptables_1.8.2-4_i386.deb
libip4tc0_1.8.2-4_i386.deb
libip6tc0_1.8.2-4_i386.deb
libiptc0_1.8.2-4_i386.deb
libxtables12_1.8.2-4_i386.deb


https://packages.debian.org/ja/ にアクセス
・[パッケージディレクトリを検索] の Distribution: で buster を選択
・キーワードにパッケージ名を入力し、検索を実行
・検索されたパッケージをダウンロードし、/tmp/iptables-1.8.2/ に保存


(b) パッケージのバージョンダウン

# cd /tmp/iptables-1.8.2
# dpkg -i *.deb

3. Apache 2.4.48 の起動エラー


(1) 発生事象


Apache の起動時にエラーが発生する。

[エラーメッセージ]
Function not implemented: AH00141: Could not initialize random number \
generator


(2) 対処方法


Debian 10 の Apache 2.4.38 にバージョンダウンする。

(a) パッケージのダウンロード

apache2-bin_2.4.38-3+deb10u5_i386.deb
apache2-data_2.4.38-3+deb10u5_all.deb
apache2-utils_2.4.38-3+deb10u5_i386.deb
apache2_2.4.38-3+deb10u5_i386.deb
libapr1_1.6.5-1+b1_i386.deb
libaprutil1-dbd-sqlite3_1.6.1-4_i386.deb
libaprutil1-ldap_1.6.1-4_i386.deb
libaprutil1_1.6.1-4_i386.deb


http://packages.debian.org/ja/ の [パッケージディレクトリを検索] を使用
・検索されたパッケージをダウンロードし、/tmp/apache-2.4.38/ に保存


(b) パッケージのバージョンダウン

# cd /tmp/apache-2.4.38
# dpkg -i *.deb

4. halt-local.service が機能しない


(1) 発生事象


/lib/systemd/system/halt-local.service が機能しない。
このため、shutdown 時に /usr/sbin/halt.local が実行されない。

(補足)
・パッケージのバージョン: systemd 247.3-6
・halt-local.service の状態には問題はない。

# systemctl status halt-local.service
* halt-local.service - /usr/sbin/halt.local Compatibility
     Loaded: loaded (/lib/systemd/system/halt-local.service; static)
     Active: inactive (dead)


・同じ Unit ファイルを使用している Debian 10、CentOS 7 では、正常に機能する。


(2) 対処方法


取り敢えずは、下記の手順を実施する。

(a) /lib/systemd/system/halt-local.service の編集

# diff halt-local.service halt-local.service.org
21,23d20
< 
< [Install]
< WantedBy=shutdown.target


(b) 変更内容の反映

# systemctl enable halt-local.service


・/etc/systemd/system/shutdown.target.wants/halt-local.server が作成される。
 (/lib/systemd/system/halt-local.service へのシンボリック・リンク)
・systemctl is-enabled halt-local の実行結果が変わる。
 (新) enabled
 (旧) static



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Debian 11へのアップグレード [Debian]

Debian 10.10 (buster) から Debian 11.0 (bullseye) へのアップグレードを行った。
3 個のパッケージで実行時のエラーが発生したが、致命的なエラーは発生しなかった。
詳細は、以下の通りである。

・参考資料
 https://www.debian.org/releases/bullseye/i386/release-notes/ch-upgrading.ja.html

1. アップグレードの前処理


(1) buster の最新パッケージへのアップデート


インストールされているパッケージを最新版にアップデートする。


(2) エラー状態にあるパッケージの確認


(a) 状態確認

# dpkg --audit


下記の状態のパッケージに関する情報が出力される。
・インストールが未完了のパッケージ (Half-Installed)
・設定に失敗したパッケージ (Failed-Config)
・何らかのエラー状態にあるパッケージ


(b) 対応


可能な限り問題の解決を行う。
問題が解決できない場合には、アンインストールを検討する。


(3) hold 状態にあるパッケージの確認


(a) 状態確認

# apt-mark showhold


該当するパッケージに関する情報が出力される。


(b) 対応


アップデートしたいパッケージは、hold 状態を解除する。
アップデートから除外したいパッケージは、hold 状態にする。

(hold の設定の場合)
# apt-mark hold <pkg_name>
(hold の解除の場合)
# apt-mark unhold <pkg_name>


(4) apt のキャッシュの削除

# apt-get clean
# apt-get autoclean


(5) システムのバックアップ


アップグレードが失敗した場合のために、システム・バックアップを行う。


2. アップグレード

2-1. リポジトリの変更


(1) /etc/apt/sources.list の編集


(a) buster を bullseye に変更する。

# cp -p sources.list sources.list.sav
# sed 's/buster/bullseye/g' sources.list.sav > sources.list


(b) securiry update の設定方法が変更されてため、これに対応する。

(変更前)
deb http://security.debian.org/ buster/updates main contrib non-free
deb-src http://security.debian.org/ buster/updates \
main contrib non-free

(変更後)
deb http://security.debian.org/debian-security bullseye-security \
main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security \
main contrib non-free


cf. https://www.debian.org/releases/stable/errata


(2) /etc/apt/sources.list の編集内容の反映

# apt-get update

2-2. 最小アップグレード


(1) 必要なディスク容量の確認

# apt-get -o APT::Get::Trivial-Only=true dist-upgrade


・/var/cache/apt/archives/ に必要なディスク容量が出力される。
・必要な領域がない場合には、その旨のメッセージが出力される。


(2) インストールされているパッケージの最小アップデート

# apt-get upgrade | tee /work/upgrade.log
または
# apt upgrade --without-new-pkgs | tee /work/upgrade.log


・他のパッケージのインストール/削除が不要なパッケージのみが対象となる。
・設定変更の可否の確認に対しては、現在の設定を使用する方を回答する。


2-3. 完全アップグレード
# apt-get dist-upgrade | tee /work/dist-upgrade.log
または
# apt full-upgrade | tee /work/dist-upgrade.log


・システムの完全なアップグレードが行われる。
・設定変更の可否の確認に対しては、現在の設定を使用する方を回答する。


3. アップグレード後の処理


(1) apt のキャッシュの削除

# apt-get clean
# apt-get autoclean


(2) システムのバックアップ


アップグレード直後のシステム・バックアップを行う。


(3) 不要となったパッケージの削除


下記の理由から、ここでは 'apt-get autoremove' を実行しない。
・'apt-get autoremove' で削除対象となるパッケージが多数ある。
・削除対象には、必要と思われるパッケージが含まれている。

削除対象となるパッケージの一覧のみを取得し、削除の有無は後程検討する。


(4) 設定ファイルの更新

# find /etc -name \*-dist
# find /etc -name \*-new
# find /etc -name \*-old


・/etc 以下の *-{dist,new,old} ファイルで必要なもの採用する。
・/etc/logrotate.d/ では、上記ファイルの存在が問題となる。


(5) apt のキャッシュの削除

# apt-get clean
# apt-get autoclean


(6) 再起動

# shutdown -r now

4. 備考


(1) インストール済のパッケージ数の増減


・Debian 10.10: 1579
・Debian 11.0: 1690 (+111)


(2) 実行時にエラーを発生するパッケージ


・Apache 2.4.48 … 異常終了
・iptables 1.8.7 … 異常終了
・Emacs 27.1 … 一部の機能が正常に機能しない

(備考)
対応方法について、現在調査中。



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

clamdがLocalSocketを使用できないエラーが発生する (Debian 10) [Debian]

[ソフトウェアのバージョン]
clamdscan 0.103.2+dfsg-0+deb10u1
anacron 2.3-28

1. 発生事象


clamd が LocalSocket を使用できないエラーが発生する。

[エラー情報]
ERROR: Could not connect to clamd on LocalSocket /var/run/clamav/clamd.ctl: \
Connection refused

2. 原因


anacron により、ブート直後に clamdscan が実行されることがあるためである。

・anacron は、/lib/systemd/system/anacron.timer から実行される。
 前回の実施状況により、ブート直後に anacron が実行されることがある。

anacron により clamdscan を実行している。
 /etc/cron.daily/clamav-scan で設定している。

/var/run/clamav/clamd.ctl が作成されるまでに、少々時間を要する。
 このため、clamd.ctl が作成される前に、clamdscan が実行されることがある。


3. 対処方法


下記の手順により、ブート直後の clamdscan の実行を回避する。

(1) /lib/systemd/system/anacron.timer を変更する場合


(a) /lib/systemd/system/anacron.timer の編集

# diff anacron.timer anacron.timer.org
7c7
< OnBootSec=5min
---
> Persistent=true


・[Timer] 欄の 'Persistent=true' の削除
 ブート直後に anacron が実行されないようにする。

・[Timer] 欄への 'OnBootSec=5min' の追加
 ブートの 5分後に anacron を実行する。
 (clamd.ctl が作成されるまでの待ち時間を設けている。)


(b) 変更内容の反映

# systemctl daemon-reload


(2) /etc/systemd/system/anacron.timer を作成する場合


(a) /etc/systemd/system/anacron.timer の作成


/lib/systemd/system/anacron.timer をコピーする。


(b) /etc/systemd/system/anacron.timer の編集


/lib/systemd/system/anacron.timer の場合と同じ。


(c) 変更内容の反映

# systemctl daemon-reload
# systemctl enable anacron.timer


(補足)
/etc/systemd/system/timers.target.wants/anacron.timer が存在する。
ファイルの内容は、下記のいずれかである。
・/lib/systemd/system/anacron.timer へのリンク
・/etc/systemd/system/anacron.timer へのリンク


[備考]


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

aptコマンドのハイライト表示の無効化 [Debian]

[ソフトウェアのバージョン]
OS: Debian 10.7
apt 1.8.2.2

1. 発生事象


いつの間にか、apt コマンドでパッケージの検索や一覧表示が可能になっていた。
・apt search、apt list、等
・従来は、apt-chache search、dpkg -l、dpkg-query --show で行っていた。

しかし、パッケージの検索/一覧表示では、ハイライト表示により見づらくなることがある。
・実行結果の一部が緑色でハイライト表示される。
・使用している背景色を全く考慮しないため、非常に見づらいことがある。

(補足)
・ターミナル上で発生する。
・Emacs 上では、ハイライト表示は機能しない。


2. 対処方法


下記のオプションの指定により、ハイライト表示を無効化できる。

-o apt::color::highlight="^[[0m"


・^[ はバイナリ・コード(Ctrl + V の後に ESC キーを押下)である。
 色を付けるエスケープ・シーケンスを指定する。
・| cat - を追加することでも、取り敢えず、色付けを無効化できる。
・/etc/apt/apt.conf.d/xxx へのオプション指定でも対応できると思われる。



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

GPGの共通鍵での復号化で、CAST5アルゴリズムを使用できない (Debian 10) [Debian]

[ソフトウェアのバージョン]
gnupg 2.2.12-1+deb10u1 (on Debian 10)

1. 発生事象


GPG の共通鍵での復号化で、CAST5 アルゴリズムを使用できない。

・Emacs において、CAST5 で暗号化されたファイルの参照(復号化)に失敗する。
・gpg コマンドの実行の場合、復号化できるが、エラーメッセージが出力される。

[エラーメッセージ]

gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
gpg: Hint: If this message was created before the year 2003 it is
     likely that this message is legitimate.  This is because back
     then integrity protection was not widely used.
gpg: Use the option '--ignore-mdc-error' to decrypt anyway.
gpg: decryption forced to fail!


(補足)
・Debian 10 の GPG では、アルゴリズムが未指定の場合、AES256 が使用される。
・CentOS 7 の GPG では、上記の問題は発生しない。
 ・gnupg2-2.0.22-5.el7_5.x86_64 を使用。
 ・暗号化では、アルゴリズムが未指定の場合、CAST5 が使用される。
・Debian 10 の file コマンドでは、使用されているアルゴリズムを確認できる。


2. 対処方法


下記の手順を実施する。

(1) 古いアルゴリズム(3DES、CAST5) での復号化を可能にする。


オプション・ファイル(~/.gnupg/gpg.conf) に下記の設定を追加する。

ignore-mdc-error


(2) 連携する全環境において、AES256 をアルゴリズムのデフォルト値にする。


オプション・ファイル(~/.gnupg/gpg.conf) に下記の設定を追加する。

cipher-algo AES256

3. 備考


(1) GPG が共通鍵方式で使用するアルゴリズムのデフォルト値


・gpg 2.2: AES256
・gpg 2.1: AES128
・gpg 1.0 および gpg 2.0: CAST5



nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Debian 10のlogrotateの不具合 [Debian]

[ソフトウェアのバージョン]
logrotate 3.14.0-4
systemd 241-7~deb10u4
clamdscan 0.102.2+dfsg-0+deb10u1

1. 発生事象


clamd のログファイルの切替が有効とならないことがある。

・該当するファイルは、/var/log/clamav/clamav.log である。
・logrotate でのファイルのローテーションは実行されている。
 (cf. /var/lib/logrotate/status)
・clamd でのログの出力先が切り替っていない。
 ログファイル内のログのタイムスタンプから判断できる。
・Debian 9 (logrotate 3.11.0-0.1) では発生しない。


2. 原因


ブート直後に logrotate が実行されることがあるためである。

(1) logrotate.timer により、ブート直後に logrotate が実行されることがある。


・00:00 に logrotate.timer を実行できない場合、次のブート時に発生する。
・logrotate.timer の設定に依存する。
 ([Timer] 欄の 'Persistent=true' により発生する。)


(2) ブート直後には、当該サービスは下記のような状態と思われる。


・常駐プロセスが起動されており、既にログファイルをオープンしている。
 (常駐プロセスがログファイルを掴んでいる。)
・サービスとしては起動の途中であり、まだ inactive 状態である。


(3) 当該サービスについて、logrotate は下記のような処理を実施する。


・設定されている条件に従い、ログファイルをローテーションする。
・サービスが active 状態の場合、SIGHUP の送信を行う。
 (cf. /etc/logrotate.d/clamav-daemon)


(4) 上記の場合、常駐プロセスでのログファイルの再オープンは実施されない。


・常駐プロセスでの SIGHUP の受信がないためである。
・このため、古いログファイルへの出力が継続される。

(補足)
・当該サービスは clamav-daemon、常駐プロセスは clamd である
・ブート直後以外での logrotate の実行では、問題は発生しない。
 (当該サービスが active 状態のため。)
・Debian 9 では、logrotate.timer は存在しない。
 (anacron は、cron から実行される。)


3. 対処方法


下記の手順により、ブート直後の logrotate の実行を回避する。

(1) /lib/systemd/system/logrotate.timer を変更する場合


(a) /lib/systemd/system/logrotate.timer の編集

# diff logrotate.timer logrotate.timer.org
6d5
< OnBootSec=5min
8a8
> Persistent=true


・[Timer] 欄の 'Persistent=true' の削除
 ブート直後に logrotate が実行されないようにする。

・[Timer] 欄への 'OnBootSec=5min' の追加
 ブートの 5分後に logrotate を実行する。
 (サービスが active なるまでの待ち時間を設けている。)

・anacron の delay に該当する設定項目はない。


(b) 変更内容の反映

# systemctl daemon-reload


(2) /etc/systemd/system/logrotate.timer を作成する場合


(a) /etc/systemd/system/logrotate.timer の作成


/lib/systemd/system/logrotate.timer をコピーする。


(b) /etc/systemd/system/logrotate.timer の編集


/lib/systemd/system/logrotate.timer の場合と同じ。


(c) 変更内容の反映

# systemctl daemon-reload
# systemctl enable logrotate.timer


(補足)
/etc/systemd/system/timers.target.wants/logrotate.timer が存在する。
ファイルの内容は、下記のいずれかである。
・/lib/systemd/system/logrotate.timer へのリンク
・/etc/systemd/system/logrotate.timer へのリンク


[備考]


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット