CIFS: Attempting to mount が出力される

【環境】
$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

$ rpm -qa | grep autofs
autofs-5.1.4-40.el8.x86_64


CentOS 8のautofs でCIFSマウントしていたら、/var/log/messages に以下のようなログが出る。

Oct 25 21:40:01 cent8 kernel: CIFS: Attempting to mount //192.168.1.5/path


マウントする度に出るようなので、rsyslog 側で無視するようにする。

やり方は、先日の記事と同じ。
shobon.hatenablog.com



/etc/rsyslog.d 以下にファイル(任意のファイル名.conf )を作成し、無視するよう設定を記載。

# cat /etc/rsyslog.d/ignore-kernel-cifs-attempting.conf
if $programname == "kernel" and ($msg contains "CIFS: Attempting to mount") then stop

rsyslogを再起動

# systemctl restart rsyslog

/var/log/messages に Starting/Started system activity accounting tool が出力される

【環境】
$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)


/var/log/messages を眺めていたら、以下のメッセージが出ている事に気づいた。

Starting system activity accounting tool
Started system activity accounting tool

10分毎に出ていて、sysstat(sarコマンドのやつ)が出力している模様。

rsyslog 側で無視して、ファイルへ書き込まないようにする。

/etc/rsyslog.d/ignore-systemd-activity-accounting.conf を以下の通り作成。
(ファイル名は何でも良い)

if $programname == "systemd" and ($msg contains "system activity accounting tool") then stop

rsyslogを再起動

# systemctl restart rsyslog

以前に記事に書いたCent7でrsyslog に *** Slice of root のログが出力される場合と同じ対処。

shobon.hatenablog.com

CentOS8のtarオプションでひかっかる

CentOS8でファイルのバックアップをtarでやろうとしたら失敗した話。

【環境】
CentOS-7:tar-1.26-35.el7.x86_64
CentOS-8:tar-1.30-4.el8.x86_64


こんなファイルがあるディレクトリにて。

$ ls
aaa.txt  bbb.txt  ccc.tmp

.tmp のファイルは除外したいので、以下のように実行。

$ tar zcf backup.tar.gz ./* --exclude *.tmp

CentOS7までは、これで問題なかった。
が、CentOS8では次のようなエラーが出る。

tar: The following options were used after any non-optional arguments in archive create or update mode.  These options are positional and affect only arguments that follow them.  Please, rearrange them properly.
tar: --exclude `ccc.tmp' has no effect
tar: 前のエラーにより失敗ステータスで終了します

--exclude を書く位置が、cf より前になければいけない模様。

書き直して実行してみると、

$ tar --exclude *.tmp zcf backup.tar.gz ./*
tar: '-Acdtrux', '--delete' または '--test-label' オプションのうち、いずれか 1つを指定しなければなりません
より詳しい情報は 'tar --help' または 'tar --usage' で.

違うエラーが出た。

ちょっとネットで調べてみると、ハイフンがいるのか・・・
ということで以下が大丈夫な例。

$ tar --exclude *.tmp -zcf backup.tar.gz ./*

中身を確認すると、.tmp は除外されている。

$ tar zft backup.tar.gz
./aaa.txt
./bbb.txt


上記のエラーを調べた時、以下の記事を読んだ。

お前のtarオプション指定は古い - Qiita

ハイフンが無いのは古いのね(´・ω・`)

CentOS 8におけるfirewalldのdirectルール・続き

先日の以下の記事の続き。
shobon.hatenablog.com


ドキュメントにそれっぽい事があった。

firewalld.org

たぶん、以下の部分。

Due to implementation details of netfilter inside the kernel, if FirewallBackend=nftables is used direct rules that ACCEPT packets don't actually cause the packets to be immediately accepted by the system.

ドキュメントの上記の説明の下に4つ書いてあるのが回避策。

1.Rich Rules

リッチルールで書け、という尤もな手順。

2.Blanket Accept

zone=trusted にする、、、directルールの最後で拒否を書き忘れたらアウトな気がする。

3.Selective Accept

関連するサービスやポートを個別に許可する、、、ってdirectルールと二重で管理する事になる。

4.Revert to the iptables backend

バックエンドをiptablesにする。
これが前回の記事での苦し紛れの手だった。


1番から4番まで、バックエンドでiptablesを指定するのが推奨されない事を考えると、素直にリッチルールで書くのが最善。

という訳で、バックエンドをnftablesに戻して、リッチルールで書き直した(´・ω・`)

CentOS 8のfirewalldでdirectルールがうまく動作しなかった

CentOS 7を使い始めた頃、firewalldではdirectルールに設定を書いていた。

zoneの考え方に慣れず、以前のように iptables ライクに設定を書くことができるため、作法が良くないのかもしれないが、そんな使い方をしていた。

DNATやOUTPUTに関する設定も必要だった時もあり、directルールに書く事は少なくなかった。


CenOS 8がリリースされ、同じようにdirectルールを設定をしても、うまく動作しない。

おかしい、、、iptables コマンドでは確かにINPUTでWebサーバのポートが許可されているのに。

directルールに記載したものは、zoneより先に判定されると思っていた。

困ったので、気休めにRHEL 8のリリースノートを見ていると、

iptables に代わり、nftables フレームワークが、デフォルトのネットワークパケットフィルタリング機能を提供します。

firewalld デーモンで、デフォルトのバックエンドとして nftables が使用されるようになりました。

これか!?

バックエンドは、nftables から従来の iptables へ変更もできる模様。

$ cat /etc/firewalld/firewalld.conf
・
・略
# FirewallBackend
# Selects the firewall backend implementation.
# Choices are:
#       - nftables (default)
#       - iptables (iptables, ip6tables, ebtables and ipset)
FirewallBackend=nftables    ←ここを iptables にするとCentOS 7の頃と同じ

上記を変更して、firewalld サービスを再起動すると、CentOS 7 の時と同じ動作になりました。


デフォルトの nftables をバックエンドに利用する場合については、勉強しないとダメかー(´・ω・`)

iptablesのルールをnftables のへ変換できるって記事も見たことあるなぁ(´・ω・`)
40.3. iptables のルールを nftables ルールに変換 Red Hat Enterprise Linux 8 | Red Hat Customer Portal



nft list ~ というコマンドで確認すると思われるけど、従来のdirectルールがどこに書き込まれるとか、分からない事が色々ある。

# nft list ruleset

と打っても、「chain INPUT」に追加されるようで、動作的にzoneの後に判定されているように思えた。

なので、nftables をバックエンドにしていると、従来のようにdirectルールを書いても、zoneの方でも許可しないと動かなかった。

この辺、優先順が良く分からず。

ドキュメントもなかなか見つからず(´・ω・`)
とりあえずバックエンドを従来の iptables にして凌いでる。
(でも非推奨なんでしょうね、、、)


【2020/10/10 追記】
以下の公式ドキュメントに手掛かりがありそう。
firewalld.org

環境は以下の通り。これより前のCentOS 8.0-8.1では未確認。

$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

$ rpm -qa | grep firewalld
firewalld-filesystem-0.8.0-4.el8.noarch
firewalld-0.8.0-4.el8.noarch

arrows Be F-04K が壊れたので買い替えた

このBlogでは、スマホの話題を取り上げることは無かったのですが、わりと大変だったので記録に残しておくことにしました。

機種名を出しますが、その機種が悪い訳ではなく、「この機種なら同じ症状の時に、同じ手順が使えるかもしれない」という事で明記するものです。


私はドコモの「arrows Be F-04K」というスマホを使っていました。

これより前まではXperiaを使っていましたが、docomo with の誘惑に負けて選んだ機種だったものの、そこそこ満足して使っていました。

「頑丈」「洗っても大丈夫」とCMしていた機種ですが、落下させることもなく、洗うこともなく、使っていました。

機種変更してから2年経過し、docomo with の恩恵を受けて月額料金が安くなり喜んでいました。

指紋センサーの故障

が、8月某日。

突然、指紋によるロック解除ができなくなりました。

ロック解除前に、「指紋ハードウェアは使用できません」と表示されていました。

指紋ロック解除ができないので、パターンロック解除を行いました。

センサー部分を拭いたり、OSを再起動したりしてみましたが、症状は改善しませんでした。

ロック解除の設定画面を開いても、指紋ロックに関するメニューが出てこなくなっていました。

同じセンサーを利用する「Exlider」も反応しない模様です。

この日付近で新たにインストールしたアプリもなく、OSのアップデートもありません。

ネット上で探した情報も考慮すると、「指紋センサーが壊れた」と判断し、指紋センサーを使わず利用を続ける事にしました。


9月に入り、ドコモからOSのアップデートが提供されました。
これを適用するも、症状は改善しません。
やはり、ハードウェア的に故障したのだと思いました。

タッチパネルの故障

9月某日、ロックを解除しようとパターンを入れても、解除できません。
何度か試しているうちに、タッチが反応していない?と感じました。

パターンが誤っているとエラーメッセージが出る訳ですが、画面の上の方だけ触っても、エラーメッセージが出ません。
下の方を触ると、エラーメッセージが出ます。
どうやら、画面の下の方だけタッチが反応するようです。

まずは自動で取れていないバックアップを確保しようと思ったものの、
ロックが解除できないのでは、一部のアプリのデータを抽出できない。
しかも、タッチの反応が画面下の方だけなので、
再起動ボタンさえタップできない(´・ω・`)
もちろん、通知も確認できません。

マウス操作を試みる

という訳で、ここから残しておきたい解決編です。

まず、どうにかロックを解除しなければなりませんが、タッチパネルが故障している訳で、他の方法を考えなければなりません。

「vysor」というソフトがあったものの、USBで接続初回にAndroid側で許可をする必要があり、タップできません。

スマホにリモート接続?
いや、そんなの準備していない。


公式FAQを眺めていたら、マウスが使える事が分かりました。

  • タッチ操作不可時にUSB変換ケーブルで接続したUSBマウスの使用手順を教えてください。

https://www.fmworld.net/product/phone/faq/f-04k_os_android_10/faqno_121.html


ついでに、電源を強制的に切る方法も見つけました。

  • 強制的に電源を切る方法はありますか?

https://www.fmworld.net/product/phone/faq/f-04k_os_android_10/faqno_57.html


という訳で、まずは「電源ボタンと音量上を同時に押して」本体の電源を切ります。

次に、「電源を入れ、docomoのロゴ表示が消えたらすぐに音量キーの下を押し続ける」という操作をします。

画面左下に「セーフモード」と表示され、マウスを繋げると使えるようになりました。

マウスを接続するには、USB Type-AからType-Cに変換するアダプタが必要です。
ダイソーやキャンドゥで買ったもので大丈夫でした)


何度か再起動したら、画面の左下の方に黒い滲みのようなものがあるのに気づきました。
そこから薄っすらと線が入っていて、どうやらその線より下だけはタッチ操作が可能な領域のようでした。
f:id:savakan:20200929204922p:plain


マウスで操作ができるようになり、データをネットワーク経由でバックアップ。

しかし、ここで問題発生。

セーフモードで起動しているので、Android純正以外のアプリは起動しません。

従って、アプリを起動→設定やデータをExport という手順がふめず、
バックアップできないアプリがありました。


タッチパネルが故障しているので、マウスが必要。
マウスを使うにはセーフモードが必要。
セーフモードでは、アプリが起動しない。
アプリが起動しないと、バックアップはできない。
(´・ω・`)えぇぇぇーーー

結局、bluetooth マウスを買いに行く

仕方がないので、ひとっ走り bluetooth マウスを購入しに近くの電気屋へ。

買ったのは以下のマウス
BSMRB050BK : マウス | バッファロー


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

BSMRB050BK バッファロー Bluetooth3.0対応 IR LED光...
価格:1180円(税込、送料別) (2020/9/29時点)



有線マウスでbluetoothを有効化してペアリングを済ませると、無線マウスでも操作できるようになりました。
本体を再起動してセーフモードではなく通常モードで起動しても、無線マウスはペアリング済みなので問題なく動作。
電池も1本付属だったので、ありがたい。

これでバックアップを済ませ、スマホのデータは救出。
データがクラウドやSDカードに保存できないアプリのバックアップは今後の課題。


スマホを修理しようか調べましたが、故障個所が液晶パネルな上に、冒頭の通り指紋センサーも壊れているので、修理より機種変更した方が良いだろうと判断。

4Gスマホなら、docomo with も継続できるようでした。(実際、docomo with を継続できました)
Xperia に戻ろうか迷ったけど、また arrows にしました。
ドコモの公式オンラインショップで、23,760円(税込、送料無料)でした。

f:id:savakan:20200929205436p:plain


注文した翌々日に届きましたが、その間は故障したスマホbluetoothマウスを持ち歩いていました。

まとめ

さて、ここまで書いておいて、故障の原因は明確ではありません。
タッチパネルが故障したのは、ポケットに入れて生活(仕事や移動など)していたので、何らかの圧力がかかった可能性が考えられます。
指紋センサーの方は、思い当たる原因はなく、分かりません。
ポケットの中で蒸れたのでは?と知人に言われましたが、それも否定できません。
スマホ本体はケースを使わず、裸の状態で使っていました。


短期間でしたが、スマホが使えないと、色々と生活に不具合がでることを実感しました。

  • スマホ決済が使えないので、いつものお店の人にビックリされる
  • 出先で何かあっても通話すらできないので、とても不安
  • 家族の携帯番号をメモして、公衆電話の位置を確認した


という訳で、最後にまとめです。

  • スマホも、いつか壊れます(急に壊れるとビビります)
  • バックアップは大事
  • タッチパネルが壊れた時、有線マウスとUSB Type-A→Type-C変換コネクタがあると何とかなるかも?
  • 無線(bluetoth)マウスがあると、もっと何とかなるかも?

selinux-policy が存在しないことが原因でログインできない場合の復旧手順

【環境】
$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

症状

タイトルに原因を書いてしまってるけど、次のような症状で相談を受けた。

  • OSインストール後、SELinuxは無効化にしていた

 (/etc/selinux/config で SELINUX=disabled にしていた)

  • その後、SELinuxを使ってみようと SELINUX=permissive にした
  • OSは起動するようだが、ログインできない


/etc/selinux/config にて、SELINUX ではなく SELINUXTYPE の方に設定値を書いてしまうという、よくある(?)ミスではない。


OS起動時のコンソールを見ていると、以下のような FAILED/DEPEND を出している。
( [OK] の行は省略)

しかも、起動時間は数分と結構長い。

[FAILED] Failed to start Import network configuration from initramfs.
[FAILED] Failed to start Authorization Manager.
[DEPEND] Dependency failed for Dynamic System Tuning Daemon.
[FAILED] Failed to start Network Manager.
[DEPEND] Dependency failed for Network Manager Wait Online.
[FAILED] Failed to start Login Service.


ネットワークサービスの起動にも失敗しているので、SSHで接続できない。

最後の方に表示される「Failed to start Login Service.」に関しては、表示されてすぐに login プロンプトに表示が切り替わってしまうので、2回見るまで気付かなかった。


この状態でログインしようとすると、どのようなユーザアカウントでも、ログインできない。

root ユーザでログインを試した場合、

Unable to get valid context for root

とメッセージが表示され、暫く応答が無くなる。

その後、

timed out after 60 second

と表示されて login プロンプトに戻り、ログインできない。


正常になった後で確認してみると、/var/log/messages には次のようなログが残っていた。

Sep 12 21:59:19 cent8 dbus-daemon[898]: dbus[898]: Failed to start message bus: Failed to open "/etc/selinux/targeted/contexts/dbus_contexts": No such file or directory

解決手順

通常の手順ではログインできないので、シングルユーザモードで起動する。

まずは、OSをどうにかして再起動する。
物理筐体なら電源長押しなど、仮想なら仮想ホスト側から停止。


OS起動時のカーネルの選択画面のところで、e キーを押し、GRUBのパラメータ編集画面に入る。

linux ($root)/vmlinuz-.... の行の最後に以下をを追加し、Ctrl-x を押して起動する。

rw init=/bin/sh

入力は英語キーボードになるので 「=」 は「^」のキーを押すと入力できる。

途中にある「ro」を消すのが一般的(?)な手順かと思うが、末尾に追記したら動作した。
(この手順が正しいのかは不明)

なお、シングルユーザモードの指定方法は、

になっている。


シングルユーザモードでログインした状態になるので、

/etc/selinux/config
 ↓
SELINUX=disabled

の設定に変更する。

設定保存後、OSを再起動する。

# exec /sbin/init


これで、SELinuxを無効にしてOSが起動する状態まで復帰できる。

SELINUX=permissive でも動作しない原因を探るため、rpm コマンドでselinux 関連のパッケージの導入状況を確認。


正常に動作するサーバ

# rpm -qa | grep -i selinux
libselinux-utils-2.9-3.el8.x86_64
libselinux-2.9-3.el8.x86_64
rpm-plugin-selinux-4.14.2-37.el8.x86_64
selinux-policy-targeted-3.14.3-41.el8_2.5.noarch
selinux-policy-3.14.3-41.el8_2.5.noarch
python3-libselinux-2.9-3.el8.x86_64

正常な動作をしなかったサーバ

# rpm -qa | grep -i selinux
libselinux-utils-2.9-3.el8.x86_64
libselinux-2.9-3.el8.x86_64
python3-libselinux-2.9-3.el8.x86_64


正常に動作しない方では、selinux-policy* が無かった。

話を聞いたところ、
SELinux を無効化した時に、要らないと思って selinux-policy* を削除した」
との事で原因判明。

という事で、以下をインストールすると、permissive でも動作するようになる。

# dnf install selinux-policy-targeted selinux-policy