谁是使用CFEXECUTE调用的批处理文件创建的文件夹的所有者?

时间:2016-03-07 14:07:22

标签: windows batch-file coldfusion coldfusion-9

我正在运行ColdFusion 9添加Windows Server Datacenter。我编写了一个批处理文件,用于在系统上创建目录。如果我使用cfexecute来调用cmd.exe来运行批处理文件,谁是创建目录的所有者?是运行ColdFusion的用户,还是创建批处理文件的用户,还是这两者都不是?

我限制创建Windows计划任务,但我无法使用cfdirectory创建文件夹,因为CF用户具有提升的权限,甚至mode=777也没有&# 39;工作。任何意见或见解都表示赞赏。

3 个答案:

答案 0 :(得分:5)

Coldfusion执行的任何操作都是在运行coldfusion服务的用户的上下文中完成的,因此任何文件/文件夹也将由该用户拥有。 由于它是Windows服务器,因此无法使用unix命令来更改权限。

如果你有权访问cfexecute,那么你几乎可以从命令行做任何事情,所以他们限制cfdirectory是没有意义的,也许你应该指出它们。如果他们想要限制访问,那么最好使用安全沙箱以及运行服务的用户的权限来执行此操作。

答案 1 :(得分:2)

如果使用Windows,CFX_EXEC是一个提供比ColdFusion的内置CFExecute更多功能的选项:

http://adiabata.com/cfx_exec.cfm

它是用C ++编写的,应该可以在Windows上成功安装所有版本的ColdFusion。它将使您能够在特定帐户下运行外部流程,甚至可以执行即时批处理文件。

<!--- Credential Check --->
<cf_exec fnc="USER" user="#user#" pwd="#pwd#" domain="#domain#">
<cfif status neq "OK">
    <cfoutput>Error: #MSG#<br>
    Error number: #ERRN#</cfoutput>
<cfelse>
    Credentials OK
</cfif>

<!--- On-the-fly BAT file --->
<cf_exec cmd="cmd.exe" user="#user#" pwd="#pwd#" domain="#domain#">
@echo off
netstat -e
cd c:\
dir "<cfoutput>#dir#</cfoutput>"
ipconfig /all
exit
</cf_exec>

答案 2 :(得分:0)

作为snake's correct answer的简要附录,您可以使用一些NIO来检查Java7 +的ownership of a file/directory

    Paths = createObject("java", "java.nio.file.Paths");
    Files = createObject("java", "java.nio.file.Files");
    fileOrDirectoryToCheck = Paths.get("c:\path\someFolder\", []);
    owner = Files.getOwner(fileOrDirectoryToCheck, []);
    writeDump("Owner: " & owner.getName());