udevへのストレージに関するルールの追加 [Linux]
1. 要件
指定したデバイスへのシンボリック・リンク(パス名を固定)を /dev に作成する。
対象とするデバイスは、下記の通りである。
また、ルールは /etc/udev/rules.d/60-persistent-strage.rules に設定する。
(1) 2 個のバードディスクの一方にインストールされている Windows のパーティション
・/dev/part-win-1
・/dev/part-win-2
(2) SATA1、STAT2 に接続されているハードディスク
・/dev/ata-disk-1
・/dev/ata-disk-2
2. 作成したルール
(1) Windows のパーティションへのシンポリック・リンクの作成
(a) /dev/sda[12] を使用の場合
# NTFS partitions SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{ID_FS_TYPE}=="ntfs", \ SYMLINK+="part-win-%n"
(b) /dev/sda{1+x,2+x} を使用の場合
# NTFS partitions SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{ID_FS_TYPE}=="ntfs", \ PROGRAM="/bin/sh -c 'echo $((%n-x))'", SYMLINK+="part-win-%c"
・実際には一行で設定する。
・%n: デバイスの番号
・%c: PROGRAM で指定したコマンドの標準出力
(2) SATA1、STAT2 に接続されているハードディスクへのシンボリック・リンクの作成
# pci-0000:00:1f.2-ata-1.0 SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", \ ENV{ID_PATH}=="pci-0000:00:1f.2-ata-1.0", SYMLINK+="ata-disk-1" # pci-0000_00_1f_2-ata-1.1 SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", \ ENV{ID_PATH}=="pci-0000:00:1f.2-ata-1.1", SYMLINK+="ata-disk-2"
または
# pci-0000:00:1f.2-ata-1.0, pci-0000_00_1f_2-ata-1.1 SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{DEVTYPE}=="disk", \ ENV{ID_PATH}=="pci-0000:00:1f.2-ata-1.?", \ PROGRAM="/bin/sh -c \"echo $((`echo %E{ID_PATH} | sed 's/.*\.//'` +1))\"", \ SYMLINK+="ata-disk-%c"
・実際には一行で設定する。
・%E{ID_PATH}: ID_PATH の値
・同様のシンボリック・リンクが /dev/disk/by-path に存在する。
/dev/disk/by-path/pci-0000:00:1f.2-ata-1.0
/dev/disk/by-path/pci-0000:00:1f.2-ata-1.1
3. 備考
(1) ルールで指定できる項目の確認
% udevadm info --query=all --name=<dev-path>
clamdscanの使用方法に関するメモ [Linux]
以下は、clamdscan を使いやすくすることを目的としたメモ(備忘録)である。
(clamdscan のバージョン: 0.103.6)
1. スキャンしたファイルの表示
(1) -i オプションを指定せず、-z オプションを指定
下記の情報が追加表示される。 ・ウイルスが発見されなかったファイルのパス名 ただし、表示の対象はコマンドラインで直接指定されたファイルのみである。
(補足)
・-z を指定しないと表示されない。
-z: ウイルスが発見された後もスキャンを継続
・-i を指定の場合には、上記の追加表示は実施されない。
2. 再帰的なスキャンが実施されることの確認
対象がディレクトリの場合には、再帰的にスキャンが実施される。
明確な説明がないため、テストの実行結果から判断した。
(1) 階層の深さの制限
・設定ファイルの MaxDirectoryRecursion で指定する。
・設定値に関する詳細な説明資料はない。
(a) -z オプションを指定しないと必要な情報が出力されない。
(b) 設定値に誤りがある場合、エラーメッセージが出力される。
ERROR: Incorrect argument format for option MaxDirectoryRecursion ERROR: Can't parse clamd configuration file /tmp/clamd.conf (終了ステータスは 2 となる。)
(c) 設定値を超える深さにファイルが存在する場合、ワーニングが出力される。
WARNING: Directory recursion limit reached (終了ステータスは 2 となる。)
(d) 実行結果からの判断
・設定できる値は 0 以上である。 ・n(>=1) の場合: 指定ディレクトリの n 階層下のディレクトリまでが対象 指定ディレクトリ内の全ファイル(ディレクトリを含)が対象 指定ディレクトリ内のサブディレクトリは、指定された階層までが対象 ・0 の場合: 無制限となっているように思われる。 少なくとも、指定ディレクトリのみに限定するようにはならない。
(2) 再帰的なスキャンが実施されていることの証明
・サブディレクトリ内のテスト用ウイルスを見つけている。
(eicar.zip は、ウイルス検索のテストファイルである。)
・サブディレクトリ内の除外パスを除外している。
# clamdscan -z --stdout /work /work/backup: Excluded /work/lost+found: Excluded /work/linux/grub2/super_grub2_disk_hybrid_2.04s1.iso: Excluded /work/test/cache: Excluded /work/test/xxx.iso: Excluded /work/test/x1/x2/eicar.zip: Win.Test.EICAR_HDB-1 FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 3.750 sec (0 m 2 s) ...
3. 一時的に設定を変更しての実行
別の設定ファイルを使用することにより、対応可能である。
(例) -- 除外パスの追加
・元の設定ファイルをコピーし、別の設定ファイルを作成
・上記で作成した設定ファイルに、除外パス(ExcludePath) を追加
・clamdscan の --config-file オプションで上記で作成した設定ファイルを指定
(補足)
上記で --config-file を使用した clamdscan にのみ追加設定が適用される。
--config-file を使用しない clamdscan には元の設定が適用される。
(ExcludePath、MaxDirectoryRecursion について動作を確認)
4. 効果が不明のオプション
(1) -v オプション
'be verbose' とのみ説明されており、効果が不明である。
また、-v の指定の有無による実行結果の違いを見つけられない。
Windowsのパーティションのマウント・エラーへの対応 [Linux]
autofs で Windows の NTFS パーティションをマウントできないことがある。
・/etc/auto.misc の設定は、下記の通りである。
win_1 -fstype=ntfs,locale=ja_JP.eucJP,umask=022,ro /dev/sda1 win_2 -fstype=ntfs,locale=ja_JP.eucJP,umask=022 /dev/sda2
(補足)
・Linux と Windows をマルチブートしている環境である。
・文字コードに unicode を使用する場合には、locale に ja_JP.UTF-8 を指定する。
2. 原因
原因は、/dev/sda と /dev/sdb のディスクが入れ替わることがあるためである。
・起動時に、OS がディスクを認識した順序で /dev/sda、/dev/sdb となる。
・この順序は SATA ケーブルの接続方法とは関係ないため、順序を固定できない。
(補足)
・発生頻度が低いため、これまで気付かなかった。
・LVM を使用している環境では、下記の理由により上記問題は発生しない。
mdadm + LVM での RAID 1 構成のため、UUID が使用されている。
3. 対処方法
パーティションのラベルを使用したマウントを実施する。
(1) Windows 用パーティションへのラベルの設定
C/D ドライブ用パーティションに win_1/2 を設定する。
# ntfslabel /dev/sda1 win_1 # ntfslabel /dev/sda2 win_2
(2) /etc/auto.misc の編集
win_1 -fstype=ntfs,locale=ja_JP.eucJP,umask=022,ro :LABEL=win_1 win_2 -fstype=ntfs,locale=ja_JP.eucJP,umask=022 :LABEL=win_2
(補足)
UUID を使用したマウントも可能である。
(デバイスの UUID は、`lsblk -f` で確認できる。)
Gmailのアプリ・パスワードの使用 [misc]
・[安全性の低いアプリの許可] を有効化できなくなったためである。 ・2 段階認証を無効にしている。
また、アプリ・パスワードを使用すると、上記の問題を解決できるとの情報が得られた。
・アプリ・パスワードを使用するには、2 段階認証を有効にする必要がある。 ・アプリ・パスワードの使用により、2 段階認証をバイパスできる。 ・アプリ・パスワードは、Web ブラウザでのログインには使用できない。
よって、アプリ・パスワードを使用するように設定の変更を行った。
手順は、以下の通りである。
1. アプリ・パスワードの生成
(1) SMS の着信の許可
・設定の変更に必要な確認コードを受信するためである。
・確認コードは、050-5840-1910 から送信される。
(2) Web ブラウザでの Gmail へのログイン
(3) 個人情報への電話番号の登録
電話番号の登録を削除しているため、電話番号を再度登録する。
(a) 設定画面の表示
・右上のアイコンから [Google アカウントを管理] を選択
・上部のメニューから [個人情報] を選択
・[連絡先情報] の欄で [電話] を選択
(b) 電話番号の登録
・電話番号を入力
・確認コードを入手
'G-xxxxxx' の 'G-' を除く部分が確認コードである。
・確認コードを入力し、電話番号を登録
(4) 2 段階認証の有効化
(a) 設定画面の表示
・右上のアイコンから [Google アカウントを管理] を選択
・上部のメニューから [セキュリティ] を選択
・[2 段階認証プロセス] を選択
(b) 2 段階認証の有効化
・コードの取得方法として、[テキスト・メッセージ] を選択 (電話番号は、国番号の直後の '0' が削除されて表示される。) ・確認コードを入手 ・確認コードを入力し、変更を実施
(c) バックアップ・コードの入手
・下方の [バックアップ コード] を選択 ・[バックアップ コードを入手しましょう] を選択 ・表示されたバックアップ・コードを保存
(5) アプリ・パスワードの生成
(a) 設定画面の表示
・右上のアイコンから [Google アカウントを管理] を選択
・上部のメニューから [セキュリティ] を選択
・[アプリ パスワード] を選択
(b) アプリ・パスワードの生成
・アプリとデバイスを指定 (例) アプリ=メール、デバイス=その他(パソコン) ・[生成] を選択 ・表示されたアプリ・パスワードを保存 ・[完了] を選択
(6) 後処理
上記で許可した SMS の着信を取り消すことも可能である。
2. アプリ・パスワードの使用
POP/SMTP でのログイン時に、パスワードの代わりにアプリ・パスワードを使用する。