ActiveDirectory環境で、一般ユーザがクライアントPCでパスワードを変更するには、Ctrl+Alt+Deleteを押します。
ここでパスワードの変更を選べばパスワードが変更できるはずですが、
パスワードを変更できませんでした。新しいパスワードとして指定された値は、パスワードの長さ、複雑さ、または履歴に関するドメインの要件を満たしていません。
と言われてしまうことがあります。
この場合は、以下を試してみます。
「Windows2008」などの、複雑さの要件を満たすパスワードを入れてみる
これでOKなら、グループポリシー「パスワードは複雑性の要件を満たす必要がある」が原因です。
嫌なら、これを無効にします。
これでもだめなら、「パスワードの変更禁止期間」が邪魔をしている可能性があります。
デフォルトでは、1週間程度のパスワード変更禁止期間が設定されていて、1日2回変更しようとすると上記のエラーが出るようです。
Default Domain Policyなどで「パスワード変更禁止期間」を0日に設定すれば直りそうです。
どういうわけだか、パスワードのポリシーだけはドメインコントローラーのポリシーが適用されることもあるような、そんな挙動をするので、Default Domain PolicyとDefault Domain Controller Policyの両方で
・パスワード変更禁止期間 → 0日
・パスワードの履歴を保存する → 無効
と設定しておくと良いと思います。
もちろん、ユーザの設定で「ユーザはパスワードを変更できない」にチェックが入っていないか確認し、gpupdate /force を実行するか再起動しておく必要があります。
1年くらい前に社内MLに投げた、「MySQLでSET NAMESを使ってはいけない理由」をコピペしてみます。手抜きです、はい。
赤字は注釈です。
今更ながら、「MySQLで SET NAMES を使ってはいけない」の根拠のお話です。
下記のPHPスクリプトでは、入力値を元にSQL文を生成し、検索クエリを投げています。
※sqltestというDBには、カラムnameを持つuserテーブルが存在します。
GETで渡された値はきちんとmysql_real_escape_stringをかけているので、SQLインジェクションは出来ないように見えます。
しかし、
http://localhost/sqltest/index.php?name=%95%5c’%20OR%201=1%20–%20
にアクセスすると、全部のデータが見えてしまいます。
下にあるPHPスクリプトを、localhost/sqltest/index.php として配置してください。
“SET NAMES SJIS” を実行すると、MySQLのエンコードがShift-JISになりますが、mysql_real_escape_stringはUTF-8のまま動作します。
16進数で 95 5c 27 20 は、
UTF-8: (謎の文字)(バックスラッシュ)(シングルコーテーション)(スペース)
Shift-JIS: (表)(シングルコーテーション)(スペース)
になります。
mysql_real_escape_stringは、バックスラッシュとシングルコーテーションそれぞれをエスケープします。
95 5c 5c 5c 27 20
MySQLは、Shift-JISとして動作するので、 (表)(\)(\)(シングルコーテーション)(スペース) と認識します。
つまり、\が一つ余分に入ることで、入力値のシングルコーテーションがエスケープされなくなります。
マルチバイト非対応のエスケープ関数を使うのと同じ理屈で、SET NAMES は危険です。
基本的に文字コード中に5Cが入るShift-JISが危険ですが、他の文字コードでも似たようなことが起こる可能性があります。
mysql_set_charset(’SJIS’);
なら、mysql_real_escape_stringもShift-JISとして動作するようになるので、安全です。
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SQLテストページ</title>
<head>
</head>
<body>
<form action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
<input type="text" name="name" />
<input type="submit" value="search" />
</form>
<?php
//DBに接続
if (! $db = mysql_connect('localhost', 'sqltest', 'sqltest'))
{
echo 'CONNECT ERROR';
exit;
}
mysql_select_db('sqltest', $db);
mysql_query('SET NAMES SJIS');
// mysql_set_charset('SJIS');
//SQLを生成
$name = mysql_real_escape_string($_REQUEST['name']);
$sql = "SELECT * FROM user WHERE name='$name'";
echo $sql . '<br />';
//実行
if (! $res = mysql_query($sql))
{
echo "QUERY ERROR <br />";
echo mysql_error();
exit;
}
echo "<pre>";
while ($row = mysql_fetch_array($res)) {
print_r($row);
}
echo "</pre>";
?>
</body>
</html>
Windowsのフォルダアクセス制限は複雑です。
サーバの共有フォルダにユーザごとのフォルダを作成し、それぞれに排他的なアクセス権を与える、という運用はよくあると思います。
その場合、サーバのHDD交換などの事情で全フォルダを丸ごとコピーする場合などに、サーバ管理者でさえもアクセスできないという問題があります。
Linuxならrootで全部アクセスできるのですが、Windowsでは、Administratorsグループでも、アクセス許可を取得していないとアクセスできません。
アクセス許可を取得するには、所有者の操作が必要ですが、管理者権限で一括でやりたいものです。
このような場合、多少強引ですが、所有者を強引に変更してしまいましょう。
以下、Vista / 7 / Server 2008 / Server 2008 R2 などのOSで、管理者権限でログインしている人が、自マシン内のフォルダの所有権を変更する手順です。

プロパティを開く

セキュリティタブの詳細設定を開く

所有者の編集

所有者の編集を開く

所有者の編集

新しい所有者を入力

完了
以上の操作で、アクセス権をリセットに近いことができます。
本当はこんなことやらずに運用をしっかりすれば良いのですが・・・
家族のPCにNorton Internet Security 2009体験版を入れてみたところ、Shurikenでのメール送受信が出来なくなりました。
POP3S/SMTPSは使えるのですが、POP/SMTPが使えない状態です。インストール直後は平気だったのに、ウィルススキャンをしたらだめになったとか。
110番と25番許可にしたり、ファイアウォールの一番上に全部許可のルール入れたり、アプリケーション制御で信頼するアプリに登録したり、ファイアウォールオフにしたり、ノートン先生丸ごとオフにしたり、色々やっても解決せず、
再起動したら直りました。謎。
やっぱり僕はKasperskyが好きです。高いけど。