bacula-sd.confの設定
Storage { # definition of myself
Name = bacula-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/var/spool/bacula"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}
# List Directors who are permitted to contact Storage daemon
Director {
Name = bacula-dir
Password = "xxxxx"
}
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
Director {
Name = bacula-mon
Password = "xxxxxx"
Monitor = yes
}
# Note, for a list of additional Device templates please
# see the directory <bacula-source>/examples/devices
# Or follow the following link:
# http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/examples/devices/
# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
# same Name and MediaType.
Device {
Name = FileStorage
Media Type = File
Archive Device = /Backup ← バックアップfileを保存する場所
LabelMedia = yes; # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}
# Send all messages to the Director,
# mount messages also are sent to the email address
Messages {
Name = Standard
director = bacula-dir = all
}
パスワード(データーベースに登録したPW)とArchive Device = /Backup以外はデフォールトまま。Archive Device は物理的に別のディスク(このホスト自身のバックアップも取るから)で容量の大きなDiskを使う。
bconsole.confの設定
Director {
Name = bacula-dir
DIRport = 9101
address = localhost
Password = "xxxxx"
}
パスワード(データーベースに設定したPW)以外はdefaultのままです。
まずは/etc/bacula/bacula-dir.confの設定(かなり長いですが)。http://lunatear.net/archives/001067.html も参考にしました
Director { # define myself
Name = bacula-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/usr/libexec/bacula/query.sql" ← こんなファイルは存在しないが、問題無い見たい
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = "xxxxxx" ← database baculaに設定したパスワード
Messages = Daemon
}
# Define the main nightly save backup job
# By default, this job will back up to disk in /tmp
Job {
Name = "Backup-samba" ← 私は二つのホストをバックアップするのでホスト毎に設定
Client = samba-fd ← 私は二つのホストをバックアップするのでホスト毎に設定
FileSet = "Full samba" ← 私は二つのホストをバックアップするのでホスト毎に設定
JobDefs = "DefaultJob" ← このJobの定義はDefaultJobに定義してある
}
Job {
Name = "Backup-web" ← 私は二つのホストをバックアップするのでホスト毎に設定
Client = web-fd ← 私は二つのホストをバックアップするのでホスト毎に設定
FileSet = "Full web" ← 私は二つのホストをバックアップするのでホスト毎に設定
JobDefs = "DefaultJob" ← samba-fdと同じJobDefsを使う。つまり共通する部分をまとめてDefaultJobとして定義する
}
JobDefs {
Name = "DefaultJob" ← 上の二つの定義をする
Type = Backup ← バックアップをする
Level = Incremental ← 増分の指定
Schedule = "WeeklyCycle" ← スケジュールはWeeklyCycleを使う
Storage = File ← ストレージのタイプはFileである。つまりディスクにファイルとして保存する
Messages = Standard ← e-mailの内容はStandardに定義する
Pool = File ← Poolはfile
Priority = 10 ← プライオリティは数が少ないほど高い
Write Bootstrap = "/var/spool/bacula/%c.bsr" ← Bootstrupファイルを記録するパス。下記参照
}
# Backup the catalog database (after the nightly save)
Job {
Name = "Catalog-samba" ←名前の定義
Client = samba-fd ←clientはsamba-fdを使う
JobDefs = "CatalogJob" ←jobの定義はCatalogJobに書く
}
JobDefs {
Name = "CatalogJob"
Type = Backup ← バックアップをする
Level = Full ← いつもfullバックアップをとる
FileSet= "Catalog" ← FileSetとして、Catalogに定義する
Schedule = "WeeklyCycleAfterBackup" ← スケジュールはWeeklyCycleAfterBackupを使う
Storage = File ← ストレージのタイプはFileである。つまりディスクにファイルとして保存する
Messages = Standard ← messageはStandardを使う
Pool = File
# This creates an ASCII copy of the catalog
# Arguments to make_catalog_backup.pl are:
# make_catalog_backup.pl <catalog-name>
RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
# This deletes the copy of the catalog
# RunAfterJob = "/usr/libexec/bacula/delete_catalog_backup"
Write Bootstrap = "/var/spool/bacula/%n.bsr" ← 下記参照
Priority = 11
}
# Standard Restore template, to be changed by Console program
# Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
Name = "Restore-samba" ← 私は二つのホストをバックアップするのでホスト毎に設定
Type = Restore ← リストアを定義している
Client= samba-fd ← 私は二つのホストをバックアップするのでホスト毎に設定
FileSet= "Full samba"
Storage = File
Pool = Default
Messages = Standard
Where = /Backup/Restores/samba ← リストアされるファイルの場所を指定
}
Job {
Name = "Restore-web"
Type = Restore
Client= web-fd
FileSet= "Full web"
Storage = File
Pool = Default
Messages = Standard
Where = /Backup/Restores/web ← リストアされるファイルの場所を指定
}
# List of files to be backed up
FileSet {
Name = "Full samba" ← バックアップされるFileSetの名前
Include {
Options {
signature = MD5
Compression = GZIP ← GZip圧縮を使ってバックアップする
}
File = /
File = /Data ← パーティションが違うので指定
File = /Download ← パーティションが違うので指定
}
Exclude { ← バックアップしたくないディレクトリーをこれ以下に入れる
File = /Backup ← パーティションが違うので指定しなくてもよいが念の為
File = /var/spool/bacula ← defaultでbaculaが使うディレクトリ、私は変更しているので指定しなくてもよい
File = /tmp ← 除外するディレクトリーの指定、最後に / を付けてはいけない
File = /proc
File = .journal ← 除外ファイルの指定、*.journal* と言う意味らしい
File = .fsck
File = .lock
}
}
FileSet {
Name = "Full web"
Include {
Options {
signature = MD5
Compression = GZIP
}
File = /
File = /Maildata ← パーティションが違うので指定
File = /webdata ← パーティションが違うので指定
File = /Davdata ← パーティションが違うので指定
}
Exclude {
File = /var/spool/bacula
File = /tmp
File = /proc
File = .journal
File = .fsck
File = .lock
}
}
# This is the backup of the catalog
FileSet {
Name = "Catalog"
Include {
Options {
signature = MD5
}
File = "/var/spool/bacula/bacula.sql" ← こんなファイルは無いが問題無いみたい
}
}
# When to do the backups, full backup on first sunday of the month,
# differential (i.e. incremental since full) every other sunday,
# and incremental backups other days
Schedule {
Name = "WeeklyCycle"
Run = Full 1st sun at 2:05
Run = Differential 2nd-5th sun at 2:05
Run = Incremental mon-sat at 2:05
}
# This schedule does the catalog. It starts after the WeeklyCycle
Schedule { ← この指定はカタログの分、
Name = "WeeklyCycleAfterBackup"
Run = Full sun-sat at 2:10
# 2:10にバックアップするが、このスケジュールを使うCatalogJobの定義にPriority = 11があるので、
# 各ホストのバックアップが終わってから始まる
}
# Client (File Services) to backup
Client {
Name = samba-fd
Address = 192.168.xxx.xxx ← このサーバー自体の設定なので自分のIPを指定
FDPort = 9102
Catalog = MyCatalog
Password = "xxxxxx" # password for FileDaemon
File Retention = 62 days # カタログDBからバックアップしたファイル一覧が削除されるまでの期間
Job Retention = 3 months # カタログDBからジョブの記録が消えるまでの期間
AutoPrune = yes # Prune expired Jobs/Files
}
Client {
Name = web-fd
Address = 192.168.xxx.xxx ← バックされるもう一つのホストのIP
FDPort = 9102
Catalog = MyCatalog
Password = "xxxxxx" # password for FileDaemon
File Retention = 62 days # カタログDBからバックアップしたファイル一覧が削除されるまでの期間
Job Retention = 3 months # カタログDBからジョブの記録が消えるまでの期間
AutoPrune = yes # Prune expired Jobs/Files
}
# Definition of file storage device
Storage {
Name = File
# Do not use "localhost" here
Address = 192.168.xxx.xxx ← ストレージのホストつまり自分のIP、必ずIPで指定
SDPort = 9103
Password = "xxxxxx"
Device = FileStorage
Media Type = File
}
# Definition of DVD storage device
#Storage {
# Name = "DVD"
# Do not use "localhost" here
# Address = storage.example.com # N.B. Use a fully qualified name here
# SDPort = 9103
# Password = "@@SD_PASSWORD@@"
# Device = "DVD Writer"
# MediaType = "DVD"
#}
# Generic catalog service
Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "xxxxx"
}
# Reasonable message delivery -- send most everything to email address
# and to the console
Messages {
Name = Standard
# NOTE! If you send to two email or more email addresses, you will need
# to replace the %r in the from field (-f part) with a single valid
# email address in both the mailcommand and the operatorcommand.
# What this does is, it sets the email address that emails would display
# in the FROM field, which is by default the same email as they're being
# sent to. However, if you send email to more than one address, then
# you'll have to set the FROM address manually, to a single address.
# for example, a 'no-reply@mydomain.com', is better since that tends to
# tell (most) people that its coming from an automated source.
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = xxxxx@asahi.email.ne.jp = all, !skipped ← メールを送るメアドの指定
operator = xxxxx@asahi.email.ne.jp = mount ← メールを送るメアドの指定
console = all, !skipped, !saved
# WARNING! the following will create a file that you must cycle from
# time to time as it will grow indefinitely. However, it will
# also keep all your messages if they scroll off the console.
append = "/var/spool/bacula/log" = all, !skipped
catalog = all
}
#
# Message delivery for daemon messages (no job).
Messages {
Name = Daemon
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = xxxx@asahi.email.ne.jp = all, !skipped
console = all, !skipped, !saved
append = "/var/log/bacula.log" = all, !skipped
}
# Default pool definition
Pool {
Name = Default
Pool Type = Backup
Maximum Volume Jobs = 1 # これを指定しないと、同一ファイルに追記し差分や増分のファイルも一つになる
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 3 months # 3ヶ月
}
# File Pool definition
Pool {
Name = File
Pool Type = Backup
Maximum Volume Jobs = 1 # これを指定しないと、同一ファイルに追記し差分や増分のファイルも一つになる
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 3 months # 3ヶ月
Maximum Volume Bytes = 50G # Limit Volume size to something reasonable
Maximum Volumes = 200 # Limit number of Volumes in Pool
Label Format = "Vol-"
}
# Scratch pool definition
# この定義を使っているものは無いが、defaultで存在していたので、残してある。多分無くてもOK
Pool {
Name = Scratch
Pool Type = Backup
}
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = bacula-mon
Password = "xxxxxx"
CommandACL = status, .status
}
Write Bootstrapにある%c.bsrはclientの名前に展開される。この場合はsamba-fd.bsrとweb-fd.bsr。%n.bsrはこのJebDefsを使っているjobの名前に変換される。この場合はCatalog-samba.bsr。
各パスワードはデーターベースbacluaのパスワードしか登録していないので、全部に同じパスワードを指定する。
私は後で出てくるbacula-sd.confのDevice{ でArchive Device で/Backup(バックアップしたデーターを保存する場所)を指定しているが、物理的に独立したHDDにする事、またもちろんバックアップ対象には入れない。
Schedule { Name = "WeeklyCycle"は、これで毎月最初の日曜日にフルバックアップし、それ以外の日曜日に差分バックアップし、それ以外の日では増分バックアップをすると言う設定。
Schedule { の Name = "WeeklyCycleAfterBackup"はバックアップが行われたら、その後にカタログを作るためにこのスケジュールがある。JobDefs{ のCatalogJobの所に Priority = 11 があるので、バックアップが終わってからスタートする。
リストア時に保存されるDirectoryを作っておく。(/Backup/Restores/sambaなど)
11:リストアの時間が劇的に早くなった を参照してください。このままでは遅いです。
まずはサーバー側、私はサーバー自身もバックアップするので
# yum install bacula-storage-mysql bacula-director-mysql bacula-console mysql-server bacula-client mysql
とbaclua関連とmysqlをインストールします。baculaは前項の参考URLで示したWEBにあるようにカタログ(内容は参考URLを見てね)と呼ばれるデータをmysqlに保存をしますので、まずはmysqlの設定から(/etc/my.cnf)
[mysqld]
datadir=/XXXX/mysql ← オリジナルの場所から変更しています
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server = utf8 ← 追記
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
そしてmysqlをスタート
# service mysqld start
最初のスタートでは色々と表示が出るが、ようはrootのパスワードを設定しろよと言う事など。忘れないように再起動後も起動するように
# chkconfig mysqld on
そして初期設定をする
# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): Enterのみを入力
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] Enterのみを入力
New password: パスワードを入力
Re-enter new password: パスワードを再度入力
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Enterのみを入力
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Enterのみを入力
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Enterのみを入力
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Enterのみを入力
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
mysqlへログインしデーターベースなどを作成
# mysql -u root -pXXXXXXX ←XXXXXXXは設定したパスワード -pの後にスペースは入れてはいけない
mysql> GRANT ALL PRIVILEGES ON bacula.* TO bacula@localhost IDENTIFIED BY “XXXXXXX”; ← XXXXXXXは設定したいパスワード、後でbaculaのconfファイルに記入する。
mysql> FLUSH PRIVILEGES;
mysql> CREATE DATABASE bacula;
mysql> quit
これでdatabaseが出来ましたので、用意されているスクリプトでtableを作ります。
2019-4-3追記現在私が使用しているmysqlはVer 14.14 Distrib 5.6.43です、これだとこのままではエラーになり(予約語の関係だそうです)修正が必要です。
/usr/libexec/bacula/make_mysql_tables の325行目位にCREATE TABLE Counters ( がありますのでその中身を変更します。
CREATE TABLE Counters (
\`Counter\` TINYBLOB NOT NULL,
\`MinValue\` INTEGER DEFAULT 0,
\`MaxValue\` INTEGER DEFAULT 0,
\`CurrentValue\` INTEGER DEFAULT 0,
\`WrapCounter\` TINYBLOB NOT NULL,
PRIMARY KEY (Counter(128))
);
バックスラッシュの後は ' ではなく ` です、間違えない様に、日本語のキーボードでは @ の上です。
それから下のコマンドを入力してテーブルを作ります。
# /usr/libexec/bacula/make_mysql_tables -pXXXXXX ←XXXXXXは今設定したパスワード
Creation of Bacula MySQL tables succeeded.
次はいよいよbaculaの設定
先ず、インストールする前にbaculaの概念を勉強しますが http://www.nanajo.com/blog/hogex/?p=208 を参考にしました。
それでも不明な点がありましたので下記に示します。
*バックアップされたデータはどこに保存されるか?
bacula-sd.confの device{ の中に Archive Device = で指定された所に保存される
*リストアされたファイルは何処?
bacula-dir.confの Job{ の中の where =で指定された場所.
ここで注意しなくてはならないのは、この場所はディレクターが走っている場所で無く、
(設定はディレクターにあるが、)バックアップされるホストのdirectoryであると言う事。
私はてっきりディレクターが走っている ホストだと思っていたので、いくら待っても復元されなかった(と思った)。
又、バックアップされるホストと言う事はサイズに注意する事、つまり今使っているサイズと
同じサイズの空き領域がいる(全体をリストアする場合)。又、directoryがそのホストに存在しなくても、
baculaはエラーを出さず、強引に作るので、まず領域不足のエラーになる。
訂正:「8:他のホストにリストア」を参照してください。ディスク容量の余裕のあるホストにリストア出来ます。
*物理的に別のDisk/Partition になっているDirectoryがある時、バックアップの指定を/(ルート)にすると、バックアップされるのか?
バックアップされないので、bacula-dir.confのFileSet{ の中に File = で別に指定する事
*バックアップされるホストが復数台ある時は?
bacula-dir.confの中で、
Job{, として、ホスト毎にバックアップのJobを作る
Job{, として、ホスト毎にrestoreのJobを作る
FileSet{, として、ホスト毎にバックされるDirectoryを定義する
Client{, として、ホスト毎にホストの設定をしていく。
2014-04-14追記:ここで疑問がまだある。私の様に複数のディスク(パーティション)をアタッチし、そこにホスト特有のデーターを置くような場合ではFileSetが同じにならないので、RestoreのJobも複数作ったので、復元されるデーターもこのRestoreのJobで指定されたホストになったのではないかと思う。FileSetが共通になればもっと楽になりそうだが、FileSetに指定したディレクトリーが無い場合等はエラーになりそうなのでFileSetを分けている。今度テスト環境でこれを調べてみる(ググったがこの事例のヒットは無かった)
*bacula-dir.confの Director{ の設定の中にあるdefaultで設定のあるquery.sqlファイルはインストールされていない?
confの中にある QueryFile = "/usr/libexec/bacula/query.sql
はインストールされていない!でも問題無い様だ。
/usr/share/doc/bacula-common-5.0.0/exampleにあるsample-query.sqlをリネームし
/usr/libexec/bacula/query.sql として保存すると、様々なqueryが出来る様だが試していない
*restoreする時は空きスペースに注意
既にふれたがバックアップされているホストに、bacula-dir.confのwhere(又は指定したホスト)にストアされたデーターが書かれるので、このDirectoryの空き容量に充分注意する事
*これが一番大事かな:mysqlを使用する時はDatabase engine は InnoDB にし、11:リストアの時間が劇的に早くなった の設定も追記する事
最初にお断りしておきますが、現時点(2013/12/1)の時点で、グループでの設定がうまくいっていませんので、そんなに大人数ではないこともあり、個人の設定を複数して取り敢えず動かしております。解決しましたら、ここに記します。
/etc/samba/smb.confの設定
[Kinryo]
path = /xxxxx/kinryo
read only = no
create mask = 0777
directory mask = 0777
[accounts]
path = /xxxxx/accounts
writable = yes
valid users = xxxx1, xxxx2, xxx3
# force group = accounts
create mask = 0666
directory mask = 0777
上記を追記します。(pathはとuser名は隠してあります)force group をコメントアウトしているのは、これを入れると、アクセス出来なくなったからです。(理由は不明です。グループ関連が同もおかしい)また、writableとread onlyの使い分けの意味はありません、気まぐれです。(本当は違いがあるのかも?今度調べてみよう)これで
# service samba restart
でsambaを再起動すれば、vaild users に記入がある人がアクセス出来、その人は保存や、他人の作ったファイルの修正も出来ます。
うまく動かない設定
smb.conf の共有設定の中に
valid users = @グループ名
だと、フォルダーの中身を見れません(パスワードの入力で跳ねられます)google先生に聞いてみても多くの設定例でこの様な表記がありますが...もちろんユーザーはsambaのサーバーで
# samba-tool group listmembers グループ名
で表示されいますが、それでも出来ません。samba4でグループ指定が変更になっている様な事は、samba wikiにもありませんでした(見つけられていない??)
この不可解な現象に悩みっぱなしでしたが解決しないのでユーザー名の複数記入でごまかしている次第です。
移動プロファイルにはログインするユーザーの色々な設定を保存してあるので、ログインするコンピューターが変わっても同じような環境で作業が出来るので便利である。もちろんコンピュータ A にはソフト AA がインストールされ、そのソフトがインストールされていないコンピュータ B でログインすると ソフト AA は使用できない(当たり前!)。
私がよいと思ったのは、社員にデスクトップやマイドキュメントにはデーターは保存せず、ファイルサーバーの共有フォルダーに保存してとお願いしても、人間の習性かどうしてもデスクトップやマイドキュメントに保存をし、そのディスクが壊れるとデーターがなくなる。移動プロファイルを使うと、これらはファイルサーバーに保存され、それはバックアップもされているので、このような事態は起きない。もちろんログインに若干時間が多く要ったりはするが、メリットのほうが大きいと思う。
というわけで設定をするがサーバーの設定と、RSATでの設定が入る。
まずはサーバーの /etc/samba/smb.conf の設定。下記を最後にでも追記する。
[profiles]
path = /XXXXX/XXXXX/XXXXX ← 移動プロファイルを保存するDirectoryのパス
browsable = no
guest ok = yes
read only = no
profile acls = yes
create mask = 0600
directory mask = 0700
SAMBAの再起動
# service samba restart
ここでWindow機側で、アドミン権限のあるユーザーでドメインにログオンし、スタートメニュー→管理ツール→Active Directory ユーザとコンピュータ と進み、設定したいユーザーを右クリックし、プロパティを選択し、開いたウィンドウのプロファイルタブを選び、プロファイルパス(P):に
\\サンバサーバーの名前¥プロファイルに設定した名前\%UserName%(私の場合は\\xxx.kinryoai.net\profiles\%UserName%)と入力しOKをクリック、その後、そのユーザーでログインとログオフをするとサーバーにプロファイルが出来る
samba-toolでも出来るのですが、Window機からGUIで管理出来るRSATを使うほうが楽なので、Window 7 Proffesinal にインストールして管理するようにする。このツールはドメインに参加していないと使えませんので、3:windowホストの設定を参考にドメインにログオンしてください。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1031rsat/rsat.html にVistaと7 のインストールや設定方法がありますのでこれを参考にインストールしてください。Windows 8は持っていないので確認はしていませんが、マイクロソフトのWEBにある筈です。
私は Windows 7 Professional を使用しています。
最初にDNSの設定を変更します。(2013-12-01追記)
コントロールパネルからネットワークと共有センター(カテゴリー表示なら、ネットワークとインターネット→ネットワークと共有センター)とクリックすると
画面Aが開きますので、ローカルエリア接続をクリック(無線であればワイヤレスネットワーク接続...)をクリック。
開いた画面Bでプロパティをクリック
開いた画面CでTCP/IPv4を選択しプロパティをクリック。
画面Dが開くので、次のDNSサーバー...を選び、優先DNSにsambaのIPアドレス、代替DNSサーバーにルーターのLAN側のIPを設定後OKをクリックし、開いているファイルを全部閉じる。
次にコントロールパネルから、システムをクリックすると、
画面1の左側が開きますので、左ペインのシステムの詳細設定をクリックすると、右の画面が開き、コンピュータ名タブを選んでから、ネットワークIDをクリック
画面2が開きますので、このコンピューターは.....を選んで次へ。
画面3が開き、ドメインを使用しているを選び次へ
画面4が開くのでそのまま次へ。
画面5が開き、ユーザー名はadministrator(他のユーザーはまだ設定していないので)、パスワードは設定してある分、ドメインはドット以降は省いて(KINRYOKAI.NETではなくKINRYOKAIのみ)入力後、次へ
初回はこのWindowホストがドメインに登録されていないので、画面6が開き、コンピューター名はデフォルトで表示されている設定してあるこのホストの名前、コンピューターのドメインは必ず変更し(デフォルトでは確かコンピュータ名になっていた)そして次へ。
このユーザは登録しているadministratorを使っているので、画面7では追加しないを選んで次へ、完了後再起動をし、Ctrl+Alt+Delを押すとログイン画面になるのでパスワードを入力し、ドメインへ参加できる。
このページを作ったのは、何回かドメインとワークプレイスの設定を行き来した後なので、何かの画面が抜けているかも知れませんが、要点は上記を抑えれば出来るはず。
先ずは必要になるlibldbをインストールする
# yum install libldb
これで、libldbとlibtdbがアップデートされ、libbsdがインストールされた。この時CentOS-Base.repoをenabled=0にしておかないと、ここでlibldbがアップデートされない。(ここまで2014-1-20追記)
wingレポジトリーには4.1.1がアップされているので、これをインストールする。蛇足だが CentOS-Base.repo には4.0.0-53(最後の数字は不確か)がアップされているようなので、repoの設定変更をしておかないとこれがインストールされてしまう。
また4.1は名前が samba41 になっている。
2014-1-25追記:今日別のマシンにインストールしようとしたら
Error: Package: libtalloc-2.0.8-2.el6_1.wing.i686 (wing)
Requires: librt.so.1
Error: Package: libtalloc-2.0.8-2.el6_1.wing.i686 (wing)
Requires: libc.so.6(GLIBC_2.1.3)
Error: Package: libbsd-0.6.0-1.el6.i686 (epel)
Requires: libc.so.6(GLIBC_2.8)
Error: Package: libtalloc-2.0.8-2.el6_1.wing.i686 (wing)
Requires: libattr.so.1
Error: Package: libtevent-0.9.18-1.el6_1.wing.i686 (wing)
Requires: libc.so.6(GLIBC_2.4)
Error: Package: libtevent-0.9.18-1.el6_1.wing.i686 (wing)
Requires: libdl.so.2
Error: Package: libtalloc-2.0.8-2.el6_1.wing.i686 (wing)
Requires: libdl.so.2
Error: Package: libtevent-0.9.18-1.el6_1.wing.i686 (wing)
Requires: libattr.so.1
Error: Package: libtevent-0.9.18-1.el6_1.wing.i686 (wing)
Requires: librt.so.1
Error: Package: libtalloc-2.0.8-2.el6_1.wing.i686 (wing)
Requires: libcrypt.so.1
Error: Package: libtevent-0.9.18-1.el6_1.wing.i686 (wing)
Requires: libcrypt.so.1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
と大量にエラーが出た。ここには長くなるので載せていないが、このエラーの前のdependancyチェックのところで、samba-dcのために python-teventをインストールしようとしている。私のホストには入っていないのでインストールする必要があった。
なので、/etc/yum.repos.d/CentOS-Base.repoのenabled=0の先頭に#をつけコメントアウトし、
# yum install python-tevent
でインストールをして置く。(その後enabled=0のコメントを外しておく。またsambaは4.1.4-2になっていた)(ここまで2014-1-25追記)
# yum install samba41 samba41-client ldb-tools krb5-workstation
インストールされたプログラムは
# rpm -qa | grep samba4
samba41-common-4.1.1-2.el6_8.wing.x86_64
samba41-python-4.1.1-2.el6_8.wing.x86_64
samba41-4.1.1-2.el6_8.wing.x86_64
samba41-libs-4.1.1-2.el6_8.wing.x86_64
samba41-dc-libs-4.1.1-2.el6_8.wing.x86_64
samba41-dc-4.1.1-2.el6_8.wing.x86_64
samba41-client-4.1.1-2.el6_8.wing.x86_64
インストールが終わったので、設定しますがその前に、
NTPサーバーで時刻管理をしておく。以前Xenで仮想化をした時にはSubホストは自動的にDom0の時間が適用されたが、KVMだとresumeがあるとタイマーが止まるみたいなので、必ず時刻同期を行う事(ここを参照)
DNSが動いていないようにする(私は別のホストでdnsmasqが走っており、それを止めました。)。LDAPが動いているば止める。
それと無効にしたbase repoを有効に戻しておく。
ネットワークカードの設定の確認。前に書いたように私の環境はNetworkManagerを走らせ、DNSの設定はネットワークカードでするので、/etc/sysconfig/network-scripts/ifcfg-eth0の確認
DNS1=192.168.xx.xxx ← このホストのIP
DNS2=192.168.xx.1 ← default gatewayのIP
DOMAIN=kinryokai.net
もし設定を変更したら
# /etc/rc.d/init.d/network restart
いよいよコマンドでドメインを構築。
# samba-tool domain provision
Realm: KINRYOKAI.NET[Enter]
Domain [KINRYOKAI]: [Enter]
Server Role (dc, member, standalone) [dc]: [Enter]
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: [Enter]
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.xx.xxx]: default gateway のIP[Enter]
Administrator password: password入力[Enter]
Retype password: password入力[Enter]
Looking up IPv4 addresses
More than one IPv4 address found. Using 192.168.xx.xxx
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=kinryokai,DC=net
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=kinryokai,DC=net
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated \
at /var/lib/samba4/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: SAMBA
NetBIOS Domain: KINRYOKAI
DNS Domain: kinryokai.net
DOMAIN SID: S-1-5-21-8640439422-3946603968-2847524696
sambaを起動する
# service samba start
前に設定した分はserviceで起動できなかったが、今は出来るようにようになった見たい。(以前はソースからだったかな?)
# chkconfig samba on
で再起動後もスタートさせる
logについて
logは /var/log/samba/log.sambaにある。ここに samba: setproctitle not initialized, please either call setproctitle_init() or link against libbsd-ctor. とあるが解決方法が分からない。取り敢えずドメインログオンも出来ているので、ゆっくり探そう。
/var/log/messages にもスタートとストップ関連だけは記録があった。
smbdが走っている
smbdはバージョン3以前のsambaのコマンド何で走っているかは不明。ps aux で確認すると samba が10個くらいと smbd が2つ走っていた。取り敢えず問題なさそうなので、後日チェックする
Kerberosの設定
/etc/krb5.confの変更
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = KINRYOKAI.NET ← 変更
dns_lookup_realm = false
dns_lookup_kdc = true ← trueに変更
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
KINRYOKAI.NET = { ← このホストの名前に変更
kdc = xxx.kinryokai.net ← このホストの名前に変更
admin_server = xxx.kinryokai.net ← このホストの名前に変更
}
[domain_realm]
.kinryokai.net = KINRYOKAI.NET ← このホストの名前に変更
kinryokai.net = KINRYOKAI.NET ← このホストの名前に変更
Kerberosの設定が正しいか確認
# kinit administrator@KINRYOKAI.NET 注:必ず大文字にする事
Password for administrator@KINRYOKAI.NET:
Warning: Your password will expire in 41 days on Mon Jan 6 12:05:53 2014
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@KINRYOKAI.NET
Valid starting Expires Service principal
11/25/13 17:12:23 11/26/13 03:12:23 krbtgt/KINRYOKAI.NET@KINRYOKAI.NET
renew until 12/02/13 17:12:15
DNSの登録状況がどうなっているか確認
# samba-tool dns query 192.168.xx.xxxx kinryokai.net @ A -U administrator
IPはsambaが走っているホストのIP
Password for [KINRYOKAI\administrator]:
Name=, Records=1, Children=0
A: 192.168.xx.xxx (flags=600000f0, serial=1, ttl=900)
Name=_msdcs, Records=0, Children=0
Name=_sites, Records=0, Children=1
Name=_tcp, Records=0, Children=4
Name=_udp, Records=0, Children=2
Name=DomainDnsZones, Records=0, Children=2
Name=ForestDnsZones, Records=0, Children=2
Name=smb5, Records=1, Children=0
A: 192.168.xx.xxx (flags=f0, serial=1, ttl=900)
Name=WIN7-DESK, Records=1, Children=0
A: 192.168.xx.xxx(flags=f0, serial=110, ttl=1200)
下の2行はこのドメインにログインしているwindowホスト
正常のようなので次はwindowホストのドメインへの参加
ファイルサーバーの動作確認をするには
# smbclient -L localhost -U%
2014-04-12追記:今日別のホストでやったら Connection to localhost failed (Error NT_STATUS_IO_TIMEOUT) とエラーが出た。localhostをsambaの動いているIPに変えたらOKだった。
Domain=[KINRYOKAI] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
ITC Disk IPC$ IPC IPC Service (Samba 4.1.1)
Domain=[KINRYOKAI] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
と、表示された。
2014-01-26追記:今日別のホストにインストールし、sambaのテストをしている時、このリプライが
session setup failed: NT_STATUS_ACCESS_DENIED
となった。いろいろ調べたがどうしても直らない、firewallを見直している時、ハット気が付きselinuxの設定を調べると
# getenforce
Enforcing
となり、selinuxが有効になっていたので、
# setenforce 0
で無効にし、再起動後も無効にするため、/etc/sysconfig/selinuxのSELINUX=enforcingの右辺をdisabledにしておく。再度
# smbclient -L localhost -U%
で無事正常に表示された。
この設定を確認している時、wing repo に新しい4.1.2がアップされた様で、アップデートの確認が出ていたので、4.1.2にバージョンアップした。