2016-12-29 56 views
1

我想在遠程服務器上執行R腳本。我有一個腳本運行,並將在服務器上運行...但作爲一個安全功能,我想禁用文件操作(think file.create(),file.remove()等)在R中禁用文件操作?

這是可能?是否有一行我可以放在腳本的頂部,或者更好,我可以添加到命令行調用,這將允許該文件能夠從本地csv文件讀取,但不能寫入/修改/刪除任何?

+4

通常你會與操作系統方面的權限處理這個問題。我不認爲有一個可行的方式在R. – Roland

回答

1

考慮鎖定服務器文件夾以進行只讀訪問而不是腳本級指令。

Security Windows Folders

:而在Windows中,這可以在安全選項卡下的文件夾的屬性(右鍵菜單),您甚至可以候訪問權限(允許/拒絕)由不同的用戶羣體做只有拒絕的用戶,任何file manipulation method將引發一個警告FALSE價值,但不是錯誤

file.create("C:\\Path\\To\\Read-Only\\Folder\\NewFile.txt") 
# [1] FALSE 
# Warning message: 
# In file.create("C:\\Path\\To\\Read-Only\\Folder\\NewFile.txt") : 
# cannot create file 'C:\\Path\\To\\Read-Only\\Folder\\NewFile.txt', reason 'Permission denied' 

file.rename("C:\\Path\\To\\Read-Only\\Folder\\CurrentFile.txt", 
      "C:\\Path\\To\\Read-Only\\Folder\\CurrentFile.txt") 
# [1] FALSE 

file.copy("C:\\Path\\To\\Read-Only\\Folder\\CurrentFile.txt", 
      "C:\\Path\\To\\Read-Only\\Folder\\NewFile.txt") 
# [1] FALSE 
# Warning message: 
# In file.create("C:\\Path\\To\\Read-Only\\Folder\\NewFile.txt") : 
# cannot create file 'C:\\Path\\To\\Read-Only\\Folder\\NewFile.txt', reason 'Permission denied' 

而且用戶仍然可以讀取文件沒有任何錯誤:

con <- file(description="C:\\Path\\To\\Read-Only\\Folder\\CurrentFile.txt", open="r") 
close(con) 

df <- read.table("C:\\Path\\To\\Read-Only\\Folder\\CurrentFile.txt") 
+0

中實施此類限制。謝謝。這有助於。問題是,我正在使用專用於自動化的服務器。有沒有辦法在R腳本調用期間在命令行上調用這種類型的東西?文件仍然需要能夠寫入其他作業,我只是想要限制它,只要這個動作被調用。 – user3739091

+0

或者這是一種可以在操作系統端專門爲R做的事情嗎? – user3739091

+0

考慮用代碼中的if語句有條件地包裝動作。用戶運行腳本可能沒有管理權限來限制讀/寫權限。你也不想離開應用程序來處理文件系統訪問和安全性。 – Parfait