ได้รับอนุญาตให้สร้างลิงก์สัญลักษณ์ใน Windows 7 หรือไม่


59

ฉันจะให้สิทธิ์ผู้ใช้ในการสร้าง symlink ใน Windows 7 ได้อย่างไร

ฉันค้นหาผ่าน "นโยบายกลุ่ม" และ Google แล้ว แต่ไม่พบอะไรเลย

ในหมายเหตุด้านข้างมีวิธีการค้นหาทุกอย่างในตัวแก้ไขนโยบายกลุ่มหรือไม่ ตัวกรองดูเหมือนว่าจะทำงานเฉพาะกับทรีย่อยเท่านั้น ฉันไม่เคยพบสิ่งใดเลยโดยใช้ตัวกรอง


2
BTW ไม่มีใครรู้ว่าทำไมการสร้าง symlink ต้องมีสิทธิ์ผู้ดูแลระบบหรือไม่ มีอันตรายอะไรในพวกเขา
พระคุณเจ้า

1
@Monignor: ฉันเห็นมานานแล้วว่า Microsoft อ้างว่ามีโปรแกรมมากเกินไปไม่สามารถจัดการได้อย่างปลอดภัย อย่างไรก็ตามฉันค่อนข้างรำคาญว่าพวกเขาต้องการระดับความสูงที่จะใช้
โจชัว

คำตอบ:


63
  1. เปิดตัวแก้ไขนโยบายกลุ่มท้องถิ่น : >Run gpedit.mscหากไม่ได้ผลลองsecpol.msc(หมายเหตุผู้ใช้Windows Homeอาจต้องเปิดใช้งาน group-policy-editorก่อน)

  2. ไปที่ (ผู้ใช้ Windows Pro อาจไม่เห็นสองรายการแรก):

    Computer configuration → Windows Settings→ และแก้ไขSecurity Settings → Local Policies → User Rights AssignmentCreate symbolic links

    ป้อนคำอธิบายรูปภาพที่นี่

  3. เพิ่มผู้ใช้หรือกลุ่มที่คุณต้องการอนุญาตให้สร้างลิงก์สัญลักษณ์

  4. หากคุณเพิ่มบัญชีผู้ใช้ของคุณเองคุณต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล

หมายเหตุ : การตั้งค่านี้ไม่มีผลกับบัญชีผู้ใช้ที่อยู่ในกลุ่มผู้ดูแลระบบ ผู้ใช้เหล่านั้นจะเสมอต้องทำงานmklinkในสภาพแวดล้อมที่สูง (เป็นผู้ดูแลระบบ) เนื่องจากวิธีการที่ UAC เอาสิทธิพิเศษเมื่อมีการสร้างโทเค็นการเข้าถึงที่ไม่สูง มีเอกสารอ้างอิง Excel ที่มีประโยชน์สำหรับการค้นหาการตั้งค่านโยบายกลุ่ม: การอ้างอิงการตั้งค่านโยบายกลุ่มสำหรับ Windows และ Windows Server


12
ที่นี่มีลักษณะเหมือนดังต่อไปนี้เพียงเพื่อการอ้างอิงถ้ามีคนสับสน: แผงควบคุม> เครื่องมือการดูแลระบบ> นโยบายความปลอดภัยในพื้นที่> นโยบายท้องถิ่น> การกำหนดสิทธิ์ผู้ใช้> สร้างลิงก์สัญลักษณ์และโดยวิธีที่คุณต้องการออกจากระบบ เพื่อนำไปใช้.
Seldaek

5
และคุณสามารถเรียกใช้ secpol.msc เพื่อข้ามส่วนแรกจากนั้นทั้งหมดที่คุณเหลือคือ: นโยบายท้องถิ่น> การกำหนดสิทธิ์ผู้ใช้> สร้างลิงก์สัญลักษณ์
Seldaek

5
นอกจากนี้: การเรียกใช้ "gpupdate / force" จาก CMD หรือเพียงแค่ไดอะล็อก Run ควรใช้การตั้งค่าเช่นกัน
Tobias Plutat

1
มีวิธีใดในการทำเช่นเดียวกันผ่านรีจิสตรีสำหรับผู้ใช้ Microsoft-hated-non-Windows-8-Pro gpedit.msc ไม่สามารถใช้ได้สำหรับพวกเขา
szx

4
อีกครั้ง - "ผู้ใช้เหล่านั้นจะต้องเรียกใช้ mklink ในสภาพแวดล้อมที่ยกระดับ (ในฐานะผู้ดูแลระบบ)" ... ดังนั้นผู้ดูแลระบบจึงต้องเรียกใช้ด้วยระดับสูง ... arg
Trevor Boyd Smith

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.