syslog とは
syslog とは
- OSからトラブルなどの履歴を残すためにLOGファイルに残す機能。
- Linuxのsyslogでは、rsyslog などにより、1つのサーバに履歴をネットワーク経由でまとめることができる。
- トラブルなどの原因などの種別ごとにファシリティが定義されている。
- kernel, user, daemon, mail, ….
- ファシリティ毎に出力ファイルを指定することができる。
- /etc/(r)syslog.conf , /etc/(r)syslog.d
- /var/log/syslog, dmesg, user.log , auth.log, mail.log
- syslog に出力するには
- logger コマンド
- syslog(3) – ライブラリ関数
- printk – カーネル内でメッセージ出力
システムコールとは
- ユーザーモードからカーネルモードを呼び出す
- カーネルモード
- すべてのハードウェアに直接アクセスでき、メモリ管理、プロセス管理、ファイルシステム管理など、システムの基本的な機能を制御する特権を持っています。
- カーネルモードを呼び出す関数はシステムコールと呼ぶ
システム監視ツール
- モニタリング
- Nagios – システムやネットワークの異常を検知し、管理者にアラートを送信
- Zabbix , Munin – 詳細なデータ収集と可視化機能を提供。
- 不正侵入検知システム(IDS)
- ホスト型 IDS
- rkhunter – ルートキット、バックドア、およびローカルエクスプロイトの可能性をスキャンして検出する
- ホスト型 IDS
FIreWall 管理ソフト
- iptables – 低レベルだけど柔軟な設定が可能。設定が複雑。
- firewalld – ゾーンベースの管理や動的な設定変更を可能にした高機能なツール。GUI ツールが充実。
- ufw – 初心者向け。iptablesのラッパーで、より簡単にファイアウォールを管理。
Linux環境の使い方
unixにおけるセキュリティ
- /etc/passwd , /etc/group , /etc/shadow
- デバイスファイルとグループアクセス権
- ls -al /dev/ttyUSB0
- crw-rw—- 1 root dialout 188, 0 6月 13 04:00 ttyUSB0
- sudo adduser user dialout
- デバイスファイルとグループアクセス権
- sudo
- 元々は su コマンドを使うことが多かった
- システム管理者になって作業
- sudo bash で作業は危険
- /etc/sudoers , sudoers.d
- sudo adduser user sudo # sudoグループに user を追加
- sudo vi /etc/sudoers
%sudo ALL=(ALL:ALL) NOPASSWD: ALL- sudoers ファイルを書き間違えると、sudo 自体が使えなくなるので要注意
- suid
- ファイル所有者権限でコマンドを実行
- sudo chown root /usr/local/bin/foobar
- sudo chmod u+s /usr/local/bin/foobar
リモートシステムの使い方
- ssh
- ssh-keygen 秘密鍵・公開鍵を作る
- ssh-copy-id user@remoteserver 公開鍵をリモートサーバにコピー
- パスワードなしでログインできる。
- $HOME/.ssh ディレクトリは rwx,—,— になっていること
- ssh remoteserver ls # リモートサーバで ls を実行
- ssh X11 foward
- ssh 経由で GUI を利用することができる
- Windows であれば WSL2 , macOS であれば XQuartz をインストールしておくこと
- WSL2 Ubuntu 24 LTS が無難
- local$ slogin -X remoteserver # X11forward つきでログイン
- remote$ echo $DISPLAY
- remote$ xeyes # X11経由で local の X11 に
管理コマンド
- sudo apt update
- sudo apt upgrade
- apt search パッケージを探す
- sudo apt install パッケージ名
- sudo apt install nodejs
- npm install JavaScriptパッケージ
- sudo apt install python3
- pip install Pythonパッケージ
VSCode
- Japanese Language Pack for Visual Studio Code
- Remote – SSH
Surface GO に Ubuntu 24.04 をインストール
仕事で使っていた Surface Go だけど、最近は処理速度も「もっさり」で使う機会もほぼなく、Ubuntu 24.04 をインストールを試してみる。ブートメディアで Type-C USB を購入し Rufus で イメージファイルを書き込む。
BitLockerの解除から
ひとまず、Try モードで起動もできたし、本気のインストールを試そうとしたら、BitLocker で暗号化されているとの表示。暗号化解除をしようと再起動したら、BitLocker キーの催促画面。はて、なんだっけ。
学校のアカウントでデバイスを探したら普通に キーが見つかったので、解除。といっても時間かかるなぁ…


OneNoteの起動用アイコン
snap を使っていろいろな最新アプリも使うことができるが、Microsoft OneNote が起動できなかった。手作業で起動しようとすると、「うまく起動できない場合は –no-sabdbox のオプションをつけるといいかも」みたいな説明が出る。ということで、デスクトップに下記のファイルを置いて対応。
#!/usr/bin/env xdg-open [Desktop Entry] Terminal=false Type=Application Name=Microsoft OneNote Icon=/snap/onenote-desktop/current/meta/gui/icon.png Exec=/snap/onenote-desktop/current/onenote-desktop --no-sandbox
ひとまず設定完了
クラウドサーバ等の Ubuntu 22 への更新
Windows PC の wsl2 の設定を間違えて、/etc/wsl.conf が触れなくなり、特に slogin とか latex 環境とかが動けばいいや…の使い方なので、Ubuntu をアンインストールして、新しい Ubuntu をインストールする。ここで、Ubuntu 20(focal) から Ubuntu 22(jammy)への更新。自宅 Windows なども同様にアップグレードを行った。
んで、改めて作業をしていると、自分が管理しているクラウドサーバでも、何台か Ubuntu(focal) が残っている。aptitude safe-upgrade をしていても、linux-image-5.4 あたりのままだし、ここもアップグレード。
といっても、”do-release-upgrade” を実行するだけ。かなり時間かかるけど。
mariadbトラブル appamor
mariadb が止まってしまう
パッケージの更新をしていたら、mariadb が起動しなくなる。systemctl start mariadb を実行すると、コマンドラインに帰ってこない。Ctrl-Z で background にすると WordPress も動いているし問題ないのかと思えば、30分ほどするとエラーを吐いてとまる。journalctl -xe で吐いているエラーを確認すると以下のようなメッセージが残っていた。
AVC apparmor="DENIED" operation="connect" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/nscd/socket" pid=67400 comm="mysqld" requested_mask="wr" denied_mask="wr" fsuid=118
メッセージを元にググると、こちらの記事が該当した。
AppArmor(Application Armor)は、各プログラムにセキュリティプロファイルを結びつけ、プログラムのできることに制限をかけるプログラム…らしい。(wikipediaより)
AppArmor の不具合を解消
パッケージを MySQL から MariaDB に移行する際に、AppArmor でトラブルが残ったみたい。こちらの記事を参考に、以下のコマンドで、ゴミを消したらうまく起動するようになった。
$ sudo aa-remove-unknown Removing '/usr/sbin/mysqld' mysql関連のゴミを消してくれたみたい。 $ sudo systemctl start mariadb 無事に起動
mysql更新に失敗
自宅サーバが、mysql-5.6 で運用していたけど、世の中 mariadb-10.x , mysql-8.x のご時世なのでアップグレードしたけど、すごく苦労した。自宅は debian だけど mysql-5.6 は oldstable まで遡らないと管理されていない古いパッケージとなっていた。
mysql-5.7 は focal ではサポートしていない
色々とトラブルはあったけど、自宅サーバは mariadb-10.x にできたけど、この電子情報のサーバも確認したら、ubuntu20(focal) で mysql-5.7 で動いていた。これまた ubuntu18(bionic) まで遡らないと 管理されていないパッケージ。
ということで、自宅と同様に mariadb などに上げようとチャレンジしてみた。
しかし、これまた、mariadb-10.3 に失敗して、ダメ元で mysql-8.0 も試したけど、これまた失敗。昨日は自宅サーバの mariadb-10.4 になるまで苦労して疲れてるので、今回は断念。どうも、mysql-5.7 での root パスワードを忘れて更新してからの作業だったのが、諸悪の根源なのかもしれない。
bionic パッケージで mysql-5.7 で復旧… # 戻っただけじゃん…
ひとまず、bionic の apt-source を有効にして、mysql-5.7 をインストール。mariadb やら mysql-8.0 のゴミやら root パスワードの更新の悪影響かで、mysql-5.7 に戻すだけでも苦労したけど、ようやく復旧。
PDFファイルのタイトル/著者を一括修正
例年実施している学生の卒研発表のレジメ資料のWeb公開。しかしながら表示させると、画面の左上のメニュー部に「講演題目第1行目は…」。PDFファイルのタイトル部に、ひな形ファイルの属性が残っているみたい。著者欄にもひな形の著者情報が残っている。
なんとなくカッコ悪いので、タイトル部と著者情報を消したい。
((( 必要なツールのインストール ))) $ aptitude install libimage-exiftool-perl ((( 一つのファイルなら ))) $ exiftool -Title="" -Author="" -overwrite_original hoge.pdf ((( find+xargs で一括修正 ))) $ find . -name "*.pdf" -print \ | xargs exiftool -Title="" -Author="" -overwrite_original
自室UPSの交換
今年に入り、たびたび自室の UPS がピーピー鳴くようになってきた。バッテリーの日付を確認すると7年以上前だった。apcupsd などのツールで監視はしていて、バッテリー供給可能時間 30分 はあったので、さすがに古くても瞬間停電には耐えられるだろうと使っていた。最近は1日に数回アラームが鳴るし、apctest コマンドを使って バッテリーの日付を新しくしておいたけど、やっぱりアラームが鳴る。
年度末に向けて、交換用の 新しい UPS (APC ES 750 USB: 外観は違うけど中身は今まで使っていたのと同じ) を購入しておいたので、ようやく交換した。バッテリーも購入したので、古い UPS の中身と入れ替えて、別に使う予定。
Linux演習
教員室にhomebridge導入
自宅では、iPhoneとの連動で、Raspberry-Pi にhomebridgeを入れて、家電制御で便利に使っているけど、教員室の Linux サーバにも導入してみた。
自分のスマホに ping で所在確認するプラグインと、自室の在室や予定を表示している掲示板システムを操作するプラグインを入れてみた。
在室状態に応じて掲示板にメッセージを表示していたけど、更新間隔が1時間おきとかなので、「不在表示なのに居るじゃん…」とか学生からのチェックが入るので、ドアや充電器の所に置いてあるNFCをタッチすると、掲示板の在室/不在表示+予定表示するようにしてみた。
# 以前から同様なことはしていたけど、手抜き Web API 経由だったのを、ホームアクセサリとして動かしてみた。