2012-08-03 48 views
0

我不確定這是否適合這樣的問題(可能應該放置在超級用戶?),但我會嘗試。在Windows服務和控制檯應用程序之間共享目錄權限

我有一個C#控制檯應用程序和一個Windows服務。兩者都是一樣的,但控制檯應用程序之前已創建,並保持向後兼容性。其中每個都運行WCF服務,其方法在C:\ ProgramData \ MyApp中的文件上運行。控制檯應用程序作爲受限用戶(非管理員)運行,Windows服務作爲NT AUTHORITY \ NETWORK SERVICE運行。當應用程序創建一些目錄/文件時,服務無法刪除它,反之亦然。

我想保護它。我的問題是:我應該將C:\ ProgramData \ MyApp的全部權限授予NETWORK SERVICE和當前用戶嗎?或者我應該創建專用用戶來運行服務/應用程序?

回答

1

假設您的應用程序未對新創建的文件設置明確的安全權限,授予網絡服務帳戶對文件夾的刪除權限將解決您的直接問題。

此命令將做的工作:

icacls c:\ProgramData\MyApp /t /grant "NETWORK SERVICE":(OI)(CI)(IO)D 

重複同樣爲您的其他用戶服務帳戶。

+0

這是比創建Windows用戶「MyAppUser」更安全的方法,授予他對目錄c:\ ProgramData \ MyApp的完整權限並使用此用戶的帳戶(而不是NETWORK SERVICE)運行服務/應用程序? – myszor 2012-08-04 07:32:17

+0

服務的最安全配置總是創建一個特殊的用戶帳戶,並授予此帳戶足夠的權限才能工作,而不僅限於此。但是,您需要小心,不要授予他們所需的更多權限。例如。如果你讓你的管理員組的服務帳戶成員破壞了特殊帳戶的目的。在很多情況下,像LocalService或NetworkService這樣的內置帳戶就足夠了。 – 2012-08-05 03:08:19

相關問題