ようこそ!
答えてねっと for Businessは、
マイクロソフトが運営する
ビジネスで使うパソコンや
ITに関するQ&Aサイトです。

質問

コマンドプロンプトを利用したアカウントのロックアウト解除の委任について

製品名:デスクトップ OS、サーバー OS/Windows Server 2003

現象:知りたい/その他

この質問は解決で締め切られています

いつもお世話になっております。

<概要>
ドメインの管理者権限を付与せずにバッチ等を利用したアカウントロックの解除が可能な方法がありましたらご教授ください。

<詳細>
ドメインの管理者権限を持たない特定のユーザーにActiveDirectory上のユーザーの「アカウントのロックアウト」を解除する権限を付与し作業を委任したいと考え、ドメインのセキュリティで該当ユーザーに「LockoutTimeの読み込み」と「LockoutTimeの書き込み」の権限を付与しました。
設定を行うことで「Active Directory ユーザーとコンピュータ」を利用したアカウントのロックアウトの解除が可能となることは確認できましたが、コマンドプロンプトを利用したアカウントのロックアウトの解除ができません。当然の結果なのかもしれませんが、回避方法または、別の方法やツール等がありましたらご教授ください。

コマンド  net user [ユーザー名] /active:yes /domain
管理クライアントはWindowsXPSP3です。
委任者の権限は、Domain Usersです。

以上 宜しくお願いします

質問者からのコメント

  • 投稿日時:2008/11/25 11:40

チャブーン@さま

わざわざ検証までしていただきありがとうございました。
追加で頂いた情報を元に運用も検討したいと思います。

回答1 (この回答は質問に対する回答です)

  • 投稿ID:A2008056297
  • 投稿日時:2008/11/21 01:57
  • 最も役に立った投稿として評価されました

チャブーンです。

ドメインアカウントのロックアウトの解除には、LDAP ベースの特定属性やフラグ (userAccountControl) の変更が必要で、残念ながら net user コマンドではできません。

必要なフラグについては、Windows Server 2003 ベースでは lockoutTime だけではない (ms-DS-User-Account-Control-Computed) ので、したの資料を確認してみてください。

http://support.microsoft.com/kb/305144/ja

LDAP 属性を直接変更するコマンドツールには dsmod user コマンドがありますが、ロックアウトの解除をする設定はありません。こういうケースでは任意の LDAP 属性を変更できる、admod.exe ツールを使うといいでしょう。MS 製ではありませんが、著名な MVP が提供しているものです。

http://www.joeware.net/freetools/tools/admod/index.htmマイクロソフト以外のサイトへ移動する

OU に含まれるユーザ全体にクエリをかけて設定したい、という場合もあるでしょう。うえのツールの対となっている adfind.exe を併用するとうまくいきます。dsquery コマンドと似たツールと考えればよいでしょう。

http://www.joeware.net/freetools/tools/adfind/index.htmマイクロソフト以外のサイトへ移動する

  •  

回答2 (この回答は回答1に対する回答です)

  • 投稿ID:A2008056312
  • 投稿日時:2008/11/21 10:24

チャブーン@さま

さっそくのご回答ありがとうございます。
またツールの情報提供ありがとうございます。
admod.exe、adfind.exe について後ほどじっくりと拝見させていただき、評価検討したいと思い思います。

  •  

回答3 (この回答は回答2に対する回答です)

  • 投稿ID:A2008056380
  • 投稿日時:2008/11/22 19:56

チャブーンです。

紹介しっぱなしもナンなので、簡単に確かめました。

lockoutTime 属性のアクセス許可を調整した状態で、adfind.exe admod.exe を適切に配置して、下のようなコマンドをアクセス許可を可としたユーザ権限で実行させると、まあちゃんと動作しました。

adfind -b OU=Accounts,DC=example,DC=com -f "&(objectClass=person)(&(lockoutTime=*)(!lockoutTime=0))" -dsq|admod "lockoutTime::0"

ちなみに、ms-DS-User-Account-Control-Computed ですが、ロックアウトすると値が変更されますが、lockoutTime 属性に 0 を投入すると 0 に戻る実装になっているようで、特にアクセス許可を変更しなくても、普通に動作しますね。

アカウントのロックアウトポリシーで時間が経つとロックが解除される場合ですが、ロックが解除されると ms-DS-User-Account-Control-Computed は 0 になりますが lockoutTime は 0 にはならないようなので、クエリを行う場合にはちょっと注意が必要です。

  •