Windows Serverにおけるユーザアカウントとアクセス権を一括で設定する方法


1 はじめに

 授業等で生徒が個々に作品をファイルサーバへ保存する場合,ファイル名の違いだけでは,誤って他人のデータに上書きしたり,他人の作品を不正使用したりすることが考えられます。
 そこで,個人別に保存するフォルダを作成し,それぞれにアクセス権を設定することで,これらのトラブルを防止する必要があります。しかし,個人別のアクセス権を設定するには,生徒個人別のユーザアカウントを作成する必要があり,通常のGUI(マウスなどのポインティングデバイスによって行なうことができるユーザインターフェースのこと)ツールでの設定方法では,かなりの時間と労力が必要となります。

 これに対し,コマンドによる設定方法を利用すれば,一括で多くのユーザを登録したりフォルダのアクセス権を設定することができます。
ここで,紹介する事例の環境としては,生徒用サーバ1台で各生徒用パソコンを管理している場合を考えます。各実習室で別々のサーバが存在する場合は,各サーバで設定が必要になります。

2 ユーザアカウントを一括で作成する方法

 (1) Addusersコマンド

 Addusersコマンドは,ユーザアカウントの追加やファイルへの書き出しができるユーティリティであり,書籍「Windows 2000 Serverリソースキット」(日経BPソフトプレス)の付属CD-ROMに収録されています。この書籍は,全8巻ありますが,すべてに同じ内容のCD-ROMが付属しています。また,Windows NT用のAddusers_x86がMicrosoftのサイトからダウンロードで入手が可能です。このAddusers_x86は,Windows NT以外にWindows XPやWindows 2000のOSにも対応しています。
 なお,MicrosoftのサイトからダウンロードできるWindows Server 2003のリソースキットには,Addusersコマンドは含まれていません。もし,Windows Server 2003で利用する場合は,Windows 2000 Serverのリソースキットに含まれているAddusersコマンドが利用できます。
 Addusersコマンドを利用すると,大量のユーザアカウントを一括で登録することが可能になります。表計算ソフトウェアなどでユーザアカウントのリストファイルを”CSV(データをカンマ(",")で区切って並べたファイル)”形式で作成し,そのファイルをAddusersコマンドに読み込ませるだけで多くのユーザを一括登録することができます。
 ここでは,Windows 2000 Serverを例に紹介します。また,表計算ソフトウェアは,Microsoft Excelを使用することにします。

Microsoftのサポートページ「Addusersによる大量のユーザの自動作成」
http://support.microsoft.com/default.aspx?scid=kb;ja;JP199878

Addusers_x86のダウンロード
ftp://ftp.microsoft.com/bussys/winnt/winnt-public/reskit/nt40/i386/addusers_x86.exe

〔Addusersの書式〕
  ADDUSERS {/c|/d{:u}|/e} filename [/t][/s:x] [/?] [\\computername|domainname] [/p:{l|c|e|d}]

/?  このヘルプ画面を表示する
/c  ファイルで指定されたアカウントを作成する
/d:  現在のアカウントを指定されたファイルへ書き出す
   u  UNICODEで書き出すオプション
/p:  アカウントの作成オプションで,{lced}のいずれかを指定する
   l  次回ログオン時にパスワード変更しなくてもよい
   c  ユーザはパスワードを変更できない
   e  パスワードを無期限にする(lオプションの意を含む)
   d  アカウントを無効にする
/e  ファイルで指定されたアカウントを削除する
/s:x  CSVファイルの区切りを’x’に設定する。区切りとして使用したい文字をxと置き換える。
        デフォルトは’,’カンマ
/t  ターミナルサービスユーザの作成と取り出しを可能にする
        /cまたは/dとともに使用する

〔ユーザアカウントリストファイルの形式〕

 表計算ソフトウェアのセル「A1」に”[User]”と入力し,2行目以降に以下のような表を作成します。

項 目 内 容(例)
A ユーザ名 1101(生徒番号)
B フルネーム 氏名
C パスワード 1101(ユーザ名と同じ)
D 説明 生徒用アカウント
E ホームフォルダの接続ドライブ z:
F ホームフォルダのパス \\server\user\1101(フォルダがある場合)
\\server\user\%username%(ユーザ名で自動作成)
G プロファイル パス 省略
H ログオン スクリプト scr.bat(無ければ省略可)

 ホームフォルダのパスは,接続ドライブ番号Z:がネットワークドライブとして自動的に割り当てられます。また,ホームフォルダ名を”%username%”と指定すると,ユーザ名でフォルダが自動作成されます。

 グローバルユーザを作成するときは,登録するユーザの後に記述します。

 A列の先頭に”[Global]”と入力し,続けて以下のような表を作成します。

項 目 内  容
A グローバルグループ名 seito
B コメント 生徒グループ
C ユーザ名1 以下の列に追加するユーザを列挙します
D
ユーザ名2
    …

 ローカルユーザを作成するときは,グローバルユーザの後に記述します。
A列の先頭に”[Local]”と入力し,あとは,グローバルユーザと同様です。

 なお,グローバルユーザはドメイン内で有効になりますが,ローカルユーザは作成されたコンピュータ以外では使用できません。 

 (2) 表計算ソフトウェアによるユーザアカウントリストの作成例

 表計算ソフトウェアを利用しアカウントリストを以下のように作成します。

ユーザアカウント設定

 次に,任意のファイル名で”CSV(カンマ区切り)”形式にしてファイルを保存します。以下の説明では,ファイル名を user とし,C:¥に保存することにします。

CSV形式保存

 コメントなどに日本語文字を含む場合は,このcsvファイルをUnicode形式に変換しておかないと文字化けが起きてしまいます。そこで,作成したcsvファイルをメモ帳等で開き,Unicode形式に変換します。

userファイル

 文字コードに”Unicode”を指定し,保存します。

Unicode保存

 以上でユーザアカウントのリストファイル”user.csv”の作成完了です。

サンプルファイル(user.csv)
※右クリックして「対象をファイルに保存」を選択し,zipファイルをダウンロードした後解凍してください。

 (3) Addusersコマンドの実行

 コマンドプロンプトを起動し,コマンドラインで以下のように入力します。

C:\>addusers /c user.csv /p:e
/cは,user.csvのファイルからユーザを作成します。(user.csvファイルがカレントフォルダにない場合は,パスを含めて指定します。)
/p:eは,パスワードを無期限にします。

Addusersコマンド設定

※ユーザグループが存在していた場合,エラーが表示されますが無視してかまいません。指定したグループに追加されます。

3 アクセス権を一括で設定する方法

 (1) Caclsコマンド

 生徒個人用フォルダなど多数のフォルダに対してアクセス権の設定を行うのは大変な作業になります。Windows NT以降のOSでは,標準でアクセス権を設定するコマンド「Cacls」が用意されています。

〔Caclsの書式〕   

Caclsコマンド書式

 (2) Caclsコマンドの設定例

C:\user
   ├\1101
   …
   └\1105
”C:\user”以下のフォルダ全体へのフルコントロールのアクセス権をユーザ「teach」に与えます。
C:\>cacls c:\user /t /e /c /g teach:f
/tは,現在のフォルダとフォルダ内のすべてのファイルとフォルダのアクセス権を変更します。
/eは,既存のアクセス権を保持し,新たなアクセス権を編集します。
/cは,アクセス拒否のエラーを無視して処理を継続します。
/gは,指定したユーザにアクセス権を与えます。

次にユーザ名を入力します。
:fは,フルコントロールにします。

caclsコマンド設定1

フォルダは作成時,Everyoneがフルコントロールになっていますから,次にEveryoneのアクセス権を削除します。

 ※caclsコマンドを実行するユーザが対象フォルダへのアクセス権限をもっていない場合,変更ができません。通常,ホームディレクトリには,ユーザのみにフルアクセス権が与えられているので,一括にユーザホームディレクトリのアクセス権を変更する場合は,コマンドを実行するユーザつまり Administrator にフルアクセス権を与えておく必要があります。

C:\>cacls c:\user /t /e /c /g administrator:f

C:\>cacls c:\user /t /e /c /r everyone
/rは,指定したユーザのアクセス権を削除します。

caclsコマンド設定2

 このような操作で,\user以下のフォルダやファイルは,ユーザ「teach」と「administrator」だけがフルコントロールとなり,他のユーザは,アクセスができなくなります。

 (3) Caclsコマンドを利用したバッチファイルの作成例

 バッチファイルを作成し,生徒個別のフォルダにアクセス権を設定します。
メモ帳で以下のように作成します。

バッチファイル

 ファイル名を”set.bat ”にして保存します。

バッチファイルの保存

サンプルファイル(set.bat)
 ※右クリックして「対象をファイルに保存」を選択してください

 バッチファイル(set.bat)をダブルクリックして実行します。

バッチファイル実行

 フォルダ1101のプロパティでセキュリティを確認すると以下のように設定されています。

セキュリティ設定

 (4) 表計算ソフトウェアを利用したCaclsバッチファイルの作成例

 アクセス権の設定数が増えると,メモ帳でバッチファイルを作成するのは,大変労力を要します。そこで表計算ソフトウェアを利用して簡単に作成する方法を紹介します。

  1. セルA1に「cacls c:\user\」を入力
  2. セルA2に「/t /e /c /g」を入力
  3. セルA3に「:f」を入力
  4. セルA6以降にユーザ名を入力し,オートフィル等でコピー
  5. セルC6に「=$A$1&A6&"△"&$A$2&"△"&A6&$A$3」と入力($の有無に注意 △:半角スペース)
  6. セルC7以降は,オートフィル等でコピー

Caclsバッチファイル

サンプルファイル(Book1)
※右クリックして「対象をファイルに保存」を選択してください

 次に,セル範囲C6〜C10を範囲指定してコピーし,メモ帳に貼り付けてバッチファイルを作成します。

4 Addusersコマンドを利用しての既存アカウントをバックアップする方法

 Addusersコマンドは,アカウントの作成以外に,既存のアカウント情報をcsv形式のファイルとして出力することができます。この機能を利用すれば,OSを再インストールするときなど,簡単にユーザ情報を復元することができます。次のように入力すれば,ファイル”userlist.csv”として出力されます。

C:\>addusers /d:u c:\userlist.csv
/d:uは,Unicodeで書き出します。

 ※システム管理用のアカウントを含むすべてのアカウントが出力されるので,復元する際には,csvファイルから,それらを削除してからでないとエラーとなります。

5 おわりに

 ここで紹介した内容は,生徒実習環境を想定しましたが,校務用サーバで,教師個人別にユーザ管理をすることも可能です。たとえば,サーバに各分掌毎のフォルダを作成し,分掌のグループメンバーだけにアクセス権を設定することによって,セキュリティを考慮した分掌内でのファイル共有化が可能となります。
 アクセス権の設定は,誤操作等の防止やセキュリティの強化にもなりますので,必ず設定するようにしましょう。