一からはじめるLinux&Java奮闘記
Amebaでブログを始めよう!

(J)簡単なプログラムの作成

<ファイル名の付け方>


VBですと開発環境でプロジェクト名を入れて保存すると、~~~.vbp となりますが、JAVAの場合は、そのプログラムで宣言するクラス名+.java であり、大文字小文字もきっちり区別されます。


class Test1 {

public static void main(String arg[]){

System.out.println("This is the output from Test1 ");

}

}


メモ帳などで、これを適当なディレクトリを作成して Test1.java というファイル名で保存します。

メモ帳の場合、デフォルトでファイルの種類がテキスト(*.txt)となるので、そのまま保存すると Test1.java.txt になってしまいます。全ての文書に変更して保存しましょう。


<コンパイルの仕方>


コンパイルは下記のように入力します。


javac Test1.java


C:\javatest>c:\jdk\bin\javac Test1.java

C:\javatest>


このように、何も表示されずプロンプトが出ればコンパイル成功です。

たとえば、System.out.println を system.out.println のように1文字目を小文字にすると下記のようにコンパイルエラーとなります。


C:\javatest>c:\jdk\bin\javac Test1.java
Test1.java:5: パッケージ system は存在しません。
system.out.println("This is the output from Test1 ");
^
エラー 1 個

C:\javatest>


<プログラムの実行>


コンパイルが成功すると、そのディレクトリに Test1.class というファイルが出来ていると思います。

これがjavaプログラムです。


2006/02/02 23:27 434 Test1.class
2006/02/02 23:27 150 Test1.java


実行は、 .class は不要です。


java Test1


C:\javatest>java Test1
This is the output from Test1

C:\javatest>



(L)アクセス制御

これまで、不要なサービスを停止してできるだけセキュリティを高めていますが、アクセス制御を設定して、更にセキュリティを高めましょう。


※あくまでサーバー管理の習得ですので、完璧な防御ではありません。このブログの、全ての設定において、起こりうるいかなる被害や損害には責任は持ちませんので了承いただける方のみ試してみてください。


クラッカー(悪意のある侵入者)の攻撃は、サーバーのポートをしらみつぶしに調べて、セキュリティホールがあればそこから侵入を試みます。


現在開いているポートは netstat -at で確認できます。


netstat -at

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN

上記は、サーバーが ssh のみを受け付けていることがわかります。(これは不要なサービスを停止しているからです。)


<xinetdによる制御>


例えば、 telnet を設定してみましょう。


xinetd ベースのアクセス制御を設定するには、/etc/xinetd.d/サービス名のファイルを開きます。

telnet の場合は、vi /etc/xinetd.d/telnet を開きます。


# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}


disable = no

接続の許可


only_from = 192.168.1.0/24

192.168.1.0 から 192.168.1.255 からのアクセスを許可(192.168.1.0/24以外の外部や他のネットワークからの侵入禁止)


no_access = 192.168.1.1

192.168.1.1 からのアクセスを拒否


(only_from と no_access はセットではありません)


<tcpwqapperによる制御>


下記の2つのファイルを編集します。


/etc/hosts.deny で全てのアクセスを禁止し

/etc/hosts.allow で許可するホストだけを登録します。


の2つのファイルを編集します。


/etc/hosts.deny


all:all


/etc/hosts.allow


sshd: 192.168.1.


上の例では、sshへの接続をローカルアドレスから許可しています。


(L)サービスの確認及び起動方法、停止方法

動いているサービスの確認は、chkconfig --list | less で行います。


acpid 0:off 1:off 2:off 3:on 4:on 5:on 6:off

例えば、上記はランレベル3(キャラクタベース)の時と、ランレベル5(GUIベース)の時が on ということです。


chkconfig --level 5 acpid off とすれば立ち上げ時のサービスは停止

chkconfig --level 5 acpid on とすれば立ち上げ時のサービスは開始


ここでの on、off はあくまでもWindowsでいうサービスの「スタートアップの種類」が自動が手動かの設定であり、現在稼動しているサービスが停止する開始されるということではありません。


個人的には、WindowsになれているのでGUIベースの[デスクトップ]-[システム設定]-[サーバー設定]-[サービス]を起動して、自動、手動の変更や開始、停止を行うほうが楽です。


サーバー管理という面では、コマンドラインでの方法も習得します。

サービスの起動、停止は xined で制御されるものと、 inetd で制御されるもの?の2種類の制御があるようです。(※inetd で制御されるものという表現が間違っていればコメントいただければ幸いです)


<xinetdといわれるスーパーでモンで制御されるもの>

/etc/xinetd.d のディレクトリ配下に名前があるサービスであり、chkconfig --list | less で表示した際、「xinetd ベースのサービス」以下に表示されるものです。


例えば、 telnet を設定してみましょう。


telnet 192.168.1.X

Trying 192.168.1.X...
telnet: connect to address 192.168.1.X: Connection refused
telnet: Unable to connect to remote host: Connection refused

上記のように。インストール後は停止になっていますので拒否されます。


xinetd ベースのサービスを起動するには、/etc/xinetd.d/サービス名のファイルを開きます。

telnet の場合は、vi /etc/xinetd.d/telnet を開きます。


# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
}

上記の disable = yes を no にし保存します。そのままでは、telnetは使用できません。

その後、設定ファイルを再読み込みするために、 /etc/init.d/xinetd restart を実行します。


telnet 192.168.1.X

Trying 192.168.1.X...
Connected to 192.168.1.X (192.168.1.X).
Escape character is '^]'.
Fedora Core release 4 (Stentz)
Kernel 2.6.11-1.1369_FC4 on an i686
login:

今度はログインが表示されたはずです。


今後は、telnet よりも、セキュリティの優れた sshd を使用しますので、テスト後は逆の手順で停止しましょう。


<inetdといわれるスーパーでモンで制御されるもの?>

/etc/rc.d/inet.d/ のディレクトリ配下に名前があるサービス


例えば、 smb を設定してみましょう。

サーバーの起動

/etc/rc.d/init.d/smb start


サーバーの起動

/etc/rc.d/init.d/smb stop


サーバーの再起動(そのサービスの設定ファイルを書き換えた場合に使用)

/etc/rc.d/init.d/smb restart


smb は、2つのデーモンがセットですので、下記のように[OK]が2つ出るはずです。


smbd [OK]

nmbd [OK]


smb は構築する予定ですが、今はまだ、停止しておきましょう。



(L)不要なサービスの停止

まずは、不要なサービスを停止します。rootでログインしてください。


<サーバーがデスクトップの場合>

apmd

pcmcia

<bluetooth,ISDNを使用しない場合>

bluetooth

isdn

<プリンタサーバ>

cups

cups-config-daemon

<MulticastDNS>

mDNSResponder

<nfs関連>

netfs
nfslock
portmap
rpcgssd
rpcidmapd

<qmailを使用する、セキュリティホールの関係から停止>
sendmail


サービスの停止は、ランレベル3とランレベル5に行います。


ランレベル3:キャラクタベース立ち上げ時のレベル

ランレベル5:GUI(GNOME)ベース立ち上げ時のレベル(インストール後のデフォルト)


(1)GUIベース


[デスクトップ]-[システム設定]-[サーバー設定]-[サービス]を起動して、

上記のサービスのチェックを外す。


サービス起動後は、現在実行中のランレベル:5 ランレベルの編集5となっているので、ランレベル5に対しての変更です。


ランレベル5の編集が終われば保存して、メニューのランレベルの編集から3を選び同様の作業を行い保存してください。


※チェックを外すだけでは、サービスが動いてるので、それぞれチェックを外した後、停止するか、全てのチェックを外して再起動してください。


(2)コマンドライン

[アプリケーション]-[システムツール]-[GNOME端末]を起動します。

コマンドラインから chkconfig --lelev ランレベル サービス名 off と入力します。

※ランレベル3と5を同時に設定する方法があると思うのですが、わかりませんでした。


chkconfig --level 5 apmd off
chkconfig --level 5 bluetooth off
chkconfig --level 5 cups off
chkconfig --level 5 cups-config-daemon off
chkconfig --level 5 isdn off
chkconfig --level 5 mDNSResponder off
chkconfig --level 5 netfs off
chkconfig --level 5 nfslock off
chkconfig --level 5 pcmcia off
chkconfig --level 5 portmap off
chkconfig --level 5 rpcgssd off
chkconfig --level 5 rpcidmapd off
chkconfig --level 5 sendmail off

chkconfig --level 3 apmd off
chkconfig --level 3 bluetooth off
chkconfig --level 3 cups off
chkconfig --level 3 cups-config-daemon off
chkconfig --level 3 isdn off
chkconfig --level 3 mDNSResponder off
chkconfig --level 3 netfs off
chkconfig --level 3 nfslock off
chkconfig --level 3 pcmcia off
chkconfig --level 3 portmap off
chkconfig --level 3 rpcgssd off
chkconfig --level 3 rpcidmapd off
chkconfig --level 3 sendmail off


これでサービスが停止されました。



(L)FeodraCore4をインストール3

<つづき>

インストールが完了したら、「再起動」をクリック

・ようこその画面は、「次へ」をクリック

・ライセンスに同意して、「次へ」をクリック

・日付と時間を設定して、「次へ」をクリック

・ディスプレイでは、解像度を設定して、「次へ」をクリック

・通常使用するユーザー(root は何でもできてしまうので)を作成して、「次へ」をクリック

・サウンドカードがあれば、ほとんどのカードは自動的に検出、「次へ」をクリック

・追加CDの画面は、そのまま、「次へ」をクリック

・セットアップ終了画面が表示されますので、「次へ」をクリック


ここまで手順通りに作成されたら無事成功です。すでに画面にはログイン画面が現れているはずです。


通常は、ユーザー名とパスワードを入力してログインしますが、ログイン画面の下に表示されている項目を選択すると下記のようなことができます。


[言語]     デスクトップ上の言語を変更する

[セッション] GNOMEやKDEといったユーザーインターフェースを変更する

[再起動]   システムを再起動する

[停止]     システムを停止する    

(L)FeodraCore4をインストール2

<つづき>

・ブートローダーの画面はそのまま「次へ」をクリック

・ネットワークの設定画面は、後から設定できる内容なのではそのまま「次へ」をクリック

・ファイアオールの設定画面では「ファイアオールなし」を選択、SElinuxを有効にしますか?も「無効」を選択、警告が出ますが「続行」を選択


ファイアオールを設定すると外部からのアクセスを防ぐことができますが、サーバーの管理を習得するため、「ファイアオールなし」にします。SElinuxも細かいアクセス制御ができるようですが管理が複雑なるみたいなので無効にします。


注意!!この設定も自己責任で行ってください。自信のない方、サーバー管理を習得したいという方以外は、「ファイアオールを有効にする」、SELinuxは有効のままで行って下さい。今後の操作が変わるかもしれませんが、インストールだけは可能です。


・タイムゾーンはたぶんアジア/東京が選ばれているのでそのまま「次へ」をクリック

・ルートパスワードの設定は、パスワードを設定して「次へ」をクリック

・パッケージグループの選択は、一番下の「その他」の「すべて」にチェックを入れ、「次へ」をクリック

・インストール準備完了の画面では「次へ」をクリック


これでインストールの準備は完了です。必要なCD-ROMが表示(すべてを選んでいますので4枚必要)されますので指示に従ってください。


<つづく>

(L)FeodraCore4をインストール1

※あくまでサーバー管理の習得ですので、このブログの今後の全ての設定において、起こりうるいかなる被害や損害には責任は持ちませんので了承いただける方のみ試してみてください。


電源を入れてISOイメージで作成したディスクを入れます。(最近のパソコンはほとんどCD-ROMからの起動が可能)真ん中から上にFedoraCOreと大きな文字、一番下にはBoot:と表示され入力を待っている状態でEnterキーを押してグラフィカルインストール作業を行います。


注意!!:このインストール方法はハードディスクの内容がすべて消去されます。途中でうまくいかずハードディスクは空、Linuxはインストールできないという状況も発生しますので、必ず自己責任で行ってください。一切の責任は負いません。


同意の上で下記のステップに進んでください。


・メディアチェックはSKIP(時間がかかるので)

・Welcome画面ではNEXTをクリック

・言語の選択はJapanese(日本語)を選択

・キーボードも日本語を選択

・インストールの種類はサーバーを選択

・ディスクパーティションの選択は「DiskDruidを使用して手動パーティション設定」を選択

・/dev/hdaの下に何か表示されていれば(Windows、他がインストールされていれば表示されます)/dev/hdaを選択して削除(/dev/hdaの下が「空き」になります)

・1:「新規」をクリック、マウントポイントは「/boot」を選択、容量に100を入力、固定容量が選ばれていることを確認して「OK」をクリック

・2:「新規」をクリック、ファイルシステムタイプで「swap」を選択、容量に実装メモリの2倍(たとえば512)を入力、固定容量が選ばれていることを確認して「OK」をクリック

・3:「新規」をクリック、マウントポイントは「/」を選択、最大容量まで使用が選んで「OK」をクリック


この段階で


▽ハードディスク

 ▽/dev/hda

  /dev/hda1  /boot

  /dev/hda2  swap

  /dev/hda3  /


のようになっているはずです。


<つづく>

(L)FedoraCore4のダウンロード

今回、LinuxサーバーにはFedoraCore4(以下FC4)をインストールします。FC4は、ここからhttp://ftp.kddilabs.jp/Linux/packages/fedora/core/4/i386/iso/ isoイメージをダウンロードします。DVD-Rを持っている方は、FC4-i386-DVD.iso CD-Rの方は、FC4-i386-disc1.isoFC4-i386-disc2.isoFC4-i386-disc3.isoFC4-i386-disc4.iso の4つをダウンロードしてください。ダウンロードできたらインストール用のDVD、CDを作成しますが、WindowsXPの書き込みやライティングソフトの通常の書き込みでは、それぞれのファイルがコピーされるだけでインストールはできません。必ずISOモードで書き込みを行ってください。ISOモードの書き込みは、それぞれライティングソフトのヘルプを参照してください。ここに http://cowscorpion.com/Software/DVDCDBurn.html フリーのISOライティングソフトが載っています。

(J)JDKのインストール

VBの場合、VisualBasic、VisualStudio等の開発環境を購入する必要がありますが、JAVAの場合は、無償でhttp://java.sun.com/j2se/1.5.0/ja/download.html からJAVAの開発環境をダウンロードできます。インストールは、J2SE Development Kit、J2SE Runtime Environmentがインストールされます。今回、J2SE Development Kit はC:¥JDK¥にJ2SE Runtime Environment はデフォルトのC:¥Program Files¥Java¥jre1.5.0_XXにインストールします。(最後のXXはアップデート番号)

(J)VB6からJavaへ

VisualBasicは4の時代から数多くのシステムを開発し、6ではMCPを取得、データベースとの連携など、それなりのノウハウは持っていると自負しています。.NET2005でMicrosoft路線を辿ろうとしていたのですが、JAVAのサーブレットを使う必要が出てきたので、JAVAにトライしてみたいと思います。入門(文法、構文)からのスタートですので、VB6ユーザーのためのJAVA入門というタイトルの本になるような!?記事を重ねていこうと考えています。