Aby rozpocząć operacje na grupach w systemie Windows Server, należy poznać kilka podstawowych pojęć dotyczących tego zagadnienia. Dodatkowo w lekcji tej wprowadzone zostaną polecenia stosowane w programie PowerShell, które ułatwiają zarządzanie grupami oraz innymi obiektami.
1. Definicja grupy.
Grupa jest jednostką administracyjną w usłudze Active Directory, tworzoną w celu nadania określonych uprawnień dostępu do zasobów systemu oraz umieszczenia w niej różnych obiektów.
2. Kategorie grup – typy.
– grupa dystrybucyjna – nie można jej przypisywać uprawnień ani zabezpieczeń i służy do dystrybuowania wiadomości e-mail,
– grupa zabezpieczeń – służy do przyznawania uprawnień do obiektów (posiada też możliwości grupy dystrybucyjnej).
3. Rodzaje grup zabezpieczeń.
– globalne – nie mogą zawierać członków innych domen, ale ich członkom można nadać dostęp do zasobów z innych domen,
– uniwersalne – mogą należeć do niej grupy uniwersalne, globalne oraz obiekty z dowolnej domeny i można jej przypisać uprawnienia do obiektów z różnych domen,
– lokalne w domenie – do takiej grupy mogą należeć obiekty i grupy globalne z dowolnej domeny, ale nie może być ona członkiem grupy globalnej. Natomiast uprawnienia można przypisywać do obiektów z tej samej domeny.
4. Praktyczny przykład zastosowania grup.
Załóżmy, że w firmie mamy 10 użytkowników i chcemy, aby każdy z nich miał dostęp do tej samej drukarki, a potem do kolejnej, nowej drukarki.
Sposób 1:
– wszystkie 10 kont użytkowników umieszczamy na liście uprawnień do pierwszej drukarki,
– gdy dostaniemy nową drukarkę, czynność musimy powtórzyć.
Sposób 2:
– tworzymy grupę lokalną w domenie i przypisujemy tej grupie dostęp do drukarki,
– tworzymy grupę globalną i tam „wrzucamy” naszych 10 użytkowników,
– naszą grupę globalną przypisujemy do grupy lokalnej i wszyscy nasi użytkownicy mają dostęp do drukarki,
– gdy pojawi się nowa drukarka, wystarczy grupie lokalnej nadać do niej dostęp, a nasi użytkownicy z grupy globalnej będą mogli z niej korzystać.
5. Polecenia służące do zarządzania grupami i obiektami stosowane w programie PowerShell:
– dsmod – służy do modyfikowania obiektów, np. do dodawania użytkownika do grupy,
– dsquery – służy do przeszukiwania katalogu LDAP w celu znalezienia obiektów, które spełniają określone kryteria,
– dsget – służy do wyświetlania właściwości ogólnych i szczegółowych danego obiektu.
Aby utworzyć nową grupę w domenie, należy wybrać z menu „Menedżera serwera” opcję „Narzędzia”, a następnie „Użytkownicy i komputery usługi Active Directory”.
Następnie zaznaczamy kontener lub jednostkę organizacyjną, gdzie będziemy tworzyć grupę, i klikając prawym przyciskiem myszy (PPM), wybieramy opcję „Nowy”, a potem „Grupa”.
Podajemy nazwę grupy oraz określamy jej typ i zakres. U nas będzie to grupa zabezpieczeń o zakresie lokalnym o nazwie Klasa2. Wprowadzamy nazwę i naciskamy „OK”.
Możemy teraz sprawdzić, czy nasza grupa została utworzona w kontenerze Users.
Zaznaczamy teraz naszą grupę i klikając ją prawym przyciskiem myszy (PPM), wybieramy „Właściwości”. Przechodzimy do zakładki „Członkowie” i widzimy, że nasza grupa nie ma żadnych członków. Jest to zrozumiałe, ponieważ jest to nowy obiekt, który został przed chwilą utworzony. Klikając opcję „Dodaj…”, możemy uczynić wybrane obiekty członkami tej grupy.
Po kliknięciu przycisku „Dodaj” pojawia nam się okno, w którym wyszukujemy użytkownika James JB. Bond i dodajemy go do naszej grupy. Najpierw wpisujemy np. imię, następnie klikamy „Sprawdź nazwy”, a potem wybieramy właściwego użytkownika i klikamy „OK”.
Jeśli nazwa naszego użytkownika się zgadza, klikamy jeszcze raz „OK”.
I widzimy, że nasz obiekt jest już członkiem grupy Klasa2. Naciskamy „Zastosuj” i „OK”.
Usuwanie członków z grupy odbywa się analogicznie. Zaznaczamy naszego użytkownika, klikamy „Usuń” i potwierdzamy, naciskając „Tak”. W prawym oknie widzimy, że naszego użytkownika już nie ma. Pamiętajmy tylko, aby to zatwierdzić, naciskając przycisk „Zastosuj” lub „OK”.
Do utworzenia grupy, podobnie jak w przypadku tworzenia użytkowników, wykorzystamy polecenie dsadd. Składnia jest następująca:
dsadd obiekt nazwa_DN_obiektu [przełączniki]
Przełączniki mogą być następujące:
– secgrp no – wtedy utworzymy grupę dystrybucyjną. Bez tego przełącznika domyślnie będzie nam się tworzyć grupa zabezpieczeń.
– scope (l, g, u) – określa nam zakres: l – lokalny, g – globalny, u – uniwersalny. Jeśli nie użyjemy żadnego przełącznika, to utworzy nam się grupa globalna.
Stworzymy teraz dwie grupy zabezpieczeń: Elektronicy i Automatycy o zasięgu globalnym w kontenerze Users, stosując opcję z przełącznikami oraz bez nich. Użyjemy poleceń:
$ dsadd group "CN=Elektronicy,CN=Users,DC=elektronik,DC=local" -secgrp yes -scope g
$ dsadd group "CN=Automatycy,CN=Users,DC=elektronik,DC=local"
Sprawdzamy w usłudze AD, czy nasze grupy zostały utworzone, i widzimy, że wszystko się zgadza.
Do usunięcia naszych grup użyjemy znanego już polecenia dsrm. Pełna składnia wygląda następująco:
$ dsrm "CN=Elektronicy,CN=Users,DC=elektronik,DC=local"
$ dsrm "CN=Automatycy,CN=Users,DC=elektronik,DC=local"
I widzimy, że usunięcie grup zakończyło się sukcesem.
Wykorzystamy do tego polecenie dsmod. Składnia jest następująca:
dsmod group nazwa_DN_grupy -addmbr nazwa_DN_użytkownika
Przykład 1:
Dodajemy użytkownika James JB. Bond do grupy Klasa2:
dsmod group "CN=klasa2,CN=Users,DC=elektronik,DC=local" -addmbr "CN=James JB. Bond,CN=Users,DC=elektronik,DC=local"
Nasze polecenie wykonało się poprawnie.
Sprawdzamy w usłudze Active Directory, czy ten użytkownik faktycznie jest członkiem grupy Klasa2. Widzimy, że wszystko się zgadza.
Możemy jednocześnie dodać do grupy więcej użytkowników. Musimy tylko stworzyć na potrzeby ćwiczenia trzech kolejnych użytkowników. Utworzymy ich w jednostce organizacyjnej Informatycy za pomocą programu PowerShell:
$ dsadd user "CN=James JB. Bond01,OU=Informatycy,DC=elektronik,DC=local" -fn James -ln Bond01 -upn [email protected] -mi JB -pwd 1qazXSW@
$ dsadd user "CN=James JB. Bond02,OU=Informatycy,DC=elektronik,DC=local" -fn James -ln Bond02 -upn [email protected] -mi JB -pwd 1qazXSW@
$ dsadd user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -fn James -ln Bond03 -upn [email protected] -mi JB -pwd 1qazXSW@
Przykład 2:
Teraz, mając już tych użytkowników, możemy ich dodać jednym poleceniem do naszej grupy Klasa2 za pomocą programu PowerShell:
$ dsmod group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -addmbr "CN=James JB. Bond01,OU=Informatycy,DC=elektronik,DC=local" "CN=James JB. Bond02,OU=Informatycy,DC=elektronik,DC=local" "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local"
Teraz sprawdzamy w usłudze AD, czy ci użytkownicy są członkami grupy Klasa2, i widzimy, że tak się właśnie stało.
Na koniec usuniemy użytkownika z grupy Klasa2 za pomocą polecenia dsmod. Składnia jest następująca:
dsmod group nazwa_DN_grupy -rmmbr nazwa_DN_użytkownika
Przykład 3:
Usuwamy użytkownika James JB. Bond z grupy Klasa2, stosując polecenie:
$ dsmod group "CN=klasa2,CN=Users,DC=elektronik,DC=local" -rmmbr "CN=James JB. Bond,CN=Users,DC=elektronik,DC=local"
Jak widać, polecenie zakończyło się sukcesem, co potwierdza także widok z usługi AD.
Polecenie dsget umożliwia wyświetlanie szczegółowych informacji zarówno o użytkownikach, jak i grupach.
1. Informacje, które można uzyskać o grupie, dotyczą:
– właściwości grupy, takich jak np. opis (-desc), typ (-secgrp), zakres (-scope) itp.,
– listy członków grupy przy użyciu przełącznika -members,
– przynależności do innej grupy przy użyciu przełącznika -memberof.
2. Podobne informacje można uzyskać o użytkownikach. Dotyczą one:
– właściwości konta użytkownika, takich jak np. opis (-desc), imię (-fn), login (-upn) itp.,
– przynależności do grupy przy użyciu przełącznika -memberof (bezpośredniej) i -expand (pośredniej).
Najpierw pozyskamy informacje o grupie. Składnia polecenia jest następująca:
dsget group nazwa_DN_obiektu [przełączniki].
Przykład 1:
Na początek sprawdzimy członków grupy Klasa2. Użyjemy więc polecenia:
$ dsget group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -members
I widzimy, że nasza grupa ma obecnie trzech członków.
Kolejną rzeczą może być sprawdzenie właściwości grupy. Składnia polecenia jest następująca:
dsget group nazwa_DN_obiektu [przełączniki].
Przykład 2:
U nas sprawdzimy typ oraz zakres grupy Klasa2. Możemy zrobić to odrębnymi poleceniami lub jednym:
$ dsget group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -secgrp
$ dsget group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -scope
$ dsget group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -secgrp -scope
I widzimy, że jest to grupa zabezpieczeń o zakresie lokalnym.
Kolejnym zastosowaniem polecenia dsget może być sprawdzenie przynależności użytkownika do grupy. Składnia polecenia jest następująca:
dsget user nazwa_DN_obiektu [przełączniki] [-memberof lub -expand].
Przykład 3:
Najpierw sprawdzimy, do jakiej grupy (grup) jest bezpośrednio przypisany James JB. Bond03. Użyjemy do tego polecenia:
$ dsget user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -memberof
Efekt polecenia jest taki, że nasz użytkownik bezpośrednio należy do dwóch grup: Klasa2 i Użytkownicy domeny.
Przykład 4:
W kolejnym przykładzie sprawdzimy, do jakiej grupy (grup) jest ogólnie (pośrednio i bezpośrednio) przypisany James JB. Bond03. Użyjemy do tego prawie takiego samego polecenia jak w przykładzie 3, ale dodamy parametr -expand:
$ dsget user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -memberof -expand
Efekt polecenia jest taki, że nasz użytkownik należy do trzech grup: Klasa2, Użytkownicy domeny oraz Użytkownicy. Oznacza to, że jedna z dwóch pierwszych grup jest członkiem grupy Użytkownicy.
Przykład 5:
Oczywiście zależność z przykładu 4 możemy w bardzo prosty sposób sprawdzić. Wystarczy sprawdzić, do jakiej grupy należą grupy Klasa2 i Użytkownicy domeny. Użyjemy do tego polecenia z przykładu 3:
$ dsget group "CN=Klasa2,CN=Users,DC=elektronik,DC=local" -memberof
$ dsget group "CN=Użytkownicy domeny,CN=Users,DC=elektronik,DC=local" -memberof
Efekt polecenia jest taki, że grupa Użytkownicy domeny jest przypisana do grupy Użytkownicy i stąd nasz użytkownik James JB. Bond03 zyskał pośrednią przynależność do grupy Użytkownicy.
Na koniec, podobnie jak w przypadku grupy w przykładzie 2, sprawdzimy właściwości konkretnego użytkownika. Składnia polecenia jest następująca:
dsget user nazwa_DN_obiektu [przełączniki].
Przykład 6:
U nas sprawdzimy login, opis oraz nazwisko dwóch użytkowników. Zrobimy to odrębnymi poleceniami oraz kompleksowymi (kolor zielony):
$ dsget user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -ln
$ dsget user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -desc
$ dsget user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -upn
$ dsget user "CN=James JB. Bond03,OU=Informatycy,DC=elektronik,DC=local" -ln -desc -upn
$ dsget user "CN=James JB. Bond,CN=Users,DC=elektronik,DC=local" -ln
$ dsget user "CN=James JB. Bond,CN=Users,DC=elektronik,DC=local" -desc
$ dsget user "CN=James JB. Bond,CN=Users,DC=elektronik,DC=local" -upn
$ dsget user "CN=James JB. Bond,CN=Users,DC=elektronik,DC=local" -ln -desc -upn
Polecenie dsquery służy do przeszukiwania katalogu LDAP w celu znalezienia obiektów, które spełniają określone kryteria. Mówiąc krótko, używając tego polecenia, możemy np. sprawdzić, jakich mamy użytkowników w domenie bądź konkretnym kontenerze. Podobne zapytania możemy wydawać pod kątem innych obiektów, np. grup, kontenerów lub jednostek organizacyjnych.
W pierwszej kolejności możemy zatem wykorzystać dsquery do wyszukania wszystkich użytkowników naszej domeny. Składnia ogólna polecenia jest następująca:
dsquery user nazwa_DN_obiektu.
Przykład 1:
Wyszukamy wszystkich użytkowników domeny elektronik poleceniem:
$ dsquery user
Widzimy, że w naszej domenie mamy 5 użytkowników utworzonych przez nas oraz 3 konta systemowe.
W podobny sposób możemy sprawdzić jednostki organizacyjne (j.o.) czy też grupy znajdujące się w naszej domenie. Składnia ogólna polecenia jest następująca:
dsquery typ_obiektu nazwa_DN_obiektu.
Przykład 2:
Przeszukamy naszą domenę pod kątem jednostek organizacyjnych, stosując polecenie:
$ dsquery ou
Widzimy, że w naszej domenie mamy 3 j.o. utworzone przez nas oraz 1 j.o. systemową.
Przykład 3:
Teraz sprawdzimy wszystkie utworzone przez nas jednostki organizacyjne pod kątem użytkowników, stosując polecenia:
$ dsquery user "OU=Klasa,OU=Pracownia,OU=Informatycy,DC=elektronik,DC=local"
$ dsquery user "OU=Pracownia,OU=Informatycy,DC=elektronik,DC=local"
$ dsquery user "OU=Informatycy,DC=elektronik,DC=local"
Widzimy, że w j.o. Klasa nie ma żadnego użytkownika, w j.o. Pracownia jest 1 użytkownik, a w j.o. Informatycy mamy 4 użytkowników (3 bezpośrednio i 1 pośrednio).
Teraz wykorzystamy możliwość wyszukiwania obiektów do zbiorowego dodawania ich do dowolnej grupy.
Przykład 4:
Na potrzeby ćwiczenia utworzymy grupę zabezpieczeń o zakresie globalnym o nazwie Testerzy:
$ dsadd group "CN=Testerzy,CN=Users,DC=elektronik,DC=local" -secgrp yes -scope g
a następnie, korzystając z polecenia dsquery, przeszukamy jednostkę organizacyjną Informatycy i dodamy wszystkich znajdujących się w niej użytkowników do utworzonej przez nas grupy. Polecenie będzie miało postać:
$ dsquery ou "OU=Informatycy,DC=elektronik,DC=local" | dsmod group "CN=Testerzy,CN=Users,DC=elektronik,DC=local" -addmbr
Mówiąc krótko, stosując znak "|" (pipe), łączymy ze sobą dwa polecenia. Pierwsze wyszukuje użytkowników, a drugie dodaje wyszukanych użytkowników do grupy.
Na koniec sprawdzamy, czy nasi użytkownicy faktycznie zostali dodani do grupy Testerzy znanym już poleceniem:
$ dsget group "CN=Testerzy,CN=Users,DC=elektronik,DC=local" -members
Oczywiście wszystko się zgadza – nasi użytkownicy są już przypisani do tej grupy, a gdy sprawdzimy przynależność jednego z użytkowników do grupy poleceniem:
$ dsget user "CN=James JB. Bond01,OU=Users,DC=elektronik,DC=local" -memberof
to widzimy, że jest on członkiem m.in. grupy Testerzy.
Wszystkie czynności udokumentuj zrzutami ekranu i umieść w sprawozdaniu.