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.