none
net user コマンドで表示される「パスワードあり」の意味について

    質問

  • net userコマンドで表示される「パスワードあり」の項目について、「net help user」で表示されるヘルプには「ユーザー アカウントにパスワードを設定するかどうかを指定します。」とありパスワードの有無を表しているものと思っていたのですが、パスワードを空に設定してもこの値は「yes」のままであり、「/PASSWORDREQ」オプションにより「no」に変更してもパスワードの有り、無し(空パスワード)への変更は可能でした。逆に「yes」の状態でもパスワードの有り、無し(空パスワード)への変更は可能でした。

    登録されているローカルアカウントでパスワード未設定のものがないかということを調べるために使用できないかと思い見ていました。

    net userコマンドで表示される「パスワードあり」の項目について実際の意味をご教授願えないでしょうか?


    2014年12月4日 9:48

回答

  • 確認してませんが、こちらのかたによるテスト報告によると、もうちょい条件が加わって、

    UF_PASSWD_NOTREQD が真(/PASSWORDREQがno)なら、アカウント ポリシーのパスワードのポリシーにかかわらず、管理者がそのユーザーを空パスワードに設定できる

    となるようです。

    • 回答の候補に設定 佐伯玲 2014年12月5日 0:26
    • 回答としてマーク h.tanaka1977 2014年12月5日 5:29
    2014年12月4日 11:52
  • チャブーンです。

    HomeClosetさんの回答がその通りなのですが、ちょっと補足します。

    UF_PASSWD_NOTREQDは「そのユーザのパスワードが空であることを認めるか認めないか」という設定になりますが、前提として「パスワードのリセット(SetPassword)」が対象になるのだと思います。これは、新規にアカウントを作成する際やパスワードの強制変更、というシチュエーションが対象です。

    パスワードをセットする際は通常すべてパスワードポリシーの条件チェックがありますが、この設定がNoになっている場合、空である場合のみ例外的に条件判定そのものをスキップする、というしくみかなと思います。

    上記と似ているものに「パスワードの変更(ChangePassword)」があります。パスワードの変更は以前のパスワードを新しいパスワードに置き換える操作となり、内部挙動がSetPasswordとは異なります。そのためパスワードポリシーのチェックをスキップする、という考え方自体が用意されていないのだと思います。

    パスワードポリシーが1文字以上であれば、このように動作するはずです。

    • (管理者の)パスワード強制変更の場合、空パスワード設定ができる。1文字以上のパスワードを設定した場合は、パスワードポリシーの設定が強制される
    • (一般ユーザーの)パスワード変更の場合、パスワードポリシーの設定が強制され、空パスワード設定はできない

    パスワードポリシーが0文字以上であれば、こうなるのでしょう。

    • (管理者の)パスワード強制変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる
    • (一般ユーザーの)パスワード変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる

    なお、パスワード文字列は外部から参照ができないため、「パスワードが空であるかどうか」を直接判定する方法はありません。ですから通常は予防策として「(0文字でない)x文字以上のパスワードポリシー」を指定して、空パスワードが登録できないようにします。

    いままで0文字ポリシーを使っていたことで、空パスワードのユーザーが存在するがやめさせたい、という場合、パスワードポリシーを変更したうえ、(ユーザーには少しガマンしてもらいますが)全ユーザに「次回ログオン時にパスワードの変更が必要」、という追加設定を行うことで対応する方法はありますね。

    • 回答としてマーク h.tanaka1977 2014年12月9日 3:34
    2014年12月5日 7:51

すべての返信

  • 仕様をざっと見ただけではいまいちわからないところがありますが、

    UF_PASSWD_NOTREQD が真(/PASSWORDREQがno)なら、アカウント ポリシーのパスワードのポリシーにかかわらず、空パスワードに設定できる

    ということかと思います。

    http://msdn.microsoft.com/en-us/library/cc245476.aspx

    • 回答の候補に設定 佐伯玲 2014年12月5日 0:26
    2014年12月4日 11:39
  • 確認してませんが、こちらのかたによるテスト報告によると、もうちょい条件が加わって、

    UF_PASSWD_NOTREQD が真(/PASSWORDREQがno)なら、アカウント ポリシーのパスワードのポリシーにかかわらず、管理者がそのユーザーを空パスワードに設定できる

    となるようです。

    • 回答の候補に設定 佐伯玲 2014年12月5日 0:26
    • 回答としてマーク h.tanaka1977 2014年12月5日 5:29
    2014年12月4日 11:52
  • ご回答有難うございました。

    確認したところ、アカウントポリシーの「パスワードの長さ」が0文字以上の場合は、PASSWORDREQの設定値は左右されなく、1文字以上の場合に管理者でかつ「ローカルユーザーとグループ」からのみ空パスワードが設定可能でした。

    ちなみに管理者であってもコントロールパネルの「ユーザーアカウント」からの空パスワード変更は出来ませんでいた。

    2014年12月5日 5:35
  • チャブーンです。

    HomeClosetさんの回答がその通りなのですが、ちょっと補足します。

    UF_PASSWD_NOTREQDは「そのユーザのパスワードが空であることを認めるか認めないか」という設定になりますが、前提として「パスワードのリセット(SetPassword)」が対象になるのだと思います。これは、新規にアカウントを作成する際やパスワードの強制変更、というシチュエーションが対象です。

    パスワードをセットする際は通常すべてパスワードポリシーの条件チェックがありますが、この設定がNoになっている場合、空である場合のみ例外的に条件判定そのものをスキップする、というしくみかなと思います。

    上記と似ているものに「パスワードの変更(ChangePassword)」があります。パスワードの変更は以前のパスワードを新しいパスワードに置き換える操作となり、内部挙動がSetPasswordとは異なります。そのためパスワードポリシーのチェックをスキップする、という考え方自体が用意されていないのだと思います。

    パスワードポリシーが1文字以上であれば、このように動作するはずです。

    • (管理者の)パスワード強制変更の場合、空パスワード設定ができる。1文字以上のパスワードを設定した場合は、パスワードポリシーの設定が強制される
    • (一般ユーザーの)パスワード変更の場合、パスワードポリシーの設定が強制され、空パスワード設定はできない

    パスワードポリシーが0文字以上であれば、こうなるのでしょう。

    • (管理者の)パスワード強制変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる
    • (一般ユーザーの)パスワード変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる

    なお、パスワード文字列は外部から参照ができないため、「パスワードが空であるかどうか」を直接判定する方法はありません。ですから通常は予防策として「(0文字でない)x文字以上のパスワードポリシー」を指定して、空パスワードが登録できないようにします。

    いままで0文字ポリシーを使っていたことで、空パスワードのユーザーが存在するがやめさせたい、という場合、パスワードポリシーを変更したうえ、(ユーザーには少しガマンしてもらいますが)全ユーザに「次回ログオン時にパスワードの変更が必要」、という追加設定を行うことで対応する方法はありますね。

    • 回答としてマーク h.tanaka1977 2014年12月9日 3:34
    2014年12月5日 7:51