変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

【Postfix】SMTP認証はCyrus SASLを使ってるのに

SMTPの認証方法には色々ある。
メーラーほどではないにしろ、postfixがrelayする時はSMTP-Auth認証を使うので
【新しい認証方法が出たら対応しなければいけない法則】からは逃れられない。
どんな組み合わせでもちゃんと認証できるようにするのは、とても面倒そうだ。
専門の方にお任せした方が良さそうなので、Cyrus SASL(サイラス サスル)を利用している様だ。
なのに、プリインストなpostfixにCyrus SASLは1つも入っていない。
どうやら外部(127.0.0.1以外)からのメール送信を受け付けるには
inet_interfaces = all
だけでは
postfixがユーザを認証する手段が無く、
# yum install cyrus-sasl*
# systemctl start saslauthd
# systemctl enable saslauthd
も必要だ。
 
 



[SVNManager] シンボリックリンクの罠そして次々と現れる死客

とりあえず参考記事を見ながらインストしてみる。
url: http://park1.wakwak.com/~ima/centos_svnmanager0001.html
apacheとpostfixとdovecotを入れ
svnmanagerをダウンロード。
そしてあちこちに修正を加え、
systemctl { start , enable } everybody した後・・・
① http://*********/svnmanager/ 繋がらない。
SELINUXをOFFり、rebootしてgetenforceで確認。
次に、
# firewall-cmd –permanent –add-service=http
# firewall-cmd –reload
やっと観える。
② しかし中身は403!
ログを見ると
AH01630: client denied by server configuration: /usr/local/svnmanager/
これはrootユーザで
/usr/local/svnmanager-1.09/ から /usr/local/svnmanager/ に貼ったシンボリックリンクのせい。
多分、/usr/local/svnmanager-1.09/config.php.linux から /usr/local/svnmanager-1.09/config.php に貼ったシンボリックリンクも問題になりそうなので一緒に、chown -h apache.apache ************** で、オーナーとグループをapacheに変える。
③ 再び、http://*********/svnmanager/ スタックコールのログが出る。
SQLがはじかれているっぽい。
# firewall-cmd –permanent –add-service=mysql
# firewall-cmd –reload
④ しかし文字しかでない。「PLEASE RELOAD」と、書いてあったので、その通りに【F5】。
⑤ SVNManager からご紹介メールを飛ばそうとすると You entered an invalid email address.
⑥ ユーザを追加しようとすると、 Invalid e-mail address!
# firewall-cmd –permanent –add-service=smtp
# firewall-cmd –reload
# firewall-cmd  –list-services
dhcpv6-client http mysql smtp ssh
それでも解決できなので、
# systemctl stop firewalld
しかし、解消できない。
メール垢用のスクリプトも用意してみるが・・・

# cat addmailuser.sh
echo "start to create mail account user=$1 ssh-password=$2 mail-password=$3"
# ログインできないユーザを作る
useradd -s /sbin/nologin $1
# パスワードを設定する
passwd $1 << .EOT.
$2
$2
.EOT.
# メアド用のパスワードの設定
# `uname -n`の部分は、メアドが ユーザ名@マシン名 になるので、環境に合わせて、要調整。
echo "$3" | saslpasswd2 -p -u `uname -n` -c $1
# 設定済みの内容を確認
sasldblistusers2
chgrp postfix /etc/sasldb2
echo END
# 失敗した時のコマンド
# saslpasswd2 -d $1 -u `uname -n`

/etc/php.iniの
sendmail_path = /usr/sbin/sendmail -t -i

sendmail_path = /usr/sbin/sendmail.postfix -t -i
に変えても無駄。
・・・
ここで終了!
 
 
 



【apache】svn

今まではコレで
<Location /repos/>
DAV svn
SVNParentPath /var/www/svn
SVNListParentPath on
#SVNAutoversioning on
Require local
Require ip 192.168..0/24
AuthType            Basic
AuthName            “Authorization Realm”
AuthUserFile        /etc/httpd/conf.d/.htpasswd
#AuthzSVNAccessFile /etc/httpd/conf.d/.svnauth
Require valid-user
</Location>
LAN かつ htpasswd で登録したユーザだけ見れたハズだったが・・・
今は Require  で 審査完了
つまり、Require(住所) OR Auth(認証) と判定しているようで、
C言語風に AuthType~AuthUserFile は処理しないから、
IPアドレスでOKが出れば、誰でも観れてしまう。
Satisfy All
を付け足すと、IPアドレスとBASIC認証の両方の条件を満たさないと観れなくなるけど
moduleの超集合(継ぎ接ぎ)体であるapacheなので

やはり、moduleが理解できる書き方をしなければ、Satisfy Anyになってしまう

<Location /repos/>
DAV svn
SVNParentPath /var/www/svn
SVNListParentPath on
#SVNAutoversioning on
#所定のIPアドレスの範囲
Order deny,allow
Deny from all
Allow from 192.168..0/24
#BASIC認証
AuthType            Basic
AuthName            "Authorization Realm"
AuthUserFile        /etc/httpd/conf.d/.htpasswd
#AuthzSVNAccessFile /etc/httpd/conf.d/.svnauth
Require valid-user
#両条件を満たす場合のみ許可
Satisfy All
</Location>

と書かないとダメなようだ。
ほとんどVB6のfrmファイルの手修正する香りがする。
ここまで来ると、Node.jsの方がマシな気が段々強くなってくる。



【KVM】キックスタートを使ったCentOS7.1のゲストのインストール

CentOS7のKVMゲストをvirt-installで作るには
/rootに以下のファイルを作り、
1.centos.7.ks.cfg  (キックスタートファイル)

#参考 url
#http://ngyuki.hatenablog.com/entry/2013/10/16/233656
#http://qiita.com/ngyuki/items/fd469fec1cea873de0bf
#version=RHEL7
install
text
cmdline
skipx
#とりあえず画面もキーボードも日本語で設定。
lang ja_JP.UTF-8
keyboard jp106
timezone Asia/Tokyo --isUtc --nontp
#--noipv6は好み次第、Win10では青い画面の原因。
network --hostname=ドメイン付のホスト名 --onboot yes --device eth0 --bootproto dhcp --noipv6
zerombr
bootloader --location=mbr
#ラフなパーテーション設定なので要確認
clearpart --all --initlabel --drives=vda
part /boot --fstype=xfs --size=500 --asprimary
part swap --size=1024
part / --fstype=xfs --size=1 --grow --asprimary
#仮のパスワードはpassword。
rootpw password
user --name=管理者のユーザID --password=password
auth --enableshadow --passalgo=sha512
#邪魔なものは全て外しておきますので、適宜調整してください。
selinux --disabled
firewall --disabled
firstboot --disabled
reboot
#
repo --name="CentOS"  --baseurl=http://ftp.riken.jp/Linux/centos/7/os/x86_64
#以下は最小限程度です。必要なパッケージは適宜追加してください
%packages
@base
@core
%end

2.create_kvm_centoa7.1_guest.sh (virt-installのパラメータを組上げるシェルスクリプト)

#ネットワークインストールするリポジトリURL指定
 REPOS=http://ftp.riken.jp/Linux/centos/7/os/x86_64/
#KVM上での名前(CentOS7.1)を指定
 IMAGE_NAME=CentOS7.1
 IMG_PATH=/var/lib/libvirt/images
#virt-installでインストールする ディスクサイズは20GBになっています。
 virt-install \
 --name ${IMAGE_NAME} \
 --ram 1024 \
 --disk path=${IMG_PATH}/${IMAGE_NAME}.qcow2,size=20,format=qcow2 \
 --vcpus=1 \
 --hvm \
 --os-type linux \
 --os-variant=rhel7 \
 --nographics \
 --location="${REPOS}" \
 --cpu host-passthrough,+lahf_lm \
 --network bridge=br0 \
 --initrd-inject=/root/centos.7.ks.cfg \
 --extra-args='inst.ks=file:/centos7.ks.cfg console=ttyS0'

sh ./create_kvm_centoa7_guest.sh  を実行して暫く待つ。
※この例ではミラーサイトを参照してインストールしていますが
フルパッケージのISOイメージをダウンロードして使った方がいいでしょう。

  • centos.7.ks.cfgの repo文を削除
  • create_kvm_centoa7_guest.shの REPOS変数をダウンロードしたISOファイル名に変える。

※/tmp以外にISOイメージを配置すると、いくら工夫(777)しても「読めない」エラーをすり抜けることができませんでした。
 



【KVM】VMのコピーはやらない方がよさそう

VMをコピーして使うとIPアドレスとかマシン名とか色々被る。
ディスクイメージファイルをコピる。
cd /var/lib/libvirt/images
cp  VMsrc.qcoq2  VMdis.qco12
定義ファイルをコピる。
/etc/libvirt/qemu/VMsrc.xml
/etc/libvirt/qemu/VMdis.xml
定義ファイルの中も名前を変える
<name>VMdis</name>
<uuid>後述</uuid>
<source file=’/var/lib/libvirt/images/VMdis.qcow2’/>
<mac address=’後述‘/>
後述なのですが・・・

28.8. 新規の特有 MAC アドレスを生成

に書いてあるpythonのコードは
./macgen.py: 行 4: import: コマンドが見つかりません
./macgen.py: 行 6: 予期しないトークン `(‘ 周辺に構文エラーがあります
./macgen.py: 行 6: `def randomMAC():’
とエラーになって使えません。

sh ./macgen.py
じゃダメだよね。

python ./macgen.py
 File "./macgen.py", line 13
 print randomMAC()
               ^

まだダメらしい。
pythonの仮想環境をインスト。
これで、
# pyenv versions
でインスト済みのバージョンを調べ、無かったら・・・
# pyenv install –list
でインストできるバージョンを調べ、
# pyenv install インストールするバージョン
※要らないバージョンは uninstall  で削除。
でインストした後に
#  pyenv local 3.4.3
# python –version   で確認。
とすれば、自分だけインストールした中から好きなpythonを使える。
っと便利になったところで・・・結局は・・・
print randomMAC()
この辺はRedHatがそのような文化らしいので、
CentOSでは
print (randomMAC())
と変えなくてはいけないらしい。
pyenv での変更は ユーザのホームディレクトリィの.pyなんたらファイルを2個消して再ログインすればOK。
これでMAC ADDRESSはGET。
virtinst.utilパッケージを使うともっと良い!と書いてあったが
ImportError: No module named virtinst.util
そんなものはここにはなかった。
find / -name *virtinst* -print に願いをかけたら
/usr/share/virt-manager/virtinst と答えが返ってきた
中にちゃんと util.py もある。
export PYTHONPATH=”/usr/share/virt-manager:$PYTHONPATH” の後もエラー
util.py には randomUUIDは、あるものの パラメータ CONN が必要で・・・
ってソース読んだらテスト用のパラメータだった。 orz
uuidToStringとrandomMACが無かった!
でもUUIDは取れたし、MACアドレスはサンプルに載っていたので
new_uuid_mac.pyは

※以下はRedHatの参考コード+赤い文字は書き換えた部分
#!/usr/bin/python ※which pythonで見つかったパスを設定する
# -*- coding: utf-8; mode: python; -*-
#
# export PYTHONPATH="/usr/share/virt-manager:$PYTHONPATH"
import sys; sys.path.append('/usr/share/virt-manager')
import virtinst.util; print("MAC UUID: " + virtinst.util.randomUUID("dummy"))
import random
def randomMAC():
 mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ]
 return ':'.join(map(lambda x: "%02x" % x, mac))
print("MAC ADDRESS: " + randomMAC())

でいいんじゃないかな?
で、
結局は
pythonの新バージョンとか仮想環境の準備は全く不要でした。
 
あ、マシン名は
ネットワークの接続をハズして・・・
virsh start  VMdis
virsh console VMdis

vi /etc/hostname で書き換えてreboot
起動せずに/etc/hostnameを書き換えたい場合はループデバイスを使ってマウントしてしまえばいいけど
CentOS7では自動作成したディスクでは皆同じなので、ゲスト側のボリュームグループ名を一時的に書き換えてからマウントすることになる。

というわけで、
面倒な気がしても
実際には

キックスタートファイル

を作って
virt-installで新インストした方がよさそうだ。
 
 
 
 
 
 
 
 


    


【TortoiseSVN】ちょっと使ってみた

サイト: https://tortoisesvn.net/downloads.html から
32ビット版と64ビット版をダウンロードする。
日本語化する場合は同じページの Language packs から 日本語対応モジュールをDLする。日本語マニュアルもあるので一緒にDLしておこう。
インストールのCustomSetupでcommand line client toolsが対象外になっているがインストールするように変更しておけば C:\Program Files\TortoiseSVN\bin あたりにsvnadmin.exeなども入るので、バックアップのBATファイルを作る時や他のマシンにリポジトリィを移行する際に

svnadmin dump xxxxx

‘svndump’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。 (汗
とならずに済むようにBATファイルの中で

PATH=$PATH;C:¥Program Files¥TortoiseSVN¥bin

とパスを通した方がいいかもしれない。
リポジトリィを作る時は

svnadmin create  リポジトリィのパス名

※フォルダのアイコンは普通のままなので、http://nnspaces.sblo.jp/article/3365748.html を参考にsvnのアイコンを設定してみたが、Windows 10ではなぜか?うまくいかず、何かの操作のタイミングでアイコンが変わった。

フォルダの中にこんなDesktop.iniファイルを作り

[.ShellClassInfo]
IconIndex=0
IconFile=アイコンのファイル名
InfoTip=

@attrib +s . でフォルダにシステム ファイル属性を設定していた。

※アイコンを戻す時はattrib -s .

Windows7あたりからBATファイルをダブルクリックしたときの実行時のカレントドライブとカレントパスはファイルとはどこか別の場所らしいので・・・

%~d0    ※BATファイルのパスのドライブ名を抽出⇒c: とかになる
cd %~p0  ※BATファイルのパスのフルパス名を抽出⇒¥svn¥rep¥ とかになる

をBATファイルの先頭につけカレントのドライブとパスを一致させ解決。

これを付ければカレントのフォルダで何かしてほしいBATをコマンドプロンプトから起動しなければいけない制約がなくなる。

勿論、BATファイルのショートカットを作れば、作業フォルダがC:\svn\repとかになっているので自動的に解決してくれる。

だが、設定がキャッシュされないっぽいので、フォルダの中にDesktop.iniとsvn.icoを残さないとスグに元ってしまうのはどうしようもないようだ。

リポジトリィのバックアップは

svnadmin dump   リポジトリィのパス名  >  dumpログファイル名

リポジトリィのパス名は、リポジトリィブラウザのURLにあるfile:///やhttp://等が使える
リポジトリィのリストアは

svnadmin create リポジトリィのパス名
svnrdump   load  リポジトリィのパス名 < dumpログファイル名

※リビジョンの変更が無効化されている場合は、別途有効化しないとダメ。
いくつもリポジトリィを作った場合、リポジトリィブラウザにurlをいくつも手入力しなければならない。
面倒な時は、こんな風なsvnHistory.regファイルを作っておけば

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\TortoiseSVN\History\repoURLS]
"url0"="file:///C:/svn/rep/a"
"url1"="file:///C:/svn/rep/b"
"url2"="file:///C:/svn/rep/c"

ファイルのダブルクリックでレジストリィに登録してくれるのでリポジトリィブラウザを開けばすぐ使える。
リポジトリィブラウザのurlの履歴リストのゴミは、キーで選択状態にして、シフト+Deleteキーで1つづつ消せるし、設定で一発クリアも可。
“C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe”のショートカットのリンク先に

/command:repobrowser /path:"file:///C:/svn/rep/a/trunk"
などと追記すると、スグお目当てのリポジトリィを操作できる。


【Win10】DiXiM Player(4)

再びDiXiM PlayerからBDZ-EW500を起動できなくなった。
もう何度も試行しても起動する気配が無くなったので
AndroidのGoogle PlayからWONアプリのMike Webb製「Wake On Lan」でBDZ-EW500を起動できた。
このアプリはAndroidのウエジットでもグループや機器を起動したり電源状態をみたりできる。
初回のLANスキャンではHyper-VのVMも反応するけど、BIOSの設定でWON機能をONにしておかないとダメなようだ。
とりあえず居間まで移動しなくてもスマホの画面から起動できる様になったのは嬉しい。
 
 



【Windows10】Bluetoothの音質

普通にBluetoothのヘッドセットを繋ぐと酷い音質だ。
「コントロールパネル」「オーディオ デバイスの管理」で
ヘッドセットの「プロパティ」の「詳細」を観ると・・・

モノラルの電話音質になるので、
「Bluetoothのヘッドセットに音質を求めるのは無駄」
と云うことになるが
「コントロールパネル」の「デバイスとプリンター」でヘッドセットの「プロパティ」の「サービス」を観ると「ハンズフリーテレフォニー」にチェックが入っているため「どのモードでも使える共通モード」として【モノラルの電話音質】になっているのだ。
だから、マイクに見切りを付けて「ハンズフリーテレフォニー」のチェックを外す。

すると、ヘッドセットから音が出なくなるので、一旦ヘッドセットのペアリングを削除し、もう一度ペアリングをし直すと

共通モードからもう少しマシなモードに切り替わったからアプリはこれに自動追尾できずサイレントになった訳だ。
このままでもいいけど、多分低音とか音の広がりはかなり足りないので、
画面右下のサウンドマークを右クリックし「サウンド」を選択、(画面が出るまで暫く待って)「再生」タグから使ってるデバイスをリストから探し出し「プロパティ」から「音の明瞭化」で

お好みで設定するといいだろう。

そこまでしてもBTW04の音質は低音に物足りなさを感じるが、イヤフォンなのだから仕方が無い、
なので、なかなかDR-BT21Gを手放せない。(笑



【KVM】 久しぶりにリモートからのvirt-installしてみたら・・・

久々にCentOS7.0のゲストOSを新たに作ろうとしたら・・・
アレ?インスト画面が出ない!
コンソールからやってもブートログが出るだけ!
インストーラーがGUIしか考えていないものになったのか?
https://virt-manager.org/download/ の
virt-viewer 2.0 (gpg) Monday Jan 12th, 2015 Win x86 MSI (gpg) Win x64 MSI (gpg)
をクリックしてSPICEのviewer(クライアント)をダウンロード。
しかしインストーラーを起動すると、ファイルコピーをするだけ。
どこだ!Windows10だけに(爆
C:\Users\${ユーザー名}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
を見るとVirtViewerが出来ていた。中のRemote viewerをクリックすると接続設定画面が出てくる。
CentOSゲストをインストールするファイルのvirt-installのパラメータの

--nographics \

    --accelerate \
    --graphics spice,listen=0.0.0.0 --channel spicevmc \
    --video qxl \

に変えてインストール。
virsh dumpxml CentOS7.0 | grep spice で
<graphics type=’spice’ port=’5900‘ autoport=’yes’ listen=’0.0.0.0′>
と出たのでポートを開ける。
firewall-cmd –zone=public –permanent –add-port=5900/tcp
systemctl restart firewalld
ここでRemote viewerからspice://192.168.*.*:5900 で繋ぐと、・・・手遅れだった。
今度はRemote viewerを設定してから再インスト。
ブートログは順調に流れたが・・・
リモートやコンソールから接続と同様に
[  OK  ] Reached target Basic System
からGUIに切り替わらない!
Windows10のインストで使った-cpuオプションのh,+lahf_lmも
./create_kvm_centos7_guest.sh: 行 22: h,+lahf_lm: コマンドが見つかりません
の始末。※ 途中の行末に\ が抜けていたのが原因だった。
世の中、何か変わってる。
to be continue…
ps.
旧バージョンも試してみた。
http://www.spice-space.org/download.html から
spice-client-win32-0.6.3.zip と wspice-x86_20110308.zip をDLし
wspice-x86_20110308.zipを展開したLIBフォルダに
spice-client-win32-0.6.3.zipの中身をコピーしないといけないっぽい。
しかしwspice-x86_20110308.zipが壊れているっぽく解凍できない。
HDDを検索したら前にDLしたwspice-x86_08032011.zipが残っていたのでこれを使うことにする。
しかし、やはりダメ。
yum -y install spice-server
パッケージ spice-server-0.12.4-9.el7_1.3.x86_64 はインストール済みか最新バージョンです
何もしません
spice-clientで矢印やFきーを押すと見慣れた起動中バーが表示される
横にはCentOS Linux 7 (Core) dracut-033-240.el7 (Initramfs)と書いてある。
ぐぐってみると

Issue while creating a CentsOS 7 KVM Guest

を見るといいらしいのだが・・・
とりあえず起動ログを見ると、何か失敗したらしい
journalctl コマンドで
vda: failed to get path uid
とか
dhcp failed
の文字が見える。
testモードで起動すると、HDDが無いやん!となるのは知っているので、そうなってしまったらしい。
先のURLの記事を見ると、まさにその通りになっていた。
どうやらキックスタートファイルを作らないとダメになったようだ。
もう設定はグチャグチャだ。
 
 
 
 



CPUとRAMとROM

以前は集積度や製造工場の得意・不得意分野、製造上の都合でCPUとRAMとROMと分けられていた。
つまりICの業界用語の1つである。
CPUはプログラムを高速で実行(計算)するチップなので、チョット見偉そうだが、RAMやROMに入っているプログラムを見てボソボソと独り言を云いつつ・・・これかな?と思ったボタンを押すだけのチップだ。はっきり云えば「ピタゴラスイッチ」そのものである。RAMやROMに入っているプログラムはそのスイッチの配置図であり、その回路にボールが入ってきて、スイッチの位置が変わる度にRAMのデータが書き換わるのである。
暑くなった部屋の窓を開け風を入れるだけでピタグラスイッチに対する妨害(俗に云うハッキング等)は容易であるように、プログラムで出来た基本的に回路(ピタグラスイッチ)も脆弱性の無いトコロなぞ皆無である。
しかし、脆弱性であると云うことは「変幻自在」であることと同位であり、それこそが、デジタルコンピュータの良いトコロでもあるのだ。
そうでなければ、

  1. 適当にアプリをダウンロード
  2. 遊んでみる
  3. つまらない
  4. アンインストール

という事を無償で試すということは不可能なのだ。
 
 
 




top