Administrator systemu Linux - szybki przewodnik

CentOS, unikalny wśród dystrybucji Linuksa klasy biznesowej, pozostaje wierny naturze open source, na której powstał Linux. Pierwsze jądro Linuksa zostało stworzone przez studenta na Uniwersytecie Helsińskim (Linus Torvalds) i połączone z narzędziami GNU założonymi i promowanymi przez Richarda Stallmana. CentOS ma sprawdzone licencje typu open source, które mogą napędzać dzisiejszy świat biznesu.

CentOS szybko stał się jedną z najbardziej płodnych platform serwerowych na świecie. Każdy administrator Linuksa, szukając pracy, z pewnością spotka się ze słowami: „Preferowane doświadczenie w CentOS Linux”. Od start-upów po tytanów technologicznych z listy Fortune 10 , CentOS plasuje się wśród wyższych szczebli systemów operacyjnych dla serwerów na całym świecie.

To, co wyróżnia CentOS na tle innych dystrybucji Linuksa, to świetne połączenie -

  • Licencje open source

  • Dedykowana baza użytkowników profesjonalistów Linuksa

  • Dobra obsługa sprzętu

  • Niezwykła stabilność i niezawodność

  • Skoncentruj się na bezpieczeństwie i aktualizacjach

  • Ścisłe przestrzeganie standardów pakowania oprogramowania potrzebnych w środowisku korporacyjnym

Przed rozpoczęciem lekcji zakładamy, że czytelnicy mają podstawową wiedzę o Linuksie i podstawach administracji, takich jak -

  • Kim jest użytkownik root?

  • Moc użytkownika root

  • Podstawowe pojęcia dotyczące grup zabezpieczeń i użytkowników

  • Doświadcz korzystania z emulatora terminala Linux

  • Podstawowe pojęcia dotyczące sieci

  • Podstawowe rozumienie interpretowanych języków programowania (Perl, Python, Ruby)

  • Protokoły sieciowe, takie jak HTTP, LDAP, FTP, IMAP, SMTP

  • Rdzenie tworzące system operacyjny komputera: system plików, sterowniki i kerne

Przed zapoznaniem się z narzędziami administratora CentOS Linux, ważne jest, aby zwrócić uwagę na filozofię stojącą za wierszem poleceń administracji Linuksa.

Linux został zaprojektowany w oparciu o filozofię uniksową „małych, precyzyjnych narzędzi połączonych łańcuchami, upraszczających większe zadania”. Linux u swoich podstaw nie ma dużych, jednofunkcyjnych aplikacji do jednego, konkretnego zastosowania, często. Zamiast tego istnieją setki podstawowych narzędzi, które w połączeniu oferują dużą moc umożliwiającą wydajne wykonywanie dużych zadań.

Przykłady filozofii Linuksa

Na przykład, jeśli administrator chce wyświetlić listę wszystkich bieżących użytkowników w systemie, można użyć następujących połączonych poleceń, aby uzyskać listę wszystkich użytkowników systemu. Po wykonaniu polecenia użytkownicy systemu są wyświetlani w kolejności alfabetycznej.

[root@centosLocal centos]# cut /etc/passwd -d":" -f1 | sort 
abrt 
adm 
avahi 
bin 
centos 
chrony 
colord 
daemon 
dbus

Listę tę można łatwo wyeksportować do pliku tekstowego za pomocą następującego polecenia.

[root@localhost /]# cut /etc/passwd -d ":" -f1 > system_users.txt        
[root@localhost /]# cat ./system_users.txt | sort | wc –l 
40       
[root@localhost /]#

Możliwe jest również porównanie listy użytkowników z eksportem w późniejszym terminie.

[root@centosLocal centos]#  cut /etc/passwd -d ":" -f1 > system_users002.txt && 
   cat system_users002.txt | sort | wc -l 
41 
[root@centosLocal centos]# diff ./system_users.txt ./system_users002.txt  
evilBackdoor [root@centosLocal centos]#

Dzięki takiemu podejściu do małych narzędzi połączonych łańcuchami w celu wykonania większych zadań, łatwiej jest utworzyć skrypt wykonujący te polecenia, niż automatycznie wysyłać wyniki pocztą e-mail w regularnych odstępach czasu.

Podstawowe komendy, w których każdy administrator Linuksa powinien być biegły to:

  • vim
  • grep
  • mniej więcej
  • tail
  • head
  • wc
  • sort
  • uniq
  • tee
  • cat
  • cut
  • sed
  • tr
  • paste

W świecie Linuksa administratorzy używają filteringpolecenia, aby analizować dzienniki, filtrować dane wyjściowe poleceń i wykonywać działania za pomocą interaktywnych skryptów powłoki. Jak wspomniano, siła tych poleceń polega na ich zdolności do wzajemnego modyfikowania poprzez proces o nazwiepiping.

Poniższe polecenie pokazuje, ile słów zaczyna się na literę a z głównego słownika użytkownika CentOS.

[root@centosLocal ~]# egrep '^a.*$' /usr/share/dict/words | wc -l 
25192 
[root@centosLocal ~]#

Aby wprowadzić uprawnienia, które dotyczą zarówno katalogów, jak i plików w CentOS Linux, spójrzmy na następujące dane wyjściowe polecenia.

[centos@centosLocal etc]$ ls -ld /etc/yum* 
drwxr-xr-x. 6 root root 100 Dec  5 06:59 /etc/yum 
-rw-r--r--. 1 root root 970 Nov 15 08:30 /etc/yum.conf 
drwxr-xr-x. 2 root root 187 Nov 15 08:30 /etc/yum.repos.d

Note - Trzy główne typy obiektów, które zobaczysz, to

  • "-" - myślnik oznaczający zwykły plik

  • "d" - dla katalogu

  • "l" - dla dowiązania symbolicznego

Skoncentrujemy się na trzech blokach danych wyjściowych dla każdego katalogu i pliku -

  • drwxr-xr-x: root: root
  • -rw-r - r--: root: root
  • drwxr-xr-x: root: root

Teraz załóżmy to, aby lepiej zrozumieć te linie -

re Oznacza, że ​​typ obiektu to katalog
rwx Wskazuje uprawnienia do katalogu nadane właścicielowi
rx Wskazuje uprawnienia do katalogu nadane grupie
rx Wskazuje uprawnienia do katalogu zastosowane na świecie
korzeń Pierwsza instancja wskazuje właściciela katalogu
korzeń Druga instancja wskazuje grupę, do której są stosowane uprawnienia grupy

Zrozumienie różnicy między właścicielem , grupą i światem jest ważne. Niezrozumienie tego może mieć poważne konsekwencje dla serwerów obsługujących usługi internetowe.

Zanim podamy przykład ze świata rzeczywistego, przyjrzyjmy się najpierw uprawnieniom, które mają zastosowanie do katalogów i plików .

Spójrz na poniższą tabelę, a następnie kontynuuj instrukcje.

Ósemkowe Symboliczny Trwała ondulacja. Informator
1 x Wykonać Wejdź do katalogu i uzyskaj dostęp do plików
2 w pisać Usuń lub zmodyfikuj pliki w katalogu
4 r Czytać Lista plików w katalogu

Note- Gdy pliki powinny być dostępne do odczytu w katalogu, często stosuje się uprawnienia do odczytu i wykonywania . W przeciwnym razie użytkownicy będą mieli trudności z pracą z plikami. Pozostawienie wyłączonego zapisu zapewni, że plików nie można: zmieniać nazw, usuwać, kopiować ani modyfikować uprawnień.

Stosowanie uprawnień do katalogów i plików

Przy stosowaniu uprawnień należy zrozumieć dwie koncepcje -

  • Uprawnienia symboliczne
  • Uprawnienia ósemkowe

Zasadniczo każdy z nich jest taki sam, ale inny sposób odwoływania się do plików i nadawania im uprawnień. Aby uzyskać krótki przewodnik, zapoznaj się z poniższą tabelą -

Czytać pisać Wykonać
Octal 4 2 1
Symbolic r w x

Podczas przypisywania uprawnień za pomocą octalużyj 3-bajtowej liczby, takiej jak: 760. Liczba 760 oznacza: Właściciel: rwx; Grupa: rw; Inne (lub światowe) brak uprawnień.

Inny scenariusz: 733 dałoby się przełożyć na: Właściciel: rwx; Grupa: wx; Inne: wx.

Uprawnienia przy użyciu metody ósemkowej mają jedną wadę. Istniejących polis uprawnień nie można modyfikować. Możliwe jest tylko ponowne przypisanie całej polisy uprawnień do obiektu.

Teraz możesz się zastanawiać, co jest złego w ciągłym ponownym przypisywaniu uprawnień? Wyobraź sobie dużą strukturę katalogów, na przykład / var / www / na produkcyjnym serwerze WWW. Chcemy rekurencyjnie odebrać w lub zapisać bit we wszystkich katalogach dla innego. Dlatego wymuszanie aktywnego dodawania tylko wtedy, gdy jest to potrzebne ze względów bezpieczeństwa. Jeśli ponownie przypiszemy cały zestaw uprawnień, usuniemy wszystkie inne niestandardowe uprawnienia przypisane do każdego podkatalogu.

W związku z tym spowoduje to problem zarówno dla administratora, jak i użytkownika systemu. W pewnym momencie osoba (lub osoby) musiałaby ponownie przypisać wszystkie niestandardowe uprawnienia, które zostały usunięte, ponownie przypisując cały zestaw uprawnień dla każdego katalogu i obiektu.

W takim przypadku chcielibyśmy użyć metody Symbolic, aby zmodyfikować uprawnienia -

chmod -R o-w /var/www/

Powyższe polecenie nie „nadpisuje uprawnień”, ale modyfikuje bieżące zestawy uprawnień. Przyzwyczaj się więc do najlepszych praktyk

  • Ósemkowe tylko do przypisywania uprawnień
  • Symboliczne do modyfikowania polis uprawnień

Ważne jest, aby administrator CentOS biegle posługiwał się zarówno uprawnieniami ósemkowymi, jak i symbolicznymi, ponieważ uprawnienia są ważne dla integralności danych i całego systemu operacyjnego. Jeśli uprawnienia są niepoprawne, wynikiem końcowym będą zarówno poufne dane, jak i cały system operacyjny zostanie naruszony.

Mając to na uwadze, spójrzmy na kilka poleceń do modyfikowania uprawnień i właściciela / członków obiektu -

  • chmod
  • chown
  • chgrp
  • umask

chmod: zmiana bitów uprawnień trybu pliku

Komenda Akcja
-do Podobnie jak szczegółowe, ale będzie zgłaszać tylko wprowadzone zmiany
-v Pełne, wyświetla informacje diagnostyczne dla każdego wysłanego żądania
-R Rekurencyjnie stosuje operację na plikach i katalogach

chmod pozwoli nam zmienić uprawnienia do katalogów i plików za pomocą ósemkowych lub symbolicznych zestawów uprawnień. Wykorzystamy to do zmodyfikowania naszego przypisania i załadowania katalogów.

chown: zmiana właściciela i grupy plików

Komenda Akcja
-do Podobnie jak szczegółowe, ale będzie zgłaszać tylko wprowadzone zmiany
-v Pełne, wyświetla informacje diagnostyczne dla każdego wysłanego żądania
-R Rekurencyjnie stosuje operację na plikach i katalogach

chown może modyfikować zarówno posiadanie użytkownika, jak i grupy obiektów. Jednak jeśli nie trzeba modyfikować obu w tym samym czasie, dla grup zwykle używa się chgrp .

chgrp: zmiana prawa własności grupy do pliku lub katalogu

Komenda Akcja
-do Podobnie jak gadatliwy, ale zgłasza tylko zmiany
-v Pełne, wyświetla informacje diagnostyczne dla każdego wykonanego żądania
-R Rekurencyjnie stosuje operacje na plikach i katalogach

chgrp zmieni właściciela grupy na podanego.

Praktyka w świecie rzeczywistym

Zmieńmy wszystkie przypisania podkatalogów w / var / www / Students / tak, aby grupą będącą właścicielem była grupa studentów . Następnie przypisz root studentów do grupy profesorów. Później uczyń dr Terry'ego Thomasa właścicielem katalogu studentów , ponieważ ma on kierować wszystkimi akademikami informatyki w szkole.

Jak widać, po utworzeniu katalog jest dość surowy.

[root@centosLocal ~]# ls -ld /var/www/students/ 
drwxr-xr-x. 4 root root 40 Jan  9 22:03 /var/www/students/

[root@centosLocal ~]# ls -l /var/www/students/ 
total 0 
drwxr-xr-x. 2 root root 6 Jan  9 22:03 assignments 
drwxr-xr-x. 2 root root 6 Jan  9 22:03 uploads 

[root@centosLocal ~]#

Jako administratorzy nigdy nie chcemy nikomu ujawniać naszych danych uwierzytelniających roota . Ale jednocześnie musimy umożliwić użytkownikom wykonywanie ich pracy. Pozwólmy więc dr Terry Thomasowi przejąć większą kontrolę nad strukturą plików i ograniczyć to, co mogą zrobić uczniowie.

[root@centosLocal ~]# chown -R drterryt:professors /var/www/students/ 
[root@centosLocal ~]# ls -ld /var/www/students/ 
drwxr-xr-x. 4 drterryt professors 40 Jan  9 22:03 /var/www/students/

[root@centosLocal ~]# ls -ls /var/www/students/ 
total 0 
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 assignments 
0 drwxr-xr-x. 2 drterryt professors 6 Jan  9 22:03 uploads

[root@centosLocal ~]#

Teraz każdy katalog i podkatalog ma właściciela drterryt, a grupą właścicielską są profesorowie . Ponieważ katalog zadań jest przeznaczony dla uczniów do oddawania przydzielonych zadań, odbierzmy możliwość wyświetlania listy i modyfikowania plików z grupy uczniów .

[root@centosLocal ~]# chgrp students /var/www/students/assignments/ && chmod 
736 /var/www/students/assignments/

[root@centosLocal assignments]# ls -ld /var/www/students/assignments/ 
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14 /var/www/students/assignments/

[root@centosLocal assignments]#

Uczniowie mogą kopiować projekty do katalogu projektów . Nie mogą jednak wyświetlać zawartości katalogu, kopiować bieżących plików ani modyfikować plików w katalogu przypisań . W ten sposób umożliwia studentom tylko przesyłanie ukończonych zadań. System plików CentOS zapewni sygnaturę daty oddania przydziałów.

Jako właściciel katalogu przydziałów -

[drterryt@centosLocal assignments]$ whoami drterryt [drterryt@centosLocal assignments]$ ls -ld /var/www/students/assignment 
drwx-wxrw-. 2 drterryt students 44 Jan  9 23:14 /var/www/students/assignments/

[drterryt@centosLocal assignments]$ ls -l /var/www/students/assignments/ total 4 -rw-r--r--. 1 adama students 0 Jan 9 23:14 myassign.txt -rw-r--r--. 1 tammyr students 16 Jan 9 23:18 terryt.txt [drterryt@centosLocal assignments]$

Widzimy, właściciel katalogu może wyświetlać listę plików, a także modyfikować i usuwać pliki.

Polecenie umask: dostarcza domyślne tryby dla uprawnień do plików i katalogów podczas ich tworzenia

umask to ważne polecenie, które zapewnia domyślne tryby dla uprawnień do plików i katalogów podczas ich tworzenia.

Uprawnienia umask używają jednoargumentowej logiki zanegowanej.

Pozwolenie Operacja
0 Czytaj, pisz, wykonuj
1 Czytaj i pisz
2 Przeczytaj i wykonaj
3 Tylko czytać
4 Przeczytaj i wykonaj
5 Tylko pisz
6 Tylko wykonaj
7 Brak uprawnień
[adama@centosLocal umask_tests]$ ls -l ./ -rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir -rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt [adama@centosLocal umask_tests]$ whoami 
adama

[adama@centosLocal umask_tests]$ umask 0022 [adama@centosLocal umask_tests]$

Teraz zmieńmy umask dla naszego bieżącego użytkownika i utwórzmy nowy plik i katalog.

[adama@centosLocal umask_tests]$ umask 077 [adama@centosLocal umask_tests]$ touch mynewfile.txt

[adama@centosLocal umask_tests]$ mkdir myNewDir [adama@centosLocal umask_tests]$ ls -l 
total 0 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myDir 
-rw-r--r--. 1 adama students 0 Jan 10 00:27 myFile.txt 
drwx------. 2 adama students 6 Jan 10 00:35 myNewDir 
-rw-------. 1 adama students 0 Jan 10 00:35 mynewfile.txt

Jak widać, nowo utworzone pliki są nieco bardziej restrykcyjne niż wcześniej.

umask dla użytkowników należy zmienić w jednym z nich -

  • /etc/profile
  • ~/bashrc
[root@centosLocal centos]# su adama 
[adama@centosLocal centos]$ umask 0022 [adama@centosLocal centos]$

Generalnie domyślna umask w CentOS będzie w porządku. Kiedy mamy kłopoty z domyślną wartością 0022 , zwykle mamy do czynienia z koniecznością współpracy różnych działów należących do różnych grup.

W tym miejscu pojawia się rola administratora systemu, aby zrównoważyć operacje i projekt systemu operacyjnego CentOS.

Omawiając zarządzanie użytkownikami , musimy zrozumieć trzy ważne terminy -

  • Users
  • Groups
  • Permissions

Omówiliśmy już szczegółowe uprawnienia stosowane do plików i folderów. W tym rozdziale porozmawiajmy o użytkownikach i grupach.

Użytkownicy CentOS

W CentOS istnieją dwa typy kont -

  • System accounts - Używany dla demona lub innego oprogramowania.

  • Interactive accounts - Zwykle przypisywany użytkownikowi w celu uzyskania dostępu do zasobów systemowych.

Główna różnica między tymi dwoma typami użytkowników to -

  • System accountssą używane przez demony do uzyskiwania dostępu do plików i katalogów. Zwykle nie będzie można ich interaktywnie logować za pośrednictwem powłoki lub fizycznej konsoli.

  • Interactive accounts są używane przez użytkowników końcowych w celu uzyskania dostępu do zasobów obliczeniowych z poziomu logowania powłoki lub konsoli fizycznej.

Mając tę ​​podstawową wiedzę na temat użytkowników, stwórzmy teraz nowego użytkownika dla Boba Jonesa z działu księgowości. Nowy użytkownik jest dodawany z rozszerzeniemadduser Komenda.

Oto kilka adduser wspólne przełączniki -

Przełącznik Akcja
-do Dodaje komentarz do konta użytkownika
-m Tworzy katalog domowy użytkownika w domyślnej lokalizacji, jeśli nie istnieje
-sol Domyślna grupa do przypisania użytkownika
-n Nie tworzy prywatnej grupy dla użytkownika, zwykle grupy z nazwą użytkownika
-M Nie tworzy katalogu domowego
-s Domyślna powłoka inna niż / bin / bash
-u Określa UID (w inny sposób przypisany przez system)
-SOL Dodatkowe grupy, do których ma zostać przypisany użytkownik

Podczas tworzenia nowego użytkownika użyj przełączników -c, -m, -g, -n w następujący sposób -

[root@localhost Downloads]# useradd -c "Bob Jones  Accounting Dept Manager" 
-m -g accounting -n bjones

Zobaczmy teraz, czy został utworzony nasz nowy użytkownik -

[root@localhost Downloads]# id bjones 
(bjones) gid = 1001(accounting) groups = 1001(accounting)

[root@localhost Downloads]# grep bjones /etc/passwd 
bjones:x:1001:1001:Bob Jones  Accounting Dept Manager:/home/bjones:/bin/bash

[root@localhost Downloads]#

Teraz musimy włączyć nowe konto za pomocą polecenia passwd -

[root@localhost Downloads]# passwd bjones 
Changing password for user bjones. 
New password:  
Retype new password:  
passwd: all authentication tokens updated successfully.

[root@localhost Downloads]#

Konto użytkownika nie jest włączone, umożliwiając użytkownikowi zalogowanie się do systemu.

Wyłączanie kont użytkowników

Istnieje kilka metod wyłączania kont w systemie. Obejmuje to ręczną edycję pliku / etc / passwd. Lub nawet używając polecenia passwd z rozszerzeniem-lprzełącznik. Obie te metody mają jedną wielką wadę: jeśli użytkownik ma dostęp do SSH i używa klucza RSA do uwierzytelniania, nadal może się zalogować przy użyciu tej metody.

Teraz użyjmy polecenia chage , zmieniając datę ważności hasła na poprzednią datę. Warto też zanotować na koncie, dlaczego je wyłączyliśmy.

[root@localhost Downloads]# chage -E 2005-10-01 bjones
 
[root@localhost Downloads]# usermod  -c "Disabled Account while Bob out of the country 
for five months" bjones

[root@localhost Downloads]# grep bjones /etc/passwd 
bjones:x:1001:1001:Disabled Account while Bob out of the country for four 
months:/home/bjones:/bin/bash

[root@localhost Downloads]#

Zarządzaj grupami

Zarządzanie grupami w systemie Linux ułatwia administratorowi łączenie użytkowników w kontenerach, stosując zestawy uprawnień mające zastosowanie do wszystkich członków grupy. Na przykład wszyscy użytkownicy w księgowości mogą potrzebować dostępu do tych samych plików. W ten sposób tworzymy grupę księgową, dodając użytkowników księgowych.

W większości przypadków wszystko, co wymaga specjalnych uprawnień, powinno być wykonywane w grupie. Takie podejście zwykle pozwala zaoszczędzić czas w porównaniu z zastosowaniem specjalnych uprawnień tylko do jednego użytkownika. Na przykład Sally jest odpowiedzialna za raporty i tylko Sally potrzebuje dostępu do określonych plików do raportowania. A co, jeśli Sally pewnego dnia zachoruje, a Bob złoży raport? Czy potrzeba raportowania rośnie? Po utworzeniu grupy administrator musi to zrobić tylko raz. Dodawanie użytkowników jest stosowane w miarę zmiany lub rozszerzania potrzeb.

Poniżej przedstawiono niektóre typowe polecenia używane do zarządzania grupami -

  • chgrp
  • groupadd
  • groups
  • usermod

chgrp - Zmienia prawa własności do pliku lub katalogu.

Utwórzmy katalog dla osób z grupy księgowej do przechowywania plików i tworzenia katalogów dla plików.

[root@localhost Downloads]# mkdir /home/accounting

[root@localhost Downloads]# ls -ld /home/accounting
drwxr-xr-x. 2 root root 6 Jan 13 10:18 /home/accounting

[root@localhost Downloads]#

Następnie dajmy grupy własności do rachunkowości grupy.

[root@localhost Downloads]# chgrp -v  accounting /home/accounting/ 
changed group of ‘/home/accounting/’ from root to accounting

[root@localhost Downloads]# ls -ld /home/accounting/ 
drwxr-xr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/

[root@localhost Downloads]#

Teraz wszyscy w grupie księgowej mają uprawnienia do odczytu i wykonywania uprawnień do / home / accounts . Będą również potrzebować uprawnień do zapisu.

[root@localhost Downloads]# chmod g+w /home/accounting/

[root@localhost Downloads]# ls -ld /home/accounting/ 
drwxrwxr-x. 2 root accounting 6 Jan 13 10:18 /home/accounting/

[root@localhost Downloads]#

Ponieważ grupa księgowa może zajmować się poufnymi dokumentami, musimy zastosować pewne restrykcyjne uprawnienia dla innych lub światowych .

[root@localhost Downloads]# chmod o-rx /home/accounting/

[root@localhost Downloads]# ls -ld /home/accounting/ 
drwxrwx---. 2 root accounting 6 Jan 13 10:18 /home/accounting/

[root@localhost Downloads]#

groupadd - Używane do tworzenia nowej grupy.

Przełącznik Akcja
-sol Określa identyfikator GID grupy
-K Zastępuje specyfikacje GID w /etc/login.defs
-o Pozwala na zastąpienie nieunikalnego identyfikatora grupy
-p Hasło grupowe, umożliwiające użytkownikom aktywację

Stwórzmy nową grupę o nazwie Secret. Dodamy hasło do grupy, umożliwiając użytkownikom dodawanie się za pomocą znanego hasła.

[root@localhost]# groupadd secret

[root@localhost]# gpasswd secret 
Changing the password for group secret 
New Password:  
Re-enter new password:

[root@localhost]# exit 
exit

[centos@localhost ~]$ newgrp secret Password: [centos@localhost ~]$ groups 
secret wheel rdc

[centos@localhost ~]$

W praktyce hasła do grup nie są używane często. Grupy dodatkowe są odpowiednie, a udostępnianie haseł innym użytkownikom nie jest dobrym rozwiązaniem w zakresie bezpieczeństwa.

Plik groupsPolecenie służy do pokazania, do której grupy należy użytkownik. Wykorzystamy to po wprowadzeniu pewnych zmian w naszym obecnym użytkowniku.

usermod służy do aktualizacji atrybutów konta.

Poniżej przedstawiono typowe przełączniki trybu użytkownika .

Przełącznik Akcja
-za Dołącza, dodaje użytkownika do dodatkowych grup, tylko z opcją -G
-do Komentarz, aktualizuje wartość komentarza użytkownika
-re Katalog domowy, aktualizuje katalog domowy użytkownika
-SOL Grupuje, dodaje lub usuwa drugorzędne grupy użytkowników
-sol Grupa, domyślna podstawowa grupa użytkownika
[root@localhost]# groups centos 
centos : accounting secret

[root@localhost]#

[root@localhost]# usermod -a -G wheel centos

[root@localhost]# groups centos
centos : accounting wheel secret

[root@localhost]#

Przydziały dysku CentOS można włączyć zarówno; ostrzeganie administratora systemu i odmawianie użytkownikowi dalszego dostępu do pamięci dyskowej przed przekroczeniem pojemności dysku. Gdy dysk jest pełny, w zależności od tego, co się na nim znajduje, cały system może się zatrzymać aż do odzyskania.

Włączanie zarządzania limitami w CentOS Linux jest w zasadzie procesem 4-etapowym -

  • Step 1 - Włącz zarządzanie limitami dla grup i użytkowników w / etc / fstab.

  • Step 2 - Ponownie podłącz system plików.

  • Step 3 - Utwórz bazę danych Quota i wygeneruj tabelę użycia dysku.

  • Step 4 - Przypisz zasady dotyczące limitów.

Włącz zarządzanie limitami w / etc / fstab

Najpierw chcemy wykonać kopię zapasową naszego pliku / etc / fstab -

[root@centosLocal centos]# cp -r /etc/fstab ./

Mamy teraz kopię naszego znanego roboczego / etc / fstab w bieżącym katalogu roboczym.

# 
# /etc/fstab 
# Created by anaconda on Sat Dec 17 02:44:51 2016 
# 
# Accessible filesystems, by reference, are maintained under '/dev/disk' 
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# 
/dev/mapper/cl-root        /         xfs     defaults                      0 0
UUID = 4b9a40bc-9480-4     /boot     xfs     defaults                      0 0

/dev/mapper/cl-home        /home     xfs     defaults,usrquota,grpquota    0 0

/dev/mapper/cl-swap        swap      swap    defaults                      0 0

Wprowadziliśmy następujące zmiany w sekcji opcji pliku / etc / fstab dla wolumenu lub etykiety, do której mają być stosowane przydziały dla użytkowników i grup.

  • usrquota
  • grpquota

Jak widać, używamy xfssystem plików. Podczas korzystania z xfs wymagane są dodatkowe czynności ręczne./homeznajduje się na tym samym dysku co /. Dalsze badanie pokazuje / jest ustawione na noquota , czyli opcję montowania na poziomie jądra. Musimy ponownie skonfigurować opcje rozruchu jądra.

root@localhost rdc]# mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@localhost rdc]#

Ponowna konfiguracja opcji rozruchu jądra dla systemów plików XFS

Ten krok jest konieczny tylko pod dwoma warunkami -

  • Gdy dysk / partycja, na której włączamy limity, używa systemu plików xfs
  • Gdy jądro przekazuje parametr noquota do / etc / fstab podczas uruchamiania

Step 1 - Zrób kopię zapasową / etc / default / grub.

cp /etc/default/grub ~/

Step 2- Zmodyfikuj / etc / default / grub .

Oto plik domyślny.

GRUB_TIMEOUT=5 
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" 
GRUB_DEFAULT=saved 
GRUB_DISABLE_SUBMENU=true 
GRUB_TERMINAL_OUTPUT="console" 
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" 
GRUB_DISABLE_RECOVERY="true"

Chcemy zmodyfikować następujący wiersz -

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"

do

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv 
=cl/swap rhgb quiet rootflags=usrquota,grpquota"

Note- Ważne jest, abyśmy skopiowali te zmiany dosłownie. Po ponownym skonfigurowaniu grub.cfg, nasz system nie uruchomi się, jeśli wystąpią jakiekolwiek błędy w konfiguracji. Wypróbuj tę część samouczka w systemie nieprodukcyjnym.

Step 3 - Utwórz kopię zapasową działającego pliku grub.cfg

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

Utwórz nowy plik grub.cfg

[root@localhost rdc]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ... 
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64 
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img 
Found linux image: /boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd 
Found initrd image: /boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img 
done

[root@localhost rdc]#

Restart

[root@localhost rdc]#reboot

Gdyby wszystkie modyfikacje były precyzyjne, nie mielibyśmy możliwości dodawania kwot do systemu plików xfs .

[rdc@localhost ~]$ mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
 
[rdc@localhost ~]$

Przekazaliśmy parametry usrquota i grpquota za pośrednictwem programu grub.

Teraz ponownie wyedytuj / etc / fstab, aby uwzględnić / od / homena tym samym dysku fizycznym.

/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota        0 0

Teraz włączmy bazy danych kwot.

[root@localhost rdc]# quotacheck -acfvugM

Upewnij się, że przydziały są włączone.

[root@localhost rdc]# quotaon -ap 
group quota on / (/dev/mapper/cl-root) is on 
user quota on / (/dev/mapper/cl-root) is on 
group quota on /home (/dev/mapper/cl-home) is on 
user quota on /home (/dev/mapper/cl-home) is on 
[root@localhost rdc]#

Ponownie podłącz system plików

Jeśli partycja lub dysk jest oddzielony od partycji, która jest aktywnie uruchamiana, możemy ponownie zamontować bez ponownego uruchamiania. Jeśli przydział został skonfigurowany na dysku / partycji uruchomionej w katalogu głównym /, może być konieczne ponowne uruchomienie systemu operacyjnego. Wymuszenie ponownego zamontowania i zastosowanie zmian może się różnić w zależności od potrzeby ponownego zamontowania systemu plików.

[rdc@localhost ~]$ df 
Filesystem              1K-blocks     Used      Available      Use%     Mounted on
/dev/mapper/cl-root     22447404      4081860   18365544       19%         /
devtmpfs                903448        0         903448         0%          /dev
tmpfs                   919308        100       919208         1%          /dev/shm
tmpfs                   919308        9180      910128         1%          /run
tmpfs                   919308        0         919308         0%          /sys/fs/cgroup
/dev/sda2               1268736       176612    1092124        14%         /boot
/dev/mapper/cl-var      4872192       158024    4714168        4%          /var
/dev/mapper/cl-home     18475008      37284     18437724       1%          /home
tmpfs                   183864        8         183856         1%          /run/user/1000

[rdc@localhost ~]$

Jak widać, woluminy LVM są w użyciu. Więc łatwo jest po prostu zrestartować. Spowoduje to ponowne zamontowanie / home i załadowanie zmian konfiguracyjnych / etc / fstab do aktywnej konfiguracji.

Utwórz pliki bazy danych kwot

CentOS może teraz pracować z przydziałami dyskowymi w / home. Aby włączyć obsługę pełnego limitu, musimy uruchomićquotacheck Komenda.

quotacheck utworzy dwa pliki -

  • aquota.user
  • aquota.group

Są one używane do przechowywania informacji o przydziałach dla dysków / partycji z włączonymi przydziałami.

Poniżej przedstawiono typowe przełączniki quotacheck.

Przełącznik Akcja
-u Sprawdza limity użytkowników
-sol Sprawdza limity grupowe
-do Przydziały powinny być włączone dla każdego systemu plików z włączonymi limitami
-v Wyświetla szczegółowe dane wyjściowe

Dodaj limity przydziałów na użytkownika

W tym celu użyjemy polecenia edquota, po którym nastąpi nazwa użytkownika -

[root@localhost rdc]# edquota centos

Disk quotas for user centos (uid 1000):  
Filesystem                   blocks       soft       hard     inodes     soft     hard 
/dev/mapper/cl-root              12          0          0         13        0        0  
/dev/mapper/cl-home            4084          0          0        140        0        0

Spójrzmy na każdą kolumnę.

  • Filesystem - Jest to limity systemu plików dla użytkownika, do którego zastosowano

  • blocks - Ile bloków aktualnie używa użytkownik w każdym systemie plików

  • soft- Ustaw bloki dla miękkiego limitu. Miękki limit umożliwia użytkownikowi przenoszenie kwoty na określony czas

  • hard- Ustaw bloki na twardy limit. Twardy limit to całkowity dopuszczalny limit

  • inodes - Ile i-węzłów aktualnie używa użytkownik

  • soft - Miękki limit i-węzłów

  • hard - Twardy limit i-węzłów

Aby sprawdzić aktualny limit jako użytkownik -

[centos@localhost ~]$ quota 
Disk quotas for user centos (uid 1000):  
Filesystem             blocks     quota      limit grace    files   quota   limit   grace 
/dev/mapper/cl-home    6052604    56123456   61234568       475     0       0       [centos@localhost ~]$

Poniżej znajduje się błąd wyświetlany użytkownikowi po przekroczeniu sztywnego limitu.

[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/

cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE-
1611.iso.part’: Disk quota exceeded

[centos@localhost Downloads]$

Jak widać, jesteśmy blisko przydziału dyskowego tego użytkownika. Ustawmy ostrzeżenie o miękkim limicie. W ten sposób użytkownik zostanie powiadomiony z wyprzedzeniem przed wygaśnięciem limitów. Z doświadczenia wynika, że ​​użytkownicy końcowi zgłaszają skargi, gdy przychodzą do pracy i muszą poświęcić 45 minut na czyszczenie plików, aby faktycznie zabrać się do pracy.

Jako administrator możemy sprawdzić wykorzystanie limitu za pomocą repquota Komenda.

[root@localhost Downloads]# repquota  /home  
                    Block limits                            File limits  
User            used     soft     hard     grace       used     soft     hard     grace 
----------------------------------------------------------------------------------------
root      --       0         0        0                   3        0        0        
centos    -+ 6189824  56123456 61234568                 541      520      540      6days 

[root@localhost Downloads]#

Jak widać, użytkownik centos przekroczył swój twardy przydział bloków i nie może już używać więcej miejsca na dysku w / home .

- + oznacza, że ​​twardy limit został przekroczony w systemie plików.

Planując limity, trzeba trochę matematyki. Administrator powinien wiedzieć: Ilu użytkowników jest w systemie? Ile wolnego miejsca przydzielić użytkownikom / grupom? Ile bajtów tworzy blok w systemie plików?

Zdefiniuj limity w postaci bloków w odniesieniu do wolnego miejsca na dysku. Zaleca się pozostawienie „bezpiecznego” buforu wolnego miejsca w systemie plików, który pozostanie w najgorszym przypadku: wszystkie limity zostaną przekroczone jednocześnie. Dotyczy to zwłaszcza partycji używanej przez system do zapisywania dzienników.

systemdto nowy sposób uruchamiania usług w systemie Linux. systemd ma zastąpiony sysvinit . systemd przyspiesza uruchamianie systemu Linux i jest obecnie standardowym sposobem zarządzania usługami systemu Linux. Systemd jest stabilny, ale wciąż ewoluuje.

systemd jako system init jest używany do zarządzania zarówno usługami, jak i demonami, które wymagają zmiany statusu po uruchomieniu jądra Linuksa. Po zmianie stanu następuje uruchomienie, zatrzymanie, ponowne załadowanie i dostosowanie stanu usługi.

Najpierw sprawdźmy wersję systemd aktualnie działającą na naszym serwerze.

[centos@localhost ~]$ systemctl --version 
systemd 219 
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[centos@localhost ~]$

Począwszy od wersji CentOS 7, w pełni zaktualizowana w momencie pisania tego tekstu, wersja systemd 219 jest aktualną stabilną wersją.

Możemy również przeanalizować czas ostatniego uruchomienia serwera za pomocą systemd-analysis

[centos@localhost ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[centos@localhost ~]$

Gdy czasy rozruchu systemu są wolniejsze, możemy użyć polecenia systemd-analysis blame .

[centos@localhost ~]$ systemd-analyze blame 
   40.882s kdump.service 
   5.775s NetworkManager-wait-online.service 
   4.701s plymouth-quit-wait.service 
   3.586s postfix.service 
   3.121s systemd-udev-settle.service 
   2.649s tuned.service 
   1.848s libvirtd.service 
   1.437s network.service 
   875ms packagekit.service 
   855ms gdm.service 
   514ms firewalld.service 
   438ms rsyslog.service
   436ms udisks2.service 
   398ms sshd.service 
   360ms boot.mount 
   336ms polkit.service 
   321ms accounts-daemon.service

Podczas pracy z systemd ważne jest zrozumienie pojęcia jednostek .Unitsto zasoby, które systemd umie interpretować. Jednostki są podzielone na 12 typów w następujący sposób -

  • .service
  • .socket
  • .device
  • .mount
  • .automount
  • .swap
  • .target
  • .path
  • .timer
  • .snapshot
  • .slice
  • .scope

W większości będziemy pracować z .service jako jednostkami docelowymi. Zaleca się dalsze badania nad innymi typami. Ponieważ tylko jednostki .service będą miały zastosowanie do uruchamiania i zatrzymywania usług systemowych .

Każda jednostka jest zdefiniowana w pliku znajdującym się w -

  • /lib/systemd/system - pliki jednostek bazowych

  • /etc/systemd/system - zmodyfikowane pliki jednostek uruchamiane w czasie wykonywania

Zarządzaj usługami za pomocą systemctl

Aby pracować z systemd , będziemy musieli bardzo dobrze zapoznać się z poleceniem systemctl . Poniżej przedstawiono najpopularniejsze przełączniki wiersza poleceń dla systemctl .

Przełącznik Akcja
-t Rozdzielana przecinkami wartość typów jednostek, takich jak usługa lub gniazdo
-za Pokazuje wszystkie załadowane jednostki
--stan Wyświetla wszystkie jednostki w zdefiniowanym stanie: obciążenie, podrzędne, aktywne, nieaktywne itp.
-H Wykonuje operację zdalnie. Podaj nazwę hosta lub hosta i użytkownika oddzielone znakiem @.

Podstawowe użycie systemctl

systemctl [operation]
example: systemctl --state [servicename.service]

Szybkie spojrzenie na wszystkie usługi uruchomione na naszym pudełku.

[root@localhost rdc]# systemctl -t service 
UNIT                       LOAD     ACTIVE      SUB     DESCRIPTION

abrt-ccpp.service          loaded   active   exited     Install ABRT coredump   hook 
abrt-oops.service          loaded   active   running    ABRT kernel log watcher 
abrt-xorg.service          loaded   active   running    ABRT Xorg log watcher 
abrtd.service              loaded   active   running    ABRT Automated Bug  Reporting Tool 
accounts-daemon.service    loaded   active   running    Accounts Service 
alsa-state.service         loaded   active   running    Manage Sound Card State (restore and store) 
atd.service                loaded   active   running    Job spooling tools 
auditd.service             loaded   active   running    Security Auditing Service 
avahi-daemon.service       loaded   active   running    Avahi mDNS/DNS-SD Stack 
blk-availability.service   loaded   active   exited     Availability of block devices 
bluetooth.service          loaded   active   running    Bluetooth service 
chronyd.service            loaded   active   running    NTP client/server

Zatrzymywanie usługi

Najpierw zatrzymajmy usługę bluetooth.

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

Jak widać, usługa bluetooth jest teraz nieaktywna.

Aby ponownie uruchomić usługę Bluetooth.

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

Note- Nie określiliśmy bluetooth.service, ponieważ domniemana jest usługa .service . Dobrą praktyką jest myślenie o typie jednostki dołączanej do usługi, z którą mamy do czynienia. Dlatego od teraz będziemy używać rozszerzenia .service, aby wyjaśnić, że pracujemy nad operacjami jednostek usługowych.

Podstawowe czynności, które można wykonać w usłudze, to:

Początek Uruchamia usługę
Zatrzymać Zatrzymuje usługę
Przeładować Ponownie ładuje aktywną konfigurację usługi bez jej zatrzymywania (jak kill -HUP w inicjalizacji systemu v)
Uruchom ponownie Uruchamia, a następnie zatrzymuje usługę
Włączyć Uruchamia usługę w czasie rozruchu
Wyłączyć Zatrzymuje automatyczne uruchamianie usługi w czasie wykonywania

Powyższe działania są używane głównie w następujących scenariuszach -

Początek Aby uruchomić usługę, która została zatrzymana.
Zatrzymać Aby tymczasowo zamknąć usługę (na przykład gdy usługa musi zostać zatrzymana, aby uzyskać dostęp do plików zablokowanych przez usługę, jak podczas aktualizacji usługi)
Przeładować Gdy plik konfiguracyjny został wyedytowany i chcemy zastosować nowe zmiany bez zatrzymywania usługi.
Uruchom ponownie W tym samym scenariuszu, co przeładowanie, ale usługa nie obsługuje ponownego ładowania .
Włączyć Gdy chcemy, aby wyłączona usługa działała w czasie rozruchu.
Wyłączyć Używany głównie w przypadku konieczności zatrzymania usługi, ale uruchamia się on podczas rozruchu.

Aby sprawdzić stan usługi -

[root@localhost]# systemctl status network.service 
network.service - LSB: Bring up/down networking 
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) 
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago 
Docs: man:systemd-sysv-generator(8)

Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)

localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... 
localhost.localdomain network[923]: Bringing up loopback interface:  [  OK  ] 
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.

[root@localhost]#

Pokaż nam aktualny stan usługi sieciowej . Jeśli chcemy zobaczyć wszystkie usługi związane z siecią, możemy skorzystać -

[root@localhost]# systemctl --all -t service | grep -i network 
network.service                       loaded    active    exited    LSB: Bring up/ 
NetworkManager-wait-online.service    loaded    active    exited    Network Manager  
NetworkManager.service                loaded    active    running   Network Manager 
ntpd.service                          loaded    inactive  dead      Network Time  
rhel-import-state.service             loaded    active    exited    Import network      

[root@localhost]#

Dla osób zaznajomionych z sysinitmetody zarządzania usługami, ważne jest, aby przejść na systemd . systemd to nowy sposób uruchamiania i zatrzymywania usług demonów w systemie Linux.

systemctlto narzędzie używane do kontrolowania systemd. systemctl zapewnia administratorom CentOS możliwość wykonywania wielu operacji na systemd, w tym -

  • Skonfiguruj jednostki systemowe
  • Uzyskaj status systemd untis
  • Uruchom i zatrzymaj usługi
  • Włącz / wyłącz usługi systemowe dla środowiska uruchomieniowego itp.

Składnia polecenia dla systemctl jest dość podstawowa, ale może powodować problemy z przełącznikami i opcjami. Przedstawimy najważniejsze funkcje systemctl potrzebne do administrowania CentOS Linux.

Basic systemctl syntax: 
systemctl [OPTIONS] COMMAND [NAME]

Poniżej przedstawiono typowe polecenia używane z systemctl -

  • start
  • stop
  • restart
  • reload
  • status
  • is-active
  • list-units
  • enable
  • disable
  • cat
  • show

Omówiliśmy już uruchamianie , zatrzymywanie , przeładowywanie , restartowanie , włączanie i wyłączanie za pomocą systemctl. Przejdźmy więc do pozostałych najczęściej używanych poleceń.

status

W najprostszej formie polecenie statusu może być używane do przeglądania stanu systemu jako całości -

[root@localhost rdc]# systemctl status 
 ● localhost.localdomain 
  State: running 
  Jobs: 0 queued
  Failed: 0 units 
  Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago 
CGroup: / 
       ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 
       ├─user.slice 
       │ └─user-1002.slice 
       │   └─session-1.scope 
       │     ├─2869 gdm-session-worker [pam/gdm-password] 
       │     ├─2881 /usr/bin/gnome-keyring-daemon --daemonize --login 
       │     ├─2888 gnome-session --session gnome-classic 
       │     ├─2895 dbus-launch --sh-syntax --exit-with-session

Powyższy wynik został skondensowany. W rzeczywistym świecie status systemctl wyświetli około 100 linii przetworzonych statusów procesów.

Powiedzmy, że chcemy sprawdzić stan naszej usługi zapory -

[root@localhost rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago 
 Docs: man:firewalld(1) 
Main PID: 825 (firewalld) 
CGroup: /system.slice/firewalld.service 
       └─825 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Jak widać, nasza usługa zapory ogniowej jest obecnie aktywna i działa od ponad 4 godzin.

jednostki-listy

Polecenie list-units pozwala nam wyświetlić wszystkie jednostki określonego typu. Sprawdźmy, czy nie ma gniazd zarządzanych przez systemd -

[root@localhost]# systemctl list-units --type=socket 
UNIT                         LOAD     ACTIVE     SUB     DESCRIPTION     
avahi-daemon.socket          loaded   active  running    Avahi mDNS/DNS-SD Stack Activation Socket 
cups.socket                  loaded   active  running    CUPS Printing Service Sockets 
dbus.socket                  loaded   active  running    D-Bus System Message Bus Socket 
dm-event.socket              loaded   active  listening  Device-mapper event daemon FIFOs 
iscsid.socket                loaded   active  listening  Open-iSCSI iscsid Socket
iscsiuio.socket              loaded   active  listening  Open-iSCSI iscsiuio Socket 
lvm2-lvmetad.socket          loaded   active  running    LVM2 metadata daemon socket 
lvm2-lvmpolld.socket         loaded   active  listening  LVM2 poll daemon socket 
rpcbind.socket               loaded   active  listening  RPCbind Server Activation Socket 
systemd-initctl.socket       loaded   active  listening  /dev/initctl Compatibility Named Pipe 
systemd-journald.socket      loaded   active  running    Journal Socket 
systemd-shutdownd.socket     loaded   active  listening  Delayed Shutdown Socket 
systemd-udevd-control.socket loaded   active  running    udev Control Socket 
systemd-udevd-kernel.socket  loaded   active  running    udev Kernel Socket 
virtlockd.socket             loaded   active  listening  Virtual machine lock manager socket 
virtlogd.socket              loaded   active  listening  Virtual machine log manager socket

Teraz sprawdźmy aktualnie uruchomione usługi -

[root@localhost rdc]# systemctl list-units --type=service 
UNIT                      LOAD     ACTIVE     SUB     DESCRIPTION 
abrt-ccpp.service         loaded   active   exited    Install ABRT coredump hook 
abrt-oops.service         loaded   active   running   ABRT kernel log watcher 
abrt-xorg.service         loaded   active   running   ABRT Xorg log watcher 
abrtd.service             loaded   active   running   ABRT Automated Bug Reporting Tool 
accounts-daemon.service   loaded   active   running   Accounts Service 
alsa-state.service        loaded   active   running   Manage Sound Card State (restore and store) 
atd.service               loaded   active   running   Job spooling tools 
auditd.service            loaded   active   running   Security Auditing Service

jest aktywny

Polecenie is-active jest przykładem poleceń systemctl zaprojektowanych do zwracania informacji o stanie urządzenia.

[root@localhost rdc]# systemctl is-active ksm.service 
active

kot

cat to jedno z rzadko używanych poleceń. Zamiast używać cat w powłoce i wpisywać ścieżkę do pliku jednostkowego, po prostu użyj systemctl cat .

[root@localhost]# systemctl cat firewalld 
# /usr/lib/systemd/system/firewalld.service
[Unit] 
Description=firewalld - dynamic firewall daemon 
Before=network.target 
Before=libvirtd.service 
Before = NetworkManager.service 
After=dbus.service 
After=polkit.service 
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service 
Documentation=man:firewalld(1)

[Service] 
EnvironmentFile = -/etc/sysconfig/firewalld 
ExecStart = /usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS ExecReload = /bin/kill -HUP $MAINPID 
# supress to log debug and error output also to /var/log/messages 
StandardOutput = null 
StandardError = null

Type = dbus 
BusName = org.fedoraproject.FirewallD1

[Install] 
WantedBy = basic.target 
Alias = dbus-org.fedoraproject.FirewallD1.service

[root@localhost]#

Teraz, gdy zbadaliśmy bardziej szczegółowo zarówno systemd, jak i systemctl, użyjmy ich do zarządzania zasobami w cgroups lub kontrolnych .

cgroups lub Control Groups to funkcja jądra Linuksa, która umożliwia administratorowi przydzielanie lub ograniczanie zasobów systemowych dla usług, a także dla grup.

Aby wyświetlić listę aktywnych grup kontrolnych , możemy użyć następującego polecenia ps -

[root@localhost]# ps xawf -eo pid,user,cgroup,args 
8362 root     -                            \_ [kworker/1:2] 
1 root        -                           /usr/lib/systemd/systemd --switched-
   root --system --    deserialize 21 
507 root     7:cpuacct,cpu:/system.slice  /usr/lib/systemd/systemd-journald 
527 root     7:cpuacct,cpu:/system.slice  /usr/sbin/lvmetad -f 
540 root     7:cpuacct,cpu:/system.slice  /usr/lib/systemd/systemd-udevd 
715 root     7:cpuacct,cpu:/system.slice  /sbin/auditd -n 
731 root     7:cpuacct,cpu:/system.slice   \_ /sbin/audispd 
734 root     7:cpuacct,cpu:/system.slice       \_ /usr/sbin/sedispatch 
737 polkitd  7:cpuacct,cpu:/system.slice  /usr/lib/polkit-1/polkitd --no-debug 
738 rtkit    6:memory:/system.slice/rtki  /usr/libexec/rtkit-daemon 
740 dbus     7:cpuacct,cpu:/system.slice  /bin/dbus-daemon --system --
   address=systemd: --nofork --nopidfile --systemd-activation

Zarządzanie zasobami, począwszy od CentOS 6.X, zostało na nowo zdefiniowane wraz z implementacją init systemd . Myśląc o zarządzaniu zasobami dla usług, należy przede wszystkim skupić się na grupach cgroup .cgroupsrozwinęły się dzięki systemd w zakresie funkcjonalności i prostoty.

Celem grup cgroup w zarządzaniu zasobami jest: - żadna usługa nie może wyłączyć systemu jako całości. Lub żaden pojedynczy proces usługi (być może źle napisany skrypt PHP) nie zakłóci funkcjonalności serwera, zużywając zbyt wiele zasobów.

cgroups umożliwiają kontrolę zasobów jednostek dla następujących zasobów -

  • CPU - Ogranicz zadania intensywnie korzystające z procesora, które nie są krytyczne, jak inne, mniej intensywne zadania

  • Memory - Ogranicz ilość pamięci, którą usługa może zużywać

  • Disks - Ograniczanie we / wy dysku

** Czas procesora: **

Zadania wymagające mniejszego priorytetu procesora mogą mieć niestandardowo skonfigurowane segmenty procesora.

Przyjrzyjmy się na przykład następującym dwóm usługom.

Grzeczna usługa CPU 1

[root@localhost]# systemctl cat polite.service 
# /etc/systemd/system/polite.service 
[Unit] 
Description = Polite service limits CPU Slice and Memory 
After=remote-fs.target nss-lookup.target

[Service] 
MemoryLimit = 1M 
ExecStart = /usr/bin/sha1sum /dev/zero 
ExecStop = /bin/kill -WINCH ${MAINPID} 
WantedBy=multi-user.target

# /etc/systemd/system/polite.service.d/50-CPUShares.conf 
[Service] 
CPUShares = 1024 
[root@localhost]#

Evil CPU Service 2

[root@localhost]# systemctl cat evil.service 
# /etc/systemd/system/evil.service 
[Unit] 
Description = I Eat You CPU 
After=remote-fs.target nss-lookup.target

[Service] 
ExecStart = /usr/bin/md5sum /dev/zero 
ExecStop = /bin/kill -WINCH ${MAINPID} 
WantedBy=multi-user.target

# /etc/systemd/system/evil.service.d/50-CPUShares.conf 
[Service] 
CPUShares = 1024 
[root@localhost]#

Ustawmy usługę Polite Service przy użyciu niższego priorytetu procesora -

systemctl set-property polite.service CPUShares = 20  
/system.slice/polite.service
1   70.5   124.0K        -        -  

/system.slice/evil.service
1   99.5   304.0K        -        -

Jak widać, w okresie normalnego czasu bezczynności systemu oba nieuczciwe procesy nadal używają cykli procesora. Jednak ta, która ma mniej przedziałów czasu, zużywa mniej czasu procesora. Mając to na uwadze, możemy zobaczyć, jak użycie krótszego przedziału czasu pozwoliłoby podstawowym zadaniom na lepszy dostęp do zasobów systemowych.

Aby ustawić usługi dla każdego zasobu, metoda set-property definiuje następujące parametry -

systemctl set-property name parameter=value

Plasterki procesora CPUShares
Limit pamięci MemoryLimit
Miękki limit pamięci MemorySoftLimit
Block IO Weight BlockIOWeight
Limit urządzeń blokowych (określony w / wolumin / ścieżka)) BlockIODeviceWeight
Przeczytaj IO BlockIOReadBandwidth
Zapis na dysku IO BlockIOReadBandwidth

Najczęściej usługi będą ograniczone przez użycie procesora , limity pamięci i odczyt / zapis we / wy .

Po zmianie każdego należy przeładować systemd i zrestartować usługę -

systemctl set-property foo.service CPUShares = 250 
systemctl daemon-reload 
systemctl restart foo.service

Skonfiguruj grupy CGroup w CentOS Linux

Aby tworzyć niestandardowe grupy cgroup w CentOS Linux, musimy najpierw zainstalować usługi i je skonfigurować.

Step 1 - Zainstaluj libcgroup (jeśli nie jest jeszcze zainstalowana).

[root@localhost]# yum install libcgroup 
Package libcgroup-0.41-11.el7.x86_64 already installed and latest version 
Nothing to do 
[root@localhost]#

Jak widać, domyślnie CentOS 7 ma zainstalowaną bibliotekę libcgroup z instalatorem wszystkiego . Użycie minimalnego instalatora będzie wymagało od nas zainstalowania narzędzi libcgroup wraz z wszelkimi zależnościami.

Step 2 - Uruchom i włącz usługę cgconfig.

[root@localhost]# systemctl enable cgconfig 
Created symlink from /etc/systemd/system/sysinit.target.wants/cgconfig.service to /usr/lib/systemd/system/cgconfig.service. 
[root@localhost]# systemctl start cgconfig 
[root@localhost]# systemctl status cgconfig 
● cgconfig.service - Control Group configuration service 
Loaded: loaded (/usr/lib/systemd/system/cgconfig.service; enabled; vendor preset: disabled) 
Active: active (exited) since Mon 2017-01-23 02:51:42 EST; 1min 21s ago 
Main PID: 4692 (code=exited, status = 0/SUCCESS) 
Memory: 0B 
CGroup: /system.slice/cgconfig.service  

Jan 23 02:51:42 localhost.localdomain systemd[1]: Starting Control Group configuration service... 
Jan 23 02:51:42 localhost.localdomain systemd[1]: Started Control Group configuration service. 
[root@localhost]#

Poniżej przedstawiono typowe polecenia używane w zarządzaniu procesami - bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.

Pracuj z procesami

Quick Note: Process PID in Linux

W Linuksie każdy działający proces otrzymuje numer PID lub numer identyfikacyjny procesu. Ten PID to sposób, w jaki CentOS identyfikuje określony proces. Jak już omówiliśmy, pierwszym uruchomionym procesem jest systemd , któremu nadano PID równy 1 w CentOS.

Pgrep jest używany do uzyskania Linux PID dla danej nazwy procesu.

[root@CentOS]# pgrep systemd 
1 
[root@CentOS]#

Jak widać, polecenie pgrep zwraca bieżący PID z systemd.

Podstawowy proces CentOS i zarządzanie zadaniami w CentOS

Podczas pracy z procesami w systemie Linux ważne jest, aby wiedzieć, jak podstawowe procesy pierwszego planu i tła są wykonywane w wierszu poleceń.

  • fg - Przenosi proces na pierwszy plan

  • bg - Przenosi proces na dalszy plan

  • jobs - Lista bieżących procesów podłączonych do powłoki

  • ctrl+z - Kombinacja klawiszy Control + Z, aby uśpić bieżący proces

  • & - Rozpoczyna proces w tle

Zacznijmy używać polecenia powłoki sleep .sleeppo prostu zrobi tak, jak zostało to nazwane, spać przez określony czas: spać .

[root@CentOS ~]$ jobs [root@CentOS ~]$ sleep 10 & 
[1] 12454

[root@CentOS ~]$ sleep 20 & [2] 12479 [root@CentOS ~]$ jobs 
[1]-  Running                 sleep 10 & 
[2]+  Running                 sleep 20 &

[cnetos@CentOS ~]$

Teraz przenieśmy pierwszą pracę na pierwszy plan -

[root@CentOS ~]$ fg 1 
sleep 10

Jeśli podążasz za tym, zauważysz, że zadanie na pierwszym planie utknęło w twojej powłoce. Teraz uśpijmy proces, a następnie włączmy go ponownie w tle.

  • Hit control + z
  • Wpisz: bg 1, wysyłając pierwszą pracę w tle i uruchamiając ją.
[root@CentOS ~]$ fg 1 sleep 20 ^Z [1]+ Stopped sleep 20 [root@CentOS ~]$ bg 1 
[1]+ sleep 20 &

[root@CentOS ~]$

nohup

Podczas pracy z powłoki lub terminala warto zauważyć, że domyślnie wszystkie procesy i zadania podłączone do powłoki kończą się, gdy powłoka jest zamknięta lub użytkownik się wyloguje. Podczas korzystania z nohup proces będzie kontynuowany, jeśli użytkownik wyloguje się lub zamknie powłokę, do której jest podłączony.

[root@CentOS]# nohup ping www.google.com & 
[1] 27299 
nohup: ignoring input and appending output to ‘nohup.out’

[root@CentOS]# pgrep ping 
27299

[root@CentOS]# kill -KILL `pgrep ping` 
[1]+  Killed                  nohup ping www.google.com

[root@CentOS rdc]# cat nohup.out  
PING www.google.com (216.58.193.68) 56(84) bytes of data. 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms

ps Command

Plik pspolecenie jest powszechnie używane przez administratorów do badania migawek określonego procesu. ps jest powszechnie używany z grep do odfiltrowania określonego procesu do analizy.

[root@CentOS ~]$ ps axw | grep python 
762   ?        Ssl    0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid 
1296  ?        Ssl    0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P 
15550 pts/0    S+     0:00 grep --color=auto python

W powyższym poleceniu widzimy wszystkie procesy korzystające z interpretera Pythona . Do wyników dołączono również nasze polecenie grep, które szukało ciągu znaków python .

Poniżej przedstawiono najpopularniejsze przełączniki wiersza poleceń używane w programie ps .

Przełącznik Akcja
za Wyklucza ograniczenia tylko procesów raportowania dla bieżącego użytkownika
x Pokazuje procesy niepodłączone do terminala lub powłoki
w Formatuje szerokie wyświetlanie danych wyjściowych
mi Pokazuje środowisko po poleceniu
-mi Wybiera wszystkie procesy
-o Sformatowane wyjście zdefiniowane przez użytkownika
-u Pokazuje wszystkie procesy określonego użytkownika
-DO Pokazuje wszystkie procesy według nazwy lub identyfikatora procesu
--sortować Sortuje procesy według definicji

Aby zobaczyć wszystkie procesy używane przez użytkownika nobody -

[root@CentOS ~]$ ps -u nobody PID TTY TIME CMD 1853 ? 00:00:00 dnsmasq [root@CentOS ~]$

Aby zobaczyć wszystkie informacje o procesie firewalld -

[root@CentOS ~]$ ps -wl -C firewalld F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 0 762 1 0 80 0 - 81786 poll_s ? 00:00:01 firewalld [root@CentOS ~]$

Zobaczmy, które procesy zużywają najwięcej pamięci -

[root@CentOS ~]$ ps aux --sort=-pmem | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND cnetos 6130 0.7 5.7 1344512 108364 ? Sl 02:16 0:29 /usr/bin/gnome-shell cnetos 6449 0.0 3.4 1375872 64440 ? Sl 02:16 0:00 /usr/libexec/evolution-calendar-factory root 5404 0.6 2.1 190256 39920 tty1 Ssl+ 02:15 0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 cnetos 6296 0.0 1.7 1081944 32136 ? Sl 02:16 0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify cnetos 6350 0.0 1.5 560728 29844 ? Sl 02:16 0:01 /usr/bin/prlsga cnetos 6158 0.0 1.4 1026956 28004 ? Sl 02:16 0:00 /usr/libexec/gnome-shell-calendar-server cnetos 6169 0.0 1.4 1120028 27576 ? Sl 02:16 0:00 /usr/libexec/evolution-source-registry root 762 0.0 1.4 327144 26724 ? Ssl 02:09 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid cnetos 6026 0.0 1.4 1090832 26376 ? Sl 02:16 0:00 /usr/libexec/gnome-settings-daemon [root@CentOS ~]$

Zobacz wszystkie procesy według centów użytkownika i formatu, wyświetlając niestandardowe dane wyjściowe -

[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm 
   PID    USER     COMMAND 
   5802  centos   gnome-keyring-d 
   5812  cnetos   gnome-session 
   5819  cnetos   dbus-launch 
   5820  cnetos   dbus-daemon 
   5888  cnetos   gvfsd 
   5893  cnetos   gvfsd-fuse 
   5980  cnetos   ssh-agent   
   5996  cnetos   at-spi-bus-laun

pstree Command

pstreejest podobny do ps, ale nie jest często używany. Wyświetla procesy w bardziej uporządkowanej formie drzewa.

[centos@CentOS ~]$ pstree 
  systemd─┬─ModemManager───2*[{ModemManager}] 
          ├─NetworkManager─┬─dhclient 
          │                └─2*[{NetworkManager}] 
          ├─2*[abrt-watch-log] 
          ├─abrtd 
          ├─accounts-daemon───2*[{accounts-daemon}] 
          ├─alsactl 
          ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} 
          │                 └─3*[{at-spi-bus-laun}] 
          ├─at-spi2-registr───2*[{at-spi2-registr}] 
          ├─atd 
          ├─auditd─┬─audispd─┬─sedispatch 
          │        │         └─{audispd} 
          │        └─{auditd} 
          ├─avahi-daemon───avahi-daemon 
          ├─caribou───2*[{caribou}] 
          ├─cgrulesengd 
          ├─chronyd 
          ├─colord───2*[{colord}] 
          ├─crond 
          ├─cupsd

Całkowity wynik z pstree może przekroczyć 100 linii. Zwykle ps poda bardziej przydatne informacje.

góra Polecenie

topjest jednym z najczęściej używanych poleceń podczas rozwiązywania problemów z wydajnością w systemie Linux. Jest to przydatne do statystyk w czasie rzeczywistym i monitorowania procesów w systemie Linux. Poniżej znajduje się domyślne wyjście polecenia top po wywołaniu z wiersza poleceń.

Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie 
%Cpu(s):  2.3 us,  2.0 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
KiB Mem :  1879668 total,   177020 free,   607544 used,  1095104 buff/cache 
KiB Swap:  3145724 total,  3145428 free,      296 used.  1034648 avail Mem 
 
PID    USER     PR   NI    VIRT     RES   SHR    S  %CPU  %MEM   TIME+   COMMAND
5404   root     20   0    197832   48024  6744   S   1.3   2.6  1:13.22   Xorg
8013   centos   20   0    555316   23104  13140  S   1.0   1.2  0:14.89   gnome-terminal-
6339   centos   20   0    332336   6016   3248   S   0.3   0.3  0:23.71   prlcc
6351   centos   20   0    21044    1532   1292   S   0.3   0.1  0:02.66   prlshprof

Typowe klawisze skrótu używane podczas pracy na górze ( dostęp do klawiszy skrótu uzyskuje się po naciśnięciu klawisza, gdy top działa w powłoce).

Komenda Akcja
b Włącza / wyłącza pogrubienie w górnym menu
z Zmienia schemat kolorów
l Cyklicznie średni kurs obciążenia
m Cyklicznie średni nagłówek w pamięci
t Nagłówek informacji o zadaniu
godz Menu pomocy
Shift + F. Dostosowuje sortowanie i pola wyświetlania

Poniżej przedstawiono typowe przełączniki wiersza poleceń dla top .

Komenda Akcja
-o Sortuje według kolumny (można poprzedzić - lub +, aby posortować rosnąco lub malejąco)
-u Pokazuje tylko procesy od określonego użytkownika
-re Aktualizuje czas opóźnienia top
-O Zwraca listę kolumn, w których u góry można zastosować sortowanie

Sortowanie ekran opcji w górę, przedstawione za pomocą Shift + F . Ten ekran umożliwia dostosowanie górnych opcji wyświetlania i sortowania.

Fields Management for window 1:Def, whose current sort field is %MEM 
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 
 'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!
 
* PID     = Process Id             TGID    = Thread Group Id      
* USER    = Effective User Name    ENVIRON = Environment vars     
* PR      = Priority               vMj     = Major Faults delta   
* NI      = Nice Value             vMn     = Minor Faults delta   
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB)  
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode  
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode
* S       = Process Status         nsNET   = NET namespace Inode  
* %CPU    = CPU Usage              nsPID   = PID namespace Inode  
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode 
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode  
* COMMAND = Command Name/Line 
PPID    = Parent Process pid
UID     = Effective User Id

u góry , pokazując procesy dla użytkownika rdc i posortowane według użycia pamięci -

PID   USER  %MEM  PR  NI    VIRT    RES    SHR    S %CPU     TIME+    COMMAND
 6130  rdc    6.2  20   0  1349592  117160  33232  S  0.0   1:09.34    gnome-shell
 6449  rdc    3.4  20   0  1375872   64428  21400  S  0.0   0:00.43    evolution-calen
 6296  rdc    1.7  20   0  1081944   32140  22596  S  0.0   0:00.40    evolution-alarm
 6350  rdc    1.6  20   0   560728   29844   4256  S  0.0   0:10.16    prlsga
 6281  rdc    1.5  20   0  1027176   28808  17680  S  0.0   0:00.78    nautilus
 6158  rdc    1.5  20   0  1026956   28004  19072  S  0.0   0:00.20    gnome-shell-cal

Wyświetlanie prawidłowych górnych pól (skondensowane) -

[centos@CentOS ~]$ top -O 
PID 
PPID 
UID 
USER 
RUID 
RUSER 
SUID 
SUSER 
GID 
GROUP 
PGRP 
TTY 
TPGID

kill Command

Plik killpolecenie służy do zabijania procesu z powłoki poleceń za pośrednictwem jego PID. Po zabiciu procesu, musimy podać sygnał do wysłania. Sygnał pozwala jądru wiedzieć, jak chcemy zakończyć proces. Najczęściej używanymi sygnałami są -

  • SIGTERMjest implikowane, ponieważ jądro informuje proces, że powinien się zatrzymać, gdy jest to bezpieczne. SIGTERM daje procesowi możliwość bezpiecznego wyjścia i wykonania operacji bezpiecznego wyjścia.

  • SIGHUPwiększość demonów uruchomi się ponownie po wysłaniu SIGHUP . Jest to często używane w procesach, gdy wprowadzono zmiany w pliku konfiguracyjnym.

  • SIGKILLponieważ SIGTERM jest równoważne z żądaniem zamknięcia procesu. Jądro potrzebuje opcji zakończenia procesu, który nie spełnia żądań. Gdy proces jest zawieszony, opcja SIGKILL służy do jawnego zamykania procesu.

Aby wyświetlić listę wszystkich sygnałów, które można wysłać za pomocą opcji kill, można użyć opcji -l -

[root@CentOS]# kill -l 
1) SIGHUP           2) SIGINT         3) SIGQUIT        4) SIGILL         5) SIGTRAP
6) SIGABRT          7) SIGBUS         8) SIGFPE         9) SIGKILL       10) SIGUSR1
11) SIGSEGV        12) SIGUSR2       13) SIGPIPE       14) SIGALRM       15) SIGTERM
16) SIGSTKFLT      17) SIGCHLD       18) SIGCONT       19) SIGSTOP       20) SIGTSTP
21) SIGTTIN        22) SIGTTOU       23) SIGURG        24) SIGXCPU       25) SIGXFSZ
26) SIGVTALRM      27) SIGPROF       28) SIGWINCH      29) SIGIO         30) SIGPWR
31) SIGSYS         34) SIGRTMIN      35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4     39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9     44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12   47) SIGRTMIN+13 
48) SIGRTMIN+14    49) SIGRTMIN+15   50) SIGRTMAX-14   51) SIGRTMAX-13   52) SIGRTMAX-12 
53) SIGRTMAX-11    54) SIGRTMAX-10   55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6     59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1     64) SIGRTMAX

[root@CentOS rdc]#

Użycie SIGHUP do ponownego uruchomienia systemu.

[root@CentOS]# pgrep systemd 
1 
464 
500 
643 
15071

[root@CentOS]# kill -HUP 1

[root@CentOS]# pgrep systemd
1 
464 
500 
643 
15196 
15197 
15198

[root@CentOS]#

pkillpozwoli administratorowi na wysłanie sygnału zabicia według nazwy procesu.

[root@CentOS]# pgrep ping 
19450 
[root@CentOS]# pkill -9 ping 
[root@CentOS]# pgrep ping 
[root@CentOS]#

killallzabije wszystkie procesy. Uważaj, używając funkcji killall jako root, ponieważ spowoduje to zabicie wszystkich procesów dla wszystkich użytkowników.

[root@CentOS]# killall chrome

darmowe polecenie

freejest dość prostym poleceniem, często używanym do szybkiego sprawdzenia pamięci systemu. Wyświetla całkowitą ilość używanej pamięci fizycznej i pamięci wymiany.

[root@CentOS]# free 
             total       used      free      shared      buff/cache      available 
Mem:        1879668     526284    699796     10304        653588          1141412 
Swap:       3145724          0    3145724

[root@CentOS]#

niezłe polecenie

nicepozwoli administratorowi ustawić priorytet planowania procesu pod względem wykorzystania procesora. Przyjemność to w zasadzie sposób, w jaki jądro planuje przedziały czasu procesora dla procesu lub zadania. Domyślnie zakłada się, że proces ma równy dostęp do zasobów procesora.

Najpierw użyjmy top, aby sprawdzić zgodność aktualnie uruchomionych procesów.

PID   USER   PR   NI    VIRT    RES    SHR   S  %CPU  %MEM     TIME+    COMMAND
28    root   39   19       0      0      0   S  0.0   0.0    0:00.17    khugepaged
690   root   39   19   16808   1396   1164   S  0.0   0.1    0:00.01    alsactl]
9598  rdc    39   19  980596  21904  10284   S  0.0   1.2    0:00.27    tracker-extract
9599  rdc    39   19  469876   9608   6980   S  0.0   0.5    0:00.04    tracker-miner-a
9609  rdc    39   19  636528  13172   8044   S  0.0   0.7    0:00.12    tracker-miner-f
9611  rdc    39   19  469620   8984   6496   S  0.0   0.5    0:00.02    tracker-miner-u
27    root   25    5       0      0      0   S  0.0   0.0    0:00.00    ksmd
637   rtkit  21    1  164648   1276   1068   S  0.0   0.1    0:00.11    rtkit-daemon
1     root   20    0  128096   6712   3964   S  0.3   0.4    0:03.57    systemd
2     root   20    0       0      0      0   S  0.0   0.0    0:00.01    kthreadd
3     root   20    0       0      0      0   S  0.0   0.0    0:00.50    ksoftirqd/0
7     root   20    0       0      0      0   S  0.0   0.0    0:00.00    migration/0
8     root   20    0       0      0      0   S  0.0   0.0    0:00.00    rcu_bh
9     root   20    0       0      0      0   S  0.0   0.0    0:02.07    rcu_sched

Chcemy skupić się na kolumnie NICE przedstawionej przez NI . Zakres uprzejmości może wynosić od -20 do dodatniej 19. -20 reprezentuje najwyższy podany priorytet.

nohup nice --20 ping www.google.com &

renice

renice pozwala nam zmienić bieżący priorytet procesu, który już działa.

renice 17 -p 30727

Powyższe polecenie obniży priorytet naszego polecenia procesu ping .

firewalld to domyślny kontroler frontonu dla iptables na CentOS. Firewalld front-end ma dwie główne zalety w stosunku do surowych iptables -

  • Używa łatwych w konfiguracji i implementacji stref, abstrakcyjnych łańcuchów i reguł.

  • Zestawy reguł są dynamiczne, co oznacza, że ​​połączenia stanowe są nieprzerwane, gdy ustawienia są zmieniane i / lub modyfikowane.

Pamiętaj, że firewalld jest opakowaniem dla iptables - nie zastępuje. Chociaż niestandardowe polecenia iptables mogą być używane z firewalld , zaleca się używanie firewalld, aby nie przerywać funkcjonalności zapory.

Najpierw upewnijmy się, że firewalld jest zarówno uruchomiony, jak i włączony.

[root@CentOS rdc]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon 
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) 
Active: active (running) since Thu 2017-01-26 21:42:05 MST; 3h 46min ago 
 Docs: man:firewalld(1) 
Main PID: 712 (firewalld) 
  Memory: 34.7M 
 CGroup: /system.slice/firewalld.service 
       └─712 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Widzimy, że firewalld jest zarówno aktywny (do uruchomienia przy starcie), jak i aktualnie działa. Jeśli nieaktywny lub nie rozpoczął, możemy użyć -

systemctl start firewalld && systemctl enable firewalld

Teraz, gdy mamy skonfigurowaną usługę firewalld, upewnijmy się, że działa.

[root@CentOS]# firewall-cmd --state 
running 
[root@CentOS]#

Widzimy, że usługa firewalld jest w pełni funkcjonalna.

Firewalld działa na koncepcji stref . Strefa jest stosowana do interfejsów sieciowych za pośrednictwem Menedżera sieci. Omówimy to podczas konfigurowania sieci . Jednak na razie zmiana domyślnej strefy spowoduje zmianę wszystkich kart sieciowych pozostawionych w domyślnym stanie „Strefa domyślna”.

Rzućmy okiem na każdą strefę, która wychodzi z pudełka z zaporą ogniową .

Sr.No. Strefa i opis
1

drop

Niski poziom zaufania. Wszystkie połączenia przychodzące i pakiety są porzucane i tylko połączenia wychodzące są możliwe dzięki pełnieniu stanu

2

block

Na połączenia przychodzące odpowiada komunikat icmp informujący inicjatora, że ​​żądanie jest zabronione

3

public

Wszystkie sieci są ograniczone. Jednak wybrane połączenia przychodzące mogą być jawnie dozwolone

4

external

Konfiguruje firewalld dla NAT. Sieć wewnętrzna pozostaje prywatna, ale dostępna

5

dmz

Dozwolone są tylko niektóre połączenia przychodzące. Używany do systemów w izolacji DMZ

6

work

Domyślnie ufaj większej liczbie komputerów w sieci, zakładając, że system znajduje się w bezpiecznym środowisku pracy

7

hone

Domyślnie więcej usług jest niefiltrowanych. Zakładając, że system znajduje się w sieci domowej, w której będą używane usługi takie jak NFS, SAMBA i SSDP

8

trusted

Wszystkie komputery w sieci są zaufane. Większość połączeń przychodzących jest nieskrępowana.This is not meant for interfaces exposed to the Internet

Najczęściej używane strefy to: publiczna, zrzutowa, praca i dom.

Niektóre scenariusze, w których byłaby używana każda wspólna strefa, to:

  • public- Jest to najczęściej używana strefa przez administratora. Umożliwi to zastosowanie niestandardowych ustawień i przestrzeganie specyfikacji RFC dotyczących operacji w sieci LAN.

  • drop- Dobrym przykładem użycia kropli jest konferencja bezpieczeństwa, publiczne Wi-Fi lub interfejs podłączony bezpośrednio do Internetu. drop zakłada, że ​​wszystkie niezamówione żądania są złośliwe, w tym sondy ICMP. Więc każde żądanie spoza stanu nie otrzyma odpowiedzi. Wadą upuszczania jest to, że może zepsuć funkcjonalność aplikacji w pewnych sytuacjach wymagających ścisłej zgodności z RFC.

  • work- Korzystasz z częściowo zabezpieczonej korporacyjnej sieci LAN. Tam, gdzie można założyć, że cały ruch jest umiarkowanie bezpieczny. Oznacza to, że nie jest to Wi-Fi i prawdopodobnie mamy IDS, IPS i zabezpieczenia fizyczne lub 802.1x. Powinniśmy również znać osoby korzystające z sieci LAN.

  • home- Jesteś w domowej sieci LAN. Jesteś osobiście odpowiedzialny za każdy system i użytkownika w sieci LAN. Wiesz, że każda maszyna w sieci LAN nie została naruszona. Często pojawiają się nowe usługi udostępniania multimediów zaufanym osobom i nie musisz poświęcać dodatkowego czasu ze względu na bezpieczeństwo.

Strefy i interfejsy sieciowe działają na poziomie od jednego do wielu. Jeden interfejs sieciowy może mieć zastosowaną tylko jedną strefę naraz. Chociaż strefa może być stosowana jednocześnie do wielu interfejsów.

Zobaczmy, jakie strefy są dostępne i jakie są obecnie stosowane.

[root@CentOS]# firewall-cmd --get-zones 
 work drop internal external trusted home dmz public block

[root@CentOS]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

Gotowy do dodania niestandardowych reguł w firewalld?

Najpierw zobaczmy, jak wygląda nasze pudełko, do skanera portów z zewnątrz.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1
 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:36 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00046s latency). 
Not shown: 1023 filtered ports 
PORT   STATE SERVICE 
22/tcp open  ssh


Nmap done: 1 IP address (1 host up) scanned in 3.71 seconds 
bash-3.2#

Pozwólmy przychodzącym żądaniom na port 80.

Najpierw sprawdź, która strefa jest stosowana jako domyślna.

[root@CentOs]# firewall-cmd --get-default-zone 
public
[root@CentOS]#

Następnie ustaw regułę zezwalającą portowi 80 na bieżącą strefę domyślną.

[root@CentOS]# firewall-cmd --zone=public --add-port = 80/tcp 
success
[root@CentOS]#

Teraz zaznaczmy nasze pole po zezwoleniu na połączenia na porcie 80.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1

Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:42 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00053s latency). 
Not shown: 1022 filtered ports 
PORT   STATE  SERVICE 
22/tcp open   ssh 
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds 
bash-3.2#

Teraz zezwala na niechciany ruch do 80.

Ustawmy domyślną strefę na upuszczenie i zobaczmy, co stanie się ze skanowaniem portów.

[root@CentOS]# firewall-cmd --set-default-zone=drop 
success

[root@CentOS]# firewall-cmd --get-default-zone 
drop

[root@CentOs]#

Teraz przeskanujmy hosta z interfejsem sieciowym w bezpieczniejszej strefie.

bash-3.2# nmap -sS -p 1-1024 -T 5  10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-27 23:50 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00094s latency). 
All 1024 scanned ports on centos.shared (10.211.55.1) are filtered

Nmap done: 1 IP address (1 host up) scanned in 12.61 seconds 
bash-3.2#

Teraz wszystko jest filtrowane z zewnątrz.

Jak pokazano poniżej, podczas upuszczania host nie odpowiada nawet na żądania ICMP ping .

bash-3.2# ping 10.211.55.1 
PING 10.211.55.1 (10.211.55.1): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

Ustawmy ponownie domyślną strefę na publiczną .

[root@CentOs]# firewall-cmd --set-default-zone=public 
success

[root@CentOS]# firewall-cmd --get-default-zone 
public

[root@CentOS]#

Teraz sprawdźmy publicznie nasz obecny zestaw reguł filtrowania .

[root@CentOS]# firewall-cmd --zone=public --list-all 
public (active) 
target: default 
icmp-block-inversion: no 
interfaces: enp0s5 
sources:  
services: dhcpv6-client ssh 
ports: 80/tcp 
protocols:  
masquerade: no 
forward-ports:  
sourceports:  
icmp-blocks:  
rich rules:

[root@CentOS rdc]#

Zgodnie z konfiguracją nasza reguła filtru portu 80 ma zastosowanie tylko w kontekście bieżącej konfiguracji. Oznacza to, że po ponownym uruchomieniu systemu lub ponownym uruchomieniu usługi firewalld nasza reguła zostanie odrzucona.

Wkrótce będziemy konfigurować demona httpd , więc niech nasze zmiany będą trwałe -

[root@CentOS]# firewall-cmd --zone=public --add-port=80/tcp --permanent 
success

[root@CentOS]# systemctl restart firewalld

[root@CentOS]#

Teraz nasza reguła portu 80 w strefie publicznej jest trwała podczas restartów i restartów usług.

Poniżej przedstawiono typowe polecenia firewalld stosowane z firewall-cmd .

Komenda Akcja
firewall-cmd --get-zones Zawiera listę wszystkich stref, które można zastosować do interfejsu
firewall-cmd - status Zwraca aktualny stan usługi firewalld
firewall-cmd --get-default-zone Pobiera bieżącą strefę domyślną
firewall-cmd --set-default-zone = <zone> Ustawia strefę domyślną w bieżącym kontekście
firewall-cmd --get-active-zone Pobiera bieżące strefy w kontekście zastosowane do interfejsu
firewall-cmd --zone = <strefa> --list-all Wyświetla konfigurację dostarczonej strefy
firewall-cmd --zone = <strefa> --addport = <port / protokół transportowy> Stosuje regułę portu do filtru strefy
--stały Utrwala zmiany w strefie. Flaga jest używana wraz z poleceniami modyfikacji

Oto podstawowe pojęcia związane z administrowaniem i konfigurowaniem firewalld .

Konfigurowanie usług firewall opartych na hoście w CentOS może być złożonym zadaniem w bardziej wyrafinowanych scenariuszach sieciowych. Zaawansowane użycie i konfiguracja firewalld i iptables w CentOS może zająć cały samouczek. Przedstawiliśmy jednak podstawy, które powinny wystarczyć do wykonania większości codziennych zadań.

PHP jest obecnie jednym z najbardziej popularnych języków internetowych. Instalowanie stosu LAMP na CentOS jest czymś, co każdy administrator systemu będzie musiał wykonać, najprawdopodobniej wcześniej niż później.

Tradycyjny stos LAMP składa się z (L) inux (A) pache (M) ySQL (P) HP.

Istnieją trzy główne składniki stosu LAMP w CentOS -

  • Serwer internetowy
  • Platforma / język do tworzenia stron internetowych
  • Serwer bazy danych

Note- Termin LAMP Stack może również obejmować następujące technologie: PostgreSQL, MariaDB, Perl, Python, Ruby, NGINX Webserver.

W tym samouczku będziemy trzymać się tradycyjnego stosu LAMP systemu CentOS GNU Linux: serwer WWW Apache, serwer bazy danych MySQL i PHP.

W rzeczywistości będziemy używać MariaDB. Pliki konfiguracyjne MySQL, bazy danych i tabele są przezroczyste dla MariaDB. MariaDB jest teraz dołączona do standardowego repozytorium CentOS zamiast MySQL. Wynika to z ograniczeń licencjonowania i zgodności z otwartym kodem źródłowym, ponieważ Oracle przejęło rozwój MySQL.

Pierwszą rzeczą, którą musimy zrobić, jest zainstalowanie Apache.

[root@CentOS]# yum install httpd
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
extras/7/x86_64/primary_d
| 121 kB  00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.sigmanet.com
* extras: linux.mirrors.es.net
* updates: mirror.eboundhost.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package:
httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.645.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution
Installed:
httpd.x86_64 0:2.4.6-45.el7.centos

Dependency Installed:
httpd-tools.x86_64 0:2.4.6-45.el7.centos
mailcap.noarch 0:2.1.41-2.el7

Complete!
[root@CentOS]#

Skonfigurujmy usługę httpd .

[root@CentOS]# systemctl start httpd && systemctl enable httpd

Teraz upewnijmy się, że serwer WWW jest dostępny przez firewalld.

bash-3.2# nmap -sS -p 1-1024 -T 5  -sV 10.211.55.1 
Starting Nmap 7.30 ( https://nmap.org ) at 2017-01-28 02:00 MST 
Nmap scan report for centos.shared (10.211.55.1) 
Host is up (0.00054s latency). 
Not shown: 1022 filtered ports 
PORT   STATE SERVICE VERSION 
22/tcp open  ssh     OpenSSH 6.6.1 (protocol 2.0) 
80/tcp open  http    Apache httpd 2.4.6 ((CentOS))

Service detection performed. Please report any incorrect results at 
https://nmap.org/submit/ . 
Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds bash-3.2#

Jak widać z sondy usługi nmap, serwer WWW Apache nasłuchuje i odpowiada na żądania na hoście CentOS.

Zainstaluj serwer bazy danych MySQL

[root@CentOS rdc]# yum install mariadb-server.x86_64 && yum install mariadb-
devel.x86_64 && mariadb.x86_64 && mariadb-libs.x86_64

Instalujemy następujące pakiety repozytorium dla MariaDB -

mariadb-server.x86_64

Główny pakiet demona MariaDB Server.

mariadb-devel.x86_64

Pliki muszą zostać skompilowane ze źródła z kompatybilnością MySQL / MariaDB.

mariadb.x86_64

Narzędzia klienckie MariaDB do administrowania serwerem MariaDB z wiersza poleceń.

mariadb-libs.x86_64

Biblioteki wspólne dla MariaDB, które mogą być potrzebne dla innych aplikacji skompilowanych z obsługą MySQL / MariaDB.

Teraz zacznijmy i włączmy usługę MariaDB.

[root@CentOS]# systemctl start mariadb 
[root@CentOS]# systemctl enable  mariadb

Note- W przeciwieństwie do Apache nie umożliwiamy połączeń z MariaDB przez naszą zaporę ogniową opartą na hoście (firewalld). W przypadku korzystania z serwera bazy danych za najlepszą praktykę w zakresie bezpieczeństwa uważa się zezwalanie tylko na połączenia lokalne za pomocą gniazda, chyba że jest to szczególnie potrzebne.

Upewnijmy się, że MariaDB Server akceptuje połączenia.

[root@CentOS#] netstat -lnt 
Active Internet connections (only servers) 
Proto     Recv-Q     Send-Q     Local Address        Foreign Address      State       
tcp            0          0     0.0.0.0:3306         0.0.0.0:*            LISTEN      
tcp            0          0     0.0.0.0:111          0.0.0.0:*            LISTEN      
tcp            0          0     192.168.122.1:53     0.0.0.0:*            LISTEN      
tcp            0          0     0.0.0.0:22           0.0.0.0:*            LISTEN      
tcp            0          0     127.0.0.1:631        0.0.0.0:*            LISTEN      
tcp            0          0     127.0.0.1:25         0.0.0.0:*            LISTEN 
     
[root@CentOS rdc]#

Jak widać, MariaDB nasłuchuje na porcie 3306 tcp. Zostawimy nasz firewall oparty na hoście (firewalld) blokujący połączenia przychodzące do portu 3306.

Zainstaluj i skonfiguruj PHP

[root@CentOS#]  yum install php.x86_64 && php-common.x86_64 && php-mysql.x86_64 
&& php-mysqlnd.x86_64 && php-pdo.x86_64 && php-soap.x86_64 && php-xml.x86_64

Zalecałbym zainstalowanie następujących pakietów PHP w celu zapewnienia wspólnej kompatybilności -

  • php-common.x86_64
  • php-mysql.x86_64
  • php-mysqlnd.x86_64
  • php-pdo.x86_64
  • php-soap.x86_64
  • php-xml.x86_64
[root@CentOS]# yum install -y php-common.x86_64 php-mysql.x86_64 php-
mysqlnd.x86_64 php-pdo.x86_64 php-soap.x86_64 php-xml.x86_64

To jest nasz prosty plik php znajdujący się w katalogu głównym Apache w katalogu / var / www / html /

[root@CentOS]# cat /var/www/html/index.php  
<html> 
   <head> 
      <title>PHP Test Page</title> 
   </head>
   
   <body> 
      PHP Install 
      <?php 
         echo "We are now running PHP on GNU Centos Linux!<br />" 
      ?> 
   </body> 
</html>

[root@CentOS]#

Zmieńmy grupę będącą właścicielem naszej strony na użytkownika systemowego, pod którym działa nasz demon http.

[root@CentOS]# chgrp httpd /var/www/html/index.php && chmod g+rx /var/www/html/index.php
---

Na żądanie ręcznie przez ncat.

bash-3.2# ncat 10.211.55.1 80 
   GET / index.php 
   HTTP/1.1 200 OK 
   Date: Sat, 28 Jan 2017 12:06:02 GMT 
   Server: Apache/2.4.6 (CentOS) PHP/5.4.16 
   X-Powered-By: PHP/5.4.16 
   Content-Length: 137 
   Connection: close 
   Content-Type: text/html; charset=UTF-8
   
<html> 
   <head> 
      <title>PHP Test Page</title> 
   </head>
   
   <body> 
      PHP Install 
      We are now running PHP on GNU Centos Linux!<br />
   </body> 
</html>

bash-3.2#

PHP i LAMP to bardzo popularne technologie programowania internetowego. Instalacja i konfiguracja LAMP z pewnością znajdzie się na liście Twoich potrzeb jako Administrator CentOS. Łatwe w użyciu pakiety CentOS wymagały dużo pracy od kompilacji Apache, MySQL i PHP z kodu źródłowego.

Python to powszechnie używany język interpretowany, który wprowadził profesjonalizm w świat programowania aplikacji skryptowych w systemie Linux (i innych systemach operacyjnych). Tam, gdzie Perl był kiedyś standardem branżowym, Python pod wieloma względami przewyższał Perl.

Niektóre mocne strony Pythona w porównaniu z Perlem to -

  • Szybki postęp w udoskonalaniu

  • Biblioteki, które są standardowe dla tego języka

  • Czytelność kodu jest przemyślana w definicji języka

  • Wiele profesjonalnych frameworków do wszystkiego, od obsługi GUI po tworzenie stron internetowych

Python może zrobić wszystko, co może zrobić Perl, aw wielu przypadkach w lepszy sposób. Chociaż Perl nadal ma swoje miejsce w zestawie narzędzi administratora Linuksa, nauka Pythona jest doskonałym wyborem jako zestaw umiejętności.

Największe wady Pythona są czasami związane z jego mocnymi stronami. W historii Python został pierwotnie zaprojektowany do nauki programowania. Czasami jego podstawowe założenia, takie jak „czytelność” i „robienie rzeczy we właściwy sposób”, mogą powodować niepotrzebne komplikacje podczas pisania prostego kodu. Ponadto jego standardowe biblioteki powodowały problemy przy przechodzeniu z wersji 2.X do 3.X.

Skrypty Python są w rzeczywistości używane w rdzeniu CentOS dla funkcji niezbędnych do funkcjonowania systemu operacyjnego. Z tego powodu ważne jest, aby odizolować nasze środowisko programistyczne Python od podstawowego środowiska Python CentOS.

Na początek istnieją obecnie dwie wersje Pythona: Python 2.X i Python 3.X.

Oba etapy są nadal w aktywnej produkcji, chociaż wersja 2.X szybko zbliża się do amortyzacji (i trwa to od kilku lat). Powodem dwóch aktywnych wersji Pythona było w zasadzie naprawienie niedociągnięć wersji 2.X. Wymagało to przerobienia niektórych podstawowych funkcji wersji 3.X w sposób uniemożliwiający obsługę niektórych skryptów wersji 2.X.

Zasadniczo najlepszym sposobem na przezwyciężenie tego przejścia jest: Opracuj dla 3.X i bądź na bieżąco z najnowszą wersją 2.X dla starszych skryptów. Obecnie CentOS 7.X opiera się na pół-bieżącej wersji wersji 2.X.

W chwili pisania tego tekstu najbardziej aktualne wersje Pythona to: 3.4.6 i 2.7.13.

Nie pozwól, aby to zmyliło i nie wyciągało żadnych wniosków z Pythona. Konfiguracja środowiska Pythona jest naprawdę prosta. Dzięki frameworkom i bibliotekom Pythona to zadanie jest naprawdę łatwe do wykonania.

Przed skonfigurowaniem naszych środowisk Python potrzebujemy rozsądnego środowiska. Na początek upewnijmy się, że nasza instalacja CentOS jest w pełni zaktualizowana i zainstaluj narzędzia budowlane.

Step 1 - Zaktualizuj CentOS.

[root@CentOS]# yum -y update

Step 2 - Zainstaluj narzędzia do kompilacji.

[root@CentOS]# yum -y groupinstall "development tools"

Step 3 - Zainstaluj potrzebne pakiety.

[root@CentOS]# yum install -y zlib-dev openssl-devel sqlite-devel bip2-devel

Teraz musimy zainstalować aktualne Python 2.X i 3.X ze źródła.

  • Pobierz skompresowane archiwa
  • Rozpakuj pliki
  • Skompiluj kod źródłowy

Zacznijmy od utworzenia katalogu kompilacji dla każdej instalacji Pythona w / usr / src /

[root@CentOS]# mkdir -p /usr/src/pythonSource

Teraz pobierzmy paczki źródłowe dla każdego -

[root@CentOS]# wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
[root@CentOS]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz

Teraz musimy wyodrębnić każdy z archiwum.

Step 1 - Zainstaluj xz-libs i rozpakuj archiwum.

[root@CentOS]# yum install xz-libs
[root@CentOS python3]# xz -d ./*.xz
[root@CentOS python3]# ls
Python-2.7.13.tar  Python-3.6.0.tar
[root@CentOS python3]#

Step 2 - Rozpakuj każdy instalator z jego archiwum.

[root@CentOS]# tar -xvf ./Python-2.7.13.tar
[root@CentOS]# tar -xvf ./Python-3.6.0.tar

Step 3 - Wejdź do każdego katalogu i uruchom skrypt konfiguracyjny.

[root@CentOS]# ./configure --prefix=/usr/local 
root@CentOS]# make altinstall

Note - Pamiętaj, aby użyć altinstalli nie instaluj. Dzięki temu CentOS i wersje rozwojowe Pythona będą oddzielone. W przeciwnym razie możesz zepsuć funkcjonalność CentOS.

Zobaczysz teraz, jak rozpoczyna się proces kompilacji. Weź filiżankę kawy i zrób 15-minutową przerwę do zakończenia. Ponieważ zainstalowaliśmy wszystkie potrzebne zależności dla Pythona, proces kompilacji powinien zakończyć się bez błędów.

Upewnijmy się, że mamy zainstalowaną najnowszą wersję 2.X Pythona.

[root@CentOS Python-2.7.13]# /usr/local/bin/python2.7 -V 
Python 2.7.13
[root@CentOS Python-2.7.13]#

Note - Będziesz chciał poprzedzić linię shebang wskazującą na nasze środowisko programistyczne dla Pythona 2.X.

[root@CentOS Python-2.7.13]# cat ver.py  
#!/usr/local/bin/python2.7 
import sys 
print(sys.version)

[root@CentOS Python-2.7.13]# ./ver.py 
2.7.13 (default, Jan 29 2017, 02:24:08)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

W ten sposób mamy oddzielne instalacje Pythona dla wersji 2.X i 3.X. Stąd możemy korzystać z każdego z nich i narzędzi, takich jakpip i virtualenv aby jeszcze bardziej zmniejszyć obciążenie związane z zarządzaniem środowiskami Python i instalacją pakietów.

Ruby to świetny język zarówno do tworzenia stron internetowych, jak i administracji Linuksa. Ruby zapewnia wiele korzyści, które można znaleźć we wszystkich omówionych wcześniej językach: PHP, Python i Perl.

Aby zainstalować Ruby, najlepiej jest uruchomić za pomocą rbenv, który umożliwia administratorom łatwą instalację i zarządzanie środowiskami Ruby.

Inną metodą instalacji Rubiego są standardowe pakiety CentOS dla Rubiego. Wskazane jest stosowanie metody rbenv ze wszystkimi jej zaletami. Pakiety CentOS będą łatwiejsze dla osób nie znających języka Ruby.

Najpierw zdobądźmy potrzebne zależności dla instalatora rbenv.

  • git-core
  • zlib
  • zlib-devel
  • gcc-c++
  • patch
  • readline
  • readline-devel
  • libyaml-devel
  • libffi-devel
  • openssl-devel
  • make
  • bzzip2
  • autoconf
  • automake
  • libtool
  • bison
  • curl
  • sqlite-devel

Większość tych pakietów może być już zainstalowana w zależności od wybranych opcji i ról podczas instalowania CentOS. Dobrze jest zainstalować wszystko, czego nie jesteśmy pewni, ponieważ może to prowadzić do mniejszego bólu głowy podczas instalowania pakietów wymagających zależności.

[root@CentOS]# yum -y install git-core zlib zlib-devel gcc-c++ patch readline 
readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf 
automake libtool bison curl sqlite-devel

Metoda 1: rbenv dla dynamicznych środowisk programistycznych Ruby

Teraz jako użytkownik, który będzie używać Rubiego -

[rdc@CentOS ~]$ git clone https://github.com/rbenv/rbenv.git
[rdc@CentOS ~]$  https://github.com/rbenv/ruby-build.git

ruby-build zapewni funkcje instalacji dla rbenv -

Note- Musimy przełączyć się na użytkownika root lub administratora przed uruchomieniem install.sh

[rdc@CentOS ruby-build]$ cd ~/ruby-build
[rdc@CentOS ruby-build]# ./install.sh

Ustawmy naszą powłokę na rbenv i upewnijmy się, że zainstalowaliśmy prawidłowe opcje.

[rdc@CentOS ~]$ source ~/rbenv/rbenv.d/exec/gem-rehash.bash [rdc@CentOS ruby-build]$ ~/rbenv/bin/rbenv  
rbenv 1.1.0-2-g4f8925a 
Usage: rbenv <command> [<args>]

Niektóre przydatne polecenia rbenv to -

Polecenia Akcja
lokalny Ustawia lub pokazuje lokalną wersję Rubiego specyficzną dla aplikacji
światowy Ustawia lub pokazuje globalną wersję Rubiego
muszla Ustawia lub pokazuje wersję Rubiego specyficzną dla powłoki
zainstalować Instaluje wersję Ruby za pomocą ruby-build
odinstaluj Odinstalowuje określoną wersję Rubiego
rehash Rehashes rbenv shims (uruchom to po zainstalowaniu plików wykonywalnych)
wersja Pokazuje aktualną wersję Rubiego i jej pochodzenie
wersje Wyświetla wszystkie wersje Ruby dostępne dla rbenv
który Wyświetla pełną ścieżkę do pliku wykonywalnego
skąd Wyświetla listę wszystkich wersji Ruby, które zawierają dany plik wykonywalny

Zainstalujmy teraz Rubiego -

[rdc@CentOS bin]$ ~/rbenv/bin/rbenv install -v 2.2.1

Po zakończeniu kompilacji -

[rdc@CentOS ~]$ ./ruby -v 
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux] 
[rdc@CentOS ~]$

Mamy teraz działające środowisko Ruby ze zaktualizowaną i działającą wersją gałęzi Ruby 2.X.

Metoda 2: Zainstaluj Rubiego z pakietów CentOS

To najprostsza metoda. Jednak może to być ograniczone wersją i klejnotami spakowanymi z CentOS. W przypadku poważnych prac programistycznych zaleca się użycie metody rbenv do zainstalowania Rubiego.

Zainstaluj Rubiego, potrzebne pakiety deweloperskie i kilka popularnych klejnotów.

[root@CentOS rdc]# yum install -y ruby.x86_64 ruby-devel.x86_64 ruby-
libs.x86_64 ruby-gem-json.x86_64 rubygem-rake.noarch

Niestety, pozostaje nam nieco przestarzała wersja Rubiego.

[root@CentOS rdc]# ruby -v 
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[root@CentOS rdc]#

Perlistnieje od dawna. Pierwotnie został zaprojektowany jako język raportowania używany do analizowania plików tekstowych. Wraz ze wzrostem popularności Perl dodał obsługę modułów lub CPAN, gniazda, wątki i inne funkcje potrzebne w potężnym języku skryptowym.

Największą przewagą Perla w porównaniu z PHP, Pythonem czy Rubim jest to, że wykonuje zadania przy minimalnym wysiłku. Ta filozofia Perla nie zawsze oznacza, że ​​wszystko robi się we właściwy sposób. Jednak w przypadku zadań administracyjnych w systemie Linux Perl jest uważany za najlepszy wybór dla języka skryptowego.

Niektóre zalety Perla w porównaniu z Pythonem lub Rubim to -

  • Potężne przetwarzanie tekstu

  • Perl sprawia, że ​​pisanie skryptów jest szybkie i brudne (zwykle skrypt Perla będzie o kilkadziesiąt linii krótszy niż jego odpowiednik w Pythonie lub Ruby)

  • Perl może zrobić wszystko (prawie)

Niektóre wady Perla to -

  • Składnia może być myląca

  • Styl kodowania w Perlu może być wyjątkowy i utrudniać współpracę

  • Perl nie jest tak naprawdę zorientowany obiektowo

  • Zazwyczaj, gdy używany jest Perl, nie poświęca się zbyt wiele uwagi standaryzacji i najlepszym praktykom.

Decydując się na użycie Perla, Pythona lub PHP; należy zadać następujące pytania -

  • Czy ta aplikacja będzie kiedykolwiek potrzebować wersjonowania?
  • Czy inne osoby będą kiedykolwiek musiały modyfikować kod?
  • Czy inne osoby będą musiały używać tej aplikacji?
  • Czy ta aplikacja będzie kiedykolwiek używana na innym komputerze lub architekturze procesora?

Jeśli odpowiedzi na wszystkie powyższe pytania brzmią „nie”, Perl jest dobrym wyborem i może przyspieszyć proces pod względem wyników końcowych.

Mając to na uwadze, skonfigurujmy nasz serwer CentOS do korzystania z najnowszej wersji Perla.

Przed zainstalowaniem Perla musimy zapoznać się z obsługą Perla. Oficjalnie Perl jest obsługiwany tylko w ostatnich dwóch stabilnych wersjach. Dlatego chcemy mieć pewność, że nasze środowisko programistyczne będzie izolowane od wersji CentOS.

Powód izolacji jest następujący: jeśli ktoś udostępni społeczności CentOS narzędzie w Perlu, najprawdopodobniej zostanie ono zmodyfikowane, aby działało na Perlu, tak jak jest dostarczane z CentOS. Chcemy jednak mieć również zainstalowaną najnowszą wersję do celów programistycznych. Podobnie jak Python, CentOS dostarcza Perla skoncentrowanego na niezawodności, a nie na nowatorskich rozwiązaniach.

Sprawdźmy naszą aktualną wersję Perla na CentOS 7.

[root@CentOS]# perl -v 
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi

Obecnie korzystamy z Perla 5.16.3. Najbardziej aktualna wersja w chwili pisania tego tekstu to: perl-5.24.0

Zdecydowanie chcemy zaktualizować naszą wersję, mając możliwość korzystania z aktualnych modułów Perla w naszym kodzie. Na szczęście istnieje świetne narzędzie do utrzymywania środowisk Perl i izolowania naszej wersji Perla z CentOS. To się nazywaperlbrew.

Zainstalujmy Perl Brew.

[root@CentOS]# curl -L https://install.perlbrew.pl | bash 
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current 
                             Dload  Upload   Total   Spent    Left  Speed 
100   170  100   170    0     0    396      0 --:--:-- --:--:-- --:--:--   397 
100  1247  100  1247    0     0   1929      0 --:--:-- --:--:-- --:--:--  1929

Teraz, gdy mamy już zainstalowany Perl Brew, stwórzmy środowisko dla najnowszej wersji Perla.

Po pierwsze, będziemy potrzebować aktualnie zainstalowanej wersji Perla, aby załadować instalację perlbrew. Zatem pobierzmy kilka potrzebnych modułów Perla z repozytorium CentOS.

Note - Jeśli są dostępne, zawsze chcemy używać modułów CentOS Perl w porównaniu z CPAN z naszą instalacją CentOS Perl.

Step 1 - Zainstaluj moduł CentOS Perl Make :: Maker.

[root@CentOS]# yum -y install perl-ExtUtils-MakeMaker.noarch

Step 2 - Zainstaluj najnowszą wersję perla.

[root@CentOS build]# source ~/perl5/perlbrew/etc/bashrc
[root@CentOS build]# perlbrew install -n -j4 --threads perl-5.24.1

Opcje, które wybraliśmy dla naszej instalacji Perla to -

  • n - Żadnych testów

  • j4 - Wykonaj 4 wątki równolegle dla procedur instalacyjnych (używamy czterordzeniowego procesora)

  • threads - Włącz obsługę wątków dla Perla

Po pomyślnym zakończeniu instalacji przejdźmy do naszego najnowszego środowiska Perla.

[root@CentOS]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

A sub-shell is launched with perl-5.24.1 as the activated perl. Run 'exit' to finish it.

[root@CentOS]# perl -v

This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linuxthread-multi

(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the GNU General
Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on this system 
using "man perl" or "perldoc perl".  If you have access to the Internet, point your 
browser at http://www.perl.org/, the Perl Home Page.

[root@CentOS]#

Proste drukowanie skryptów Perla Wersja Perla działająca w kontekście naszego środowiska Perlbrew -

[root@CentOS]# cat ./ver.pl  
#!/usr/bin/perl
print $^V . "\n";

[root@CentOS]# perl ./ver.pl  
v5.24.1 
[root@CentOS]#

Po zainstalowaniu Perla możemy załadować moduły cpan za pomocą cpanm Perl Brew -

[root@CentOS]# perl-brew install-cpanm

Teraz użyjmy instalatora cpanm, aby utworzyć moduł LWP z naszą obecną wersją Perla 5.24.1 w perl brew.

Step 1 - Przejdź do kontekstu naszej aktualnej wersji Perla.

[root@CentOS ~]# ~/perl5/perlbrew/bin/perlbrew use perl-5.24.1

Podpowłoka jest uruchamiana z perl-5.24.1 jako aktywowanym perlem. Uruchom „exit”, aby go zakończyć.

[root@CentOS ~]#

Step 2 - Zainstaluj moduł Perl agenta użytkownika LWP.

[root@CentOS ~]# ~/perl5/perlbrew/bin/cpanm -i LWP::UserAgent

Step 3 - Przetestujmy teraz nasze środowisko Perl z nowym modułem CPAN.

[root@CentOS ~]# cat ./get_header.pl  
#!/usr/bin/perl 
use LWP; 
my $browser = LWP::UserAgent->new(); my $response = $browser->get("http://www.slcc.edu/"); unless(!$response->is_success) { 
   print $response->header("Server"); 
}

[root@CentOS ~]# perl ./get_header.pl  
Microsoft-IIS/8.5 [root@CentOS ~]#

Masz to! Perl Brew sprawia, że ​​izolowanie środowisk perlowych jest bardzo proste i może być uważane za najlepszą praktykę, jeśli chodzi o Perl.

LDAP znany jako Light Weight Directory Access Protocoljest protokołem używanym do uzyskiwania dostępu do kontenerów usług X.500 w przedsiębiorstwie znanym z katalogu. Osoby zaznajomione z administracją Windows Server mogą myśleć o LDAP jako o bardzo podobnym charakterze do usługi Active Directory. Jest to nawet szeroko stosowana koncepcja łączenia stacji roboczych Windows w przedsięwzięcie OpenLDAP CentOS. Z drugiej strony stacja robocza CentOS Linux może współdzielić zasoby i uczestniczyć z podstawowymi funkcjami w domenie Windows.

Wdrażanie LDAP na CentOS jako agenta serwera katalogów, agenta systemu katalogów lub DSA (wszystkie te akronimy są takie same) jest podobne do starszych instalacji Novell Netware wykorzystujących strukturę drzewa katalogów w NDS.

Krótka historia LDAP

Protokół LDAP został zasadniczo stworzony jako skuteczny sposób uzyskiwania dostępu do katalogów X.500 z zasobami przedsiębiorstwa. Zarówno X.500, jak i LDAP mają te same cechy i są tak podobne, że klienci LDAP mogą uzyskiwać dostęp do katalogów X.500 za pomocą niektórych pomocników. Chociaż LDAP ma również własny serwer katalogowy o nazwieslapd. Główna różnica między LDAP i DAP polega na tym, że lekka wersja jest zaprojektowana do pracy przez TCP.

Podczas gdy DAP używa pełnego modelu OSI. Wraz z pojawieniem się Internetu, TCP / IP i Ethernet w dzisiejszych sieciach, rzadko można spotkać się z wdrożeniem usług katalogowych przy użyciu zarówno DAP, jak i natywnych katalogów korporacyjnych X.500 poza określonymi starszymi modelami obliczeniowymi.

Główne komponenty używane z openldap dla CentOS Linux to -

openldap Biblioteki obsługujące LDAP
openldap-server Serwer LDAP
openldap-clients Narzędzia klienta LDAP
openldap-devel Biblioteki programistyczne dla OpenLDAP
compay-openldap Biblioteki współdzielone OpenLDAP
slapd Demon serwera katalogów OpenLDAP
slurpd Używany do replikacji LDAP w domenie przedsiębiorstwa

Note - Podczas nadawania nazwy firmie najlepiej jest używać rozszerzenia .localTLD. Korzystanie z domeny .net lub .com może powodować trudności podczas rozdzielania infrastruktury domeny internetowej i wewnętrznej. Wyobraź sobie dodatkową pracę dla firmy korzystającej wewnętrznie z witryny acme.com zarówno do operacji zewnętrznych, jak i wewnętrznych. Dlatego warto mieć zasoby internetowe o nazwie acme.com lub acme.net . Następnie lokalne zasoby sieciowe przedsiębiorstwa są przedstawiane jako acme.local . Będzie to wymagało konfiguracji rekordów DNS, ale zapłaci za prostotę, elokwencję i bezpieczeństwo.

Zainstaluj Open LDAP na CentOS

Zainstaluj openldap, serwery openldap, klientów openldap i narzędzia migracji z YUM .

[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00
 
 Dependencies Resolved
 
=============================================================================== 
=============================================================================== 
Package                                Arch
Version                             Repository                        Size 
=============================================================================== 
=============================================================================== 
Installing: 
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k 
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M  

Transaction Summary 
=============================================================================== 
===============================================================================
Install  2 Packages

Total download size: 2.3 M 
Installed size: 5.3 M 
Downloading packages:

Installed: 
openldap-clients.x86_64 0:2.4.40-13.el7                                       
openldap-servers.x86_64 0:2.4.40-13.el7                                       
Complete! 
[root@localhost]#

Teraz zacznijmy i włączmy usługę slapd -

[root@centos]# systemctl start slapd 
[root@centos]# systemctl enable  slapd

W tym momencie upewnijmy się , że nasza struktura openldap znajduje się w / etc / openldap .

root@localhost]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

Następnie upewnij się, że nasza usługa slapd jest uruchomiona.

root@centos]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd
 
[root@centos]#

Następnie skonfigurujmy naszą instalację Open LDAP .

Upewnij się, że nasz systemowy użytkownik LDAP został utworzony.

[root@localhost]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

Wygeneruj nasze dane logowania LDAP.

[root@localhost]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

Musimy zapisać dane wyjściowe z slappasswd.

Skonfiguruj Open LDAP

Step 1 - Skonfiguruj LDAP dla domeny i dodaj użytkownika administracyjnego.

Po pierwsze, chcemy skonfigurować nasze środowisko openLDAP. Poniżej znajduje się szablon do użycia z poleceniem ldapmodify .

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcSuffix 
olcSuffix: dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootDN 
olcRootDN: cn=ldapadm,dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: <output from slap

Wprowadź zmiany w: /etc/openldap/slapd.d/cn=config/olcDatabase = {1} monitor.ldif za pomocą polecenia ldapmodify.

[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif  
SASL/EXTERNAL authentication started 
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 

[root@localhost cn=config]#

Sprawdźmy zmodyfikowaną konfigurację LDAP.

root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = 
entryCSN: 20170215204423.726622Z#000000#000#000000 
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[root@centos]#

Jak widać, nasze modyfikacje korporacyjne LDAP zakończyły się sukcesem.

Następnie chcemy utworzyć certyfikat ssl z podpisem własnym dla OpenLDAP. Zapewni to komunikację między serwerem korporacyjnym a klientami.

Step 2 - Utwórz certyfikat z podpisem własnym dla OpenLDAP.

Użyjemy openssl do utworzenia certyfikatu ssl z podpisem własnym. Przejdź do następnego rozdziału,Create LDAP SSL Certificate with opensslaby uzyskać instrukcje dotyczące zabezpieczania komunikacji z OpenLDAP. Następnie, po skonfigurowaniu certyfikatów ssl, zakończymy konfigurację korporacyjną OpenLDAP.

Step 3 - Skonfiguruj OpenLDAP do korzystania z bezpiecznej komunikacji z certyfikatem.

Utwórz plik certs.ldif w vimie z następującymi informacjami -

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem

Następnie ponownie użyj polecenia ldapmodify, aby scalić zmiany w konfiguracji OpenLDAP.

[root@centos rdc]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@centos]#

Na koniec przetestujmy naszą konfigurację OpenLADP.

[root@centos]# slaptest -u 
config file testing succeeded 
[root@centos]#

Step 4 - Skonfiguruj bazę danych slapd.

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

Aktualizuje schemat OpenLDAP.

Dodaj schematy LDAP cosinus i nis.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Na koniec utwórz schemat przedsiębiorstwa i dodaj go do bieżącej konfiguracji OpenLDAP.

Poniższe dotyczy domeny o nazwie vmnet. lokalnie z administratorem LDAP o nazwie ldapadm .

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local 
objectClass: organizationalUnit 
ou: Group

Na koniec zaimportuj to do aktualnego schematu OpenLDAP.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[root@centos]#

Step 5 - Skonfiguruj użytkowników OpenLDAP Enterprise.

Otwórz vim lub swój ulubiony edytor tekstu i skopiuj następujący format. Jest to konfiguracja dla użytkownika o nazwie „entacct” w domenie LDAP „vmnet.local”.

dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword: {crypt}x 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

Teraz zaimportuj powyższe pliki, tak jak zostały zapisane, do schematu OpenLdap.

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[root@centos]#

Zanim użytkownicy będą mogli uzyskać dostęp do LDAP Enterprise, musimy przypisać hasło w następujący sposób -

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s określa hasło użytkownika

-x to nazwa użytkownika, do której zastosowano zaktualizowane hasło

-D to * nazwa wyróżniająca ”służąca do uwierzytelniania w schemacie LDAP.

Na koniec, przed zalogowaniem się na konto Enterprise, sprawdźmy nasz wpis OpenLDAP .

[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL 
 # 
 # entacct, People, vmnet.local 
dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top 
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword:: e2NyeXB0fXg= 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

Konwersja elementów takich jak / etc / passwd i / etc / groups na uwierzytelnianie OpenLDAP wymaga użycia narzędzi migracyjnych. Są one zawarte w pakiecie migracji narzędzi . Następnie zainstalowany w / usr / share / migrationtools .

[root@centos openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl

Step 6 - Wreszcie musimy zezwolić na dostęp do usługi slapd, aby mogła obsługiwać żądania.

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

Skonfiguruj dostęp klienta LDAP

Skonfigurowanie dostępu klienta LDAP wymaga następujących pakietów na kliencie: klienci openldap, klienci open-ldap i nss_ldap.

Konfiguracja uwierzytelniania LDAP dla systemów klienckich jest nieco łatwiejsza.

Step 1 - Zainstaluj pakiety zależne -

# yum install -y openldap-clients nss-pam-ldapd

Step 2- Skonfiguruj uwierzytelnianie LDAP za pomocą authconfig .

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

Step 3 - Uruchom ponownie usługę nslcd.

systemctl restart  nslcd

Tło TLS i SSL

TLS to nowy standard zabezpieczeń warstwy gniazda, poprzedzający SSL. TLS oferuje lepsze standardy szyfrowania z innymi zabezpieczeniami i funkcjami opakowania protokołu, które poprawiają SSL. Często terminy TLS i SSL są używane zamiennie. Jednak jako profesjonalny administrator CentOS ważne jest, aby zwrócić uwagę na różnice i historię oddzielającą każdy z nich.

SSL przechodzi do wersji 3.0. SSL został opracowany i promowany jako standard branżowy w Netscape. Po zakupie Netscape przez AOL (popularnego w latach 90-tych ISP znanego jako America Online), AOL nigdy tak naprawdę nie promował zmiany potrzebnej do poprawy bezpieczeństwa SSL.

W wersji 3.1 technologia SSL przeszła do standardów systemów otwartych i została zmieniona na TLS . Ponieważ prawa autorskie do SSL nadal należały do ​​AOL, ukuto nowy termin:TLS - Transport Layer Security. Dlatego ważne jest, aby przyznać, że protokół TLS w rzeczywistości różni się od SSL . Zwłaszcza, że ​​starsze technologie SSL mają znane problemy z bezpieczeństwem, a niektóre są obecnie uważane za przestarzałe.

Note- W tym samouczku w odniesieniu do technologii 3.1 i nowszych będzie używany termin TLS . Następnie SSL przy komentarzach specyficznych dla technologii SSL 3.0 i starszych.

SSL a TLS Versioning

Poniższa tabela pokazuje, w jaki sposób wersje TLS i SSL byłyby powiązane ze sobą. Słyszałem, jak kilka osób mówiło o SSL w wersji 3.2. Prawdopodobnie jednak nauczyli się terminologii czytając bloga. Jako profesjonalny administrator zawsze chcemy używać standardowej terminologii. Stąd mówienie o SSL powinno odnosić się do dawnych technologii. Proste rzeczy mogą sprawić, że osoba poszukująca pracy w CentOS będzie wyglądać jak doświadczony CS Major.

TLS SSL
- 3.0
1.0 3.1
1.1 3.2
1.2 3.3

TLS spełnia dwie główne funkcje ważne dla dzisiejszych użytkowników Internetu: po pierwsze, weryfikuje, kto jest stroną, znany jakoauthentication. Po drugie, oferujeend-to-end encryption w warstwie transportowej dla protokołów wyższego poziomu, które nie mają tej natywnej funkcji (ftp, http, protokoły e-mail i inne).

Pierwsza weryfikuje, kto jest stroną i jest ważna dla bezpieczeństwa jako szyfrowanie typu end-to-end. Jeśli konsument ma szyfrowane połączenie ze stroną internetową, która nie jest upoważniona do przyjmowania płatności, dane finansowe są nadal zagrożone. Oto, czego nie będzie mieć każda witryna phishingowa:a properly signed TLS certificate verifying website operators are who they claim to be from a trusted CA.

Istnieją tylko dwie metody obejścia problemu braku odpowiednio podpisanego certyfikatu: oszukanie użytkownika, aby pozwolił przeglądarce internetowej na zaufanie do certyfikatu z podpisem własnym lub nadzieję, że użytkownik nie jest obeznany z technologią i nie będzie wiedział, jak ważny jest zaufany certyfikat Urząd (lub CA).

W tym samouczku będziemy używać tak zwanego certyfikatu z podpisem własnym . Oznacza to, że bez jawnego nadawania temu certyfikatowi statusu zaufanego w każdej przeglądarce internetowej odwiedzającej witrynę, zostanie wyświetlony błąd zniechęcający użytkowników do odwiedzenia witryny. Następnie sprawi, że użytkownik przejdzie przez kilka czynności przed uzyskaniem dostępu do witryny z certyfikatem z podpisem własnym. Pamiętaj, ze względu na bezpieczeństwo to dobra rzecz.

Zainstaluj i skonfiguruj openssl

openssl to standard dla implementacji TLS typu open source. openssl jest używany w systemach takich jak Linux, dystrybucje BSD, OS X, a nawet obsługuje system Windows.

openssl jest ważna, ponieważ zapewnia ochronę warstwy transportowej i oddziela programistę od szczegółowego programowania uwierzytelniania i szyfrowania typu end-to-end . Dlatego openssl jest używany w prawie każdej aplikacji open source używającej protokołu TLS. Jest również instalowany domyślnie w każdej nowoczesnej wersji Linuksa.

Domyślnie openssl powinien być instalowany na CentOS od co najmniej wersji 5. Aby się upewnić, spróbujmy zainstalować openssl przez YUM. Po prostu uruchom instalację, ponieważ YUM jest wystarczająco inteligentny, aby poinformować nas, czy pakiet jest już zainstalowany. Jeśli korzystamy ze starszej wersji CentOS ze względu na kompatybilność, wykonanie instalacji yum -y zapewni aktualizację openssl o pół-niedawną lukę w zabezpieczeniach typu heart-bleed.

Podczas uruchamiania instalatora okazało się, że faktycznie była aktualizacja openssl .

[root@centos]# yum -y install openssl
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-60.el7_3.1 for 
package: 1:openssl-1.0.1e-60.el7_3.1.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-60.el7_3.1 will be an update
--> Finished Dependency Resolution 
Dependencies Resolved

===============================================================================
=============================================================================== 
 Package                               Arch
 Version                            Repository                        Size 
=============================================================================== 
=============================================================================== 
Updating: 
openssl                               x86_64                          
1:1.0.1e-60.el7_3.1                 updates                           713 k
Updating for dependencies:

Utwórz certyfikat z podpisem własnym dla OpenLDAP

Jest to metoda tworzenia samopodpisanego pliku dla naszej poprzedniej instalacji OpenLDAP .

Aby utworzyć certyfikat OpenLDAP z podpisem własnym.

openssl req -new -x509 -nodes -out /etc/openldap/certs/myldaplocal.pem -keyout
/etc/openldap/certs/myldaplocal.pem -days 365

[root@centos]# openssl req -new -x509 -nodes -out /etc/openldap/certs/vmnet.pem 
-keyout /etc/openldap/certs/vmnet.pem -days 365 
Generating a 2048 bit RSA private key
.............................................+++
................................................+++
writing new private key to '/etc/openldap/certs/vmnet.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Califonia
Locality Name (eg, city) [Default City]:LA
Organization Name (eg, company) [Default Company Ltd]:vmnet
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos
Email Address []:[email protected]
[root@centos]#

Teraz nasze certyfikaty OpenLDAP powinny być umieszczone w / etc / openldap / certs /

[root@centos]# ls /etc/openldap/certs/*.pem 
/etc/openldap/certs/vmnetcert.pem  /etc/openldap/certs/vmnetkey.pem
[root@centos]#

Jak widać, zarówno certyfikat, jak i klucz są zainstalowane w katalogach / etc / openldap / certs / . Na koniec musimy zmienić uprawnienia do każdego z nich, ponieważ są one obecnie własnością użytkownika root.

[root@centos]# chown -R  ldap:ldap /etc/openldap/certs/*.pem
[root@centos]# ls -ld /etc/openldap/certs/*.pem
-rw-r--r--. 1 ldap ldap 1395 Feb 20 10:00 /etc/openldap/certs/vmnetcert.pem 
-rw-r--r--. 1 ldap ldap 1704 Feb 20 10:00 /etc/openldap/certs/vmnetkey.pem
[root@centos]#

Utwórz certyfikat z podpisem własnym dla serwera internetowego Apache

W tym samouczku założymy, że Apache jest już zainstalowany. Zainstalowaliśmy Apache w innym samouczku (konfigurowanie CentOS Firewall) i przejdziemy do zaawansowanej instalacji Apache na przyszły samouczek. Jeśli więc jeszcze nie zainstalowałeś Apache, postępuj zgodnie z instrukcjami.

Po zainstalowaniu Apache HTTPd wykonując następujące czynności -

Step 1 - Zainstaluj mod_ssl dla serwera httpd Apache.

Najpierw musimy skonfigurować Apache z mod_ssl. Korzystanie z menedżera pakietów YUM jest dość proste -

[root@centos]# yum -y install mod_ssl

Następnie załaduj ponownie demona Apache, aby upewnić się, że Apache używa nowej konfiguracji.

[root@centos]# systemctl reload httpd

W tym momencie Apache jest skonfigurowany do obsługi połączeń TLS na lokalnym hoście.

Step 2 - Utwórz certyfikat ssl z podpisem własnym.

Najpierw skonfigurujmy nasz prywatny katalog kluczy TLS.

[root@centos]# mkdir /etc/ssl/private 
[root@centos]# chmod 700 /etc/ssl/private/

Note- Upewnij się, że tylko root ma dostęp do odczytu / zapisu w tym katalogu. Dzięki światowemu dostępowi do odczytu / zapisu klucza prywatnego można użyć do odszyfrowania podsłuchanego ruchu.

Generowanie certyfikatu i plików kluczy.

[root@centos]# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout 
/etc/ssl/private/self-gen-apache.key -out /etc/ssl/certs/self-sign-apache.crt 
Generating a 2048 bit RSA private key
..........+++
....+++
-----
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:xx
Locality Name (eg, city) [Default City]:xxxx
Organization Name (eg, company) [Default Company Ltd]:VMNET
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:centos.vmnet.local
Email Address []:

[root@centos]#

Note - Możesz użyć publicznego adresu IP serwera, jeśli nie masz zarejestrowanej nazwy domeny.

Rzućmy okiem na nasz certyfikat -

[root@centos]# openssl x509 -in self-sign-apache.crt -text -noout
Certificate:
   Data:
      Version: 3 (0x2)
      Serial Number: 17620849408802622302 (0xf489d52d94550b5e)
   Signature Algorithm: sha256WithRSAEncryption
   Issuer: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Validity
      Not Before: Feb 24 07:07:55 2017 GMT
      Not After : Feb 24 07:07:55 2018 GMT
   Subject: C=US, ST=UT, L=xxxx, O=VMNET, CN=centos.vmnet.local
   Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
         Public-Key: (2048 bit)
            Modulus:
               00:c1:74:3e:fc:03:ca:06:95:8d:3a:0b:7e:1a:56:
               f3:8d:de:c4:7e:ee:f9:fa:79:82:bf:db:a9:6d:2a:
               57:e5:4c:31:83:cf:92:c4:e7:16:57:59:02:9e:38:
               47:00:cd:b8:31:b8:34:55:1c:a3:5d:cd:b4:8c:b0:
               66:0c:0c:81:8b:7e:65:26:50:9d:b7:ab:78:95:a5:
               31:5e:87:81:cd:43:fc:4d:00:47:5e:06:d0:cb:71:
               9b:2a:ab:f0:90:ce:81:45:0d:ae:a8:84:80:c5:0e:
               79:8a:c1:9b:f4:38:5d:9e:94:4e:3a:3f:bd:cc:89:
               e5:96:4a:44:f5:3d:13:20:3d:6a:c6:4d:91:be:aa:
               ef:2e:d5:81:ea:82:c6:09:4f:40:74:c1:b1:37:6c:
               ff:50:08:dc:c8:f0:67:75:12:ab:cd:8d:3e:7b:59:
               e0:83:64:5d:0c:ab:93:e2:1c:78:f0:f4:80:9e:42: 
               7d:49:57:71:a2:96:c6:b8:44:16:93:6c:62:87:0f:
               5c:fe:df:29:89:03:6e:e5:6d:db:0a:65:b2:5e:1d:
               c8:07:3d:8a:f0:6c:7f:f3:b9:32:b4:97:f6:71:81:
               6b:97:e3:08:bd:d6:f8:19:40:f1:15:7e:f2:fd:a5:
               12:24:08:39:fa:b6:cc:69:4e:53:1d:7e:9a:be:4b:

Oto wyjaśnienie każdej opcji, której użyliśmy z poleceniem openssl -

Komenda Akcja
req -X509 Użyj standardu PKI zarządzania X.509 CSR do zarządzania kluczami.
-nodes Nie zabezpieczaj naszego certyfikatu hasłem. Apache musi mieć możliwość korzystania z certyfikatu bez przerywania hasła.
-dni 2555 Informuje o ważności certyfikatu do 7 lat lub 2555 dni. Okres można dostosować w razie potrzeby.
-newkey rsa: 2048 Określony w celu generowania klucza i certyfikatu przy użyciu RSA o długości 2048 bitów.

Następnie chcemy utworzyć grupę Diffie-Heliman do negocjowania PFS z klientami.

[centos#] openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Zajmie to od 5 do 15 minut.

Perfect Forward Secrecy- Służy do zabezpieczania danych sesji w przypadku złamania klucza prywatnego. Spowoduje to wygenerowanie klucza używanego między klientem a serwerem, który jest unikalny dla każdej sesji.

Teraz dodaj konfigurację Perfect Forward Secrecy do naszego certyfikatu.

[root@centos]# cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/self-sign-apache.crt

Skonfiguruj Apache do używania plików kluczy i certyfikatów

Będziemy wprowadzać zmiany w /etc/httpd/conf.d/ssl.conf -

Wprowadzimy następujące zmiany w ssl.conf . Jednak zanim to zrobimy, powinniśmy wykonać kopię zapasową oryginalnego pliku. Podczas wprowadzania zmian na serwerze produkcyjnym w zaawansowanym edytorze tekstu, takim jak vi lub emcas , najlepiej jest zawsze wykonać kopię zapasową plików konfiguracyjnych przed wprowadzeniem zmian.

[root@centos]# cp /etc/httpd/conf.d/ssl.conf ~/

Now let's continue our edits after copying a known-working copy of ssl.conf to the root of our home folder.

  • Locate
  • Edit both DocumentRoot and ServerName as follows.
\\# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/html"
ServerName centos.vmnet.local:443

DocumentRoot this is the path to your default apache directory. In this folder should be a default page that will display a HTTP request asking for the default page of your web server or site.

ServerName is the server name that can be either an ip address or the host name of the server. For TLS, it is a best practice to create a certificate with a host name. From our OpenLdap tutorial, we created a hostname of centos on the local enterprise domain: vmnet.local

Teraz chcemy skomentować następujące linie.

SSLProtocol

#   SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect.  Disable SSLv2 access by default:
 ~~~~> #SSLProtocol all -SSLv2
 
#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate.
#   See the mod_ssl documentation for a complete list.
 ~~~~> #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

Następnie poinformuj Apache, gdzie znaleźć nasz certyfikat i parę kluczy prywatny / publiczny.

Określ ścieżkę do naszego pliku certyfikatu z podpisem własnym

#   Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate.  If
# the certificate is encrypted, then you will be prompted for a
# pass phrase.  Note that a kill -HUP will prompt again.  A new
# certificate can be generated using the genkey(1) command.
~~~~> SSLCertificateFile /etc/ssl/certs/self-sign-apache.crt
specify path to our private key file
#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
~~~~> SSLCertificateKeyFile /etc/ssl/private/self-gen-apache.key

Wreszcie, musimy zezwolić na połączenia przychodzące do https przez port 443.

W tym rozdziale dowiemy się trochę o tle powstania Apache HTTP Server, a następnie zainstalujemy najnowszą stabilną wersję na CentOS Linux 7.

Krótka historia na serwerze Apache

Apache to serwer WWW, który istnieje od dłuższego czasu. W rzeczywistości prawie tak długo, jak sam http!

Apache zaczynał jako raczej mały projekt w National Center for Supercomputing Applications znanym również jako NCSA. W połowie lat 90-tych „httpd”, jak go nazywano, był zdecydowanie najpopularniejszą platformą serwerów WWW w Internecie, mając około 90% lub więcej udziału w rynku.

W tym czasie był to prosty projekt. Wykwalifikowani pracownicy IT, znani jako webmaster, byli odpowiedzialni za: utrzymanie platform serwerów WWW i oprogramowania serwera WWW, a także rozwój witryn front-end i back-end. U podstaw httpd leżała możliwość korzystania z niestandardowych modułów zwanych wtyczkami lub rozszerzeniami. Webmaster miał również wystarczające umiejętności, aby pisać poprawki do podstawowego oprogramowania serwera.

Gdzieś pod koniec połowy lat 90. starszy programista i kierownik projektu w httpd opuścił NCSA, aby zająć się innymi sprawami. To pozostawiło najpopularniejszy demon sieciowy w stanie stagnacji.

Ponieważ używanie httpd było tak rozpowszechnione, grupa doświadczonych webmasterów httpd wezwała do zwołania spotkania na temat przyszłości httpd. Zdecydowano się skoordynować i zastosować najlepsze rozszerzenia i łatki w bieżącej stabilnej wersji. Następnie urodził się obecny dziadek serwerów http i ochrzcił go jako Apache HTTP Server.

Little Known Historical Fact- Nazwa Apache nie pochodzi od indiańskiego plemienia wojowników. W rzeczywistości został wymyślony i nazwany z niespodzianką: powstał z wielu poprawek (lub łat) wielu utalentowanych informatyków:patchy lub Apache.

Zainstaluj aktualną wersję stabilną na CentOS Linux 7

Step 1 - Zainstaluj httpd przez yum.

yum -y install httpd

W tym momencie serwer Apache HTTP zostanie zainstalowany za pośrednictwem yum.

Step 2 - Edytuj plik httpd.conf dostosowany do Twoich potrzeb.

Przy domyślnej instalacji Apache plik konfiguracyjny Apache nosi nazwę httpd.conf i znajduje się w / etc / httpd / . Więc otwórzmy to w vimie .

Pierwsze kilka wierszy httpd.conf zostało otwartych w vimie -

# 
# This is the main Apache HTTP server configuration file.  It contains the 
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information. 
# In particular, see  
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html> 
# for a discussion of each configuration directive.

Wprowadzimy następujące zmiany, aby umożliwić naszej instalacji CentOS obsługę żądań http z portu http 80.

Nasłuchujący host i port

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

Stąd zmieniamy Apache, aby nasłuchiwał na określonym porcie lub adresie IP. Na przykład, jeśli chcemy uruchamiać usługi httpd na alternatywnym porcie, takim jak 8080. Lub jeśli nasz serwer sieciowy jest skonfigurowany z wieloma interfejsami z oddzielnymi adresami IP.

słuchać

Uniemożliwia Apache dołączanie się do każdego demona nasłuchującego na każdym adresie IP. Jest to przydatne, aby przestać określać tylko ruch IPv6 lub IPv4. Lub nawet łączenie się ze wszystkimi interfejsami sieciowymi na hoście wieloadresowym.

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
Listen 10.0.0.25:80
#Listen 80

DocumentRoot

„Katalog główny dokumentu” to domyślny katalog, w którym Apache będzie szukał pliku indeksu do obsługi żądań po odwiedzeniu twojego serwera: http://www.yoursite.com/ pobierze i udostępni plik indeksu z katalogu głównego dokumentu.

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

Step 3 - Uruchom i włącz usługę httpd.

[root@centos rdc]# systemctl start httpd && systemctl reload httpd 
[root@centos rdc]#

Step 4 - Skonfiguruj zaporę, aby umożliwić dostęp do żądań portu 80.

[root@centos]# firewall-cmd --add-service=http --permanent

Jak pokrótce wspomniano podczas konfigurowania CentOS do użytku z Maria DB, w repozytorium CentOS 7 yum nie ma natywnego pakietu MySQL . Aby to uwzględnić, będziemy musieli dodać repozytorium hostowane przez MySQL.

MariaDB vs MySQL na CentOS Linux

Należy zwrócić uwagę na to, że MySQL będzie wymagał innego zestawu zależności podstawowych z MariaDB. Również użycie MySQL przełamie koncepcję i filozofię CentOS: pakiety produkcyjne zaprojektowane z myślą o maksymalnej niezawodności.

Dlatego decydując się na użycie Marii lub MySQL, należy rozważyć dwie opcje: Czy mój obecny schemat DB będzie działał z Marią? Jakie korzyści daje mi zainstalowanie MySQL nad Marią?

Komponenty Maria są w 100% przezroczyste dla struktury MySQL, z pewną dodatkową wydajnością i lepszymi licencjami. O ile nie pojawi się ważny powód, zaleca się skonfigurowanie CentOS do korzystania z MariaDB.

Największe powody, dla których warto faworyzować Marię na CentOS to -

  • Większość ludzi będzie używać MariaDB. W przypadku problemów uzyskasz dodatkową pomoc od Marii.

  • CentOS został zaprojektowany do współpracy z Marią. Dlatego Maria zapewni lepszą stabilność.

  • Maria jest oficjalnie obsługiwana dla CentOS.

Pobierz i dodaj repozytorium MySQL

Będziemy chcieli pobrać i zainstalować repozytorium MySQL z -

http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

Step 1 - Pobierz repozytorium.

Repozytorium jest wygodnie spakowane w pakiecie rpm, co ułatwia instalację. Można go pobrać za pomocą wget -

[root@centos]# wget http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
   --2017-02-26 03:18:36--  http://repo.mysql.com/mysql-community-release-el75.noarch.rpm
   Resolving repo.mysql.com (repo.mysql.com)... 104.86.98.130

Step 2 - Zainstaluj MySQL z YUM.

Możemy teraz użyć menedżera pakietów yum do zainstalowania MySQL -

[root@centos]# yum -y install mysql-server

Step 3 - Uruchom i włącz usługę demona MySQL.

[root@centos]# systemctl start mysql 
[root@centos]# systemctl enable  mysql

Step 4 - Upewnij się, że nasza usługa MySQL działa.

[root@centos]# netstat -antup | grep 3306 
tcp6       0       0 :::3306       :::*       LISTEN       6572/mysqld
[root@centos]#

Uwaga - nie przepuszczamy żadnych reguł zapory. MySQL często jest skonfigurowany do użyciaUnix Domain Sockets. Gwarantuje to, że tylko serwer sieciowy stosu LAMP, lokalnie, może uzyskać dostęp do bazy danych MySQL, zajmując pełny wymiar wektora ataku w oprogramowaniu bazy danych.

Aby wysłać wiadomość e-mail z naszego serwera CentOS 7, będziemy potrzebować konfiguracji umożliwiającej skonfigurowanie nowoczesnego agenta przesyłania poczty (MTA). Mail Transfer Agent to demon odpowiedzialny za wysyłanie poczty wychodzącej do użytkowników systemu lub firmowych domen internetowych za pośrednictwem protokołu SMTP.

Warto zauważyć, że ten samouczek uczy tylko procesu konfigurowania demona do użytku lokalnego. Nie wdajemy się szczegółowo w zaawansowaną konfigurację konfiguracji MTA dla operacji biznesowych. Jest to połączenie wielu umiejętności, w tym między innymi: DNS, uzyskiwania statycznego, routowalnego adresu IP, który nie znajduje się na czarnej liście oraz konfigurowania zaawansowanych ustawień zabezpieczeń i usług. Krótko mówiąc, ten samouczek ma na celu zapoznanie Cię z podstawową konfiguracją. Nie używaj tego samouczka do konfiguracji MTA hosta połączonego z Internetem.

Zdecydowaliśmy się na łączny nacisk na bezpieczeństwo i łatwość administracji Postfixjako MTA dla tego samouczka. Domyślnym MTA zainstalowanym w starszych wersjach CentOS jest Sendmail .Sendmailjest świetnym MTA. Jednak, z pokornej opinii autora, Postfix trafia w najlepsze miejsce, odnosząc się do poniższych uwag dotyczących MTA. W najnowszej wersji CentOS Postfix zastąpił Sendmaila jako domyślny MTA.

Postfix to szeroko stosowany i dobrze udokumentowany MTA. Jest aktywnie utrzymywany i rozwijany. Wymaga minimalnej konfiguracji (to tylko poczta e-mail) i jest wydajna w przypadku zasobów systemowych (znowu jest to tylko poczta e-mail).

Step 1 - Zainstaluj Postfix z YUM Package Manager.

[root@centos]# yum -y install postfix

Step 2 - Skonfiguruj plik konfiguracyjny Postfix.

Plik konfiguracyjny Postfix znajduje się w: /etc/postfix/main.cf

W prostej konfiguracji Postfix, następujące elementy muszą być skonfigurowane dla określonego hosta: nazwa hosta, domena, źródło, inet_interfaces i miejsce docelowe.

Configure the hostname- Nazwa hosta to w pełni kwalifikowana nazwa domeny hosta Postfix. W rozdziale OpenLDAP nazwaliśmy pole CentOS: centos w domenie vmnet.local . Pozostańmy przy tym w tym rozdziale.

# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
myhostname = centos.vmnet.local

Configure the domain- Jak wspomniano powyżej, domena, której będziemy używać w tym samouczku, to vmnet.local

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component. # $mydomain is used as a default value for many other configuration
# parameters.
#
mydomain = vmnet.local

Configure the origin - W przypadku konfiguracji pojedynczego serwera i domeny, wystarczy odkomentować poniższe sekcje i pozostawić domyślne zmienne Postfix.

# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # which is fine for small sites. If you run a domain with multiple # machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# [email protected].
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part. 
#
myorigin = $myhostname myorigin = $mydomain

Configure the network interfaces- Zostawimy nasłuchiwanie Postfix na naszym pojedynczym interfejsie sieciowym i wszystkich protokołach i adresach IP powiązanych z tym interfejsem. Odbywa się to poprzez pozostawienie domyślnych ustawień włączonych dla Postfix.

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes. 
#
#inet_interfaces = all
#inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
# Enable IPv4, and IPv6 if supported
inet_protocols = all

Step 3 - Skonfiguruj obsługę SASL dla Postfix.

Bez obsługi uwierzytelniania SASL Postfix pozwoli na wysyłanie wiadomości e-mail tylko od użytkowników lokalnych. Lub wyświetli błąd odmowy przekazywania, gdy użytkownicy wyślą e-maile poza domenę lokalną.

Note - SASL lub Simple Application Security Layer Frameworkto platforma zaprojektowana do uwierzytelniania obsługująca różne techniki w różnych protokołach warstwy aplikacji. Zamiast pozostawiać mechanizmy uwierzytelniania protokołowi warstwy aplikacji, programiści SASL (i konsumenci) wykorzystują obecne protokoły uwierzytelniania dla protokołów wyższego poziomu, które mogą nie mieć wbudowanego wygodnego lub bezpieczniejszego uwierzytelniania (mówiąc o dostępie do usług zabezpieczonych).

Zainstaluj pakiet „cyrus-sasl *”

[root@centos]# yum -y install  cyrus-sasl 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: repos.forethought.net 
 * extras: repos.dfw.quadranet.com 
 * updates: mirrors.tummy.com 
Package cyrus-sasl-2.1.26-20.el7_2.x86_64 already installed and latest version
Nothing to do

Skonfiguruj /etc/postfix/main.cf dla SASL Auth

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Moje opcje SASL w main.conf

##Configure SASL Options Entries:
smtpd_sasl_auth_enable = yes
smptd_recipient_restrictions =
permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtp_sasl_type = dovecot
smtp_sasl_path = private/auth/etc

Step 4 - Skonfiguruj FirewallD, aby zezwolić na przychodzące usługi SMTP.

[root@centos]# firewall-cmd --permanent --add-service=smtp 
success

[root@centos]# firewall-cmd --reload 
success

[root@centos]#

Teraz sprawdźmy, czy nasz host CentOS zezwala na żądania na porcie 25 (SMTP) i odpowiada na nie.

Nmap scan report for 172.16.223.132 
Host is up (0.00035s latency). 
Not shown: 993 filtered ports 
PORT    STATE  SERVICE 
   20/tcp  closed ftp-data 
   21/tcp  open   ftp 
   22/tcp  open   ssh 
   25/tcp  open   smtp 
   80/tcp  open   http 
   389/tcp open   ldap 
   443/tcp open   https 
MAC Address: 00:0C:29:BE:DF:5F (VMware)

Jak widać, SMTP nasłuchuje, a demon odpowiada na żądania z naszej wewnętrznej sieci LAN.

Zainstaluj Dovecot IMAP i POP3 Server

Dovecot to bezpieczny serwer IMAP i POP3 przeznaczony do obsługi poczty przychodzącej od mniejszej do większej organizacji. Ze względu na jego obfite wykorzystanie z CentOS, będziemy używać Dovecot jako przykładu instalacji i konfiguracji serwera poczty przychodzącej dla CentOS i MTA SASL Provider.

Jak wspomniano wcześniej, nie będziemy konfigurować rekordów MX dla DNS ani tworzyć bezpiecznych reguł umożliwiających naszym usługom obsługę poczty dla domeny. W związku z tym samo skonfigurowanie tych usług na hoście z dostępem do Internetu może pozostawić miejsce na dziury w zabezpieczeniach bez rekordów SPF.

Step 1 - Zainstaluj Dovecot.

[root@centos]# yum -y install dovecot

Step 2 - Skonfiguruj dovecot.

Główny plik konfiguracyjny dovecot znajduje się pod adresem: /etc/dovecot.conf . Najpierw utworzymy kopię zapasową głównego pliku konfiguracyjnego. Dobrą praktyką jest zawsze tworzenie kopii zapasowych plików konfiguracyjnych przed wprowadzeniem zmian. W ten sposób (na przykład) podziały wierszy id zostaną zniszczone przez edytor tekstu, a lata zmian zostaną utracone. Przywracanie jest proste, jak skopiowanie bieżącej kopii zapasowej do produkcji.

Włącz protokoły i usługę demona dla dovecot

# Protocols we want to be serving. 
protocols = imap imaps pop3 pop3s

Teraz musimy włączyć demona dovecot, aby nasłuchiwał podczas uruchamiania -

[root@localhost]# systemctl start  dovecot 
[root@localhost]# systemctl enable dovecot

Upewnijmy się, że Dovecot nasłuchuje lokalnie na określonych portach dla: imap, pop3, imap secure i pop3 secure.

[root@localhost]# netstat -antup | grep dovecot 
 tcp        0        0 0.0.0.0:110        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:143        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:993        0.0.0.0:*        LISTEN        4368/dovecot
 tcp        0        0 0.0.0.0:995        0.0.0.0:*        LISTEN        4368/dovecot
 tcp6       0        0 :::110                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::143                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::993                :::*          LISTEN        4368/dovecot
 tcp6       0        0 :::995                :::*          LISTEN        4368/dovecot

[root@localhost]#

Jak widać, dovecot nasłuchuje na określonych portach dla IPv4 i IPv4.

POP3 110
POP3 995
IMAP 143
IMAP 993

Teraz musimy stworzyć reguły zapory.

[root@localhost]# firewall-cmd --permanent --add-port=110/tcp 
success
 
[root@localhost]# firewall-cmd --permanent --add-port=143/tcp 
success
 
[root@localhost]# firewall-cmd --permanent --add-port=995/tcp 
success
 
[root@localhost]# firewall-cmd --permanent --add-port=993/tcp 
success
 
[root@localhost]# firewall-cmd --reload 
success
 
[root@localhost]#

Nasz serwer poczty przychodzącej przyjmuje żądania dotyczące protokołów POP3 , POP3 , IMAP i IMAP do hostów w sieci LAN.

Port Scanning host: 192.168.1.143

   Open TCP Port:   21          ftp 
   Open TCP Port:   22          ssh 
   Open TCP Port:   25          smtp 
   Open TCP Port:   80          http 
   Open TCP Port:   110         pop3 
   Open TCP Port:   143         imap 
   Open TCP Port:   443         https 
   Open TCP Port:   993         imaps 
   Open TCP Port:   995         pop3s

Zanim zagłębimy się w instalację FTP na CentOS, musimy dowiedzieć się trochę o jego użyciu i bezpieczeństwie. FTPto naprawdę wydajny i dopracowany protokół przesyłania plików między systemami komputerowymi. Protokół FTP jest używany i udoskonalany od kilku dziesięcioleci. Do wydajnego przesyłania plików przez sieć z opóźnieniem lub ze względu na samą szybkość, FTP jest doskonałym wyborem. Bardziej niż SAMBA lub SMB.

Jednak FTP ma pewne problemy z bezpieczeństwem. Właściwie kilka poważnych problemów z bezpieczeństwem. FTP używa naprawdę słabej metody uwierzytelniania za pomocą zwykłego tekstu. Z tego powodu uwierzytelnione sesje powinny opierać się na sFTP lub FTPS, gdzie TLS jest używany do pełnego szyfrowania sesji logowania i transferu.

Biorąc pod uwagę powyższe zastrzeżenia, zwykły stary serwer FTP nadal jest używany w środowisku biznesowym. Głównym zastosowaniem są anonimowe repozytoria plików FTP. Jest to sytuacja, w której żadne uwierzytelnienie nie jest gwarantowane w celu pobrania lub przesłania plików. Niektóre przykłady anonimowego użycia FTP to:

  • Duże firmy programistyczne nadal używają anonimowych repozytoriów ftp, umożliwiając użytkownikom Internetu pobieranie shareware i poprawek.

  • Umożliwienie użytkownikom internetu przesyłania i pobierania dokumentów publicznych.

  • Niektóre aplikacje automatycznie wysyłają zaszyfrowane, zarchiwizowane dzienniki lub pliki konfiguracyjne do repozytorium za pośrednictwem protokołu FTP.

Dlatego jako administrator CentOS możliwość instalacji i konfiguracji FTP jest nadal zaprojektowaną umiejętnością.

Będziemy używać demona FTP o nazwie vsFTPlub Very Secure FTP Daemon. vsFTP był używany przez jakiś czas w rozwoju. Ma reputację bezpiecznego, łatwego w instalacji i konfiguracji oraz niezawodnego.

Step 1 - Zainstaluj vsFTPd za pomocą menedżera pakietów YUM.

[root@centos]# yum -y install vsftpd.x86_64

Step 2 - Skonfiguruj vsFTP, aby uruchamiał się przy rozruchu za pomocą systemctl.

[root@centos]# systemctl start vsftpd 
[root@centos]# systemctl enable vsftpd 
Created symlink from /etc/systemd/system/multi-
user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

Step 3 - Skonfiguruj FirewallD, aby umożliwić kontrolę FTP i sesje transferu.

[root@centos]# firewall-cmd --add-service=ftp --permanent 
success 
[root@centos]#

Upewnij się, że nasz demon FTP jest uruchomiony.

[root@centos]# netstat -antup | grep vsftp 
tcp6       0       0 :::21       :::*       LISTEN       13906/vsftpd         
[root@centos]#

Step 4 - Skonfiguruj vsFTPD dla anonimowego dostępu.

Utwórz katalog główny FTP

[root@centos]# mkdir /ftp

Zmień właściciela i grupę root FTP na ftp

[root@centos]# chown ftp:ftp /ftp
Set minimal permissions for FTP root:

[root@centos]# chmod -R 666 /ftp/

[root@centos]# ls -ld /ftp/
drw-rw-rw-. 2 ftp ftp 6 Feb 27 02:01 /ftp/

[root@centos]#

W tym przypadku daliśmy użytkownikom dostęp do odczytu / zapisu do całego głównego drzewa FTP.

Skonfiguruj /etc/vsftpd/vsftpd.conf "

[root@centos]# vim /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.

Będziemy chcieli zmienić następujące dyrektywy w pliku vsftp.conf .

  • Włącz przesyłanie anonimowe, odkomentowując anon_mkdir_write_enable = YES

  • chown przesłane pliki do użytkownika ftp w systemie

    chown_uploads = TAK

    chown_username = ftp

  • Zmień użytkownika systemu używanego przez vsftp na użytkownika ftp: nopriv_user = ftp

  • Ustaw baner niestandardowy, który użytkownik będzie czytał przed zalogowaniem.

    ftpd_banner = Witamy w naszym anonimowym repozytorium FTP. Wszystkie połączenia są monitorowane i rejestrowane.

  • Ustawmy tylko połączenia IPv4 -

    słuchać = TAK

    Listen_ipv6 = NIE

Teraz musimy ponownie uruchomić lub HUP usługę vsftpd zastosować nasze zmiany.

[root@centos]# systemctl restart vsftpd

Połączmy się z naszym hostem FTP i upewnijmy się, że nasz demon FTP odpowiada.

[root@centos rdc]# ftp 10.0.4.34 
Connected to localhost (10.0.4.34). 
220 Welcome to our Anonymous FTP Repo. All connections are monitored and logged. 
Name (localhost:root): anonymous 
331 Please specify the password. 
Password: 
'230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp>

Mówiąc o zdalnym zarządzaniu w CentOS jako administrator, zbadamy dwie metody -

  • Zarządzanie konsolą
  • Zarządzanie GUI

Zdalne zarządzanie konsolą

Zdalne zarządzanie konsolą oznacza wykonywanie zadań administracyjnych z wiersza poleceń za pośrednictwem usługi takiej jak ssh. Aby efektywnie korzystać z CentOS Linux, jako administrator musisz biegle posługiwać się wierszem poleceń. Linux w swoim sercu został zaprojektowany do używania z konsoli. Nawet dzisiaj niektórzy administratorzy systemów preferują moc polecenia i oszczędzają pieniądze na sprzęcie, uruchamiając komputery z systemem Linux bez fizycznego terminala i bez zainstalowanego GUI.

Zdalne zarządzanie GUI

Zdalne zarządzanie GUI jest zwykle realizowane na dwa sposoby: zdalna sesja X-Session lub protokół warstwy aplikacji GUI, taki jak VNC. Każdy ma swoje zalety i wady. Jednak w większości VNC jest najlepszym wyborem dla administracji. Umożliwia sterowanie graficzne z poziomu innych systemów operacyjnych, takich jak Windows lub OS X, które natywnie nie obsługują protokołu X Windows.

Używanie zdalnych sesji X jest natywne zarówno dla Window-Managerów X-Window, jak i dla DesktopManagerów działających na X. Jednak cała architektura sesji X jest najczęściej używana w Linuksie. Nie każdy administrator systemu będzie miał pod ręką laptopa z systemem Linux, aby ustanowić zdalną sesję X. Dlatego najczęściej używa się dostosowanej wersji VNC Server.

Największe wady VNC to: VNC nie obsługuje natywnie środowiska wielu użytkowników, takiego jak zdalne sesje X-Sessions. Dlatego najlepszym wyborem byłby dostęp z graficznym interfejsem użytkownika do zdalnych sesji Xsesji użytkowników końcowych. Jednak zajmujemy się głównie zdalnym administrowaniem serwerem CentOS.

Omówimy konfigurację VNC dla wielu administratorów w porównaniu z kilkuset użytkownikami końcowymi ze zdalnymi sesjami X-Sessions.

Położyć fundament pod bezpieczeństwo dzięki SSH do zdalnego dostępu do konsoli

ssh lub Secure Shelljest obecnie standardem do zdalnego administrowania dowolnym serwerem Linux. W przeciwieństwie do telnetu, protokół SSH wykorzystuje protokół TLS do uwierzytelniania i kompleksowego szyfrowania komunikacji. Po prawidłowej konfiguracji administrator może być całkiem pewien, że zarówno jego hasło, jak i serwer są zdalnie zaufane.

Przed skonfigurowaniem SSH porozmawiajmy trochę o podstawowych zabezpieczeniach i najmniej powszechnym dostępie. Gdy SSH działa na domyślnym porcie 22; raczej wcześniej niż później dostaniesz ataki słownikowe typu brute force na popularne nazwy użytkowników i hasła. To po prostu przychodzi z terytorium. Bez względu na to, ile hostów dodasz do plików odmowy, będą one codziennie przychodzić z różnych adresów IP.

Dzięki kilku powszechnym zasadom możesz po prostu podjąć proaktywne kroki i pozwolić złym ludziom marnować ich czas. Poniżej przedstawiono kilka zasad bezpieczeństwa, których należy przestrzegać przy użyciu protokołu SSH do zdalnej administracji na serwerze produkcyjnym:

  • Nigdy nie używaj wspólnej nazwy użytkownika ani hasła. Nazwy użytkowników w systemie nie powinny być domyślne w systemie ani powiązane z firmowym adresem e-mail, na przykład:[email protected]

  • Dostęp do roota lub dostęp administracyjny nie powinien być dozwolony przez SSH. Użyj unikalnej nazwy użytkownika i su jako roota lub konta administracyjnego po uwierzytelnieniu przez SSH.

  • Polityka haseł jest koniecznością: Złożone hasła użytkowników SSH, takie jak: „This & IS & a & GUD & P @ ssW0rd & 24 & me”. Zmieniaj hasła co kilka miesięcy, aby wyeliminować podatność na przyrostowe ataki siłowe.

  • Wyłącz porzucone lub nieużywane konta przez dłuższy czas. Jeśli menedżer ds. Rekrutacji ma wiadomość głosową z informacją, że nie będzie przeprowadzać rozmów kwalifikacyjnych przez miesiąc; może to na przykład prowadzić do osób znających się na technologii, które mają dużo wolnego czasu.

  • Oglądaj swoje dzienniki codziennie. Jako administrator systemu poświęć co najmniej 30-40 minut każdego ranka na przeglądanie dzienników systemu i zabezpieczeń. Jeśli zostaniesz o to poproszony, powiedz wszystkim, że nie masz czasu, aby nie być proaktywnym. Ta praktyka pomoże wyodrębnić znaki ostrzegawcze, zanim problem pojawi się u użytkowników końcowych i zyski firmy.

Note On Linux Security- Każdy zainteresowany administracją Linuksa powinien aktywnie śledzić aktualne wiadomości i technologie dotyczące cyberbezpieczeństwa. Chociaż głównie słyszymy o włamaniach do innych systemów operacyjnych, niezabezpieczony Linux box jest poszukiwanym skarbem dla cyberprzestępców. Dzięki mocy Linuksa i szybkiemu połączeniu internetowemu doświadczony cyberprzestępca może wykorzystać Linuksa do ataków na inne systemy operacyjne.

Zainstaluj i skonfiguruj SSH do zdalnego dostępu

Step 1 - Zainstaluj serwer SSH i wszystkie pakiety zależne.

[root@localhost]# yum -y install openssh-server 
'Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
* base: repos.centos.net 
* extras: repos.dfw.centos.com 
* updates: centos.centos.com 
Resolving Dependencies 
   --> Running transaction check 
   ---> Package openssh-server.x86_64 0:6.6.1p1-33.el7_3 will be installed 
   --> Finished Dependency Resolution 
Dependencies Resolved

Step 2 - Bezpiecznie używaj regularnie, aby dodać dostęp do powłoki.

[root@localhost ~]# useradd choozer 
[root@localhost ~]# usermod -c "Remote Access" -d /home/choozer -g users -G 
wheel -a choozer

Note- Dodaliśmy nowego użytkownika do grupy kół , umożliwiając dostęp do konta roota po uwierzytelnieniu dostępu przez SSH. Użyliśmy również nazwy użytkownika, której nie można znaleźć na listach popularnych słów. W ten sposób nasze konto nie zostanie zablokowane, gdy zostanie zaatakowany SSH.

Plik zawierający ustawienia konfiguracyjne dla serwera sshd to / etc / ssh / sshd_config .

Fragmenty, które chcemy początkowo edytować, to -

LoginGraceTime 60m
PermitRootLogin no

Step 3- Załaduj ponownie demona SSH sshd .

[root@localhost]# systemctl reload sshd

Dobrze jest ustawić okres karencji na wylogowanie na 60 minut. Niektóre złożone zadania administracyjne mogą przekraczać domyślną wartość 2 minut. Nie ma nic bardziej frustrującego niż przekroczenie limitu czasu sesji SSH podczas konfigurowania lub badania zmian.

Step 4 - Spróbujmy zalogować się przy użyciu poświadczeń roota.

bash-3.2# ssh centos.vmnet.local 
[email protected]'s password:   
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Step 5- Nie możemy już logować się zdalnie przez ssh z poświadczeniami roota . Zalogujmy się więc do naszego nieuprzywilejowanego konta użytkownika i su na koncie root .

bash-3.2# ssh [email protected]
[email protected]'s password:
[choozer@localhost ~]$ su root
Password:

[root@localhost choozer]#

Step 6- Na koniec upewnijmy się, że usługa SSHD ładuje się podczas rozruchu, a zapora zezwala na zewnętrzne połączenia SSH.

[root@localhost]# systemctl enable sshd

[root@localhost]# firewall-cmd --permanent --add-service=ssh 
success

[root@localhost]# firewall-cmd --reload 
success
 
[root@localhost]#

SSH jest teraz skonfigurowane i gotowe do zdalnej administracji. W zależności od granicy przedsiębiorstwa może być konieczne skonfigurowanie urządzenia granicznego filtrującego pakiety, aby umożliwić zdalne administrowanie za pomocą protokołu SSH poza firmową siecią LAN.

Skonfiguruj VNC do zdalnej administracji CentOS

Istnieje kilka sposobów, aby umożliwić zdalne administrowanie CentOS przez VNC na CentOS 6 - 7. Najłatwiejszym, ale najbardziej ograniczającym sposobem jest po prostu użycie pakietu o nazwie vino .Vinoto aplikacja Virtual Network Desktop Connection dla systemu Linux, zaprojektowana wokół platformy Gnome Desktop. Dlatego zakłada się, że instalacja została zakończona przy użyciu Gnome Desktop. Jeśli Gnome Desktop nie został zainstalowany, zrób to przed kontynuowaniem. Vino zostanie domyślnie zainstalowany z instalacją Gnome GUI.

Aby skonfigurować udostępnianie ekranu z Vino pod Gnome, chcemy przejść do Preferencji systemowych CentOS w celu udostępniania ekranu.

Applications->System Tools->Settings->Sharing

Uwagi dotyczące konfiguracji udostępniania pulpitu VNC -

  • Disable New Connections must ask for access- Ta opcja wymaga fizycznego dostępu do ok każdego połączenia. Ta opcja uniemożliwi zdalne administrowanie, chyba że ktoś jest przy fizycznym pulpicie.

  • Enable Require a password- To jest niezależne od hasła użytkownika. Będzie kontrolować dostęp do wirtualnego pulpitu i nadal wymagać hasła użytkownika, aby uzyskać dostęp do zablokowanego pulpitu (jest to dobre dla bezpieczeństwa).

  • Forward UP&P Ports: If available leave disabled- Przekazywanie portów UP&P spowoduje wysłanie żądań Universal Plug and Play dla urządzenia warstwy 3, aby automatycznie zezwolić na połączenia VNC z hostem. Nie chcemy tego.

Upewnij się, że vino nasłuchuje na porcie VNC 5900.

[root@localhost]# netstat -antup | grep vino 
tcp        0        0 0.0.0.0:5900        0.0.0.0:*        LISTEN        4873/vino-server
tcp6       0        0 :::5900                :::*          LISTEN        4873/vino-server
   
[root@localhost]#

Skonfigurujmy teraz naszą zaporę ogniową, aby zezwalała na przychodzące połączenia VNC.

[root@localhost]# firewall-cmd --permanent --add-port=5900/tcp 
success

[root@localhost]# firewall-cmd --reload 
success

[root@localhost rdc]#

Wreszcie, jak widać, jesteśmy w stanie podłączyć nasz CentOS Box i administrować nim za pomocą klienta VNC w systemie Windows lub OS X.

Równie ważne jest przestrzeganie tych samych zasad dla VNC, jakie ustaliliśmy dla SSH. Podobnie jak SSH, VNC jest nieustannie skanowane w różnych zakresach adresów IP i testowane pod kątem słabych haseł. Warto również zauważyć, że pozostawienie włączonego domyślnego logowania CentOS z limitem czasu konsoli pomaga w zdalnym zabezpieczeniu VNC. Ponieważ osoba atakująca będzie potrzebować VNC i hasła użytkownika, upewnij się, że hasło do udostępniania ekranu jest inne i tak samo trudne do odgadnięcia, jak hasło użytkownika.

Po wprowadzeniu hasła udostępniania ekranu VNC, musimy również wprowadzić hasło użytkownika, aby uzyskać dostęp do zablokowanego pulpitu.

Security Note- Domyślnie VNC nie jest protokołem szyfrowanym. Dlatego połączenie VNC powinno być tunelowane przez SSH w celu szyfrowania.

Skonfiguruj tunel SSH przez VNC

Skonfigurowanie tunelu SSH zapewni warstwę szyfrowania SSH do tunelowania połączenia VNC. Kolejną świetną funkcją jest to, że używa kompresji SSH, aby dodać kolejną warstwę kompresji do aktualizacji ekranu GUI VNC. Bardziej bezpieczne i szybsze jest zawsze dobrą rzeczą podczas administrowania serwerami CentOS!

Więc od twojego klienta, który będzie inicjował połączenie VNC, skonfigurujmy zdalny tunel SSH. W tej demonstracji używamy OS X. Najpierw musimy wykonać sudo do rootowania .

bash-3.2# sudo -s 
password:

Wprowadź hasło użytkownika i powinniśmy mieć teraz powłokę roota z # znakiem zachęty -

bash-3.2#

Teraz stwórzmy nasz tunel SSH .

ssh -f [email protected] -L 2200:192.168.1.143:5900 -N

Złammy to polecenie -

  • ssh - Uruchamia lokalne narzędzie ssh

  • -f - ssh powinien działać w tle po pełnym wykonaniu zadania

  • [email protected] - Zdalny użytkownik ssh na serwerze CentOS obsługującym usługi VNC

  • -L 2200:192.168.1.143:5900 - Utwórz nasz tunel [Port lokalny]: [host zdalny]: [port zdalny usługi VNC]

  • -N mówi ssh, że nie chcemy wykonywać polecenia w systemie zdalnym

bash-3.2# ssh -f [email protected] -L 2200:192.168.1.143:5900 -N
[email protected]'s password:

Po pomyślnym wprowadzeniu hasła zdalnego użytkownika ssh, tworzony jest nasz tunel ssh . A teraz fajna część! Aby się połączyć, kierujemy naszego klienta VNC do hosta lokalnego na porcie naszego tunelu, w tym przypadku portu 2200. Poniżej przedstawiono konfigurację klienta VNC w laptopie Mac -

I wreszcie nasze zdalne połączenie pulpitu VNC!

Fajną rzeczą w tunelowaniu SSH jest to, że można go używać dla prawie każdego protokołu. Tunele SSH są powszechnie używane do ominięcia filtrowania portów wychodzących i wejściowych przez usługodawcę internetowego, a także oszukiwania IDS / IPS warstwy aplikacji, unikając monitorowania innej warstwy sesji.

  • Twój dostawca usług internetowych może filtrować port 5900 pod kątem kont innych niż biznesowe, ale zezwalać na SSH na porcie 22 (lub można uruchomić SSH na dowolnym porcie, jeśli port 22 jest filtrowany).

  • IPS i IDS na poziomie aplikacji sprawdzają ładunek. Na przykład typowe przepełnienie buforu lub wstrzyknięcie kodu SQL. Szyfrowanie SSH typu end-to-end zaszyfruje dane warstwy aplikacji.

Tunelowanie SSH to świetne narzędzie w zestawie narzędzi administratora systemu Linux do wykonywania zadań. Jednak jako administrator chcemy zbadać blokowanie dostępności mniej uprzywilejowanych użytkowników mających dostęp do tunelowania SSH.

Administration Security Note- Ograniczenie tunelowania SSH to coś, co wymaga przemyślenia ze strony administratora. Ocena, dlaczego użytkownicy potrzebują tunelowania SSH w pierwszej kolejności; czego użytkownicy potrzebują tunelowania; wraz z praktycznym prawdopodobieństwem ryzyka i najgorszym skutkiem.

Jest to zaawansowany temat wykraczający poza sferę elementarza dla średnio zaawansowanych. Badania na ten temat są zalecane dla tych, którzy chcą dotrzeć do wyższych szczebli administracji CentOS Linux.

Użyj tunelu SSH dla zdalnego X-Windows

Projekt X-Windows w Linuksie jest naprawdę zgrabny w porównaniu z systemem Windows. Jeśli chcemy sterować zdalnym Linuksem z innego Linuksa, możemy skorzystać z mechanizmów wbudowanych w X.

X-Windows (często nazywany po prostu „X”) zapewnia mechanizm wyświetlania okien aplikacji pochodzących z jednego systemu Linux do części wyświetlanej X na innym komputerze z systemem Linux. Tak więc przez SSH możemy zażądać przekazania aplikacji X-Windows na ekran innego urządzenia Linux na całym świecie!

Aby uruchomić aplikację X zdalnie przez tunel ssh, wystarczy uruchomić jedno polecenie -

[root@localhost]# ssh -X [email protected]

The syntax is - ssh -X [użytkownik] @ [host], a na hoście musi działać ssh z poprawnym użytkownikiem.

Poniżej znajduje się zrzut ekranu GIMP działający na stacji roboczej Ubuntu przez zdalny tunel ssh XWindows.

Uruchamianie aplikacji zdalnie z innego serwera lub stacji roboczej z systemem Linux jest dość proste. Możliwe jest również rozpoczęcie całej sesji X-Session i zdalne zarządzanie całym środowiskiem graficznym na kilka sposobów.

  • XDMCP

  • Pakiety oprogramowania Headless, takie jak NX

  • Konfigurowanie alternatywnych ekranów i pulpitów w X-ach i menedżerach pulpitu, takich jak Gnome lub KDE

Ta metoda jest najczęściej używana w przypadku serwerów bezgłowych bez fizycznego wyświetlacza i naprawdę wykracza poza zakres podstawowego poziomu pośredniego. Jednak dobrze jest wiedzieć o dostępnych opcjach.

Istnieje kilka narzędzi innych firm, które mogą zwiększyć możliwości monitorowania ruchu CentOS. W tym samouczku skupimy się na tych, które są spakowane w głównych repozytoriach dystrybucji CentOS i repozytorium Fedora EPEL.

Zawsze będą sytuacje, w których Administrator (z tego czy innego powodu) pozostanie tylko z narzędziami w głównych repozytoriach CentOS. Większość omawianych narzędzi jest zaprojektowana do użytku przez Administratora z powłoką fizycznego dostępu. W przypadku monitorowania ruchu za pomocą dostępnego interfejsu web-gui, najlepszym wyborem jest użycie narzędzi innych firm, takich jak ntop-ng lub Nagios (zamiast ponownego tworzenia takich obiektów od podstaw).

Aby uzyskać dalsze informacje na temat obu konfigurowalnych rozwiązań w interfejsie web-gui, poniżej znajduje się kilka linków umożliwiających rozpoczęcie badań.

Monitorowanie ruchu dla scenariuszy LAN / WAN

Nagios

Nagios istnieje od dawna, dlatego jest zarówno wypróbowany, jak i przetestowany. W pewnym momencie wszystko to było darmowe i open-source, ale od tego czasu rozwinęło się w rozwiązanie Enterprise z płatnymi modelami licencjonowania, aby wspierać potrzebę wyrafinowania Enterprise. Dlatego przed planowaniem jakichkolwiek wdrożeń z Nagios upewnij się, że licencjonowane wersje open source spełnią Twoje potrzeby lub planujesz wydatki z uwzględnieniem budżetu przedsiębiorstwa.

Większość oprogramowania do monitorowania ruchu Nagios typu open source można znaleźć pod adresem: https://www.nagios.org

Podsumowanie historii Nagiousa znajdziesz na oficjalnej stronie historii Nagios: https://www.nagios.org/about/history/

ntopng

Kolejne świetne narzędzie umożliwiające monitorowanie przepustowości i ruchu za pośrednictwem interfejsu web-gui nazywa się ntopng . ntopng jest podobny do uniksowego narzędzia ntop i może zbierać dane dla całej sieci LAN lub WAN. Udostępnienie internetowego interfejsu użytkownika do administrowania, konfigurowania i tworzenia wykresów ułatwia korzystanie z niego w całych działach IT.

Podobnie jak Nagious, ntopng ma dostępne zarówno wersje open source, jak i płatne dla przedsiębiorstw. Aby uzyskać więcej informacji na temat ntopng , odwiedź witrynę internetową:http://www.ntop.org/

Zainstaluj repozytorium Fedora EPEL ─ Dodatkowe pakiety dla Enterprise Linux

Aby uzyskać dostęp do niektórych narzędzi potrzebnych do monitorowania ruchu, będziemy musieli skonfigurować nasz system CentOS do korzystania z repozytorium EPEL.

Repozytorium EPEL nie jest oficjalnie utrzymywane ani obsługiwane przez CentOS. Jednak jest obsługiwany przez grupę wolontariuszy Fedory Core, aby zająć się pakietami powszechnie używanymi przez profesjonalistów Linux Enterprise, nieuwzględnionych w CentOS, Fedora Core ani Red Hat Linux Enterprise.

Caution -

Pamiętaj, że repozytorium EPEL nie jest oficjalne dla CentOS i może zepsuć kompatybilność i funkcjonalność na serwerach produkcyjnych z typowymi zależnościami. Mając to na uwadze, zaleca się, aby zawsze testować na serwerze nieprodukcyjnym, na którym działają te same usługi co produkcja, przed wdrożeniem na krytycznym serwerze systemowym.

Naprawdę największą zaletą korzystania z repozytorium EHEL nad jakimkolwiek innym repozytorium stron trzecich z CentOS jest to, że możemy być pewni, że pliki binarne nie są skażone. Uważa się, że najlepszą praktyką jest niekorzystanie z repozytoriów z niezaufanego źródła.

Biorąc to wszystko pod uwagę, oficjalne repozytorium EPEL jest tak powszechne z CentOS, że można je łatwo zainstalować za pośrednictwem YUM.

[root@CentOS rdc]# yum -y install epel-release
 Loaded plugins: fastestmirror, langpacks
 Loading mirror speeds from cached hostfile
 * base: repo1.dal.innoscale.net
 * extras: repo1.dal.innoscale.net
 * updates: mirror.hmc.edu
Resolving Dependencies
   --> Running transaction check
   ---> Package epel-release.noarch 0:7-9 will be installed
   --> Finished Dependency Resolution
Dependencies Resolved
--{ condensed output }--

Po zainstalowaniu repozytorium EPEL będziemy chcieli je zaktualizować.

[root@CentOS rdc]# yum repolist 
Loaded plugins: fastestmirror, langpacks 
epel/x86_64/metalink
|  11 kB  00:00:00      
epel
| 4.3 kB  00:00:00      
(1/3): epel/x86_64/group_gz
| 170 kB  00:00:00      
(2/3): epel/x86_64/updateinfo
| 753 kB  00:00:01      
(3/3): epel/x86_64/primary_db
--{ condensed output }--

W tym momencie nasze repozytorium EPEL powinno być skonfigurowane i gotowe do użycia. Zacznijmy od zainstalowania nload do monitorowania przepustowości interfejsu.

Narzędzia, na których skupimy się w tym samouczku, to:

  • nload
  • ntop
  • ifstst
  • iftop
  • vnstat
  • wieprze netto
  • Wireshark
  • Zrzut TCP
  • Traceroute

To wszystko jest standardem do monitorowania ruchu w przedsiębiorstwach Linux. Użycie każdego zakresu od prostego do zaawansowanego, więc omówimy tylko pokrótce narzędzia takie jak Wireshark i TCP Dump.

Zainstaluj i używaj nload

Po zainstalowaniu i skonfigurowaniu naszych repozytoriów EPEL w CentOS powinniśmy być teraz w stanie zainstalować i używać nload . To narzędzie jest przeznaczone do wykresu przepustowości dla każdego interfejsu w czasie rzeczywistym.

Podobnie jak większość innych podstawowych instalacji, nload jest instalowany przez menedżera pakietów YUM.

[root@CentOS rdc]# yum -y install nload
Resolving Dependencies
--> Running transaction check
---> Package nload.x86_64 0:0.7.4-4.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================== 
=============================================================================== 
 Package                             Arch
 Version                           Repository                          Size 
=============================================================================== 
=============================================================================== 
Installing: 
 nload                               x86_64
 0.7.4-4.el7                        epel                                70 k  
Transaction Summary
=============================================================================== 
=============================================================================== 
Install  1 Package
Total download size: 70 k
Installed size: 176 k
Downloading packages:
--{ condensed output }--

Teraz mamy zainstalowany nload i używanie go jest całkiem proste.

[root@CentOS rdc]# nload enp0s5

nload będzie monitorować określony interfejs. W tym przypadku enp0s5 jest interfejsem Ethernet w czasie rzeczywistym z terminala dla obciążenia ruchu sieciowego i całkowitego wykorzystania przepustowości.

Jak widać, nload przedstawi wykresy zarówno przychodzące, jak i wychodzące z określonego interfejsu, wraz z fizyczną reprezentacją przepływu danych ze znakami krzyżyka „#”.

Przedstawiony zrzut ekranu przedstawia prostą stronę internetową ładowaną przez ruch demona w tle.

Typowe przełączniki wiersza poleceń dla nload to -

Komenda Akcja
-za Okres czasu
-t Interwał aktualizacji czasu w milisekundach, wartość domyślna to 500
-u Ustawia wyświetlanie pomiaru ruchu h
-U Ustawia jednostki miary całkowitego ruchu przychodzącego / wychodzącego, takie same opcje jak -u

Standardowa składnia nload to -

nload [options] <interface>

Jeśli nie określono żadnego interfejsu, nload automatycznie pobierze pierwszy interfejs Ethernet. Spróbujmy zmierzyć całkowitą ilość danych wchodzących / wychodzących w megabajtach i bieżące prędkości przesyłania danych w megabitach.

[root@CentOS rdc]# nload -U M -u m

Dane przychodzące / wychodzące z bieżącego interfejsu są mierzone w megabitach na sekundę, a każdy wiersz „Ttl”, reprezentujący łączne dane przychodzące / wychodzące, jest wyświetlany w megabajtach.

nload jest przydatny dla administratora, aby zobaczyć, ile danych przeszło przez interfejs i ile danych jest obecnie wchodzących / wychodzących z określonego interfejsu.

Aby zobaczyć inne interfejsy bez zamykania nload, po prostu użyj klawiszy strzałek w lewo / w prawo. Spowoduje to przejście przez wszystkie dostępne interfejsy w systemie.

Możliwe jest jednoczesne monitorowanie wielu interfejsów za pomocą przełącznika -m -

[root@CentOS rdc]# nload -u K -U M -m lo -m enp0s5

monitorowanie obciążenia dwa interfejsy jednocześnie (lo i enp0s5) -

systemd zmienił sposób zarządzania rejestrowaniem systemu w CentOS Linux. Zamiast każdego demona w systemie umieszczać logi w poszczególnych lokalizacjach, zamiast używać narzędzi takich jak tail lub grep jako podstawowego sposobu sortowania i filtrowania wpisów dziennika,journald zapewnił pojedynczy punkt administracyjny do analizy dzienników systemowych.

Główne komponenty logowania systemd to: journal, jounralctl i journald.conf

journald jest głównym demonem rejestrującym i jest konfigurowany przez edycję journald.conf, podczas gdy dziennik journalctl jest używany do analizowania zdarzeń zarejestrowanych przez dziennik .

Zdarzenia rejestrowane przez dziennik obejmują: zdarzenia jądra, procesy użytkownika i usługi demonów.

Ustaw odpowiednią strefę czasową systemu

Przed użyciem journalctl musimy się upewnić, że nasz czas systemowy jest ustawiony na prawidłowy czas. Aby to zrobić, chcemy użyć timedatectl .

Sprawdźmy aktualny czas systemowy.

[root@centos rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[root@centos rdc]#

Obecnie system działa poprawnie z lokalną strefą czasową. Jeśli twój system nie jest, ustawmy odpowiednią strefę czasową. Po zmianie ustawień CentOS automatycznie obliczy przesunięcie strefy czasowej od bieżącej strefy czasowej, dostosowując od razu zegar systemowy.

Wymieńmy wszystkie strefy czasowe z timedatectl -

[root@centos rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

To jest sporny wynik z timedatectl list-timezones . Aby znaleźć określoną lokalną strefę czasową, można użyć polecenia grep -

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[root@centos rdc]#

Etykieta używana przez CentOS to zwykle Kraj / Region z podkreśleniem zamiast spacji (Nowy_Jork versus „Nowy Jork”).

Teraz ustawmy naszą strefę czasową -

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

Twój zegar systemowy powinien automatycznie dostosować czas.

Użyj journalctl do analizy dzienników

Typowe przełączniki wiersza poleceń podczas korzystania z journalctl -

Przełącznik Akcja
-k Wyświetla tylko komunikaty jądra
-u Listy według określonej jednostki (httpd, sshd itp.)
-b Uruchamia odsunięcie etykiety
-o Rejestruje format wyjściowy
-p Filtruje według typu dziennika (nazwa lub numer)
-FA Fieldname lub fieldnamevalue
--utc Czas w UTC
--od Filtruj według przedziału czasowego

Sprawdź dzienniki rozruchowe

Najpierw zbadamy i skonfigurujemy dzienniki rozruchowe w CentOS Linux. Pierwszą rzeczą, którą zauważysz, jest to, że CentOS domyślnie nie przechowuje rejestrowania rozruchu, który jest trwały podczas ponownego uruchamiania.

Aby sprawdzić dzienniki rozruchowe dla każdej instancji ponownego uruchomienia, możemy wydać następujące polecenie -

[root@centos rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[root@centos rdc]#

Po ponownym uruchomieniu systemu możemy zobaczyć kolejny wpis.

[root@centos rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[root@centos rdc]#

Przyjrzyjmy się teraz ostatniej instancji rejestrowania rozruchu -

root@centos rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

Powyżej znajduje się skondensowany wynik z naszego ostatniego buta. Moglibyśmy również odwołać się do dziennika rozruchu z godzin, dni, tygodni, miesięcy, a nawet lat. Jednak domyślnie CentOS nie przechowuje trwałych dzienników rozruchu. Aby umożliwić trwałe przechowywanie dzienników rozruchowych, musimy wprowadzić kilka zmian w konfiguracji -

  • Utwórz centralne punkty przechowywania dzienników rozruchowych
  • Nadaj odpowiednie uprawnienia do nowego folderu dziennika
  • Skonfiguruj journald.conf do trwałego rejestrowania

Skonfiguruj lokalizację rozruchową dla trwałych dzienników rozruchowych

Początkowym miejscem, w którym dziennik będzie chciał przechowywać trwałe dzienniki rozruchu, jest / var / log / journal . Ponieważ to nie istnieje domyślnie, stwórzmy to -

[root@centos rdc]# mkdir /var/log/journal

Teraz nadajmy katalogowi odpowiednie uprawnienia dostęp do demona Journald -

systemd-tmpfiles --create --prefix /var/log/journal

Na koniec powiedzmy dziennikowi, że powinien przechowywać trwałe dzienniki rozruchu. W vimie lub twoim ulubionym edytorze tekstu otwórz /etc/systemd/jounrald.conf " .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

Linia, którą się zajmujemy, to Storage = . Najpierw usuń komentarz # , a następnie zmień naStorage = persistentjak pokazano powyżej. Zapisz i uruchom ponownie system CentOS i upewnij się, że podczas uruchamiania dziennika journalctl list-boot powinno być wiele wpisów .

Note- Ciągle zmieniający się identyfikator maszyny, taki jak ten od dostawcy VPS, może spowodować, że dziennik nie będzie mógł przechowywać trwałych dzienników rozruchowych. Istnieje wiele obejść tego scenariusza. Najlepiej jest zapoznać się z aktualnymi poprawkami opublikowanymi na forach administratorów CentOS, niż postępować zgodnie z zaufanymi radami tych, którzy znaleźli prawdopodobne obejścia VPS.

Aby zbadać konkretny dziennik rozruchowy, musimy po prostu uzyskać każdy offset za pomocą journald --list-uruchamia offset z przełącznikiem -b . Aby sprawdzić drugi dziennik rozruchu, którego użyjemy -

journalctl -b -2

Domyślną opcją -b bez określonego przesunięcia dziennika rozruchu będzie zawsze bieżący dziennik rozruchu po ostatnim ponownym uruchomieniu.

Analizuj dzienniki według typu dziennika

Wydarzenia z dziennika są ponumerowane i podzielone na 7 oddzielnych typów -

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

Dlatego jeśli chcemy zobaczyć wszystkie ostrzeżenia, można wydać następujące polecenie za pośrednictwem journalctl -

[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742 (v01 PTLTD ? APIC 06040000 LTP 00 Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C (v01 PTLTD $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

Powyższe pokazuje wszystkie ostrzeżenia z ostatnich 4 dni w systemie.

Nowy sposób przeglądania i przeglądania dzienników za pomocą systemd wymaga niewielkiej praktyki i badań, aby się z nim zapoznać. Jednak ze względu na różne formaty wyjściowe i szczególną uwagę na to, że wszystkie spakowane dzienniki demonów są uniwersalne, warto się tym zająć. Journald oferuje dużą elastyczność i wydajność w porównaniu z tradycyjnymi metodami analizy dziennika.

Przed zapoznaniem się z metodami wdrażania standardowego planu tworzenia kopii zapasowych specyficznymi dla CentOS, omówmy najpierw typowe zagadnienia dotyczące zasad tworzenia kopii zapasowych na poziomie standardowym. Pierwszą rzeczą, do której chcemy się przyzwyczaić, jest3-2-1 backup rule.

3-2-1 Strategia tworzenia kopii zapasowych

W całej branży często można usłyszeć termin model kopii zapasowej 3-2-1. Jest to bardzo dobre podejście do realizacji planu tworzenia kopii zapasowych. 3-2-1 definiuje się następująco:3kopie danych; na przykład możemy mieć kopię roboczą; kopia umieszczona na serwerze CentOS przeznaczona do redundancji przy użyciu rsync; i rotowane, zewnętrzne kopie zapasowe USB są tworzone z danych na serwerze kopii zapasowych.2różne nośniki kopii zapasowych. W tym przypadku mielibyśmy trzy różne nośniki kopii zapasowych: kopię roboczą na dysku SSD laptopa lub stacji roboczej, dane serwera CentOS w macierzy RADI6 oraz kopie zapasowe poza siedzibą firmy na dyskach USB.1kopia danych poza siedzibą; co noc obracamy dyski USB poza siedzibą firmy. Innym nowoczesnym podejściem może być dostawca kopii zapasowych w chmurze.

Odzyskiwanie systemu

Goły metal przywrócić planu jest po prostu plan określonymi przez administratora CentOS, aby uzyskać istotne systemy on-line ze wszystkimi danymi nienaruszone. Zakładając 100% awarie systemów i utratę całego sprzętu systemowego z przeszłości, administrator musi mieć plan osiągnięcia czasu sprawności z nienaruszonymi danymi użytkownika, co kosztuje minimalny czas przestoju. Monolityczne jądro używane w Linuksie w rzeczywistości sprawia, że ​​przywracanie bare metal przy użyciu obrazów systemu jest znacznie łatwiejsze niż Windows. Gdzie Windows używa architektury mikro-jądra.

Pełne przywracanie danych i odzyskiwanie stanu „od zera” zwykle przeprowadza się za pomocą kombinacji metod, w tym działających, skonfigurowanych produkcyjnych obrazów dysków kluczowych serwerów operacyjnych, nadmiarowych kopii zapasowych danych użytkownika zgodnie z regułą 3-2-1. Nawet niektóre poufne pliki, które mogą być przechowywane w bezpiecznym, ognioodpornym sejfie z ograniczonym dostępem dla zaufanego personelu firmy.

Wielofazowy plan przywracania stanu fizycznego i odzyskiwania danych przy użyciu natywnych narzędzi CentOS może obejmować:

  • dd, aby tworzyć i odtwarzać produkcyjne obrazy dysków skonfigurowanych serwerów

  • rsync, aby tworzyć przyrostowe kopie zapasowe wszystkich danych użytkownika

  • tar & gzip do przechowywania zaszyfrowanych kopii zapasowych plików z hasłami i notatkami od administratorów. Zwykle można to umieścić na dysku USB, zaszyfrować i zamknąć w sejfie, do którego ma dostęp starszy menedżer. Zapewnia to również, że ktoś inny zna ważne dane uwierzytelniające, jeśli obecny administrator wygra loterię i zniknie gdzieś na słonecznej wyspie.

Jeśli system ulegnie awarii z powodu awarii sprzętu lub katastrofy, następujące będą różne fazy operacji przywracania -

  • Zbuduj działający serwer ze skonfigurowanym obrazem fizycznym

  • Przywróć dane z kopii zapasowych na działający serwer

  • Uzyskaj fizyczny dostęp do poświadczeń potrzebnych do wykonania dwóch pierwszych operacji

Użyj rsync do tworzenia kopii zapasowych na poziomie plików

rsync to świetne narzędzie do synchronizowania katalogów plików lokalnie lub na innym serwerze. rsync jest używany od lat przez administratorów systemów, dlatego jest bardzo udoskonalony pod kątem tworzenia kopii zapasowych danych. W opinii autora jedną z najlepszych cech synchronizacji jest możliwość obsługi skryptów z wiersza poleceń.

W tym samouczku omówimy rsync na różne sposoby -

  • Poznaj i porozmawiaj o niektórych typowych opcjach
  • Twórz lokalne kopie zapasowe
  • Twórz zdalne kopie zapasowe przez SSH
  • Przywróć lokalne kopie zapasowe

rsynczostała nazwana ze względu na swój cel: Remote Sync i jest zarówno potężna, jak i elastyczna w użyciu.

Poniżej znajduje się podstawowa zdalna kopia zapasowa rsync przez ssh -

MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/ 
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
   6,148 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
   33,144 100%   31.61MB/s    0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
   892,406 100%   25.03MB/s    0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
   77 100%    2.21kB/s    0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
   43,188,224   1%    4.26MB/s    0:08:29
sent 2,318,683,608 bytes  received 446 bytes  7,302,941.90 bytes/sec
total size is 2,327,091,863  speedup is 1.00
MiNi:~ rdc$

Następująca synchronizacja wysłała prawie 2,3 GB danych w naszej sieci LAN. Piękno rsync polega na tym, że działa on przyrostowo na poziomie bloku, dla każdego pliku. Oznacza to, że jeśli zmienimy tylko dwa znaki w pliku tekstowym o wielkości 1 MB, tylko jeden lub dwa bloki zostaną przesłane przez sieć LAN podczas następnej synchronizacji!

Ponadto funkcję przyrostową można wyłączyć na rzecz większej przepustowości sieci używanej przy mniejszym wykorzystaniu procesora. Może się to okazać wskazane, jeśli stale kopiujesz kilka plików bazy danych o wielkości 10 MB co 10 minut na dedykowanej sieci Backup-Lan o pojemności 1 GB. Powód jest taki: zawsze będą się zmieniać i będą transmitować stopniowo co 10 minut i mogą obciążać zdalny procesor. Ponieważ całkowite obciążenie transferu nie przekroczy 5 minut, możemy po prostu chcieć zsynchronizować pliki bazy danych w całości.

Poniżej przedstawiono najpopularniejsze przełączniki z rsync -

rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path

Przełącznik Akcja
-za Tryb archiwizacji i zakłada -r, -p, -t, -g, -l
-re Synchronizuj tylko drzewo katalogów, bez plików
-r Rekursywnie do katalogu
-l Kopiuj linki symboliczne jako dowiązania symboliczne
-p Zachowaj uprawnienia
-sol Zachowaj grupę
-v Gadatliwe wyjście
-z Kompresuj przez łącze sieciowe
-X Zachowaj rozszerzone atrybuty
-ZA Zachowaj listy ACL
-t Zachowaj sygnatury czasowe
-W Przesyłaj cały plik, a nie przyrostowe bloki
-u Nie nadpisuj plików w miejscu docelowym
--postęp Pokaż postęp transferu
--usunąć Usuń starsze pliki w miejscu docelowym
- maksymalny rozmiar = XXX Maksymalny rozmiar pliku do synchronizacji

Kiedy używać rsync

Moje osobiste preferencje dotyczące rsync dotyczą tworzenia kopii zapasowych plików z hosta źródłowego na hosta docelowego. Na przykład wszystkie katalogi domowe do odzyskiwania danych lub nawet poza siedzibą firmy i do chmury w celu odzyskiwania po awarii.

Lokalna kopia zapasowa z rsync

Widzieliśmy już, jak przesyłać pliki z jednego hosta do drugiego. Tej samej metody można użyć do synchronizacji katalogów i plików lokalnie.

Zróbmy ręczną przyrostową kopię zapasową / etc / w naszym katalogu root użytkownika.

Najpierw musimy utworzyć katalog poza ~ / root dla zsynchronizowanej kopii zapasowej -

[root@localhost rdc]# mkdir /root/etc_baks

Następnie upewnij się, że jest wystarczająco dużo wolnego miejsca na dysku.

[root@localhost rdc]# du -h --summarize /etc/ 
49M    /etc/
 
[root@localhost rdc]# df -h 
Filesystem           Size     Used     Avail    Use%     Mounted on 
/dev/mapper/cl-root   43G      15G        28G    35%         /

Jesteśmy dobrzy do synchronizacji całego naszego katalogu / etc / -

rsync -aAvr /etc/ /root/etc_baks/

Nasz zsynchronizowany katalog / etc / -

[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x.   3 root root      101 Feb  1 19:40 abrt
-rw-r--r--.   1 root root       16 Feb  1 19:51 adjtime
-rw-r--r--.   1 root root     1518 Jun  7  2013 aliases
-rw-r--r--.   1 root root    12288 Feb 27 19:06 aliases.db
drwxr-xr-x.   2 root root       51 Feb  1 19:41 alsa
drwxr-xr-x.   2 root root     4096 Feb 27 17:11 alternatives
-rw-------.   1 root root      541 Mar 31  2016 anacrontab
-rw-r--r--.   1 root root       55 Nov  4 12:29 asound.conf
-rw-r--r--.   1 root root        1 Nov  5 14:16 at.deny
drwxr-xr-x.   2 root root       32 Feb  1 19:40 at-spi2
--{ condensed output }--

Teraz zróbmy przyrostową rsync -

[root@localhost etc_baks]# rsync -aAvr --progress  /etc/ /root/etc_baks/
sending incremental file list

test_incremental.txt 
   0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1145/1282)
   
sent 204620 bytes  received 2321 bytes  413882.00 bytes/sec
total size is 80245040  speedup is 387.77

[root@localhost etc_baks]#

Skopiowano tylko nasz plik test_incremental.txt .

Zdalne kopie różnicowe z rsync

Zróbmy naszą początkową pełną kopię zapasową rsync na serwerze z wdrożonym planem tworzenia kopii zapasowych. Ten przykład w rzeczywistości tworzy kopię zapasową folderu na stacji roboczej Mac OS X na serwerze CentOS. Kolejnym wspaniałym aspektem rsync jest to, że można go używać na dowolnej platformie, na którą rsync został przeniesiony.

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes  received 336 bytes  9,720,257.27 bytes/sec
total size is 2,326,636,892  speedup is 1.00
MiNi:~ rdc$

Utworzyliśmy teraz kopię zapasową folderu ze stacji roboczej na serwerze z woluminem RAID6 z rotowanym nośnikiem odzyskiwania po awarii przechowywanym poza siedzibą firmy. Użycie rsync dało nam standardowe tworzenie kopii zapasowych 3-2-1, przy czym tylko jeden serwer ma kosztowną, nadmiarową macierz dyskową i rotowane kopie różnicowe.

Teraz zróbmy kolejną kopię zapasową tego samego folderu przy użyciu rsync po dodaniu pojedynczego nowego pliku o nazwie test_file.txt .

MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff 
[email protected]'s password:  
sending incremental file list 
 ./ 
test_file.txt

sent 814 bytes  received 61 bytes  134.62 bytes/sec
total size is 2,326,636,910  speedup is 2,659,013.61
MiNi:~ rdc$

Jak widać, tylko nowy plik został dostarczony na serwer przez rsync . Porównanie różnicowe zostało przeprowadzone na podstawie pliku po pliku.

Kilka rzeczy, o których należy pamiętać: Kopiuje tylko nowy plik: test_file.txt, ponieważ był to jedyny plik ze zmianami. rsync używa ssh. Nigdy nie musieliśmy używać naszego konta roota na żadnej z maszyn.

Prosty, wydajny i skuteczny rsync doskonale nadaje się do tworzenia kopii zapasowych całych folderów i struktur katalogów. Jednak samo rsync nie automatyzuje tego procesu. Tutaj musimy zagłębić się w naszą skrzynkę narzędziową i znaleźć najlepsze, małe i proste narzędzie do tego zadania.

Aby zautomatyzować tworzenie kopii zapasowych rsync za pomocą cronjobs , konieczne jest skonfigurowanie użytkowników SSH przy użyciu kluczy SSH do uwierzytelniania. To w połączeniu z cronjobs umożliwia automatyczne wykonywanie rsync w określonych odstępach czasu.

Użyj DD dla obrazów odzyskiwania metalu po jednym bloku

DD to narzędzie Linuksa, które istnieje od zarania jądra Linuksa w połączeniu z narzędziami GNU.

dd najprościej kopiuje obraz wybranego obszaru dysku. Zapewnia wówczas możliwość kopiowania wybranych bloków dysku fizycznego. Więc jeśli nie masz kopii zapasowych, gdy dd zapisze na dysku, wszystkie bloki zostaną zastąpione. Utrata poprzednich danych przekracza możliwości odzyskiwania danych nawet w przypadku drogiego, profesjonalnego odzyskiwania danych.

Cały proces tworzenia bootowalnego obrazu systemu za pomocą dd jest następujący -

  • Uruchom z serwera CentOS z bootowalną dystrybucją Linuksa
  • Znajdź oznaczenie dysku startowego, który ma zostać utworzony
  • Wybierz lokalizację, w której będzie przechowywany obraz odzyskiwania
  • Znajdź rozmiar bloku używany na dysku
  • Rozpocznij operację na obrazie dd

W tym samouczku, ze względu na czas i prostotę, utworzymy obraz ISO głównego rekordu rozruchowego z maszyny wirtualnej CentOS. Będziemy wtedy przechowywać ten obraz poza witryną. W przypadku uszkodzenia naszego MBR i konieczności przywrócenia, ten sam proces można zastosować do całego dysku rozruchowego lub partycji. Jednak w przypadku tego samouczka czas i miejsce na dysku są trochę przesadzone.

Zaleca się, aby administratorzy CentOS osiągnęli biegłość w przywracaniu w pełni rozruchowego dysku / partycji w środowisku testowym i przywracaniu od podstaw. Będzie to wymagało dużej presji, gdy w końcu trzeba będzie ukończyć praktykę w prawdziwej sytuacji z menedżerami i kilkudziesięcioma użytkownikami końcowymi liczącymi przestoje. W takim przypadku 10 minut zastanawiania się może wydawać się wiecznością i sprawić, że jeden się spoci.

Note- Używając dd, upewnij się, że NIE mylisz woluminów źródłowych i docelowych. Możesz zniszczyć dane i serwery startowe, kopiując lokalizację kopii zapasowej na dysk rozruchowy. Lub, co gorsza, zniszcz dane na zawsze, kopiując dane na bardzo niskim poziomie za pomocą DD.

Poniżej przedstawiono typowe przełączniki i parametry wiersza poleceń dla dd -

Przełącznik Akcja
if = W pliku lub źródle do skopiowania
z = Plik wyjściowy lub kopia pliku w pliku
bs Ustaw rozmiar bloku wejściowego i wyjściowego
obs Ustaw rozmiar bloku pliku wyjściowego
ZJD Ustaw rozmiar bloku pliku wejściowego
liczyć Ustaw liczbę bloków do skopiowania
konw Dodatkowe opcje do dodania do obrazowania
Żaden błąd Nie przerywaj przetwarzania błędu
sync W przypadku błędu lub niewspółosiowości blokuje niedopasowane bloki wejściowe

Note on block size- Domyślny rozmiar bloku dla dd to 512 bajtów. Był to standardowy rozmiar bloku dysków twardych o niższej gęstości. Dzisiejsze dyski twarde o większej gęstości zostały zwiększone do 4096 bajtów (4kB) bloków, aby umożliwić dyski o pojemności od 1 TB i więcej. W związku z tym będziemy chcieli sprawdzić rozmiar bloku dysku przed użyciem dd z nowszymi dyskami twardymi o większej pojemności.

W tym samouczku zamiast pracować na serwerze produkcyjnym z dd , będziemy używać instalacji CentOS działającej w VMWare. Skonfigurujemy również VMWare do uruchamiania rozruchowego obrazu ISO systemu Linux zamiast pracy z bootowalną pamięcią USB.

Najpierw musimy pobrać obraz CentOS zatytułowany: CentOS Gnome ISO . To prawie 3 GB i zaleca się, aby zawsze zachować kopię do tworzenia bootowalnych pendrive'ów USB i uruchamiania instalacji serwera wirtualnego w celu rozwiązywania problemów i obrazów typu bare metal.

Inne bootowalne dystrybucje Linuksa będą działać równie dobrze. Linux Mint może być używany do rozruchowych plików ISO, ponieważ ma świetne wsparcie sprzętowe i dopracowane narzędzia dyskowe GUI do konserwacji.

Obraz startowy CentOS GNOME Live można pobrać z: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso

Skonfigurujmy naszą instalację VMWare Workstation tak, aby uruchamiała się z naszego obrazu startowego Linux. Kroki dotyczą VMWare w systemie OS X. Są one jednak podobne w przypadku VMWare Workstation w systemie Linux, Windows, a nawet Virtual Box.

Note- Korzystanie z rozwiązania wirtualnego pulpitu, takiego jak Virtual Box lub VMWare Workstation, to świetny sposób na skonfigurowanie scenariuszy laboratoryjnych do nauki zadań administracyjnych CentOS. Daje możliwość zainstalowania kilku instalacji CentOS, praktycznie bez konfiguracji sprzętowej, pozwalając skupić się na administrowaniu, a nawet zapisać stan serwera przed wprowadzeniem zmian.

Najpierw skonfigurujmy wirtualną płytę CD-ROM i dołączmy nasz obraz ISO do rozruchu zamiast instalacji wirtualnego serwera CentOS -

Teraz ustaw dysk startowy -

Teraz po uruchomieniu nasza maszyna wirtualna uruchomi się z rozruchowego obrazu ISO CentOS i umożliwi dostęp do plików na wcześniej skonfigurowanym serwerze Virtual CentOS.

Sprawdźmy nasze dyski, aby zobaczyć, skąd chcemy skopiować MBR (skondensowane dane wyjściowe są następujące).

MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Zlokalizowaliśmy oba nasze dyski fizyczne: sda i sdb . Każdy ma rozmiar bloku 512 bajtów. Tak więc uruchomimy teraz polecenie dd, aby skopiować pierwsze 512 bajtów dla naszego MBR na SDA1.

Najlepszym sposobem na to jest -

[root@mint rdc]# dd if=/dev/sda bs=512 count=1  | gzip -c >
/mnt/sdb/images/mbr.iso.gz 
1+0 records in 
1+0 records out 
512 bytes copied, 0.000171388 s, 3.0 MB/s

[root@mint rdc]# ls /mnt/sdb/ 
   mbr-iso.gz
   
[root@mint rdc]#

Tak po prostu mamy pełny obraz naszego głównego rekordu rozruchowego. Jeśli mamy wystarczająco dużo miejsca na obrazowanie dysku rozruchowego, równie łatwo możemy utworzyć pełny obraz rozruchowy systemu -

dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz

Konwersji = synchronizacji jest stosowany, gdy bajty muszą być dostosowane do postaci fizycznej. W takim przypadku dd może otrzymać błąd, jeśli dokładne wyrównanie 4K nie zostanie odczytane (powiedzmy ... plik, który ma tylko 3 KB, ale musi zajmować minimum jeden blok 4K na dysku. Lub po prostu występuje błąd podczas odczytu i plik nie może zostać odczytany przez dd.). Zatem dd z conv = sync, noerror wypełni 3K trywialnymi, ale użytecznymi danymi na fizycznym nośniku w wyrównaniu bloków 4K. Nie przedstawiając błędu, który może zakończyć dużą operację.

Podczas pracy z danymi z dysków zawsze chcemy uwzględnić: conv = sync, noerror parameter.

Dzieje się tak po prostu dlatego, że dyski nie są strumieniami, takimi jak dane TCP. Składają się z bloków dopasowanych do określonego rozmiaru. Na przykład, jeśli mamy 512-bajtowe bloki, plik o wielkości zaledwie 300 bajtów nadal potrzebuje pełnych 512 bajtów miejsca na dysku (prawdopodobnie 2 bloki na informacje o i-węzłach, takie jak uprawnienia i inne informacje o systemie plików).

Użyj gzip i tar do bezpiecznego przechowywania

gzip i tar to dwa narzędzia, do których administrator CentOS musi się przyzwyczaić. Są używane do znacznie więcej niż tylko dekompresowania archiwów.

Używanie Gnu Tar w CentOS Linux

Tar to narzędzie do archiwizacji podobne do winrar w systemie Windows. Jego nazwa Tape Archive, w skrócie tar, w dużym stopniu podsumowuje to narzędzie. tar pobierze pliki i umieści je w archiwum dla logicznej wygody. Dlatego zamiast dziesiątek plików przechowywanych w / etc. moglibyśmy po prostu „tarować” je w archiwum dla wygody tworzenia kopii zapasowych i przechowywania.

tar był standardem przechowywania zarchiwizowanych plików w systemach Unix i Linux od wielu lat. Dlatego używanie tar razem z gzip lub bzip jest uważane za najlepszą praktykę dla archiwów w każdym systemie.

Poniżej znajduje się lista typowych przełączników wiersza poleceń i opcji używanych w tar -

Przełącznik Akcja
-do Tworzy nowe archiwum .tar
-DO Wyodrębnia do innego katalogu
-jot Używa kompresji bzip2
-z Używa kompresji gzip
-v Informacje szczegółowe pokazują postęp archiwizacji
-t Wyświetla zawartość archiwum
-fa Nazwa pliku archiwum
-x Rozpakowuje archiwum tar

Poniżej przedstawiono podstawową składnię tworzenia archiwum tar .

tar -cvf [tar archive name]

Note on Compression mechanisms with tar- Zaleca się trzymać się jednego z dwóch powszechnych schematów kompresji podczas używania tar: gzip i bzip2. Pliki gzip zużywają mniej zasobów procesora, ale zwykle mają większy rozmiar. Chociaż kompresja bzip2 zajmie więcej czasu, zużywa więcej zasobów procesora; ale spowoduje to mniejszy rozmiar pliku końcowego.

Korzystając z kompresji plików, zawsze będziemy chcieli używać standardowych rozszerzeń plików, aby wszyscy, w tym my, wiedzieli (w przeciwieństwie do prób i błędów), jaki schemat kompresji jest potrzebny do wyodrębnienia archiwów.

bzip2 .tbz
bzip2 .tar.tbz
bzip2 .tb2
gzip .tar.gz
gzip .tgz

Gdy zachodzi potrzeba wyodrębnienia archiwów na komputerze z systemem Windows lub do użytku w systemie Windows, zaleca się użycie rozszerzenia .tar.tbz lub .tar.gz, ponieważ większość trzyznakowych pojedynczych rozszerzeń wprowadzi w błąd tylko administratorów systemu Windows i systemu Windows (jest to jednak czasami pożądany rezultat)

Stwórzmy gzipped archiwum tar od naszych zdalnych kopii zapasowych skopiowany z Mac Workstation -

[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/ 
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz

Note- Zamiast dodawać wszystkie pliki bezpośrednio do archiwum, zarchiwizowaliśmy cały folder RemoteStuff . To najłatwiejsza metoda. Po prostu dlatego, że po rozpakowaniu cały katalog RemoteStuff jest wyodrębniany ze wszystkimi plikami w bieżącym katalogu roboczym jako ./currentWorkingDirectory/RemoteStuff/

Teraz wypakujmy archiwum do katalogu / root / home.

[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com

Jak widać powyżej, wszystkie pliki zostały po prostu rozpakowane do katalogu zawierającego w naszym bieżącym katalogu roboczym.

[root@centos ~]# ls -l 
total 2262872 
-rw-------.   1   root   root       1752   Feb   1   19:52   anaconda-ks.cfg 
drwxr-xr-x. 137   root   root       8192   Mar   9   04:42   etc_baks 
-rw-r--r--.   1   root   root       1800   Feb   2   03:14   initial-setup-ks.cfg 
drwxr-xr-x.   6   rdc    rdc        4096   Mar  10   22:20   RemoteStuff 
-rw-r--r--.   1   root   root 2317140451   Mar  12   07:12   RemoteStuff.tgz 
-rw-r--r--.   1   root   root       9446   Feb  25   05:09   ssl.conf [root@centos ~]#

Użyj programu gzip, aby skompresować kopie zapasowe plików

Jak wspomniano wcześniej, możemy użyć bzip2 lub gzip z tar z rozszerzeniem -j lub -zprzełączniki wiersza poleceń. Możemy również użyć gzip do kompresji pojedynczych plików. Jednak użycie samego bzip lub gzip nie oferuje tak wielu funkcji, jak w połączeniu z tar .

W przypadku korzystania z programu gzip domyślną akcją jest usunięcie oryginalnych plików, zastępując każdy skompresowaną wersją z dodaniem rozszerzenia .gz.

Niektóre typowe przełączniki wiersza poleceń dla gzip to -

Przełącznik Akcja
-do Zachowuje pliki po umieszczeniu w archiwum
-l Uzyskaj statystyki skompresowanego archiwum
-r Rekurencyjnie kompresuje pliki w katalogach
Od -1 do 9 Określa poziom kompresji w skali od 1 do 9

gzip działa mniej więcej na podstawie pliku po pliku, a nie na zasadzie archiwizacji, jak niektóre narzędzia zip systemu Windows. Głównym tego powodem jest to, że tar już zapewnia zaawansowane funkcje archiwizacji. gzip został zaprojektowany, aby zapewnić tylko mechanizm kompresji.

Dlatego myśląc o gzip , pomyśl o pojedynczym pliku. Myśląc o wielu plikach, pomyśl o archiwach tar . Zbadajmy teraz to w naszym poprzednim archiwum tar .

Note - Doświadczeni specjaliści od Linuksa często nazywają archiwum tarowane jako archiwum.

Zróbmy kolejne archiwum tar z naszej kopii zapasowej rsync .

[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/

Dla celów demonstracyjnych spakujmy nowoutworzone archiwum archiwum gzipem i powiedz programowi gzip, aby zachował stary plik. Domyślnie, bez opcji -c , gzip zamieni całe archiwum tar na plik .gz .

[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.

Spróbujmy przetestować przełącznik -l za pomocą programu gzip .

[root@centos Documents]# gzip -l RemoteStuff.tar.gz  
     compressed        uncompressed        ratio uncompressed_name 
     2317140467          2326661120        0.4% RemoteStuff.tar
     
[root@centos Documents]#

Aby pokazać, czym różni się gzip od Windows Zip Utilities, uruchommy gzip na folderze z plikami tekstowymi.

[root@centos Documents]# ls text_files/
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
[root@centos Documents]#

Teraz użyjmy opcji -r, aby rekurencyjnie skompresować wszystkie pliki tekstowe w katalogu.

[root@centos Documents]# gzip -9 -r text_files/

[root@centos Documents]# ls ./text_files/
file1.txt.gz  file2.txt.gz  file3.txt.gz  file4.txt.gz  file5.txt.gz
 
[root@centos Documents]#

Widzieć? Nie to, czego niektórzy mogli się spodziewać. Wszystkie oryginalne pliki tekstowe zostały usunięte i każdy został skompresowany indywidualnie. Z powodu tego zachowania najlepiej jest myśleć o samym programie gzip , gdy trzeba pracować na pojedynczych plikach.

Praca z tarballs , niech wyodrębnić nasze rsynced archiwum do nowego katalogu.

[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php

Jak widać powyżej, wyodrębniliśmy i zdekompresowaliśmy nasze tarball do katalogu / tmp.

[root@centos Documents]# ls /tmp 
hsperfdata_root
RemoteStuff

Zaszyfruj archiwa TarBall

Szyfrowanie archiwów tarball do przechowywania bezpiecznych dokumentów, do których może być potrzebny dostęp innym pracownikom organizacji, w przypadku odtwarzania po awarii, może być trudnym pomysłem. Zasadniczo można to zrobić na trzy sposoby: albo użyj GnuPG, albo użyj openssl, albo użyj narzędzia trzeciej części.

GnuPG jest przeznaczony głównie do szyfrowania asymetrycznego i ma na myśli skojarzenie z tożsamością, a nie hasło. To prawda, że ​​można go używać z szyfrowaniem symetrycznym, ale nie jest to główna siła GnuPG. Dlatego zdyskontowałbym GnuPG za przechowywanie archiwów z fizycznym zabezpieczeniem, gdy więcej osób niż pierwotna osoba może potrzebować dostępu (np. Menedżer korporacji, który chce chronić się przed administratorem posiadającym wszystkie klucze do królestwa jako dźwignię).

Openssl, podobnie jak GnuPG, może robić, co chcemy i jest dostarczany z CentOS. Ale znowu, nie jest specjalnie zaprojektowany do robienia tego, co chcemy, a szyfrowanie zostało zakwestionowane w społeczności bezpieczeństwa.

Naszym wyborem jest narzędzie o nazwie 7zip. 7zip to narzędzie do kompresji, takie jak gzip, ale z wieloma innymi funkcjami. Podobnie jak Gnu Gzip, 7zip i jego standardy są w społeczności open source. Musimy tylko zainstalować 7zip z naszego repozytorium EHEL (następny rozdział będzie szczegółowo omawiał instalację rozszerzonych repozytoriów korporacyjnych).

Zainstaluj 7zip na Centos

7zip to prosta instalacja po załadowaniu i skonfigurowaniu naszych repozytoriów EHEL w CentOS.

[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB  00:00:00
epel/x86_64/metalink
|  13 kB  00:00:00
epel
| 4.3 kB  00:00:00
extras
| 3.4 kB  00:00:00
updates
| 3.4 kB  00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB  00:00:04      
(2/2):
epel/x86_64/primary_db
| 4.6 MB  00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved

To proste, 7zip jest zainstalowany i gotowy do użycia z 256-bitowym szyfrowaniem AES dla naszych archiwów tarball.

Teraz użyjmy 7z do zaszyfrowania naszego archiwum gzip za pomocą hasła. Składnia służąca do tego jest dość prosta -

7z a -p <output filename><input filename>

Gdzie, a: dodaj do archiwum i -p: szyfruj i pytaj o hasło

[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)

Creating archive: RemoteStuff.tgz.7z

Items to compress: 1

Enter password (will not be echoed):
Verify password (will not be echoed) :

Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff  RemoteStuff.tar  RemoteStuff.tar.gz  RemoteStuff.tgz.7z  slapD
text_files

[root@centos Documents]#

Teraz mamy nasze archiwum .7z, które szyfruje zgzipowane tarball za pomocą 256-bitowego AES.

Note- 7zip używa 256-bitowego szyfrowania AES z hashem SHA-256 hasła i licznika, powtarzanym do 512K razy w celu wyprowadzenia klucza. Powinno to być wystarczająco bezpieczne, jeśli używany jest złożony klucz.

Dalszy proces szyfrowania i ponownej kompresji archiwum może zająć trochę czasu w przypadku większych archiwów.

7zip to zaawansowana oferta z większą liczbą funkcji niż gzip czy bzip2. Jednak nie jest to standardem w CentOS lub w świecie Linuksa. Dlatego inne narzędzia powinny być używane często, jak to możliwe.

System CentOS 7 można zaktualizować na trzy sposoby -

  • Manually
  • Automatically
  • Aktualizuj ręcznie w przypadku poważnych problemów z bezpieczeństwem i skonfiguruj aktualizacje automatyczne

W środowisku produkcyjnym zaleca się aktualizację ręczną dla serwerów produkcyjnych. Lub przynajmniej ustal plan aktualizacji, aby administrator mógł zapewnić usługi niezbędne dla operacji biznesowych.

Jest prawdopodobne, że prosta aktualizacja zabezpieczeń może powodować powtarzające się problemy z popularnymi aplikacjami, które wymagają aktualizacji i ponownej konfiguracji przez administratora. Dlatego męcz się planowaniem automatycznych aktualizacji w środowisku produkcyjnym przed rozpoczęciem testowania na serwerach programistycznych i komputerach stacjonarnych.

Ręcznie zaktualizuj CentOS 7

Aby zaktualizować CentOS 7, będziemy chcieli zapoznać się z poleceniem yum .yumjest używany do obsługi repozytoriów pakietów w CentOS 7. yum jest narzędziem powszechnie używanym do -

  • Zaktualizuj system Linux CentOS 7
  • Wyszukaj paczki
  • Zainstaluj pakiety
  • Wykryj i zainstaluj wymagane zależności dla pakietów

Aby używać yum do aktualizacji, twój serwer CentOS musi być połączony z Internetem. Większość konfiguracji zainstaluje system podstawowy, a następnie użyje yum do wysłania zapytania do głównego repozytorium CentOS w celu uzyskania dodatkowych funkcji w pakietach i zastosowania aktualizacji systemu.

Skorzystaliśmy już z programu yum, aby zainstalować kilka pakietów. Korzystając z yum , zawsze będziesz musiał to robić jako użytkownik root. Lub użytkownik z uprawnieniami roota. Poszukajmy i zainstalujmy łatwy w użyciu edytor tekstu o nazwie nano .

[root@centos rdc]# yum search nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.rackspace.com
 * epel: mirror.chpc.utah.edu
 * extras: repos.forethought.net 
 * updates: repos.forethought.net 
====================================================================== 
      N/S matched: nano 
======================================================================
nano.x86_64 : A small text editor
nodejs-nano.noarch : Minimalistic couchdb driver for Node.js
perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision
 Name and summary matches only, use "search all" for everything.
 
[root@centos rdc]#

Teraz zainstalujmy edytor tekstu nano .

[root@centos rdc]# yum install nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.keystealth.org
 * epel: pubmirror1.math.uh.edu
 * extras: centos.den.host-engine.com
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================  
Package                             Arch
Version                          Repository                            Size  
================================================================================  
 Installing: 
 nano                               x86_64
 2.3.1-10.el7                    base                                  440 k
 
Transaction Summary
Install  1 Package
Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm
| 440 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : nano-2.3.1-10.el7.x86_64
1/1  
 Verifying  : nano-2.3.1-10.el7.x86_64
1/1  
Installed: 
 nano.x86_64 0:2.3.1-10.el7
 
Complete!

[root@centos rdc]#

Zainstalowaliśmy edytor tekstu nano. Ta metoda, IMO, jest o wiele łatwiejsza niż wyszukiwanie narzędzi w witrynach internetowych i ręczne uruchamianie instalatorów. Ponadto repozytoria używają podpisów cyfrowych do sprawdzania poprawności pakietów, zapewniając, że pochodzą z zaufanego źródła z yum. Do administratora należy weryfikacja autentyczności podczas ufania nowym repozytoriom. Dlatego uważane jest za najlepszą praktykę znużenie repozytoriami stron trzecich.

Yum można również użyć do usunięcia paczki.

[root@centos rdc]# yum remove nano 
Loaded plugins: fastestmirror, langpacks 
Resolving Dependencies 
--> Running transaction check 
---> Package nano.x86_64 0:2.3.1-10.el7 will be erased 
--> Finished Dependency Resolution

Dependencies Resolved

Teraz sprawdźmy dostępność aktualizacji.

[root@centos rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.keystealth.org
 * epel: pubmirror1.math.uh.edu
 * extras: centos.den.host-engine.com
 * updates: repos.forethought.net
Updated Packages
NetworkManager.x86_64           1:1.4.0-17.el7_3       updates
NetworkManager-adsl.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-glib.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-libnm.x86_64     1:1.4.0-17.el7_3       updates
NetworkManager-team.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-tui.x86_64       1:1.4.0-17.el7_3       updates
NetworkManager-wifi.x86_64      1:1.4.0-17.el7_3       updates
audit.x86_64                    2.6.5-3.el7_3.1        updates
audit-libs.x86_64               2.6.5-3.el7_3.1        updates
audit-libs-python.x86_64

Jak pokazano, mamy do zainstalowania kilkadziesiąt aktualizacji. W rzeczywistości jest łącznie około 100 aktualizacji, ponieważ nie skonfigurowaliśmy jeszcze automatycznych aktualizacji. Dlatego zainstalujmy wszystkie oczekujące aktualizacje.

[root@centos rdc]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.usc.edu
 * epel: pubmirror1.math.uh.edu
 * extras: repos.forethought.net
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update
 selinux-policy            noarch      3.13.1102.el7_3.15      updates     414 k
 selinux-policy-targeted   noarch      3.13.1102.el7_3.15      updates     6.4 M 
 systemd                   x86_64      21930.el7_3.7           updates     5.2 M 
 systemd-libs              x86_64      21930.el7_3.7           updates     369 k 
 systemd-python            x86_64      21930.el7_3.7           updates     109 k 
 systemd-sysv              x86_64      21930.el7_3.7           updates     63 k 
 tcsh                      x86_64      6.18.01-13.el7_3.1      updates     338 k 
 tzdata                    noarch      2017a1.el7              updates     443 k 
 tzdata-java               noarch      2017a1.el7              updates     182 k 
wpa_supplicant             x86_64      1:2.021.el7_3           updates     788 k  

Transaction Summary 
=============================================================================== 
  Install   2 Packages 
  Upgrade  68 Packages 
Total size: 196 M 
Total download size: 83 M 
Is this ok [y/d/N]:

Po naciśnięciu klawisza „y” rozpocznie się aktualizacja CentOS 7. Ogólny proces, przez który przechodzi yum podczas aktualizacji, to -

  • Sprawdza aktualne pakiety
  • Przeszukuje repozytorium w poszukiwaniu zaktualizowanych pakietów
  • Oblicza zależności potrzebne dla zaktualizowanych pakietów
  • Pobiera aktualizacje
  • Instaluje aktualizacje

Teraz upewnijmy się, że nasz system jest aktualny -

[root@centos rdc]# yum list updates 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * updates: mirror.compevo.com

[root@centos rdc]#

Jak widać, nie ma na liście żadnych aktualizacji.

Skonfiguruj automatyczne aktualizacje dla YUM

Jak wspomniano wcześniej, w środowisku przedsiębiorstwa automatyczne aktualizacje mogą być preferowaną metodą instalacji lub nie. Przyjrzyjmy się krokom konfigurowania automatycznych aktualizacji za pomocą yum.

Najpierw instalujemy pakiet o nazwie yum-cron .

[root@centos rdc]# yum -y install yum-cron
Install  1 Package
Total download size: 61 k
Installed size: 51 k
Downloading packages:
yum-cron-3.4.3-150.el7.centos.noarch.rpm
|  61 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : yum-cron-3.4.3-150.el7.centos.noarch
1/1
  Verifying  : yum-cron-3.4.3-150.el7.centos.noarch
1/1

Installed: 
 yum-cron.noarch 0:3.4.3-150.el7.centos
 
Complete!

[root@centos rdc]#

Domyślnie yum-cron pobiera tylko aktualizacje i nie instaluje ich. Decyzja o automatycznej instalacji aktualizacji należy do administratora. Największym zastrzeżeniem jest to, że niektóre aktualizacje będą wymagały ponownego uruchomienia systemu. Ponadto niektóre aktualizacje mogą wymagać zmiany konfiguracji przed ponownym uruchomieniem usług.

Aktualizacja zależności może potencjalnie spowodować rekurencyjny problem w następującej sytuacji -

  • Yum zaleca aktualizację dla pewnej biblioteki

  • Biblioteka obsługuje tylko Apache Server 2.4, ale mamy serwer 2.3

  • Nasza witryna handlowa opiera się na określonej wersji PHP

  • Nowa wersja Apache zainstalowana dla biblioteki wymaga aktualizacji PHP

  • Nasze produkcyjne aplikacje internetowe nie zostały jeszcze przetestowane z nowszą wersją PHP

Yum może kontynuować i automatycznie aktualizować Apache i PHP bez powiadomienia, chyba że skonfigurowano inaczej.

Jeśli wszystkie 5 scenariuszy się rozegra, może to spowodować wszystko, od dużego bólu głowy rano po możliwe naruszenie bezpieczeństwa ujawniające dane użytkownika. Chociaż powyższy przykład jest swego rodzaju idealną burzą, nigdy nie chcemy, aby taki scenariusz się sprawdził.

Dostęp do możliwych scenariuszy potencjalnej utraty przychodów od czasu potrzebnego do przywrócenia usług z powodu możliwego przestoju związanego z ponownym uruchomieniem aktualizacji i rekonfiguracją należy do Administratora. Ta praktyka może nie być wystarczająco konserwatywna w przypadku, powiedzmy, witryny e-commerce o wartości wielu milionów dolarów dziennie, która ma miliony klientów.

Teraz skonfigurujmy yum-cron, aby automatycznie instalował aktualizacje systemu.

[root@centos rdc]# vim /etc/yum/yum-cron.conf
# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes

Chcemy zmienić apply_updates = no na apply_updates = yes . Teraz skonfigurujmy interwał aktualizacji dla yum-cron .

Ponownie, to, czy używać automatycznych aktualizacji i instalować aktualizacje na żądanie, może być mieczem obosiecznym i musi być rozważone przez administratora w każdej unikalnej sytuacji.

Wprowadzenie do Bash Shell

Podobnie jak odmiany GNU Linux, powłoki są w wielu odmianach i różnią się pod względem kompatybilności. Domyślna powłoka w CentOS jest znana jako powłoka Bash lub Bourne Again. Powłoka Bash to nowoczesna zmodyfikowana wersja Bourne Shell opracowana przez Stephena Bourne'a. Bash był bezpośrednim zamiennikiem oryginalnego Thompson Shell w systemie operacyjnym Unix opracowanym w Bell Labs przez Kena Thompsona i Dennisa Ritchiego (Stephen Bourne był również zatrudniony przez Bell Labs)

Każdy ma swoją ulubioną muszlę i każdy ma swoje mocne strony i trudności. Ale w przeważającej części Bash będzie domyślną powłoką we wszystkich dystrybucjach Linuksa i najczęściej dostępną. Z doświadczeniem każdy będzie chciał odkrywać i używać skorupy, która jest dla niego najlepsza. Jednak w tym samym czasie każdy będzie chciał opanować powłokę Bash.

Inne powłoki Linuksa to: Tcsh, Csh, Ksh, Zsh i Fish.

Rozwijanie umiejętności korzystania z dowolnej powłoki Linuksa na poziomie eksperta jest niezwykle ważne dla administratora CentOS. Jak wspomnieliśmy wcześniej, w przeciwieństwie do systemu Windows, sercem Linuksa jest system operacyjny wiersza poleceń. Powłoka to po prostu interfejs użytkownika, który umożliwia administratorowi (lub użytkownikowi) wydawanie poleceń systemowi operacyjnemu. Gdyby administrator systemu Linux był pilotem linii lotniczych, używanie powłoki byłoby podobne do zdjęcia samolotu z autopilota i chwytania ręcznych elementów sterujących w celu uzyskania bardziej zwrotnego lotu.

Powłoka Linuksa, taka jak Bash, jest znana w informatyce jako plik Command Line Interpreter. Microsoft Windows ma również dwa interpretery wiersza poleceń zwane DOS (nie mylić z oryginalnym systemem operacyjnym DOS) i PowerShell.

Większość nowoczesnych muszli, takich jak Bash, zapewnia constructsumożliwienie bardziej złożonym skryptom powłoki automatyzacji zarówno typowych, jak i złożonych zadań.

Konstrukcje obejmują -

  • Kontrola przepływu skryptów (ifthen i else)
  • Logiczne operacje porównania (większe niż, mniejsze niż, równość)
  • Loops
  • Variables
  • Parametry określające działanie (podobnie jak przełączniki z poleceniami)

Używanie skryptu powłoki a język skryptów

Często myśląc o wykonaniu zadania, administratorzy zadają sobie pytanie: czy powinienem używać skryptu powłoki czy języka skryptowego, takiego jak Perl, Ruby czy Python?

Nie ma tutaj ustalonej reguły. Istnieją tylko typowe różnice między powłokami a językami skryptowymi.

Muszla

Shell pozwala na użycie poleceń Linuksa, takich jak sed , grep , tee , cat i wszystkich innych narzędzi opartych na wierszu poleceń w systemie operacyjnym Linux. W rzeczywistości prawie każde narzędzie Linuksa z wiersza poleceń może być skryptowane w powłoce.

Świetnym przykładem użycia powłoki byłby szybki skrypt sprawdzający listę hostów pod kątem rozpoznawania nazw DNS.

Nasz prosty skrypt Bash do sprawdzania nazw DNS -

#!/bin/bash 
for name in $(cat $1); do host $name.$2 | grep "has address" 
   done 
exit

mała lista słów do testowania rozpoznawania nazw DNS -

dns 
www 
test 
dev 
mail 
rdp 
remote

Dane wyjściowe dla domeny google.com -

[rdc@centos ~]$  ./dns-check.sh dns-names.txt google.com
-doing dns
dns.google.com has address 172.217.6.46
-doing www
www.google.com has address 172.217.6.36
-doing test
-doing dev
-doing mail
googlemail.l.google.com has address 172.217.6.37
-doing rdp
-doing remote

[rdc@centos ~]$

Wykorzystując proste polecenia Linuksa w naszej powłoce, byliśmy w stanie stworzyć prosty 5-liniowy skrypt do audytu nazw DNS z listy słów. Zajęłoby to trochę czasu w Perlu, Pythonie lub Ruby, nawet przy użyciu ładnie zaimplementowanej biblioteki DNS.

Język skryptowy

Język skryptowy zapewni większą kontrolę poza powłoką. Powyższy skrypt Bash używał otoki wokół polecenia hosta Linuksa . A co by było, gdybyśmy chcieli zrobić więcej i stworzyć własną aplikację, taką jak host, do interakcji poza powłoką? Tutaj używalibyśmy języka skryptowego.

Ponadto dzięki dobrze utrzymywanemu językowi skryptowemu wiemy, że nasze działania będą działać w większości na różnych systemach. Na przykład Python 3.5 będzie działał na każdym innym systemie z zainstalowanym Pythonem 3.5 z tymi samymi bibliotekami. Nie tak, jeśli chcemy uruchomić nasz skrypt BASH zarówno w systemie Linux, jak i HP-UX.

Czasami granice między językiem skryptowym a potężną powłoką mogą zostać zatarte. Możliwe jest zautomatyzowanie zadań administracyjnych CentOS Linux za pomocą Python, Perl lub Ruby. Takie postępowanie jest naprawdę dość powszechne. Ponadto zamożni programiści skryptów powłoki stworzyli prostego, ale funkcjonalnego demona serwera internetowego w Bash.

Dzięki doświadczeniu w językach skryptowych i automatyzacji zadań w powłokach, administrator CentOS będzie mógł szybko określić, od czego zacząć, gdy trzeba rozwiązać problem. Rozpoczęcie projektu za pomocą skryptu powłoki jest dość powszechne. Następnie przejdź do języka skryptowego (lub skompilowanego), gdy projekt staje się bardziej złożony.

Ponadto w różnych częściach projektu można używać zarówno języka skryptowego, jak i skryptu powłoki. Przykładem może być skrypt Perla do zeskrobania strony internetowej. Następnie użyj skryptu powłoki, aby przeanalizować i sformatować za pomocą sed , awk i egrep . Na koniec użyj skryptu PHP do wstawiania sformatowanych danych do bazy danych MySQL za pomocą internetowego interfejsu GUI.

Mając pewną teorię dotyczącą powłok, zacznijmy od podstawowych bloków konstrukcyjnych do automatyzacji zadań z powłoki Bash w CentOS.

Wejście Wyjście i przekierowanie

Przetwarzanie wyjścia standardowego na inne polecenie -

[rdc@centos ~]$ cat ~/output.txt | wc -l 
6039 
[rdc@centos ~]$

Powyżej przekazaliśmy kocię bułkę do wc w celu przetworzenia z postacią potoku . wc następnie przetworzył dane wyjściowe z cat , wypisując liczbę wierszy z output.txt do terminala. Potraktuj znak potoku jako „potok” przekazujący wyjście z jednego polecenia do przetworzenia przez następne polecenie.

Poniżej przedstawiono kluczowe pojęcia, o których należy pamiętać podczas przekierowywania poleceń -

Numer Deskryptor pliku Postać
0 standardowe wejście <
1 standardowe wyjście >
2 Standardowy błąd
dołącz stdout >>
przypisać przekierowanie &
wyjście potoku do wejścia standardowego |

Wprowadziliśmy to w rozdziale pierwszym, nie mówiąc zbytnio o przekierowaniu lub przypisywaniu przekierowań. Podczas otwierania terminala w systemie Linux Twoja powłoka jest postrzegana jako domyślny cel dla -

  • standardowe wejście <0
  • standardowe wyjście> 1
  • błąd standardowy 2

Zobaczmy, jak to działa -

[rdc@centos ~]$ lsof -ap $BASHPID -d 0,1,2 COMMAND PID USER **FD** TYPE DEVICE SIZE/OFF NODE NAME bash 13684 rdc **0u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **1u** CHR 136,0 0t0 3 /dev/pts/0 bash 13684 rdc **2u** CHR 136,0 0t0 3 /dev/pts/0 [rdc@centos ~]$

/ dev / pts / 0 to nasz pseudoterminal. CentOS Linux patrzy na to i myśli o naszej otwartej aplikacji terminalowej jak o prawdziwym terminalu z klawiaturą i wyświetlaczem podłączonymi przez interfejs szeregowy. Jednak, podobnie jak hiperwizor, wydziela sprzęt do systemu operacyjnego, / dev / pts wydziela nasz terminal do aplikacji.

Z powyższego polecenia lsof możemy zobaczyć podFDkolumna, w której wszystkie trzy deskryptory plików są ustawione na nasz wirtualny terminal (0,1,2). Możemy teraz wysyłać polecenia, wyświetlać dane wyjściowe polecenia, a także wszelkie błędy związane z poleceniem.

Poniżej znajdują się przykłady STDIN i STDOUT -

STDOUT

[root@centosLocal centos]# echo "I am coming from Standard output or STDOUT." >
output.txt && cat output.txt
I am coming from Standard output or STDOUT. 
[root@centosLocal centos]#

Możliwe jest również wysłanie zarówno stdout, jak i stderr do oddzielnych plików -

bash-3.2# find / -name passwd 1> good.txt 2> err.txt
bash-3.2# cat good.txt
/etc/pam.d/passwd
/etc/passwd
bash-3.2# cat err.txt 
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
bash-3.2#

Podczas przeszukiwania całego systemu plików napotkano dwa błędy. Każde z nich zostało przesłane do oddzielnego pliku do późniejszego wglądu, a zwrócone wyniki zostały umieszczone w oddzielnym pliku tekstowym.

Wysyłanie stderr do pliku tekstowego może być przydatne podczas robienia rzeczy, które wysyłają dużo danych do terminala, takich jak kompilowanie aplikacji. Umożliwi to przeglądanie błędów, które mogą zostać utracone w historii przewijania terminala.

Jedna uwaga dotycząca przekazywania STDOUT do pliku tekstowego to różnice między >> i >. Podwójne „>>” zostanie dołączone do pliku, podczas gdy forma pojedyncza zbije plik i zapisze nową zawartość (więc wszystkie poprzednie dane zostaną utracone).

STDIN

[root@centosLocal centos]# cat < stdin.txt
Hello,
I am being read form Standard input, STDIN.

[root@centosLocal centos]#

W powyższym poleceniu plik tekstowy stdin.txt został przekierowany do polecenia cat, które odesłało jego zawartość do STDOUT .

Pionowa kreska „|”

Znak potoku pobierze dane wyjściowe z pierwszego polecenia, przekazując je jako dane wejściowe do następnego polecenia, umożliwiając drugiemu poleceniu wykonanie operacji na wyjściu.

Teraz „prześlijmy” standardowe wyjście kota do innego polecenia -

[root@centosLocal centos]# cat output.txt | wc -l
2
[root@centosLocal centos]#

Powyżej wc wykonuje obliczenia na wyjściu kota, który został przekazany z rury. Polecenie potoku jest szczególnie przydatne podczas filtrowania danych wyjściowych z grep lub egrep -

[root@centosLocal centos]# egrep "^[0-9]{4}$" /usr/dicts/nums | wc -l  
9000 
[root@centosLocal centos]#

W powyższym poleceniu przekazaliśmy każdą 4-cyfrową liczbę do wc z pliku tekstowego zawierającego wszystkie liczby od 65535 przepuszczone przez filtr egrep .

Przekierowywanie wyjścia za pomocą &

Dane wyjściowe można przekierować za pomocą &postać. Jeśli chcemy skierować wyjście zarówno STDOUT, jak i STDERR, do tego samego pliku, można to zrobić w następujący sposób -

[root@centosLocal centos]# find / -name passwd > out.txt 2>&1
[root@centosLocal centos]# cat out.txt  
find: /dev/fd/3: Not a directory 
find: /dev/fd/4: Not a directory 
/etc/passwd

[root@centosLocal centos]#

Przekierowywanie przy użyciu &znak działa w ten sposób: najpierw wyjście jest przekierowywane do out.txt . Po drugie, STDERR lub deskryptor pliku 2 jest ponownie przypisywany do tej samej lokalizacji co STDOUT, w tym przypadku out.txt .

Przekierowanie jest niezwykle przydatne i przydaje się przy rozwiązywaniu problemów występujących podczas manipulowania dużymi plikami tekstowymi, kompilowania kodu źródłowego, przekierowywania danych wyjściowych w skryptach powłoki i wydawania złożonych poleceń systemu Linux.

Chociaż przekierowanie jest potężne, może być skomplikowane dla nowszych administratorów CentOS. Praktyka, badania i okazjonalne pytania na forum dotyczące systemu Linux (na przykład Stack Overflow Linux) pomogą rozwiązać zaawansowane rozwiązania.

Konstrukcje Bash Shell

Teraz, gdy już wiemy, jak działa powłoka Bash , nauczmy się kilku podstawowych konstrukcji, powszechnie używanych, do pisania skryptów. W tej sekcji omówimy -

  • Variables
  • Loops
  • Conditionals
  • Kontrola pętli
  • Czytanie i zapisywanie do plików
  • Podstawowe operacje matematyczne

Wskazówki dotyczące rozwiązywania problemów BASH

BASH może być trochę skomplikowany w porównaniu z dedykowanym językiem skryptowym. Niektóre z największych problemów w skryptach BASH są spowodowane nieprawidłową ucieczką lub brakiem ucieczki przed operacjami skryptowymi przekazywanymi do powłoki. Jeśli przeglądałeś skrypt kilka razy i nie działa zgodnie z oczekiwaniami, nie martw się. Jest to powszechne nawet w przypadku osób, które codziennie używają BASH do tworzenia złożonych skryptów.

Szybkie przeszukanie Google lub zarejestrowanie się na specjalistycznym forum Linux, aby zadać pytanie, pozwoli szybko rozwiązać problem. Jest bardzo prawdopodobne, że ktoś natknął się na dokładny problem i został już rozwiązany.

Skrypty BASH to świetna metoda szybkiego tworzenia zaawansowanych skryptów do wszystkiego, od automatyzacji zadań administracyjnych po tworzenie przydatnych narzędzi. Stanie się ekspertem w tworzeniu skryptów BASH wymaga czasu i praktyki. Dlatego używaj skryptów BASH, gdy tylko jest to możliwe, jest to świetne narzędzie, które można mieć w zestawie narzędzi administracji CentOS.

Zarządzanie pakietami w CentOS można przeprowadzić na dwa sposoby: z poziomu terminala oraz z poziomu graficznego interfejsu użytkownika.

Najczęściej większość czasu administratora CentOS będzie korzystać z terminala. Aktualizowanie i instalowanie pakietów dla CentOS nie różni się. Mając to na uwadze, najpierw zbadamy zarządzanie pakietami w terminalu, a następnie dotkniemy korzystania z graficznego narzędzia do zarządzania pakietami udostępnianego przez CentOS.

Menedżer pakietów YUM

YUM to narzędzie służące do zarządzania pakietami w CentOS. Pokrótce poruszyliśmy ten temat w poprzednich rozdziałach. W tym rozdziale będziemy pracować z czystą instalacją CentOS. Najpierw całkowicie zaktualizujemy naszą instalację, a następnie zainstalujemy aplikację.

Firma YUM znacznie ułatwiła instalację oprogramowania i zarządzanie nim w systemie Linux. YUM „automagicznie” sprawdza nieaktualne zależności, oprócz nieaktualnych pakietów. To naprawdę odciążyło administratora CentOS w porównaniu do dawnych czasów kompilowania każdej aplikacji z kodu źródłowego.

mniam check-update

Sprawdza pakiety, które mogą aktualizować kandydatów. W tym samouczku założymy, że jest to system produkcyjny, który będzie miał kontakt z Internetem bez aplikacji produkcyjnych, które muszą zostać przetestowane przez DevOps przed aktualizacją pakietów. Zainstalujmy teraz zaktualizowanych kandydatów w systemie.

[root@localhost rdc]# yum check-update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu
NetworkManager.x86_64                     1:1.4.0-19.el7_3              updates
NetworkManager-adsl.x86_64                1:1.4.0-19.el7_3              updates 
NetworkManager-glib.x86_64                1:1.4.0-19.el7_3              updates 
NetworkManager-libnm.x86_64               1:1.4.0-19.el7_3              updates 
NetworkManager-team.x86_64                1:1.4.0-19.el7_3              updates 
NetworkManager-tui.x86_64                 1:1.4.0-19.el7_3              updates 
NetworkManager-wifi.x86_64                1:1.4.0-19.el7_3              updates 
audit.x86_64                              2.6.5-3.el7_3.1               updates    
vim-common.x86_64                         2:7.4.160-1.el7_3.1           updates 
vim-enhanced.x86_64                       2:7.4.160-1.el7_3.1           updates 
vim-filesystem.x86_64                     2:7.4.160-1.el7_3.1           updates 
vim-minimal.x86_64                        2:7.4.160-1.el7_3.1           updates 
wpa_supplicant.x86_64                     1:2.0-21.el7_3                updates 
xfsprogs.x86_64                           4.5.0-9.el7_3                 updates

[root@localhost rdc]#

mniam aktualizacja

Spowoduje to zainstalowanie wszystkich zaktualizowanych kandydatów, dzięki czemu instalacja CentOS będzie aktualna. W przypadku nowej instalacji może to zająć trochę czasu, w zależności od instalacji i szybkości połączenia internetowego.

[root@localhost rdc]# yum update

vim-minimal                        x86_64    2:7.4.160-1.el7_3.1     updates    436 k 
wpa_supplicant                     x86_64    1:2.0-21.el7_3          updates    788 k 
xfsprogs                           x86_64    4.5.0-9.el7_3           updates    895 k  

Transaction Summary 
======================================================================================
Install    2 Packages 
Upgrade  156 Packages  
Total download size: 371 M

Is this ok [y/d/N]:

Zainstaluj oprogramowanie przez YUM

Oprócz aktualizacji systemu CentOS, menedżer pakietów YUM jest naszym narzędziem do instalacji oprogramowania. Wszystko, od narzędzi do monitorowania sieci, odtwarzaczy wideo po edytory tekstu, można zainstalować z centralnego repozytorium za pomocą YUM .

Przed zainstalowaniem niektórych programów narzędziowych spójrzmy na kilka poleceń YUM . W codziennej pracy 90% użycia YUM przez administratora CentOS będzie dotyczyło około 7 poleceń. Omówimy każdy z nich w nadziei, że zapoznamy się z obsługą YUM na biegłym poziomie do codziennego użytku. Jednak, podobnie jak większość narzędzi dla Linuksa, YUM oferuje bogactwo zaawansowanych funkcji, które zawsze są świetne do zbadania poprzez stronę man. Używanie man yum zawsze będzie pierwszym krokiem do wykonywania nieznanych operacji za pomocą dowolnego narzędzia Linux.

Najpopularniejsze polecenia YUM

Poniżej przedstawiono najczęściej używane polecenia YUM.

Komenda Akcja
lista zainstalowana Wyświetla listę pakietów zainstalowanych przez YUM
lista wszystkich Wyświetla wszystkie aktualnie dostępne pakiety
lista grup Wyświetla zgrupowane pakiety
info Zawiera szczegółowe informacje o pakiecie
Szukaj Przeszukuje opisy i nazwy pakietów
zainstalować Instaluje pakiet
localinstall Instaluje lokalny pakiet rpm
usunąć Usuwa i instaluje pakiet
Wyczyść wszystko Czyści / var / cache / yum, aby zwolnić miejsce na dysku
mniam Podobnie jak wszystkie polecenia Linuksa, plik pomocy

Zainstaluj oprogramowanie za pomocą YUM

Teraz zainstalujemy tekstową przeglądarkę internetową o nazwie Lynx. Przed instalacją musimy najpierw pobrać nazwę pakietu zawierającego przeglądarkę internetową Lynx. Nie jesteśmy nawet w 100% pewni, że nasze domyślne repozytorium CentOS zawiera pakiet dla przeglądarki internetowej Lynx, więc poszukajmy i zobaczmy -

[root@localhost rdc]# yum search web browser
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com 
 * updates: mirror.clarkson.edu 
=================================================================
N/S matched: web, browser
================================================================== 
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser
plug-in and Web Start implementation
elinks.x86_64 : A text-mode Web browser
firefox.i686 : Mozilla Firefox Web browser
firefox.x86_64 : Mozilla Firefox Web browser
lynx.x86_64 : A text-based Web browser

Full name and summary matches only, use "search all" for everything.
 
[root@localhost rdc]#

Widzimy, CentOS oferuje przeglądarkę internetową Lynx w repozytorium. Zobaczmy więcej informacji o pakiecie.

[root@localhost rdc]# lynx.x86_64
bash: lynx.x86_64: command not found...
[root@localhost rdc]# yum info lynx.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu
Available Packages
Name        : lynx
Arch        : x86_64
Version     : 2.8.8
Release     : 0.3.dev15.el7
Size        : 1.4 M
Repo        : base/7/x86_64
Summary     : A text-based Web browser
URL         : http://lynx.isc.org/
License     : GPLv2
Description : Lynx is a text-based Web browser. Lynx does not display any images, 
            : but it does support frames, tables, and most other HTML tags. One 
            : advantage Lynx has over graphical browsers is speed; Lynx starts and
            : exits quickly and swiftly displays web pages.
            
[root@localhost rdc]#

Miły! Wersja 2.8 jest wystarczająco aktualna, więc zainstalujmy Lynx.

[root@localhost rdc]# yum install lynx
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.scalabledns.com
 * extras: mirror.scalabledns.com
 * updates: mirror.clarkson.edu 
Resolving Dependencies
--> Running transaction check 
---> Package lynx.x86_64 0:2.8.8-0.3.dev15.el7 will be installed 
--> Finished Dependency Resolution  
Dependencies Resolved  
===============================================================================
===============================================================================
Package                          Arch
Version                       Repository                    Size 
===============================================================================
===============================================================================
Installing: 
 lynx                           x86_64
2.8.80.3.dev15.el7              base                        1.4 M

Transaction Summary
===============================================================================
===============================================================================
Install  1 Package

Total download size: 1.4 M 
Installed size: 5.4 M 
Is this ok [y/d/N]: y 
Downloading packages: 
No Presto metadata available for base
lynx-2.8.8-0.3.dev15.el7.x86_64.rpm
| 1.4 MB  00:00:10      
Running transaction check 
Running transaction test 
Transaction test succeeded 
Running transaction 
   Installing : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1
   Verifying  : lynx-2.8.8-0.3.dev15.el7.x86_64
1/1

Installed: 
   lynx.x86_64 0:2.8.8-0.3.dev15.el7
Complete!

[root@localhost rdc]#

Następnie upewnijmy się, że Lynx faktycznie zainstalował się poprawnie.

[root@localhost rdc]# yum list installed | grep -i lynx

lynx.x86_64                   2.8.8-0.3.dev15.el7              @base     
[root@localhost rdc]#

Świetny! Użyjmy Lynxa i zobaczmy, jak wygląda sieć bez „polubień” i ładnych obrazków.

[root@localhost rdc]# lynx www.tutorialpoint.in

Świetnie, teraz mamy przeglądarkę internetową dla naszego serwera produkcyjnego, której można bez większych obaw używać do zdalnych exploitów uruchamianych w sieci. To dobra rzecz dla serwerów produkcyjnych.

Prawie skończyliśmy, jednak najpierw musimy ustawić ten serwer dla programistów do testowania aplikacji. Dlatego upewnijmy się, że mają wszystkie narzędzia potrzebne do ich pracy. Mogliśmy zainstalować wszystko indywidualnie, ale CentOS i YUM sprawiły, że jest to znacznie szybsze. Zainstalujmy Pakiet Development Group .

[root@localhost rdc]# yum groups list 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: mirror.scalabledns.com 
 * extras: mirror.scalabledns.com 
 * updates: mirror.clarkson.edu
 
Available Groups: 
   Compatibility Libraries 
   Console Internet Tools 
   Development Tools 
   Graphical Administration Tools
   Legacy UNIX Compatibility 
   Scientific Support 
   Security Tools 
   Smart Card Support 
   System Administration Tools 
   System Management 
Done

[root@localhost rdc]#

To jest mniejsza lista grup pakietów udostępniana przez CentOS. Zobaczmy, co zawiera „Grupa deweloperska”.

[root@localhost rdc]# yum group info "Development Tools" 
Loaded plugins: fastestmirror, langpacks 
There is no installed groups file. 
Maybe run: yum groups mark convert (see man yum) 
Loading mirror speeds from cached hostfile 
 * base: mirror.scalabledns.com 
 * extras: mirror.scalabledns.com 
 * updates: mirror.clarkson.edu
 
Group: Development Tools 
Group-Id: development 
Description: A basic development environment. 
Mandatory Packages: 
autoconf 
automake 
binutils 
bison

Pierwszy ekran wyjścia jest taki, jak pokazano powyżej. Cała lista jest dość obszerna. Jednak w miarę upływu czasu ta grupa będzie musiała zostać zainstalowana w całości. Zainstalujmy całą grupę deweloperską.

[root@localhost rdc]# yum groupinstall "Development Tools"

To będzie większa instalacja. Po zakończeniu Twój serwer będzie zawierał większość bibliotek programistycznych i kompilatorów dla języków Perl, Python, C i C ++.

Graficzne zarządzanie pakietami w CentOS

Gnome Desktop udostępnia graficzne narzędzie do zarządzania pakietami o nazwie Software. Jest dość prosty w obsłudze i nieskomplikowany. Oprogramowanie, narzędzie do zarządzania pakietami Gnome dla CentOS, można znaleźć, przechodząc do: Aplikacje → Narzędzia systemowe → Oprogramowanie.

Narzędzie do zarządzania pakietami oprogramowania jest podzielone na grupy, które umożliwiają administratorowi wybieranie pakietów do instalacji. Chociaż to narzędzie jest świetne ze względu na łatwość użycia i prostotę dla użytkowników końcowych, YUM jest o wiele potężniejsze i prawdopodobnie będzie częściej używane przez administratorów.

Poniżej znajduje się zrzut ekranu narzędzia do zarządzania pakietami oprogramowania, który tak naprawdę nie jest przeznaczony dla administratorów systemu.

Logical Volume Management (LVM)to metoda używana w systemie Linux do zarządzania wolumenami pamięci masowej na różnych fizycznych dyskach twardych. Nie należy tego mylić z RAID. Można go jednak pomyśleć w podobnej koncepcji jak RAID 0 lub J-Bod. Dzięki LVM można mieć (na przykład) trzy dyski fizyczne o pojemności 1 TB każdy, a następnie logiczny wolumin około 3 TB, taki jak / dev / sdb. Lub nawet dwa logiczne woluminy o pojemności 1,5 TB, 5 woluminów po 500 GB lub dowolna kombinacja. Jeden dysk może być nawet używany do tworzenia migawek woluminów logicznych.

Note- Korzystanie z woluminów logicznych w rzeczywistości zwiększa liczbę operacji we / wy dysku po prawidłowej konfiguracji. Działa to podobnie do rozłożenia danych RAID 0 na oddzielnych dyskach.

Ucząc się o zarządzaniu głośnością za pomocą LVM, jest łatwiej, jeśli wiemy, czym jest każdy komponent w LVM. Zapoznaj się z poniższą tabelą, aby dokładnie zrozumieć każdy element. Jeśli potrzebujesz, użyj Google do nauki. Zrozumienie każdego elementu woluminu logicznego jest ważne, aby nim zarządzać.

PV Objętość fizyczna sda
PP Partycja fizyczna sda1, sda2
VG Grupa woluminów Połączone zasoby fizyczne
LV Wolumin logiczny Postrzegany jako miejsce do przechowywania systemu operacyjnego

ZA physical volumebędzie widoczne jako / dev / sda, / dev / sdb; dysk fizyczny wykrywany przez Linuksa.

ZA physical partitionbędzie częścią dysku podzieloną na partycje przez narzędzie dyskowe, takie jak fdisk. Pamiętaj, że partycja fizyczna nie jest zalecana w większości typowych konfiguracji LVM. Przykład: dysk / dev / sda jest podzielony na partycje, aby objąć dwie partycje fizyczne: / dev / sda1 i / dev / sda1

Jeśli mamy dwa dyski fizyczne o pojemności 1 TB każdy, możemy wśród nich utworzyć grupę woluminów o wielkości prawie 2 TB.

Z grupy woluminów możemy utworzyć trzy woluminy logiczne o dowolnym rozmiarze nie przekraczającym całkowitego rozmiaru grupy woluminów.

Tradycyjne narzędzia do administrowania dyskami w systemie Linux

Zanim zapoznamy się z najnowszymi i najlepiej wyposażonymi narzędziami do zarządzania LVM w CentOS 7, powinniśmy najpierw zbadać bardziej tradycyjne narzędzia, które były używane do zarządzania dyskami w systemie Linux. Narzędzia te przydadzą się i nadal będą używane z dzisiejszymi zaawansowanymi narzędziami LVM, takimi jak System Storage Manager: lsblk, parted i mkfs.xfs.

Zakładając, że dodaliśmy kolejny lub dwa dyski do naszego systemu, musimy wyliczyć dyski wykryte przez Linuksa. Zawsze radziłbym wyliczać dyski za każdym razem przed wykonaniem operacji uważanych za destrukcyjne.lsblkto świetne narzędzie do uzyskiwania informacji o dysku. Zobaczmy, jakie dyski wykrywa CentOS.

[root@localhost rdc]# lsblk
NAME         MAJ:MIN    RM    SIZE    RO    TYPE MOUNTPOINT
sda            8:0       0     20G     0        disk 
├─sda1         8:1       0      1G     0     part /boot
└─sda2         8:2       0     19G     0        part 
  ├─cl-root  253:0       0     17G     0      lvm  /
  └─cl-swap  253:1       0      2G     0      lvm  [SWAP]
    sdb       8:16       0      6G     0       disk 
    sdc       8:32       0      4G     0       disk 
    sr0       11:0       1   1024M     0       rom

Jak widać, mamy w tym systemie trzy dyski: sda, sdb i sdc.

Dysk sda zawiera działającą instalację CentOS, więc nie chcemy bawić się sda. Na potrzeby tego samouczka do systemu dodano zarówno sdb, jak i sdc . Uczyńmy te dyski użytecznymi dla CentOS.

Utwórz etykietę dysku

[root@localhost rdc]# parted /dev/sdb mklabel GPT
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this
   disk will be lost. Do you want to continue?
Yes/No? Yes                               
[root@localhost rdc]#

Mamy teraz oznaczony jeden dysk. Po prostu uruchom polecenie parted w ten sam sposób na sdc .

Utwórz partycje na dysku

Utworzymy tylko jedną partycję na każdym dysku. Aby utworzyć partycje, ponownie używane jest polecenie rozdzielone .

[root@localhost rdc]# parted -a opt /dev/sdb mkpart primary ext4 0% 100%

Warning - Zażądałeś partycji od 0,00B do 6442 MB (sektory 0..12582911).

Najbliższa lokalizacja jaką możemy zarządzać to od 17,4kB do 1048kB (sektory 34..2047).

Czy to nadal jest dla Ciebie do zaakceptowania?

Tak nie? NIE

[root@localhost rdc]# parted -a opt /dev/sdc mkpart primary ext4 0% 100%

Information - Może być konieczna aktualizacja / etc / fstab.

[root@localhost rdc]# lsblk                                               
NAME        MAJ:MIN   RM    SIZE    RO    TYPE MOUNTPOINT
sda           8:0      0     20G     0        disk 
├─sda1        8:1      0      1G     0      part / boot
└─sda2        8:2      0     19G     0        part 
 ├─cl-root  253:0      0     17G     0       lvm  /
 └─cl-swap  253:1      0      2G     0       lvm  [SWAP]
sdb          8:16      0      6G     0        disk 
└─sdb1       8:17      0      6G     0        part 
 sdc         8:32      0      4G     0        disk 
└─sdc1       8:33      0      4G     0        part 
sr0          11:0      1   1024M     0        rom

[root@localhost rdc]#

Jak widać z danych wyjściowych lsblk, mamy teraz dwie partycje, każdą na sdb i sdc.

Utwórz plik System

Na koniec, przed zamontowaniem i użyciem dowolnego woluminu, musimy dodać system plików. Będziemy używać systemu plików XFS.

root@localhost rdc]# mkfs.xfs -f /dev/sdb1
meta-data = /dev/sdb1               isize = 512    agcount = 4, agsize = 393088 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1572352, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0
[root@localhost rdc]# mkfs.xfs -f /dev/sdc1
meta-data   = /dev/sdc1             isize = 512    agcount = 4, agsize = 262016 blks
            =                      sectsz = 512    attr = 2, projid32bit = 1
            =                         crc = 1      finobt = 0, sparse = 0
data        =                       bsize = 4096   blocks = 1048064, imaxpct = 25
            =                       sunit = 0      swidth = 0 blks
naming      = version 2             bsize = 4096   ascii-ci = 0 ftype = 1
log         = internal log          bsize = 4096   blocks = 2560, version = 2
            =                      sectsz = 512    sunit = 0 blks, lazy-count = 1
realtime    = none                  extsz = 4096   blocks = 0, rtextents = 0

[root@localhost rdc]#

Sprawdźmy, czy każdy z nich ma nadający się do użytku system plików.

[root@localhost rdc]# lsblk -o NAME,FSTYPE
NAME           FSTYPE
sda         
├─sda1         xfs
└─sda2         LVM2_member
 ├─cl-root     xfs
 └─cl-swap     swap
sdb         
└─sdb1         xfs
sdc         
└─sdc1         xfs
sr0

[root@localhost rdc]#

Każdy używa teraz systemu plików XFS. Zamontujmy je, sprawdźmy mocowanie i skopiujmy do każdego plik.

[root@localhost rdc]# mount -o defaults /dev/sdb1 /mnt/sdb
[root@localhost rdc]# mount -o defaults /dev/sdc1 /mnt/sdc

[root@localhost ~]# touch /mnt/sdb/myFile /mnt/sdc/myFile
[root@localhost ~]# ls /mnt/sdb /mnt/sdc
 /mnt/sdb:
  myFile

 /mnt/sdc:
  myFile

W tym momencie mamy dwa dyski do wykorzystania. Jednak będą one użyteczne tylko wtedy, gdy zamontujemy je ręcznie. Aby zamontować każdy podczas rozruchu, musimy edytować plik fstab . Ponadto należy ustawić uprawnienia dla grup, które potrzebują dostępu do nowych dysków.

Utwórz grupy woluminów i woluminy logiczne

Jednym z największych dodatków do CentOS 7 było włączenie narzędzia o nazwie System Storage Manager lub ssm .System Storage Manager znacznie upraszcza proces zarządzania pulami LVM i woluminami pamięci masowej w systemie Linux.

Przejdziemy przez proces tworzenia prostej puli woluminów i woluminów logicznych w CentOS. Pierwszym krokiem jest zainstalowanie System Storage Manager.

[root@localhost rdc]# yum  install system-storage-manager

Spójrzmy na nasze dyski za pomocą polecenia ssm list .

Jak widać powyżej, w systemie zainstalowane są łącznie trzy dyski.

  • /sdba1 - Hostuje naszą instalację CentOS

  • /sdb1 - Zamontowany w / mnt / sdb

  • /sdc1 - Zamontowany w / mnt / sdc

Chcemy zrobić grupę woluminów przy użyciu dwóch dysków (sdb i sdc). Następnie udostępnij systemowi trzy woluminy logiczne o pojemności 3 GB.

Stwórzmy naszą grupę woluminów.

[root@localhost rdc]# ssm create -p NEW_POOL /dev/sdb1 /dev/sdc1

Domyślnie ssm utworzy pojedynczy wolumin logiczny rozszerzający całe 10 GB puli. Nie chcemy tego, więc usuńmy to.

[root@localhost rdc]# ssm remove /dev/NEW_POOL/lvol001
 Do you really want to remove active logical volume NEW_POOL/lvol001? [y/n]: y
 Logical volume "lvol001" successfully removed
[root@localhost rdc]#

Na koniec utwórzmy trzy woluminy logiczne.

[root@localhost rdc]# ssm create -n disk001 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk002 --fs xfs -s 3GB -p NEW_POOL
[root@localhost rdc]# ssm create -n disk003 --fs xfs -s 3GB -p NEW_POOL

Teraz sprawdźmy nasze nowe tomy.

Mamy teraz trzy oddzielne woluminy logiczne podzielone na dwie partycje dysków fizycznych.

Woluminy logiczne to potężna funkcja wbudowana teraz w CentOS Linux. Dotknęliśmy powierzchni, jeśli chodzi o zarządzanie nimi. Opanowanie pul i woluminów logicznych wiąże się z ćwiczeniami i rozszerzoną nauką z Tutorials Point. Na razie nauczyłeś się podstaw zarządzania LVM w CentOS i posiadasz możliwość tworzenia podstawowych rozłożonych woluminów logicznych na jednym hoście.