Fedoraの変更点シリーズ
過去リリース分の記事は、以下のリンクを参照してください。
お伝えしたいこと
Fedora35のリリースノートを読んで、個人的に気になった項目をまとめます。
末尾のsssdの問題は、バージョンアップした方全員に該当すると思いますのでぜひチェックしてください。
公式情報の見方
Fedora 35の変更点は、以下のリンクに載っています。
概要はリリースノートに、詳細情報はChange Setsのページに書いてあります。
Change Setの各サブタイトルのリンクから詳細情報に飛べるようになっています (下図赤枠部)。
詳細を知りたい時に便利なので、こちらも活用ください。
Fedora35の既知の問題は、以下にまとめられています。
他バージョンのFedoraについて知りたい場合は、以下のリンクを参照してください。
- Fedora Docs - Home → 該当バージョンを選択してRelease Notesのリンクに移動
- Fedora Wiki - Changes
Release Notes & Changes
firewalldがv1.0.0に
firewalldを操作した経験がないので、あっさりめに触れます。
以下が主な変更点とのことです。
- ゾーン内通信がデフォルト許可に
- NAT rulesがinet family配下に移動した
- Default target は reject と類似した挙動になる
- ICMPは受信時のみフィルタする。ルーティングする際はフィルタしない
- iptables backendが非推奨に
- Direct interfaceが非推奨に
既存でfirewalldをカスタマイズしている方にとって、一部通信制御の挙動が変わるのは影響が大きい印象です。
音声サービスのセッションマネージャーにWirePlumberを採用
- Fedora 35 Release Notes - #Switch to WirePlumber as the PipeWire session manager
- Fedora Wiki - Changes/WirePlumber
Fedora34では、既存の音声サーバサービスが全てPipeWireに集約されました (過去記事)。
PipeWireのSessionManagerは簡素な作りで、カスタマイズできる範囲が少なかったとのことです。
SessionManagerの機能をPipeWireに移行することで、カスタマイズ性が上がるとあります。
また、WirePlumberはPipeWireのSession Managerと完全に同等の機能を持ちます。
詳しいところは調べていません。
Fedora33から34、35とバージョンアップした後も音が出たので、私としてはヨシとします。
しかし、残念ながら音が出なくなるケースもあるようです。
音が出ないという方は、#WirePlumberが自動起動せず、音が出ないことがあるを参照してください。
デフォルトのPythonが3.10に
Fedora34まではデフォルトのPythonがバージョン3.9でしたが、Fedora35以降では3.10になります。
Python 3.10の特徴は、python.org - PEP 619にまとめられています。
詳細は上記のPEP 619を参照なのですが、Python 3.10以降はOpenSSL 1.1.1以上を必須とするとのことです。
これにより、Python 3.10は基本的にRHEL8.0以上でしかPython3.10が動かなくなるようです。
他のディストリビューションも含めた詳細は、python.org - PEP 644を参照してください。
sssdがデフォルトで無効に
- ※Fedora35のRelease Notesには記載がありませんでした
- Fedora Wiki - Changes/FlexibleLocalUserCache
sssdとは、リモートアクセスやログイン認証を取り扱うデーモンです。
NSS (Name System Switch -> /etc/nsswitch.conf
) やPAM (Pluggable Authentication Modules)と連携して動作します。
sssdはキャッシュ機構を持つため、filesと比較して認証処理が効率的であることが利点です。
Fedora34以前では、sssdというデーモンがデフォルトで起動していましたが、Fedora35以降ではデフォルトで停止されます。
それに伴い、/etc/nsswitch.conf
の記載内容が以下のように変わっています。
パスワード、及びユーザーグループの参照にsssではなくfile (/etc/passwd
, /etc/group
) を使うようになりました。
passwd: files sss systemd group: files sss systemd # Fedora34以前では以下の内容だった # passwd: sss files systemd # group: sss files systemd
変更の理由は、「最小構成のFedoraにおいて自動起動するデーモンを減らしたかったから」とのことです。
今回の変更に伴い、Fedoraコンテナからsssd-client
パッケージが除外され、ファイルサイズが軽量化されました。
実施することはないと思いますが、Fedora Wikiのリンクにsssdを再び利用するための手順もありました。
sudoを使うようアレンジを加えたコマンドは、以下のとおりです。
これらのコマンドは、手元のFedora35環境で動作確認済みです。
sudo authselect select sssd with-files-domain sudo bash -c "echo -e '[sssd]\nenable_files_domain = True' > /etc/sssd/conf.d/files_domain.conf" sudo chmod 600 /etc/sssd/conf.d/files_domain.conf sudo systemctl start sssd
更に、再びFedora35のデフォルトに戻すコマンドは、以下の通りです。
sudo systemctl stop sssd sudo rm /etc/sssd/conf.d/files_domain.conf sudo authselect select sssd with-fingerprint with-silent-lastlog
手順について、いくつか補足します。
/etc/nsswitch.conf
は手動での変更ではなく、authselect
コマンドによって変更するのが推奨authselect current
で現在のモードを表示authselect show sssd
でsssd
モードの詳細を表示- Fedora35から、
sssd.service
の起動条件に「/etc/sssd/sssd.conf
か/etc/sssd/conf.d/*.conf
のいずれかが存在すること」が追加された - glibc 2.33以降 (Fedora34以降)、
/etc/nsswitch
のタイムスタンプが変わっていると再読込が走る。ファイル更新後のOS再起動は不要となった
Bugs
Bugsの中から気になる情報を拾います。
WirePlumberが自動起動せず、音が出ないことがある
Fedora35にバージョンアップした後、WirePlumberが、時折自動起動しない設定になってしまうことがあると報告されています。
WirePlumberは音声サーバーのSession Managerとして動作しており、このサービスが起動しないと音声が流れません。
WirePlumberの起動有無は、以下のコマンドで確認可能です。
systemctl --user status wireplumber
WirePlumberが一般ユーザー権限で起動していなかった場合は、一般ユーザーで以下のコマンドを実行することで復旧するとのことです。
rootユーザーによる実行や、sudoを付けての実行は不要です。
systemctl --user enable --now wireplumber
その他
Release NotesやBugsには載っていませんが、私が遭遇した事象と対処法をメモします。
Fedora35にアップグレード後、ユーザー追加・削除時にエラーメッセージが出る
タイトルの通りです。
Fedora34以前からFedora35にアップグレードした後、useradd
やuserdel
コマンドを実行するたびにエラーメッセージが出ました。
passwd
やgroupadd
などは試していませんが、同様にエラーが出る可能性はあると思います。
実際にユーザー追加・削除はできているので、エラーメッセージに実害はないと思います。
実際に発生するエラーメッセージは、以下のような内容です。
sssdのバージョンが変わったが、キャッシュファイルが古いバージョンのsssdのままであるためにエラーが出力されています。
Fedora35へのバージョンアップによってsssdが新しいバージョンとなり、なおかつsssdが自動起動しなくなったために古いキャッシュが残ったことが原因です。
sudo useradd endy2 # [sss_cache] [sysdb_domain_cache_connect] (0x0010): DB version too old [0.22], expected [0.23] for domain implicit_files! # Higher version of database is expected! # In order to upgrade the database, you must run SSSD. # Removing cache files in /var/lib/sss/db should fix the issue, but note that removing cache files will also remove all of your cached credentials. # Could not open available domains # [sss_cache] [sysdb_domain_cache_connect] (0x0010): DB version too old [0.22], expected [0.23] for domain implicit_files! # Higher version of database is expected! # In order to upgrade the database, you must run SSSD. # Removing cache files in /var/lib/sss/db should fix the issue, but note that removing cache files will also remove all of your cached credentials. # Could not open available domains id endy2 # uid=1001(endy2) gid=1002(endy2) groups=1002(endy2) sudo userdel -r endy2 # [sss_cache] [sysdb_domain_cache_connect] (0x0010): DB version too old [0.22], expected [0.23] for domain implicit_files! # Higher version of database is expected! # In order to upgrade the database, you must run SSSD. # Removing cache files in /var/lib/sss/db should fix the issue, but note that removing cache files will also remove all of your cached credentials. # Could not open available domains # [sss_cache] [sysdb_domain_cache_connect] (0x0010): DB version too old [0.22], expected [0.23] for domain implicit_files! # Higher version of database is expected! # In order to upgrade the database, you must run SSSD. # Removing cache files in /var/lib/sss/db should fix the issue, but note that removing cache files will also remove all of your cached credentials. # Could not open available domains
対処法は、上記エラーメッセージが示すとおり/var/lib/sss/db
内のファイルを削除することです。
フォルダごと削除しないよう気をつけてください。
フォルダを削除すると、sssd.serviceが起動しなくなります。
間違えて消した場合は、sudo mkdir /var/lib/sss/db
で再作成すれば大丈夫です。
以下のコマンドでエラーは出なくなります。
sudo bash -c 'rm /var/lib/sss/db/*'
/var/lib/sss/db/
は、sssdのキャッシュが保存されるディレクトリです。
内部のファイルは、#sssdがデフォルトで無効にで紹介した手順などでsssd.serviceを起動することで再生成するので、消してしまっても問題ありません。
ちなみに、キャッシュを削除する代わりにsssdを起動・停止することでもこの問題は一時的に対処できますが、将来sssdをバージョンアップしたときに再びエラーが出る懸念があります。
一連の手順は、手元のFedora35で動作確認済みです。
まとめ
興味を持ったトピック限定ですが、Fedora35の更新点をまとめました。
sssdのエラーにヒットした場合、sudo bash -c 'rm /var/lib/sss/db/*'
のワークアラウンドをぜひお試しくださいね。