トップ回答者
net user コマンドで表示される「パスワードあり」の意味について

質問
-
net userコマンドで表示される「パスワードあり」の項目について、「net help user」で表示されるヘルプには「ユーザー アカウントにパスワードを設定するかどうかを指定します。」とありパスワードの有無を表しているものと思っていたのですが、パスワードを空に設定してもこの値は「yes」のままであり、「/PASSWORDREQ」オプションにより「no」に変更してもパスワードの有り、無し(空パスワード)への変更は可能でした。逆に「yes」の状態でもパスワードの有り、無し(空パスワード)への変更は可能でした。
登録されているローカルアカウントでパスワード未設定のものがないかということを調べるために使用できないかと思い見ていました。
net userコマンドで表示される「パスワードあり」の項目について実際の意味をご教授願えないでしょうか?
回答
-
チャブーンです。
HomeClosetさんの回答がその通りなのですが、ちょっと補足します。
UF_PASSWD_NOTREQDは「そのユーザのパスワードが空であることを認めるか認めないか」という設定になりますが、前提として「パスワードのリセット(SetPassword)」が対象になるのだと思います。これは、新規にアカウントを作成する際やパスワードの強制変更、というシチュエーションが対象です。
パスワードをセットする際は通常すべてパスワードポリシーの条件チェックがありますが、この設定がNoになっている場合、空である場合のみ例外的に条件判定そのものをスキップする、というしくみかなと思います。
上記と似ているものに「パスワードの変更(ChangePassword)」があります。パスワードの変更は以前のパスワードを新しいパスワードに置き換える操作となり、内部挙動がSetPasswordとは異なります。そのためパスワードポリシーのチェックをスキップする、という考え方自体が用意されていないのだと思います。
パスワードポリシーが1文字以上であれば、このように動作するはずです。
- (管理者の)パスワード強制変更の場合、空パスワード設定ができる。1文字以上のパスワードを設定した場合は、パスワードポリシーの設定が強制される
- (一般ユーザーの)パスワード変更の場合、パスワードポリシーの設定が強制され、空パスワード設定はできない
パスワードポリシーが0文字以上であれば、こうなるのでしょう。
- (管理者の)パスワード強制変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる
- (一般ユーザーの)パスワード変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる
なお、パスワード文字列は外部から参照ができないため、「パスワードが空であるかどうか」を直接判定する方法はありません。ですから通常は予防策として「(0文字でない)x文字以上のパスワードポリシー」を指定して、空パスワードが登録できないようにします。
いままで0文字ポリシーを使っていたことで、空パスワードのユーザーが存在するがやめさせたい、という場合、パスワードポリシーを変更したうえ、(ユーザーには少しガマンしてもらいますが)全ユーザに「次回ログオン時にパスワードの変更が必要」、という追加設定を行うことで対応する方法はありますね。
- 回答としてマーク h.tanaka1977 2014年12月9日 3:34
すべての返信
-
チャブーンです。
HomeClosetさんの回答がその通りなのですが、ちょっと補足します。
UF_PASSWD_NOTREQDは「そのユーザのパスワードが空であることを認めるか認めないか」という設定になりますが、前提として「パスワードのリセット(SetPassword)」が対象になるのだと思います。これは、新規にアカウントを作成する際やパスワードの強制変更、というシチュエーションが対象です。
パスワードをセットする際は通常すべてパスワードポリシーの条件チェックがありますが、この設定がNoになっている場合、空である場合のみ例外的に条件判定そのものをスキップする、というしくみかなと思います。
上記と似ているものに「パスワードの変更(ChangePassword)」があります。パスワードの変更は以前のパスワードを新しいパスワードに置き換える操作となり、内部挙動がSetPasswordとは異なります。そのためパスワードポリシーのチェックをスキップする、という考え方自体が用意されていないのだと思います。
パスワードポリシーが1文字以上であれば、このように動作するはずです。
- (管理者の)パスワード強制変更の場合、空パスワード設定ができる。1文字以上のパスワードを設定した場合は、パスワードポリシーの設定が強制される
- (一般ユーザーの)パスワード変更の場合、パスワードポリシーの設定が強制され、空パスワード設定はできない
パスワードポリシーが0文字以上であれば、こうなるのでしょう。
- (管理者の)パスワード強制変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる
- (一般ユーザーの)パスワード変更の場合、(パスワードポリシーで空パスワードが許可されているので)空パスワードを含む、任意のパスワード文字が設定できる
なお、パスワード文字列は外部から参照ができないため、「パスワードが空であるかどうか」を直接判定する方法はありません。ですから通常は予防策として「(0文字でない)x文字以上のパスワードポリシー」を指定して、空パスワードが登録できないようにします。
いままで0文字ポリシーを使っていたことで、空パスワードのユーザーが存在するがやめさせたい、という場合、パスワードポリシーを変更したうえ、(ユーザーには少しガマンしてもらいますが)全ユーザに「次回ログオン時にパスワードの変更が必要」、という追加設定を行うことで対応する方法はありますね。
- 回答としてマーク h.tanaka1977 2014年12月9日 3:34