Разрешение на создание символических ссылок в Windows 7?

60

Как я могу предоставить конкретному пользователю разрешение на создание символических ссылок в Windows 7?

Я искал через "Групповую политику" и Google, но ничего не нашел.

Кстати, есть ли способ найти все в редакторе групповой политики? Фильтры работают только на определенных поддеревьях. Я на самом деле ничего не нашел с помощью фильтров.

KarolDepka
источник
2
Кстати, кто-нибудь знает, почему создание символических ссылок требует прав администратора? Что в них такого опасного?
Монсеньор
1
@Monsignor: я давно видел, что Microsoft утверждала, что слишком много программ не могут справиться с ними безопасно. Во всяком случае, я довольно раздражен тем, что им требуется высота для использования.
Джошуа

Ответы:

64
  1. Откройте редактор локальной групповой политики : Run> gpedit.msc. Если это не сработает, попробуйте secpol.msc(обратите внимание, пользователям Windows Home может понадобиться сначала включить редактор групповой политики ).

  2. Перейдите к (пользователи Windows Pro могут не увидеть первые два элемента):

    Computer configuration → Windows SettingsSecurity Settings → Local Policies → User Rights Assignmentи отредактируйте Create symbolic links.

    введите описание изображения здесь

  3. Добавьте пользователя или группу, которую вы хотите разрешить создавать символические ссылки.

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

Примечание . Этот параметр не влияет на учетные записи пользователей, принадлежащих к группе администраторов. Этим пользователям всегда придется работать mklinkв среде с повышенными правами (от имени администратора) из-за способа, которым UAC удаляет привилегии при создании токена без повышенных прав доступа . Существует удобный справочный лист Excel для поиска параметров групповой политики: Справочник по параметрам групповой политики для Windows и Windows Server

Дано
источник
13
Здесь это выглядело больше как следующее, просто для справки, если кто-то запутался: Панель управления> Администрирование> Локальная политика безопасности> Локальные политики> Назначение прав пользователя> Создание символических ссылок И, кстати, вам нужно выйти и снова войти в систему для настроек применять.
Seldaek
5
И вы можете запустить secpol.msc, чтобы пропустить первую часть, а затем все, что вам осталось, это: Локальные политики> Назначение прав пользователя> Создание символических ссылок
Seldaek
5
Также: запуск «gpupdate / force» из CMD или просто из диалогового окна «Выполнить» также должен применить эту настройку.
Тобиас Плутат
1
Любой способ сделать то же самое через реестр для пользователей Microsoft-ненавистных не-Windows-8-Pro? gpedit.msc не доступен для них
szx
4
re - «Эти пользователи всегда должны запускать mklink в среде с повышенными правами (от имени администратора)» ... поэтому администраторам всегда приходится работать с повышенными правами ... arg.
Тревор Бойд Смит
0

Некоторые конфигурации окон отсутствуют gpedit.msc. В этом случае Вы можете попробовать в качестве альтернативы:

  1. запустить этот скрипт PowerShell отсюда :
    function addSymLinkPermissions($accountToAdd){
        Write-Host "Checking SymLink permissions.."
        $sidstr = $null
        try {
            $ntprincipal = new-object System.Security.Principal.NTAccount "$accountToAdd"
            $sid = $ntprincipal.Translate([System.Security.Principal.SecurityIdentifier])
            $sidstr = $sid.Value.ToString()
        } catch {
            $sidstr = $null
        }
        Write-Host "Account: $($accountToAdd)" -ForegroundColor DarkCyan
        if( [string]::IsNullOrEmpty($sidstr) ) {
            Write-Host "Account not found!" -ForegroundColor Red
            exit -1
        }
        Write-Host "Account SID: $($sidstr)" -ForegroundColor DarkCyan
        $tmp = [System.IO.Path]::GetTempFileName()
        Write-Host "Export current Local Security Policy" -ForegroundColor DarkCyan
        secedit.exe /export /cfg "$($tmp)" 
        $c = Get-Content -Path $tmp 
        $currentSetting = ""
        foreach($s in $c) {
            if( $s -like "SECreateSymbolicLinkPrivilege*") {
                $x = $s.split("=",[System.StringSplitOptions]::RemoveEmptyEntries)
                $currentSetting = $x[1].Trim()
            }
        }
        if( $currentSetting -notlike "*$($sidstr)*" ) {
            Write-Host "Need to add permissions to SymLink" -ForegroundColor Yellow

            Write-Host "Modify Setting ""Create SymLink""" -ForegroundColor DarkCyan

            if( [string]::IsNullOrEmpty($currentSetting) ) {
                $currentSetting = "*$($sidstr)"
            } else {
                $currentSetting = "*$($sidstr),$($currentSetting)"
            }
            Write-Host "$currentSetting"
        $outfile = @"
    [Unicode]
    Unicode=yes
    [Version]
    signature="`$CHICAGO`$"
    Revision=1
    [Privilege Rights]
    SECreateSymbolicLinkPrivilege = $($currentSetting)
    "@
        $tmp2 = [System.IO.Path]::GetTempFileName()
            Write-Host "Import new settings to Local Security Policy" -ForegroundColor DarkCyan
            $outfile | Set-Content -Path $tmp2 -Encoding Unicode -Force
            Push-Location (Split-Path $tmp2)
            try {
                secedit.exe /configure /db "secedit.sdb" /cfg "$($tmp2)" /areas USER_RIGHTS 
            } finally { 
                Pop-Location
            }
        } else {
            Write-Host "NO ACTIONS REQUIRED! Account already in ""Create SymLink""" -ForegroundColor DarkCyan
            Write-Host "Account $accountToAdd already has permissions to SymLink" -ForegroundColor Green
            return $true;
        }
    }
  1. скачать polsedit, который выглядит как бесплатная альтернатива gpedit.msc

Затем запустите, gpupdate /forceчтобы применить изменения немедленно

Никита Малявин
источник
1
Помимо предоставления источника. пожалуйста, добавьте скрипт, если источник больше не присутствует.
miroxlav
Windows Starter Edition, Home и Home Premium не включают gpedit.msc. Инструкции по его установке есть в моем вопросе и ответе Windows Starter Edition, Home и Home Premium не включают gpedit, как мне его установить?
DavidPostill