2014-05-09 45 views
1

我正在爲一個小型辦公室(最多4個用戶)申請一個應用程序,所以我決定設置一個網絡共享文件夾並將我的Access數據庫放在那裏,併爲所有用戶提供訪問該網絡共享的權限。保護網絡共享訪問數據庫

問題是當我共享數據庫文件夾時,它暴露給所有人,所以任何有權訪問網絡的人都可以打開共享文件夾並刪除共享數據庫。

問題:我該如何保護它免於刪除?這樣即使有人連接到網絡並訪問數據庫文件.accdb,他也無法刪除它!

+2

給他們讀/寫/執行權限,但不能修改或完全控制。如果你在窗口,右鍵單擊,屬性,安全選項卡 – Scotch

+0

我已編輯你的標題。請參閱「[應該在標題中是否包含」標籤「](http://meta.stackoverflow.com/questions/19190/)」,其中共識是「不,他們不應該」。 –

回答

3

很簡單,你可以設置共享文件夾的權限,因爲所有的,你可以設置對數據庫文件的權限..

在這裏,我會告訴你如何做一個文件夾,並在同一推移對於一個文件,但是如果您對文件夾設置了權限,則不再需要在數據庫文件上設置權限,因爲它位於該文件夾中。

我會假設你已經共享文件夾「每個人」

左鍵單擊該文件夾 - >屬性

2-點擊安全標籤上 - - >選擇 「每個人」 - >點擊高級

3-單擊更改權限( 「Everyone」 組)

4-單擊Edit(對於 「Everyone」 組)

檢查所有箱中的 「允許」,除了完全控制,刪除子文件夾和文件,並刪除

enter image description here

6 - CLick好吧,你完成了,每個人都可以從數據庫中讀取/寫入,但沒有人有權刪除它..

要做到這一切在vb.net,你需要兩個命令,共享文件夾後,你可以使用.RemoveAccessRule刪除刪除權限

此代碼自動完成這一切,它的股票與大家(或者你想誰),並刪除刪除文件夾權限

Imports System.Management 
Imports System.Security.AccessControl 
Imports System.IO 
Imports System 

Public Class Form1 

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     Try 
      Dim PermissionsList As New List(Of SharePermissionEntry) 

      'Create a new permission entry for the Everyone group and specify that we want to allow them Read access 
      Dim PermEveryone As New SharePermissionEntry(String.Empty, "Everyone", SharedFolder.SharePermissions.Read, True) 
      Dim PermUser As New SharePermissionEntry("", "Everyone", SharedFolder.SharePermissions.FullControl, True) 

      'Add the two entries declared above to our list 
      PermissionsList.Add(PermUser) 
      PermissionsList.Add(PermEveryone) 

      'Share the folder as "Test Share" and pass in the desired permissions list 
      Dim Result As SharedFolder.NET_API_STATUS = _ 
      SharedFolder.ShareExistingFolder("Test Share", "This is a test share", "C:\Folder", PermissionsList) 

      Dim FolderPath As String = "C:\Folder" 'Specify the folder here 
      Dim UserAccount As String = "Everyone" 'Specify the user here 

      Dim FolderInfo As IO.DirectoryInfo = New IO.DirectoryInfo(FolderPath) 
      Dim FolderAcl As New DirectorySecurity 
      FolderAcl.AddAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow)) 
      FolderAcl.RemoveAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.DeleteSubdirectoriesAndFiles, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow)) 
      FolderAcl.RemoveAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.Delete, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow)) 
      FolderInfo.SetAccessControl(FolderAcl) 

      'Show the result 
      If Result = SharedFolder.NET_API_STATUS.NERR_Success Then 
       MessageBox.Show("Share created successfully!") 
      Else 
       MessageBox.Show("Share was not created as the following error was returned: " & Result.ToString) 
      End If 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 
    End Sub 
End Class 

不要忘記添加引用System.ManagementSystem.Management.Instrumentation,並添加這些模塊SharePermissionEntry.vbSharedFolder.vb項目

這就是它,希望這有助於!欲瞭解更多信息,請參閱LinkLink

+1

5星級的答案,非常感謝! –