NECのサーバであるExpress5800シリーズのエントリモデル110Geをファイルサーバ&プリントサーバとしていました。拡張性は抜群で冷却も十分なのですが、特に夜間の付けっぱなしは抵抗を覚えるように。
そこでNVIDIA IONをベースにしたサーバを作ることにしました。
・ケース Antec NSK1380
・マザボ ASRock A330ION
・RAM A-DATA SU3U1333B1G9-DRH
・HDD Westren Digital WD20EARS-00MVWB0
・光学ドライブ 既存の外付け型(OSインストール時のみ)
だいたい4万円の構成です。若干熱に問題があるような気がするのですが、かなり静かに動いています。
さて続いて今回のメインである設定の項。いままでの統括なのでほとんどが重複。
0,事前準備(インストール時の設定)
・LAN内部でのIPアドレスは固定にしておく(強制ではなく推奨)。
・ルータを使っている場合 はDNSとゲートウェイの設定(DHCP利用なら不要)。
・ホスト名(localhost.localdomain)は標準のままで後に変更すればよい。
・sambaサーバーが利用できるようにパッケージを選ぶ。
・ファイヤウオールは最低限"samba"と631(tcp,udp)を開放する(sambaとプリントサーバーなので)。
一通りのインストール終了後にターミナルを立ち上げ、まずはrootユーザになる。
$ su -
パスワードを入力してrootユーザに。この状態で以下。
・基本環境設定
1,rootユーザのログインを禁止
(*) 参考 RedHat Documentation「24.1.4.2. root アクセスを禁止する」
http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/ja-JP/Deployment_Guide/s2-wstation-privileges-noroot.html
[1ーA]いろいろ問題になるので通常のログインをさせないようにする。まず念のためバックアップファイルを作成(コピーするだけ)。
# cp /etc/securetty /etc/securetty.original
次にsecurettyを空のファイルにしてログイン不可能とする。
# echo > /etc/securetty
(*)本来、上記の「>」は半角ですが表記上問題を生じるので全角で表現しています。
[1ーB]これだとsshプロトコルから潜り込まれる可能性があるのでこれも排除。設定ファイル(/etc/ssh/sshd_configに存在)のなかで"# PermitRootLogin yes"という項目があるので"PermitRootLogin no"に変更する(Rootでのログインを許可しないことを明示する)。
2,rootログイン(su)の制限
(*)参考 「ルートになれるユーザーを制限する」
http://www.jitaku-server.net/root.html
[2−A]suになってよいユーザをWHEELグループへ登録する。
"/etc/group"を開いて
wheel:x:10:root
となっているところにコンマを挟んでユーザ名を追加する(ここの例はusernameというユーザとする)。
wheel:x:10:root,username
保存して終了。
[2−B]suになるための条件設定を行う。
まず"/etc/pam.d/su"を開いて次のような一行
# auth required pam_wheel.so use_uid
の先頭#を取っぱらう(コメントアウト解除)。
次に"etc/login.defs"を開いて
"SU_WHEEL_ONLY yes"
の一行を追加。いずれも上書きして保存する。
3,最速サーバを探すプラグイン
# yum -y install yum-fastestmirror
これでアップデートはいつでも最速のミラーを探すようになる。最近では標準で入っているものもあるらしい。
4,アップデート
最新の状態に更新する。
# yum -y update
(おまけ)gnome関係のインストールをしくじったら
# yum groupinstall "X Window System" "GNOME Desktop Environment"
で一通りまとめてインストールしてくれる。
5,HDDのパーティション作成
# fdisk /dev/sdb
でfdiskを起動。ここではデバイス名をsdbとしたが、これは環境によって変わる。
まずはコマンドpで既存のパーティション一覧を確認。次にコマンドnでパーティションを作成する。通常はプライマリパーティションなので「コマンドアクション」はp(primaryの略)とする。続いて領域番号を入力するので「既存パーティション+1」の数字を入力する。新規の場合は領域番号=1
ここでは既に1台のHDDが存在する環境に対し、1台のHDDを増設(つまり2台目のHDD)したとする。このときデバイス名はsdbとなり、ここにひとつだけパーティション(領域番号1)を作成することを想定した。
もし間違えても「既にあるよ」の旨、メッセージが出るのでミスっても心配は不要。また既に3つのパーティションが存在しているときにアクションpとすると自動的に4番にしてくれる。なおもし既にパーティションが4つ以上あるときはコマンドアクションe(extended)を選択。
パーティションの定義が完了したらコマンドpで領域テーブルが正しいか確認したのち、コマンドwでディスクに書き込む。再起動が必要になるのでここで再起動。再起動したらまたsu -でrootユーザになる。先ほどの想定条件(新規にHDDを追加し、パーティションは一つ)
# mkfs.ext3 /dev/sdb1
フォーマットが始まるので放置する。領域サイズが大きいと時間がかかる。
・ファイルサーバの設定
[0−A]マウントポイントの設定
前提として共有するべきディレクトリを用意しておく。今回の例では
# mkdir /data1
共有データ保存用のドライブをマウントするように"/etc/fstab"を編集する。例えば
"/dev/sdb1 /data1 ext3 defaults 1 0"
の一行を追加するように。"sdb3"の"b"と"3"とマウントするパス(ここでは"/data1")は環境で変わるので各自応用すべし。この箇所はOSインストールのときに設定しても良い。
[0−B]Linux上にユーザを追加
useradd -c username username
で一番目のusernameがコメント(フルネーム)になる。
なお二番目のusernameは Linuxに登録されるユーザ名になる。
また-gでグループの設定もできる。
usermod では設定の変更になる。
usermod target_user options
オプションなどの書き方はuseraddと同様である。
次にユーザのパスワードを設定する。
passwd username
でパスワードを二回入力すれば設定は完了。
1,sambaにユーザを登録
pdbedit -a username
でも同様に二回くらいパスワードを入力すれば設定が完了。
2,smbサービスの起動設定
Run level 3,4,5でsmbサービスが起動するように設定。
# chkconfig --level 345 smb on
設定が反映されているかを確認する。
# chkconfig --list smb
これで
smb 0:off 1:off 2:off 3:on 4:on 5:on 6:off
と表示されればOKで、次の起動時は自動的にサービスが立ち上がる。
3,samba設定ファイルの転送
# cp /(保存してあるディレクトリ) /etc/samba/smb.conf
で転送完了。設定ファイルの具体的内容は後述。
さらに念のため
# chmod 700 /etc/samba/smb.conf
として不用意に変更できないようにする。
4,hostnameの変更
sambaはlocalhost.localdomainだとクライアントから読んでくれないので
# hostname (希望するホストネーム)
再起動すると元に戻ってしまうのでネットワークの項目からもホストネームを設定する。
5,サーバーのリスタート
設定を変更したら再起動しないと反映されないので
# /etc/init.d/smb restart
ひとまずここまでやればファイルサーバーとして稼働可能。
・プリントサーバの設定
CUPSの設定を実行。
まずは設定ファイルである
/etc/cups/cupsd.conf
を開くと
Listen localhost:631
となっているが、これではlocalhost(自身)以外からアクセスできないので
Listen 631
とする(localhostを消す)。
さらに同じ設定ファイルの
・location
・location /admin
・location /admin/conf
の3つのセクションに
Allow 192.168.1.0/255.255.255.0
を追加する。これは
Allow 192.168.1.0/24
でもかまわないらしい。たぶんAllow 192.168.1.*でも同じ。これで192.168.1.*というIPアドレスを持つコンピュータ(つまりLAN内部)からのみアクセスできるようになる。
最後に
/etc/cups/mime.convs
において
application/octet-stream application/vnd.cups-raw 0 -
の先頭に付いている#を取っぱらう (RAWでの出力を許可する)。
これでsambaとCUPSは 大丈夫。サーバー上にプリンタをインストールし忘れないように。プリンタのドライバはRAWで大丈夫(クライアントから送ら れてきたデータをそのままプリンタに渡すから)。クライアント側にドライバのインストールを行うこと。
・付録
Sambaの詳細な設定。最小限に絞ってファイルサーバとプリントサーバになれるような構成です。
#======================= Global Settings =====================================
[global]
workgroup = mshome
server string = CentOS Samba Server
; netbios name = file-server
encrypt passwords = yes
unix password sync = yes
null passwords = yes
passwd program = /usr/bin/passwd %u
log file = /var/log/samba/log.%m
security = user
map to guest = Bad User
guest account = user1
username map = /data/smbusers
passdb backend = smbpasswd:/data/smbpasswd
wide links = no
follow symlinks = no
socket options = TCP_NODELAY SO_SNDBUF=8760 SO_RCVBUF=8760
; load printers = yes
cups options = raw
#============================ Share Definitions ==============================
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
; guest ok = no
; writeable = No
printable = yes
[shared]
path = /data/shared
writeable = yes
; create mask = 0777
; directory mask = 0777
; guest ok = yes
; guest account = user1
・付録2
上記の解説です。
#======================= Global Settings =====================================
[global]
workgroup = mshome
ワークグループの名前
server string = CentOS Samba Server
このコンピュータの説明
; netbios name = file-server
必要に応じてNetbios名。現在は基本的に不要。
encrypt passwords = yes
暗号化されたパスワードの有無。基本はyesとすること。
unix password sync = yes
UnixユーザとSambaユーザのパスワード同期設定。うまく構成しないと期待通りに動かない。
null passwords = yes
空のパスワードを許可するかどうか。基本的にはやめたほうがいい。
passwd program = /usr/bin/passwd %u
パスワード変更コマンドと引数の指定。
log file = /var/log/samba/log.%m
ログファイルのパス指定。
security = user
ログインモードの設定。
map to guest = Bad User
上記ログインモードでGuest扱いする条件の指定で、この場合はUsernameが合っていないときにGuest扱いしてくれる。他にパスワードがあっていないときにGuest扱いする設定もある。
guest account = user1
ゲストユーザの場合のマッピング。
username map = /data/smbusers
ユーザマッピングのテーブルで、一つのUnixユーザに対して複数のユーザを割り当てることが出来る。応用すれば2バイト文字のユーザを(1バイト文字である)Unixユーザに対応させることが可能である。
passdb backend = smbpasswd:/data/smbpasswd
パスワードのデータベースファイルを指定できる。
wide links = no
リンクがSambaによる共有ディレクトリ外を指定しているものとする。 このときこのリンクを許すか否かの設定。最近Defaultでnoにされたらしい。
follow symlinks = no
これもリンクに関するパラメータ。noとすることで無効にできる。
socket options = TCP_NODELAY SO_SNDBUF=8760 SO_RCVBUF=8760
伝送に関するオプション。設定しなくてもたいていは正常に動く。他の有名な値はSO_SNDBUF=8192 SO_RCVBUF=8192だったと思う。
; load printers = yes
ここからプリンタについて。検索をさせるかどうかを決められる。ちなみに先頭の;はコメントアウトであり、この行はsambaからは無視される(何も書かれていないのと同値)。
cups options = raw
プリンタへデータをRAWモードで送る設定。ここかCUPSの設定かどちらか一方だけでいいらしい。
#============================ Share Definitions==============================
[printers]
"printers"という共有名のフォルダの設定セクション。
comment = All Printers
クライアント側で「プリンタ」と表示されるフォルダのコメントである。深く考えなくていい。
path = /var/spool/samba
ディレクトリの指定。変更の必要は無し。
browseable = no
可視設定で、この場合は不可視。noとすることで隠し共有の設定を有効にすることと同値。
; guest ok = no
Guestユーザを許可するかどうか。先ほどのGlobalでGuestを許可するようにしても、さらに各セクションで許可しないとアクセスエラーになって慌てふためく。 今回はコメントアウト。
; writeable = No
書き込みの可否について。今回はコメントアウト。
printable = yes
印刷可否の設定で、ここでは許可。
[shared]
"shared"という共有名のフォルダの設定セクション。
path = /data/shared
Unix上でどのディレクトリを共有するかを設定。
writeable = yes
書き込み可否について。
; create mask = 0777
ファイル作成の際に通常はアクセス許可0755とするところ、任意の値に変更したいときに使うといい。例えば0555だと作ったら二度と削除できないようになってしまう(もちろんUnix上でrootとしてログインし、アクセス許可を変更することは可能である)。0777だと誰でも何でも出来る最悪の共有となる(使えないということはないし、このような設定での共有も十分に想定されるが)。
; directory mask = 0777
フォルダ作成についての設定であり、上記のCreate maskとそろえておくと分かりやすい。
; guest ok = yes
ゲストを許可するかどうか。繰り返すがGlobalセクションと併せて設定することを忘れぬように。
; guest account = user1
ゲストを許可するとき、そのユーザを指定する。
ということでこれだけやればファイルサーバ&プリントサーバは完成。
0 件のコメント:
コメントを投稿