Ситуация:

  • Две учетные записи пользователей, userA и userB
  • Обе учетные записи находятся на одной физической машине
  • Необходимо переместить файлы от пользователя A к пользователю B
  • Файлы не могут быть открыты (для Интернета / других пользователей, поэтому не могут использовать общедоступный каталог)
  • Нет доступа администратора
  • Желательно скриптовать и со встроенными Windows

Я пробовал:

  • Смесь copy и runas - либо есть права на получение, либо положить, но никогда не оба
  • Совместное использование папки - требуются учетные данные администратора

Это кажется тривиальной проблемой, но поиск в большинстве случаев связан с переносом между разными компьютерами, или для метода переноса требуется доступ администратора.

2 ответа2

2

Объединение комментариев и обсуждения в ответ:

У вас может быть папка на локальном компьютере вне папок пользователя, например, в корневом каталоге диска C:, к которому оба пользователя имеют доступ.

В папке есть вкладка "Безопасность" (щелкните ее правой кнопкой мыши и выберите "Свойства"), которая позволит вам установить разрешения для папки, предоставляя доступ только тем пользователям, которым вы хотите иметь доступ. Удалите всех пользователей и группы из списка, затем добавьте только тех пользователей, к которым вы хотите иметь доступ, с установленными опциями "Разрешить". Все остальные пользователи будут отклонены по умолчанию.

Чтобы сделать это автоматически из CLI, вы можете попробовать использовать VBScript. Первая ссылка ниже показывает, как это можно сделать, а вторая ссылка показывает немного другой способ, но с дополнительным объяснением того, какие варианты доступны.

https://social.technet.microsoft.com/Forums/windows/en-US/ac1bb931-c641-4784-b5f0-3fa77a9a984b/add-permissions-to-a-ntfs-folder-using-vbscript?forum=itproxpsp

https://www.symantec.com/connect/downloads/vbscript-grant-permission

Я включил фрагмент кода из 2-й ссылки здесь:

Dim oShell, FoldPerm, Calcds, oFSO

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")

sSysDir = oFSO.GetSpecialFolder(1).Path
If Right(sSysDir,1) <> "\" Then sSysDir = sSysDir & "\"

Calcds = sSysDir & "cacls.exe" 

'Chang The folder Name, User and Access rights in the following line of code  

FoldPerm = """" & Calcds &"""" & """C:\MyFolder""" & " /E /T /C /G " & """Power Users""" & ":C" 

oShell.Run FoldPerm, 1 ,True

У меня нет способа проверить это прямо сейчас, но я предполагаю, что что-то, перечисленное отдельно на сайтах Microsoft и Symantec, с хорошими отзывами в каждом посте, было бы как минимум хорошим направлением для подражания.

0

"Нет доступа администратора". Итак, я полагаю, что вы можете войти как каждый из пользователей?

Предполагая так:

  1. Войти как пользователь A
  2. Щелкните правой кнопкой мыши папку, к которой вы хотите предоставить доступ.
  3. Выберите вкладку Безопасность
  4. Нажмите кнопку Добавить
  5. Введите имя пользователя B и нажмите кнопку "Найти", чтобы убедиться, что оно совпадает (убедитесь, что выбран локальный компьютер, если он находится в домене).
  6. Нажмите ОК
  7. Установите для пользователя права "FULL"
  8. Нажмите ОК
  9. Повторите шаги с 1 по 8, войдя в систему как пользователь B и добавив пользователя A

Выполнив вышеизложенное, пользователи смогут передавать файлы между своими папками по своему усмотрению.

Затем вы можете войти в систему любого пользователя и запустить скрипт, который копирует файлы непосредственно из одной папки в другую.

Простой способ создания сценария копирования папки таким образом, чтобы содержимое было синхронизировано следующим образом (обратите внимание, что в зависимости от версии Windows параметр «/DCopy:DAT» может потребоваться изменить на «/DCOPY:T» или удалить его). полностью):

REM Copy User A to User B:
  Robocopy "C:\Users\UserA\Documents\Folder" "C:\Users\UserB\Documents\Folder" * /S /E /ZB /NP /IT /XJ /DCopy:DAT 

REM Copy User B to User A:
  Robocopy "C:\Users\UserB\Documents\Folder" "C:\Users\UserA\Documents\Folder" * /S /E /ZB /NP /IT /XJ /DCopy:DAT 

Вы можете сохранить вышеупомянутое в текстовом файле, названном чем-то соответствующим, таким как "SyncUserAandB.cmd"

(Примечание. При сохранении файла вам нужно будет выбрать формат "ВСЕ" в раскрывающемся списке типов, или блокнот добавит «.txt» в файл, который будет скрыт, если вы посмотрите на него в проводнике, если вы не включите его. off "скрыть расширения файлов для известных типов")

Затем пользователь может запустить файл, или вы можете создать запланированную задачу Windows в качестве любого пользователя, который будет запускать файл с интервалом по вашему выбору.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .