vsftpdで「500 oops bad bool value in config file for ...」のエラーになる

【環境】
CentOS Linux release 7.8.2003 (Core)
vsftpd-3.0.2-27.el7.x86_64


ちょっとテスト環境にFTPサーバが欲しくてvsftpを設定したものの、
次のようなエラーログが出てサービスが起動しない。

500 oops bad bool value in config file for use_localtime


エラーメッセージから察するに、「use_localtime」付近にエラーがありそうなものの、
設定ファイルを見ても分からない。

と、viでカーソルを移動していたら、use_localtime の後ろに半角スペースが入ってので、これを削除したら直った。

半角スペースがあっても書式エラーなのか・・・

他のソフトウェアでは設定値の後ろに半角スペース、コメントが書いている事も多いうえに、

スペースが原因だと分かりにくい(´・ω・`)

autofs でマウント時にSMBバージョンのログが出る

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

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


autofsにて、次のような接続設定である。

/mnt/nas -fstype=cifs,iocharset=utf8,credentials=/path-to-credential  ://192.168.1.5/path

これでマウントすると、/var/log/messages に以下のようなログが出る。

Oct 18 20:10:01 cent8 kernel: No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.


マウント時にdialectが指定されておらず、CIFS(SMB1)より安全なSMB2.1以降(SMB3など)で接続されたとのメッセージ。

接続時にバージョンを指定すれば、このログの出力を抑制できる。

/mnt/nas -fstype=cifs,vers=2.1,iocharset=utf8,credentials=/path-to-credential  ://192.168.1.5/path

もし、SMB1しかサポートしていないような古いNASへ接続する場合には、
vers=1.0 を指定すれば良い。

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