Utwórz i skonfiguruj katalogi setgid do współpracy - przygotowanie celu RHCSA

Utwórz i skonfiguruj katalogi setgid do współpracy - przygotowanie celu RHCSA

Uprawnienia i prawa do systemu plików GNU/Linux są podstawą bezpieczeństwa systemu, a jedną z jego zasad jest wyraźne oddzielenie praw do plików i folderów. W silnie wielostronnym środowisku, takim jak serwer szkoły, prawa plików domyślnie uniemożliwiają użytkownikowi przypadkowe usunięcie lub zastąpienie dokumentów innej osoby. Istnieją jednak przypadki użycia, w których wielu użytkowników musi uzyskać dostęp (odczyt, zapisz, a nawet usuwać) pliki innych użytkowników - tak może być na wyżej wymienionym serwerze szkolnym, w którym uczniowie pracują nad tym samym projektem. W tej sekcji przygotowania egzaminu RHCSA dowiemy się, jak tworzyć środowisko dla takiej współpracy, przy użyciu techniki SETGID (Set GroupID). Zauważ, że podczas wykonywania tych kroków w najnowszym systemie operacyjnym Setgid nie jest niczym nowym, a znajdziesz go w dowolnym dystrybucji.

W tym samouczku nauczysz się:

  • Jak dodać użytkowników do grupy uzupełniającej
  • Jak używać set-gid w katalogu
  • Jak sprawdzić właściwą własność w katalogu set-gid
  • Jak używać specjalnego katalogu jako członka grupy
Współpracowanie z katalogiem setgid.

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Red Hat Enterprise Linux 8
Oprogramowanie GNU Coreutils 8.30
Inny Uprzywilejowany dostęp do systemu Linux jako root lub za pośrednictwem sudo Komenda.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Przypadek użycia

Aby zademonstrować użycie setgid, mamy serwer wirtualny, a na nim musimy utworzyć grupę użytkowników, dodać członków i skonfigurować katalog, że oba mają dostęp. Jak dotąd to tylko
kwestia ustawień uprawnień. Sztuką będzie dodanie setgid do katalogu, aby pliki utworzone w katalogu będą miały grupę właściciela katalogu nadrzędnego. Ponieważ grupa będzie miała uprawnienia do odczytu i zapisu w katalogu, każdy członkowie grupy mogą odczytać i zapisywać pliki, bez potrzeby jawnego członkostwa w grupie ustalania użytkowników.

Podstawowe ustawienia

Najpierw tworzymy potrzebne obiekty. Utwórzmy katalog projektu:

# mkdir -p /student_projects /rocket_science

I nasi dwaj użytkownicy, Sarah I Jan, Korzystanie z polecenia UserADD:

# useradd John # useradd Sarah

Musimy również utworzyć grupę użytkowników, która pozwoli na współpracę między członkami jej:

# GroupAdd RocketEngineers

Następnie ustawiliśmy tę grupę jako właściciela katalogu projektu, rekurencyjnie:

# chown -r: RockeTengineers /Student_Projects /Rocket_science

Następnie dodajemy naszych użytkowników do Rocketengineers Grupa:

# Usermod -a -g Rocketengineers John # Usermod -a -g Rocketengineers Sarah

Dodaliśmy grupę jako grupę wtórną. Szczegółowe informacje na temat grup można znaleźć w samouczku członkostwa w grupie.



Aby zakończyć podstawową konfigurację, musimy dodać pełne pozwolenie do grupy w katalogu:

# chmod 770 /student_projects /rocket_science

I dzięki temu nasza podstawowa konfiguracja jest kompletna. Obaj użytkownicy mogą pisać do katalogu, a utworzone pliki będą własnością użytkownika, a Grupa posiadania będzie główną grupą użytkownika. Możemy sprawdzić
uprawnienia, które ustawiliśmy Stat:

# STAT/Student_Projects/Rocket_Science Plik:/Student_projects/Rocket_Science Rozmiar: 6 bloków: 0 IO Blok: 4096 Direktoryczne urządzenie: FD00H/64768D INODE: 17789698 Linki: 2 Dostęp: (0770/drwxrwx ---) UID: (0/root. ) GID: (1003/RocketEngineers) Kontekst: Unconfined_U: Object_R: Default_T: S0 Dostęp: 2020-10-04 18:29:57.500453785 +0200 Modyfikuj: 2020-10-04 18:29:47.650278956 +0200 Zmiana: 2020-10-04 18:30:34.809115974 +0200 Narodziny: -

Identyfikatory najprawdopodobniej będą się różnić. Widzimy, że właściciel katalogu jest źródło, podczas gdy własność grupy należy do Rocketengineers Grupa. To pozwala obu członkom
grupy do czytania i pisania z katalogu.

Współpraca bez setgid

Powiedzmy, że dwaj użytkownicy chcieliby podzielić się z notatkami z tą konfiguracją. Sarah Dostała plik tekstowy z ważnymi danymi w swoim katalogu domowym:

$ id UID = 1002 (Sarah) GID = 1002 (Sarah) Grupy = 1002 (Sarah), 1003 (RockeTengineers) Kontekst = Unconfined_U: Unconfined_R: Unconfined_t: S0-S0: C0: C0.C1023 $ CAT General_Project.Notatki tekstowe

Podzielić się tym z Jan, Kopiuje plik do współdzielonego katalogu (więc na wszelki wypadek jest kopia zapasowa w jej katalogu domowym):

$ CP General_Project.Notatki/Student_projects/Rocket_science/

Sprawdzając właściciele, widzimy, że właściciel rzeczywiście jest Sarah, a grupa posiadająca plik jest również Sarah, Grupa podstawowa użytkownika:

$ stat/student_projects/rocket_science/general_project.UWAGI Plik:/Student_projects/rocket_science/general_project.Rozmiar UWAGI: 5 bloków: 8 IO Blok: 4096 Zwykle urządzenie do pliku: FD00H/64768D INODE: 18019570 Linki: 1 Dostęp: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: (1002///(1002/// Sarah) Kontekst: Unconfined_U: Object_R: Default_T: S0 Dostęp: 2020-10-04 18:31:30.229099624 +0200 Modyfikuj: 2020-10-04 18:31:30.229099624 +0200 Zmiana: 2020-10-04 18:31:30.229099624 +0200 Narodziny: -

Przejdźmy do Jan. Ma również pewne ustalenia dotyczące projektu i chciałby się nimi podzielić.

$ id uid = 1001 (John) GID = 1001 (John) grupy = 1001 (John), 1003 (RocketEngineers) kontekst = Unconfined_U: Unconfined_R: Unconfined_t: S0-S0: C0: C0: C0: C0: C0: C0: C0: C0: C0: C0.C1023 $ Echo „MyText”> Rocket.TXT $ CP Rocket.txt/student_projects/rocket_science/


Obowiązują te same uprawnienia, nowo skopiowany plik będzie własnością Jan:

$ Stat/Student_Projects/Rocket_Science/Rocket.Plik txt:/student_projects/rocket_science/rocket.TXT Rozmiar: 7 bloków: 8 IO Blok: 4096 Zwykle urządzenie pliku: FD00H/64768D INODE: 18356857 Linki: 1 Dostęp: (0664/-RW-RW-R--) UID: (1001/John) GID: (1001// John) Kontekst: Unconfined_u: Object_r: Default_T: S0 Dostęp: 2020-10-04 18:32:24.433075710 +0200 Modyfikuj: 2020-10-04 18:32:24.433075710 +0200 Zmiana: 2020-10-04 18:32:24.433075710 +0200 Narodziny: -

Ponieważ oboje są członkami Rocketengineers grupa, mogą odczytać zawartość katalogu, a ponieważ oba ich notatki są czytane na całym świecie, oba mogą się czytać nawzajem
akta.

$ cat/student_projects/rocket_science/general_project.Notatki tekstowe

Problem powstaje, kiedy Jan chciałbym dodać kilka notatek SarahWażny plik danych:

$ echo „Niektóre komentarze” >>/student_projects/rocket_science/general_project.Uwagi -Bash:/student_projects/rocket_science/general_project.UWAGI: ODPOWIEDZIALNOŚĆ

W efekcie nie mogą pracować nad swoimi plikami, tylko je przeczytać. Teraz Sarah mogłaby ustawić własność grupy jej akt do swojej wspólnej grupy, rozwiązując w ten sposób problem. Ale dlaczego miałaby potrzebować
że z każdym plikiem, jeśli mamy setgid, aby nam pomóc?

Ustawienie flagi setgid

Aby ustawić flagę setgid, używamy chmod:

# chmod g+s /student_projects /rocket_science

Zwróć uwagę na flagę „S” za uprawnienia GROP (ustawione jako odważne ze względu na jasność):

# STAT/Student_Projects/Rocket_science Plik:/Student_projects/Rocket_science Rozmiar: 53 bloki: 0 IO Blok: 4096 Direktoryczne urządzenie: FD00H/64768D INODE: 17789698 Linki: 2 Dostęp: (2770/DRWXRWWWS---) UID: (0/ root) GID: (1003/ RocketEngineers) Kontekst: Unconfined_U: Object_R: Default_T: S0 Dostęp: 2020-10-04 18:32:29.389167450 +0200 Modyfikuj: 2020-10-04 18:32:24.433075710 +0200 Zmiana: 2020-10-04 18:34:04.449927062 +0200 Narodziny: -

Testowanie i weryfikacja wyników

Teraz Sarah może udostępnić swoje nowe notatki badawcze:

Wyniki $ CAT.TXT Rocket potrzebuje skrzydeł $ CP.txt/student_projects/rocket_science/$ stat/student_projects/rocket_science/ustalenia.Plik txt:/student_projects/rocket_science/wyniki.TXT Rozmiar: 19 bloków: 8 IO Blok: 4096 Zwykle urządzenie pliku: FD00H/64768D INODE: 18999000 Linki: 1 Dostęp: (0664/-RW-RW-R--) UID: (1002/Sarah) GID: ( 1003/Rocketengineers) Kontekst: Unconfined_u: Object_r: Default_T: S0 Dostęp: 2020-10-04 18:35:15.195236593 +0200 Modyfikuj: 2020-10-04 18:35:15.195236593 +0200 Zmiana: 2020-10-04 18:35:15.195236593 +0200 Narodziny: -


Własność grupy jest ustawiona na grupie katalogu nadrzędnego z powodu setgid w miejscu. To spowoduje Jan Aby móc komentować nowe notatki badawcze:

$ echo ”zweryfikowane!">>/student_projects/rocket_science/ustalenia.txt $ cat/student_projects/rocket_science/ustalenia.TXT Rocket potrzebuje zweryfikowanych skrzydeł!

I dzięki temu uzupełniliśmy nasz cel, jakim jest założenie katalogu współpracy dla grupy użytkowników. Moglibyśmy to zrobić dla innych grup z powyższą metodą, oddzielając dane różnych projektów
uprawnienia, więc członek jednej grupy nie może przypadkowo usunąć danych innego projektu.

# Tytuł wideo: Praca w katalogu setgid
# Opis wideo: Edycja plików innych użytkowników w katalogu setgid
# Nazwa pliku wideo: rhcsa_setgid.Webm

Praca w katalogu setgid - edycja plików innych użytkowników w katalogu setgid

Wniosek

Zgodnie z ścisłymi uprawnieniami i prawem do własności GNU/Linux, setgid to prosty sposób, aby umożliwić użytkownikom systemu na interakcję ze sobą w bezpieczny sposób, umożliwiając pracę grupową
bez użycia jakiegoś ciężkiego rozwiązania zewnętrznego lub zepsucia początkowych grup i uprawnień użytkownika. W powyższym przykładzie nie musieliśmy dotykać katalogów domowych użytkowników ani ich systemu
uprawnienia, po prostu założyliśmy specjalne miejsce, w którym mogą dzielić się tym, czego potrzebują.

Ćwiczenia

  1. Utwórz wiele katalogów projektowych z różnymi grupami. Sprawdź, czy członkowie jednego projektu mogą odczytać pliki innego projektu.
  2. Utwórz katalog krzyżowy, w którym każdy członek projektu ma dostęp.
  3. Utwórz projekt tylko czytać Katalog, w którym tylko jeden członkowie projektu (zarządzanie projektami) mogą pisać, ale członkowie wszystkich projektów mogą czytać.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Obsługa danych wejściowych użytkownika w skryptach Bash
  • Jak często musisz ponownie uruchomić serwer Linux?
  • Pobierz Linux
  • Jak tworzyć przyrostowe i różnicowe kopie zapasowe z TAR
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze