Mam użytkownika w domenie, który ma dostęp do wielu podfolderów w wielu folderach. Jego prawa zostały określone bardzo szczegółowo. Teraz odchodzi z firmy, ale nadal będzie pracował dla firmy jako zakontraktowany zasób.
Muszę znaleźć wszystkie foldery, do których miał dostęp, i odwołać jego uprawnienia, a następnie skonfigurować go z innym zestawem uprawnień dostępu.
Czy jest jakieś narzędzie (najlepiej darmowe), które wyświetla listę wszystkich uprawnień NTFS dla danego użytkownika? Próbowałem z AccessEnum od Sysinternals, ale listy nie można filtrować według nazwy użytkownika i jest dla mnie bezużyteczna. Patrzyłem też na CACLS, ale o ile wiem, wyświetla uprawnienia uporządkowane według pliku, a nie użytkownika.
Jakieś pomysły?
windows
permissions
ntfs
users
imagodei
źródło
źródło
Odpowiedzi:
Wydaje się, że to załatwia sprawę (być może z zastrzeżeniem), aby znaleźć wszystkie foldery, do których użytkownik „someuser” ma dostęp, w tym przykładzie na dysku C, za pomocą wbudowanego polecenia icacls systemu Windows:
Opcja / t jest potrzebna, aby nakazać powtarzanie katalogów. / C jest potrzebne, aby powiedzieć mu, aby kontynuował pracę, nawet jeśli napotka błędy. / L sprawia, że działa z dowiązaniami symbolicznymi (jeśli istnieją). (Ten ostatni to L, a te flagi mogą być pisane wielkimi lub małymi literami.)
*.
Będą rozpoznawane przez DOS weteranów jako sposób powiedzieć „szukać katalogów, nie Files”. Oczywiście, jeśli chcesz znaleźć pliki, a nie foldery, zmień je*.*
i oczywiście możesz wskazać dowolny dysk lub uruchomić go z dowolnego folderu i pozostawić ścieżkę do dysku / folderu i pozwolić na wyszukiwanie względem tego tylko folder.Szukałem tej samej odpowiedzi co OP i znalazłem ten wpis, ale byłem zaskoczony, gdy zobaczyłem tylko ofertę opartą na narzędziu do pobrania. Podobnie jak inni, wolałem używać czegoś wbudowanego i znalazłem to w tym narzędziu icacls.
Potwierdziłem, że działa on w systemach Windows Server 2012, 2008 i Windows 7, więc podejrzewam, że zadziała również w Server 2003, Windows 8 i tak dalej.
Wynikowa lista to foldery wskazane wiersz po wierszu, takie jak:
Znaleziono SID: c: \ somedir \ somesubdir.
Pamiętaj, że jeśli uruchomisz to jako użytkownik, który sam nie ma uprawnień do przeglądania niektórych katalogów, w wynikach pojawią się błędy, takie jak:
c: \ Informacje o woluminie systemowym: Odmowa dostępu.
A jeśli przeszukujesz cały dysk, może to spowodować setki takich błędów, co utrudni znalezienie w nich wyników.
Niektórzy mogą myśleć, że odpowiedzią jest uruchomienie wiersza poleceń jako administrator, ale to po prostu spowoduje, że pojawi się o wiele więcej takich błędów, ponieważ będziesz teraz przeglądał foldery, które wcześniej były ukryte.
Teraz, jeśli chciałbyś ukryć te błędy, nie będziesz w stanie użyć polecenia find do potokowania tylko tych wyników, które się powiedzie (te, które odnoszą się do „SID znaleziono”), ponieważ błędy NIE zostaną odfiltrowane za pomocą potoku do polecenia find. Zamiast tego, jeśli chcesz usunąć wszystkie błędy, musisz użyć dość niejasnej sztuczki przekierowania strumienia błędów (stderr) do „segmentu bitów” za pomocą
2>nul:
. Tak więc powyższy przykład wyglądałby następująco:Uważaj tylko, że niektóre foldery, które generowały takie błędy, których błędy są teraz ukryte, mogą równie dobrze być folderami, do których ma dostęp tzw. „Someuser”, ale NIE TY. Możesz więc zastanowić się dwa razy, po prostu ignorując te błędy. ale jeśli chcesz, możesz to zrobić.
Zdaję sobie sprawę, że ta możliwość potencjalnie ogranicza wartość tej odpowiedzi. Jeśli ktoś bardziej zaznajomiony z rzeczami chciałby rozwinąć lub poprawić moją odpowiedź, z zadowoleniem ją przyjmę.
źródło
Możesz używać PowerShell bez konieczności pobierania czegokolwiek innego. Będzie to działać z wersją 2.0 i nowszą:
To nie jest tak czyste, jak to, co jest dostępne z PowerShell v3 i więcej, ale będzie działać. Spowoduje to wyświetlenie listy katalogów znalezionych w formacie łańcuchowym.
Możesz z łatwością wyprowadzać je jako obiekty i kontynuować pracę z nimi (wyeksportować je do pliku CSV, usunąć wpisy, gdy je znajdziesz, zaktualizować bilet z informacjami ... itd.), Manipulując obiektem wejściowym Write- Połączenia wyjściowe.
źródło
if ($ACL.IdentityReference -like $ReferenceAccountName -and !$ACL.IsInherited){
Znalazłem rozwiązanie mojego własnego pytania. Uważam, że jest bardzo prosty i czysty. Musisz tylko zainstalować subinacl i uruchomić jeden wiersz z wiersza polecenia.
Możesz pobrać subinacl tutaj . Chociaż jest oficjalnie obsługiwany tylko w systemach Windows 2000, Windows XP i Windows Server 2003, powinien również działać w systemach Windows Vista, Windows Server 2008 i Windows 7.
Następnie uruchom następujące polecenie w wierszu polecenia:
Gdzie X: to dysk, który skanujesz, a nazwa użytkownika to użytkownik, którego uprawnienia chcesz wyświetlić. Skanowanie może zająć trochę czasu, a wyniki zostaną wyświetlone w pliku TEXTFILENAME.TXT.
Jeśli użyjesz przełącznika / noverbose , otrzymasz zwartą listę uprawnień dostępu - w zasadzie widać, do których katalogów użytkownik ma dostęp (z maskami dostępu i innymi rzeczami, które mogą się czasem przydać).
Użyłem OpenOffice Calc do zaimportowania listy, a następnie zastosowałem Filtr niestandardowy i przefiltrowałem tylko dla tych linii zaczynających się od + FILE . Te wiersze zawierają katalogi, do których użytkownik ma dostęp. W ten sposób za pomocą prostych narzędzi uzyskujesz tylko istotne informacje.
Ponieważ dziedziczenie jest często włączone w katalogach nadrzędnych, faktyczna liczba katalogów, które trzeba odwiedzić, aby dostosować uprawnienia, jest zwykle znacznie niższa niż sama lista.
źródło