テストの目的で、2行のバッチファイルで構成される単純なタスクがあります。
_whoami >result1.txt
copy \\server\share\test1.txt C:\Users\xxx\Documents > output.txt 2> error.txt
_
対話型ログインからこれを実行すると、共有にアクセスするためのドメイン資格情報があるため、正常に機能します。
タスクスケジューラから実行すると失敗します。最初のコマンドは成功します(偶然にも、スケジュールされたタスクが私のIDで実行されていることを示しています)が、おそらく正しい接続情報を使用して接続していないため、2番目のコマンドは失敗します。
タスクの実行後、_error.txt
_は空になり、_output.txt
_には_"Access is denied."
_が含まれます。タスクの履歴に有用な情報はありません。_Action Completed
_と_Last Run Result
_だけの_(0x1)
_コピーが失敗したため。
スケジュールされたタスクのプロパティの全般オプションは、ドメインユーザーアカウントで実行し、「ユーザーがログオンしているかどうかにかかわらず実行する」です。 「最高の権限で実行」を設定した場合と設定しない場合の両方を試しましたが、何も変更されないようです。また、「構成」オプションを変更しようとしましたが、効果はありませんでした。 「パスワードを保存しない」はチェックされていませんが、完全を期すためにチェックしてみましたが、動作は変わりません。
サーバー側で、セキュリティイベントログを確認しました。コマンドが失敗すると、Audit Success Anonymous Logonログオンイベント、Anonymous LogonがSeBackupPrivilegeを使用しようとしているように見えるAudit Failureエントリが表示されます。
_A privileged service was called.
Subject:
Security ID: ANONYMOUS LOGON
Account Name: ANONYMOUS LOGON
Account Domain: NT AUTHORITY
Logon ID: 0x180e12c36
Service:
Server: Security
Service Name: -
Process:
Process ID: 0x4
Process Name:
Service Request Information:
Privileges: SeBackupPrivilege
_
その後、監査成功の匿名ログオンセッションが破棄されました。
クライアントはWindows 10、サーバーはWindows 2008 R2です。資格情報は、Active Directoryのドメインユーザーアカウントです。
別のサーバーを使用している場合、IISおよびWebDAVを実行しているWindows Server 2016ボックスでは、タスクスケジューラを介してタスクが正常に実行されます。したがって、WebDAVを介して、私の資格情報が使用されますCIFS経由ではありません。
コピーが失敗した理由と回避策があるかどうかを誰かが解明できますか?テストのための次のステップは?バッチファイルに資格情報をハードコーディングすることで機能させることができますが、明らかにそれは実際には受け入れられません。
このポリシーは関連している可能性があると提案されましたが、無効になっているので、私はそうではないと思います:
_Network access: Do not allow storage of passwords and credentials for network authentication
at
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
_
スケジュールされたタスクとは異なり、対話的に動作するアクセス許可の事例証拠が多く見られます。また、イベントログメッセージは、seBackupPriviligeが必要であることを示しているようです(これは、おそらくオブジェクトの所有者を変更したいということを意味します)。
タスクを実行するユーザーを、ターゲットサーバー上のBackup Operatorsなどの組み込みローカルグループに配置すると、トリックを実行できる場合があります(これをテストするためのテストベッドがない場合は、両方のサーバーでローカル管理を開始してから、除去を使用します)。
理論的には、ドメインGPOを使用して、特定のユーザーまたはより良いグループに同様の権限を設定することもできます。
編集:エラー出力を省略または変更しようとしましたか?セキュリティイベントは赤字になる可能性があります(たとえば、NTLM認証では常に、失敗した匿名エントリが含まれます)。
スクリプトを実行すると、> output.txtおよび2> error.txtの前にパスがないため、スケジュールされたタスクでエラーが発生しますが、これは機能します。
copy \\two.moh.local\test\test1.txt C:\temp\ > c:\temp\output.txt 2> c:\temp\error.txt
コマンドプロンプトから、またはダブルクリックでスクリプトを実行すると、スクリプトは機能します。親ディレクトリを使用するため、インタラクティブに実行していない場合とは機能が異なります(ユーザーがドメイン管理者がアクセス許可を持っている場所に書き込もうとしたと仮定しています)ではない)。