windows-server-2008 – 尽管作为具有访问权限的用户运行,Windows任务计划程序仍无法访问EFS加密文件夹

前端之家收集整理的这篇文章主要介绍了windows-server-2008 – 尽管作为具有访问权限的用户运行,Windows任务计划程序仍无法访问EFS加密文件夹前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个批处理文件设置为通过 Windows Server 2008 R2中的任务计划程序运行.批处理文件用于旋转和压缩 MySQL日志,包含这些日志的文件夹使用Windows内置的EFS加密进行加密.我找到了一个VBS脚本,它将压缩(zip)一个文件夹,我用它来压缩旋转后的旧日志文件.如果我在命令行运行它,批处理文件运行正常.

问题是当我尝试让Task调度程序运行它时.我把它设置为每天运行一次,并且像我一样运行(我可以访问并可以查看加密的日志文件等).但是当任务运行时(无论是在预定的时间还是我手动运行任务),它在运行VBS脚本时会窒息,说它是未经授权的.当批处理文件调用CScript运行VBS脚本时,CScript是否作为同一个用户(我自己)运行?我只是从批处理文件调用它,如下所示:

CScript  zipIt.vbs  %TEMPDIR%  %ARCHIVEDIR%\%TARGETZIP%

以下是VBS脚本的内容

Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile,True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18,vbNullChar)
Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)
wScript.Sleep 2000

我对VBS或Windows管理一般都不是很了解,但我猜这个脚本在加密文件夹中创建一个新文件时遇到了麻烦.因为当我关闭文件夹加密时,它可以在任务计划程序中正常工作.我正在考虑使用“Runas”使用我自己的凭据调用CScript,但我不希望将我的密码存储在批处理文件中,因为其他用户可以访问这些文件(DatabaseAdmin等).在任务计划程序中,有一个“以最高权限运行”选项.这会解决这个问题吗?我正在避免这种情况,因为我认为我应该试着弄清楚如何让它以尽可能少的特权来工作.

更新:
在探索时,我发现我实际上没有能力解密MysqL日志文件,即使我对包含文件夹有这种能力(由cipher.exe / c验证).唯一具有未加密权限的帐户是SYSTEM.这可能是因为MysqL日志是由“MysqLAdmin flush-logs”工具创建的.据我了解,应用程序创建的文件由SYSTEM拥有(不是100%肯定).也许我必须使用“runas”在我的脚本中调用MysqLAdmin flush-logs.但是我有同样的问题,不想以明文形式将我的凭据存储在批处理文件中.我会尽力测试.

任何帮助表示赞赏.

如果永远不会删除重命名此日志文件,则可以使用运行cipher的SysInternals的PsExec工具作为系统帐户,尝试为您的帐户添加EFS访问权限.就像是:
psexec -s cipher /adduser ...

但是,如果这是一个被替换的旋转文件,那么您将在MysqL创建的每个文件中遇到此问题,因为它在系统帐户下运行.如果是这种情况,那么您应该考虑将MysqL服务器作为具有已知密码和EFS证书的特定用户帐户运行,无论是您自己的帐户还是专用帐户.这与您运行预定脚本所需的帐户相同.

猜你在找的Windows相关文章