Bagaimana cara menemukan semua file yang TIDAK memiliki izin SISTEM?

1

Saya melihat bahwa saya dapat menggunakan icaclsuntuk menemukan semua file yang cocok dengan SID, tetapi bagaimana cara menemukan semua file yang TIDAK memiliki akses untuk pengguna SISTEM?

ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
    finds all matching names that contain an ACL
    explicitly mentioning Sid.
Chloe
sumber

Jawaban:

1

Saya belum melakukan banyak pengujian, tetapi skrip PowerShell berikut harus berfungsi:

param([string]$path)

get-childitem $path -recurse | Foreach {
    $file=$_;get-acl $($_.FullName)} | Foreach {

    [bool]$SystemHasAccess = $false

    $_.GetAccessRules($True,$True,[Security.Principal.SecurityIdentifier]) | Foreach {
        if ($_.IdentityReference -eq "S-1-5-18") { $SystemHasAccess = $true }  # system sid
        if ($_.IdentityReference -eq "S-1-1-0") { $SystemHasAccess = $true }   # everyone sid                    
    }

    if ($SystemHasAccess -eq $false)
    {
       write-host "System has no access to $($file.FullName)"
    }
}

salin kode ke file, katakan "FindFilesWithoutSystemAccess.ps1", lalu panggil dengan menyediakan jalur yang ingin Anda cari:

FindFilesWithoutSystemAccess.ps1 -path C:\

Script loop melalui semua file di bawah path termasuk file dalam sub-direktori. Untuk setiap file itu loop melalui semua entri kontrol akses dalam daftar kontrol akses file. Jika tidak ada yang cocok dengan sisi internal sistem (S-1-5-18), ia mencetak nama lengkap file.

Ada kemungkinan bahwa file memiliki ACE untuk Sistem, tetapi itu adalah ACE tolak, yang berarti skrip di atas tidak menangkap file dan Sistem masih tidak dapat mengaksesnya. Namun skenario tidak mungkin dan Anda dapat menggunakan skrip yang mirip untuk menemukan file tersebut.

Peter Hahndorf
sumber
Saya berlari Set-ExecutionPolicy Unrestricted -Scope Processdan .\FindFilesWithoutSystemAccess.ps1 -path C:\cygwin\home\Chloememberikan kesalahan ini:.\FindFilesWithoutSystemAccess.ps1 : Access to the path 'C:\cygwin\home\Chloe\FindFilesWithoutSystemAccess.ps1' is denied. At line:1 char:1
Chloe
Itu sangat aneh! Setiap kali saya menyimpan file dengan ekstensi .ps1, itu menghapus izin pengguna saya! Saya dapat membuat tmp.ps1dalam editor teks, dan menyimpannya sekali, tetapi tidak lagi! Saya harus pergi dan memodifikasi properti file di Explorer untuk membaca / menulisnya lagi!
Chloe
Saya mendapat banyak get-childitem : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.kesalahan.
Chloe
Itu mati di get-acl : The specified wildcard character pattern is not valid: Purple Motion - Unreal ][.s3m At C:\cygwin\home\Chloe\FindFilesWithoutSystemAccess.ps1:4 char:14 + $file=$_;get-acl "$($_.FullName)"} . Saya mencoba menambahkan tanda kutip, tetapi itu tidak membantu.
Chloe
Beberapa file memiliki izin baca SEMUA ORANG. Bukankah itu berarti SISTEM dapat membacanya juga? icacls C:\Users\Chloe\Downloads\setup.logkembaliC:\Users\Chloe\Downloads\setup.log xps\Chloe:(R,W,D,WDAC,WO) xps\None:(R) Everyone:(R)
Chloe