goo blog サービス終了のお知らせ 

お散歩Linux

のんびりぷらぷら寄り道しながらLinuxでお散歩。

ユーザー認証

2004-05-06 22:29:42 | Linux
今日の話題をLinuxのカテゴリにするのは、ちょっと苦しいですが。。。

Linux(UNIX)と、Windowsとで、ユーザー情報の管理方法が違うことが少しわかってきました。
Linuxでは、ユーザー認証は1台1台のマシンごとに独立していて、「/etc/passwd」ファイルで管理を行うようです。シャドウ・パスワード機能が有効になっている場合は、パスワードは「/etc/shadow」ファイルに暗号化されて記述されます。

へえ...と思って、さっそく自分のLinuxマシンを見てみると、ちゃんと、/etc/passwdファイルがありました。
パスワードの部分は、ちゃんとxになっていたので、シャドウ・パスワード機能は有効でした。
/etc/shadowの中も、見てみましたが、やっぱり暗号化されていました。

UNIX系のOSは、マルチユーザー環境が前提となっていたため、ローカルでユーザー認証を行う機能が基本となっていたそうです。

そうすると、ファイルサーバが2台あったとして、サーバごとに違うユーザー名とパスワードでログインするという使い方や、または、2台のサーバでユーザ名とパスワードを常に同じになるように管理する、といった使い方をするのかなあ...と思います。(あくまでも、想像です)
UNIX系のOSでも、ユーザーデータベースをネットワークで利用できるようにする仕組みがあるようです。よくわからないので、名前だけ。
(NIS)Network Information Service

WindowsのNTドメイン環境では、ユーザー名とパスワードの管理はディレクトリデータベースで行われます。このデータベースはセキュリティ アカウント マネージャ(SAM)データベースとも呼ばれて、実態は、システムフォルダの下の"system32\Config\sam"というファイルのようです。
SAMデータベースのマスタコピーは、プライマリドメインコントローラ(PDC)に保存されます。
そして、定期的にバックアップドメインコントローラ(BDC)に複製されて、ドメインの中ではどのBDCでも同じSAMデータベースが保存されます。

NTドメインの機能に該当するものが、UNIX系では何になるのだろう…と、しばらく疑問に思っていました。
そもそも、NTドメインの機能というものが自分でもよく説明できなかったのですが、なんとなくユーザー名とパスワードの管理を集中化してするものが、NTドメインかな?という気がしてきました。
これだけでは単純すぎますけれど。。。

ユーザー名とパスワードが、ネットワーク全体で共有されている状態を、あたりまえと思っていたのが(漠然と、ネットワークとは、そもそもそういう機能を持っていると思っていた)NTドメインのSAMデータベースがあるから、それができているということが少し、わかってきたようです。

SAMデータベースに該当するものは、ActiveDirectoryになると、ドメインコントローラの「NTDS.dit」ファイルになるようです。

■参考にしたページ
http://www.idg.co.jp/lw/weekly_2/030727/
■/etc/passwd ファイルのフォーマット
http://www.linux.or.jp/JF/JFdocs/Shadow-Password-HOWTO-2.html#ss2.2
■shadow ファイルのフォーマット
http://www.linux.or.jp/JF/JFdocs/Shadow-Password-HOWTO-2.html#ss2.3
■NT管理者のためのActiveDirectory入門
「第2回 アカウントの登録と管理」
http://www.atmarkit.co.jp/fnetwork/rensai/ad02/ad01.html

main() メソッド

2004-03-22 18:30:09 | Linux
引き続き、javaの話です。

私がいちばん最初に(もちろん解説ページを見ながら)作ったjavaファイルって、こんな感じの内容でした。
(HelloSapporo.java)

public class HelloSapporo {
public static void main( String[] args) {
System.out.print("Hello Sapporo!");
}
}

単純に見えるけれど、わからないことだらけです。
はじめに、String[] argsって何だろう...と思って調べてみました。


String[] argsは、配列を定義するときの書き方みたい。
String args[]と書くこともできるそうです。

書式:データ型名[] 変数名; 又は データ型名 変数名[];

argsは、argsじゃなといけないのかな?

配列Srintg[] argsは、main() メソッドのコマンドライン引数。
コマンドラインから、Java アプリケーションにパラメタを渡すことが出来る。

▼コマンドライン引数の第一番目を出力するもの。(Jikken.Java)

class Jikken {
public static void main(String[] args) {
System.out.print(args[0]);
}
}

java Jikken hello!と入力すると、「hello!」が表示される。

C:\java>java Jikken hello!
hello!

うーん。でもまだよくわからない...と思っていたら、

main() メソッドは一般に、次のように定義します:
public static void main(String[] args)
という説明がありました。
なるほど。決まりみたいなものなのね。

public 修飾子はクラス外からのアクセスを可能にする。
static 修飾子が指定されているのは、このメソッドをメンバに持つクラスが、インスタンス化されなくても利用できるようにしている。
戻り値は一般になし。最初に実行されるメソッドなので戻り値を返す相手がいないため。(void について)

ちょびっとだけ納得しました。まだまだこれからです。

(参考にさせていただいたページ)
http://msugai.fc2web.com/java/method.html