58

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

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

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

2 ответа2

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

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

    Computer configuration → Windows Settings Security Settings → Local Policies → User Rights Assignment и редактирование Create symbolic links .

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

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

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

0

В некоторых конфигурациях Windows отсутствует 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 чтобы немедленно применить изменения

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