1

Я не очень разбираюсь в разрешениях Windows, но есть ли способ дать сценарию или приложению разрешение на создание символических ссылок, которые ссылаются только внутри дерева каталогов и говорят, что приложение "владеет"? (Ссылки живут в дереве. Так же как и цели.)

Примечание: я не хочу давать права администратора скрипта.

2 ответа2

0

Обычный пользователь не требует каких-либо специальных разрешений для создания соединений (которые очень похожи на символические ссылки в каталогах).

Вы можете убедиться в этом сами, открыв командную строку (без повышенных прав ), и набрав mklink /j <link> <target> (заменив ссылку и имена целей любым каталогом, который вы хотите). Вы увидите, что эта команда выполнена успешно, даже если у вас нет прав администратора. Однако вы по-прежнему не сможете использовать ссылку, если у вас нет прав доступа к цели.

Просто используйте команду mklink в скрипте, и она будет работать нормально.

0

Ничего не встроено, извини. Вы можете предоставить пользователю, который запускает процесс (будь то себе или какой-либо другой учетной записи), привилегию SeSymbolicLink, которая позволит создавать символические ссылки, не предоставляя другой доступ на уровне администратора. Символьные ссылки можно было бы создавать только там, где эта учетная запись могла бы создать файл, и обычные проверки доступа по-прежнему будут применяться (если символическая ссылка указывает на файл, который вы можете прочитать, но не записать, вы сможете прочитать его через символическую ссылку, но все равно не смогу написать в него). Надеюсь, это достаточно безопасно; единственная причина, по которой символические ссылки вообще требуют специальных привилегий в Windows, заключается в том, что они не были доступны до Vista, поэтому многие устаревшие программы не обрабатывают их должным образом, особенно для таких вещей, как зацикливание каталогов или другие подобные плохие идеи.

Чтобы разрешить данному пользователю создавать символические ссылки (предоставив пользователю SeSymbolicLinkPrivilege), выполните следующие действия:

  1. Запустите редактор локальной политики безопасности (secpol.msc). Это потребует доступа администратора.
  2. Смотрите в разделе "Локальные политики" -> "Назначение прав пользователя". Найдите запись "Создать символические ссылки".
  3. Дважды щелкните запись, чтобы открыть ее, затем нажмите [Add User or Group...] .
  4. В появившемся окне введите свое имя пользователя Windows и нажмите [Check Names] . Оно должно измениться на полное имя с подчеркиванием. Если это не так, вы должны попробовать другие формы имени пользователя. Вы также можете нажать [Advanced] чтобы найти список параметров.
  5. Как только имя пользователя будет подчеркнуто в поле, нажмите [OK] в окне "Выбор пользователей и групп", затем нажмите [OK] в окне "Создать свойства символической ссылки".
  6. Если соответствующий пользователь вошел в систему, выйдите из системы и войдите снова. Этот пользователь теперь должен иметь возможность создавать символические ссылки без необходимости прав администратора.

Другой вариант - использовать жесткие ссылки NTFS. В отличие от символических ссылок, любой пользователь может создать жесткую ссылку (по умолчанию). Однако, в отличие от символических ссылок (и в отличие от жестких ссылок POSIX), вы не можете создать жесткую ссылку, если у вас нет специального разрешения (Запись атрибутов? Что-то в общей категории "Запись") в файле назначения. Таким образом, если вам нужно только связать файлы (не каталоги), и у вас есть доступ на запись к рассматриваемым файлам, вы, вероятно, можете использовать жесткие ссылки очень хорошо (они работают как жесткие ссылки POSIX, следуя узлу файла, а не имени файла, и Если вы удалите "оригинальный файл", но не ссылку, данные не будут удалены, пока вы также не удалите ссылку).

Если вам тоже нужна ссылка на каталог, вы можете - как рекомендует @WesSayeed - использовать NTFS junctioons. Их сложнее создать программно (хотя и легко из сценария), но они отлично работают для большинства целей, для которых вы обычно можете использовать символическую ссылку каталога.

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