BlueScreenView

ブルーレイにデータを焼くときにブルースクリーンが頻発したのでメモ

参考:BlueScreenViewのインストールと使い方
参考:BlueScreenView – ブルースクリーンエラーの原因を解析してくれるソフト

エラーコード:44
と表示されていたので、おそらくドライバ周りのエラーだと思われるのだけど
原因のドライバが現時点で分からなかったのでメモ

最近、やることすべてでつまづいてます
早くにんげんになりたい(:D)rz

CentOSにjavaをインストールする

オブジェクト指向デザインパターンのお勉強はじめました

サンプルプログラムの言語が java ベースだったので、はじめは PHP で書き直して動かそうと思ってたんですが、なかなか動作せず。PHP で書き直して動作確認をするのは2週目からにしようと投げました(:D)rz
で、手元に java の動作環境がないので、VM の CentOSjava を入れることに。

Java openjdk のリストを表示

[riceplanting@localhost ~]$ !1005
yum list \*java-1\* | grep open
java-1.7.0-openjdk.x86_64             1:1.7.0.19-2.3.9.1.el6_4          @updates
java-1.7.0-openjdk-devel.x86_64       1:1.7.0.19-2.3.9.1.el6_4          @updates
java-1.6.0-openjdk.x86_64             1:1.6.0.0-1.61.1.11.11.el6_4      updates
java-1.6.0-openjdk-demo.x86_64        1:1.6.0.0-1.61.1.11.11.el6_4      updates
java-1.6.0-openjdk-devel.x86_64       1:1.6.0.0-1.61.1.11.11.el6_4      updates
java-1.6.0-openjdk-javadoc.x86_64     1:1.6.0.0-1.61.1.11.11.el6_4      updates
java-1.6.0-openjdk-src.x86_64         1:1.6.0.0-1.61.1.11.11.el6_4      updates
java-1.7.0-openjdk-demo.x86_64        1:1.7.0.19-2.3.9.1.el6_4          updates
java-1.7.0-openjdk-javadoc.noarch     1:1.7.0.19-2.3.9.1.el6_4          updates
java-1.7.0-openjdk-src.x86_64         1:1.7.0.19-2.3.9.1.el6_4          updates

java のインストール

sudo yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64
java のバージョン確認
[riceplanting@localhost public_html]$ java -version
java version "1.7.0_19"
OpenJDK Runtime Environment (rhel-2.3.9.1.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

環境変数とか、その他もろもろ細かい設定が必要になってくる時もあるみたいだけど、今のところよくわかってないので問題が出てきたらその都度書き残してくことにする予定。

VirtualHostの設定

VirtualHost とはなんぞ

1つのサーバに複数のドメインを管理する場合に使用
参照:Apache Web サーバ - ご先祖様はきっと農民。

VirtualHost の設定

例)dev.example.com というドメインをバーチャルホストで管理する場合
ドキュメントルートは /var/www/dev.example.com/public_html/

作業の流れ
  1. ディレクトリを作成
  2. バーチャルホストの設定

ディレクトリを作成

  • /var/www/ ディレクトリ以下に以下のファイルを作成

mkdir の -p オプションは存在しない親ディレクトリを作成する場合に使用。

mkdir -p /var/www/dev.example.com/public_html
  • 権限を変更
chown -R riceplanting:riceplanting /var/www/dev.example.com/public_html

編集するファイル

/etc/httpd/conf.d/dev.example.com.conf
  • /etc/httpd/conf.d/ ディレクトリ以下に dev.example.com.conf を新規作成
vim /etc/httpd/conf.d/dev.example.conf
<VirtualHost *:80>
ServerName dev.example.com
DocumentRoot "/var/www/dev.example.com/public_html"
DirectoryIndex index.html index.php
ErrorLog /var/log/httpd/dev.example.com_error_log
CustomLog /var/log/httpd/dev.example.com_access_log combined
AddDefaultCharset UTF-8
<Directory "/var/www/dev.example.com/public_html">
AllowOverride All
</Directory>
</VirtualHost>
/etc/httpd/conf/httpd.conf

VirtualHost の有効化

  • NameVirtualHost のコメントアウトを外す
NameVirtualHost *:80

公開鍵認証

かぶってることもあるけど、おさらいも兼ねて
参照:OpenSSH - ご先祖様はきっと農民。

公開鍵認証を使った ssh 接続手順

  1. ペアの鍵ファイル作成
  2. サーバに公開鍵を保存
  3. sshd 設定ファイルの編集
  4. ターミナルの設定

サーバはCentOS6系、Windows7
ターミナルは teraterm, ftpクライアントはFileZilla を使用。

ペアの鍵ファイル作成

  • teraterm で設定 -> SSH鍵生成 -> 生成

f:id:riceplanting:20130602151259j:plain

  • 「公開鍵の保存」を選択して公開鍵ファイルを保存
  • 「秘密鍵の保存」を選択して秘密鍵ファイルを保存

サーバに公開鍵を保存

保存場所となるディレクトリを作成
mkdir .ssh
  • 他のユーザーにアクセス権がないように権限を変更
chmod 700 .ssh

サーバに公開鍵を保存

保存した秘密鍵ファイルを teraterm にドラッグ&ドロップでOK
f:id:riceplanting:20130602151846j:plain

  • 保存ファイル名の変更
~/.ssh/authorized_keys

公開鍵ファイルの名前は authorized_keys に変更する。
転送先ディレクトリ、ファイル名を指定して、SCPを押せば転送開始。
ドラッグ&ドロップで、転送してくれる事を初めて知りました。(:D)r2

  • 書き換え防止のために権限を変更
chmod 600 authorized_keys

sshd 設定ファイルの編集

  • /etc/ssh/sshd_config (一部抜粋)
port 1024~65536までの間のポート番号を指定
PermitRootLogin no
PasswordAuthentication no
  • ssh のポート番号22から変更しておくとよさげ。
  • root でのログインを許可しない
  • パスワード認証を許可しない

これで気持ちセキュリティアップ!

ターミナルの設定

teraterm での設定方法
  • ホスト名とポート番号を入力 -> OK

f:id:riceplanting:20130602154048j:plain

  • RSA/DSA鍵を使うを選択 -> 秘密鍵ボタンを押して保存した秘密鍵ファイルを選択
ttpmenu での自動接続設定

自動ログインで楽がしたいでござる!

f:id:riceplanting:20130602154114j:plain

登録名は適当に、ホスト名にはホスト名とポートを「:」で繋いでポート番号を
例)host: 192.168.1.6 port:12345

192.168.1.6:12345

保存した秘密鍵ファイルを選択
最後に左向き ▲ を押して設定を保存。これで次回から自動ログインできるんじゃなかろうか

おまけ(SFTP設定)

FileZilla の場合

公開鍵認証を使う的な選択肢がないじゃないかバーロー!と思って探してみたら
teraterm と違って、鍵認証ファイルは一括で管理しているらしい

  • 編集 -> 設定
  • SFTP -> 鍵ファイルを追加

f:id:riceplanting:20130602154842j:plain
teraterm で作成したファイル形式では使えないので変換しますか?的なことを聞かれるので、はいを選択
FileZilla用の秘密鍵ファイルを保存して、それを秘密鍵ファイルとして追加。

  • OK ボタンを押して設定完了

ssh, ftp の設定が理解が浅すぎて、非常に怪しい今日この頃です。
あ、上2つだけじゃなくて、どれも理解が浅すぎですねー!

Samba

Samba とはなんぞ

Sambaとは、Microsoft ネットワークで使用される SMB/CIFS プロトコルを扱うソフトウェア

Samba を使うと何ができるのか

Linux サーバを Windows のファイルサーバにしたり、Linux から Windows のファイル共有にアクセスしたりすることができる

Microsoft ネットワークの仕組み

そもそもの、Microsoft ネットワークの仕組み

NetBIOS

NetBIOS とは、Network Input/Outpt System の略。TCP/IP がまだ主流ではなかった 1980年代に開発されたAPI (Application Programing Interface) 通信を行うための基本的なプログラムが BIOS(基本入出力システム)という形式で提供されたことから、MS-DOS で標準的に使われるようになった。

NetBEUI

NetBIOS をベースに IBM社が拡張したプロトコルが NetBEUI (NetBIOS Extended User Interface) Windows95 時代は標準的に利用されていた。

NBT (NetBIOS over TCP/IP)

TCP/IP 上に NetBIOS インターフェースを実装したプロトコル。現在ではこれが主流っぽい。

Microsoft ネットワークでの名前解決

コンピューター名を使って通信を行うには、そのコンピュータ名からIPアドレスを知る必要がある。Microsoft ネットワークでは、いくつかの名前解決手段が使われる。

ブロードキャストによる名前解決

ネットワーク上すべてのコンピューターに対してブロードキャストを行い、問い合わせに該当するコンピューターは問い合わせ元に返答することで名前解決を行う。

WINS による名前解決

WINS (Windows Internet Name Service) とは、DNSサーバのような役割を果たす。WINSサーバが名前解決を行い、他のコンピューターはWINSサーバに問い合わせを行う。

LMHOSTS ファイルによる名前解決

Linux での /etc/hosts ファイルに相当するものとして、Windows では LMHOSTS というファイルがある。LMHOSTS ファイルに IPアドレスとコンピュータ名の対応を記述しておくことで、静的な名前解決が可能になる。

DNS による名前解決

DNS を使った名前解決も利用できる

Samba の機能

Samba を使用することで、以下の機能が利用できる

  • ファイルサーバ
  • プリントサーバ
  • ドメインコントローラ
  • WINS サーバ
  • Microsoft ネットワーククライアント
Samba のパッケージ
  • samba
  • samba-common
  • samba-client

Samba サーバの設定

Samba の主な設定は /etc/samba/smb.conf で行う。smb.conf は、大きく分けて2つの部分から構成される。

  • Global Settings
  • Share Definitions
Global Settings

Samba サーバの全体的な設定を行う部分。この部分を変更した場合は Samba サーバの再起動が必要。

Share Definitions

ファイル共有やプリンタ共有の設定を行う部分。この部分を変更した場合は、Samba サーバの再起動は必要なし。

Samba サーバの設定例

global セクション

Samba サーバ全般に及ぶ設定を行う

unix charset

Samba サーバで利用する文字コードを指定。システムの設定に合わせて「UTF-8」,「EUCJP-MS」いずれかを指定する。

unix charset = UTF-8
dos charset

Windows 側で利用する文字コードを指定。

dos charset = CP932
display charset

Samba コマンドが利用する文字コードを指定。通常は unix charset と同じものを指定

display charset = UTF-8
workgroup

所属するグループ、またはドメイン名を指定

workgroup = MYGROUP
server string

アイコンに表示されるコメントを記述。You ブラウジング時に識別しやすい文字列を指定しちゃいなよ

server string = CentOS Samba Server
hosts allow

接続を許可するホストを指定。コメントアウトされている場合、すべてのホストからの接続を許可

hosts allow = 192.168.1.6
printcap name

printcap ファイルの絶対パスを指定。load printers と組み合わせて使う

load printers

プリンタごとにプリンタ共有を定義するのではなく、 /etc/printcap の設定に基づいてプリンタ共有を定義する。デフォルトは「yes」

load printers = yes
guest account

「guest ok = yes」の場合、ゲストユーザーとして利用されるアカウントを指定する。
※ ユーザーは /etc/passwd に存在するユーザーに限る。

guest account = nobody
log file

ログファイルを指定。デフォルトの場合、接続マシンごとにログファイルが分かれる。「%m」はクライアントの NetBIOS を表す。

log file = /var/log/samba/%m.log
max log size

最大ログサイズをキロバイト単位で指定する。「0」の場合、上限を設けない。

max log size = 50
security

セキュリティーモードの設定を行う

security = user
セキュリティモード 内容
share 共有単位でパスワードを用いて認証する
user ユーザー名とパスワードを用いて認証する
server 他のサーバに認証を依頼する
domain ドメインコントローラに認証を依頼する
ads ActiveDirectory ドメインのドメインコントローラに認証を依頼する
encrypt_passwd

暗号化パスワードを利用する。デフォルトは「yes」

encrypt_passwd = yes
smb passwd file

Sambaで利用するアカウントとパスワードが格納されるファイルを指定

smb passwd file = /etc/samba/smbpasswd

homes セクション

ユーザー毎のホームディレクトリを共有する場合の設定

comment

ブラウジング時に表示されるコメントを記述する

comment = Home Directories
browsable

「yes」の場合、ネットワークコンピューターでブラウズしたときに表示される

brouwsable = yes
writeable

書き込みも可能とする。read onli = no と writeable = yes は同意

writeable = yes

printers セクション

プリンタ共有のためのセクション

path

共有のパスを指定

printers = /var/spool/samba
printable

プリンタ出力を許可するかどうかを指定

printable = yes
map to guest
  1. never デフォルト
  2. bad user
  3. bad password

ユーザーアカウントの管理

セキュリティレベルが「user」時、Samba用ユーザーアカウントを作成しておく必要がある。Samba用ユーザーアカウントを作成するには、 pdbedit コマンドを使う

pdbedit
pdbedit -a -u centuser
オプション 内容
-a ユーザーを追加
-u ユーザーの指定
-L ユーザー一覧を確認
-x ユーザーを削除する
smbpasswd

上記の pdedit 同様、ユーザーアカウントの管理の設定

smbpasswd -a centuser

※ なお、上記二つのコマンドで作成されるユーザーは、予め /etc/passwd ファイルに登録されている必要がある。ユーザー情報は /etc/samba/smbpasswd ファイルに格納される。
また、パスワード変更時にも使用する。

NetBIOS での名前解決

コンピューター名が hoge であるホストのIPアドレスを調べる
nmblookup hoge
ワークグループ WORKGROUP 内のマスターブラウザを検索
nmblookup -M WORKGROUP
ワークグループ WORKGROUP に参加しているホストのIPアドレスを表示
nmblookup WORKGROUP

コンピューター名の後ろに付いているのは、NetBIOSのリソース名

名前 内容
コンピュータ名 00 ワークステーションサービス
コンピュータ名 01 ファイルサーバサービス
__MSBROWSE__ 01 マスターブラウザ
ドメイン名 1B ドメインマスターブラウザ
ドメイン名 1C ドメインコントローラ
ドメイン名 1D マスターブラウザ

FTP

FTP (File Transfer Protocol) サーバソフトウェアの代表的なものには

  • wu-ftpd
  • ProFTPD
  • vsftpd etc...

などがあり、CentOS では、vsftpd (Very Secure ftpd) が採用されている

vsftpd の設定

vsftpd の設定ファイル
  • /etc/vsftpd/vsftpd.conf
基本的な書式
設定項目名=設定値
匿名FTP の有無

匿名FTP とは、サーバにアカウントがない場合でも、ユーザー名として anonymous, パスワードとして利用者のメールアドレスを使用すればログインできるFTPサーバのこと。アカウントのあるユーザーのみにFTPの利用を許可したい場合は「No」にする。

anonymous_enable=YES
ローカルユーザーのログイン許可

アカウントのあるローカルユーザのログインを許可するかどうかを指定

local_enable=YES
アップロードの許可

FTPでのファイルのアップロードを許可するかどうかを指定

write_enable=YES
匿名FTP でのファイルのアップロード

匿名FTP でのファイルのアップロードを許可するかどうかを指定。匿名FTP は誰もが利用可能なため、悪用されないよう基本的には禁止しておくが無難。その場合設定値は「NO」、もしくはコメントアウト(デフォルトではコメントアウトされ無効化)

anon_upload_enable=YES
匿名FTP でのディレクトリ作成の許可

匿名FTP でのディレクトリ作成を許可する。(デフォルトではコメントアウトされ無効化)

anon_mkdir_write_enable=YES
ログファイルへの記録

ファイルのアップロード/ダウンロードの情報をログファイルに記録する。
デフォルトのログファイルは /var/log/vsftpd.log

xferlog_enable=YES
TCP/Wrappers の利用

TCP Wrapper を使ったアクセス制御の有効/無効化

tcp_wrappers=YES

ユーザーが利用できるディレクトリを制限

デフォルトの設定では、一般ユーザーで FTPログインした場合、そのユーザーのホームディレクトリに移動する。cdサブコマンドを使ってシステム内のディレクトリツリーを自由に移動できてしまうため、セキュリティ上よろしくない。
各ユーザーのホームディレクトリより一切↑にはいかなようにする

ホームディレクトリ以外に移動できないように設定
chroot_local_user=YES

ユーザーのログインディレクトリを変更

ユーザーのホームディレクトリ内に、ディレクトリを作成しておき、FTPログイン時に ~/ディレクトリ名 にログインするようにするには下記の通り。

local_root=ftp
# Apache Webサーバを利用してユーザのホームディレクトリを公開している場合など
loclal_root=public_html

PASV モードの対応

FTP は基本的に、データ転送に20番ポート、制御用に21番ポートと、サーバ側で2つのポートを利用する。一般的に、クライアントとサーバ間で通信が行われる場合、クライアント側からサーバ側へ接続を要求する。FTP のデータ転送については、サーバ側からクライアント側へ接続を要求する。が、FTPのデータ転送については、サーバ側からクライアント側に接続できない事態が発生する恐れがあるlこのような場合、、FTPサーバを PASVモードを利用することで回避できる
PASVモードでは、FTPデータ転送についても、制御接続と同様 クライアント側からサーバへ接続を要求する。

PASVモードの有効化
pasv_enable=YES
vsftpd PASVモードを利用する
  • /etc/vsftpd/vsftpd.conf
pasv_enable=YES

FTP クライアントコマンド

コマンドラインでFTPサーバに接続してファイルのアップロード/ダウンロードを行うには lftpd コマンドが利用できる
アカウントを省略すると、匿名ユーザーとして自動的にログインできる

lftpd ホスト名

lftpd サブコマンド

コマンド 内容
ls ファイル名一覧を表示
cd ディレクトリを移動
lcd ローカルのディレクトリを移動
pwd カレントディレクトリを表示
get FILENAME 指定したファイルをダウンロード
mget FILENAME 指定したファイル(複数)をダウンロード
put FILENAME 指定したファイルをアップロード
mput FILENAME 指定したファイル(複数)をアップロード
mirror DIR 指定したディレクトリをミラーリングダウンロード
user USERNAME 匿名ユーザーでログイン中、指定したユーザーで入りなおす
!COMMAND ローカルでシェルコマンドを実行
quit 接続を終了