删除在 SQL 服务器中创建的文件夹时访问被拒绝
Access denied when deleting folders created in SQL Server
我正在使用 xp_cmdshell 创建目录,但由于权限原因我无法删除它们,我什至无法看到文件夹的所有者。
我必须进入安全模式才能删除文件夹。
我正在使用 SQL Server 2008。
我假设这是一个 ACL 问题。
使用 xp_cmdshell
创建的目录归 SQL 服务器(服务帐户)所有,其访问权限继承自父级。
如果您必须在创建目录后修改目录的内容,则必须:
- 在另一个已经拥有 good 访问权限的目录中创建您的目录。
- 或在其创建后授予更多权限(使用
xp_cmdshell
和 icacls
来操作 ACL)
例如,将以下代码段中的 domain\group
& d:\folder_path
更改为适合您的任何内容,以授予组(您的用户、管理员等...)对目录的完全控制权:
exec xp_cmdshell 'icacls "d:\folder_path" /grant "domain\group":(f)'
危险,威尔·罗宾逊,危险!
从几个角度来看,这听起来可能并不理想 - 安全性、面向未来和可扩展性。假设其中 none 是您代码的优先级,请继续使用 Edgard 的回答。
否则,我会质疑任何具有 DBMS(直接)在文件系统中写入文件夹的设计。我不怀疑你有你的理由,只是有一些非常大但非常不明显的风险不会咬你,直到你已经致力于课程。无论您在做什么,都可能有风险更小、更直接的方法。
我正在使用 xp_cmdshell 创建目录,但由于权限原因我无法删除它们,我什至无法看到文件夹的所有者。 我必须进入安全模式才能删除文件夹。 我正在使用 SQL Server 2008。
我假设这是一个 ACL 问题。
使用 xp_cmdshell
创建的目录归 SQL 服务器(服务帐户)所有,其访问权限继承自父级。
如果您必须在创建目录后修改目录的内容,则必须:
- 在另一个已经拥有 good 访问权限的目录中创建您的目录。
- 或在其创建后授予更多权限(使用
xp_cmdshell
和icacls
来操作 ACL)
例如,将以下代码段中的 domain\group
& d:\folder_path
更改为适合您的任何内容,以授予组(您的用户、管理员等...)对目录的完全控制权:
exec xp_cmdshell 'icacls "d:\folder_path" /grant "domain\group":(f)'
危险,威尔·罗宾逊,危险!
从几个角度来看,这听起来可能并不理想 - 安全性、面向未来和可扩展性。假设其中 none 是您代码的优先级,请继续使用 Edgard 的回答。
否则,我会质疑任何具有 DBMS(直接)在文件系统中写入文件夹的设计。我不怀疑你有你的理由,只是有一些非常大但非常不明显的风险不会咬你,直到你已经致力于课程。无论您在做什么,都可能有风险更小、更直接的方法。