2016-12-29 4 views
1

Я хочу выполнить R-скрипт на удаленном сервере. У меня есть сценарий, который запускается и запускается на сервере ... но как функция безопасности я хочу отключить манипуляции с файлами (думаю, file.create(), file.remove() и т. Д.)Отключить управление файлами в R?

Это возможное? Есть ли строка, которую я могу разместить в верхней части скрипта, или даже лучше, что я могу добавить в вызов командной строки, которая позволит файлу читать в локальном файле csv, но не может писать/изменять/удалить любой?

+4

Обычно вы бы справиться с этим с разрешениями на стороне ОС. Я не думаю, что существует способ реализации таких ограничений в R. – Roland

ответ

1

Рассмотрите возможность блокировки папок сервера для доступа только для чтения, в отличие от директивы уровня скрипта. И в Windows, это может быть сделано под безопасность вкладки под Свойства папки (меню правой кнопки мыши), где вы можете даже обозначают права доступа (разрешить/запретить) различных группы пользователей:

Security Windows Folders

только с Написать отказывался пользователь, любой 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

Смежные вопросы