quản trị cao cấp gnu/linux (fta)

471

Upload: hung-nguyen-vu

Post on 05-Dec-2014

1.549 views

Category:

Documents


5 download

DESCRIPTION

Quản trị cao cấp GNU/Linux (Tiếng Việt)

TRANSCRIPT

Page 1: Quản trị cao cấp GNU/Linux (FTA)
Page 2: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Quản trị cao cấpGNU/LinuxJosep Jorba Esteve (người điều phối)Remo Suppi Boldrito

XP07/M2103/02279

GNU/Linux advanced administrationJosep Jorba Esteve (coordinador)Remo Suppi Boldrito

XP07/M2103/02279

Trang 2/471

Page 3: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Josep Jorba Esteve Remo Suppi Boldrito

Kỹ sư cao cấp và Tiến sĩ về công nghệ thông tin của Đại học Tự trị Barcelona (UAB). Giáo sư về công nghệ thông tin, các nghiên cứu về đa phương tiện và truyền thông của Đại học mở Catalonia (UOC).

Kỹ sư về truyền thông, Tiến sĩ về công nghệ thông tin của UAB. Giáo sư của Phòng Kiến trúc máy tính và các Hệ điều hành của UAB.

Xuất bản lần thứ 1: Tháng 09/2007© Josep Jorba Esteve, Remo Suppi BoldritoMọi quyền được giữ© đối với xuất bản phẩm này, FUOC, 2009Đường Tibidabo, 39-43, 08035 BarcelonaThiết kế: Manel AndreuXuất bản: Eureca Media, SL

First edition: September 2007© Josep Jorba Esteve, Remo Suppi BoldritoAll rights reserved© of this edition, FUOC, 2009Av. Tibidabo, 39-43, 08035 Barcelona/Design: Manel AndreuPublishing: Eureca Media, SL

Bản quyền © 2010, FUOC. Quyền được trao để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo những điều khoản của Giấy phép Tài liệu Tự do GNU, Phiên bản 1.2 hoặc bất kỳ phiên bản nào sau đó được xuất bản bởi Quỹ Phần mềm Tự do, không có những phần không đổi, không có các văn bản bìa trước và bìa sau. Một bản sao của các giấy phép này được đưa vào phần có đầu đề “Giấy phép Tài liệu Tự do GNU” của tài liệu này.

Copyright © 2010, FUOC. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation Licence, Version 1.2 or any later version published by the Free Software Foundation, with no Invariant Sections, no Front-Cover, and no Back-Cover Texts. A copy of these license is included in the section entitled “GNU Free Documentation License”.

Trang 3/471

Page 4: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lời người dịch

Trong bối cảnh khi mà các Công nghệ tự do và mở đang ngày càng trở thành một xu thế không thể tránh khỏi trên toàn thế giới, tài liệu “Quản trị cao cấp GNU/Linux” của các tác giả: Remo Suppi Boldrito và người điều phối Josep Jorba Esteve đã ra đời. Tài liệu này lần đầu xuất hiện vào tháng 09/2007, được dịch sang tiếng Anh vào năm 2008 và được Viện Hàn lâm Công nghệ Tự do FTA (Free Technology Academy) cải tiến vào năm 2009, là tài liệu được sử dụng trong chương trình đào tạo trực tuyến cho các giáo viên theo các module

của khóa học về các Công nghệ tự do tại một số trường đại học châu Âu có liên kết với Viện như: Đại học Mở Hà Lan (Open Universiteit Nederland), Đại học Oberta de Catalunya của Tây Ban Nha (Universitat Oberta de Catalunya) và Đại học Agder của Nauy (University of Agder).

Bản dịch sang tiếng Việt được thực hiện từ bản gốc tiếng Anh với cùng tên, được đưa lên trực tuyến trên website của Viện vào tháng 01/2010 tại địa chỉ: http://ftacademy.org/materials, hầu như không có sự sửa đổi nào.

Tuân thủ theo các điều khoản của giấy phép được giới thiệu trong tài liệu gốc tiếng Anh, trong phần phụ lục ở cuối tài liệu này, tại nơi có giới thiệu giấy phép tài liệu tự do GFDL v.1.2, dù có cả bản dịch sang tiếng Việt đi cùng, thì bản dịch chỉ để tham khảo, bản gốc bằng tiếng Anh mới là bản có giá trị pháp lý cao nhất.

Các trang có những lưu ý về bản quyền của bản gốc tiếng Anh được giữ nguyên không thay đổi, dù có các phần dịch tương ứng sang tiếng Việt nằm trên cùng các trang đó.

Tài liệu này được cấp phép theo giấy phép GFDL v1.2 và các phiên bản tương ứng sau này.

Tài liệu “Quản trị cao cấp GNU/Linux”, cùng với 2 tài liệu khác cũng đã được dịch sang tiếng Việt và xuất bản trên mạng gồm: “Giới thiệu Phần mềm Tự do” và “Hệ điều hành GNU/Linux cơ bản” đều nằm trong cùng bộ sách đào tạo về các công nghệ tự do của Viện Hàn lâm Công nghệ Mở.

Những nội dung của tài liệu này là những kiến thức nâng cao đối với bất kỳ người quản trị hệ thống GNU/Linux nào.

Mọi thông tin đóng góp cho bản dịch tiếng Việt, xin gửi vào địa chỉ thư: [email protected]

Chúc các độc giả thành công!

Hà Nội, tháng 09 năm 2012

Lê Trung Nghĩa

Trang 4/471

Page 5: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lời nói đầu

Phần mềm đã trở thành một tài nguyên của xã hội manh tính chiến lược trong vài thập kỷ gần đây. Sự nổi lên của Phần mềm Tự do (PMTD), đã thâm nhập vào các khu vực chủ chốt của thị trường công nghệ thông tin và truyền thông (ICT), đang thay đổi một cách mạnh mẽ nền kinh tế của việc sử dụng và phát triển phần mềm. PMTD - đôi khi còn được gọi như là “Nguồn mở” hoặc “Phần mềm Tự do” - có thể được sử dụng, sao chép, sửa đổi và phân phối một cách tự do. Nó đưa ra sự tự do để học và dạy mà không có việc lôi kéo vào những sự phụ thuộc vào bất kỳ nhà cung cấp công nghệ duy nhất nào. Những quyền tự do này được xem xét như là điều kiện cơ bản tiên quyết cho sự phát triển bền vững và tổng thể của một xã hội thông tin.

Dù có một mối quan tâm đang gia tăng trong các công nghệ tự do (PMTD và các Chuẩn Mở), thì vẫn có một số lượng hạn chế những người có đủ tri thức và sự tinh thông trong các lĩnh vực này. FTA cố gắng đáp ứng yêu cầu này.

Giới thiệu về FTA (Viện hàn lâm Công nghệ tự do - Free Technology Academy)

Viện Hàn lâm Công nghệ Tự do (FTA) là một sáng kiến liên kết từ vài trường đại học tại một vài quốc gia. Nó hướng tới việc đóng góp cho một xã hội mà cho phép tất cả mọi người sử dụng nghiên cứu, tham gia và xây dựng dựa trên tri thức sẵn có mà không có hạn chế nào.

FTA đưa ra những thứ gì?

FTA đưa ra một chương trình trực tuyến mức giáo viên với các module khóa học về các Công nghệ Tự do. Những học viên có thể chọn tham gia trong một khóa học độc lập hoặc đăng ký vào toàn bộ chương trình. Việc giảng dạy diễn ra trực tuyến trong khu trường ảo của FTA và được thực hiện bằng việc đào tạo nhân viên từ các các trường đại học là các đối tác. Uy tín đạt được trong chương trình của FTA được thừa nhận bởi các trường đại học này.

Ai đứng đằng sau FTA?

FTA đã được bắt đầu trong năm 2008 được Chương trình Học tập Suốt đời (LLP) của Ủy ban châu Âu, dưới sự điều phối của Viện Tri thức Tự do (Free Knowledge Institute) và trong mối quan hệ đối tác với 3 trường đại học của châu Âu: Đại học Mở Hà Lan (Open Universiteit Nederland), Đại học Oberta de Catalunya của Tây Ban Nha (Universitat Oberta de Catalunya) và Đại học Agder của Nauy (University of Agder) hỗ trợ.

FTA là vì ai?

Viện Hàn lâm Công nghệ tự do đặc biệt chú trọng vào những người chuyên nghiệp, các nhà giáo dục, sinh viên và những người ra quyết định về công nghệ thông tin.

Thế còn về việc cấp phép thì sao?

Tất cả các tư liệu học tập được sử dụng và được FTA phát triển đều là các Tài nguyên Giáo dục Mở, được xuất bản theo các giấy phép tự do copyleft, cho phép mọi người được tự do sử dụng, sửa đổi và phân phối lại. Tương tự, các phần mềm được sử dụng trong khu trường ảo của FTA là các PMTD và được xây dựng dựa trên khung công việc của các Chuẩn Mở.

Trang 5/471

Page 6: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Sự tiến hóa của cuốn sách này

FTA đã sử dụng lại các tư liệu của các khóa học hiện hành từ Đại học Oberta de Catalunya và chúng đã được phát triển cùng với các nhân viên của LibreSoft từ Đại học Rey Juan Carlos. Vào năm 2008 cuốn sách này đã được dịch sang tiếng Anh với sự trợ giúp của Dự án Khoa học, Giáo dục và Học tập Tự do (SELF), được Chương trình Khung lần thứ 6 của Ủy ban châu Âu hỗ trợ. Vào năm 2009, tư liệu này đã được FTA cải tiến. Hơn nữa FTA đã phát triển một chỉ dẫn nghiên cứu và các hoạt động đào tạo sẵn sàng cho các học viên tham gia trong khu trường của FTA.

Sự tham gia

Người sử dụng các tư liệu học tập của FTA được khuyến khích để cung cấp các ý kiến phản hồi và đưa ra những gợi ý để cải tiến. Một không gian đặc biệt cho những ý kiến phản hồi này được thiết lập trên website của FTA. Những đóng góp đó sẽ được tính tới cho các phiên bản tiếp sau. Hơn nữa, FTA chào mừng bất kỳ ai sử dụng và phân phối tư liệu này cũng như tiến hành các phiên bản và bản dịch mới.

Xem các thông tin cụ thể và cập nhật về cuốn sách này, bao gồm cả các bản dịch và các định dạng khác tại http://ftacademy.org/materials/fsm/2. Để có thêm thông tin và sự tham gia trong chương trình các khóa học trực tuyến của FTA, xin hãy viếng thăm website của FTA tại: http://ftacademy.org/.

Tôi chân thành hy vọng cuốn sách về khóa học này sẽ giúp bạn trong quá trình học tập cá nhân của bạn và giúp bạn giúp được những người khác nữa. Hy vọng được gặp bạn trong các phong trào về tri thức tự do và công nghệ tự do!

Chúc bạn học hạnh phúc!

Wouter Tebbens

Chủ tịch của Viện Tri thức Tự do

Giám đốc của Viện hàn lâm Công nghệ Tự do

Trang 6/471

Page 7: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các tác giả muốn cảm ơn Quỹ của Đại học Oberta de Catalunya về việc cung cấp tài chính cho lần xuất bản đầu tiên của tác phẩm này, và một sự chia sẻ rộng rãi của những cải tiến dẫn tới lần xuất bản thứ 2, như một phần của Chương trình Giáo viên trong PMTD được đưa ra theo yêu cầu của Đại học này, nơi mà nó được sử dụng như là tư liệu cho một trong những môn học.

Việc dịch tài liệu này sang tiếng Anh đã được thực hiện với sự hỗ trợ từ Dự án SELF, Nền tảng SELF, chương trình của Ủy ban châu Âu về các Công nghệ của Xã hội Thông tin và Đại học Oberta de Catalunya. Chúng tôi muốn được cảm ơn việc dịch tư liệu này sang tiếng Anh do lexia:park thực hiện.

Phiên bản hiện hành của các tư liệu tiếng Anh đã được mở rộng với việc cung cấp tài chính của dự án này của FTA. Dự án của FTA đã được tài trợ bằng sự hỗ trợ từ Ủy ban châu Âu (tham chiếu số 142706-LLP-1-2008-1-NL-ERASMUS-EVC của Chương trình Học tập Suốt đời). Xuất bản phẩm này chỉ phản ánh các quan điểm của các tác giả, và Ủy ban không thể chịu trách nhiệm về bất kỳ sự sử dụng nào mà nó có thể được làm từ những thông tin có chứa trong nó.

Trang 7/471

Page 8: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các nội dung

Module 1

Giới thiệu hệ điều hành GNU/Linux

Josep Jorba Esteve

1. Phần mềm tự do và nguồn mở

2. UNIX. Một chút về lịch sử

3. Các hệ thống GNU/Linux

4. Hồ sơ của quản trị hệ thống

5. Các nhiệm vụ của quản trị hệ thống

6. Các phát tán GNU/Linux

7. Những gì chúng ta sẽ xem xét...

Module 2

Chuyển đổi và cùng tồn tại với các hệ thống phi Linux

Josep Jorba Esteve

1. Các hệ thống máy tính: các môi trường

2. Các dịch vụ của GNU/Linux

3. Các dạng sử dụng

4. Chuyển đổi và cùng tồn tại

5. Công việc chuyển đổi: phân tích trường hợp điển hình

Module 3

Các công cụ cơ bản cho người quản trị

Josep Jorba Esteve

1. Các công cụ đồ họa và dòng lệnh

2. Các chuẩn

3. Tài liệu hệ thống

Trang 8/471

Page 9: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4. Viết thành bó lệnh (Shell scripting)

5. Các công cụ quản lý gói

6. Các công cụ quản trị chung

7. Các công cụ khác

Module 4

Nhân (kernel)

Josep Jorba Esteve

1. Nhân của hệ thống GNU/Linux

2. Cấu hình hoặc cập nhật cho nhân

3. Qui trình cấu hình và biên dịch

4. Việc vá nhân

5. Các module của nhân

6. Tương lai của nhân và các giải pháp thay thế

7. Chỉ dẫn: việc thiết lập cấu hình nhân cho các yêu cầu của người sử dụng

Module 5

Quản trị cục bộ

Josep Jorba Esteve

1. Các phát tán: các tính năng đặc biệt

2. Chạy các mức và các dịch vụ

3. Giám sát tình trạng hệ thống

4. Các hệ thống tệp

5. Người sử dụng và các nhóm

6. Các dịch vụ in

7. Quản trị đĩa và hệ thống tệp

8. Việc cập nhật phần mềm

9. Các công việc đóng bó

Trang 9/471

Page 10: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

10. Chỉ dẫn: thực tế kết hợp các phần khác nhau

Module 6

Quản trị mạng

Remo Suppi Boldrito

1. Giới thiệu về TCP/IP (bộ TCP/IP)

2. Các khái niệm về TCP/IP

3. Cách chỉ định một địa chỉ Internet

4. Cách thiết lập cấu hình cho mạng

5. Thiết lập cấu hình DHCP

6. Bí danh của IP

7. Giả trang của IP

8. NET với nhân 2.2 hoặc cao hơn

9. Cách để thiết lập cấu hình cho một kết nối Dial-up và PPP

10. Thiết lập cấu hình mạng thông qua hotplug (cắm nóng)

11. Mạng riêng ảo (VPN)

12. Các thiết lập cấu hình và các công cụ cao cấp

Module 7

Quản trị máy chủ

Remo Suppi Boldrito

1. Hệ thống tên miền (DNS)

2. NIS (YP)

3. Các dịch vụ kết nối từ xa: telnet và ssh

4. Các dịch vụ truyền tệp: FTP

5. Các dịch vụ trao đổi thông tin ở mức người sử dụng

6. Dịch vụ ủy quyền: Squid

7. OpenLDAP (Ldap)

Trang 10/471

Page 11: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8. Các dịch vụ tệp (NFS)

Module 8

Quản trị dữ liệu

Remo Suppi Boldrito

1. PostgreSQL

2. MySQL

3. Các hệ thống quản trị mã nguồn

4. Phiên bản phụ

Module 9

Quản trị an ninh

Josep Jorba Esteve

1. Các dạng và các phương pháp tấn công

2. An ninh hệ thống

3. An ninh cục bộ

4. SELinux

5. An ninh mạng

6. Dò tìm thâm nhập trái phép

7. Bảo vệ bằng lọc thông qua tường lửa và bao gói

8. Các công cụ an ninh

9. Phân tích ghi lưu ký (Logs)

10. Chỉ dẫn: Cách sử dụng các công cụ phân tích an ninh

Module 10

Cấu hình, tinh chỉnh và tối ưu hóa

Remo Suppi Boldrito

1. Những khía cạnh cơ bản

Trang 11/471

Page 12: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Module 11

Kỹ thuật bó máy (Clustering)

Remo Suppi Boldrito

1. Giới thiệu về Điện toán Hiệu năng Cao (HPC)

2. OpenMosix

3. Siêu máy tính, điện toán lưới

Trang 12/471

Page 13: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Mục lục 1 Giới thiệu hệ điều hành GNU/Linux....................................................................................................19

Giới thiệu.............................................................................................................................................201.1. Phần mềm tự do và nguồn mở......................................................................................................211.2. Unix. Một chút về lịch sử.............................................................................................................261.3. Hệ điều hành GNU/Linux............................................................................................................331.4. Hồ sơ của quản trị hệ thống..........................................................................................................361.5. Các nhiệm vụ của người quản trị..................................................................................................401.6. Các phát tán GNU/Linux..............................................................................................................44

1.6.1. Debian...................................................................................................................................471.6.2. Fedora Core..........................................................................................................................51

1.7. Chúng ta sẽ nhìn vào những gì.....................................................................................................55Các hoạt động......................................................................................................................................57Thư mục tham khảo.............................................................................................................................58

2 Chuyển đổi và cùng tồn tại với các hệ thống không Linux..................................................................59Giới thiệu.............................................................................................................................................602.1. Các hệ thống máy tính: các môi trường.......................................................................................612.2. Các dịch vụ của GNU/Linux........................................................................................................642.3. Các dạng sử dụng.........................................................................................................................662.4. Chuyển đổi hoặc cùng tồn tại.......................................................................................................68

2.4.1. Xác định các yêu cầu dịch vụ...............................................................................................692.4.2. Qui trình chuyển đổi.............................................................................................................70

2.5. Hội thảo về chuyển đổi: phân tích các trường hợp điển hình.......................................................752.5.1. Chuyển đổi cá nhân của một người sử dụng máy có môi trường đồ họa Windows sang một hệ điều hành GNU/Linux................................................................................................................752.5.2. Chuyển đổi của một tổ chức nhỏ với các hệ thống Windows và một ít UNIX....................782.5.3. Chuyển đổi một máy chủ Windows đứng một mình sang một máy chủ Samba chạy GNU/Linux.....................................................................................................................................80

Các hoạt động......................................................................................................................................85Thư mục tham khảo.............................................................................................................................86

3 Các công cụ cơ bản cho người quản trị................................................................................................87Giới thiệu.............................................................................................................................................883.1. Các công cụ đồ họa và dòng lệnh.................................................................................................893.2. Các chuẩn.....................................................................................................................................913.3. Tài liệu hệ thống...........................................................................................................................933.4. Viết bó script.................................................................................................................................94

3.4.1. Các trình biên dịch lệnh tương tác........................................................................................943.4.2. Các trình biên dịch lệnh (shells)...........................................................................................973.4.3 Các biến hệ thống................................................................................................................1003.4.4. Lập trình scripts trong Bash................................................................................................101

3.5. Các công cụ quản lý gói.............................................................................................................1063.5.1. Gói TGZ..............................................................................................................................106

Trang 13/471

Page 14: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.5.2 Fedora/Red Hat: Các gói RPM............................................................................................1083.5.3. Debian: Các gói DEB.........................................................................................................112

3.6. Các công cụ quản trị chung........................................................................................................1163.7. Các công cụ khác........................................................................................................................118Các hoạt động....................................................................................................................................119Thư mục tham khảo...........................................................................................................................120

4 Nhân Linux .......................................................................................................................................121Giới thiệu...........................................................................................................................................1224.1. Nhân của hệ điều hành GNU/Linux...........................................................................................1234.2. Thiết lập cấu hình hoặc cập nhật nhân.......................................................................................1304.3. Quá trình cấu hình và biên dịch..................................................................................................132

4.3.1 Biên dịch nhân 2.4.x............................................................................................................1324.3.2. Chuyển đổi sang nhân 2.6.x................................................................................................1374.3.3. Biên dịch các phiên bản nhân 2.6.x....................................................................................1384.3.4. Biên dịch nhân trong Debian (cách của Debian)................................................................139

4.4. Vá nhân.......................................................................................................................................1424.5. Các module của nhân.................................................................................................................1444.6. Tương lai của nhân và những lựa chọn......................................................................................1464.7. Sách chỉ dẫn: Việc cấu hình nhân cho những yêu cầu của người sử dụng.................................149

4.7.1. Thiết lập cấu hình cho nhân trong Debian..........................................................................1494.7.2. Cấu hình cho nhân trong Fedora/Red Hat..........................................................................1514.7.3. Cấu hình một nhân chung...................................................................................................152

Các hoạt động....................................................................................................................................155Thư mục tham khảo...........................................................................................................................156

5 Quản trị cục bộ...................................................................................................................................157Giới thiệu...........................................................................................................................................1585.1. Các phát tán: các tính năng đặc biệt...........................................................................................1595.2. Các mức khởi động và chạy.......................................................................................................1615.3. Việc giám sát tình trạng hệ thống...............................................................................................164

5.3.1. Khởi động hệ thống............................................................................................................1645.3.2. Nhân: thư mục /proc...........................................................................................................1645.3.3. Nhân: /sys...........................................................................................................................1665.3.4. Các tiến trình.......................................................................................................................1665.3.5 Lưu ký hệ thống...................................................................................................................1675.3.6. Bộ nhớ................................................................................................................................1685.3.7. Đĩa và các hệ thống tệp ......................................................................................................169

5.4. Các hệ thống tệp.........................................................................................................................1725.4.1. Điểm kích hoạt ...................................................................................................................1735.4.2. Các quyền...........................................................................................................................176

5.5. Người sử dụng và nhóm.............................................................................................................1775.6. Các dịch vụ in ấn........................................................................................................................181

5.6.1. BSD LPD............................................................................................................................1845.6.2. LPRng.................................................................................................................................185

Trang 14/471

Page 15: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.6.3 CUPS...................................................................................................................................1875.7. Quản trị đĩa.................................................................................................................................190

5.7.1 Phần mềm RAID.................................................................................................................1915.7.2. Quản trị khối logic (LVM)..................................................................................................195

5.8. Cập nhật phần mềm....................................................................................................................1995.9. Các công việc về bó....................................................................................................................2015.10. Sách chỉ dẫn: những thực tế được kết hợp của các phần khác nhau........................................203Các hoạt động....................................................................................................................................213Thư mục tham khảo...........................................................................................................................214

6 Quản trị mạng.....................................................................................................................................215Giới thiệu...........................................................................................................................................2166.1. Giới thiệu về TCP/IP (bộ TCP/IP)..............................................................................................217

6.1.1 Các dịch vụ trên TCP/IP......................................................................................................2176.1.2 TCP/IP là gì?........................................................................................................................2196.1.3. Các thiết bị mạng vật lý (phần cứng)..................................................................................220

6.2. Các khái niệm về TCP/IP...........................................................................................................2226.3. Làm thế nào để chỉ định một địa chỉ Internet.............................................................................2256.4. Cấu hình mạng như thế nào........................................................................................................229

6.4.1 Cấu hình của kiểm soát giao diện mạng (NIC)....................................................................2296.4.2. Cấu hình của trình giải tên .................................................................................................2336.4.3. Cấu hình cho việc định tuyến.............................................................................................2356.4.4. Cấu hình của inetd..............................................................................................................2376.4.5. Cấu hình bổ sung: các giao thức và các mạng....................................................................2396.4.6. Các khía cạnh an ninh.........................................................................................................2406.4.7. Các lựa chọn IP...................................................................................................................241

6.5. Cấu hình DHCP..........................................................................................................................2426.6. Việc đặt bí danh cho IP ..............................................................................................................2446.7. Đắp mặt nạ IP.............................................................................................................................2456.8. NAT với nhân 2.2 hoặc cao hơn.................................................................................................2466.9. Cách cấu hình một kết nối quay số Dial-up và PPP...................................................................2476.10. Việc cấu hình mạng thông qua cắm nóng (hotplug).................................................................2496.11. Mạng riêng ảo (VPN)...............................................................................................................250

6.11.1 Ví dụ đơn giản...................................................................................................................2506.12. Những cấu hình và công cụ tiên tiến........................................................................................253Các hoạt động....................................................................................................................................261Phụ lục. Kiểm soát các dịch vụ được liên kết tới một mạng FC6.....................................................262

7 Quản trị máy chủ................................................................................................................................264Giới thiệu...........................................................................................................................................2657.1. Hệ thống tên miền (DNS)...........................................................................................................266

7.1.1. Máy chủ tên Cache.............................................................................................................2667.1.2. Trình chuyển tiếp (forwarders)...........................................................................................2707.1.3. Cấu hình một miền của riêng..............................................................................................270

7.2. NIS (YP).....................................................................................................................................274

Trang 15/471

Page 16: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.2.1. Làm thế nào để khởi tạo một máy trạm NIS cục bộ trong Debian?...................................2747.2.2. Những tài nguyên nào phải được chỉ định để sử dụng NIS?..............................................2757.2.3. Nên chạy một máy chủ chính NIS như thế nào?................................................................2767.2.4. Làm thế nào để cấu hình cho một máy chủ?......................................................................277

7.3. Các dịch vụ kết nối ở xa: telnet và ssh.......................................................................................2797.3.1. Telnet và telnetd..................................................................................................................2797.3.2 Trình biên dịch lệnh (shell) an ninh và SSH........................................................................280

7.4. Các dịch vụ truyền tệp: FTP ......................................................................................................2837.4.1. Máy trạm FTP (thông thường)............................................................................................2837.4.2. Các máy chủ FTP ...............................................................................................................284

7.5. Các dịch vụ trao đổi thông tin ở mức của người sử dụng..........................................................2867.5.1. Đại lý chuyển thư MTA (Mail Transport Agent)................................................................2867.5.2. Giao thức truy cập thông điệp Internet (IMAP).................................................................2877.5.3. Tin tức.................................................................................................................................2917.5.4. Word Wide Web (httpd)......................................................................................................292

7.6. Dịch vụ ủy quyền proxy: Squid..................................................................................................2987.6.1. Squid như một bộ tăng tốc cho http ...................................................................................2987.6.2. Squid như việc lưu trữ ủy quyền - (proxy - caching).........................................................299

7.7. OpenLDAP (LDAP)...................................................................................................................3017.7.1. Việc tạo và duy trì cơ sở dữ liệu.........................................................................................303

7.8. Các dịch vụ tệp (NFS)................................................................................................................3057.8.1. Máy chủ Wiki.....................................................................................................................306

Các hoạt động....................................................................................................................................308Thư mục tham khảo...........................................................................................................................309

8 Quản trị dữ liệu..................................................................................................................................310Giới thiệu...........................................................................................................................................3118.1. PostgreSQL................................................................................................................................312

8.1.1. Nên tạo DB như thế nào?....................................................................................................3128.1.2. Truy cập một DB như thế nào?...........................................................................................3138.1.3. Ngôn ngữ SQL....................................................................................................................3138.1.4. Cài đặt PostgreSQL............................................................................................................3158.1.5. Duy trì.................................................................................................................................3188.1.6. Pgaccess..............................................................................................................................320

8.2. MySQL.......................................................................................................................................3228.2.1. Cài đặt.................................................................................................................................3228.2.2. Sau cài đặt và xác minh......................................................................................................3238.2.3. Chương trình giám sát MySQL (máy trạm).......................................................................3248.2.4. Quản trị...............................................................................................................................3268.2.5. Các giao diện đồ họa...........................................................................................................327

8.3. Các hệ thống quản lý mã nguồn.................................................................................................3288.3.1. Hệ thống kiểm soát rà soát lại (RCS).................................................................................3288.3.2. Hệ thống phiên bản hiện hành (CVS).................................................................................3298.3.3. Các giao diện đồ họa...........................................................................................................333

Trang 16/471

Page 17: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.4. Subversion..................................................................................................................................335Các hoạt động....................................................................................................................................339Thư mục tham khảo...........................................................................................................................340

9 Quản trị an ninh..................................................................................................................................341Giới thiệu...........................................................................................................................................3429.1. Các dạng và các phương pháp tấn công.....................................................................................343

9.1.1. Các kỹ thuật được sử dụng trong các cuộc tấn công..........................................................3459.1.2. Các biện pháp đối phó........................................................................................................352

9.2. An ninh hệ thống........................................................................................................................3569.3. An ninh cục bộ............................................................................................................................357

9.3.1. Các trình khởi động (Bootloaders).....................................................................................3579.3.2. Mật khẩu và bóng (shadows)..............................................................................................3589.3.3. Suid và những bits gây khó...............................................................................................3599.3.4. Cho phép các máy chủ hosts ..............................................................................................3599.3.5. Các module PAM................................................................................................................3609.3.6. Những sửa đổi hệ thống......................................................................................................362

9.4. SELinux......................................................................................................................................3639.4.1. Kiến trúc.............................................................................................................................3669.4.2. Chỉ trích..............................................................................................................................369

9.5. An ninh mạng.............................................................................................................................3709.5.1. Máy trạm dịch vụ................................................................................................................3709.5.2. Máy chủ: inetd và xinetd....................................................................................................370

9.6. Dò tìm thâm nhập trái phép........................................................................................................3739.7. Bảo vệ bằng các trình lọc thông qua các trình bao bọc và các tường lửa..................................374

9.7.1. Các tường lửa......................................................................................................................3759.7.2. Bộ lọc mạng: IPtables (bảng IP).........................................................................................3769.7.3. Các gói và các tường lửa trong các phát tán.......................................................................3799.7.4. Những xem xét cuối cùng...................................................................................................379

9.8. Các công cụ an ninh...................................................................................................................3819.9. Phân tích các lưu ký logs............................................................................................................3849.10. Sách chỉ dẫn: các công cụ cho việc phân tích an ninh.............................................................386Các hoạt động....................................................................................................................................392Thư mục tham khảo...........................................................................................................................393

10 Cấu hình, tinh chỉnh và tối ưu hóa...................................................................................................394Giới thiệu...........................................................................................................................................39510.1. Những khía cạnh cơ bản...........................................................................................................396

10.1.1. Việc giám sát trên một UNIX System V...........................................................................39710.1.2. Tối ưu hóa hệ thống..........................................................................................................40410.1.3. Những tối ưu hóa chung...................................................................................................40810.1.4. Các cấu hình bổ sung........................................................................................................40810.1.5. Giám sát............................................................................................................................411

Các hoạt động ...................................................................................................................................419Thư mục tham chiếu..........................................................................................................................420

Trang 17/471

Page 18: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

11 Bó máy.............................................................................................................................................421Giới thiệu...........................................................................................................................................42211.1. Giới thiệu về Điện toán Hiệu năng Cao (HPC)........................................................................423

11.1.1. Beowulf.............................................................................................................................42411.1.2. Nên lập trình thế nào để tận dụng được điện toán đồng thời?..........................................427

11.2. OpenMosix...............................................................................................................................43911.3. Các siêu máy tính, điện toán lưới.............................................................................................441

11.3.1. Các kiến trúc điện toán khác nhau....................................................................................44111.3.2. Globus...............................................................................................................................44311.3.3. Phần mềm, cài đặt và quản trị Globus..............................................................................444

Các hoạt động ...................................................................................................................................446Thư mục tham khảo...........................................................................................................................447

Giấy phép tài liệu tự do GNU................................................................................................................456

Trang 18/471

Page 19: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1 Giới thiệu hệ điều hành GNU/Linux

Josep Jorba Esteve PID_00148470

Introduction to the GNU/Linux operating system

Josep Jorba Esteve PID_00148470

Trang 19/471

Page 20: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Các hệ điều hành GNU/Linux [Joh98] không còn là thứ mới mẻ nữa; chúng có một dải rộng lớn người sử dụng và chúng được sử dụng trong hầu hết các môi trường.

Thủa ban đầu của chúng là vào tháng 08/1991, khi một sinh viên người Phần Lan tên là Linus Torvalds đã công bố trong một danh sách thư điện tử rằng anh ta đã tạo ra hệ điều hành riêng của mình và anh ta đã đưa nó ra cộng đồng các lập trình viên để thử nghiệm và gợi ý cho những cải tiến để làm cho nó có khả năng sử dụng được nhiều hơn. Đây là gốc khởi thủy của nhân (kernel) của hệ điều hành mà sau này đã trở thành nổi tiếng là Linux.

Một cách riêng rẽ, Quỹ Phần mềm Tự do (FSF), thông qua dự án GNU của mình, đã làm ra những phần mềm có thể được sử dụng một cách tự do kể từ năm 1984. Richard Stallman (thành viên của FSF) đã coi phần mềm tự do (PMTD) mà mã nguồn của nó chúng ta có thể có được, nghiên cứu, sửa đổi và phân phối lại mà không có bổn phận phải trả tiền cho nó. Theo mô hình này, doanh nghiệp không phải dấu đi mã nguồn, mà có thể đưa vào các phần mềm bổ sung phụ thêm, chỉnh sửa phần mềm cho các khách hàng và các dịch vụ được bổ sung, như việc duy trì và huấn luyện người sử dụng (sự hỗ trợ mà chúng ta trao) hoặc ở dạng các tư liệu, những cuốn sách và các sách chỉ dẫn, hoặc các khóa huấn luyện.

Sự kết hợp của các phần mềm GNU và nhân Linux, là những gì đã mang lại cho chúng ta các hệ điều hành GNU/Linux ngày nay. Hiện tại, các phong trào nguồn mở, thông qua một loạt các tổ chức, như FSF, và các công ty đã tạo ra những phát tán Linux khác nhau (Red hat, Mandrake, SuSE...), bao gồm cả các công ty lớn mà họ đưa ra sự hỗ trợ, như HP, IBM hoặc Sun, đã thúc đẩy mạnh mẽ các hệ điều hành GNU/Linux và đặt chúng vào mức độ có khả năng cạnh tranh và vượt qua nhiều giải pháp đóng, sở hữu độc quyền hiện đang tồn tại.

Các hệ điều hành GNU/Linux không còn là mới mẻ nữa. Các phần mềm GNU đã bắt đầu từ giữa những năm 80, còn nhân Linux, vào đầu những năm 90. Và Linux dựa trên công nghệ được thử nghiệm với hơn 30 năm lịch sử của UNIX.

Trong phần giới thiệu chúng ta sẽ xem lại một số ý tưởng chung của các phong trào Phần mềm Nguồn mở (PMNM) và Phần mềm Tự do (PMTD), cũng như một chút về lịch sử của Linux và gốc gác chia sẻ ban đầu của nó với UNIX, từ đó nó đã hưởng lợi từ hơn 30 năm nghiên cứu qua các hệ điều hành.

Trang 20/471

Page 21: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.1. Phần mềm tự do và nguồn mở

Theo các phong trào của PMTD và PMNM [OSIc] [OSIb] (còn được biết như là mã mở hoặc phần mềm mở), chúng ta thấy một loạt các dạng khác nhau của phần mềm mà chúng chia sẻ nhiều ý tưởng chung.

Một sản phẩm phần mềm được coi là nguồn mở hàm ý khi ý tưởng chính là có khả năng truy cập được mã nguồn của nó, và để sửa đổi nó và phân phối lại nó như là đối tượng thích hợp cho một giấy phép nguồn mở để xác định ngữ cảnh pháp lý.

Ngược lại với một mã nguồn dạng sở hữu độc quyền, nơi mà nhà sản xuất (công ty phần mềm) sẽ khóa mã nguồn, dấu nó và hạn chế các quyền truy cập tới bản thân nó, không cho phép có khả năng có bất kỳ sửa đổi hay thay đổi nào mà không được nhà sản xuất thực hiện từ trước, thì nguồn mở đưa ra:

a) Sự truy cập tới mã nguồn, hoặc để nghiên cứu nó (ý tưởng cho các mục đích giáo dục) hoặc để sửa đổi nó, để sửa các lỗi, để thích nghi nó hoặc bổ sung thêm nhiều hơn các tính năng;

b) Phần mềm là miễn phí: thông thường, phần mềm này, hoặc ở dạng nhị phân hoặc dạng mã nguồn, có thể có được một cách miễn phí hoặc bằng một số tiền tượng trưng để bù đắp cho giá thành đóng gói và phần phối và giá trị gia tăng;

c) Các chuẩn mà ngăn cản các phần mềm độc quyền và sở hữu độc quyền, tránh sự phụ thuộc vào chỉ một sự lựa chọn nhà sản xuất phần mềm; điều này là quan trọng cho một tổ chức lớn, hoặc một công ty hoặc một nhà nước, mà không thể (hoặc không nên) đặt bản thân mình vào trong tay của một giải pháp đặc thù duy nhất và phụ thuộc hoàn toàn vào nó;

d) Một mô hình tiến bộ không dựa vào thông tin ẩn dấu mà vào việc chia sẻ kiến thức (như cộng đồng khoa học) sao cho sự tiến bộ là nhanh hơn, và với chất lượng là tốt hơn vì các quyết định sẽ được dựa trên sự đồng thuận của cộng đồng và không dựa vào những ý thích nhất thời của các công ty mà phát triển các phần mềm sở hữu độc quyền (PMSHĐQ).

Việc tạo ra các chương trình và phân phối chúng cùng với mã nguồn là không có gì mới. Kể từ thời kỳ đầu của công nghệ thông tin (CNTT) và Internet, mọi thứ đã được thực hiện theo cách này. Tuy nhiên, khái niệm của bản thân nguồn mở, định nghĩa của nó và việc phác thảo những điều kiện phải đáp ứng mới có từ giữa năm 1997.

Eric Raymond và Bruce Perens đã khuyến khích ý tưởng này. Raymond [Ray98] là tác giả của một bài luận có tên là Nhà thờ lớn và cái Chợ, thảo luận về các kỹ thuật phát triển phần mềm mà cộng đồng Linux sử dụng, được Linus Torvalds và cộng đồng GNU của FSF do Richard Stallman cầm đầu, dẫn dắt. Bruce Perens là người dẫn dắt dự án Debian, người đã làm việc để tạo ra một phát tán GNU/Linux mà đã hợp thành một thể thống nhất hoàn toàn với PMTD.

Trang 21/471

Lưu ý

Nhà thờ lớn và cái Chợ: http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/.

Page 22: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lưu ý

Hai trong số các cộng đồng quan trọng nhất là FSF, với dự án phần mềm GNU, và cộng đồng Nguồn Mở, với Linux như là dự án chủ chốt, thì GNU/Linux là kết quả của công việc kết hợp của chúng.

Sự phân biệt quan trọng giữa các cộng đồng này nằm ở các định nghĩa của PMNM và PMTD. [Deba] [PS02].

FSF là một tổ chức phi lợi nhuận được Richard Stallman thành lập, ông tin tưởng rằng việc nên đảm bảo các chương trình ai cũng có thể có được một cách miễn phí, truycập được một cách tự do để sử dụng sao cho mỗi cá nhân cảm thấy phù hợp. Khái niệm tự do đã gây ra một số dè dặt trong các công ty. Trong tiếng Anh, từ này có thể có nghĩa là “không có giá thành hoặc miễn phí” hoặc “không theo sự kiểm soát hoặc theo sức mạnh của người khác”. FSF đã thấy cả 2 vấn đề này, nhưng khó để bán 2 ý tưởng này cho các doanh nghiệp; câu hỏi chính là: “Chúng tôi có thể kiếm tiền với thứ này như thế nào?” Câu trả lời tới từ cộng đồng Linux (được Linus Torvalds dẫn dắt), khi họ muốn có thứ gì đó mà cộng động GNU và FSF còn chưa đạt được: một hệ điều hành tự do với mã nguồn sẵn sàng. Tại thời điểm đó cộng đồng này đã quyết định thống nhất một loạt các hoạt động trong phong trào PMTD theo một cái tên mới: PMNM.

Nguồn Mở đã được đăng ký như một giấy chứng nhận, mà các sản phẩm phần mềm nào tuân thủ với các đặc tả của giấy chứng nhận đó đều có thể gắn vào. Điều này đã không làm vui lòng tất cả mọi người và có những xu thế chia rẽ hoặc gây tranh cãi nhất định giữa 2 nhóm Nguồn Mở và FSF (với GNU), dù thực tế thì họ có nhiều thứ chung hơn là không.

Ở một mức độ nào đó, đối với những người bảo vệ PMTD (như FSF), thì nguồn mở là một bước sai lầm, vì nó có nghĩa là bán đi những lý tưởng của mình cho thị trường, để lại cánh cửa mở cho phần mềm đã từng là tự do sẽ trở thành sở hữu độc quyền. Những người ủng hộ nguồn mở thì thấy đây như một cơ hội để khuyến khích phần mềm mà nếu khác đi thì chỉ có thể được sử dụng với một thiểu số, mà qua sự chia sẻ và thăng hoa toàn cầu của nó, bao gồm cả những công ty mong muốn tham gia vào nguồn mở, họ tìm được sức mạnh đáng kể để thách thức phần mềm sở hữu độc quyền.

Tuy nhiên, ý tưởng được cả 2 phong trào theo đuổi là để gia tăng sử dụng PMTD, vì thế đều đưa ra giải pháp thay thế cho những giải pháp duy nhất mà các công ty lớn muốn áp đặt. Những khác biệt này là thực tế hơn nhiều.

Được thiết lập dựa trên các ý tưởng của cộng đồng nguồn mở, chúng ta đã đạt được tới điểm nơi mà chúng ta đã cần phải làm sáng tỏ những tiêu chí mà một sản phẩm phần mềm nên đáp ứng để đủ khả năng như một phần mềm nguồn mở. Chúng ta đã phải đặt nó vào định nghĩa của nguồn mở [OSIb], ban đầu đã được Bruce Perens viết vào tháng 06/1997 khi đáp lại các bình luận của các lập trình viên của phát tán Debian Linux, sau đó tổ chức Sáng kiến Nguồn Mở (OSI) đã sửa đổi lại (với những thay đổi nhỏ). OSI có trách nhiệm về việc kiểm soát định nghĩa và các giấy phép nguồn mở.

Lưu ý

Trang 22/471

Lưu ý

Xem định nghĩa ban đầu về Nguồn Mở tại: http://www.opensource.org/docs/definition.php, còn bản sửa lại tại: http://www.opensource.org/.

Page 23: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Nguồn mở được điều chỉnh bằng một định nghĩa, được sử dụng như là nền tảng cho việc phác thảo các giấy phép phần mềm nguồn mở.

Một tóm tắt nhỏ (diễn giải) của định nghĩa này: PMNM [OSIb], hoặc phần mềm với mã nguồn mở, phải thỏa mãn các yêu cầu sau đây:

1) Phần mềm có thể sao chép được, cho hoặc bán được cho các bên thứ ba, mà không đòi hỏi bất kỳ một sự trả công nào cho nó.

2) Chương trình phải bao gồm mã nguồn và phải cho phép phân phối ở dạng mã nguồn cũng như ở dạng được biên dịch. Hoặc trong mọi sự việc, phải có một phương tiện được xuất bản tốt cho việc có được mã nguồn (như việc tải về thông qua Internet, ví dụ thế). Các dạng vật trung gian hoặc gây bối rối có chủ tâm đối với mã nguồn là không được phép. Giấy phép này đảm bảo rằng những thay đổi có thể được thực hiện.

3) Giấy phép phần mềm này cho phép những sửa đổi và các công việc dẫn xuất, và phải cho phép chúng được phân phối theo cùng những điều khoản như giấy phép của phần mềm ban đầu. Nó cho phép mã nguồn ban đầu được sử dụng lại.

4) Tính toàn vẹn của mã nguồn của tác giả có thể được yêu cầu, nói cách khác, những sửa đổi có thể được trình bày ở dạng các bản vá đối với mã nguồn ban đầu, hoặc có thể được yêu cầu mang một cái tên khác hoặc số phiên bản khác so với bản gốc ban đầu. Điều này bảo vệ cho những sửa đổi nào đó có thể được cho là của tác giả. Điểm này phụ thuộc vào những gì giấy phép phần mềm yêu cầu.

5) Giấy phép này phải không phân biệt đối với bất kỳ người hoặc nhóm người nào. Việc truy cập tới phần mềm phải không bị hạn chế. Trong một số trường hợp có thể có những hạn chế hợp pháp, như trong trường hợp nước Mỹ đối với việc xuất khẩu công nghệ cho các quốc gia của thế giới thứ 3. Nếu có những hạn chế dạng này, thì chúng phải được nêu ra.

6) Không có sự phân biệt đối xử đối với những lĩnh vực nỗ lực. Phần mềm có thể được sử dụng trong bất kỳ lĩnh vực nỗ lực nào, ngay cả nếu nó không được thiết kế cho lĩnh vực đó. Sử dụng theo cách thương mại là được phép; không ai có thể ngăn cản được phần mềm khỏi được sử dụng cho các mục đích thương mại.

7) Giấy phép áp dụng cho mỗi người nhận được chương trình.

8) Nếu phần mềm này tạo nên một phần của một sản phẩm lớn hơn, thì sản phẩm lớn hơn phải duy trì giấy phép y hệt này. Điều này làm cho chắc chắn là các phần đó không bị tách biệt ra để tạo thành PMSHĐQ (theo một cách thức không thể kiểm soát được). Trong trường hợp của PMSHĐQ, nó phải thông báo rằng nó chứa các phần (tuyên bố các phần nào) của PMNM.

9) Giấy phép này phải không hạn chế bất kỳ phần mềm được kết hợp hoặc được phân phối theo một cách kết hợp nào, nói cách khác, sự kết hợp của nó sẽ không hành động như một rào cản cho sản phẩm phần mềm được phân phối một cách phối hợp khác. Đây là một vấn đề còn gây tranh cãi vì nó dường như đối nghịch với điểm trước, cơ bản nó nói rằng bất kỳ ai cũng có thể lấy PMNM và bổ sung nó vào phần mềm của riêng họ mà điều này không ảnh hưởng tới các điều kiện giấy phép của nó (ví dụ sở hữu độc quyền), dù, theo điểm trước, có thể phải thông báo rằng có những phần của nguồn mở.

10) Giấy phép phải là trung lập về công nghệ, nghĩa là không hạn chế đối với những thiết bị hoặc hệ điều hành nhất định nào đó. Không được phép nhắc tới những phương tiện phân phối độc nhất hoặc

Trang 23/471

Page 24: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

những khả năng loại trừ nào đó. Ví dụ, theo giấy phép nguồn mở, không được phép hạn chế phân phối tới CD, FTP hoặc dạng web.

Định nghĩa này của nguồn mở bản thân nó không phải là một giấy phép phần mềm, mà là một đặc tả của những yêu cầu mà một giấy phép PMNM phải thỏa mãn.

Để được coi là một chương trình nguồn mở, thì giấy phép của chương trình phải tuân thủ với những đặc tả bên trên. OSI có trách nhiệm kiểm tra các giấy phép đáp ứng các đặc tả này. Trên trang web về Giấy phép Nguồn Mở bạn có thể thấy danh sách các giấy phép [OSIa], trong đó một trong những giấy phép được sử dụng rộng rãi nhất là GPL (Giấy phép Công cộng Chung GNU).

Theo GPL, phần mềm có thể được sao chép và sửa đổi, nhưng những sửa đổi phải được công khai theo cùng giấy phép này, và nó ngăn cản mã nguồn trở thành trộn được với mã nguồn sở hữu độc quyền để tránh việc mã nguồn sở hữu độc quyền chiếm lấy các phần của nguồn mở. Có giấy phép LGPL, thực tế là tương tự ngoại trừ việc phần mềm với giấy phép này có thể được tích hợp vào trong PMSHĐQ. Ví dụ kinh điển là thư viện C của Linux (với giấy phép LGPL); nếu nó là GPL, thì chỉ PMTD có thể được phát triển, với LGPL thì nó có thể được sử dụng cho việc phát triển PMSHĐQ.

Nhiều dự án PMTD, hoặc với một phần mã nguồn của PMNM và một phần của PMSHĐQ, có giấy phép của riêng nó: Apache (dựa trên BSD), Mozilla (MPL và NPL của Netscape)... Về cơ bản, khi nói tới việc xác định phần mềm như là nguồn mở thì có thể tạo ra giấy phép của riêng mình mà tuân thủ với định nghĩa ở trên (của nguồn mở) hoặc có thể chọn để cấp phép cho phần mềm theo một giấy phép đã được thiết lập, hoặc trong trường hợp của GPL, chúng ta có bổn phận đối với giấy phép của chúng ta cũng phải là GPL.

Đã nghiên cứu những khái niệm của nguồn mở và các giấy phép của nó, cần xem ở mức độ nào nó có thể có lợi nhuận cho một công ty để làm việc hoặc sản xuất nguồn mở. Nếu nó không lôi cuốn đối với các công ty, thì chúng ta có thể đánh mất cả một khách hàng tiềm năng và một trong những nhà sản xuất phần mềm hàng đầu cùng một lúc.

Nguồn mở cũng lôi cuốn đối với các công ty, với một mô hình kinh doanh nhấn mạnh tới giá trị gia tăng của sản phẩm.

Nguồn mở đưa ra một loạt lợi ích lôi cuốn mà các công ty có quan tâm:

a) Đối với các công ty phát triển phần mềm, nó đặt ra một vấn đề: làm thế nào để kiếm tiền mà không có việc bán một sản phẩm. Nhiều tiền được chi cho việc phát triển một chương trình và sau đó lợi nhuận phải được thực hiện ở trên đỉnh. Vâng, có một câu trả lời không đơn giản, không có khả năng với bất kỳ dạng phần mềm nào, sự hoàn vốn nằm ở dạng phần mềm có thể tạo nên lợi nhuận nằm ngoài việc chỉ bán hàng. Thông thường, một nghiên cứu sẽ được thực hiện như đối với việc liệu ứng dụng này sẽ có trở thành có thể kiếm được lợi nhuận hay không nếu được phát triển như nguồn mở (hầu hết sẽ), dựa trên những tiền đề rằng chúng ta sẽ có một giá thành phát triển được giảm (cộng đồng có thể giúp với điều này rất nhanh chóng) và tính tới số lượng những người sử dụng mà nguồn mở sẽ cung cấp, cũng như những nhu cầu mà họ sẽ có cho những dịch vụ hỗ trợ hoặc tài liệu của chúng ta. Nếu cán cân là dương, thì nó sẽ là có thể trụ vững được để làm mà không có doanh số từ bán hàng.

Trang 24/471

Lưu ý

Các giấy phép nguồn mở: http://www.opensource.org/licenses.html

Page 25: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

b) Gia tăng số lượng người sử dụng

c) Có được tính mềm dẻo phát triển lớn hơn, càng nhiều người hơn mà họ tham gia vào, thì càng nhiều người hơn có khả năng dò tìm ra các lỗi.

d) Doanh số sẽ hầu như tới từ sự hỗ trợ, huấn luyện người sử dụng và duy trì.

e) Các công ty sử dụng phần mềm cần nắm lấy nhiều thuộc tính để xem xét trước khi chọn một phần mềm cho việc quản lý những nhiệm vụ, như là sự thực thi, độ tin cậy, an ninh, tính có thể mở rộng phạm vi và giá thành tài chính. Và dù có vẻ như là nguồn mở đã là một sự lựa chọn được minh chứng trên nền tảng giá thành, thì phải nói rằng có PMNM có khả năng cạnh tranh với (hoặc ngay cả vượt trội) PMSHĐQ về bất kỳ thuộc tính nào. Hơn nữa, cần cẩn thận với việc chọn những lựa chọn hoặc những hệ thống sở hữu độc quyền của một nhà cung cấp duy nhất; không thể chỉ tựa vào họ (có thể nhớ tới trường hợp như định dạng beta của Sony cho video chống lại VHS, hoặc kiến trúc MicroChannel của IBM cho các máy tính cá nhân PC). Cần tránh sử dụng những độc quyền với những rủi ro có liên quan của chúng: thiếu cạnh tranh về giá thành, các dịch vụ đắt giá, sự duy trì đắt giá, ít (hoặc không có) cơ hội lựa chọn...

f) Đối với những người sử dụng cá nhân nó đưa ra một loạt lớn các phần mềm được áp dụng cho việc sử dụng chung thông thường, khi mà nhiều phần mềm đã được hiểu và được triển khai với những người mà họ đã muốn thực hiện các nhiệm vụ y hệt nhưng không thể tìm thấy các phần mềm phù hợp. Thông thường, trong trường hợp của một người sử dụng ở nhà, một tham số rất quan trọng là giá thành phần mềm; những thống kê gần đây chỉ ra những mức 60-70% các bản sao bất hợp pháp là ở nhà. Người sử dụng cảm thấy rằng chỉ bằng việc sở hữu một máy tính cá nhân ở nhà mà họ được quyền sử dụng các phần mềm tại một số quốc gia cho nó. Trong những trường hợp này, chúng ta đang làm việc với những tình huống bất hợp pháp, mà dù chúng có thể không bị kết án, thì có thể một ngày nào đó, hoặc được toan tính sẽ bị kiểm soát thông qua các hệ thống giấy phép (hoặc những kích hoạt sản phẩm). Hơn nữa, điều này có những ảnh hưởng tiêu cực không trực tiếp lên PMTD, vì nếu người sử dụng đang sử dụng PMSHĐQ ở khắp mọi nơi, thì nó ép từng người mà muốn giao tiếp với họ, hoặc các ngân hàng, các công ty hoặc các cơ quan hành chính nhà nước, cũng phải sử dụng các PMSHĐQ y hệt như vậy, và họ sẽ phải trả tiền cho các giấy phép sản phẩm. Một trong những cuộc chiến quan trọng nhất của PMTD là nắm bắt được những người sử dụng ở gia đình.

g) Cuối cùng, các quốc gia, như một trường hợp đặc biệt, có thể giành được những lợi ích quan trọng từ PMNM, vì nó đưa ra cho họ những phần mềm có chất lượng với các giá thành nực cười so với giá thành khổng lồ của các giấy phép cho các PMSHĐQ. Hơn nữa, PMNM có thể dễ dàng tích hợp những khía cạnh văn hóa (của mỗi quốc gia) như là ngôn ngữ, ví dụ thế. Trường hợp cuối là khá có vấn đề, vì các nhà sản xuất PMSHĐQ từ chối thích nghi những ứng dụng của họ tại một số khu vực - các quốc gia nhỏ với ngôn ngữ riêng của họ - hoặc yêu cầu phải trả tiền để làm việc đó.

Trang 25/471

Lưu ý

Các bản sao nội bộ bất hợp pháp đôi khi cũng được biết tới như là các bản sao ăn cắp.

Page 26: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.2. Unix. Một chút về lịch sử

Như một người tiền nhiệm đối với các hệ điều hành GNU/Linux của chúng ta [Sta02], hãy nhớ lại một chút về lịch sử của UNIX [Sal94]. Ban đầu, Linux đã được thừa nhận như một bản nhái của Minix (một triển khai cài đặt hàn lâm của UNIX trên máy tính cá nhân) và đã sử dụng một số ý tưởng được phát triển trong UNIX sở hữu độc quyền; nhưng, đổi lại, nó đã được phát triển theo nguồn mở, và với sự tập trung vào các máy tính cá nhân ở nhà. Trong phần nói về UNIX và trong phần tiếp theo nói về các hệ điều hành GNU/Linux, chúng ta sẽ thấy cách mà sự tiến hóa này đã mang tới cho chúng ta các hệ điều hành GNU/Linux hiện nay, mà các hệ thống này có khả năng cạnh tranh được với bất kỳ UNIX sở hữu độc quyền nào và chúng luôn sẵn sàng với một số lượng lớn các kiến trúc phần cứng, từ máy tính cá nhân đơn giản cho tới các siêu máy tính.

Linux có thể được sử dụng trên một dải lớn các máy tính. Trong danh sách TOP500, có thể thấy một vài siêu máy tính với GNU/Linux (xem danh sách trên trang web top500.org): ví dụ, MareNostrum, tại Trung tâm Siêu máy tính của Barcelona, một bó máy, được IBM thiết kế, với 10240 CPU PowerPC và với hệ điều hành GNU/Linux (được thích nghi theo những yêu cầu của các máy tính này). Từ danh sách chúng ta có thể thấy rằng tổng số các siêu máy tính với GNU/Linux chiếm tới 75%.

UNIX đã bắt đầu vào năm 1969 (chúng ta bây giờ hầu như có 40 năm lịch sử) tại Bell Telephone Labs (BTL) của AT&T. Những thứ này đã chỉ rút lui khỏi một dự án có tên là MULTICS, đã được thiết kế để tạo ra một hệ điều hành sao cho một máy tính lớn có thể hỗ trợ hàng ngàn người sử dụng cùng một lúc. BTL, General Electric, và MIT đã tham gia vào dự án này. Nhưng nó đã thất bại, một phần, vì đã quá tham vọng khi đó.

Trong khi dự án này đang triển khai, thì 2 kỹ sư của BTL từng tham gia vào MULTICS: Ken Thompson và Dennis Ritchie, đã tạo ra máy tính DEC PDP7 chưa ai từng sử dụng, chỉ có một trình dịch mã và chương trình tải. Thompson và Richie đã phát triển như những phần thử nghiệm (và thường trong thời gian rỗi của họ) của UNIX, một trình dịch mã (của mã máy) và nhân phôi thai của hệ điều hành.

Cùng năm đó, 1969, Thompson đã có ý tưởng viết một hệ thống tệp cho nhân được tạo ra, theo cách mà các tệp có thể được lưu trữ ở một dạng có trật tự trong một hệ thống các thư mục có tôn ti trật tự. Tiếp sau hàng loạt những tranh luận lý thuyết (đã diễn ra khoảng hơn 2 tháng) thì hệ thống này đã được triển khai chỉ trong một vài ngày. Như là sự tiến bộ đã được thực hiện trên thiết kế của hệ thống, và một ít các kỹ sư nữa của BTL đã tham gia vào, máy ban đầu đã trở nên quá nhỏ, và họ đã nghĩ tới việc yêu cầu cho ra một cái mới (trong những ngày đó chúng có giá khoảng 100,000 USD, là một sự đầu tư đáng kể). Họ đã phải xin lỗi (vì hệ thống UNIX này là sự phát triển trong thời gian rỗi) và họ đã nói họ muốn tạo ra một bộ xử lý văn bản mới (một ứng dụng đã tạo ra tiền khi đó), nên họ đã được chấp nhận đề nghị mua một chiếc PDP11.

UNIX đã có từ năm 1969, với hơn 30 năm các công nghệ được phát triển và sử dụng trên tất cả

Trang 26/471

Lưu ý

Chúng ta có thể thấy danh sách TOP500 của những siêu máy tính nhanh nhất tại: http://www.top500.org

Page 27: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các dạng hệ thống.

Khi máy tính tới, chúng đã chỉ đưa ra CPU và bộ nhớ, mà không có đĩa hoặc hệ điều hành. Thompson, không thể chờ đợi, đã thiết kế một đĩa RAM trong bộ nhớ và đã sử dụng một nửa bộ nhớ này như một cái đĩa và nửa khác cho hệ điều hành mà ông đã thiết kế. Một khi đĩa đã có, họ đã tiếp tục làm việc trên cả UNIX và đã hứa hẹn cho trình xử lý văn bản (sự xin lỗi). Trình xử lý văn bản từng là một thành công (nó là Troff, một ngôn ngữ soạn thảo sau này được sử dụng cho việc tạo ra các trang chính của UNIX), và BTL đã bắt đầu trở thành nơi sử dụng đầu tiên đối với UNIX.

Vào lúc đó, triết lý của UNIX đã bắt đầu nổi lên [Ray02a]:

• Viết các chương trình làm một thứ gì đó và làm thứ đó tốt được.

• Viết các chương trình để làm việc cùng nhau được.

• Viết các chương trình để quản lý được các dòng văn bản.

Đặc tính quan trọng khác, UNIX là một trong những hệ thống đầu tiên được thừa nhận là độc lập với kiến trúc phần cứng, và điều này đã cho phép nó được tải lên một số lượng lớn các kiến trúc phần cứng khác nhau.

Vào tháng 11/1971, vì có những người sử dụng bên ngoài, nên nhu cầu viết tài liệu những gì đã được thực hiện xong trong Sách chỉ dẫn của Lập trình viên UNIX đã được Thompson và Richie ký duyệt. Trong lần xuất bản thứ 2 (tháng 06/1972), được biết như là V2 (xuất bản của các sách chỉ dẫn này đã được thực hiện để tương đồng với số phiên bản của UNIX), biết rằng số các cài đặt triển khai UNIX đã đạt con số 10. Và con số này đã tiếp tục gia tăng tới khoảng 50 trong V5.

Rồi, cuối năm 1973, được quyết định cho trình bày các kết quả tại một hội nghị về các hệ điều hành. Tiếp sau đó, một loạt các trung tâm CNTT và các trường đại học đã yêu cầu các bản sao của UNIX. AT&T đã không đưa ra được sự hỗ trợ hoặc duy trì cho UNIX, có nghĩa là những người sử dụng đã phải tập hợp lại và chia sẻ kiến thức của họ bằng việc hình thành ra các cộng đồng những người sử dụng UNIX. AT&T đã quyết định nhượng lại UNIX cho các trường đại học, nhưng không đưa ra cho họ sự hỗ trợ hoặc sửa các lỗi cho họ. Những người sử dụng đã bắt đầu chia sẻ những ý tưởng, thông tin về chương trình, các lỗi ... của họ. Họ đã tạo ra một hội gọi là USENIX, nghĩa là những người sử dụng UNIX. Cuộc gặp mặt lần đầu tiên của họ vào tháng 05/1974 có khoảng 1 tá người tham dự.

Một trong những đại học đã có một giấy phép UNIX là Đại học Berkeley, California, nơi mà Ken Thompson đã nghiên cứu. Trong năm 1975, Thompson đã trở lại Berkeley như một giáo viên mang theo cùng với ông là phiên bản mới nhất của UNIX. Hai sinh viên mới tốt nghiệp, Chuck Haley và Bill Joy (bây giờ là một trong những phó chủ tịch của Sun Microsystems), đã tham gia cùng với ông và đã bắt đầu làm việc cùng nhau trên một triển khai cài đặt UNIX.

Một trong những thứ đầu tiên mà họ đã thất vọng là các trình soạn thảo; Joy đã làm ra một trình soạn thảo gọi là EX, cho tới khi chuyển nó sang VI, một trình soạn thảo trực quan toàn màn hình. Và 2 người đã phát triển một trình biên dịch của ngôn ngữ Pascal, họ đã bổ sung vào UNIX. Đã có một số

Trang 27/471

Lưu ý

Xem: http://www.usenix.org/

Page 28: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

lượng nhất định nào đó đòi hỏi sự triển khai cài đặt UNIX này, và Joy đã bắt đầu sản xuất nó như là BSD (Berkeley Software Distribution), Phát tán Phần mềm của Berkeley.

BSD (trong năm 1978) đã có một giấy phép đặc biệt về giá thành của nó: được nói rằng nó đã tương ứng với giá thành của vật trung chuyển và phân phối đã có tại thời điểm đó. Vì thế, những người sử dụng mới đã dừng tiến hành một số thay đổi hoặc kết hợp thêm những tính năng, bán những bản sao làm lại của họ và sau một khoảng thời gian nào đó, những thay đổi đã được kết hợp vào phiên bản sau của BSD.

Joy cũng đã đóng góp thêm một ít vào công việc của ông trên trình soạn thảo vi, như việc quản lý các máy gõ văn bản đầu cuối theo một cách mà trình soạn thảo từng là độc lập với máy đầu cuối nơi mà nó đang được sử dụng; ông đã tạo ra hệ thống TERMCAP như một giao diện máy đầu cuối chung với các trình điều khiển cho từng máy đầu cuối đặc thù, sao cho các chương trình có thể chạy được dù các máy đầu cuối sử dụng giao diện này.

Bước tiếp sau là thích nghi nó cho các kiến trúc khác nhau. Cho tới năm 1977, chỉ có thể chạy được trên các máy PDP; Những thích nghi của năm đó đã được thực hiện cho các máy khi đó như là Interdata và IBM, UNIX phiên bản 7 (V7 vào tháng 06/1979) là phiên bản khả chuyển đầu tiên. Phiên bản này đã đưa ra nhiều cải tiến, vì nó đã đưa vào: awk, lint, make, uucp; sách chỉ dẫn đã có 400 trang (cộng với 2 phụ lục mỗi phụ lục 400 trang). Nó cũng đã đưa vào trình biên dịch C được thiết kế tại BTL từ Kernighan và Ritchie, đã được tạo ra để viết lại hầu hết cho UNIX, ban đầu trong assembler và sau đó trong C với các phần của assembler mà chỉ phụ thuộc vào kiến trúc. Cũng được đưa vào là một bó được cải tiến (bó Bourrne) và các lệnh như là: find, cpio và expr.

Nền công nghiệp UNIX cũng đã bắt đầu tăng trưởng, và các phiên bản UNIX (các triển khai cài đặt) đã bắt đầu xuất hiện từ các công ty như: Xenix, một sự hợp tác giữa Microsoft - trong những ngày đầu của hãng cũng đã làm việc với các phiên bản UNIX - với SCO cho các máy Intel 8086 (máy tính cá nhân PC IBM đầu tiên); những phiên bản mới của BSD từ Berkeley...

Tuy nhiên, một vấn đề mới đã xuất hiện khi AT&T đã cho rằng UNIX là một sản phẩm thương mại có giá trị, giấy phép V7 đã cấm nghiên cứu nó trong các cơ quan hàn lâm để bảo vệ bí mật thương mại của nó. Cho tới thời điểm đó nhiều trường đại học đã sử dụng mã nguồn của UNIX để dạy về các hệ điều hành, và họ đã dừng sử dụng nó để chỉ dạy lý thuyết.

Tuy nhiên, mọi người đã tìm ra cách của riêng họ để giải quyết vấn đề này. Tại Amsterdam, Andrew Tanenbaum (tác giả nổi tiếng của các sách lý thuyết về các hệ điều hành) đã quyết định viết một hệ điều hành mới tương thích UNIX mà không sử dụng một dòng mã lệnh nào của AT&T; ông đã gọi hệ điều hành mới này là Minix. Đây là những gì có thể sau này được một sinh viên người Phần Lan sử dụng trong năm 1991 để tạo ra phiên bản UNIX riêng của anh ta, mà anh ta đã gọi nó là Linux.

Bill Joy, người vẫn còn phát triển BSD tại Berkeley (đã ở phiên bản 4.1), đã quyết định chuyển tới một công ty mới là Sun Microsystems, nơi ông đã hoàn tất công việc trên BSD 4.2, có thể sau này được sửa đổi để tạo ra UNIX của Sun, SunOS (khoảng năm 1983). Mỗi công ty đã bắt đầu phát triển các phiên bản riêng của mình: IBM đã phát triển AIX, DEC – Ultrix, HP – HPUX, Microsoft/SCO – Xenix, … Tới năm 1980, UNIX đã bắt đầu như một đầu tư thương mại, AT&T đã tung ra một phiên bản mới nhất gọi là UNIX System V (SV), trên đó cũng như trên BSD 4.x, UNIX hiện hành được dựa vào, hoặc trên BSD hoặc nhánh của System V. SV đã được làm lại vài lần, và, ví dụ, SV phiên bản 4 từng là một trong

Trang 28/471

Page 29: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

những phiên bản quan trọng nhất. Kết quả của những phiên bản mới nhất này tất cả ít nhiều là những hệ thống UNIX đang tồn tại đã được thích nghi cho nhau; trong thực tế chúng là những phiên bản của Hệ thống V R4 của AT&T hoặc BSD của Berkeley, được từng nhà sản xuất thích nghi. Một số nhà sản xuất chỉ định hoặc UNIX của họ như một BSD hoặc dạng SV, nhưng trong thực tế tất cả họ có một chút của nhau, vì sau này một số chuẩn của UNIX đã được thiết kế để cố gắng hài hòa chúng; trong số chúng, chúng ta thấy IEEE POSIX, UNIX97, FHS...

Qua thời gian, hệ thống UNIX chia thành vài nhánh, trong đó có 2 nhánh chính là UNIX của AT&T và hệ thống V (System V), và BSD của Đại học Berkeley, California. Hầu hết các hệ thống UNIX hiện hành là được dựa trên một trong hai thứ này, hoặc là sự pha trộn giữa 2 thứ này.

Hình 1. Tóm tắt lịch sử những phiên bản khác nhau của UNIX.

Tuy nhiên, khi đó, AT&T (SVR4) đang trải qua việc kiện tụng pháp lý như một nhà độc quyền về điện thoại (nó là công ty dẫn đầu, nếu không nói là duy nhất, công ty điện thoại tại Mỹ), bị ép phải chia thành vài công ty nhỏ hơn, thì các quyền cho UNIX bắt đầu nhảy giữa những người chủ: năm 1990 nó đã được chia sẻ các quyền 50/50 với Quỹ Phần mềm Mở (OSF) và UNIX Quốc tế (UI), sau đó, các Phòng thí nghiệm Hệ thống UNIX (USL), đã tố cáo Đại học Berkeley về những bản sao BSD của nó, nhưng đã thất bại, vì giấy phép gốc ban đầu đã không áp đặt bất kỳ quyền sở hữu nào lên mã nguồn UNIX. Sau này, các quyền đối với UNIX đã được bán cho Novell, nó đã nhượng lại một phần cho SCO, và như hôm nay còn chưa rõ ai sở hữu chúng: họ bị kêu thông qua các mặt trận khác nhau với Novell, OSF và SCO. Một ví dụ gần đây về vấn đề này là trường hợp của SCO, đã khởi xướng một vụ kiện chống lại IBM vì theo SCO, nó đã nhượng lại các phần của mã nguồn UNIX cho các phiên bản

Trang 29/471

Page 30: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

của nhân Linux, được cho là đưa vào một số mã nguồn UNIX gốc. Kết quả như hôm nay là vấn đề vẫn ở tòa, với SCO đã biến thành một kẻ hạ đẳng của nền công nghiệp CNTT đe dọa Linux, IBM và những người sử dụng UNIX khác, với sự khẳng định rằng họ sở hữu các quyền gốc đối với UNIX và rằng mỗi người đều phải trả tiền cho họ. Chúng ta sẽ phải xem vụ kiện này tiến hóa thế nào, và vấn đề về các quyền của UNIX cùng với nó.

Kịch bản hiện hành với UNIX đã thay đổi nhiều kể từ khi Linux xuất hiện vào năm 1991, khi từ những năm 1995-1999 nó đã trở thành một giải pháp thay thế nghiêm chỉnh cho các hệ thống UNIX sở hữu độc quyền, nhờ vào số lượng lớn các nền tảng phần cứng mà nó hỗ trợ và sự hỗ trợ mạnh mẽ cho sự tiến bộ của nó từ cộng đồng quốc tế và các công ty. Những phiên bản sở hữu độc quyền khác nhau của UNIX tiếp tục sống sót được trong thị trường, vì sự thích nghi của chúng đối với các môi trường công nghiệp hoặc vì nó đang là hệ điều hành tốt nhất trong thị trường, hoặc vì có những nhu cầu có thể chỉ được bao trùm với UNIX và phần cứng tương ứng. Hơn nữa, một số UNIX sở hữu độc quyền còn tốt hơn cả GNU/Linux về độ tin cậy và tốc độ thực thi dù khoảng cách là nhỏ mọi lúc, vì các công ty với các hệ thống UNIX sở hữu độc quyền của riêng họ đang chỉ ra sự quan tâm ngày càng lớn trong GNU/Linux và đưa ra một số phát triển của riêng họ để đưa vào trong Linux. Chúng ta có thể mong đợi ít nhiều sự tuyệt chủng chậm chạp của các phiên bản UNIX sở hữu độc quyền hướng tới những phát tán dựa trên Linux từ các nhà sản xuất được thích nghi cho trang thiết bị của họ.

Xem qua các công ty này:

• Sun: hãng đưa ra một triển khai cài đặt UNIX là Solaris (tiến hóa của SunOS). Nó đã bắt đầu như một hệ thống BSD, nhưng bây giờ nó hầu như là System V với những phần của BSD; thường được sử dụng trong các máy của Sun với một kiến trúc SPARC, và trong các máy tính có nhiều vi xử lý (tới 64 vi xử lý). Chúng khuyến khích GNU/Linux như là một môi trường phát triển Java và có một phát tán GNU/Linux được biết tới là Java Desktop System (Hệ thống máy để bàn Java), đã được chấp nhận một cách rộng rãi ở một số quốc gia. Hơn nữa, nó đã bắt đầu sử dụng GNOME như là một môi trường đồ họa, và đưa ra sự hỗ trợ tài chính cho một loạt các dự án như Mozilla, GNOME và OpenOffice. Cũng nên nhắc tới sáng kiến của hãng với phiên bản mới nhất của hãng về Solaris UNIX, hầu như giải phóng toàn bộ mã nguồn của nó trong phiên bản Solaris 10. Việc tạo ra một cộng đồng cho các kiến trúc của Intel và SPARC, gọi là OpenSolaris, đã làm cho có thể tạo ra những phát tán Solaris tự do. Trong một lưu ý riêng rẽ, chúng ta nên nhắc tới những sáng kiến gần đây (2006) giải phóng nền tảng Java theo các giấy phép GPL, như dự án OpenJDK.

• IBM: Hãng có phiên bản UNIX sở hữu độc quyền của mình là AIX, mà sống sót được trong một số phân khúc máy trạm và máy chủ của hãng. Cùng lúc, hãng chắc chắn hỗ trợ cộng đồng nguồn mở, bằng việc khuyến khích phát triển các môi trường tự do (eclipse.org) và các công nghệ Java cho Linux, hãng tích hợp Linux vào trong các máy tính lớn của hãng và thiết kế các chiến dịch marketing để thúc đẩy Linux. Hãng cũng có ảnh hưởng trong cộng đồng vì sự bảo vệ về pháp lý của hãng chống lại SCO, mà tố cáo hãng vi phạm sở hữu trí tuệ khi viện lý rằng hãng đã kết hợp những yếu tố của UNIX vào trong GNU/Linux.

Trang 30/471

Lưu ý

Nhiều công ty với UNIX sở hữu độc quyền tham gia vào GNU/Linux và đưa ra một số phát triển của họ cho cộng đồng.

Page 31: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• HP: hãng có HPUX UNIX của riêng mình, nhưng đưa ra sự hỗ trợ mạnh mẽ cho Linux, cả ở dạng mã nguồn mở và bằng việc cài đặt Linux lên các máy tính. Được cho là công ty đã kiếm được nhiều tiền nhất với Linux.

• SGI: Silicon Graphics có một hệ thống UNIX được biết tới là IRIX cho các máy đồ họa của mình, nhưng sau này có xu hướng bán các máy này với Windows, và có lẽ một số với Linux. Hãng này từng trải qua những khó khăn và suýt phá sản. Hãng đưa ra sự hỗ trợ cho cộng đồng Linux trong OpenGL (công nghệ đồ họa 3D), những hệ thống tệp và kiểm soát thiết bị ngoại vi khác.

• Apple: đã ra nhập thế giới UNIX gần đây (trong giữa những năm 90), khi hãng đã quyết định thay thế hệ điều hành của hãng bằng một phương án UNIX. Nhân được biết như là Darwin có xuất xứ từ BSD 4.4; nhân nguồn mở này cùng với một số giao diện đồ họa rất mạnh là những gì mà hệ điều hành Mac OS X của Apple có. Ngày nay được xem là một trong những UNIX tốt nhất và, ít nhất, một trong những sự quyến rũ nhất về khía cạnh đồ họa của nó. Hãng cũng sử dụng số lượng lớn các phần mềm GNU như những tiện ích hệ thống.

• Các nhà phân phối Linux: cả thương mại và hàn lâm, chúng ta sẽ nhắc tới các công ty như Red Hat, SuSE, Mandriva (trước kia là Mandrake), và những tổ chức phi thương mại như Debian … Chúng (các phát tán GNU/Linux hầu như phổ biến nhất), với sự hỗ trợ của cộng đồng Linux và FSF với phần mềm GNU, cộng với việc nhận được những đóng góp từ các công ty nêu ở trên.

• BSD: dù nó không là một công ty, thì các phiên bản BSD cũng tiếp tục phát triển, cũng như các dự án nhái BSD khác như là FreeBSD, NetBSD, OpenBSD (UNIX được cho là an ninh nhất), TrustedBSD... Sớm muộn gì thì những hệ điều hành này cũng sẽ tạo ra trong những cải tiến hoặc kết hợp về phần mềm với Linux. Hơn nữa, một đóng góp quan trọng là nhân Darwin có xuất xứ từ BSD 4.4, mà Apple đã phát triển như là nhân Nguồn Mở của hệ điều hành Mac OS X của hãng Apple.

• Microsoft: bỏ qua việc ngăn trở sự phát triển của UNIX và GNU/Linux, bằng việc thiết lập những trở ngại thông qua tính không tương thích giữa các công nghệ khác nhau, hãng không có sự tham gia trực tiếp nào trong thế giới của UNIX/Linux. Tuy nhiên, trong những ngày đầu hãng đã phát triển Xenix (1980) cho các máy tính cá nhân PC, dựa trên một giấy phép UNIX của AT&T, mà mặc dù không được bán trực tiếp thì cũng được bán thông qua các trung gian, như SCO, mà đã bị kiểm soát vào năm 1987, và đã đổi tên thành SCO UNIX (1989). Như một lưu ý bên lề, sau này hãng đã mua các quyền cho giấy phép UNIX từ SCO (mà tới lượt mình đã có được chúng từ Novell). Những động thái của Microsoft đối với sự mua sắm này là không rõ, nhưng một số phỏng đoán rằng có một sự liên hệ với thực tế rằng hãng ủng hộ SCO trong vụ kiện chống lại IBM. Hơn nữa, gần đây (2006), Microsoft đã đạt được những thỏa thuận với Novell (nhà cung cấp hiện hành của phát tán SuSE và cộng đồng OpenSuSE), trong một số các quyết định song phương cho sự khuyến khích kinh doanh cho cả 2 nền tảng. Nhưng một phần của cộng đồng GNU/Linux vẫn nghi ngờ về những ảnh hưởng tiềm tàng đối với sở hữu trí tuệ và các vấn đề pháp lý có liên quan tới việc sử dụng các bằng

Trang 31/471

Lưu ý

Bức thư ngỏ từ Novell cho cộng đồng GNU/Linux http://www.novell.com/linux/microsoft/community_open_letter.html

Page 32: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

sáng chế.

Một chuyện tiếu lâm lịch sử thú vị khác là việc cùng với một công ty có tên là UniSys, họ đã tung ra một chiến dịch marketing về cách để chuyển các hệ thống UNIX sang Windows; và dù mục tiêu của nó có thể ít nhiều bình luận được, thì một thực tế tò mò là việc máy chủ web gốc ban đầu của doanh nghiệp này là trên một máy FreeBSD với Apache. Một cách tình cờ, nó cũng trả cho các công ty “độc lập” (một số có thể nói họ là rất không độc lập) để tiến hành những phân tích về tốc độ thực thi có thể so sánh được giữa UNIX/Linux và Windows.

Như một tóm tắt chung, một số bình luận có xu hướng sẽ xuất hiện trong tiểu sử của UNIX chỉ ra thực tế rằng UNIX về mặt kỹ thuật là một hệ thống đơn giản và mạch lạc được thiết kế với những ý tưởng tốt, đã đưa được vào thực tế, nhưng chúng ta không nên quên rằng một số ý tưởng đã có được nhờ vào sự hỗ trợ tích cực từ một cộng đồng rộng lớn những người sử dụng và các lập trình viên đã cộng tác bằng việc chia sẻ công nghệ và quản lý sự tiến hóa của nó.

Và vì lịch sử có xu hướng tự mình lặp lại, hiện hành thì sự tiến bộ và sự hăm hở nhiệt tình vẫn tiếp tục với các hệ điều hành GNU/Linux.

Trang 32/471

Page 33: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.3. Hệ điều hành GNU/Linux

20 năm trước những người sử dụng các máy tính cá nhân đầu tiên đã không có nhiều hệ điều hành để chọn. Thị trường cho các máy tính cá nhân bị Microsoft DOS áp đảo. Khả năng khác là MAC của Apple, nhưng với một giá thành cắt cổ so sánh với phần còn lại. Lựa chọn quan trọng khác được giữ lại cho các máy tính lớn (và đắt) là UNIX.

Lựa chọn đầu tiên đã xuất hiện là Minix (1984), được Andrew Tanenbaum tạo ra từ đầu, cho những mục đích giáo dục để dạy cách thiết kế và triển khai các hệ điều hành [Tan87] [Tan06].

Minix đã được thừa nhận để chạy trên một nền tảng Intel 8086, đã rất phổ biến khi đó vì nó là cơ bản cho những máy tính cá nhân PC IBM đầu tiên. Ưu điểm chính của hệ điều hành này được bắt nguồn từ nguồn mở, nó đã có thể tới được mọi người (12,000 dòng mã lệnh cho assembler và C), và sẵn sàng từ các cuốn sách dạy học của Tanenbaum về các hệ điều hành [Tan87]. Tuy nhiên, Minix là một công cụ giáo dục hơn là một hệ điều hành có hiệu quả được thiết kế để thực thi các hoạt động chuyên nghiệp.

Trong những năm 90, FSF và dự án GNU của nó, đã khích lệ nhiều lập trình viên để thúc đẩy chất lượng và các phần mềm được phân phối một cách tự do. Và bên cạnh các phần mềm tiện ích, công việc được thực hiện trên nhân của một hệ điều hành gọi là HURD, có thể mất vài năm để phát triển.

Trong khi đó, vào tháng 10/1991, một sinh viên người Phần Lan có tên là Linus Torvalds đã trình bày phiên bản 0.0.1 về nhân hệ điều hành của anh ta, mà anh ta đã gọi là Linux, được thiết kế cho các máy Intel 386, và được đưa ra theo một giấy phép GPL cho các cộng đồng lập trình viên và cộng đồng Internet để kiểm thử, và nếu họ thích nó, thì giúp phát triển nó. Đã có sự nhiệt thành như vậy vì chưa bao giờ một số lượng lớn các lập trình viên đã làm việc trên nhân hoặc trong các ứng dụng cho nó.

Một số các tính năng đã phân biệt Linux với các hệ điều hành khác khi đó và tiếp tục được áp dụng, và những tính năng khác vốn có từ UNIX có thể là:

a) Đây là một hệ điều hành nguồn mở: bất kỳ ai cũng có thể có được sự truy cập tới các nguồn của nó, thay đổi nó và tạo ra những phiên bản mới có khả năng được chia sẻ theo giấy phép GPL (mà, trong thực tế, biến nó thành PMTD).

b) Tính khả chuyển: giống như UNIX gốc ban đầu, Linux được thiết kế để phụ thuộc rất ít vào kiến trúc của một máy cụ thế; kết quả là, Linux, hầu như, độc lập với máy đích và có thể được tải thực tế lên bất kỳ kiến trúc nào với một trình biên dịch C như GNU gcc. Chỉ có những phần nhỏ của mã assembler và một ít các thiết bị phụ thuộc vào máy, cần phải được viết lại trong từng bản chuyển lên một kiến trúc mới. Nhờ có điều này, GNU/Linux là một trong những hệ điều hành chạy trên số lượng lớn nhất các kiến trúc: Intel x86 và IA64, AMD x86 và x86_64, SPARC của Sun, MIPS của Silicon, PowerPC (Apple), IBM S390, Alpha của Compaq, m68k Motorola, Vax, ARM, HPPArisc...

c) Nhân dạng nguyên khối: thiết kế của nhân được liên kết vào trong một mẩu duy nhất nhưng về khái niệm là theo module trong các nhiệm vụ khác nhau của nó. Một trường học khác về thiết kế các hệ điều hành bảo vệ cho các nhân nhỏ (Mach là một ví dụ), nơi mà các dịch vụ được triển khai như

Trang 33/471

Lưu ý

Dự án Mach gốc ban đầu: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html

Page 34: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các qui trình riêng biệt được giao tiếp với nhân cơ bản (micro) hơn. Linux đã được thừa nhận như một nhân nguyên khối vì khó để có được tốc độ thực thi tốt từ các nhân cơ bản (nhiệm vụ khó và phức tạp). Cùng lúc, vấn đề với sự nguyên khối là việc khi chúng phát triển lên thì chúng trở nên rất lớn và không xử lý được với sự phát triển đó; các module tải động đã được sử dụng để cố gắng giải quyết điều này.

d) Các module tải được một cách động: chúng làm cho có khả năng có những phần của hệ điều hành, như các hệ thống tệp, hoặc các trình điều khiển thiết bị, như những phần bên ngoài sẽ được tải lên (hoặc kết nối) với nhân theo yêu cầu và theo thời gian thực. Điều này làm cho có khả năng để đơn giản hóa nhân và đưa ra những chức năng như những yếu tố có khả năng được lập trình một cách riêng rẽ. Với việc sử dụng các module này, Linux có thể được coi là một nhân pha trộn, vì nó là nguyên khối nhưng đưa ra một số các module mà bổ sung cho nhân (tương tự như các khái niệm của nhân cơ bản).

e) Hệ thống được một cộng đồng có liên kết trên Internet phát triển: các hệ điều hành đã không bao giờ được phát triển mạnh mẽ và phân tán như thế, nó có xu hướng không để công ty phát triển (như trong trường hợp của các hệ thống sở hữu độc quyền) hoặc nhóm nhỏ các viện hàn lâm cộng tác để tạo ra một nhân. Hiện tượng của cộng đồng Linux cho phép mọi người cộng tác càng nhiều thời gian và tri thức của họ một cách có thể được càng tốt. Kết quả là: có hàng trăm tới hàng ngàn lập trình viên cho Linux. Hơn nữa, vì bản chất tự nhiên nguồn mở của nó, Linux là một phòng thí nghiệm lý tưởng cho việc thử nghiệm các ý tưởng cho các hệ điều hành với giá thành tối thiểu; nó có thể được triển khai, thử nghiệm, những đo đếm có thể được thực hiện và ý tưởng có thể được bổ sung cho nhân nếu nó làm việc.

Các dự án đã kế tiếp nhau cái này theo cái khác và - vào lúc ban đầu của Linux với nhân - những người của FSF, với phần mềm tiện ích GNU và, trên hết tất cả, với trình biên dịch C (GCC), đã được liên kết với các dự án quan trọng khác như là XFree (một phiên bản của X Window cho máy tính cá nhân PC), và các dự án môi trường đồ họa như KDE và GNOME. Và sự phát triển của Internet với các dự án như máy chủ web Apache, trình duyệt Mozilla, hoặc các cơ sở dữ liệu MySQL và PostgreSQL, đã kết thúc và đưa ra cho nhân ban đầu của Linux một sự bao trùm đầy đủ các ứng dụng để xây dựng các hệ điều hành GNU/Linux và để cạnh tranh ở một mức độ ngang bằng với các hệ điều hành sở hữu độc quyền. Và để chuyển các hệ điều hành GNU/Linux thành mẫu của PMNM.

Các hệ điều hành GNU/Linux đã trở thành đỉnh của ngọn giáo của cộng đồng nguồn mở, vì số lượng các dự án đã có khả năng thiết kế cùng nhau và đi tới thành công.

Sự ra đời của những công ty mới đã tạo ra các phát tán GNU/Linux (việc đóng gói nhân + các ứng dụng) và đã hỗ trợ cho nó, như Red Hat, Mandrake, SuSE, đã giúp giới thiệu GNU/Linux cho các công ty bất đắc dĩ và bắt đầu cho một sự phát triển không dừng lại được mà chúng ta bây giờ chứng kiến.

Chúng ta cũng sẽ bình luận về tranh luận đối với việc đặt tên cho các hệ thống như là GNU/Linux. Khái niệm Linux được sử dụng một cách rộng rãi (để đơn giản hóa tên) để xác định hệ điều hành này, dù theo ý kiến của một số người thì nó làm xói mòn công việc được FSF với dự án GNU thực hiện, đã cung cấp các công cụ chính cho hệ thống này. Ngay cả như vậy, khái niệm Linux, được sử dụng rộng rãi khắp mọi nơi một cách thương mại để tham chiếu tới hệ điều hành một cách đầy đủ.

Nói chung, một khái niệm phù hợp hơn mà có thể phản ánh sự tham gia của cộng đồng, là Linux, khi

Trang 34/471

Lưu ý

GNU và Linux của Richard Stallman: http://www.gnu.org/gnu/linux-and-gnu.html

Page 35: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chúng ta đang tham chiếu chỉ tới nhân của hệ điều hành. Điều này đã gây ra một số lúng túng vì mọi người nói về hệ điều hành Linux để giản tiện. Khi làm việc với một hệ điều hành GNU/Linux, chúng ta đang làm việc với một loạt các phần mềm tiện ích mà chúng hầu hết là kết quả của dự án GNU trên nhân Linux. Vì thế, hệ thống này về cơ bản là GNU với một nhân Linux.

Mục đích của dự án GNU của FSF là để tạo ra một hệ điều hành phần mềm tự do dạng UNIX được gọi là GNU [Sta02].

Vào năm 1991, Linus Torvalds đã liên kết nhân Linux của ông vào với các tiện ích của GNU khi FSF vẫn còn chưa có một nhân. Nhân của GNU được gọi là HURD, và còn nhiều công việc đang được thực hiện trên nó hiện nay, và đã có những bản beta sẵn sàng của các phát tán GNU/HURD (xem nhiều hơn trong chương “Quản trị nhân”).

Ước lượng trong một phát tán GNU/Linux có 28% mã nguồn của GNU và 3% mã nguồn tương ứng của nhân Linux; phần trăm còn lại tương ứng của các bên thứ 3, hoặc cho các ứng dụng hoặc cho các tiện ích.

Để nhấn mạnh sự đóng góp của GNU [FSF], chúng ta có thể nhìn vào một số đóng góp được đưa vào trong các hệ điều hành GNU/Linux:

• Trình biên dịch C và C++ (GCC)

• Trình bó

• Trình soạn thảo Emacs (GNU Emacs)

• Trình biên dịch postscript (ghostscript)

• Thư viện C tiêu chuẩn (thư viện GNU C, hoặc glibc)

• Trình gỡ rối (GNU gdb)

• Trình tạo tệp - Makefile (GNU make)

• assembler (GNU assembler hoặc gas)

Các hệ điều hành GNU/Linux không chỉ là các hệ thống duy nhất sử dụng các phần mềm GNU; ví dụ, các hệ thống BSD cũng kết hợp các tiện ích của GNU. Và một số hệ điều hành sở hữu độc quyền như Mac OS X (Apple) cũng sử dụng các phần mềm GNU. Dự án GNU đã sản sinh ra những phần mềm chất lượng cao đã được kết hợp vào trong hầu hết các phát tán hệ thống dựa trên UNIX, cả tự do lẫn sở hữu độc quyền.

Là công bằng đối với thế giới để thừa nhận công việc của mọi người bằng việc gọi các hệ điều hành mà chúng ta sẽ làm việc là GNU/Linux.

Trang 35/471

Page 36: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.4. Hồ sơ của quản trị hệ thống

Các công ty và các tổ chức lớn dựa ngày càng nhiều hơn vào các tài nguyên công nghệ thông tin (CNTT) của họ và vào cách mà những tài nguyên này được quản trị và áp dụng cho những nhiệm vụ theo yêu cầu. Sự gia tăng khổng lồ trong các mạng phân tán, với các máy chủ và máy trạm, đã tạo ra một yêu cầu lớn cho một công việc mới trong thị trường: cái gọi là người quản trị hệ thống.

Một người quản trị hệ thống có trách nhiệm đối với một số lượng lớn các nhiệm vụ quan trọng. Những người quản trị hệ thống tốt nhất có xu hướng có một nền tảng thực tế và lý thuyết khá chung. Họ có thể thực hiện những nhiệm vụ như: cài đặt hoặc sửa chữa đi dây mạng; cài đặt các hệ điều hành hoặc các phần mềm ứng dụng; sửa các vấn đề và các lỗi của hệ thống với cả phần cứng và phần mềm; huấn luyện người sử dụng; đưa ra những mẹo hoặc kỹ thuật cho việc cải thiện năng suất trong những lĩnh vực từ các ứng dụng xử lý văn bản cho tới các hệ thống hỗ trợ bằng máy tính (CAD) hoặc mô phỏng phức tạp; những đánh giá mua sắm tài chính cho các trang bị phần cứng và phần mềm; cho việc tự động hóa một số lớn các nhiệm vụ được chia sẻ, và gia tăng sự thực thi toàn bộ công việc của tổ chức.

Người quản trị có thể được coi là nhân viên giúp tổ chức tạo nên những tài nguyên sẵn sàng nhất, sao cho toàn bộ tổ chức có thể tiến lên.

Mối quan hệ với những người sử dụng đầu cuối của các tổ chức có thể được thiết lập theo một vài cách: hoặc thông qua việc huấn luyện người sử dụng hoặc bằng việc đưa ra sự hỗ trợ trực tiếp nếu các vấn đề phát sinh. Người quản trị là người có trách nhiệm đảm bảo rằng các công nghệ được người sử dụng đang sử dụng hoạt động được một cách thích hợp, nghĩa là các hệ thống thỏa mãn những mong đợi của người sử dụng và thực hiện các nhiệm vụ mà họ cần hoàn thành.

Nhiều năm trước, và ngay cả bây giờ, nhiều công ty và tổ chức đã không có tầm nhìn rõ ràng về vai trò của người quản trị hệ thống. Khi điện toán của doanh nghiệp trong những ngày đầu (trong những năm 80 và 90), người quản trị được coi là người mà hiểu được các máy tính (“cao thủ – guru”) có trách nhiệm cho việc cài đặt các máy và giám sát hoặc sửa chữa chúng trong trường hợp có bất kỳ vấn đề gì. Thông thường, công việc này được hoàn thành từ một kỹ thuật viên máy tính lắm tài có trách nhiệm đối với việc giải quyết các vấn đề khi chúng xuất hiện. Đã không có sự phân định rõ về công việc vì tri thức rộng lớn chưa được đòi hỏi, chỉ tri thức cơ bản của một vài (nhiều lắm) ứng dụng (trình xử lý văn bản, bảng tính, cơ sở dữ liệu …), và một số tri thức về phần cứng cơ bản đã đủ cho những nhiệm vụ hàng ngày. Vì thế, bất kỳ ai mà hiểu được vấn đề này cũng có thể tiến hành công việc, nghĩa là thường những người quản trị đã không phải là các kỹ thuật viên máy tính theo truyền thống và thường tri thức còn được giao tiếp bằng truyền khẩu giữa một người quản trị đang tồn tại hoặc có thâm niên hơn và một người tập sự.

Tình trạng này đã phản ánh ở mức độ nào đó tiền lịch sử của sự quản trị các hệ thống (mặc dù vẫn còn có những người mà họ nghĩ rằng về cơ bản là công việc y hệt). Ngày nay, trong kỷ nguyên của các máy chủ Internet và phân tán, một người quản trị hệ thống là một người chuyên nghiệp (được thuê toàn thời gian hoàn toàn cho mục đích này), đưa ra những dịch vụ trong lĩnh vực phần cứng và phần mềm hệ thống. Người quản trị hệ thống phải thực thi vài nhiệm vụ dành riêng cho nhiều hệ thống CNTT, chủ yếu là hỗn hợp, với một quan điểm làm cho chúng hoạt động được cho một số nhiệm vụ.

Trang 36/471

Page 37: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hiện hành, những người quản trị hệ thống cần kiến thức chung (cả lý thuyết và thực hành) trong những lĩnh vực đa dạng, từ các công nghệ mạng, tới các hệ điều hành, các ứng dụng đa dạng, lập trình cơ bản trong một số lượng lớn các ngôn ngữ lập trình, tri thức rộng lớn về phần cứng - về bản thân máy tính cũng như các thiết bị ngoại vi - các công nghệ Internet, thiết kế trang web, quản trị cơ sở dữ liệu... Và thông thường hồ sơ được tìm sẽ tương ứng với lĩnh vực công việc của công ty, hóa học, vật lý, toán học... Vì thế, không ngạc nhiên là mọi công ty vừa và lớn đã quay lưng lại với việc sử dụng những người sẵn sàng gây khó chịu cho những người khác, hướng tới việc sử dụng một nhóm nhỏ những người chuyên nghiệp với tri thức rộng lớn, hầu hết với một bằng đại học, được chỉ định cho những nhiệm vụ khác nhau bên trong tổ chức.

Người quản trị hệ thống phải có khả năng làm chủ được một dải rộng lớn các công nghệ để thích nghi cho một loạt các nhiệm vụ có thể nảy sinh bên trong một tổ chức.

Vì số lượng lớn tri thức cần tới, không ngạc nhiên sẽ có vài hồ sơ phụ cho một người quản trị hệ thống. Trong một tổ chức lớn thường thấy những người quản trị hệ điều hành khác nhau (UNIX, Mac, hoặc Windows): người quản trị cơ sở dữ liệu, người quản trị sao chép các bản sao lưu, người quản trị về an ninh CNTT, người quản trị giúp người sử dụng, …

Trong một tổ chức nhỏ hơn, tất cả hoặc một số nhiệm vụ có thể được phân bổ cho một hoặc một vài người quản trị. Những người quản trị các hệ thống UNIX (hoặc GNU/Linux) có thể là một phần của những thứ này (trừ phi có từng người quản trị có trách nhiệm cho tất cả các nhiệm vụ). Thông thường, nền tảng làm việc của người quản trị là UNIX (hoặc GNU/Linux trong trường hợp của chúng ta), đòi hỏi những yếu tố đủ đặc thù để làm cho công việc này là thống nhất. UNIX (và những biến thể của nó) là một hệ điều hành mở và rất mạnh và, giống như bất kỳ hệ thống phần mềm nào, đòi hỏi một mức độ nhất định nào đó về sự thích nghi, cấu hình và duy trì trong những nhiệm vụ sẽ được sử dụng. Việc cấu hình và duy trì một hệ điều hành là một công việc nghiêm túc, và trong trường hợp của UNIX có thể trở thành hoàn toàn làm nản lòng.

Một số vấn đề quan trọng được đưa ra bao gồm những thứ sau:

a) Thực tế là hệ thống đó rất mạnh cũng có nghĩa là có nhiều tiềm năng cho việc áp dụng nó (cấu hình nó) cho những nhiệm vụ mà chúng ta cần làm. Chúng ta sẽ phải đánh giá những khả năng nào có thể đưa ra cho chúng ta và khả năng nào là phù hợp cho mục tiêu cuối cùng của chúng ta.

b) Một ví dụ rõ ràng về hệ thống mở là GNU/Linux, đưa ra cho chúng ta những cập nhật liên tục, hoặc sửa cho đúng các lỗi hệ thống hoặc để kết hợp những tính năng mới. Và, rõ ràng, tất cả những thứ này có một ảnh hưởng trực tiếp đáng kể lên giá thành duy trì các nhiệm vụ quản trị.

c) Các hệ thống có thể được sử dụng cho những nhiệm vụ sống còn, hoặc những điểm sống còn của tổ chức, nơi mà những hỏng hóc quan trọng có thể làm chậm hoặc cản trợ việc vận hành của tổ chức là không được phép.

d) Các mạng hiện là điểm quan trọng (nếu không nói là quan trọng nhất), nhưng nó cũng là một khu vực có những vấn đề rất sống còn, vì cả về bản chất tự nhiên phân tán của riêng nó và tính phức tạp của hệ thống đối với việc tìm, gỡ rối và giải quyết các vấn đề có thể nảy sinh.

Trang 37/471

Page 38: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

e) Trong trường hợp đặc biệt của UNIX, và các hệ điều hành GNU/Linux, sự phong phú của cả các phiên bản và phát tán khác nhau, bổ sung thêm nhiều vấn đề hơn cho sự quản trị chúng, vì quan trọng phải biết được những vấn đề gì và những khác biệt nào mỗi phiên bản và phát tán có.

Đặc biệt, các nhiệm vụ quản trị hệ thống và mạng sẽ có những tính năng khác nhau, và đôi khi chúng được quản lý một cách tách biệt (hoặc bằng những người quản trị khác nhau). Mặc dù chúng ta cũng có thể nhìn vào nó như 2 mặt của cùng một công việc, với bản thân hệ thống (máy và phần mềm), là một mặt, và môi trường (môi trường mạng) nơi mà hệ thống cùng tồn tại, là mặt khác.

Trong quá trình này, chúng ta đầu tiên sẽ làm việc với những khía cạnh cục bộ của bản thân hệ thống và thứ nhì là chúng ta sẽ nhìn vào những nhiệm vụ của việc quản trị một mạng và các dịch vụ của nó.

Chúng ta đã nhắc tới vấn đề về việc xác định một cách chính xác người quản trị hệ thống là gì, vì trong thị trường công việc CNTT điều này không thật rõ. Thông thường để đòi hỏi những người quản trị hệ thống dựa vào các chủng loại (được các công ty thiết lập) các lập trình viên và kỹ sư phần mềm, là sẽ không hoàn toàn phù hợp.

Một lập trình viên về cơ bản là một người sản xuất mã nguồn; Trong trường hợp này, một người quản trị có thể không cần sản xuất nhiều, vì có thể cần cho một số nhiệm vụ này nhưng không cần cho các nhiệm vụ khác. Thông thường, mong muốn đối với một người quản trị phải có ít nhiều tri thức phụ thuộc vào chủng loại công việc:

a) Một số phẩm chất hoặc bằng đại học, ưu tiên trong CNTT, hoặc trong một lĩnh vực có liên quan trực tiếp tới công ty hoặc tổ chức. Hồ sơ của một quản trị viên hệ thống có xu hướng đưa vào khoa học máy tính hoặc các nghiên cứu kỹ thuật hoặc một sự giáo dục có liên quan tới khu vực hoạt động của tổ chức cùng với kinh nghiệm được chứng minh trong lĩnh vực và tri thức rộng lớn của các hệ thống hỗn hợp và các công nghệ mạng.

b) Thường thì phải yêu cầu từ 1 tới 3 năm kinh nghiệm đối với một người quản trị (trừ phi công việc này là như một người trợ giúp cho một người quản trị đã đang tồn tại). Kinh nghiệm từ 3-5 năm cũng có thể sẽ được yêu cầu.

c) Quen thuộc với tri thức rộng về các môi trường mạng và các dịch vụ. Các giao thức TCP/IP, các dịch vụ ftp, telnet, ssh, http, nfs, nis, ldap...

d) Tri thức về các ngôn ngữ script cho các công cụ mẫu hoặc tự động hóa nhanh các nhiệm vụ (ví dụ, scripts cho các bó lệnh, Perl, tcl, Python, …) và kinh nghiệm lập trình trong một dải rộng lớn các ngôn ngữ (C, C++, Java, Assember, …).

e) Kinh nghiệm trong triển khai các ứng dụng lớn trong bất kỳ ngôn ngữ nào có thể được yêu cầu.

f) Tri thức bao quát về thị trường IT, cho cả phần cứng và phần mềm, trong trường hợp phải đánh giá những mua sắm hoặc cài đặt các hệ thống mới hoặc những cài đặt hoàn chỉnh.

g) Kinh nghiệm với hơn một phiên bản UNIX (hoặc các hệ điều hành GNU/Linux), như Solaris, AIX, AT&T System V, BSD, …

h) Kinh nghiệm với các hệ điều hành không phải UNIX, các hệ thống phụ trợ mà có thể thấy trong tổ chức: Windows 9x/NT/200/XP/Vista, Mac OS, VMS, các hệ thống của IBM, …

Trang 38/471

Page 39: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

i) Tri thức chắc chắn về thiết kế và triển khai UNIX, các cơ chế phân trang, trao đổi, giao tiếp liên tiến trình, các trình kiểm soát, …, ví dụ, nếu các nhiệm vụ quản trị bao gồm việc tối ưu hóa các hệ thống (tinh chỉnh).

j) Tri thức và kinh nghiệm trong an ninh CNTT: xây dựng các tường lửa, các hệ thống xác thực, các ứng dụng mã hóa, an ninh hệ thống tệp, các công cụ giám sát an ninh, …

k) Kinh nghiệm với các cơ sở dữ liệu, tri thức về SQL, …

l) Cài đặt và sửa chữa các thiết bị phần cứng và/hoặc kết nối mạng.

Trang 39/471

Page 40: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.5. Các nhiệm vụ của người quản trị

Như đã mô tả, có thể chia các nhiệm vụ của người quản trị GNU/Linux (hoặc UNIX nói chung) [Lev02] thành 2 phần chính: quản trị hệ thống và quản trị mạng. Trong các điểm sau chúng ta sẽ chỉ ra tóm tắt những gì mà những nhiệm vụ này nói chung cấu tạo nên các hệ điều hành GNU/Linux (hoặc UNIX); hầu hết các phần nội dung của sách chỉ dẫn này sẽ được đối xử theo một số lượng các chi tiết; hầu hết các nhiệm vụ quản trị sẽ được phát triển trong sách chỉ dẫn của khóa học; vì những lý do về vị trí và độ phức tạp, những phần khác của các nhiệm vụ sẽ được giải thích một cách thoáng qua.

Các nhiệm vụ quản trị bao gồm một loạt các kỹ thuật và tri thức, về chúng thì tài liệu này chỉ phản ánh chút đỉnh của tảng băng; trong mọi trường hợp, thư mục tham khảo được gắn với từng phần sẽ đưa ra những tham chiếu để mở rộng các chủ đề này. Như chúng ta sẽ thấy, có một thư mục tham khảo mở rộng cho hầu hết mọi điểm được đề cập tới.

Các nhiệm vụ quản trị hệ thống có thể được tóm tắt, một mặt, cho người quản trị hệ thống cục bộ, và mặt khác, cho người quản trị mạng.

Các nhiệm vụ quản trị hệ thống cục bộ (không theo trật tự đặc biệt nào)

• Việc tắt bật hệ thống: bất kỳ hệ thống dựa trên UNIX nào cũng có việc tắt bật hệ thống sao cho chúng ta có thể thiết đặt cấu hình cho những dịch vụ nào sẽ được đưa ra khi máy được bật và khi cần chúng nhất thiết phải được tắt, sao cho chúng ta có thể lập trình cho hệ thống để tắt cho việc duy trì bảo dưỡng.

• Quản lý người và nhóm sử dụng: việc trao không gian cho người sử dụng là một trong những nhiệm vụ chính của bất kỳ người quản trị hệ thống nào. Chúng ta sẽ cần quyết định người sử dụng nào sẽ có khả năng truy cập hệ thống, truy cập thế nào, và với những quyền gì; và để thiết lập cho các cộng đồng thông qua các nhóm. Một trường hợp đặc biệt liên quan tới những người sử dụng hệ thống, người sử dụng giả lập chuyên tâm đối với các nhiệm vụ của hệ thống.

• Quản trị các tài nguyên hệ thống: chúng ta đưa ra cái gì, chúng ta đưa ra thế nào và chúng ta trao sự truy cập cho ai.

• Quản lý hệ thống tệp: máy tính có thể có các tài nguyên khác nhau cho việc lưu trữ các dữ liệu và thiết bị (các đĩa mềm, đĩa cứng, các ổ đĩa quang …) với các hệ thống truy cập tệp khác nhau. Chúng có thể là vĩnh viễn, tháo lắp được hoặc tạm thời, có nghĩa là phải lấy mẫu và quản lý quá trình cài đặt và bỏ cài đặt các hệ thống tệp được đưa ra với các đĩa hoặc thiết bị có liên quan.

• Các khẩu phần hệ thống (quota): bất kỳ tài nguyên được chia sẻ nào cũng sẽ phải được quản trị, và phụ thuộc vào số lượng người sử dụng, một hệ thống khẩu phần sẽ cần phải được thiết lập để tránh một sự lạm dụng các tài nguyên trong phần của người sử dụng hoặc để phân biệt các lớp (hoặc các nhóm) khác nhau của người sử dụng theo sự sử dụng nhiều hơn hoặc ít hơn đối với các tài nguyên. Các hệ thống khẩu phần cho không gian đĩa hoặc việc in ấn hoặc sử dụng CPU

Trang 40/471

Page 41: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

là chung (thời gian tính toán được sử dụng).

• An ninh hệ thống: an ninh cục bộ, về việc bảo vệ các tài nguyên chống lại việc sử dụng thái quá hoặc sự truy cập không được phép tới các dữ liệu hệ thống hoặc tới những dữ liệu của người sử dụng hoặc nhóm người sử dụng khác.

• Sao lưu và phục hồi hệ thống: (dựa vào tầm quan trọng của dữ liệu) các chính sách theo chu kỳ thời gian cần phải được thiết lập cho việc tiến hành các bản sao lưu của các hệ thống. Các chu kỳ sao lưu cần phải được thiết lập để bảo vệ các dữ liệu chống lại những hỏng hóc hệ thống (hoặc những yếu tố bên ngoài) mà có thể gây ra cho các dữ liệu bị mất hoặc bị hỏng.

• Tự động hóa các nhiệm vụ lặp đi lặp lại: nhiều nhiệm vụ quản trị lặp đi lặp lại hoặc các nhiệm vụ liên quan tới việc sử dụng hàng ngày của máy có thể được tự động một cách dễ dàng, nhờ vào sự đơn giản của chúng (và vì thế, nhờ vào sự dễ dàng của việc lặp lại chúng) cũng như thời gian của chúng, có nghĩa là chúng cần phải được lặp đi lặp lại theo những chu kỳ thời gian nhất định. Sự tự động hóa này có xu hướng sẽ đạt được hoặc thông qua việc lập trình trong một ngôn ngữ biên dịch được dạng script (shells, Perl, …), hoặc bằng việc đưa vào trong các hệ thống đặt thời gian được (crontab, at...).

• Việc in ấn và quản lý hàng đợi: các hệ thống UNIX có thể được sử dụng như những hệ thống in để kiểm soát một hoặc nhiều máy tính được kết nối tới hệ thống, cũng như để quản trị công việc theo hàng đợi mà người sử dụng hoặc các ứng dụng có thể gửi tới cho chúng.

• Quản lý các Modem và các máy đầu cuối: Các thiết bị này là chung trong các môi trường mà không được kết nối tới một mạng cục bộ hoặc tới mạng băng thông rộng:

◦ Các modem làm cho có khả năng kết nối tới một mạng thông qua một trung gian (một ISP hoặc nhà cung cấp truy cập) hoặc tới hệ thống của chúng ta từ bên ngoài, bằng sự truy cập điện thoại từ bất kỳ điểm nào của mạng điện thoại.

◦ Trong trường hợp của các máy đầu cuối, trước khi giới thiệu các mạng thì nói chung đối với máy UNIX sẽ là yếu tố điện toán tập trung, với một loạt các máy đầu cuối câm, từng được sử dụng chỉ để hiển thị thông tin hoặc cho phép thông tin được đưa vào bằng việc sử dụng các bàn phím bên ngoài; những thứ này có xu hướng sẽ là các máy đầu cuối song song hoặc nối tiếp. Ngày nay, chúng vẫn còn phổ dụng trong các môi trường công nghiệp và hệ thống máy tính để bàn GNU/Linux của chúng ta có một tính năng đặc biệt: các máy đầu cuối ảo cho văn bản được truy cập bằng việc sử dụng các phím Alt+Fxx.

• Hệ thống ghi lưu ký (hoặc log): để kiểm tra hệ thống của chúng ta liệu có đang hoạt động đúng, chúng ta cần tăng cường cho các chính sách ghi lưu ký để thông báo cho chúng ta về những hỏng hóc tiềm tàng của hệ thống hoặc sự thực thi của một ứng dụng, dịch vụ hoặc tài nguyên phần cứng. Hoặc để tóm tắt các tài nguyên đã sử dụng, việc sử dụng hệ thống hoặc năng suất ở dạng của một báo cáo.

• Việc tinh chỉnh tốc độ thực thi của hệ thống: các kỹ thuật tinh chỉnh hệ thống đối với một mục đích được thiết lập. Thông thường, một hệ thống được thiết kế cho một công việc cụ thể nào đó và chúng ta có thể kiểm tra việc nó đang hoạt động đúng (việc sử dụng các logs lưu ký, ví dụ

Trang 41/471

Page 42: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thế), để kiểm tra những thông số và áp dụng chúng cho dịch vụ được mong đợi.

• Việc chỉnh sửa hệ thống: thiết lập lại cấu hình của nhân. Trong GNU/Linux, ví dụ, các nhân là có thể thiết lập cấu hình được cao độ, theo những tính năng mà chúng ta mong muốn đưa vào dạng các thiết bị chúng ta có hoặc hy vọng có trong máy của chúng ta, để bổ sung vào các thông số có ảnh hưởng tới tốc độ thực thi của hệ thống hoặc sẽ giành được bằng các ứng dụng.

Các nhiệm vụ quản trị mạng

• Giao diện và kết nối mạng: dạng của giao diện mạng chúng ta sử dụng, liệu sự truy cập tới một mạng cục bộ, một mạng lớn hơn, hoặc kết nối dạng băng thông rộng với các công nghệ DSL hoặc ISDN. Hơn nữa, dạng kết nối mà chúng ta sẽ có, ở dạng của các dịch vụ hoặc yêu cầu.

• Định tuyến cho dữ liệu: dữ liệu sẽ lưu thông, từ đâu tới tới đâu, phụ thuộc vào các thiết bị mạng sẵn sàng, và các chức năng của máy bên trong mạng; có thể cần thiết để định tuyến lại giao thông từ/tới một hoặc nhiều vị trí.

• An ninh mạng: một mạng, đặc biệt một mạng là mở (như Internet) tới bất kỳ điểm bên ngoài nào, là một nguồn có khả năng của các cuộc tấn công và vì thế, có thể bị tổn thương về an ninh các hệ thống hoặc các dữ liệu của người sử dụng. Chúng ta cần tự bảo vệ mình, dò tìm và ngăn ngừa những cuộc tấn công tiềm tàng với một chính sách an ninh rõ ràng và hiệu quả.

• Các dịch vụ tên: một mạng có một số lượng nhất định các tài nguyên sẵn có. Các dịch vụ tên cho phép chúng ta đặt tên cho các đối tượng (như các máy và các dịch vụ) để có khả năng định vị chúng. Với những dịch vụ như DNS, DHCP, LDAP …, chúng ta sẽ có khả năng định vị các dịch vụ hoặc thiết bị sau này...

• Dịch vụ Thông tin Mạng - NIS (Network Information Service): những tổ chức lớn cần các cơ chế để tổ chức và truy cập các tài nguyên một cách có hiệu quả. Các dạng UNIX chuẩn, như những đăng nhập của người sử dụng được kiểm soát bằng các mật khẩu cục bộ, là có hiệu quả khi có ít máy tính và người sử dụng, nhưng khi có những tổ chức lớn, với các cấu trúc thứ bậc, thì những người sử dụng có thể truy cập được tới nhiều tài nguyên theo một cách thống nhất hoặc riêng rẽ với các quyền khác nhau... thì các phương pháp UNIX đơn giản là không đủ hoặc không thể một cách rõ ràng. Vì thế cần các hệ thống có hiệu quả hơn để kiểm soát tất cả cấu trúc này. Các dịch vụ như NIS, NIS+, LDAP giúp tổ chức sự phức tạp này theo một cách có hiệu quả.

• Các hệ thống tệp mạng NFS (Network File Systems): thông thường, trong các cấu trúc hệ thống mạng thì các thông tin cần phải được chia sẻ (như bản thân các tệp) với tất cả hoặc một số người sử dụng. Hoặc đơn giản, vì sự phân phối một cách vật lý của những người sử dụng, sự truy cập tới các tệp được yêu cầu từ bất kỳ điểm nào của mạng. Các hệ thống tệp mạng (như NFS) cho chúng ta sự truy cập minh bạch tới các tệp, bất chấp vị trí của chúng ta trên mạng.

• Các lệnh ở xa của UNIX: UNIX có các lệnh mạng minh bạch, theo nghĩa là bất chấp kết nối vật lý, có thể chạy các lệnh truyền thông tin trên mạng hoặc cho phép truy cập tới một số các dịch vụ của máy tính. Những lệnh này có xu hướng có một chữ “r” ở đằng trước chúng, nghĩa là “remote” (ở xa), như: rcp, rlogin, rsh, rexec..., chúng cho phép thực hiện ở xa đối với các chức

Trang 42/471

Page 43: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

năng đặc biệt nào đó trên mạng.

• Các ứng dụng mạng: các ứng dụng cho việc kết nối tới các dịch vụ mạng, như là telnet (truy cập tương tác), FTP (truyền tệp), ở dạng của một ứng dụng máy trạm, kết nối tới một dịch vụ được phục vụ từ máy tính khác. Hoặc là chúng ta có thể tự phục vụ bằng máy chủ đúng nào đó: máy chủ telnet, máy chủ FTP, máy chủ web …

• Việc in ấn ở xa: truy cập tới các máy chủ in ở xa, hoặc trực tiếp tới các máy in ở xa hoặc tới các máy khác, đưa ra các máy in cục bộ của riêng chúng. Việc in ấn của mạng là trong suốt đối với người sử dụng hoặc ứng dụng.

• Thư điện tử: một trong những dịch vụ chính của các máy UNIX là máy chủ thư điện tử, có khả năng hoặc lưu trữ thư hoặc định tuyến lại nó tới các máy chủ khác, nếu nó không được định tuyến tới những người sử dụng của riêng hệ thống của nó. Trong trường hợp của web, thì một hệ thống UNIX tương tự đưa ra một nền tảng web lý tưởng với các máy chủ web đúng. UNIX có thị phần lớn nhất về các máy chủ thư điện tử và web, và đây là một trong những thị trường chính của nó, nơi mà nó có một vị thế áp đảo. Các hệ điều hành GNU/Linux đưa ra các giải pháp nguồn mở cho thư điện tử và web, đại diện cho một trong những ứng dụng chính của nó.

• X Window: một mô hình đặc biệt của những kết nối nội bộ là hệ thống đồng đồ hóa các hệ điều hành GNU/Linux (và hầu hết của UNIX), là X Window. Hệ thống này cho phép có sự minh bạch mạng toàn phần và hoạt động theo các mô hình máy chủ/máy trạm (client/server); nó cho phép một ứng dụng hoàn toàn được bỏ liên kết để không nhìn thấy được và tương tác được với nó bằng những phương tiện của các thiết bị đầu vào, nghĩa là những thứ này có thể được định vị bất kỳ ở đâu trên mạng. Ví dụ, chúng ta có thể đang chạy một ứng dụng cụ thể nào đó trên một máy UNIX trong khi trên một máy khác chúng ta có thể nhìn các kết quả bằng đồ họa trên màn hình và chúng ta có thể gõ vào các dữ liệu bằng cách sử dụng bàn phím và chuột cục bộ theo một cách ở xa. Hơn nữa, máy trạm, được gọi là máy trạm X, chỉ là một thành phần phần mềm có khả năng được kích hoạt trong các hệ điều hành khác, làm cho có khả năng để chạy các ứng dụng trên một máy tính UNIX và xem chúng trên bất kỳ máy nào khác. Cái gọi là những máy đầu cuối X là một trường hợp đặc biệt - chúng về cơ bản là một dạng máy đầu cuối câm có khả năng chỉ xem hoặc tương tác (sử dụng một bàn phím và chuột) với một ứng dụng chạy ở xa.

Trang 43/471

Page 44: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.6. Các phát tán GNU/Linux

Khi nói về gốc gác của GNU/Linux, chúng ta thấy rằng không có hệ điều hành duy nhất nào được xác định một cách rõ ràng. Một mặt, có 3 yếu tố phần mềm chính tạo nên một hệ điều hành GNU/Linux:

1) Nhân Linux: như chúng ta đã biết, nhân chỉ là phần trung tâm của hệ thống. Nhưng không có các ứng dụng tiện ích, các bó, các trình biên dịch, các trình soạn thảo …, thì chúng ta không thể có một hệ điều hành hoàn chỉnh được.

2) Các ứng dụng GNU: sự phát triển của Linux đã được bổ sung với các phần mềm đang tồn tại của FSF theo dự án GNU, đã cung cấp các trình soạn thảo (như là emacs), một trình biên dịch (gcc) và hàng loạt các tiện ích khác.

3) Các phần mềm của bên thứ 3: thông thường là nguồn mở. Hơn nữa, bất kỳ hệ điều hành GNU/Linux nào cũng kết hợp các phần mềm của bên thứ 3 để bổ sung thêm một số lượng các ứng dụng được sử dụng một cách rộng rãi, hoặc bản thân hệ thống đồ họa X Window, các máy chủ như Apache cho web, các trình duyệt … Cùng lúc, có thể tùy ý đưa vào một số PMSHĐQ, phụ thuộc vào mức độ nào những người tạo ra các phát tán đó muốn phần mềm là tự do.

Vì hầu hết các phần mềm là tự do hoặc nguồn mở, hoặc nhân, GNU hoặc phần mềm của bên thứ 3, nên thông thường ít nhiều có sự tiến bộ của các phiên bản, hoặc thông qua sự sửa cho đúng các lỗi hoặc các tính năng mới. Điều này có nghĩa là trong trường hợp mong muốn tạo ra một hệ điều hành GNU/Linux, chúng ta sẽ phải chọn phần mềm nào chúng ta muốn cài đặt lên hệ thống, và các phiên bản đặc thù nào của các phần mềm đó.

Thế giới của GNU/Linux là không bị hạn chế đối với một công ty hoặc cộng đồng đặc biệt nào cả, mà có nghĩa là nó đưa ra cho bất kỳ ai khả năng tạo hệ thống riêng của họ được thích nghi cho những yêu cầu của riêng họ.

Thông thường, trong số những phiên bản luôn có một số là ổn định và những số khác là đang được phát triển ở dạng pha alpha hoặc beta, có khả năng chứa các lỗi hoặc không ổn định, có nghĩa là khi nói tới việc tạo ra một hệ điều hành GNU/Linux, chúng ta sẽ phải thận trọng với sự lựa chọn phiên bản. Vấn đề bổ sung khác là sự lựa chọn các giải pháp thay thế, thế giới của GNU/Linux là đủ phong phú để có hơn một sự lựa chọn thay thế cho cùng một sản phẩm phần mềm. Chúng ta cần phải chọn trong số các lựa chọn có sẵn, kết hợp một số hoặc tất cả chúng, nếu chúng ta muốn đưa ra cho người sử dụng sự tự do lựa chọn để chọn phần mềm cho họ.

Ví dụ

Chúng ta thấy một ví dụ thực tế với các trình quản lý máy để bàn X Window, mà, ví dụ, đưa ra cho chúng ta (chủ yếu) 2 môi trường đồ họa khác nhau như là GNOME và KDE; cả 2 đều có những đặc tính tương tự và các ứng dụng tương tự hoặc bổ sung.

Trong trường hợp của một nhà phân phối các hệ điều hành GNU/Linux, hoặc thương mại hoặc phi lợi nhuận, thì trách nhiệm của nhà phân phối là tạo ra một hệ thống làm việc, bằng việc chọn những sản phẩm và phiên bản phần mềm tốt nhất có sẵn.

Trong trường hợp này, một phát tán GNU/Linux [Dis] là một bộ sưu tập các phần mềm tạo nên một hệ điều hành

Trang 44/471

Page 45: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

dựa trên nhân Linux.

Một thực tế quan trọng là những nhu cầu sẽ phải được tính tới, và nó gây ra còn hơn cả một sự lúng túng, là vì mỗi gói phần mềm của phát tán sẽ có phiên bản riêng của nó (bất chấp phát tán mà nó nằm trên đó) mà số phiên bản được phân bổ không tương ứng với các phiên bản của các gói phần mềm.

Ví dụ

Hãy xem một vài phiên bản như một ví dụ (các phiên bản tham chiếu tới cuối năm 2003):

a) Nhân Linux: chúng ta có thể thấy hiện các phát tán đưa ra một hoặc nhiều nhân, như những nhân cũ loại 2.4.x hoặc nói chung, nhân mới nhất 2.6.x trong các xem xét lại gần đây (với số x).

b) Lựa chọn đồ họa của X Window, trong phiên bản nguồn mở, chúng ta có thể thấy trong thực tế tất cả các hệ điều hành GNU/Linux có, hoặc như một số phiên bản còn lại của Xfree86 như những thứ được điều khiển bằng các phiên bản 4.x.y hoặc như dự án Xorg (một rẽ nhánh của dự án này trong năm 2003), là phổ biến hơn trong một loạt phiên bản 6.x hoặc 7.x.

c) Trình quản lý môi trường đồ họa hoặc các cửa sổ: chúng ta có thể có GNOME hoặc KDE, hoặc cả 2; GNOME với phiên bản 2.x hoặc KDE 3.x.y.

Ví dụ, chúng ta có thể có một phát tán đã đưa vào nhân 2.4, với XFree 4.4 và GNOME 2.14; hoặc cái khác, ví dụ, nhân 2.6, Xorg 6.8, KDE 3.1. Cái gì là tốt hơn? Khó mà so sánh chúng vì chúng kết hợp một sự pha trộn các yếu tố và phụ thuộc vào cách pha trộn được thực hiện thế nào, thì sản phẩm sẽ đưa ra kết quả tốt hơn hay tệ hơn, và ít nhiều được thích nghi cho những yêu cầu của người sử dụng. Thông thường, nhà phân phối sẽ duy trì một sự cân bằng giữa tính ổn định của hệ thống và sự mới mẻ của các phiên bản được đưa vào. Cũng như vậy đưa ra các phần mềm ứng dụng hấp dẫn cho những người sử dụng các phát tán, hoặc là bản chất cơ bản chung hoặc đặc biệt trong bất kỳ lĩnh vực đặc thù nào.

Nói chung, chúng ta có thể phân tích các phát tán tốt hơn trên cơ sở những đầu việc sau, mà mỗi thứ đều có thể được chọn:

a) Phiên bản của nhân Linux: phiên bản này được chỉ ra bằng các con số X.Y.Z, nơi thông thường X là phiên bản chính, mà đại diện cho những thay đổi quan trọng đối với nhân; Y là phiên bản 2 và thường ngụ ý những cải tiến trong sự thực thi của nhân: Y là chẵn cho các nhân ổn định và là lẻ cho các phát triển hoặc thử nghiệm. Và Z là phiên bản được xây dựng, mà chỉ ra số phiên bản của X.Y, về các bản vá hoặc các sửa lỗi được làm. Các nhà phân phối có xu hướng không đưa vào phiên bản mới nhất của nhân, mà phiên bản mà họ đã thử thường xuyên nhất và đã kiểm tra là ổn định đối với các phần mềm và các thành phần mà họ đưa vào. Hệ thống đánh số kinh điển này (được quan sát cho các nhánh 2.4.x, cho tới phiên bản nhân đầu tiên của 2.6.x) trở nên ổn định hơn và có ít sự duyệt lại hơn mọi lúc (nghĩa là một bước nhảy trong các số đầu), mà sự phát triển còn tiếp tục và đang tích cực. Theo những mô hình mới nhất, các con số thứ tư được đưa ra để chỉ định trong những thay đổi nhỏ của Z hoặc những khả năng khác của sự duyệt lại (với các bản vá khác được bổ sung). Phiên bản vì thế được xác định với 4 con số là phiên bản được coi là ổn định. Các mô hình khác cũng được sử dụng cho một loạt các phiên bản thử nghiệm (thông thường không được khuyến cáo cho các môi trường sản xuất), sử dụng các đuôi như -rc (phiên bản ứng viên - release candidate), -mm, các nhân thí điểm thử nghiệm các kỹ thuật khác nhau, hoặc -git, một dạng của việc nhặt ra ngay thứ hàng ngày thời sự phát triển của nhân. Những mô hình đánh số này thường xuyên được thay đổi để thích nghi với cách mà cộng đồng nhân làm việc, và những nhu cầu của nó để tăng tốc cho sự phát triển của nhân.

b) Định dạng đóng gói: đây là một cơ chế được sử dụng cho việc cài đặt và quản trị phần mềm của phát tán. Nó có xu hướng sẽ được biết cho định dạng của các gói phần mềm mà nó hỗ trợ. Trong trường hợp

Trang 45/471

Page 46: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

này chúng ta thường thấy các định dạng RPM, DEB, tar, gz, mdk, và dù mỗi phát tán thường đưa ra khả năng sử dụng các định dạng khác nhau, thì nó có xu hướng có một định dạng mặc định. Phần mềm thường đi với các tệp của nó trong một gói. đưa vào các thông tin cài đặt nó và những phụ thuộc có thể về các gói phần mềm khác. Việc đóng gói là quan trọng nếu phần mềm của bên thứ 3 mà không đi với phát tán được sử dụng, vì phần mềm này chỉ có thể thấy được trong một số hệ thống đóng gói, hoặc thậm chí chỉ trong một cách đóng gói.

c) Cấu trúc hệ thống tệp: cấu trúc hệ thống tệp chính (/) cho chúng ta biết nơi đâu có thể tìm các tệp (hoặc các tệp hệ thống) trong hệ thống tệp. GNU/Linux và UNIX có một số chuẩn vị trí tệp (như chúng ta sẽ thấy trong phần các công cụ), như FHS (chuẩn trật tự hệ thống tệp - filesystem hierarchy standard) [Lin03b]. Vì thế, nếu chúng ta có một ý tưởng về chuẩn này, chúng ta sẽ biết nơi đâu để tìm hầu hết các tệp; rồi nó phụ thuộc vào liệu phát tán tuân thủ nó ít hay nhiều và nó cho chúng ta biết về bất kỳ thay đổi nào đã được thực hiện.

d) Scripts khởi động hệ thống: các hệ điều hành UNIX và GNU/Linux kết hợp các scripts khởi động (hoặc các scripts bó), chỉ ra cách mà máy tính sẽ khởi động, cái gì sẽ là quá trình (hoặc các pha) tiếp theo, và những gì phải được thực hiện trong từng bước. Có 2 mô hình cho việc khởi động này, SysV hoặc BSD (đây là sự khác biệt giữa 2 nhánh UNIX chính); và mỗi phát tán có thể chọn một trong 2 thứ này. Dù cả 2 hệ thống đều có cùng chức năng, thì chúng khác nhau về các chi tiết, và điều này sẽ là quan trọng cho các vấn đề quản trị (chúng ta sẽ xem điều này trong phần về quản trị cục bộ). Trong trường hợp của chúng ta, các hệ thống được phân tích, cả Fedora và Debian, sử dụng hệ thống SysV (sẽ xem điều này trong phần về quản trị cục bộ), nhưng có những phát tán khác như Slackware, sử dụng hệ thống khác là BSD. Và có một số đề xuất (như Upstart của Ubuntu) đối với những lựa chọn mới cho khía cạnh khởi động này.

e) Các phiên bản của thư viện hệ thống: tất cả các chương trình (hoặc các ứng dụng) có trên hệ thống sẽ phụ thuộc vào một (lớn hơn hay nhỏ hơn) số lượng các thư viện hệ thống để chạy. Những thư viện này, thông thường ở 2 dạng, hoặc tĩnh được kết nối tới chương trình (các tệp libxxx.a) hoặc được tải theo thời gian động (các tệp libxxx.so), cung cấp một số lượng lớn các tiện ích hoặc mã hệ thống mà các ứng dụng sẽ sử dụng. Việc chạy một ứng dụng có thể phụ thuộc vào sự tồn tại của các thư viện tương ứng và phiên bản cụ thể của các thư viện này (không khuyến cáo, mà có thể xảy ra). Trường hợp khá phổ biến ảnh hưởng tới thư viện C của GNU, thư viện C chuẩn, cũng được biết như là glibc. Một ứng dụng có thể yêu cầu chúng ta một phiên bản cụ thể của glibc để được chạy hoặc được biên dịch. Đây là một vấn đề khá rắc rối và vì thế, một trong những thông số có giá trị của phát tán là việc biết phiên bản nào của glibc mà nó mang và các phiên bản bổ sung có thể mà chúng tương thích được với các phiên bản cũ. Vấn đề xuất hiện khi việc thử để chạy hoặc biên dịch một sản phẩm phần mềm cũ trong một phát tán gần đây, hoặc một sản phẩm phần mềm rất mới trong một phát tán cũ. Sự thay đổi lớn nhất xảy ra trong việc chuyển tới một glibc 2.0, trong đó tất cả các chương trình phải được biên dịch lại để chạy đúng, và trong các rà soát lại khác nhau được đánh số 2.x đã có một số những sửa đổi nhỏ có thể ảnh hưởng tới một ứng dụng. Trong mọi trường hợp, các gói phần mềm sẽ kiểm tra liệu phiên bản đúng của glibc là sẵn sàng hay bản thân cái tên này nhắc tới phiên bản cần phải được sử dụng (ví dụ: gói -xxx-glibc2.rpm).

f) Môi trường đồ họa X Window: hệ thống X Window là chuẩn đồ họa cho sự hình dung của máy trong chế độ đồ họa của GNU/Linux. Nó đã được MIT phát triển vào năm 1984 và thực tế tất cả các hệ thống

Trang 46/471

Page 47: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

UNIX đều có một phiên bản của nó. Các phát tán GNU/Linux có các phiên bản khác nhau như Xfree86 hoặc Xorg. Thông thường, X Window là một lớp đồ họa trung gian, giao phó lớp khác được biết như là trình quản lý các cửa sổ để hình dung ra các yếu tố của nó. Hơn nữa, chúng ta có thể kết hợp trình quản lý các cửa sổ với một loạt các chương trình ứng dụng và tiện ích để tạo ra những gì được biết tới như một môi trường đồ họa.

Linux chủ yếu có 2 môi trường đồ họa: GNOME và KDE. Mỗi môi trường là đặc thù trong đó nó dựa vào một thư viện các thành phần của riêng nó (các yếu tố khác nhau về môi trường như các cửa sổ, núm, danh sách, …): gtk+ (trong GNOME) và Qt (trong KDE), là những thư viện đồ họa chính được sử dụng cho các ứng dụng của chương trình trong các môi trường này. Nhưng bổ sung cho những môi trường này, có nhiều trình quản lý đồ họa và cửa sổ hơn nhiều: XCFE, Motif, Enlightement, BlackIce, FVWM …, nghĩa là có một dãy lớn các lựa chọn. Hơn nữa, mỗi thứ làm cho có khả năng để thay đổi hình thức (nhìn và cảm thấy) về các cửa sổ và các thành phần theo mong muốn của người sử dụng, hoặc ngay cả để tạo ra của riêng họ.

g) Phần mềm của người sử dụng: các phần mềm được nhà phân phối bổ sung vào, chủ yếu là nguồn mở, cho những nhiệm vụ chung (hoặc không thật chung, mà cho những lĩnh vực đặc biệt).

Những phát tán thông thường là quá lớn, có thể thấy hàng trăm tới hàng ngàn các ứng dụng dư thừa (nhiều phát tán có 1 đến 4 CD - khoảng 1 DVD các ứng dụng ngoài). Những ứng dụng này bao trùm thực tế hầu như tất cả các lĩnh vực, hoặc cho gia đình, hành chính hoặc khoa học. Và một số phát tán bổ sung thêm các phần mềm sở hữu độc quyền của bên thứ 3 (ví dụ, trong trường hợp của một bộ phần mềm dạng văn phòng – Office), phần mềm máy chủ được nhà phân phối chuẩn bị, ví dụ một máy chủ thư điện tử, máy chủ web an ninh …

Điều này giải thích cách mà mỗi nhà phân phối có xu hướng đưa ra những phiên bản khác nhau với phát tán của họ, ví dụ, đôi khi có những sự khác biệt giữa một phiên bản cá nhân, chuyên nghiệp hoặc cho máy chủ.

Thông thường, giá thành về tài chính không có ý nghĩa, vì các phần mềm chuẩn là đủ (với một chút công việc quản trị thêm); nhưng có thể là thú vị cho các công ty vì nó giảm được thời gian cài đặt và duy trì máy chủ và cũng tối ưu hóa các máy chủ và ứng dụng sống còn nào đó cho sự quản lý công nghệ thông tin của công ty.

1.6.1. Debian

Trường hợp của Debian [Debb] là đặc biệt, theo nghĩa đây là một phát tán được phân phối từ một cộng đồng không có các mục tiêu thương mại nào khác hơn là duy trì phát tán của mình và khuyến khích sử dụng các PMTD và PMNM.

Debian là một phát tán được một cộng đồng nhiệt thành những người sử dụng và những người phát triển của riêng nó, dựa trên cam kết sử dụng PMTD, hỗ trợ.

Dự án Debian đã được khởi xướng năm 1993 để tạo ra phát tán Debian GNU/Linux. Kể từ đó nó đã trở thành khá phổ biến và thậm chí những phát tán thương mại là đối thủ cạnh tranh khác về việc sử dụng, như Red Hat hoặc Mandrake. Vì nó là một dự án cộng đồng, sự phát triển của phát

Trang 47/471

Lưu ý

Chúng ta có thể thấy những tài liệu Hợp đồng Xã hội Debian tại: debian.org

Page 48: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tán này được quản lý bằng một loạt các chính sách hoặc qui định; có những tài liệu được biết như Hợp đồng Xã hội Debian, nhắc tới triết lý của toàn bộ dự án này và các chính sách của Debian, chỉ ra chi tiết cách để triển khai phát tán.

Phát tán Debian có liên quan chặt chẽ tới những mục tiêu của FSF và dự án PMTD GNU của nó; vì lý do này, họ luôn đưa vào “Debian GNU/Linux” trong tên của họ; hơn nữa, văn bản của hợp đồng xã hội đã phục vụ như là nền tảng cho những định nghĩa nguồn mở. Ở những nơi mà các chính sách của họ được quan tâm, thì bất kỳ ai mong muốn tham gia vào dự án của phát tán này, đều phải trung thành với chúng. Dù không phải là một cộng tác viên, thì những chính sách này có thể là thú vị vì chúng giải thích làm thế nào mà phát tán Debian hoạt động được.

Chúng ta cũng nên nhắc tới một khía cạnh thực tế nơi mà người sử dụng đầu cuối có quan tâm: Debian đã luôn là một phát tán khó khăn. Nó có xu hướng trở thành phát tán được các cao thủ Linux sử dụng, nghĩa là những người soi vào nhân và thực hiện những biến đổi, các lập trình viên mức thấp, những người mong muốn trở thành hàng đầu để thử nghiệm phần mềm mới, và để thử nghiệm những phát triển nhân còn chưa được công bố... nói một cách khác, tất cả cách thức của đám người mà họ là điên về GNU/Linux.

Các phiên bản sớm của Debian đã trở thành nổi tiếng vì khó cài đặt chúng. Sự thực là không đủ nỗ lực được thực hiện để làm cho nó dễ cho những người không phải là các chuyên gia. Nhưng với thời gian những thứ này đã được cải thiện. Bây giờ, việc cài đặt vẫn còn đòi hỏi một số lượng nhất định tri thức, nhưng có thể được thực hiện tuân theo các thực đơn (các thực đơn văn bản [text menus], không giống như những phiên bản khác mà chúng hoàn toàn là đồ họa), và có những chương trình để tạo điều kiện thuận lợi cho việc cài đặt các gói. Nhưng ngay cả như vậy, thì những nỗ lực đầu tiên có thể đôi lúc cũng là rất khó khăn rồi.

Thông thường, chúng có xu hướng sẽ là những biến thể (được gọi là mùi vị) của phát tán Debian. Hiện hành, có 3 nhánh của phát tán này: ổn định, thử nghiệm và không ổn định. Và, như các tên chỉ ra, ổn định là một phiên bản được sử dụng cho các môi trường sản xuất (hoặc những người sử dụng muốn tính ổn định), thử nghiệm đưa ra những phần mềm mới hơn, chúng đã được thử nghiệm một cách tối thiểu (có thể nói nó là một dạng phiên bản beta của Debian) mà sẽ sớm được đưa vào trong nhánh ổn định. Và nhánh không ổn định đưa ra những thứ mới nhất trong phần mềm, và những gói của nó thay đổi qua một khoảng thời gian ngắn; trong vòng 1 tuần, hoặc thậm chí là 1 ngày, vài gói có thể thay đổi. Tất cả các phát tán là cập nhật được từ một loạt các nguồn (CD, FTP, web) hoặc bằng một hệ thống được biết như là APT, quản lý các gói phần mềm Debian DEB. 3 phát tán này có những cái tên phổ biến hơn được chỉ định cho chúng (theo một dòng thời gian cụ thể của Debian):

• Etch (ổn định)

• Lenny (thử nghiệm)

• Sid (không ổn định)

Phiên bản ổn định trước đã được gọi là Sarge (3.1r6), trước đó là Woody (mà là 3.0). Phiên bản hiện hành nhất (trong năm 2007), là Debian GNU/Linux Etch (4.0). Những phiên bản được mở rộng nhất là Etch và Sid, mà chúng là 2 thái cực. Vào lúc này, Sid không được khuyến cáo cho các môi trường làm việc hàng ngày (sản xuất), vì nó có thể có những tính năng nằm ở nửa đường qua việc thử nghiệm và

Trang 48/471

Page 49: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

có thể hỏng (mặc dù điều này là không phổ biến); chính là phát tán mà các cao thủ GNU/Linux có xu hướng sử dụng. Hơn nữa, phiên bản này thay đổi hầu như hàng ngày; nó là thông thường, nếu một cập nhật hàng ngày được mong muốn, vì có tới từ 10-20 gói phần mềm mới mỗi ngày (hoặc còn hơn ở những thời điểm nhất định nào đó trong sự phát triển).

Etch có lẽ là sự lựa chọn tốt nhất cho những môi trường làm việc hàng ngày, nó được cập nhật theo chu kỳ để bao phủ các phần mềm hoặc các bản cập nhật mới (như những cập nhật an ninh). Thông thường, nó không có những phần mềm mới nhất được đưa vào cho tới khi cộng đồng đã thử nghiệm xong nó với một dải mở rộng các thử nghiệm.

Chúng ta sẽ bình luận qua về một số những đặc tính của phát tán này (những phiên bản mặc định hiện hành của Etch và Sid):

a) Phiên bản (ổn định) hiện hành cấu tạo từ 1 đến 21 đĩa CD (hoặc 3 đĩa DVD) của phiên bản mới nhất có sẵn của Etch. Thông thường có những khả năng khác nhau phụ thuộc vào tập hợp các phần mềm mà chúng ta thấy trong hỗ trợ vật lý (CD hoặc DVD) hoặc những gì chúng ta có thể sau đó tải về từ Internet, chỉ cần một CD cơ bản (CD cài đặt mạng), cộng với sự truy cập Internet để tải về phần còn lại theo yêu cầu. Phát tán này có thể mua được (ở mức giá tượng trưng cho sự hỗ trợ vật lý, bằng cách đó đóng góp để duy trì phát tán) hoặc có thể được tải về từ debian.org hoặc các site gương soi của nó.

b) Việt thử nghiệm các phiên bản không ổn định có xu hướng không phải từ các đĩa CD chính thống, mà một Debian ổn định có thể được chuyển đổi thành một phiên bản thử nghiệm hoặc không ổn định bằng việc thay đổi cấu hình hệ thống gói APT.

c) Nhân Linux: các nhân mặc định là loạt 2.4.x và được đưa vào một lựa chọn 2.6.x, nó bây giờ là mặc định trong những phiên bản mới nhất. Sự tập trung của Debian ổn định là để khuyến khích tính ổn định và để lại cho người sử dụng sự lựa chọn các sản phẩm phần mềm khác được cập nhật hơn nếu họ cần nó (trong các nhánh không ổn định hoặc thử nghiệm).

d) Định dạng đóng gói: Debian hỗ trợ một trong những định dạng đưa ra hầu hết các phương tiện, APT. Các gói phần mềm có một định dạng nổi tiếng là DEB. APT là một công cụ mức độ cao cho việc quản lý và duy trì một cơ sở dữ liệu của phiên bản có thể cài đặt được ngay hoặc sẵn sàng. Hơn nữa, hệ thống APT có thể lấy được phần mềm từ một loạt các nguồn, CD, FTP, hoặc web.

e) Hệ thống APT là cập nhật được bất kỳ lúc nào, từ một danh sách các nguồn phần mềm Debian (các nguồn APT), có thể là Debian mặc định (debian.org) hoặc các site của bên thứ 3. Bằng cách này chúng ta không bị kết nối tới một công ty hoặc hệ thống thanh toán thuê bao duy nhất.

f) Một số phiên bản được sử dụng là, ví dụ: Xfree86 (4.x), glibc (2.3.x)... Debian Sid có Xorg (7.1), glibc (2.3.x) …

g) Đối với môi trường đồ họa, nó chấp nhận GNOME 2.16.x (mặc định) hoặc KDE 3.3.x (Môi trường đồ họa K). Không ổn định với GNOME 2.18.x và KDE 3.5.x.

h) Về những ứng dụng thú vị, nó đưa vào đa số những thứ mà chúng ta có xu hướng phải tìm trong các phát tán GNU/Linux; trong Sid: các trình soạn thảo như emacs (và xemacs), trình biên dịch và các công cụ gcc, máy chủ web Apache, trình duyệt web Mozilla (hoặc Firefox), phần mềm cho việc chia sẻ tệp với Windows là Samba, ...

Trang 49/471

Page 50: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

i) Nó cũng đưa vào các bộ văn phòng như OpenOffice và KOffice.

j) Debian đưa vào nhiều tệp cấu hình được cá nhân hóa cho phát tán trong các thư mục /etc.

k) Debian sử dụng lilo, trình quản lý khởi động một cách mặc định, dù nó cũng có thể sử dụng Grub.

l) Cấu hình cho việc nghe các dịch vụ mạng TCP/IP, được hoàn tất, như trên hầu hết các hệ thống UNIX, với máy chủ inetd (/etc/intd.conf). Mặc dù nó cũng có một lựa chọn xinetd, đang trở thành lựa chọn được ưa chuộng hơn.

m) Có nhiều phát tán GNU/Linux hơn dựa trên Debian, vì hệ thống này có thể dễ dàng được áp dụng để tạo ra những phát tán nhỏ hơn hoặc lớn hơn với ít nhiều các phần mềm được thích nghi cho một phân khúc cụ thể nào đó. Một trong những phát tán nổi tiếng nhất là Knoppix, một phát tán với 1 đĩa CD duy nhất, dạng Live CD (chạy trên đĩa CD), thường được sử dụng cho việc trình diễn GNU/Linux, hoặc để thử nghiệm trên một máy tính không cần cài đặt nó trước đó, vì nó chạy từ đĩa CD, mặc dù nó cũng có thể được cài đặt trên đĩa cứng và trở thành một chuẩn Debian. LinEx là một phát tán khác đã trở thành khá nổi tiếng vì sự phát triển của nó được hỗ trợ từ chính quyền địa phương của cộng đồng tự trị Extremadura. Cùng lúc, chúng ta thấy Ubuntu, một trong những phát tán đã đạt được ảnh hưởng lớn nhất (còn vượt qua khỏi Debian trong một vài khía cạnh), vì sự dễ dàng của nó cho việc xây dựng một máy tính để bàn thay thế.

Lưu ý

Debian có thể được sử dụng như một nền tảng cho những phát tán khác; ví dụ, Knoppix là một phát tán dựa trên Debian, có khả năng chạy từ đĩa CD mà không phải cài đặt nó lên ổ cứng. LinEx là một phát tán Debian được thích nghi cho cộng đồng tự trị của Extremadura như một phần của dự án của nó để áp dụng PMNM. Và Ubuntu là một phát tán được tối ưu hóa cho các môi trường máy để bàn.

Trang 50/471

Page 51: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.6.2. Fedora Core

Hãng Red Hat Inc. [Redh] là một trong những công ty thương mại chính trong thế giới GNU/Linux, với một trong những phát tán thành công nhất. Bob Young và Marc Ewing đã thành lập ra Red Hat Inc. vào năm 1994. Họ đã quan tâm trong các mô hình PMNM và nghĩ nó có thể là cách tốt để kinh doanh. Sản phẩm chính của họ là phát tán Red Hat Linux (ngắn gọn gọi là Red Hat), nó sẵn sàng cho các phân khúc khác nhau của thị trường, những người sử dụng cá nhân (các phiên bản cá nhân và chuyên nghiệp), hoặc các công ty vừa và lớn (với phiên bản Doanh nghiệp - Enterprise và các phiên bản phụ khác nhau của hãng).

Red Hat Linux là phát tán thương mại chính của Linux, được hướng tới cả máy để bàn cá nhân và các thị trường máy chủ cao cấp. Hơn nữa, hãng Red Hat là một trong những công ty cộng tác nhiều nhất trong sự phát triển Linux, khi mà một loạt các thành viên quan trọng của cộng đồng làm việc cho nó.

Mặc dù họ làm việc với một mô hình nguồn mở, thì đây là một công ty với các mục đích thương mại, nó giải thích vì sao họ có xu hướng bổ sung các giá trị cho phát tán cơ bản của họ thông qua các hợp đồng hỗ trợ, cập nhật các thuê bao và các phương tiện khác. Đối với các doanh nghiệp, họ bổ sung các phần mềm được tùy biến (hoặc các phần mềm của riêng họ), để thích nghi nó cho những nhu cầu của công ty, hoặc thông qua các máy chủ được tối ưu hóa hoặc các phần mềm tiện ích mà Red Hat sở hữu.

Vào một thời điểm chắc chắn (cuối năm 2003), Red Hat Linux (phiên bản 9.x), đã quyết định dừng phiên bản GNU/Linux cho máy để bàn của hãng, và đã tư vấn cho các khách hàng của hãng chuyển sang các phiên bản doanh nghiệp của hãng, mà tiếp tục sẽ là những phiên bản được hỗ trợ chính thức.

Tại thời điểm đó, Red Hat đã quyết định khởi tạo dự án để mở cho cộng đồng biết là Fedora [Fed], với một quan điểm để sản sinh ra một phát tán được cộng đồng dẫn dắt (dạng như Debian, dù vì những mục đích khác nhau), được gọi là Fedora Core. Trên thực tế, mục tiêu là để tạo ra một phòng thí nghiệm phát triển mở cho cộng đồng có khả năng để thử nghiệm phát tán này và cùng lúc để chỉ dẫn cho những phát triển thương mại trong các phát tán doanh nghiệp của hãng.

Ở mức độ nào đó, các chỉ trích đã chỉ ra rằng cộng đồng này đang bị lợi dụng như là những người thử phiên bản beta cho các công nghệ mà sau đó sẽ được đưa vào trong các sản phẩm thương mại. Hơn nữa, mô hình này sau đó được các công ty khác sử dụng để tạo ra các mô hình đúp của các phát tán cộng đồng và thương mại. Những ví dụ như OpenSuSE xuất hiện (dựa trên SuSE thương mại), hoặc Freespire (dựa trên Linspire).

Trang 51/471

Lưu ý

Xem: http://fedoraproject.org

Page 52: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thông thường, sự song hành của cộng đồng Red Hat và Fedora thể hiện một tầm nhìn bảo thủ nào đó (ít nổi bật trong Fedora) đối với những yếu tố phần mềm mà nó bổ sung vào phát tán này, vì thị trường chính của hãng là các doanh nghiệp, và hãng cố gắng làm cho phát tán của mình càng ổn định càng tốt, ngay cả nếu nó có nghĩa là không có các phiên bản mới nhất. Những gì hãng làm là như một giá trị gia tăng cho sự gỡ rối một cách rộng rãi cho nhân Linux với phát tán của hãng và để tạo ra những chỉnh sửa cho đúng và các bản vá để cải thiện tính ổn định của phát tán. Đôi khi, hãng còn có thể thậm chí vô hiệu hóa một chức năng (hoặc trình điều khiển) của nhân, nếu hãng coi nó là không đủ ổn định. Hãng cũng đưa ra nhiều tiện ích trong môi trường đồ họa và các chương trình đồ họa của riêng hãng, bao gồm một vài công cụ quản trị; đối với các môi trường đồ họa, hãng sử dụng cả GNOME (mặc định) và KDE, nhưng thông qua môi trường được sửa đổi riêng của hãng gọi là BlueCurve, làm cho 2 môi trường đồ họa này thực tế là y như nhau (các cửa sổ, các thực đơn …).

Phiên bản chúng ta sử dụng sẽ là mới nhất đang có sẵn của Fedora Core, sẽ gọi đơn giản là Fedora. Nói chung, những phát triển và chức năng được duy trì có xu hướng sẽ khá tương tự trong các phiên bản được tung ra sau này, nghĩa là hầu hết các bình luận sẽ có thể áp dụng được cho các phiên bản khác nhau qua thời gian. Chúng ta sẽ tính tới việc cộng đồng Fedora [Fed] đang cố gắng đáp ứng một lịch trình khoảng 6 tháng để đưa ra mỗi phiên bản mới. Và có một sự đồng thuận nhất định về những gì những tính năng mới sẽ được đưa vào.

Mặt khác, Red Hat trao các phiên bản máy để bàn của hãng vào tay cộng đồng và tập trung hoạt động của hãng vào các phiên bản doanh nghiệp (Red Hat Linux Enterprise WS, ES và AS).

Hãy xem qua một ít các đặc tính của phát tán Fedora Core:

a) Phát tán hiện hành tạo thành từ 5 đĩa CD, đĩa đầu là đĩa khởi động, nó phục vụ cho việc cài đặt. Cũng có các đĩa CD bổ sung chứa tài liệu và mã nguồn của hầu hết các phần mềm được cài đặt với phát tán. Phát tán này cũng được cung cấp trên một đĩa DVD.

b) Nhân Linux: nó sử dụng các nhân loạt 2.6.x, có thể được cập nhật với hệ thống quản lý gói rpm (xem phần về nhân) (thông qua tiện ích yum). Red Hat đưa ra nhân cho nhiều thử nghiệm và tạo các bản vá để giải quyết các vấn đề, thường cũng được kết hợp vào phiên bản của cộng đồng Linux, khi nhiều cộng tác viên quan trọng của cộng đồng Linux cũng làm việc cho Red Hat.

c) Định dạng đóng gói: Red Hat phân phối phần mềm của hãng thông qua hệ thống đóng gói RPM (hệ thống quản lý gói red hat - red hat pakage manager), được quản lý bằng lệnh rpm hoặc các tiện ích yum (sẽ bình luận về điều này trong phần về quản trị cục bộ). RPM là một trong những hệ thống đóng gói sẵn sàng nhất (tương tự như deb của Debian), và một số hệ thống UNIX sở hữu độc quyền đang đưa nó vào. Về cơ bản, hệ thống RPM duy trì một cơ sở dữ liệu nhỏ với các gói được cài đặt và kiểm tra gói được cài đặt đó với lệnh rpm để xem nó đã được cài đặt hay chưa hoặc có bị xung đột với bất kỳ gói phần mềm nào khác hay không, hoặc mặt khác, xem một gói phần mềm hoặc phiên bản được yêu cầu với sự cài đặt này là không bị mất. Gói RPM về cơ bản là một tập hợp các tệp nén chứa các thông tin về những phụ thuộc hoặc phần mềm mà nó yêu cầu.

d) Để khởi động, nó sử dụng các scripts dạng System V (sẽ xem trong phần về quản trị cục bộ).

e) Một số phiên bản được sử dụng là: Xorg (7.x), glibc (2.5.x) …

f) Môi trường đồ họa GNOME (môi trường đồ họa mặc định) và KDE như một lựa chọn.

Trang 52/471

Page 53: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

g) Ở những nơi mà các ứng dụng thú vị được quan tâm, nó đưa vào hầu hết những thứ chúng ta có xu hướng tìm với hầu hết tất cả các phát tán GNU/Linux: các trình soạn thảo như emacs (và xemacs), trình biên dịch và các công cụ gcc, máy chủ web Apache, trình duyệt web Firefox/Mozilla, phần mềm Samba cho việc chia sẻ các tệp với Windows...

h) Nó cũng đưa vào các bộ văn phòng như OpenOffice và KOffice.

i) Các phần mềm bổ sung có thể có được thông qua các dịch vụ nâng cấp yum (cùng với những dịch vụ khác) theo một cách tương tự đối với hệ thống APT của Debian hoặc sử dụng các công cụ cập nhật khác, hoặc từ Internet, có sử dụng các gói RPM được thiết kế cho phát tán này.

j) Fedora sử dụng trình khởi động Grub một cách mặc định để khởi động máy.

k) Red Hat đã thay thế cấu hình cho việc cấp phép cho các dịch vụ mạng TCP/IP, đối với hầu hết các hệ thống UNIX sử dụng máy chủ inetd (/etc/inetd.conf), với xinetd, nó có một cấu hình theo module (directory/etc/xinetd.d).

l) Về khởi động có một chương trình gọi là Kudzu, nó kiểm tra bất kỳ thay đổi nào trong phần cứng và dò tìm những phần cứng mới được cài đặt. Chúng ta mong đợi nó sẽ được đưa ra khỏi các phiên bản sau, vì bây giờ có một API mới gọi là HAL, thực hiện được chức năng này.

m) Có một vài phát tán nữa dựa trên Red Hat gốc, duy trì được nhiều đặc tính của nó, đặc biệt là Mandriva (trước kia là Mandrake): một phát tán tiếng Pháp, gốc ban đầu đã dựa vào Red Hat và nó cùng với Red Hat vẫn là những hãng hàng đầu về ưu tiên của người sử dụng (đặc biệt cho công việc của máy để bàn). Mandriva phát triển phần mềm riêng của nó và nhiều thuật sĩ (wizard) để giúp cài đặt và quản trị hầu hết các nhiệm vụ chung nhất, tách biệt bản thân nó khỏi gốc ban đầu của nó dựa trên Red Hat. Cùng lúc, các phiên bản doanh nghiệp của Red Hat cũng đã làm gia tăng một loạt các phát tán tự do rất phổ biến trong các môi trường máy chủ, như CentOS [Cen] (nó cố gắng duy trì 100% tính tương thích với Red Hat doanh nghiệp), và Scientific Linux [Sci] (đặc chủng trong điện toán khoa học cho những dự án nghiên cứu khoa học). Như đối với hệ thống gói, đáng lưu ý là hệ thống rpm được sử dụng cho một số lượng lớn các phát tán, bao gồm cả SuSE.

Trang 53/471

Page 54: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Liên quan tới phát tán cộng đồng Fedora Core, và bản gốc thương mại của nó trong Red Hat:

a) Đây là một phát tán được một cộng đồng các lập trình viên và người sử dụng tạo ra và phát triển; nó không có bất kỳ sự hỗ trợ nào cho việc cập nhật hoặc duy trì về phần của nhà sản xuất. Khía cạnh này phụ thuộc vào cộng đồng, như trong trường hợp của phát tán Debian GNU/Linux.

b) Các phiên bản này được sản xuất khá nhanh, và những phiên bản mới của phát tán này được mong đợi khoảng 6 tháng một lần.

c) Nó cũng sử dụng hệ thống quản trị gói RPM. Về qui trình cập nhật các gói hoặc cài đặt các gói mới khác của phát tán này, có thể đạt được bằng những công cụ khác, thông qua cập nhật, thông qua các kênh cập nhật của Fedora hoặc các hệ thống cập nhật mới Yum và trong một số trường hợp APT (có sẵn từ Debian, nhưng nó làm việc với các tệp RPM).

d) Các khía cạnh kỹ thuật khác hơn nữa (một số có trong các chương sau) có thể thấy trong các lưu ý của phiên bản Fedora Core.

Trang 54/471

Lưu ý

Xem các lưu ý về phiên bản Fedora tại: http://docs.fedoraproject.org/

Page 55: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1.7. Chúng ta sẽ nhìn vào những gì...

Đã nghiên cứu giới thiệu “triết lý” đối với thế giới nguồn mở và lịch sử của các hệ thống UNIX và GNU/Linux, cũng như việc xác định những nhiệm vụ của một người quản trị hệ thống, chúng ta sẽ nhìn vào cách để quản lý những nhiệm vụ điển hình có liên quan trong việc quản trị các hệ điều hành GNU/Linux.

Tiếp theo, chúng ta sẽ nhìn vào những lĩnh vực khác nhau có liên quan trong việc quản trị các hệ điều hành GNU/Linux. Đối với từng lĩnh vực, chúng ta sẽ cố gắng xem xét một ít những nền tảng cơ bản về lý thuyết, sẽ giúp chúng ta giải thích những nhiệm vụ cần phải được thực hiện và để hiểu cách làm việc của các công cụ sẽ sử dụng. Mỗi chủ đề sẽ đi kèm với một dạng sách chỉ dẫn, nơi mà chúng ta sẽ nhìn vào một phần công việc nhỏ hoặc cách một số công cụ được sử dụng. Chúng ta sẽ ghi nhớ một cách đơn giản, như được nhắc tới trong phần giới thiệu, lĩnh vực quản trị là rất rộng và bất kỳ sự mong muốn nào bao trùm nó hoàn toàn (như mong muốn) sẽ thất bại vì kích cỡ hạn chế của nó; vì thế, bạn sẽ thấy một thư mục tham khảo thêm nhiều cho từng chủ đề (ở dạng của các cuốn sách, các trang web, các web site, hướng dẫn làm thế nào - howto …), nơi có khả năng mở rộng tri thức của bạn từ sự giới thiệu ngắn mà chúng ta đã thực hiện về chủ đề này.

Các chủ đề chúng ta sẽ xem xét là như sau:

• Theo phần về chuyển đổi, chúng ta sẽ có được viễn cảnh của dạng các hệ thống máy tính đang được sử dụng và trong những môi trường công việc khác nhau; chúng ta cũng sẽ nhìn vào cách mà các hệ điều hành GNU/Linux thích nghi tốt hơn hoặc xấu hơn đối với từng hệ thống và sẽ xem xét một sự tiến thoái lưỡng nan đầu tiên khi nói về việc giới thiệu một hệ điều hành GNU/Linux: liệu chúng ta có thay đổi được hệ thống mà chúng ta đã có hoặc chúng ta có thực hiện nó theo các giai đoạn với việc cùng chung sống cho cả 2 hay không?

• Theo phần về các công cụ mà chúng ta sẽ nghiên cứu (về cơ bản) tập hợp các công cụ người quản trị sẽ phải sống với (và/hoặc chịu với) chúng hàng ngày, và có thể bao gồm cả hộp công cụ của người quản trị. Chúng ta sẽ nói về các chuẩn GNU/Linux, chúng sẽ cho phép chúng ta học về các khía cạnh chung của tất cả các phát tán GNU/Linux, nói cách khác, những gì có thể mong đợi để thấy trong bất kỳ hệ thống nào. Các công cụ cơ bản khác sẽ là: các trình soạn thảo đơn giản (hoặc không quá đơn giản); một số lệnh cơ bản cho việc học về tình trạng các hệ thống hoặc cho việc có được thông tin được lọc phụ thuộc vào những gì chúng ta quan tâm; việc lập trình các scripts lệnh (hoặc các scripts bó lệnh) sẽ cho phép tự động hóa các nhiệm vụ; những đặc tính của các ngôn ngữ mà chúng ta có thể thấy trong các công cụ hoặc ứng dụng quản trị; các qui trình biên dịch chương trình cơ bản dựa trên các mã nguồn; các công cụ cho việc quản lý các phần mềm được cài đặt, cũng như việc bình luận về những sự tiến thoái lưỡng nan đối với việc sử dụng các công cụ đồ họa hoặc các dòng lệnh.

• Theo phần liên quan tới nhân, chúng ta sẽ quan sát nhân Linux và cách mà, bằng việc chỉnh sửa nó, có khả năng tinh chỉnh nó tốt hơn cho phần cứng hoặc cho các dịch vụ mà chúng ta muốn cung cấp từ hệ thống.

Trang 55/471

Page 56: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Theo tiêu đề về quản trị cục bộ, chúng ta sẽ làm việc với những khía cạnh về sự quản trị có thể coi là “cục bộ” đối với hệ thống của chúng ta. Những khía cạnh này có thể bao gồm hầu hết các nhiệm vụ điển hình của người quản trị khi nói về việc quản lý những yếu tố như là người sử dụng, các máy in, đĩa, phần mềm, qui trình …

• Trong phần về mạng, chúng ta sẽ xem xét những nhiệm vụ quản trị có liên quan tới hệ thống của chúng ta và hàng xóm của nó trong mạng, bất kể là dạng nào, và chúng ta sẽ xem xét những dạng kết nối khác nhau có khả năng có với các hệ thống hoặc các dịch vụ hàng xóm lân cận mà chúng ta có thể đưa ra hoặc nhận từ chúng.

• Trong phần về các máy chủ, chúng ta sẽ xem một vài cấu hình điển hình của các máy chủ mà chúng ta có thể thường thấy trong một hệ điều hành GNU/Linux.

• Trong phần về các dữ liệu, chúng ta sẽ xem xét một trong những chủ đề thích hợp nhất ngày nay, lưu trữ dữ liệu và các cơ chế tham khảo mà các hệ điều hành GNU/Linux có thể đưa ra cho chúng ta, đặc biệt, các hệ thống cơ sở dữ liệu và cơ chế kiểm soát phiên bản.

• Trong phần về an ninh, chúng ta sẽ quản lý một trong những vấn đề phù hợp và quan trọng nhất ngày nay liên quan tới toàn bộ hệ điều hành GNU/Linux. Sự tồn tại của một thế giới được Internet kết nối đưa tới một loạt các mối nguy hiểm nghiêm trọng cho việc hoạt động đúng của các hệ thống và làm phát sinh vấn đề về độ tin cậy, cả của các hệ thống và của các dữ liệu mà chúng ta có thể nhận được hoặc đưa ra thông qua mạng. Vì thế, các hệ thống của chúng ta cần phải cung cấp những mức độ an ninh tối thiểu và ngăn ngừa sự truy cập không được phép hoặc việc quản lý các dữ liệu của chúng ta. Chúng ta sẽ xem những dạng thường thấy nhất của các cuộc tấn công, các chính sách về an ninh có khả năng được tăng cường và các công cụ có khả năng giúp chúng ta kiểm soát mức độ an ninh của chúng ta.

• Trong phần về tối ưu hóa, chúng ta sẽ thấy cách, vì số lượng lớn các máy chủ và các dịch vụ được đưa ra, cũng như số lượng lớn các môi trường hệ thống được thiết kế cho chúng, các hệ điều hành GNU/Linux có xu hướng có nhiều thông số chức năng gây ảnh hưởng tới tốc độ thực thi của các ứng dụng và dịch vụ được đưa ra. Chúng ta có thể (hoặc nên) cố gắng rút ra hiệu năng tối đa bằng việc phân tích các cấu hình của riêng hệ thống để chỉnh chúng cho chất lượng các dịch vụ mà chúng ta muốn đưa ra cho các khách hàng.

• Trong phần về bó máy (clustering), chúng ta sẽ xem xét một số kỹ thuật điện toán hiệu năng cao được đưa ra dựa trên các hệ điều hành GNU/Linux, được sử dụng một cách rộng rãi trong các lĩnh vực của điện toán khoa học và đang trở thành thường xuyên hơn được sử dụng trong một số lượng lớn các nền công nghiệp (dược học, hóa học, vật liệu, …), cho việc nghiên cứu và phát triển các sản phẩm mới. Bổ sung cho việc tổ chức một loạt các hệ điều hành GNU/Linux vào trong các bó máy, để khuyếch đại hiệu năng của các hệ thống riêng rẽ, bằng việc tạo các nhóm và các hệ thống làm cho có khả năng để gia tăng các dịch vụ được đưa ra cho một yêu cầu gia tăng của khách hàng.

Trang 56/471

Page 57: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1. Đọc tuyên ngôn của Debian tại: http://www.debian.org/social_contract

2. Đọc về những phát tán khác nhau dựa trên Debian: các biến thể Knoppix, Linex, Ubuntu. Ngoài website của từng phát tán, địa chỉ www.distrowatch.com đưa ra một chỉ dẫn tốt cho những phát tán và tình trạng của chúng, cũng như các phần mềm mà chúng đưa vào. Thông qua trang web này hoặc bằng việc truy cập các cộng đồng hoặc các nhà sản xuất khác nhau chúng ta có thể có được các ảnh ISO của các phát tán khác nhau.

Trang 57/471

Page 58: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu và thông tin khác (xem các tham chiếu theo thư mục tham khảo):

[LPD] Dự án Tài liệu Linux (LDP), bộ sưu tập các chỉ dẫn các cách làm (Howto), các sách chỉ dẫn bao trùm bất kỳ khía cạnh nào của GNU/Linux.

[OSDb] Cộng đồng với một loạt các website, thông tin, sự phát triển, các dự án, …

[Sla] Site thông tin của cộng đồng nguồn mở và các site chung về CNTT trên Internet.

[New] [Bar] Thông tin nguồn mở.

[Fre] [Sou] Danh sách các dự án nguồn mở.

[Dis] Việc giám sát các phát tán GNU/Linux và các tính năng mới của các gói phần mềm. Và những liên kết tới các site cho việc tải về các ảnh ISO các đĩa CD/DVD của các phát tán GNU/Linux.

[His] [Bul] [LPD] Tài liệu chung và các cộng đồng người sử dụng.

[Mag03] [Jou03] Các tạp chí GNU/Linux.

*****

[LPD] The Linux Documentation Project (LDP), collection of Howtos, manuals and guides covering any aspect of GNU/Linux.

[OSDb] Community with various websites, news, developmnets, projects etc.

[Sla] Open Source community news site and general sites on IT and the Internet.

[New] [Bar] Open Source News.

[Fre] [Sou] List of Open Source projects.

[Dis] Monitoring of GNU/Linux distributions and new features of the software packages. And links to the sites for downloading the ISO images of the GNU/Linux distribution Cds/DVDs.

[His] [Bul] [LPD] General documentation and communities of users.

[Mag03] [Jou03] GNU/Linux magazines.

Trang 58/471

Page 59: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2 Chuyển đổi và cùng tồn tại với các hệ thống không Linux

Josep Jorba Esteve PID_00148467

Migration and coexistence with non - Linux system

Josep Jorba Esteve PID_00148467

Trang 59/471

Page 60: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Đã có một giới thiệu ngắn gọn về các hệ điều hành GNU/Linux, bước tiếp theo là để tích hợp chúng vào trong môi trường làm việc như các hệ thống sản xuất. Theo hệ thống hiện hành đang sử dụng, chúng ta có thể coi hoặc như là một sự chuyển đổi sang các hệ điều hành GNU/Linux hoặc một sự cùng tồn tại thông qua các dịch vụ tương thích.

Chuyển đổi sang môi trường GNU/Linux có thể được tiến hành một cách từng nấc bằng việc thay thế các dịch vụ từng phần hoặc bằng việc thay thế mọi thứ trong hệ thống cũ bằng những thứ tương đương của GNU/Linux.

Trong các môi trường phân tán hiện hành, mối quan tâm phù hợp nhất là các môi trường máy trạm/máy chủ. Bất kỳ nhiệm vụ nào trong hệ thống toàn cầu được quản trị từ một hoặc nhiều máy chủ chuyên dụng, với các ứng dụng hoặc người sử dụng truy cập một cách trực tiếp tới các dịch vụ được đưa ra.

Về môi trường làm việc, hoặc trong trường hợp đơn giản nhất của người sử dụng riêng rẽ hoặc trường hợp phức tạp hơn của một môi trường kinh doanh, mọi môi trường sẽ đòi hỏi một tập hợp các dịch vụ mà chúng ta sẽ cần phải lựa chọn, sau đó chỉnh các máy tính trạm và chủ sao cho mọi người có thể truy cập tới chúng hoặc sử dụng chúng.

Các dịch vụ có thể nằm ở những khía cạnh khác nhau và có xu hướng sẽ là đa dạng cho việc chia sẻ các tài nguyên hoặc thông tin. Các máy chủ tệp, máy chủ in, máy chủ web, máy chủ tên, máy chủ thư, … là thông thường.

Người quản trị sẽ thường chọn một tập hợp các dịch vụ cần phải trình bày trong một môi trường làm việc theo các nhu cầu của người sử dụng đầu cuối và/hoặc tổ chức; và phải thiết lập sự hỗ trợ đúng đắn cho hạ tầng, ở dạng các dịch vụ mà chúng hỗ trợ tải làm việc được mong đợi.

Trang 60/471

Page 61: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.1. Các hệ thống máy tính: các môi trường

Trong quá trình cài đặt một số phát tán GNU/Linux, thường thấy là chúng ta được hỏi về dạng môi trường hoặc nhiệm vụ mà hệ thống sẽ chuyên tâm phục vụ, thường cho phép chúng ta chọn một tập hợp phụ các phần mềm sẽ được cài đặt cho chúng ta một cách mặc định, vì nó phù hợp nhất cho công việc được dự tính. Chúng ta sẽ thường được hỏi liệu hệ thống sẽ được sử dụng như là một:

a) Máy trạm làm việc (workstation): dạng hệ thống này thường kết hợp các ứng dụng đặc thù sẽ được sử dụng thường xuyên nhất. Hệ thống này về cơ bản chuyên để chạy các ứng dụng và một tập hợp con các dịch vụ mạng.

b) Máy chủ: về cơ bản nó tích hợp hầu hết các dịch vụ mạng hoặc, trong mọi trường hợp, một dịch vụ cụ thể, sẽ là dịch vụ chính của hệ thống.

c) Đơn vị tính toán chuyên dụng: các ứng dụng, kết quả trả về, ứng dụng khoa học, đồ họa CAD ...

d) Máy trạm đồ họa (Graphics station): môi trường đồ họa với các ứng dụng đòi hỏi sự tương tác với người sử dụng ở dạng đồ họa.

Thường có thể thiết lập hệ điều hành GNU/Linux của chúng ta với một hoặc nhiều khả năng này.

Thông thường hơn, nếu chúng ta đã phải tách biệt các môi trường mạng [Mor03] nơi mà một hệ điều hành GNU/Linux có thể được sử dụng, thì chúng ta có thể xác định được 3 dạng chính của các môi trường: máy trạm, máy chủ và môi trường đồ họa.

Cũng có thể đưa vào dạng các hệ thống khác, thường được gọi là các thiết bị nhúng hoặc các hệ thống di động nhỏ như thiết bị số cá nhân PDA, điện thoại di động, điều khiển video cầm tay … GNU/Linux cũng đưa ra hỗ trợ cho những thiết bị này, với các nhân được cá nhân hóa để nhỏ hơn cho chúng.

Về 3 môi trường chính trên, hãy nhìn vào cách mỗi môi trường của các hệ thống máy tính này được phát triển trong một môi trường GNU/Linux:

Ví dụ

Ví dụ, chúng ta nên nhớ công việc ban đầu được công ty Sharp thực hiện trên các mô hình Zaurus của nó, một PDA với các tính năng Linux cao cấp (có 4 hoặc 5 mô hình trên thị trường). Hoặc cũng có những sáng kiến Linux khác ở dạng nhúng như các máy bán hàng đầu cuối POS (Point of Sale). Hoặc các bộ điều khiển video như GP2X, và sự hỗ trợ Linux của Sony Playstation 3. Còn cả những nền tảng điện thoại thông minh/PDA mới như Google Android, Nokia Maemo, Intel Moblin.

1) Một hệ thống dạng máy trạm có xu hướng sẽ là một máy hiệu năng cao được sử dụng cho một nhiệm vụ cụ thể nào đó thay vì một tập hợp các nhiệm vụ. Máy trạm kinh điển được cấu tạo từ một máy hiệu năng cao với các phần cứng đặc biệt phù hợp cho nhiệm vụ cần thiết phải làm; nó từng

Trang 61/471

Lưu ý

Các hệ điều hành GNU/Linux có thể chuyên dụng cho các chức năng hoạt động của máy chủ, máy trạm hoặc môi trường đồ họa.

Page 62: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thường là một máy SPARC của Sun, RISC của IBM hoặc máy Graphics của Silicon (trong số những thứ khác) với những biến thể của UNIX sở hữu độc quyền. Các máy tính giá thành cao này đã được định hướng vào một phân khu rõ ràng của các ứng dụng, hoặc thiết kế đồ họa 3D (trong trường hợp của Silicon hoặc Sun) hoặc các cơ sở dữ liệu (IBM hoặc Sun). Ngày nay, hiệu năng của nhiều máy tính cá nhân hiện hành là có thể so sánh được (dù không ngang bằng) với các hệ thống này và ranh giới giữa một trong những hệ thống này và một máy tính cá nhân PC là không còn rõ ràng nữa, nhờ sự tồn tại của GNU/Linux như một giải pháp thay thế cho các phiên bản UNIX sở hữu độc quyền.

2) Một hệ thống dạng máy chủ có một mục tiêu đặc biệt, để đưa ra các dịch vụ cho các máy tính khác trên mạng: nó đưa ra một sự khác biệt rõ ràng thiết lập nên các đặc tính hoặc chức năng từ những máy tính khác. Trong các hệ thống máy tính nhỏ (ví dụ, với ít hơn 10 máy), không thông thường để có một hệ thống máy chủ độc nhất, và nó có xu hướng sẽ được chia sẻ với các chức năng khác, ví dụ, như một dạng máy với môi trường đồ họa. Các hệ thống tầm trung (một vài chục máy) có xu hướng có một hoặc nhiều máy hơn chuyên dụng cho việc hoạt động như một máy chủ, hay như một máy độc nhất tập trung tất cả các dịch vụ (thư điện tử, web …), hay như một cặp máy chuyên để chia sẻ các dịch vụ chính.

Trong các hệ thống lớn (hàng trăm hoặc thậm chí hàng ngàn máy), tải làm cho nó cần phải có một nhóm lớn các máy chủ, với từng nhóm thường là toàn tâm cho một dịch vụ cụ thể nào đó, hoặc ngay cả với một tập hợp các máy toàn tâm cho một dịch vụ. Hơn nữa, nếu những dịch vụ này được cung cấp cả bên trong lẫn bên ngoài tổ chức, thông qua sự truy cập của các khách hàng một cách trực tiếp hoặc mở đối với Internet, phụ thuộc vào tải công việc được hỗ trợ, chúng ta sẽ sử dụng tới các giải pháp dạng đa nhân SMP (các máy tính với nhiều vi xử lý) hoặc dạng bó máy (việc nhóm các máy tính để phân phối một tải dịch vụ cụ thể nào đó).

Những dịch vụ chúng ta có thể cần trong nội bộ (hoặc bên ngoài) có thể gồm (trong số những thứ khác) các chủng loại dịch vụ sau:

a) Các ứng dụng: máy chủ có thể chạy các ứng dụng, còn từ các máy trạm, chúng ta chỉ quan sát được sự vận hành của chúng và tương tác với chúng. Ví dụ, có thể là các dịch vụ của các máy đầu cuối và các ứng dụng chạy web.

b) Các tệp: chúng ta có một không gian được chia sẻ và có thể truy cập được từ bất kỳ điểm nào của mạng, nơi mà chúng ta có thể lưu trữ/phục hồi các tệp của chúng ta.

c) Cơ sở dữ liệu: sự tập trung hóa các dữ liệu cho sự tham vấn hoặc sản xuất của các ứng dụng hệ thống trên mạng (hoặc cho các dịch vụ khác).

d) Việc in ấn: có những tập hợp các máy in với những hàng đợi và những công việc in ấn được gửi tới chúng từ bất kỳ điểm nào của mạng được quản trị.

e) Thư điện tử: đưa ra các dịch vụ cho việc nhận, gửi hoặc gửi lại các thư đến hoặc đi.

f) Web: máy chủ (hoặc các máy chủ) thuộc về tổ chức để sử dụng nội bộ bên trong hoặc bên ngoài với các khách hàng.

g) Thông tin mạng: với các tổ chức lớn thì điều sống còn phải tìm ra các dịch vụ được chào hoặc các tài nguyên được chia sẻ; hoặc bản thân những người sử dụng, khi họ cần các dịch vụ được bản địa hóa để có khả năng tham vấn cho những thuộc tính của từng dạng mục đích.

Trang 62/471

Page 63: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

h) Các dịch vụ tên: các dịch vụ được yêu cầu đặt tên và dịch sang các tên khác mà vẫn nhận biết được chính các tài nguyên đó.

i) Các dịch vụ truy cập ở xa: trong trường hợp không có sự truy cập trực tiếp, chúng ta cần những phương thức thay thế cho phép tương tác được từ bên ngoài, trao cho chúng ta sự truy cập tới hệ thống mà chúng ta muốn.

j) Các dịch vụ sinh ra tên: khi đặt tên cho các máy, ví dụ, có thể có nhiều phương án khác nhau, hoặc chúng có thể không luôn là y hệt nhau. Chúng ta cần cung cấp các phương thức để xác định chúng được một cách rõ ràng.

k) Các dịch vụ truy cập Internet: nhiều tổ chức không có lý do cho sự truy cập trực tiếp và chỉ có sự truy cập thông qua các cổng (gateways) hoặc các máy chủ ủy quyền (proxy).

l) Các dịch vụ lọc: các biện pháp an ninh để lọc thông tin không đúng hoặc thông tin mà ảnh hưởng tới an ninh của chúng ta.

3) Một máy dạng môi trường đồ họa có thể đơn giản là một máy được sử dụng cho các nhiệm vụ tính toán thường ngày (như máy tính ở nhà hoặc máy tính cá nhân ở văn phòng của chúng ta).

Ví dụ

Ví dụ, chúng ta có thể thiết lập thứ sau đây như những nhiệm vụ chung (bao gồm theo một số các chương trình GNU/Linux được sử dụng nhiều nhất:

• Các nhiệm vụ văn phòng: cung cấp các phần mềm kinh điển của một bộ văn phòng: trình soạn thảo văn bản, bảng tính, trình chiếu, một cơ sở dữ liệu nhỏ … Chúng ta có thể thấy các bộ như OpenOffice (tự do), StarOffice (phải trả tiền, được Sun sản xuất), KOffice (từ KDE), hoặc một loạt các chương trình như Gnumeric, Abiword có khả năng tạo ra một phần của một bộ phần mềm văn phòng của GNOME (được biết như GNOME Office).

• Trình duyệt web: các trình duyệt như Mozilla Firefox, Konqueror, Epiphany …

• Hỗ trợ phần cứng (USB, các thiết bị lưu trữ …). Được hỗ trợ trong GNU/Linux bằng các trình điều khiển phù hợp, thường được cung cấp trong nhân hoặc từ các nhà sản xuất. Cũng có những công cụ phân tích phần cứng mới như kudzu (Fedora/Red Hat) hoặc discover (Debian). Đa phương tiện và giải trí (đồ họa, xử lý ảnh, ảnh số, trò chơi …). Trong GNU/Linux có một số lượng khổng lồ các ứng dụng này với chất lượng rất chuyên nghiệp: GIMP (soạn sửa các ảnh), Sodipodi, Xine, Mplayer, gphoto, …

• Kết nối (truy cập máy có môi trường đồ họa ở xa, truy cập tới các hệ thống khác). Về phương diện này, GNU/Linux có một số lượng lớn các công cụ riêng nơi mà TCP/IP hoặc FTP, telnet, web, …, hoặc X Window, có các khả năng của máy có môi trường đồ họa ở xa cho bất kỳ máy UNIX nào, rdesktop (cho việc kết nối tới các máy có môi trường đồ họa Windows), hoặc VNC (cho việc kết nối tới UNIX, Windows, Mac …).

Trang 63/471

Các website:

Bộ phần mềm nguồn mở: http://openoffice.org/; http://www.koffice.org/; http://live.gnome.org/Gnome-Office

Page 64: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.2. Các dịch vụ của GNU/Linux

GNU/Linux có các máy chủ được thích nghi cho bất kỳ môi trường nào.

Trong các chủng loại dịch vụ được nhắc tới có những thứ tương đương có thể cung cấp từ các hệ điều hành GNU/Linux cho tất cả các máy tính khác trên mạng (và từ đó chúng cũng có thể hoạt động như các máy trạm):

a) Các ứng dụng: GNU/Linux có thể cung cấp các dịch vụ đầu cuối ở xa, hoặc bằng sự kết nối trực tiếp thông qua một loạt các giao diện của các máy đầu cuối, phục vụ để ảo hóa hoặc tương tác với các ứng dụng. Khả năng khác là sự kết nối ở xa theo phương thức văn bản, từ máy tính khác thông qua các dịch vụ TCP/IP như rlogin, telnet, hoặc theo một cách an ninh với ssh. GNU/Linux cung cấp các máy chủ cho tất cả các giao thức này. Trong trường hợp chạy các ứng dụng đồ họa, chúng ta có các giải pháp ở xa thông qua X Window, khi mà bất kỳ máy trạm UNIX, Linux hay Windows (hoặc khác) nào với một máy trạm X Window cũng có thể thấy được một cách trực quan việc chạy của môi trường và các ứng dụng của nó. Cùng lúc, có những giải pháp khác như VNC cho cùng vấn đề. Về vấn đề của các ứng dụng chạy web, GNU/Linux có máy chủ Apache, và bất kỳ hệ thống chạy web nào cũng là sẵn sàng, hoặc Servlets (với Tomcat), JSP, Perl, PHP, xml, các dịch vụ web …, cũng như các máy chủ ứng dụng web như BEA Weblogic, IBM Websphere, JBoss (tự do), cũng chạy trên các nền tảng của GNU/Linux.

b) Các tệp: các tệp có thể được phục vụ theo nhiều cách, hoặc thông qua truy cập FTP tới các tệp, hoặc bằng việc dịch vụ chúng theo một cách thức trong suốt cho các máy UNIX và Linux với NFS, hoặc bằng việc hành động như máy trạm hoặc máy chủ với các máy tính Windows thông qua Samba.

c) Cơ sở dữ liệu: hỗ trợ một số lượng lớn các cơ sở dữ liệu quan hệ dạng máy chủ/máy trạm như MySQL, PostgreSQL và một vài cơ sở dữ liệu thương mại như Oracle hoặc IBM DB2, ...

d) In ấn: có thể phục vụ các máy in cục bộ hoặc ở xa, cho cả các hệ thống UNIX với các giao thức TCP/IP và Windows thông qua Samba/CIFS.

e) Thư điện tử: đưa ra các dịch vụ cho các máy trạm để có được thư trên các máy của chúng (các máy chủ POP3 hoặc IMAP), khi các đại lý truyền thư MTA (Mail Transfer Agent) phục hồi và truyền lại thư, như máy chủ Sendmail (chuẩn UNIX) hoặc các thứ khác như Exim và, trong trường hợp gửi ra ngoài, dịch vụ SMTP cho các thư ra ngoài.

f) Web: chúng ta có máy chủ Apache http, với các phiên bản 1.3.x của nó hoặc trong các phiên bản mới 2.0.x hoặc 2.2.x. Hơn nữa, chúng ta có thể tích hợp các máy chủ ứng dụng web, như Tomcat cho servlets, JSP...

g) Thông tin mạng: các dịch vụ như NIS, NIS + hoặc LDAP cho phép chúng ta tập trung hóa thông tin từ các máy, những người sử dụng, và một loạt các tài nguyên trên mạng của chúng ta, tạo điều kiện thuận lợi cho sự quản trị và dịch vụ cho người sử dụng, theo một cách mà cái sau không phụ thuộc vào tình trạng của chúng trên mạng. Hoặc nếu tổ chức của chúng ta có một cấu

Trang 64/471

Page 65: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

trúc nội bộ nào đó, thì những dịch vụ này sẽ cho phép chúng ta mô hình hóa nó bằng việc cho phép truy cập tới các tài nguyên cho bất kỳ thứ gì cần tới nó.

h) Các dịch vụ tên: các dịch vụ như là DNS cho các tên máy tính và sự biên dịch chúng từ hoặc tới IP, bằng phương tiện của máy chủ Bind là một ví dụ (DNS của UNIX chuẩn).

i) Các dịch vụ truy cập ở xa: hoặc để chạy các ứng dụng hoặc để có được thông tin ở xa trên các máy tính. Các máy chủ có thể là những máy chúng ta đã nhắc tới cho các ứng dụng: X Window, VNC …, và cũng là những máy cho phép một số lệnh ở xa chạy được mà không có sự tương tác như rexec, rsh, ssh …

j) Các dịch vụ sinh tên: các dịch vụ như DHCP cho phép các mạng TCP/IP, tạo ra theo một cách động (hoặc tĩnh) các địa chỉ IP sẵn sàng theo các máy tính mà cần nó.

k) Các dịch vụ truy cập Internet: trong những trường hợp nhất định nào đó có thể có một đầu ra duy nhất tới Internet (hoặc một vài). Những điểm này có xu hướng hành động như sự ủy quyền, vì chúng có sự truy cập và chúng định tuyến lại nó tới những truy cập Internet tiềm tàng nhân danh các máy trạm. Chúng cũng có xu hướng hành động như bộ nhớ tạm lưu các nội dung. Trong GNU/Linux chúng ta có thể có Squid, ví dụ vậy. Theo chủng loại này, một cổng gateway hoặc bộ định tuyến có thể cũng hoạt động trong một hệ điều hành GNU/Linux, hoặc định tuyến các gói tới các mạng khác hoặc để tìm các đường gửi lại thay thế. Hơn nữa, trong trường hợp của các cài đặt nhỏ như các cài đặt nội bộ, thì chúng ta có thể đưa vào sự truy cập Internet bằng modem thông qua các dịch vụ PPP.

l) Các dịch vụ lọc: một trong những phương tiện an ninh được sử dụng chung nhất hiện nay là các tường lửa. Về cơ bản chúng đại diện cho các kỹ thuật lọc cho các gói tới và đi, đối với các giao thức khác nhau mà chúng ta đang sử dụng, để đặt ra những rào cản chống lại những thứ không mong muốn. Trong GNU/Linux, chúng ta có những cơ chế như ipchains và iptables (hiện đại hơn) cho việc triển khai các tường lửa.

Trang 65/471

Page 66: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.3. Các dạng sử dụng

GNU/Linux, như một hệ điều hành, đưa ra các đặc tính có căn cứ vững chắc cho người sử dụng cá nhân cũng như những người sử dụng một hạ tầng phạm vi trung bình và lớn.

Từ viễn cảnh của người sử dụng hệ điều hành GNU/Linux, chúng ta có thể phân biệt:

a) Người sử dụng cá nhân hoặc ở nhà: thông thường, dạng người sử dụng này có một hoặc vài máy ở nhà, có thể có hoặc không được chia sẻ. Nói chung, trong môi trường này, GNU/Linux được sử dụng để phát triển một hệ thống máy có môi trường đồ họa, có nghĩa là phần đồ họa sẽ là quan trọng: máy có môi trường đồ họa GNU/Linux. Đối với máy này chúng ta có 2 lựa chọn ở dạng các môi trường GNOME và KDE, cả 2 đều có cơ sở vững chắc tuyệt vời. Hoặc 2 môi trường này đưa ra các ứng dụng chạy và các dịch vụ ảo hóa, tập hợp một dãy rộng lớn các ứng dụng cơ bản của riêng mà chúng cho phép chúng ta phát triển tất cả các dạng nhiệm vụ lặp đi lặp lại. Cả 2 môi trường này đưa ra một máy có môi trường đồ họa ảo với các thực đơn, các thanh biểu tượng khác nhau, bổ sung vào cả các trình duyệt các tệp của riêng và hàng loạt các ứng dụng hữu dụng khác. Bất kỳ môi trường nào cũng có thể chạy những ứng dụng riêng của nó và của những người khác, dù, theo cùng cách như những ứng dụng đó, chúng chạy tốt hơn trong môi trường của riêng nó vì khía cạnh ảo của nó là phù hợp hơn cho môi trường mà các ứng dụng đó được thiết kế ra cho nó. Về các ứng dụng cho người sử dụng cá nhân, chúng ta nên đưa vào những ứng dụng điển hình của hệ thống máy có giao diện đồ họa. Nếu người sử dụng có một mạng ở nhà, ví dụ thế, thì một nhóm nhỏ các máy tính được kết nối với mạng dạng Ethernet, các dịch vụ cho việc chia sẻ các tệp và máy in giữa các máy cũng có thể là thú vị. Các dịch vụ như NFS có thể cần thiết nếu có các máy tính Linux khác; hoặc Samba, nếu có các máy với Windows.

Trong trường hợp có một kết nối Internet thông qua một ISP (nhà cung cấp dịch vụ Internet), phụ thuộc vào dạng kết nối được sử dụng, chúng ta có thể cần kiểm soát các thiết bị và giao thức tương ứng:

• Kết nối modem: các modem điện thoại có xu hướng sử dụng giao thức PPP để kết nối với nhà cung cấp. Chúng ta có thể phải kích hoạt giao thức này và cấu hình các tài khoản mà chúng ta đã được phép với nhà cung cấp. Một vấn đề quan trọng với Linux là vấn đề các winModem, mà chúng đã gây ra nhiều phiền toái. Modem này (với một số ngoại lệ) là không được hỗ trợ, vì nó không là một modem thực sự mà là một sự đơn giản hóa phần cứng cộng với phần mềm trình điều khiển, và hầu hết chỉ hoạt động với Windows, nghĩa là chúng ta cần tránh chúng (nếu không được hỗ trợ) và phải mua những modem thực sự (đầy đủ).

• Kết nối modem ADSL: việc hoạt động có thể là tương tự, giao thức PPP có thể được sử dụng hoặc giao thức khác được gọi là EoPPP. Điều này có thể phụ thuộc vào nhà sản xuất modem và vào dạng modem: Ethernet hoặc USB.

• Kết nối ADSL với một bộ định tuyến: cấu hình là rất đơn giản, vì trong trường hợp này tất cả điều chúng ta cần làm là cấu hình cho card mạng Ethernet và/hoặc card không dây trong hệ thống của chúng ta để kết nối với bộ định tuyến ADSL.

Một khi giao diện tới Internet được kết nối và thiết lập cấu hình, thì điểm cuối cùng là đưa vào dạng

Trang 66/471

Page 67: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các dịch vụ mà chúng ta sẽ cần. Nếu chúng ta chỉ muốn hành động như những máy trạm trên Internet, thì sẽ là đủ để sử dụng các công cụ máy trạm của các giao thức khác, hoặc FTP, telnet, trình duyệt web, đọc thư điện tử hoặc thông tin … Nếu chúng ta cũng muốn đưa ra các dịch vụ đi ra ngoài - ví dụ, để xuất bản một website (máy chủ web) hoặc để cho phép truy cập từ bên ngoài tới máy (ssh, telnet, FTP, X Window, VNC, các dịch vụ …), trong trường hợp này, máy chủ - sau đó chúng ta phải nhớ rằng điều này sẽ chỉ có thể nếu nhà cung cấp của chúng ta trao cho chúng ta các địa chỉ IP tĩnh cho máy tính của chúng ta. Nếu không, địa chỉ IP của chúng ta sẽ thay đổi mỗi lần chúng ta kết nối và khả năng đưa ra một dịch vụ sẽ trở nên rất khó khăn hoặc không thể.

Một dịch vụ thú vị khác có thể là việc chia sẻ sự truy cập tới Internet giữa các máy tính sẵn sàng của chúng ta.

b) Người sử dụng phạm vi trung bình: đây là người sử dụng của một tổ chức phạm vi trung bình, hoặc một công ty hoặc nhóm nhỏ những người sử dụng. Thông thường, người sử dụng dạng này sẽ có kết nối mạng cục bộ (thông qua một LAN, ví dụ vậy) với một số máy tính và các máy in được kết nối. Và sẽ có sự truy cập trực tiếp tới Internet, hoặc thông qua một số ủy quyền (điểm hoặc máy tính được thiết kế cho một kết nối ngoài), hoặc sẽ có một ít máy tính được kết nối một cách vật lý tới Internet. Nói chung, trong môi trường này, công việc một phần là cục bộ và một phần được chia sẻ (hoặc các tài nguyên, các máy in hoặc các ứng dụng). Thông thường, chúng ta sẽ cần các hệ thống máy có môi trường đồ họa; ví dụ, trong một văn phòng chúng ta có thể sử dụng bộ các ứng dụng văn phòng cùng với các máy trạm Internet; và có lẽ cũng cả các hệ thống dạng máy trạm; ví dụ, để cho các công việc kỹ thuật hoặc khoa học, các ứng dụng CAD hoặc xử lý ảnh có thể được sử dụng, cũng như các hệ thống tính toán toán học mạnh …, và hầu hết các máy tính mạnh hơn chắc chắn sẽ được chỉ định cho các nhiệm vụ này. Trong môi trường này của người sử dụng, chúng ta sẽ thường phải chia sẻ tài nguyên như các tệp, máy in, và có thể, cả các ứng dụng nữa... Vì thế, trong một hệ điều hành GNU/Linux, các dịch vụ NFS sẽ là phù hợp, các dịch vụ máy in, Samba (nếu có các máy Windows mà với chúng thì các tệp và máy in cần được chia sẻ), và chúng ta cũng có thể cần các môi trường cơ sở dữ liệu, một máy chủ web nội bộ với các ứng dụng được chia sẻ...

c) Những người sử dụng phạm vi rộng: người sử dụng dạng này giống với dạng trước và chỉ khác về kích thước của tổ chức và các tài nguyên sẵn sàng, có thể sẽ nhiều, theo một cách mà một số tài nguyên của NIS, NIS+ hoặc thư mục hệ thống mạng dạng LDAP có thể cần tới để điều khiển thông tin của tổ chức và phản ánh cấu trúc của nó, chắc chắn cũng có các hạ tầng dịch vụ rộng lớn cho các máy trạm ngoài ở dạng các website với một loạt các ứng dụng.

Dạng này của tổ chức có các mức hỗn hợp cao trong cả phần cứng và phần mềm hệ thống, và chúng ta có thể thấy nhiều kiến trúc và các hệ điều hành khác nhau, nghĩa là các nhiệm vụ chính sẽ gồm việc làm dễ dàng cho tính tương thích của các dữ liệu bằng những phương tiện của các cơ sở dữ liệu và các định dạng tài liệu chuẩn và làm giảm nhẹ khả năng kết nối nội bộ bằng những phương tiện của các giao thức chuẩn, các máy trạm và các máy chủ (thường với các yếu tố TCP/IP).

Trang 67/471

Page 68: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.4. Chuyển đổi hoặc cùng tồn tại

Tiếp theo, chúng ta sẽ xem xét khía cạnh quan trọng khác trong việc áp dụng các hệ điều hành GNU/Linux. Giả thiết chúng ta là những người nghiệp dư trong việc điều khiển hệ thống này; hoặc, ngược lại, chúng ta có kinh nghiệm và mong muốn áp dụng một hoặc vài hệ điều hành GNU/Linux như những người sử dụng cá nhân cho công việc trong tổ chức nhỏ của chúng ta; hoặc chúng ta đang coi việc thay thế toàn bộ (hoặc một phần) hạ tầng của công ty hoặc tổ chức lớn của chúng ta.

Việc chuyển đổi sang một hệ thống mới không phải là vấn đề thông thường, nó cần phải được đánh giá thông qua một nghiên cứu phân tích cả về giá thành và những tính năng lợi ích mà chúng ta mong đợi có được. Hơn nữa, sự chuyển đổi có thể được thực hiện hoàn toàn hoặc một phần, với một mức độ nhất định nào đó của sự cùng tồn tại với các hệ thống đã có trước đó.

Chúng ta sẽ làm việc với một dự án chuyển đổi toàn bộ hoặc một phần đối với các hệ thống CNTT của chúng ta sang GNU/Linux, như những người quản trị, chúng ta sẽ có trách nhiệm cho quá trình này.

Như trong bất kỳ dự án nào, chúng ta sẽ phải nghiên cứu cách trả lời những câu hỏi như: Liệu sự thay đổi có ý nghĩa theo những điều khoản tài chính hoặc những lợi ích về năng suất hay không? Mục tiêu của sự chuyển đổi là gì? Những yêu cầu nào chúng ta sẽ muốn hoặc cần thỏa mãn? Liệu có thể tiến hành một sự chuyển đổi một phần hoặc có cần tiến hành một sự chuyển đổi toàn phần hay không? Liệu sự cùng tồn tại với những hệ thống khác có cần thiết không? Liệu có cần phải huấn luyện lại người sử dụng không? Liệu có khả năng sử dụng cùng các phần cứng hay sẽ cần các phần cứng mới? Liệu có quan trọng các giá thành bổ sung không? Hoặc một cách đơn giản, liệu nó sẽ là OK không? Những câu hỏi này và nhiều câu hỏi khác chúng ta sẽ phải thử và trả lời. Trong trường hợp của một công ty, các câu trả lời có thể được đưa ra theo một dự án chuyển đổi, chỉ định các mục đích của nó, những yêu cầu, quá trình triển khai, và việc đưa vào một phân tích tài chính, các kế hoạch huấn luyện người sử dụng … Chúng ta sẽ không đi vào chi tiết những điều này, nhưng sẽ xem xét một số những vấn đề này theo một cách đơn giản. Và trong hội thảo cuối cùng chúng ta sẽ xem xét một ít các trường hợp nhỏ cách thức chúng ta có thể triển khai sự chuyển đổi.

Hơn nữa, tại thời điểm chúng ta bắt đầu chuyển đổi sang GNU/Linux, chúng ta sẽ bắt đầu lưu ý tới những ưu điểm mà hệ thống mang lại cho tổ chức của chúng ta:

a) Giá thành: giảm trong giá thành giấy phép cho phần mềm và các ứng dụng của hệ thống. GNU/Linux có giá thành là 0 cho các giấy phép nếu được mua từ Internet (ví dụ, ở dạng các ảnh từ các đĩa CD của các phát tán), hoặc một giá thành không đáng kể nếu chúng ta tính rằng sự so sánh gần nhất cho các hệ thống với những tính năng tương tự có thể với các hệ thống Windows Server với giá thành giấy phép khoảng 1,500 euro và 3,000 euro, mà không có việc đưa vào một số lượng lớn các phần mềm bổ sung mà một phát tán điển hình của GNU/Linux có thể đưa vào.

Hãy cẩn thận, không nên đánh giá thấp các giá thành duy trì và huấn luyện. Nếu tổ chức của chúng ta chỉ có những người sử dụng và quản trị được đào tạo trong Windows, thì có thể có giá thành cao cho việc đào tạo lại nhân sự và, có thể, cho sự duy trì. Vì thế, nhiều công ty lớn ưa thích phụ thuộc vào một nhà phân phối thương mại của GNU/Linux hơn để triển khai và duy trì hệ thống, như các phiên bản

Trang 68/471

Page 69: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

doanh nghiệp được Red Hat, SuSE và những hãng khác đưa ra. Các phiên bản GNU/Linux này cũng có giá thành giấy phép là cao (so với Windows), nhưng cùng lúc sẽ được áp dụng cho các cấu trúc doanh nghiệp và có cả các phần mềm của riêng họ cho việc quản lý hạ tầng CNTT của các công ty. Khía cạnh quan trọng khác, để kết luận với ước lượng giá thành, là khái niệm tổng chi phí sở hữu TCO, như một đánh giá toàn cầu về giá thành có liên quan mà chúng ta sẽ thấy khi định tiến hành phát triển công nghệ; chúng ta không chỉ phải đánh giá giá thành của các giấy phép và các máy tính, mà còn cả giá thành của việc huấn luyện và hỗ trợ cho mọi người về các sản phẩm có liên quan, có thể cũng cao hoặc hơn cả giải pháp được triển khai.

b) Hỗ trợ: GNU/Linux đưa ra sự hỗ trợ duy trì tốt nhất mà bất kỳ hệ điều hành nào đã có từ trước tới nay, và nó hầu hết là tự do. Dù vậy, một số công ty không sẵn lòng áp dụng GNU/Linux, dựa trên cơ sở không có sự hỗ trợ sản phẩm và thích mua các phát tán thương mại hơn vì chúng đi với các hợp đồng hỗ trợ và duy trì. GNU/Linux có một cộng đồng hỗ trợ được thiết lập tốt trên toàn thế giới, thông qua một loạt các tổ chức cung cấp tài liệu tự do (nổi tiếng là HOWTO - Làm thế nào), những diễn đàn đặc biệt của những người sử dụng, các cộng đồng người sử dụng thực tế trong bất kỳ vùng hoặc quốc gia nào trên thế giới... Bất kỳ câu hỏi hoặc vấn đề nào mà chúng ta có đều có thể tìm được trên Internet và chúng ta có thể thấy các câu trả lời trong vài phút. Nếu không tìm thấy, nếu tìm thấy lỗi, bọ, hoặc tình trạng không được thử nghiệm, thì chúng ta có thể báo cáo nó lên một loạt các site (các nhóm thảo luận, các site phát triển, các site lỗi của các phát tán …), và có được các giải pháp trong vòng vài giờ hoặc, nhiều nhất, trong vòng vài ngày. Bất kỳ khi nào có một câu hỏi hoặc vấn đề, đầu tiên nên thử một vài thủ tục (điều này giải thích vì sao chúng ta sẽ học) và nếu không thấy giải pháp trong một khoảng thời gian chấp nhận được, thì nên tham vấn cộng đồng GNU/Linux trong trường hợp bất kỳ người sử dụng nào khác (hoặc nhóm người sử dụng) bắt gặp cùng vấn đề và tìm được một giải pháp, và nếu không, thì luôn có thể đưa một báo cáo về vấn đề đó và xem liệu sẽ có được những lời chào các giải pháp không.

2.4.1. Xác định các yêu cầu dịch vụ

Thông thường, nếu chúng ta có các hệ thống đã đang hoạt động thì chúng ta sẽ phải có một số dịch vụ được triển khai cho người sử dụng hoặc cho việc trợ giúp hạ tầng hỗ trợ IT. Các dịch vụ sẽ nằm trong một số các chủng loại được thấy ở trên, với các lựa chọn GNU/Linux mà chúng ta đã nhắc tới.

Các hệ điều hành GNU/Linux không phải là thứ gì mới, và như chúng ta đã thấy trong phần giới thiệu, bắt nguồn từ một lịch sử của hơn 30 năm sử dụng và phát triển của các hệ thống UNIX. Vì thế, một trong những thứ đầu tiên sẽ thấy là chúng ta không thiếu sự hỗ trợ cho bất kỳ dạng dịch vụ nào chúng ta muốn. Có thể, sẽ có những khác biệt theo cách thực hiện những thứ gì đó. Hơn nữa, nhiều dịch vụ được sử dụng với các hệ thống CNTT đã được thừa nhận, được nghiên cứu, được phát triển và được triển khai trong những ngày tháng của chúng cho UNIX, và chỉ sau đó được áp dụng cho các hệ thống khác (như Windows, ít nhiều thành công).

Nhiều công ty với UNIX sở hữu độc quyền tham gia trong GNU/Linux và đưa ra một số các phát triển của họ cho cộng đồng.

Trang 69/471

Lưu ý

Địa chỉ của Linux Howto (làm thế nào): http://www.tldp.org/

Page 70: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Bất kỳ dịch vụ nào sẵn có tại thời điểm này có thể được áp dụng cho các hệ điều hành GNU/Linux với các dịch vụ tương tự (nếu không nói là y hệt).

Ví dụ

Một trường hợp nổi tiếng là trường hợp của các máy chủ Samba [Woo00] [Sam]. Windows đưa ra những gì nó gọi là “việc chia sẻ tệp và máy in trên mạng” bằng các phương tiện của các giao thức của riêng nó được biết chung là SMB (khối thông điệp máy chủ) [Smb] (với sự hỗ trợ mạng trong các giao thức NetBios và NetBEUI). Tên CIFS (hệ thống tệp Internet chung) cũng được sử dụng phổ biến, là những gì giao thức đã được gọi trong một sự rà soát lại lần thứ 2 (đã tiếp tục được đưa vào SMB như một giao thức cơ bản). Những giao thức này đã cho phép việc chia sẻ các tệp (hoặc các đĩa) và các máy in trên một mạng các máy tính Windows (trong một cấu hình nhóm làm việc hoặc trong các miền của Windows). Trong UNIX ý tưởng này đã là cũ khi nó đã xuất hiện trong Windows và các dịch vụ như NFS để chia sẻ tệp hoặc quản lý các máy in ở xa đã có sẵn sàng bằng việc sử dụng giao thức TCP/IP.

Một trong những vấn đề với việc thay thế các dịch vụ chia sẻ Windows dựa trên NetBios/NetBeui (và chắc chắn với NetBios qua TCP/IP) đã từng là cách để hỗ trợ cho các giao thức này, khi nếu chúng ta muốn giữ các máy trạm với Windows, thì có thể không sử dụng các dịch vụ của UNIX. Vì mục đích này, Samba đã được phát triển như một máy chủ UNIX đã hỗ trợ các giao thức của Windows và có thể thay thế một máy chủ/trạm Windows một cách trong suốt, với những người sử dụng máy trạm Windows không hề hay biết hoàn toàn bất kỳ thứ gì. Hơn nữa, kết quả trong hầu hết các trường hợp là việc hiệu năng đã có thể so sánh được nếu không nói là tốt hơn trong máy gốc với các dịch vụ của Windows.

Hiện hành, Samba [Sam] luôn tiến hóa để duy trì tính tương thích với các dịch vụ chia sẻ tệp và máy in của Windows; vì những thay đổi chung mà Microsoft đưa ra các giao thức SMB/CIFS [Smb] (nền tảng này được Samba triển khai) với từng phiên bản mới của Windows, đặc biệt sự tiến hóa của các mô hình nhóm làm việc trong các phiên bản máy trạm của hệ điều hành này, tới các mô hình máy chủ tập trung (hoặc nhóm các máy chủ), với các dịch vụ xác thực người sử dụng đặc biệt (NTLM, NTLMv2, Kerberos), và sự lưu trữ tập trung về quản lý hệ thống như Thư mục Tích cực (Active Directory). Bổ sung vào điều này, cấu hình của các máy chủ miền hiện đang tồn tại (hoặc với trình kiểm tra đầu - máy chủ chính, sao lưu hoặc thư mục tích cực).

Hiện hành, trong qui trình chuyển đổi với Samba, chúng ta sẽ cần phải quan sát những cấu hình nào của các máy trạm/máy chủ Windows (và những phiên bản của nó) tồn tại trong hệ thống, cũng như sự xác thực người sử dụng nào và/hoặc các hệ thống quản trị thông tin nào được sử dụng. Hơn nữa, chúng ta sẽ cần phải biết cách mà hệ thống được cấu trúc trong các miền (và các máy chủ kiểm soát của nó, các thành viên hoặc các máy chủ đứng biệt lập), để thực hiện một ánh xạ đúng và hoàn chỉnh hướng tới các giải pháp dựa trên Samba, và trong sự xác thực người sử dụng bổ sung (winbind, kerberos, nss_ldap) và các dịch vụ quản trị (ví dụ OpenLDAP) [Sama] [Samb].

2.4.2. Qui trình chuyển đổi

Trong qui trình chuyển đổi, cần xem xét cách chúng ta muốn chuyển đổi và liệu là chuyển đổi hoàn toàn hay một phần, việc cùng tồn tại với những dịch vụ hay trang thiết bị khác với hệ điều hành khác.

Trong các môi trường của các tổ chức lớn, nơi chúng ta thấy một số lượng lớn các hệ thống hỗn hợp, sẽ cần tính tới hầu như chắc chắn không chuyển đổi mọi thứ của chúng, đặc biệt các hệ thống dạng máy trạm chuyên dụng để chạy một ứng dụng cơ bản cho một nhiệm vụ đặc biệt; có thể không có ứng dụng tương ứng hoặc đơn giản là chúng ta muốn giữ những hệ thống này vì những lý do tài chính hoặc để tối đa hóa đầu tư.

Có thể chuyển đổi một loạt các yếu tố, hoặc các dịch vụ chúng ta chào, các máy tính đưa ra các dịch vụ

Trang 70/471

Page 71: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hoặc các máy trạm mà chúng truy cập các dịch vụ.

Các yếu tố có thể được chuyển đổi bao gồm:

a) Các dịch vụ hoặc máy tính chuyên dụng cho một hoặc nhiều dịch vụ. Trong chuyển đổi, chúng ta sẽ thay thế dịch vụ bằng dịch vụ khác tương đương, thường thì với ảnh hưởng tối thiểu có thể, trừ phi chúng ta cũng muốn thay thế cả các máy trạm. Trong trường hợp các máy trạm Windows, chúng ta có thể sử dụng máy chủ Samba để thay thế các dịch vụ tệp và in ấn được các máy Windows đưa ra.

Đối với các dịch vụ khác, chúng ta có thể thay thế chúng bằng các dịch vụ tương ứng của GNU/Linux. Trong trường hợp việc thay thế chỉ một dịch vụ, thường thì chúng ta sẽ vô hiệu hóa dịch vụ đó trên máy mà đưa nó ra và bật nó trong hệ thống mới. Những thay đổi của máy trạm có thể là cần thiết (ví dụ, các địa chỉ hoặc các thông số của máy mới có liên quan tới dịch vụ này).

Nếu một máy chủ từng có trách nhiệm cho toàn bộ một chức năng nào đó, thì chúng ta sẽ cần phân tích liệu máy đó đã được chuyên dụng cho một hay nhiều dịch vụ và liệu chúng tất cả có thể được thay thế không. Nếu được, chúng ta sẽ chỉ phải thay thế máy cũ bằng máy mới (hoặc duy trì một máy cũ) với các dịch vụ theo GNU/Linux và trong mọi trường hợp, được khuyến cáo hãy thử máy này một cách riêng biệt với một vài máy trạm để chắc chắn rằng nó thực hiện được chức năng một cách đúng đắn và sau đó thay thế các máy đó trong khoảng thời gian khi hệ thống không hoạt động.

Trong mọi trường hợp, sẽ chắc chắn phải sao lưu các dữ liệu đang tồn tại trước khi sang hệ thống mới, ví dụ, các hệ thống tệp hoặc các ứng dụng sẵn sàng trong máy chủ gốc ban đầu. Một điểm khác phải xem xét trước là tính khả chuyển của các dữ liệu; một vấn đề chúng ta thường thấy là tính tương thích khi mà tổ chức đã sử dụng các dữ liệu hoặc các ứng dụng đã phụ thuộc vào một nền tảng.

Ví dụ

Để nhắc một ít trường hợp thực tế rằng một số công ty thấy hiện nay:

• Các ứng dụng web với ASP: những ứng dụng này chỉ có thể chạy được trên các nền tảng web với Windows và máy chủ web IIS của Microsoft. Phải tránh chúng nếu định chuyển đổi các nền tảng tại bất kỳ lúc nào và không muốn viết lại chúng hoặc trả tiền cho các công ty khác để làm. Các nền tảng GNU/Linux có máy chủ web Apache (được sử dụng phổ biến nhất trên Internet), cũng có thể được sử dụng với Windows, máy chủ này hỗ trợ ASP trong Perl (trong Windows thường sử dụng Visual Basic, C# và Javascript), có các giải pháp của các bên thứ 3 để chuyển đổi ASP hoặc ít nhiều chuyển được chúng. Nhưng nếu công ty phụ thuộc vào điều này, thì có thể rất tốn cả tiền bạc và thời gian. Một giải pháp thực tế có thể thực hiện là phát triển web trong Java (là khả chuyển giữa các nền tảng) hoặc các giải pháp khác như PHP. Về điểm này, nên nhấn mạnh tới dự án MONO [Mon] (được Novell đỡ đầu) cho tính khả chuyển một phần của môi trường .NET của Microsoft sang GNU/Linux, đặc biệt một số lượng lớn các API của .NET, ngôn ngữ C#, và đặc tả ASP.NET. Việc cho phép một sự chuyển đổi mềm dẻo các ứng dụng .NET dựa trên các API của .NET được nền tảng MONO hỗ trợ. Cùng lúc, nên nhắc tới dự án DotGnu của FSF [Dgn], như là một giải pháp thay thế cho MONO với giấy phép GPL.

• Các cơ sở dữ liệu: việc sử dụng một máy chủ Microsoft SQL Server, ví dụ, làm chúng ta hoàn toàn phụ thuộc vào nền tảng của Microsoft, cộng với, nếu sử dụng các giải pháp sở hữu độc quyền trong một môi trường đặc biệt cho các ứng dụng cơ sở dữ liệu, thì chúng sẽ khó để chuyển đổi. Các cơ sở dữ liệu khác như là Oracle và DB2 (IBM) là khả chuyển hơn vì chúng có một phiên bản trên những nền tảng khác hoặc vì chúng sử dụng các ngôn ngữ lập trình khả chuyển hơn. Cũng có thể làm việc với các hệ thống cơ sở dữ liệu PostgreSQL hoặc MySQL (nó cũng có một phiên bản cho Windows) sẵn sàng trong GNU/Linux, và cho phép một sự chuyển đổi dễ dàng hơn. Cùng lúc, nếu kết hợp nó với một sự phát triển web thì có nhiều lựa chọn; theo cách này, bây giờ chúng ta sử dụng các hệ thống

Trang 71/471

Page 72: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

như: các ứng dụng web với Java, hoặc servlets, applets, hoặc EJB; hoặc các giải pháp nổi tiếng như LAMP, sự kết hợp của GNU/Linux, Apache, MySQL và PHP.

b) Máy trạm: trong những chuyển đổi này, vấn đề lớn nhất bắt nguồn từ các ứng dụng, hoặc cho CAD, hoạt hình, các chương trình kỹ thuật hoặc khoa học, chúng là những lý do chính mà các máy trạm tồn tại. Sẽ là quan trọng để có khả năng thay thế chúng bằng các ứng dụng tương tự hoặc ít nhất là tương thích được với cùng các tính năng hoặc chức năng được mong đợi. Thông thường, hầu hết các ứng dụng bắt nguồn từ một thế giới UNIX, biết rằng hầu hết các máy trạm này đã được thừa nhận như những máy UNIX. Nghĩa là một sự biên dịch hoặc thích nghi tối thiểu cho GNU/Linux mới có thể là đủ, nếu chúng ta có mã nguồn (khi xu hướng này là trường hợp với nhiều ứng dụng khoa học). Nếu chúng ta đang làm việc với các ứng dụng thương mại, thì các nhà sản xuất (phần mềm kỹ thuật và khoa học) đang bắt đầu thích nghi chúng cho GNU/Linux, dù trong những trường hợp này thì các ứng dụng thường là rất đắt giá (dễ dàng là hàng trăm tới hàng ngàn euro).

c) Các máy có môi trường đồ họa. Các máy có môi trường đồ họa tiếp tục là một sự đau đầu cho thế giới GNU/Linux, vì chúng liên quan tới một số vấn đề truyền thống. Trên các máy chủ, các máy được chỉ định các chức năng rõ ràng, như một qui định, chúng không yêu cầu các giao diện đồ họa phức tạp (thường là giao tiếp văn bản là đủ), và thường thì phần cứng hiệu năng cao đặc biệt được mua cho một tập hợp cụ thể các chức năng và ứng dụng có xu hướng mà bản thân chúng là các máy chủ bao gồm cả hệ điều hành hoặc một số ứng dụng của các bên thứ 3. Hơn nữa, những máy này thường được những người quản trị quản lý với tri thức rộng lớn về những gì họ làm. Tuy nhiên, trong trường hợp của các máy có môi trường đồ họa, chúng ta đang làm việc với một thực tế có vấn đề (trong bản thân nó và hơn thế nữa đối với những người quản trị): những người sử dụng đầu cuối. Người sử dụng các hệ thống máy để bàn mong đợi phải có các giao diện đồ họa mạnh mà ít nhiều là trực giác và các ứng dụng cho phép họ chạy các nhiệm vụ hàng ngày - thường là văn phòng. Dạng người sử dụng này (với một ít ngoại lệ) không có lý do gì để cải tiến tri thức về máy tính; nói chung, họ quen với các bộ phần mềm văn phòng và sử dụng một vài ứng dụng với các mức độ khác nhau về kỹ năng. Ở đây GNU/Linux có một vấn đề rõ ràng, vì UNIX chưa bao giờ được thừa nhận như một hệ thống thuần túy của môi trường đồ họa và chỉ sau này đã được thích nghi với các giao diện đồ họa như X Window và các môi trường đồ họa khác nhau, như những môi trường hiện hành cho GNU/Linux: GNOME và KDE. Hơn nữa, người sử dụng đầu cuối có xu hướng quen với các hệ thống Windows (mà có hầu như 95% thị phần trong thị trường máy để bàn).

Trong trường hợp của các máy có môi trường đồ họa, GNU/Linux có một số trở ngại phải vượt qua. Một trong những trở ngại sống còn nhất là việc nó không đi với các máy tính được cài đặt sẵn, mà buộc người sử dụng phải có một số lượng nhất định tri thức để có khả năng cài đặt nó. Các lý do khác là:

Lưu ý

Môi trường đồ họa là một cuộc chiến đang diễn ra với các hệ điều hành GNU/Linux; nhu cầu nào cần để thắng được sự miễn cưỡng của người sử dụng để chuyển sang các hệ thống này và tạo ra nhận thức về khả năng của chúng để đưa ra những giải pháp thay thế và ứng dụng đơn giản mà chúng có thể quản lý được các tác vụ mà người sử dụng yêu cầu.

Trang 72/471

Lưu ý

Ví dụ các ứng dụng tương đương với GNU/Linux, xem: http://www.lunuxalt.com/; http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software; http://www.linuxrsp.ru/win-lin-soft/table-eng.html

Page 73: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Sự miễn cưỡng của người sử dụng: một câu hỏi mà một người sử dụng hỏi là: Vì sao tôi nên chuyển hệ thống? Liệu môi trường mới có đưa ra cho tôi thứ y hệt? Một trong những lý do cơ bản cho việc thay đổi sẽ là phần mềm chất lượng và giá thành, vì một tỷ lệ lớn sẽ là tự do. Về điểm này, chúng ta nên xem xét tới vấn đề về phần mềm bất hợp pháp. Người sử dụng dường như sẽ cho rằng các phần mềm của họ là tự do, khi thực tế họ đang ở trong một tình trạng bất hợp pháp. Phần mềm GNU/Linux đưa ra chất lượng tốt ở giá thành thấp (hoặc không có giá thành trong nhiều trường hợp), với một vài giải pháp thay thế cho cùng một công việc.

• Sự đơn giản: người sử dụng thường chịu thua nếu hệ thống không có những điểm tham chiếu tương tự tới những thứ mà người sử dụng đã quen, như hành vi của giao diện hoặc các công cụ với chức năng tương tự. Người sử dụng thường mong đợi không phải bỏ ra quá nhiều thời gian ngoài để học cách làm việc với hệ thống mới. GNU/Linux vẫn có một ít các vấn đề với ít nhiều những cài đặt tự động, có nghĩa là một số lượng nhất định các tri thức vẫn còn đòi hỏi để cài đặt được nó một cách đúng đắn. Về điểm này, chúng ta nên nhớ sự dễ dàng của việc cài đặt nó lên các môi trường khác nhau được các phát tán định hướng cho máy có môi trường đồ họa gần đây đưa ra như Ubuntu [Ubu]. Vấn đề chung khác liên quan tới sự hỗ trợ cho phần cứng của máy tính cá nhân; ngay cả dù nó đang được cải thiện mọi lúc, thì các nhà sản xuất vẫn còn chưa quan tâm đủ tới nó (một phần vì những lý do của thị phần). Cho tới khi nó là một dự định cần xem xét tới, thì chúng ta sẽ không có khả năng để có cùng sự hỗ trợ như các hệ thống sở hữu độc quyền khác (như Windows). Tuy nhiên, chúng ta cần nhấn mạnh công việc của cộng đồng nhân Linux để đưa ra sự hỗ trợ đúng cho các công nghệ mới, trong một số trường hợp bằng việc hỗ trợ nhà sản xuất hoặc bằng việc chuẩn bị hỗ trợ ban đầu (nếu không được hỗ trợ từ nhà sản xuất) hoặc hỗ trợ thay thế được đưa ra từ nhà sản xuất.

• Sự trong sáng: các môi trường GNU/Linux có nhiều cơ chế phức tạp, như daemons, các dịch vụ, khó để thiết lập cấu hình cho các tệp ASCII … Đối với những người sử dụng, cần thiết phải dấu đi tất cả những phức tạp này bằng những phương tiện của các chương trình đồ họa, các thuật sĩ thiết lập cấu hình … Đây là con đường được một số phát tán như Red Hat, Mandriva, Ubuntu hoặc SuSE nắm lấy.

• Sự hỗ trợ cho các ứng dụng đã biết: một bộ phần mềm văn phòng chuẩn mà người sử dụng sẽ đối mặt với vấn đề về tính khả chuyển của dữ liệu hoặc làm việc với các định dạng dữ liệu. Làm gì với những dữ liệu đang tồn tại? Vấn đề này đang được giải quyết hàng ngày, nhờ các bộ phần mềm văn phòng đang bắt đầu có các chức năng mà một người sử dụng máy tính cá nhân cần. Ví dụ, nếu xem xét sự chuyển đổi từ việc sử dụng bộ Windows Office, thì có thể thấy các bộ như OpenOffice (phần mềm tự do) có thể đọc được (và tạo được) các định dạng các tệp của Office (với một số hạn chế). Tính tương thích về định dạng là không khó khi nó là mở, nhưng trong trường hợp của Windows, thì Microsoft tiếp tục duy trì một chính sách của các định dạng đóng; và một số lượng công việc nghiêm túc cần thiết để có khả năng sử dụng được các định dạng này, bằng các phương tiện kỹ thuật (một quá trình khá tốn kém). Hơn nữa, trong kỷ nguyên Internet, khi thông tin được hỗ trợ để chuyển một cách tự do, thì những định dạng đóng không được viết thành tài liệu là một trở ngại hơn so với bất kỳ thứ gì khác. Thứ tốt nhất là sử dụng các định dạng mở như RTF (dù những định dạng này cũng có một số vấn đề vì nhiều phiên bản đang có của nó), hoặc các định dạng dựa trên XML (OpenOffice tạo ra các tài liệu của riêng nó

Trang 73/471

Page 74: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

trong XML), hoặc PDF cho các tài liệu chỉ đọc. Chúng ta cũng nên nhấn mạnh tới những nỗ lực gần đây của cộng đồng OpenOffice để tạo ra định dạng tài liệu mở (được bộ phần mềm văn phòng từ phiên bản 2.x sử dụng), làm cho có khả năng có được một định dạng tự do như một chuẩn ISO cho sự tạo ra tài liệu. Thực tế này đã buộc Microsoft phải (một phần) mở định dạng của hãng trong các phiên bản bắt đầu từ Office 2007, để tạo thành các định dạng OpenXML.

• Để cung cấp những giải pháp thay thế có giá trị: phần mềm chúng ta thôi không sử dụng nữa phải có những giải pháp thay thế làm được công việc y hệt như hệ thống cũ. Hầu hết các ứng dụng có một hoặc vài giải pháp thay thế với các chức năng tương tự, nếu không nói là tốt hơn. Trên Internet bạn có thể thấy các danh sách khác nhau của (ít nhiều hoàn chỉnh) các ứng dụng cho GNU/Linux mà chúng khớp với chức năng của các ứng dụng trên Windows.

• Sự hỗ trợ cho việc chạy các ứng dụng đối với các hệ thống khác: trong một số điều kiện có khả năng chạy các ứng dụng cho các hệ thống UNIX (với cùng kiến trúc, ví dụ, Intel x86), hoặc cho MS - DOS hoặc Windows, thông qua các gói tương thích hoặc một số dạng trình mô phỏng.

Hầu hết các vấn đề ảnh hưởng tới những chuyển đổi của máy có môi trường đồ họa đang được vượt qua một cách chậm chạp nhưng chắc chắn và sẽ cho phép chúng ta trong tương lai có một số lượng lớn những người sử dụng máy GNU/Linux, và khi chúng gia tăng, sẽ có sự truy cập tới các ứng dụng tốt hơn khuyến khích các công ty phần mềm bắt đầu việc triển khai các phiên bản cho GNU/Linux.

Trong trường hợp của các công ty, có khả năng vượt qua được với một sự chuyển đổi êm, bắt đầu với các máy chủ và các máy trạm, và sau đó là các máy có môi trường đồ họa sau khi tuân theo một chương trình đào tạo mở rộng cho những người sử dụng trong các hệ thống và các ứng dụng mới.

Một quá trình sẽ giúp ở một mức độ rộng lớn để giới thiệu phần mềm nguồn mở trong giáo dục và trong các cơ quan hành chính nhà nước, như trong trường hợp của vùng Extremadura của Tây Ban Nha với phát tán GNU/Linux của nó gọi là Linex; hoặc những biện pháp gần đây cho việc đưa phần mềm này cho giáo dục tiểu học, hoặc các biện pháp được các trường đại học đưa ra bằng việc mở ra các khóa học và các môn học có sử dụng các hệ điều hành này.

Trang 74/471

Page 75: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.5. Hội thảo về chuyển đổi: phân tích các trường hợp điển hình

Trong phần hội thảo chúng ta sẽ cố gắng áp dụng những gì đã học được trong phần này để phân tích một số qui trình chuyển đổi đơn giản, và một số chi tiết về những kỹ thuật được yêu cầu (trong trường hợp của các kỹ thuật mạng, chúng ta sẽ xem những thứ này trong những đơn vị về quản trị mạng).

Chúng ta sẽ xem xét các trường hợp điển hình sau:

• Chuyển đổi cá nhân của một người sử dụng máy có môi trường đồ họa Windows sang một hệ điều hành GNU/Linux.

• Chuyển đổi của một tổ chức nhỏ với các hệ thống Windows và một ít UNIX.

• Chuyển đổi của một máy chủ Windows đứng riêng rẽ sang một máy chủ Samba chạy GNU/Linux.

2.5.1. Chuyển đổi cá nhân của một người sử dụng máy có môi trường đồ họa Windows sang một hệ điều hành GNU/Linux

Một người sử dụng xem xét việc chuyển đổi sang GNU/Linux [Ray02b]. Thông thường, sẽ có trước tiên là một giai đoạn sống chung với nhau, sao cho người sử dụng có thể có cả 2 hệ điều hành và sử dụng mỗi hệ điều hành cho một loạt các tác vụ: các tác vụ sẽ tiếp tục được thực hành trong Windows trong khi người sử dụng học về hệ thống mới và thấy các phần mềm tương ứng hoặc các phần mềm mới thực hiện các tác vụ mà không phần mềm nào sẵn sàng trước đó cả cho các tác vụ đó.

Việc chuyển đổi đối với một người sử dụng cá nhân có lẽ là một trong những quá trình phức tạp nhất; chúng ta cần đưa ra cho những người sử dụng những giải pháp thay thế cho những gì mà họ thường sử dụng, sao cho sự thích nghi là đơn giản nhất có thể và người sử dụng có thể thích nghi được dần dần và với sự dễ dàng đối với hệ thống mới.

Khả năng đầu tiên có thể sẽ là một cài đặt song song [Ban01] [Sko03b] của hệ thống gốc ban đầu (Windows) cùng với hệ điều hành GNU/Linux.

Bước đầu tiên để thiết lập cấu hình máy là việc kiểm tra xem phần cứng có tương thích với Linux [Pri02], hoặc từ một danh sách về tính tương thích phần cứng hoặc bằng việc kiểm tra với nhà sản xuất liệu các thành phần mới cần phải được mua hoặc những thành phần đang tồn tại có đòi hỏi một cấu hình đặc biệt hay không. Nếu không quen với phần cứng của chúng ta, thì có thể kiểm tra nó thông qua “người quản trị các thiết bị” Windows (trong hộp kiểm tra - control panel) hoặc sử dụng một số dạng phần mềm nhận biết phần cứng. Cùng lúc, một phương pháp được khuyến cáo là sử dụng các phát tán GNU/Linux dạng Live CD, cho phép chúng ta kiểm tra việc vận hành của GNU/Linux trên các phần cứng mà không có đòi hỏi một cài đặt vật lý nào, vì chỉ yêu cầu là khả năng khởi động hệ

Trang 75/471

Lưu ý

Chỉ dẫn cách làm về phần cứng Linux tại: http://www.tldp.org/HOWTO/hardwareHOWTO/index.html

Page 76: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thống từ một đĩa CD/DVD (trong một số trường hợp thì cấu hình BIOS có thể phải được thay đổi cho việc này). Có các đĩa Live CD như Knoppix [Knp] với hỗ trợ to lớn cho việc kiểm tra phần cứng và hầu hết các phát tán GNU/Linux có xu hướng đưa ra một đĩa Live CD để kiểm tra ban đầu việc vận hành của nó (trong một số trường hợp, Ubuntu [Ubn] ví dụ, cài đặt đầy đủ có thể được thực hiện bằng việc sử dụng cùng đĩa Live CD đó). Trong trường hợp này, nên nhớ rằng việc kiểm tra một đĩa Live CD đặc biệt không có nghĩa là sẽ không có bất kỳ vấn đề gì với cài đặt cuối cùng, hoặc vì đĩa Live CD không phải phát tán GNU/Linux y hệt mà cuối cùng được cài đặt hoặc vì các phiên bản của hệ thống là không y hệt nhau.

Về việc cài đặt vật lý lên đĩa, chúng ta sẽ hoặc cần phải có không gian đĩa tự do chưa được phân vùng hoặc, nếu có các phân vùng dạng FAT/32, thì có thể giải phóng không gian bằng việc sử dụng các chương trình làm cho có khả năng chỉnh kích thước của các vùng, giảm một vùng đang tồn tại (sao lưu dữ liệu trước đó là rõ ràng nhìn thấy được). Hiện hành, hầu hết các phát tán hỗ trợ hàng loạt việc phân vùng đĩa và các mô hình giảm việc phân vùng, mặc dù các vấn đề có thể nảy sinh phụ thuộc vào phát tán đó. Nếu không có đủ không gian đĩa hoặc có các phân vùng với các hệ thống tệp bày ra được các vấn đề (như NTFS với một số phát tán), thì chúng ta có thể phải xem xét tới việc mua một đĩa cứng mới bổ sung, để sử dụng hoàn toàn hoặc một phần cho GNU/Linux.

Sau khi kiểm tra xong phần cứng, chúng ta sẽ phải quyết định về phát tán của hệ điều hành GNU/Linux sẽ sử dụng (một khả năng đã được nhắc tới trước là sẽ chọn một Live CD mong muốn và cài đặt phát tán đó). Nếu người sử dụng chưa có kinh nghiệm về GNU/Linux hoặc chỉ có tri thức máy tính cơ bản, thì ưu tiên hơn hãy chọn một trong những phát tán thân thiện với người sử dụng hơn như Fedora, Mandriva, SuSE, hoặc tương tự (có thể nhấn mạnh sự dễ dàng của Ubuntu theo khía cạnh này). Nếu chúng ta hiểu biết hơn hoặc thích thử nghiệm, thì có thể thử một phát tán Debian. Trong trường hợp các phát tán thương mại, trong hầu hết các trường hợp các phát tán này với phần cứng tương thích (các phiên bản thương mại như Red Hat và SuSE xác thực phần cứng chúng hỗ trợ), được cài đặt một cách tuyệt vời mà không có vấn đề gì và các cấu hình cơ bản được tiến hành cho phép hệ điều hành sẽ sử dụng được ngay lập tức. Trong quá trình này, sẽ phải cài đặt phần mềm, thường là được xác định bằng tập hợp các phần mềm đã được định hướng: cho các máy chủ, các ứng dụng đặc thù hoặc các ứng dụng máy cá nhân, như các bộ văn phòng, các ứng dụng phát triển (nếu có quan tâm tới việc lập trình) …

Một khi hệ thống được cài đặt, phải giải quyết vấn đề về việc chia sẻ các dữ liệu [Gon00] [Kat01], chúng ta sẽ chia sẻ thế nào các dữ liệu giữa 2 hệ thống? hoặc có khả năng để chia sẻ các ứng dụng nhất định nào đó không? Có một loạt giải pháp cho điều này:

• Phương pháp gián tiếp: điều này gồm việc chia sẻ các dữ liệu bằng việc sử dụng một đĩa mềm, ví dụ thế. Với điều này, thứ tốt nhất là các tiện ích được biết như là mtools, cho phép sự truy cập trong suốt tới các đĩa mềm ở định dạng của MS – DOS, và có vài lệnh hoạt động theo một cách rất tương tự như MS - DOS hoặc Windows. Những lệnh này có chính xác đúng các tên y hệt như các lệnh gốc của MS – DOS, ngoại trừ là chúng có một chữ “m” ở đằng trước, ví dụ: mcd, mcopy, mdir, mdel, mformat, mtype ...

• Phương pháp trực tiếp: điều này gồm việc sử dụng hệ thống tệp trong Windows một cách trực tiếp. Như chúng ta sẽ thấy trong phần về quản trị cục bộ, GNU/Linux có thể đọc và ghi một số lượng lớn các hệ thống tệp, bao gồm FAT, FAT32, và NTFS (chỉ đọc trong một số trường hợp,

Trang 76/471

Page 77: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

dù hầu hết các phát tán đã đưa vào trình điều khiển ntfs-3g [NT3] cho phép cả việc ghi). Việc kích hoạt (mount) đĩa Windows đòi hỏi trước và điều đó làm cho có khả năng kết hợp hệ thống tệp Windows vào một điểm trong hệ thống cây các tệp của Linux: ví dụ, có thể kích hoạt đĩa Windows của chúng ta trong /mnt/Windows và từ điểm này truy cập các thư mục và các tệp của nó để đọc và ghi. Với các tệp văn bản ASCII, những chuyển đổi cần phải được xem xét, vì UNIX và Windows đối xử với chúng khác nhau: trong UNIX, cuối dòng chỉ có một ký tự, nuôi dòng, ASCII 10, trong khi Windows có 2, trả về và nuôi dòng, các ký tự ASCII 13 và 10 (như một lưu ý tò mò, trong Mac nó là ASCII 13). Có nghĩa là thường khi chúng ta đọc một tệp ASCII DOS/Windows, thì nó chứa các ký tự lạ ở cuối dòng. Có những trình soạn thảo như emacs quản lý chúng một cách minh bạch và, trong mọi trường hợp, có những tiện ích GNU/Linux có khả năng chuyển đổi chúng thành định dạng khác (các tiện ích như duconv, recode, dos2UNIX, UNIX2dos).

• Sử dụng các ứng dụng: có một ít các giải pháp thay thế cho việc chạy các ứng dụng (không phải tất cả chúng) cho MS-DOS và Windows. Đối với GNU/Linux có những trình mô phỏng MS-DOS như Dosemu [Sun02] hoặc DosBox, và cho Windows có phần mềm Wine [Win]. Nó có thể chạy một loạt các ứng dụng Windows (ví dụ, nó có thể chạy được một số phiên bản của Office và Intetnet Explorer), và nó luôn được cải tiến. Nếu là sống còn để chạy các ứng dụng Windows, một số phần mềm thương mại có thể giúp chúng ta; có những ứng dụng đưa ra sự hỗ trợ bổ sung cho Wine, ví dụ, Win4Lin, CrossOver và trong một số trường hợp sự hỗ trợ đặc biệt cho các trò chơi như Cedega. Giải pháp tiềm năng khác là sử dụng các máy ảo; một ví dụ của các phần mềm được sử dụng một cách rộng rãi là VMware và VirtualBox, tạo ra một máy tính cá nhân đầy đủ như một máy ảo, được mô phỏng bằng phần mềm, nơi mà một số lượng lớn các hệ điều hành khác nhau có thể được cài đặt. VMware và VirtualBox sẵn sàng trong những phiên bản cho Windows và GNU/Linux. Cũng có những giải pháp khác của các máy ảo tự do như Qemu, KVM, Bochs. Trong phân khúc khác, các máy ảo hoặc sự ảo hóa nói chung được sử dụng hướng tới việc tạo ra các máy chủ ảo, với các giải pháp như máy chủ Vmware hoặc các dự án mở Xen, OpenVZ, Vserver; nơi mà có khả năng để tạo ra một vài máy ảo cho nhân hỗ trợ sự ảo hóa này), hoặc ngay cả một cách trực tiếp trên phần cứng, với các lớp phần mềm nhỏ. Ngoài việc chia sẻ các thông tin (các ứng dụng và/hoặc dữ liệu) bạn có thể tìm kiếm các ứng dụng GNU/Linux thay thế các ứng dụng của Windows khi người sử dụng dần dần học được cách sử dụng chúng và thấy rằng chúng đưa ra những chức năng được mong đợi.

Ví dụ

Một trường hợp có khả năng là bộ phần mềm văn phòng có thể chuyển đổi sang OpenOffice, có một mức độ cao tính tương thích với các tệp và các chức năng của Office khá là tương tự, hoặc KOffice (cho máy có môi trường đồ họa KDE), hoặc GNumeric và AbiWord (cho GNOME). Hoặc trong trường hợp xử lý ảnh, có thể sử dụng GIMP, với các chức năng tương tự như Photoshop. Và một loạt các trình chơi đa phương tiện: Xine, Mplayer (hoặc cùng một phiên bản của RealPlayer). Trên Internet có thể thấy một loạt các danh sách các chương trình tương ứng giữa Windows và GNU/Linux.

Trang 77/471

Page 78: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.5.2. Chuyển đổi của một tổ chức nhỏ với các hệ thống Windows và một ít UNIX

Chuyển đổi bên trong một tổ chức (ngay cả một tổ chức nhỏ) có vài khó khăn: sẽ có các môi trường công việc khác nhau và các phần mềm hỗn tạp, và hơn nữa, những người sử dụng chống lại sự thay đổi.

Bây giờ, hãy xem xét một tổ chức với các máy Windows và một số máy UNIX như những máy chủ hoặc máy trạm và những người sử dụng có một chút “vô chính phủ”. Ví dụ, hãy nghiên cứu tình huống sau: tổ chức có một mạng cục bộ nhỏ các máy Windows được chia sẻ với những người sử dụng như những máy tính ngang hàng trong một nhóm làm việc (workgroup) Windows (không có các máy chủ miền chạy Windows).

Nhóm này là đa dạng: chúng ta cho các máy tính với Windows 98, ME, NT, XP, được thiết lập cấu hình cho từng người sử dụng với các phần mềm cần thiết cho các công việc hàng ngày của họ: như Office, một trình duyệt, trình đọc thư điện tử, hoặc các môi trường phát triển cho các ngôn ngữ lập trình khác nhau (ví dụ, C, C++, Java).

Có một số tài nguyên phần cứng bổ sung sẵn sàng, như một loạt các máy in được kết nối tới mạng cục bộ (chúng chấp nhận các công việc của TCP/IP), có khả năng được sử dụng từ bất kỳ điểm nào bên trong tổ chức. Cùng lúc, có một máy chia sẻ, với một ít các tài nguyên đặc biệt, như là một máy quét, đầu ghi CD và các thư mục được mạng chia sẻ, nơi mà những người sử dụng có thể để lại các thư mục của riêng họ với các tệp của họ cho các quá trình sao lưu hoặc phục hồi các ảnh được quét, ví dụ thế.

Chúng ta cũng có vài máy trạm, trong trường hợp này là SPARC của Sun Microsystems, đang chạy Solaris (UNIX thương mại của Sun). Những máy trạm này được chuyên tâm để phát triển và cho một số ứng dụng đồ họa và khoa học. Những máy này có các dịch vụ NFS cho việc chia sẻ tệp và NIS+ cho việc quản lý các thông tin của người sử dụng có kết nối tới chúng và những người có thể làm thế từ bất kỳ máy tính nào theo một cách minh bạch. Một số máy tính đưa vào các dịch vụ đặc biệt; một trong số đó là máy chủ web của công ty và thứ khác được sử dụng như một máy chủ thư điện tử.

Chúng ta đang xem xét khả năng chuyển đổi sang GNU/Linux vì một sự quan tâm trong phát triển phần mềm và sự quan tâm đặc biệt từ một số người sử dụng để sử dụng hệ thống này.

Hơn nữa, sự chuyển đổi sẽ được thực hiện hầu hết để giải quyết những vấn đề chắc chắn nào đó có liên quan tới an ninh - một số hệ thống Windows cũ không phải là cách tốt nhất cho việc chia sẻ tệp; chúng ta muốn hạn chế sử dụng máy in (giá thành giấy và giá thành có liên quan là cao) với khẩu phần (quota) chấp nhận được hơn. Cùng lúc chúng ta có thể giống những người sử dụng sẽ có một số lượng nào đó của sự tự do, họ sẽ không bị ép buộc phải thay đổi hệ thống, mặc dù sự gợi ý sẽ được thực hiện đối với họ. Và chúng ta cũng sẽ tận dụng để mua phần cứng mới để bổ sung cho phần cứng đang tồn tại, ví dụ nếu các máy trạm đòi hỏi không gian đĩa bổ sung, bắt đưa ra những giới hạn về thư điện tử và các tài khoản người sử dụng.

Tiếp theo sự mô tả nhỏ này về tổ chức của chúng ta (trong những trường hợp khác phức tạp hơn thì có thể điền đầy vài trang hoặc là một tài liệu đầy đủ phân tích hiện trạng và đưa ra những đề xuất cho

Trang 78/471

Lưu ý

Ví dụ về các ứng dụng tương tự của GNU/Linux, xem: http://www.linuxalt.com/; http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software; http://www.linuxrsp.ru/winlin-soft/table-eng.html;

Page 79: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tương lai), có thể bắt đầu để xem xét những khả năng cho việc giải quyết tất cả những thứ này:

• Những thứ chúng ta làm với các máy trạm là gì nhỉ? Giá thành duy trì và các giấy phép phần mềm là cao. Cần quản sự duy trì các lỗi trong các máy trạm, phần cứng đắt đỏ (trong trường hợp này, là các đĩa SCSI) và những mở rộng bộ nhớ đắt đỏ nữa. Giá thành của hệ điều hành và những bản nâng cấp chúng cũng đắt đỏ. Trong trường hợp này, có 2 khả năng (phụ thuộc vào ngân sách mà chúng ta phải thực hiện sự thay đổi):

◦ Có thể cắt giảm chi phí bằng việc chuyển đổi các máy tính sang các hệ điều hành GNU/Linux. Những hệ thống này có một kiến trúc SPARC và có những phát tán hỗ trợ kiến trúc này. Có thể thay thế các dịch vụ bằng những thứ tương đương với GNU/Linux; sự thay thế có thể trực tiếp, vì chúng ta đã sử dụng một hệ thống UNIX.

◦ Khả năng khác có thể là để hạn chế phần cứng sở hữu độc quyền của Sun và để chuyển đổi các máy trạm thành các máy tính cá nhân mạnh với GNU/Linux; điều này có thể làm cho sự duy trì sau này đơn giản hơn, mặc dù giá thành ban đầu có thể là cao.

• Thế còn các phần mềm máy trạm thì sao? Nếu các ứng dụng đã từng được phát trển nội bộ, thì có thể là đủ để biên dịch chúng hoặc tiến hành một sự chỉnh sửa đơn giản cho môi trường mới. Nếu chúng là thương mại, thì chúng ta sẽ phải thấy liệu công ty này có thể cung cấp chúng trong các môi trường GNU/Linux hay không, hoặc nếu có thể thấy được những thay thế bằng một chức năng tương tự. Trong trường hợp của các lập trình viên, các môi trường của họ về các ngôn ngữ C, C++ và Java là dễ dàng khả chuyển được; trong trường hợp của C và C++, gcc, trình biên dịch GNU, có thể được sử dụng và có một loạt các IDE cho sự phát triển (Kdevelop, Anjuta, …); hoặc trong trường hợp của Java, thì bộ công cụ của Sun có thể được sử dụng trong GNU/Linux và trong một loạt các môi trường mã nguồn mở (Eclipse của IBM hoặc Netbeans).

• Thế còn về những người sử dụng thì sao? Đối với những người có quan tâm trong các hệ điều hành GNU/Linux, có thể cài đặt song song với Windows và GNU/Linux sao cho họ có thể bắt đầu thử nghiệm hệ thống và nếu họ có quan tâm, có thể cuối cùng chuyển sang chỉ với hệ điều hành GNU/Linux. Có thể thấy 2 dạng người sử dụng: thuần túy là những người sử dụng bộ phần mềm văn phòng, những người về cơ bản sẽ cần bộ này, trình duyệt web và thư điện tử; tất cả chúng có thể được chào với một máy có môi trường đồ họa GNU/Linux như GNOME hoặc KDE và các phần mềm như OpenOffice, trình duyệt Mozilla/Firefox, và Mozilla Mail hoặc thư điện tử Thunderbird (hoặc bất kỳ thứ gì khác như Kmail, Evolution...). Chúng ít nhiều là tương đương một cách trực tiếp, tất cả phụ thuộc vào mong muốn của người sử dụng để thử nghiệm và sử dụng các phần mềm mới này. Đối với các lập trình viên, sự thay đổi có thể là trực tiếp hơn, vì họ được chào nhiều môi trường hơn và các công cụ mềm dẻo hơn; họ có thể hoàn toàn đi sang các hệ điều hành GNU/Linux hoặc làm việc trực tiếp với các máy trạm.

• Và các máy in thì sao? Có thể thiết lập một máy trạm như một máy chủ in (hoặc thông qua các hàng đợi TCP/IP hoặc máy chủ Samba), và kiểm soát việc in bằng khẩu phần (quota).

• Các máy chia sẻ thì sao? Phần cứng chia sẻ có thể được để lại trên cùng máy hoặc có thể được kiểm soát từ một hệ điều hành GNU/Linux. Về không gian đĩa được chia sẻ, có thể được chuyển tới một máy chủ Samba, sẽ thay thế cho một máy hiện hành.

Trang 79/471

Page 80: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Liệu chúng ta có mở rộng không gian đĩa hay không? Điều này sẽ phụ thuộc vào ngân sách của chúng ta. Có thể cải thiện kiểm soát bằng các phương tiện của một hệ thống khẩu phần quota, phân phối không gian phù hợp và thiết lập những giới hạn cho sự bão hòa.

2.5.3. Chuyển đổi một máy chủ Windows đứng một mình sang một máy chủ Samba chạy GNU/Linux

Qui trình cơ bản được yêu cầu có xu hướng mở rộng hơn nhiều, hãy xem phần thư mục tham khảo về các bước đầy đủ được thực hiện.

Trong trường hợp này, qui trình cơ bản được yêu cầu cho một sự chuyển đổi từ một máy chủ Windows chia sẻ các tệp và một máy in tới một máy chủ Samba chạy một hệ điều hành GNU/Linux.

Nhờ có các phần mềm như Samba, sự chuyển đổi từ các môi trường Windows là rất mềm dẻo và nhanh chóng và thậm chí còn cải tiến được hiệu năng của máy.

Giả thiết một máy thuộc về một nhóm làm việc tên là GROUP, chia sẻ một máy in tên là PRINTER và với một tệp được chia sẻ có tên là DATA, không gì hơn là một ổ đĩa D của máy. Một vài máy trạm Windows truy cập thư mục này để đọc/ghi, bên trong một mạng cục bộ với địa chỉ IP 192.168.1.x, nơi mà x sẽ là 1 đối với máy chủ Windows của chúng ta, và các máy trạm sẽ có những giá trị khác (các mạng 192.168.x.x thường được sử dụng như các địa chỉ để cài đặt các mạng nội bộ riêng).

Như một phần của qui trình, chúng ta sẽ xây dựng một máy chủ Samba, là những gì như đã thấy, cho phép chạy giao thức SMB/CIFS (khối thông điệp máy chủ/ hệ thống tệp Internet chung) trong GNU/Linux. Giao thức này cho phép hệ thống tệp và các máy in tương tác thông qua các mạng trong các hệ điều hành khác nhau. Có thể kích hoạt (mount) các thư mực thuộc về Windows trên các máy GNU/Linux, hoặc một phần các thư mục của GNU/Linux trên Windows và tương tự với mỗi máy in khác. Máy chủ cấu tạo từ 2 daemon (các tiến trình hệ thống) gọi là smbd và nmbd.

Tiến trình smbd quản lý các yêu cầu của các máy trạm từ các tệp hoặc máy in được chia sẻ. Tiến trình nmbd quản lý hệ thống tên của các máy và các tài nguyên theo giao thức NetBIOS (được IBM tạo ra). Giao thức này là độc lập với mạng được sử dụng (hiện hành, trong NT/2000/XP Microsoft thường sử dụng Netbios qua TCP/IP). nmbd cũng đưa ra các dịch vụ WINS, là dịch vụ chỉ định tên thường chạy được trên Windows NT/Server nếu chúng ta có một bộ sưu tập các máy; đây là một dạng kết hợp của DNS và DHCP cho các môi trường Windows. Tiến trình này là thứ gì đó phức tạp, nhưng để tóm tắt: khi một máy Windows khởi động hoặc có một địa chỉ IP tĩnh hoặc địa chỉ động thông qua một máy chủ DHCP và có thể bổ sung thêm cả một tên của NetBIOS (người sử dụng chỉ định cho máy: khi xác thực mạng), thì sau đó máy trạm WINS sẽ kết nối máy chủ để báo IP của nó; nếu một máy mạng sau đó yêu cầu tên của NetBios, thì máy chủ WINS sẽ được kết nối để có được địa chỉ IP và sự kết nối được thực hiện. nmbd chạy qui trình này trong GNU/Linux.

Giống như bất kỳ dịch vụ mạng nào khác, không nên chạy mà không xem xét tới rủi ro do việc kích hoạt nó có thể gây ra, và cách mà chúng ta có thể tối thiểu hóa rủi ro này. Về Samba, chúng ta cần nhận thức được về các vấn đề an ninh, vì chúng ta đang mở phần của mạng cục bộ của chúng ta ra với các tệp và máy in. Cũng sẽ phải kiểm tra những giới hạn giao tiếp một cách phù hợp để ngăn ngừa sự truy

Trang 80/471

Page 81: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cập đối với những người sử dụng hoặc máy tính không được phép. Trong ví dụ cơ bản này, chúng ta sẽ không bình luận về những vấn đề này; trong một kịch bản thực tế, có thể phải kiểm tra những lựa chọn an ninh và chỉ cho phép truy cập cho những ai mà chúng ta muốn.

Trong qui trình chuyển đổi, đầu tiên sẽ phải thiết lập cấu hình cho hệ điều hành GNU/Linux để hỗ trợ Samba [Woo00], sẽ cần các hệ thống tệp Samba hỗ trợ trong nhân (smbfs), thường sẵn sàng được kích hoạt. Nên bổ sung thêm rằng hiện hành có sự hỗ trợ bổ sung trong nhân thông qua module cifs [Ste07], như phiên bản nhân 2.6.20 được coi là phương thức mặc định, để smbfs như một lựa chọn thứ 2. Module cifs đưa ra sự hỗ trợ cho các tính năng mới có liên quan tới giao thức CIFS (như một mở rộng của SMB). Thông qua các tên hệ thống tệp “smbfs” và “cifs” thì những module này cho phép tiến hành các hoạt động cho việc kích hoạt (mount) các hệ thống tệp Windows vào cây thư mục của Windows (mount -t smbfs hoặc mount – t cifs). Ngoài thực tế là sự hỗ trợ của nhân có khuynh hướng hướng tới module cifs, có một số đặc tính có thể cần sự hỗ trợ của smbfs, có nghĩa là thường cả các module này sẽ được kích hoạt trong nhân. Cũng nên nhớ tới vấn đề cấu hình, trong khi smbfs dựa chức năng của nó lên cấu hình của Samba (cũng như sẽ thấy trong tệp smb.conf), thì module cifs đưa ra cấu hình của nó thông qua các hoạt động (ví dụ, trong quá trình kích hoạt thông qua mount).

Trong trường hợp sử dụng một máy chủ Samba, bổ sung thêm vào sự hỗ trợ của nhân, chúng ta sẽ cần cài đặt các gói phần mềm có liên quan: chúng ta sẽ phải kiểm tra những gói nào có liên quan tới Samba mà phát tán đưa vào và cài đặt những gói có liên quan đó cho việc vận hành máy chủ. Hơn nữa, nếu muốn, những gói có liên quan tới Samba như một máy trạm, trong trường hợp chúng ta muốn sẽ là những máy trạm của các máy tính Windows hoặc để kiểm thử các tài nguyên được chia sẻ với các máy tính Windows từ hệ điều hành GNU/Linux của chúng ta. Trong một phát tán Debian, những gói này là: samba, samba-common, smbclient, smbfs. Cũng có thể thú vị để cài đặt swat, là một công cụ đồ họa dựa trên web cho việc quản trị các dịch vụ Samba. Đối với máy chủ Samba GNU/Linux của chúng ta [Woo00] [War03], ví dụ, chúng ta sẽ phải truyền các nội dung của đĩa D trước đó (nơi mà chúng ta đã có hệ thống tệp chia sẻ) từ máy gốc tới máy mới và đặt nội dung của nó vào một đường dẫn, như là /home/DATA, hoặc thông qua một bản sao sao lưu, truyền tệp, hoặc sử dụng Samba như một máy trạm để truyền các tệp.

Việc sử dụng GNU/Linux như một máy trạm Samba, khá đơn giản. Thông qua sử dụng các lệnh máy trạm cho việc sử dụng thỉnh thoảng của hệ thống tệp:

a) Chúng ta kích hoạt (mount) một thư mục được chia sẻ của Windows (ví dụ, máy chủ host đang là tên của máy chủ Windows), lên một điểm kích hoạt được xác định từ trước:

smbmount //host/carpeta /mnt/windows

b) Chúng ta sẽ đặt sự truy cập này tới thư mục Windows của máy chủ host trong thư mục cục bộ của chúng ta, truy cập trong cây thư mục:

/mnt/ windows

c) Sau đó, khi không còn dùng nữa thì chúng ta có thể vô hiệu tài nguyên này bằng:

smbumount /mnt/windows

Trang 81/471

Page 82: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Nếu chúng ta không nhận thấy các tài nguyên được chia sẻ, thì có thể có một danh sách với:

smbclient - L host

Và chúng ta cũng có thể sử dụng smbclient //host/folder, là một chương trình tương tự cho một máy trạm FTP.

Trong trường hợp có mong muốn làm cho các hệ thống tệp sẵn sàng vĩnh viễn, hoặc để cung cấp các cấu hình đặc biệt nhất định nào đó, có thể nghiên cứu sử dụng lệnh mount trực tiếp (các tiện ích smbxxxx sử dụng nó), hoặc với smbfs hoặc các hệ thống tệp cifs (được hỗ trợ trong nhân), tính tới các thông số (xác thực người sử dụng/nhóm của Windows hoặc các thông số dịch vụ khác), mà chúng ta sẽ phải cung cấp phụ thuộc vào trường hợp đó, và vào cấu hình của Samba tồn tại từ trước đó [Ste07].

Trong trường hợp của máy chủ Samba, một khi đã cài đặt tất cả các phần mềm, sẽ phải thiết lập cấu hình cho máy chủ thông qua tệp cấu hình của nó. Phụ thuộc vào phiên bản (hoặc phát tán), tệp này có thể trong /etc/smb.conf hoặc trong /etc/samba/smb.conf. Những lựa chọn được chỉ ra ở đây thuộc về một Samba 3.x.x được cài đặt trên một hệ thống của phát tán Debian. Những phiên bản khác có thể có một ít những sửa đổi nhỏ.

Trong khi cài đặt các gói phần mềm, chúng ta sẽ thường được hỏi về các dữ liệu có liên quan tới cấu hình của nó. Trong trường hợp của Samba, chúng ta sẽ được hỏi về nhóm làm việc sẽ được phục vụ; chúng ta sẽ phải đặt tên y hệt của nhóm như trong Windows. Cũng sẽ được hỏi liệu chúng ta có muốn các mật khẩu được mã hóa (được khuyến khích vì những lý do an ninh, trong Windows 9x chúng đã được gửi ở dạng văn bản thông thường, thiếu an ninh và tính có thể bị tổn thương cao của hệ thống).

Sau đó sẽ nhìn vào qui trình của việc thiết lập cấu hình cho tệp smb.conf. Tệp này có 3 phần chính:

1) Global (các đặc tính chức năng cơ bản).

2) Browser (các kiểm soát mà những máy tính khác thấy được các tài nguyên của chúng ta).

3) Share (các kiểm soát mà chúng ta chia sẻ).

Trong sách chỉ dẫn mở rộng của tệp này có thể thấy những lựa chọn sẵn sàng (man smb.conf). Chúng ta sẽ soạn thảo tệp này với một trình soạn thảo và xem một số các dòng của tệp (các ký tự '#' hoặc ';' ở đầu của một dòng là những chú giải: Nếu dòng này chứa ';' thì đây là một chú giải; để cho phép một dòng, nếu nó là một dòng cấu hình có thể lựa chọn thì chúng ta phải soạn thảo nó và loại bỏ ';');

workgroup = GROUP

Điều này chỉ ra nhóm làm việc của Windows mà các máy trạm Windows sẽ là các thành viên.

server string = %h server (Samba %v)

Có thể đặt một mô tả văn bản cho máy chủ của chúng ta. Chữ h và v mà xuất hiện là những biến của Samba tham chiếu tới tên máy chủ host và phiên bản của Samba. Vì các lý do an ninh, sẽ là ý tưởng tốt để loại bỏ v, vì điều này sẽ thông báo cho bên ngoài phiên bản nào của Samba chúng ta có; nếu có

Trang 82/471

Lưu ý

Luôn tham vấn các trang man, hoặc các sách chỉ dẫn, mà đi với gói phần mềm này.

Page 83: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

những lỗi an ninh được biết, thì điều này có thể được sử dụng.

hosts allow = 192.168.1

Dòng này có hoặc không được trình bày, và chúng ta có thể đưa nó vào để cho phép những máy chủ host nào sẽ được phục vụ; trong trường hợp này, tất cả những máy trong dãy 192.168.1.x.

printcap name = /etc/printcap

Tệp printcap là nơi mà GNU/Linux lưu trữ định nghĩa của các máy in, và đây là nơi mà Samba sẽ tìm kiếm thông tin về chúng.

guest account = nobody

Đây là tài khoản khách. Chúng ta có thể tạo một tài khoản khác, hoặc chỉ kích hoạt sự truy cập tới Samba cho những người sử dụng được đăng ký trong hệ điều hành GNU/Linux.

log file = /var/log/samba/log.%m

Dòng này nói cho chúng ta nơi mà các tệp log của Samba sẽ được lưu trữ. Mỗi tệp được lưu trữ cho một máy trạm (biến số m là tên của máy trạm được kết nối).

encrypt passwords = true

Vì các lý do an ninh được khuyến cáo sử dụng các mật khẩu được mã hóa nếu chúng ta có các máy trạm với Windows 98, NT hoặc mới hơn. Các mật khẩu này được lưu trữ trong một tệp /etc/samba/smbpasswd, thường được tạo ra cho những người sử dụng cài đặt Samba. Các mật khẩu có thể được thay đổi với lệnh smbpasswd. Cũng có một lựa chọn được gọi là UNIX Password sync (đồng bộ mật khẩu UNIX), cho phép sự thay đổi cùng một lúc cho cả 2 mật khẩu (người sử dụng Samba và người sử dụng Linux).

Sau đó, chúng ta sẽ nhảy sang phần các Định nghĩa Chia sẻ:

[homes]

Những dòng này cho phép truy cập tới các tài khoản của người sử dụng từ các máy Windows. Nếu không muốn điều này, thì sẽ bổ sung một số ';' vào đầu của các dòng này, và khi các máy tính kết nối chúng sẽ thấy chú giải tên này. Về nguyên tắc, việc ghi này được vô hiệu hóa, để cho phép nó, thì bạn chỉ phải thiết lập “yes” như là lựa chọn ghi được.

Bất kỳ việc chia sẻ nào của một thư mục đặc biệt (Samba có xu hướng gọi một nhóm các dữ liệu chia sẻ là một phân vùng), chúng ta sẽ xử lý như được trình bày trong các ví dụ (xem, ví dụ định nghĩa của việc chia sẻ CD-ROM trong các dòng mà bắt đầu với [cdrom]. Trong đường dẫn chúng ta sẽ đặt đường truy cập.

Ví dụ

Trong trường hợp của chúng ta, ví dụ, có thể trao tên DATA cho phân vùng trong đường dẫn /home/DATA, nơi mà chúng ta đã sao chép đĩa D từ máy gốc Windows và đường dẫn nơi mà nó có thể được tìm thấy, bổ sung vào cho một

Trang 83/471

Lưu ý

Xem: man smb.conf

Page 84: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nhóm lớn các lựa chọn có khả năng được sửa đổi, những người sử dụng được xác thực để truy cập chúng và cách thực hiện như vậy.

Cũng có một định nghĩa các hồ sơ, có khả năng kiểm soát được các hồ sơ những người sử dụng Windows, nói một cách khác, thư mục nơi mà cấu hình máy Windows được lưu trữ, thực đơn khởi tạo (start up)...

Các phương pháp là tương tự cho các máy in: một phân vùng được thực hiện với tên các máy in (y hệt được làm trong GNU/Linux), và trong đường dẫn chúng ta đặt địa chỉ hàng đợi có liên quan tới máy in (trong GNU/Linux chúng ta sẽ thấy nó trong: /var/spool/samba/PRINTER). Và lựa chọn pritable = yes (in được = yes), nếu chúng ta muốn các công việc sẽ được Samba gửi. Và chúng ta cũng có thể hạn chế sự truy cập của người sử dụng (những người sử dụng hợp lệ).

Một khi chúng ta đã làm được những thay đổi này thì chúng ta sẽ chỉ phải lưu chúng và khởi động lại Samba sao cho nó có thể đọc được cấu hình mới. Trong Debian:

/etc/init.d/samba restart

Bây giờ, thư mục được chia sẻ và máy in thông qua Samba sẽ sẵn sàng để phục vụ người sử dụng mà không có việc lưu ý thay đổi bất kỳ nào trong quan hệ với những kết nối trước đó với máy chủ Windows.

Trang 84/471

Page 85: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Trong mô tả các dịch vụ của GNU/Linux, liệu có thấy chúng ta đang đánh mất bất kỳ chức năng nào không? Dạng các dịch vụ nào khác có thể bổ sung được?

2) Trong trường hợp điển hình thứ 2 của sách chỉ dẫn (một trường hợp của tổ chức), làm thế nào bạn có thể thay đổi hạ tầng CNTT nếu bạn đã có ngân sách bằng 0, một ngân sách trung bình, hoặc một ngân sách cao? Hãy trình bày một số giải pháp thay thế cho những thứ được trình bày.

3) Các công nghệ ảo hóa như máy trạm ảo VMware hoặc VirtualBox, máy ảo thông qua phần mềm, có khả năng cài đặt các hệ điều hành lên một máy tính cá nhân ảo. Bạn có thể có được phần mềm từ www.vmware.com hoặc www.virtualbox.org. Hãy thử (trong trường hợp có một giấy phép Windows) cài đặt nó lên Windows, và sau đó lên GNU/Linux trên máy tính cá nhân ảo (hoặc cách khác). Những ưu điểm nào của phương pháp này cho việc chia sẻ các hệ điều hành được đưa ra? Những vấn đề nào nó sẽ gây ra?

4) Nếu có 2 máy tính cho việc cài đặt một máy chủ Samba, thì chúng ta có thể thử nghiệm cài đặt máy chủ hoặc cấu hình trong các cấu hình của máy trạm UNIX Samba - máy chủ Windows, hoặc máy trạm Windows - máy chủ Samba trong GNU/Linux. Bạn có thể thử nghiệm nó trên một máy tính duy nhất có sử dụng cùng máy tính như một máy chủ và máy trạm Samba.

Trang 85/471

Page 86: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu và thông tin khác

Dự án Tài liệu Linux [LPD] đưa ra Howtos (Làm thế nào) về các khía cạnh khác nhau của một hệ điều hành GNU/Linux và một tập hợp các sách chỉ dẫn chi tiết hơn.

[Mor03] Tham chiếu tốt cho cấu hình của các hệ thống Linux, với một số trường hợp điển hình trong các môi trường khác nhau; các bình luận về các phát tán Debian và Red Hat.

Trang 86/471

Page 87: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3 Các công cụ cơ bản cho người quản trị

Josep Jorba Esteve PID_00148464

Basic tools for the administrator

Josep Jorba Esteve PID_00148464

Trang 87/471

Page 88: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Trên cơ sở hàng ngày, một người quản trị các hệ thống GNU/Linux phải làm việc với một số lượng lớn các nhiệm vụ. Nói chung, triết lý của UNIX không chỉ có một công cụ cho mỗi nhiệm vụ hoặc chỉ một cách để làm mọi thứ. Điều thông thường đối với các hệ thống UNIX là đưa ra được một số lượng lớn của ít nhiều các công cụ đơn giản để quản lý các nhiệm vụ khác nhau.

Đó sẽ là sự kết hợp của các công cụ cơ bản, mỗi công cụ với một nhiệm vụ được xác định tốt sẽ cho phép chúng ta giải quyết được một vấn đề hoặc nhiệm vụ quản trị.

Trong phần này chúng ta sẽ xem các nhóm công cụ khác nhau, xác định một số chức năng cơ bản của chúng và xem một ít các ví dụ sử dụng chúng. Chúng ta sẽ bắt đầu bằng việc xem xét một số chuẩn của thế giới GNU/Linux, sẽ giúp tìm ra một số đặc tính cơ bản chúng ta mong đợi từ bất kỳ phát tán GNU/Linux nào. Những chuẩn này, như cơ sở chuẩn của Cơ sở Chuẩn Linux LSB (Linux Standard Base) [Linc] và chuẩn về tôn ti trật tự của hệ thống tệp FHS (File Hierarchy System) [Linb], nói cho chúng ta biết về các công cụ sẵn sàng, một cấu trúc chung cho hệ thống tệp, và một loạt các tiêu chí cần phải được thỏa mãn cho một phát tán để được coi là một hệ thống GNU/Linux và để duy trì các qui định được chia sẻ vì tính tương thích giữa chúng.

Việc tự động hóa các nhiệm vụ quản trị có xu hướng sẽ sử dụng các lệnh được nhóm trong các bó scripts (các scripts lệnh), thông qua ngôn ngữ được trình biên dịch lệnh (shell) của hệ thống biên dịch bởi. Trong việc lập trình các bó scripts, chúng ta được phép tham gia vào các lệnh hệ thống với các cấu trúc kiểm soát tiến trình, và vì thế có một môi trường các công cụ mẫu nhanh chóng cho việc tự động hóa các nhiệm vụ.

Sơ đồ chung khác là để sử dụng các công cụ biên dịch và gỡ rối cho các ngôn ngữ mức cao (ví dụ C). Nói chung, người quản trị sẽ sử dụng chúng để tạo ra những phát triển mới của các ứng dụng hoặc các công cụ, hoặc để kết hợp các ứng dụng ở dạng mã nguồn, cần phải được thích nghi và biên dịch.

Chúng ta cũng sẽ phân tích việc sử dụng một số công cụ đồ họa với các dòng lệnh thông thường. Những công cụ này có xu hướng tạo thuận lợi cho những nhiệm vụ của người quản trị mà việc sử dụng chúng bị hạn chế vì chúng phụ thuộc nặng vào phát tán và phiên bản GNU/Linux. Ngay cả như vậy, có một số công cụ hữu hiệu sử dụng chung được giữa các phát tán khác nhau.

Cuối cùng, chúng ta sẽ phân tích một tập hợp các công cụ cơ bản cho việc duy trì hệ thống được cập nhật, các công cụ quản lý gói. Các phần mềm đi cùng với phát tán GNU/Linux hoặc sau đó được kết hợp vào trong phát tán GNU/Linux và thường được đưa ra dưới dạng các gói, đưa vào các tệp của phần mềm cụ thể nào đó, cộng với một loạt các bước được yêu cầu để chuẩn bị cài đặt và sau đó thiết lập cấu hình cho nó hoặc, ở những nơi có thể áp dụng được, để cập nhật hoặc bỏ cài đặt các phần mềm cụ thể nào đó. Mỗi phát tán có xu hướng mang theo các phần mềm quản lý cho việc duy trì danh sách các gói được cài đặt hoặc có thể cài đặt được, cũng như cho việc kiểm tra những phiên bản đang tồn tại hoặc một loạt những khả năng cập nhật chúng thông qua các nguồn ban đầu khác nhau.

Trang 88/471

Lưu ý

GNU/Linux có một dải rất rộng lớn các công cụ với các chức năng cơ bản, sức mạnh của chúng nằm trong sự kết hợp của chúng với nhau.

Page 89: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.1. Các công cụ đồ họa và dòng lệnh

Có một số lượng lớn các công cụ, trong số đó chúng ta sẽ xem xét một phần nhỏ và các module đi kèm, được cung cấp như các công cụ quản trị từ bên thứ 3, độc lập với phát tán, hoặc từ nhà phân phối của bản thân hệ thống GNU/Linux.

Các công cụ có thể bao trùm nhiều khía cạnh quản trị một nhiệm vụ cụ thể và có thể xuất hiện với một loạt các giao diện khác nhau: hoặc các công cụ dòng lệnh với một loạt các lựa chọn cấu hình có liên quan và/hoặc các tệp hoặc các công cụ văn bản với một số mẫu thực đơn; hoặc các công cụ đồ họa, với các giao diện phù hợp hơn cho việc quản lý thông tin, các thuật sĩ để tự động hóa các nhiệm vụ hoặc các giao diện quản trị web.

Tất cả những thứ này đưa ra cho chúng ta một dải rộng lớn các khả năng nơi mà việc quản trị được quan tâm, chúng ta sẽ luôn phải đánh giá sự dễ dàng sử dụng chúng với những lợi ích sử dụng chúng, và tri thức của nhà quản trị có trách nhiệm đối với các nhiệm vụ này.

Các nhiệm vụ chung của một người quản trị GNU/Linux có thể bao gồm sự làm việc với các phát tán khác nhau (ví dụ, những phát tán như Fedora [Fed] hoặc Debian [Debb] hoặc bất kỳ phát tán nào khác) hoặc ngay cả làm việc với các biến thể thương mại của các hệ thống UNIX khác. Điều này dẫn tới việc phải thiết lập một cách chắc chắn công việc cho phép chúng ta thực hiện được các nhiệm vụ trong các hệ thống khác nhau theo một cách thống nhất.

Vì lý do này, thông qua các module khác nhau chúng ta sẽ cố gắng nhấn mạnh những khía cạnh chung nhất và những kỹ thuật quản trị sẽ được thực hiện nhiều nhất ở mức thấp thông qua một dòng lệnh và/hoặc việc soạn thảo các tệp cấu hình có liên quan.

Bất kỳ phát tán GNU/Linux nào cũng có xu hướng đưa vào các công cụ dòng lệnh, văn bản, hoặc đặc biệt, đồ họa để bổ sung cho những thứ nêu trên và ở một mức độ ít nhiều nào đó để đơn giản hóa sự quản trị các nhiệm vụ [Sm02]. Chúng ta cần tính tới vài thứ:

a) Các công cụ là một giao diện ít nhiều công phu của các công cụ dòng lệnh cơ bản và các tệp cấu hình tương ứng.

b) Thường thì chúng không đưa ra tất cả các tính năng hoặc cấu hình có thể được triển khai ở mức thấp.

c) Các lỗi không được quản trị tốt hoặc có thể đơn giản cung cấp các thông điệp ở dạng “nhiệm vụ này có thể không được thực hiện”.

d) Sử dụng các công cụ này làm ẩn đi, đôi khi hoàn toàn, hoạt động nội bộ bên trong của dịch vụ hoặc nhiệm vụ. Có sự hiểu biết đúng về hoạt động nội bộ bên trong là cơ bản cho người quản trị, đặc biệt nếu người quản trị có trách nhiệm cho việc sửa các lỗi hoặc tối ưu hóa các dịch vụ.

e) Các công cụ là hữu ích cho việc cải thiện năng suất một khi người quản trị có được tri thức theo yêu cầu để quản lý các nhiệm vụ lặp đi lặp lại một cách có hiệu quả hơn và để tự động hóa được chúng.

f) Hoặc, trong trường hợp ngược lại, nhiệm vụ có thể thật phức tạp, đòi hỏi nhiều tham số hoặc sinh ra quá nhiều dữ liệu, có thể trở nên không thể kiểm soát được một cách thủ công. Trong những trường

Trang 89/471

Page 90: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hợp này, các công cụ mức độ cao có thể sẽ rất hữu dụng và làm cho các nhiệm vụ được thực hiện mà nếu khác đi thì khó kiểm soát được. Ví dụ, chủng loại này có thể đưa vào các công cụ ảo hóa, các công cụ giám sát, và các tóm tắt các nhiệm vụ hoặc các dịch vụ phức tạp.

g) Để tự động hóa các nhiệm vụ, những công cụ (ở mức cao hơn) có thể sẽ không phù hợp: chúng có thể đã không được thiết kế cho các bước tiến hành cần thiết hoặc có thể thực hiện chúng một cách không hiệu quả. Ví dụ, trường hợp đặc biệt có thể là việc tạo ra những người sử dụng, nơi mà một công cụ trực quan có thể là rất lôi cuốn vì cách thức đưa các dữ liệu vào; sẽ là gì nếu thay vào việc đưa vào một hoặc vài người sử dụng chúng ta lại muốn đưa vào cả một danh sách của hàng trăm hoặc hàng ngàn người? Nếu không chuẩn bị tốt cho điều này, thì công cụ sẽ trở nên hoàn toàn không hiệu quả.

h) Cuối cùng, những người quản trị thường mong muốn cá nhân hóa các nhiệm vụ của họ bằng việc sử dụng các công cụ mà họ thấy thuận tiện nhất và dễ dàng áp dụng nhất. Ở khía cạnh này, thường sẽ sử dụng các công cụ cơ bản mức thấp, và các bó scripts (chúng ta sẽ nghiên cứu những điều cơ bản trong phần này) kết hợp chúng để tạo thành một nhiệm vụ.

Chúng ta thỉnh thoảng (hoặc hàng ngày) có thể sử dụng các công cụ này, nếu chúng ta có tri thức theo yêu cầu để làm việc với các lỗi có thể nảy sinh hoặc tạo điều kiện cho một qui trình mà công cụ đó sinh ra, luôn kiểm soát được các nhiệm vụ chúng ta triển khai và tri thức công nghệ bên trong.

Trang 90/471

Page 91: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.2. Các chuẩn

Các chuẩn, hoặc chung của UNIX hoặc đặc biệt cho GNU/Linux, cho phép chúng ta tuân theo một vài tiêu chí cơ bản chỉ dẫn cho chúng ta trong việc học các cách thức để thực thi một nhiệm vụ và đưa ra cho chúng ta thông tin cơ bản cho việc bắt đầu công việc của chúng ta.

Trong GNU/Linux chúng ta có thể thấy các chuẩn, như FHS (chuẩn tôn ti trật tự của hệ thống tệp) [Linb], nói cho chúng ta những gì chúng ta có thể thấy trong cấu trúc hệ thống tệp của hệ thống của chúng ta (hoặc nơi để tìm nó), hoặc LSB (cơ sở chuẩn Linux), đề cập tới các thành phần khác nhau mà chúng ta có xu hướng tìm kiếm trong các hệ thống [Linc].

Chuẩn tôn ti trật tự của hệ thống tệp (FHS - Filesystem hierchachy Standard) mô tả cấu trúc cây hệ thống tệp chính (/), chỉ định cấu trúc của các thư mục và các tệp chính chúng sẽ chứa. Chuẩn này cũng được sử dụng ở một mức độ ít nhiều đối với UNIX thương mại, nơi mà gốc ban đầu từng có nhiều sự khác biệt từng làm cho mỗi nhà sản xuất thay đổi cấu trúc khi họ muốn. Chuẩn ban đầu được sinh ra cho GNU/Linux từng được thực hiện để giải quyết tình trạng này và tránh các thay đổi mạnh mẽ. Dù như vậy, thì chuẩn này cũng được thấy có những khác biệt theo các mức độ khác nhau, hầu hết những phát tán tuân theo với số phần trăm cao FHS, tiến hành những thay đổi nhỏ hoặc bổ sung các tệp hoặc các thư mục không có trong chuẩn này.

Một sơ đồ thư mục có thể là:

• /bin: các tiện ích hệ thống cơ bản, thường các chương trình được những người sử dụng sử dụng, hoặc từ các lệnh cơ bản của hệ thống (như là /bin/ls, list directory), bó (/bin/bash)...

• /boot: các tệp cần thiết để khởi động hệ thống, như ảnh của nhân Linux, trong /boot/vmlinuz.

• /dev: ở đây chúng ta thấy các tệp đặc biệt đại diện cho các thiết bị có khả năng khác nhau trong hệ thống, truy cập tới các thiết bị ngoại vi trong các hệ thống UNIX, được làm theo cách dường như chúng đều là các tệp. Có thể thấy các tệp như /dev/console, /dev/modem, /dev/mouse, /dev/cdrom, /dev/floppy … chúng có xu hướng sẽ là các liên kết tới các thiết bị đặc biệt hơn của các trình điều khiển như /dev/hdx, scsi /dev/sdx … với x biến đổi theo số lượng các thiết bị. Chúng ta nên nhớ rằng ban đầu các thư mục này từng là tĩnh, với các tệp được xác định trước, và/hoặc được thiết lập cấu hình ở những điểm đặc biệt, ngày nay chúng ta sử dụng các kỹ thuật công nghệ động (như cài cắm nóng - hotplug hoặc udev), có khả năng dò tìm ra các thiết bị và tạo ra các tệp /dev một cách tự động khi hệ thống khởi động hoặc trong khi chạy, với sự chèn vào của các thiết bị tháo lắp được.

• /etc: các tệp cấu hình. Hầu hết các nhiệm vụ quản trị sẽ cần phải xem xét hoặc sửa đổi các tệp có chứa trong thư mục này. Ví dụ: /etc/passwd có chứa phần thông tin về các tài khoản của người sử dụng hệ thống.

Trang 91/471

Lưu ý

Chuẩn FHS là một công cụ cơ bản cho phép chúng ta hiểu được cấu trúc và chức năng của hệ thống tệp chính của hệ thống.

Lưu ý

Xem FHS trong: www.pathname.com/fhs

Page 92: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• /home: chứa các tài khoản người sử dụng, nghĩa là các thư mục cá nhân của từng người sử dụng.

• /lib: các thư viện hệ thống, được chia sẻ từ người sử dụng các chương trình, hoặc tĩnh (mở rộng là .a) hoặc động (mở rộng là .so). Ví dụ, thư viện C chuẩn, trong các tệp libc.so hoặc libc.a. Đặc biệt, chúng ta có thể thường thấy các module động của nhân Linux, trong /lib/modules.

• /mnt: điểm để kích hoạt (lệnh mount) các hệ thống tệp một cách tạm thời; ví dụ: /mnt/cdrom, để kích hoạt một đĩa trong trình đọc đĩa CD-ROM một cách tạm thời.

• /media: điểm kích hoạt chung của các thiết bị tháo lắp được.

• /opt: phần mềm được bổ sung cho hệ thống sau khi cài đặt thường được đặt ở đây; cài đặt hợp lệ khác là trong /usr/local.

• /sbin: các tiện ích hệ thống cơ bản. Chúng có xu hướng sẽ là lệnh được giữ lại cho người quản trị (gốc – root). Ví dụ: /bin/fsck để kiểm tra tình trạng của các hệ thống tệp.

• /tmp: các tệp tạm thời của các ứng dụng hoặc của bản thân hệ thống. Dù chúng là để chạy tạm thời, thì giữa 2 sự thừa hành ứng dụng/dịch vụ không giả thiết được là nó thấy các tệp trước đó.

• /usr: các yếu tố khác được cài đặt trên hệ thống. Một số phần mềm hệ thống hoàn chỉnh được cài đặt ở đây, bổ sung thêm vào các yếu tố phụ (các biểu tượng, hình ảnh, âm thanh, ví dụ trong: /usr/share) và các tài liệu hệ thống (/usr/share/doc). Nó cũng có xu hướng sẽ được sử dụng trong /usr/local cho việc cài đặt phần mềm.

• /var: tệp ghi lưu ký log hoặc các tệp dạng tình trạng và/hoặc các tệp của bản thân hệ thống và của một loạt các dịch vụ cục bộ và mạng. Ví dụ, các tệp log trong /var/log. Nội dung thư điện tử trong /var/spool/mai, hoặc các công việc in ấn trong /var/spool/lpd.

Có một số thư mục được xác định trong FHS cho hệ thống gốc root, ví dụ nó chỉ định một số phần phụ, như nội dung của /usr và /var, và các dữ liệu điển hình và/hoặc các tệp thực thi được mong đợi sẽ được tìm thấy ít nhất trong các thư mục này (xem các tham chiếu tới các tài liệu FHS).

Về các phát tán, Fedora/Red Hat đi theo chuẩn FHS rất sát. Nó chỉ thể hiện một ít thay đổi trong các tập trình bày trong /usr, /var. Trong /etc có xu hướng sẽ là một thư mục cho một thành phần có thể cấu hình được và trong /opt, /usr/local thường không có phần mềm được cài đặt trừ phi người sử dụng cài đặt nó. Debian tuân theo chuẩn này, dù nó bổ sung một số thư mục cấu hình đặc biệt trong /etc.

Chuẩn khác đang tiến bộ là LSB (cơ sở chuẩn Linux) [Linc]. Ý tưởng của nó là để xác định các mức tương thích giữa các ứng dụng, thư viện và tiện ích, sao cho tính khả chuyển của các ứng dụng là có khả năng giữa các phát tán mà không có quá nhiều vấn đề. Bổ sung cho chuẩn này, chúng đưa ra các tập hợp thử nghiệm để kiểm tra mức độ tương thích. LSB trong bản thân nó là một bộ sưu tập của một loạt các chuẩn được áp dụng cho GNU/Linux.

Trang 92/471

Lưu ý

Xem các đặc tả của chuẩn tại: http://www.linuxfoundation.org/en/Specifications

Page 93: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.3. Tài liệu hệ thống

Một trong những khía cạnh quan trọng nhất của các nhiệm vụ quản trị của chúng ta sẽ là để có được tài liệu đúng đắn cho hệ thống và các phần mềm được cài đặt. Có hàng loạt các nguồn thông tin, nhưng chúng ta nên nhấn mạnh những điều sau đây:

a) man cho tới nay là sự lựa chọn tốt nhất để trợ giúp. Nó cho phép chúng ta tham vấn các cuốn sách chỉ dẫn về GNU/Linux, được nhóm vào trong một loạt các phần khác nhau tương ứng với các lệnh quản trị, các định dạng tệp, các lệnh của người sử dụng, các lời gọi của ngôn ngữ C … Thông thường, để có được sự trợ giúp có liên quan, chúng ta sẽ có đủ với:

man command

Mỗi trang thường mô tả lệnh cùng với những lựa chọn của nó và, thường thì, vài ví dụ sử dụng. Đôi khi, có thể có hơn một dữ liệu đầu vào trong sách chỉ dẫn. Ví dụ, có thể có một lời gọi C với cùng tên như một lệnh; trong trường hợp này, chúng ta có thể phải chỉ định những phần nào chúng ta muốn xem:

man n command

với n là số của phần.

Cũng có một vài công cụ cho việc khai thác các sách chỉ dẫn, ví dụ xman và tkman, thông qua một giao diện đồ họa giúp xem xét các phần và các cách đánh chỉ số lệnh khác nhau. Một lệnh thú vị khác là apropos, cho phép định vị các trang man thảo luận một chủ đề cụ thể nào đó (có liên quan tới từ này).

b) info là hệ thống trợ giúp phổ biến khác. Chương trình này đã được GNU phát triển cho tài liệu của nhiều công cụ của nó. Về cơ bản nó là một công cụ văn bản nơi mà các chương và trang có thể được tra cứu bằng cách sử dụng một hệ thống duyệt đơn giản dựa vào bàn phím.

c) Tài liệu các ứng dụng: Bổ sung thêm vào các trang man nhất định nào đó, thường có các tài liệu bổ sung cho các ứng dụng, ở dạng các sách chỉ dẫn, các sách dạy học hoặc đơn giản là các hướng dẫn cho người sử dụng. Thông thường, những tài liệu này được cài đặt trong thư mục /usr/share/doc (hoặc usr/doc tùy thuộc vào phát tán), nơi thường có một thư mục được tạo ra cho từng gói ứng dụng (thường thì ứng dụng này có thể có một gói tài liệu riêng biệt).

d) Các hệ thống của riêng các phát tán. Red Hat có xu hướng đi với một vài đĩa CD sách chỉ dẫn tham vấn có khả năng được cài đặt lên hệ thống và ở các định dạng HTML hoặc PDF. Fedora có một dự án tài liệu trên trang web của nó. Debian đưa ra các sách chỉ dẫn của nó ở dạng một gói phần mềm nữa, thường được cài đặt trong /usr/doc. Cùng lúc, nó có các công cụ phân loại tài liệu trong hệ thống, tổ chức nó bằng các phương tiện của thực đơn một cách trực quan, như dwww hoặc dhelp, đưa ra các giao diện web để xem các tài liệu hệ thống.

e) Cuối cùng, X desktops, như GNOME và KDE, thường cũng mang theo các hệ thống và sách chỉ dẫn của riêng chúng, bổ sung thêm vào các thông tin cho các lập trình viên, hoặc ở dạng các tệp trợ giúp đồ họa trong các ứng dụng của chúng hoặc các ứng dụng riêng, biên dịch tất cả các tệp trợ giúp (ví dụ devhelp trong GNOME).

Trang 93/471

Page 94: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.4. Viết bó script

Khái niệm chung trình biên dịch lệnh (shell) được sử dụng để tham chiếu tới một chương trình phục vụ như một giao diện giữa người sử dụng và nhân của hệ điều hành GNU/Linux. Trong phần này, chúng ta sẽ tập trung vào những trình biên dịch lệnh cho văn bản tương tác, là những gì chúng ta sẽ thấy như những người sử dụng một khi chúng ta đã đăng nhập được vào hệ thống.

Trình biên dịch lệnh là một tiện ích hệ thống cho phép những người sử dụng tương tác với nhân thông qua sự biên dịch các lệnh người sử dụng gõ vào dòng lệnh hoặc các tệp dạng script biên dịch lệnh.

Trình biên dịch lệnh là những gì những người sử dụng thấy đối với hệ thống. Phần còn lại của hệ điều hành hầu như vẫn giữ nguyên là được ẩn dấu khỏi chúng. Trình biên dịch lệnh được viết theo cùng y hệt như một qui trình của người sử dụng (chương trình); nó không hình thành lên phần nào của nhân, nhưng được chạy chỉ như là một chương trình khác của người sử dụng.

Khi hệ thống GNU/Linux của chúng ta khởi động, nó có xu hướng sẽ đưa ra cho người sử dụng một giao diện với một hình thức thể hiện được xác định; giao diện có thể là một giao diện văn bản hoặc đồ họa. Phụ thuộc vào các chế độ (hoặc các mức độ) của việc khởi động hệ thống, hoặc với những chế độ điều khiển bằng console văn bản khác nhau hoặc các chế độ mà chúng trao cho chúng ta một sự khởi động trực tiếp bằng đồ họa trong X Window.

Ở các chế độ khởi động đồ họa, giao diện cấu thành từ một người quản trị truy cập để quản lý thủ tục đăng nhập của người sử dụng bằng việc sử dụng một trang đồ họa yêu cầu những thông tin tương ứng phải được gõ vào: tên và mật khẩu của người sử dụng. Các trình quản trị người truy cập là thông thường trong GNU/Linux: xdm (thuộc về X Window), gdm (GNOME) và kdm (KDE), cũng như một ít những thứ khác có liên quan tới các trình quản lý cửa sổ khác. Một khi chúng ta đã đăng nhập, chúng ta sẽ tự thấy trong giao diện đồ họa của X Window với một trình quản lý các cửa sổ như GNOME hoặc KDE. Để tương tác thông qua một trình biên dịch lệnh tương tác, tất cả điều chúng ta cần phải làm là mở một trong những chương trình mô phỏng máy đầu cuối sẵn có.

Nếu sự truy cập của chúng ta là ở chế độ console (văn bản), thì một khi đã đăng nhập vào, chúng ta sẽ có được sự truy cập trực tiếp tới trình biên dịch lệnh tương tác.

Trường hợp khác để có được một trình biên dịch lệnh tương tác là bằng sự truy cập ở xa tới máy, hoặc thông qua bất kỳ khả năng văn bản nào như những khả năng telnet, rlogin, ssh, hoặc đồ họa như các trình mô phỏng X Window.

3.4.1. Các trình biên dịch lệnh tương tác

Sau khi khởi tạo trình biên dịch lệnh tương tác [Qui01], người sử dụng được chỉ ra một lời nhắc, chỉ rằng một dòng lệnh có thể được đưa vào. Sau khi đưa nó vào, trình biên dịch lệnh có trách nhiệm kiểm tra tính hợp lệ của nó và bắt đầu chạy các qui trình theo yêu cầu, với một số pha sau:

Trang 94/471

Page 95: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Đọc và biên dịch dòng lệnh.

• Đánh giá các ký tự như $ * ? và những ký tự tương tự khác.

• Quản lý việc định hướng lại I/O theo yêu cầu, các dòng tiến trình và các tiến trình nền (&).

• Điều khiển các tín hiệu.

• Chuẩn bị để chạy các chương trình.

Thông thường, các dòng lệnh là những cách thức để chạy các lệnh hệ thống, các lệnh của trình biên dịch lệnh tương tác, khởi động các ứng dụng hoặc các scripts trình biên dịch lệnh.

Hình 1. Ví dụ việc khởi động một trình biên dịch lệnh văn bản và tiến trình hệ thống có liên quan [Oke]

Các scripts trình biên dịch lệnh là các tệp văn bản có chứa chuỗi các lệnh hệ thống, cộng với một loạt các lệnh của trình biên dịch lệnh tương tác, cộng với các cấu trúc kiểm soát cần thiết cho việc xử lý lưu trình của chương trình (dạng while, for …).

Hệ thống có thể chạy các tệp script trực tiếp theo tên được gắn tới tệp. Để chạy chúng, hãy gọi tới trình biên dịch lệnh cùng với tên tệp hoặc trao cho trình biên dịch lệnh các quyền thực hiện script đó.

Ở mức độ nào đó, chúng ta có thể thấy script trình biên dịch lệnh như là mã của một ngôn ngữ được biên dịch, được thực hiện trong trình biên dịch lệnh tương tác tương ứng. Đối với người quản trị, các

Trang 95/471

Page 96: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

scripts trình biên dịch lệnh là rất quan trọng, cơ bản vì 2 lý do:

1) Cấu hình của hệ thống và hầu hết các dịch vụ được cung cấp thông qua các công cụ ở dạng của các scripts trình biên dịch lệnh.

2) Cách thức chính để tự động hóa các qui trình quản trị là việc tạo ra các scripts trình biên dịch lệnh.

Hình 2. Kiểm soát lưu trình của trình biên dịch lệnh cơ bản

Tất cả các chương trình sẽ được gọi theo một qui trình của trình biên dịch lệnh với 3 tệp được xác định trước, được chỉ định bằng các điều khiển tệp tương ứng. Mặc định, những tệp đó là:

1) standard input (đầu vào chuẩn): thường được chỉ định tới bàn phím của máy đầu cuối (console); sử dụng điều khiển tệp số 0 (trong UNIX các tệp sử dụng toàn bộ các điều khiển tệp số).

2) standard output (đầu ra chuẩn): thường được chỉ định tới màn hình máy đầu cuối; sử dụng điều khiển tệp số 1.

3) standard error (lỗi chuẩn): thường được chỉ định tới màn hình máy đầu cuối; sử dụng điều khiển tệp số 2.

Điều này nói cho chúng ta rằng bất kỳ chương trình nào chạy từ trình biên dịch lệnh một cách mặc định sẽ có được đầu vào có liên quan tới bàn phím của máy đầu cuối, đầu ra có liên quan tới màn hình, và nó cũng sẽ gửi các lỗi tới màn hình.

Hơn nữa, các trình biên dịch lệnh có xu hướng cung cấp 3 cơ chế sau đây:

1) Định tuyến lại: biết rằng các thiết bị I/O và các tệp được đối xử theo cách y như nhau trong UNIX, trình biên dịch lệnh đơn giản điều khiển tất cả chúng như các tệp. Từ quan điểm của người sử dụng,

Trang 96/471

Page 97: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

những điều khiển tệp này có thể được chỉ định lại sao cho lưu trình của các dữ liệu của một điều khiển tệp đi tới bất kỳ điều khiển tệp nào khác; điều này được gọi là sự định tuyến lại. Ví dụ, chúng ta tham chiếu tới việc định tuyến lại các điều khiển tệp 0 hoặc 1 như việc định tuyến lại I/O chuẩn.

2) Các đường ống (pipes): một đầu ra chuẩn của chương trình có thể được sử dụng như đầu vào chuẩn khác bằng các phương tiện của các đường ống pipe. Hàng loạt các chương trình có thể được kết nối với nhau bằng việc sử dụng các pipes để tạo ra những gì được gọi là một đường pipe (pipeline).

3) Sự xảy ra đồng thời của các chương trình của người sử dụng: những người sử dụng có thể chạy một vài chương trình cùng một lúc, chỉ ra rằng chúng sẽ được chạy trên phần nền, hoặc ở phần mặt tiền, với sự kiểm soát rộng lớn của màn hình. Một cách khác cấu tạo từ việc cho phép các công việc lâu dài ở phần nền trong khi tương tác với trình biên dịch lệnh và với các chương trình khác ở phần mặt tiền.

Trong thực tế, trong UNIX/Linux những trình biên dịch lệnh đưa tới:

• Sự định tuyến lại: một lệnh có khả năng nhận đầu vào hoặc đầu ra từ các tệp hoặc thiết bị khác.

Ví dụ

Hãy xem

command op file

nơi mà op có thể là:

• <: nhận đầu vào từ tệp.

• >: gửi đầu ra tới tệp

• >>: nó chỉ để bổ sung đầu ra (mặc định, với > tệp được tạo lại một lần nữa).

• Pipes: Xâu chuỗi vài lệnh, với sự truyền các dữ liệu của chúng:

command1 | command2 | command3

• Lệnh này nói cho chúng ta rằng command1 sẽ nhận được đầu vào có thể từ bàn phím, gửi đầu ra của nó tới command2, mà sẽ nhận nó như đầu vào và xuất đầu ra hướng tới command3, mà sẽ nhận nó và gửi đầu ra của nó tới đầu ra chuẩn (mặc định, màn hình).

• Sự xảy ra đồng thời ở phần nền: bất kỳ lệnh nào được thực thi với '&' ở cuối của dòng sẽ được chạy ở trên nền và nhắc trình biên dịch lệnh sẽ được trả về ngay lập tức khi nó tiếp tục được thực hiện. Chúng ta có thể tuân theo sự thực hiện các lệnh với lệnh ps và các lựa chọn của nó, cho phép giám sát tình trạng các tiến trình của hệ thống. Chúng ta còn có lệnh kill, cho phép hạn chế các tiến trình vẫn còn đang chạy hoặc chúng đã nhập vào một điều kiện lỗi: kill -9 PID cho phép giết tiến trình với số xác thực PID. PID là bộ xác thực có liên quan tới tiến trình, một số lượng tổng thể được hệ thống gắn cho nó và có thể có được bằng việc sử dụng lệnh ps.

3.4.2. Các trình biên dịch lệnh (shells)

Sự độc lập của trình biên dịch lệnh trong mối quan hệ với nhân của hệ điều hành (trình biên dịch lệnh chỉ là một lớp giao diện), cho phép chúng ta có được vài lớp của chúng trong hệ thống [Qui01]. Mặc dù một số những thứ thường thấy hơn là:

Trang 97/471

Page 98: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

a) Bash (là các từ viết tắt trong tiếng Anh của Bourne - again shell). Trình biên dịch lệnh mặc định của GNU/Linux.

b) Bourne shell (sh). Đây từng luôn là trình biên dịch lệnh UNIX chuẩn, thứ mà tất cả các hệ thống UNIX có trong một số phiên bản. Thông thường, đây là trình biên dịch lệnh mặc định của người quản trị (root). Trong GNU/Linux nó có xu hướng sẽ là Bash, một phiên bản được cải tiến của Bourrne shell, đã được Stephen Bourne tại AT&T tạo ra vào cuối những năm 70. Dấu nhắc mặc định này có xu thế sẽ là một '$' (trong root '#').

c) Trình biên dịch lệnh Korn (ksh). Đây là một siêu nhóm của Bourne (một số tính tương thích được duy trì), được David Korn viết tại AT&T (vào giữa những năm 80), một số chức năng của Bourne và C, với một số bổ sung. Dấu nhắc mặc định là $.

d) Trình biên dịch lệnh C (csh). Nó đã được Bill Joy phát triển tại Đại học Berkeley cuối những năm 70 và có một ít bổ sung thú vị cho Bourne, như một lưu ký lệnh (command log), bí danh (alias), số học từ dòng lệnh, nó hoàn tất các tên tệp và kiểm soát các công việc ở nền. Dấu nhắc mặc định cho những người sử dụng là '%'. Những người sử dụng UNIX có xu hướng ưa thích trình biên dịch lệnh này hơn cho sự tương tác, nhưng những người quản trị ưa sử dụng Bourne hơn, vì các scripts có xu hướng sẽ chắc hơn và chạy nhanh hơn. Cùng lúc, ưu điểm của scripts trong trình biên dịch lệnh C là, như cái tên đó chỉ ra, cú pháp này dựa trên ngôn ngữ C (dù nó không y hệt).

e) Những thứ khác, như các phiên bản có hạn chế hoặc đặc biệt của những thứ ở trên.

Bash (Bourne again shell) [Bas] [Coo] đã phát triển theo tầm quan trọng khi nó đã được đưa vào trong các hệ thống GNU/Linux như trình biên dịch lệnh mặc định. Trình biên dịch lệnh này tạo thành một phần của dự án phần mềm GNU. Đây là một cố gắng để kết hợp 3 trình biên dịch lệnh ở trên (Bourne, C và Korn), duy trì cú pháp của trình biên dịch lệnh Bourne ban đầu. Đây là một thứ chúng ta sẽ tập trung vào trong các ví dụ sau của chúng ta.

Một cách nhanh chóng để biết trình biên dịch lệnh nào chúng ta đang ở trong như những người sử dụng là bằng việc sử dụng biến số $SHELL, từ một dòng lệnh với lệnh:

echo $ SHELL

Chúng ta sẽ thấy rằng một số khía cạnh là phổ biến cho tất cả các trình biên dịch lệnh:

• Tất cả chúng đều cho phép những scripts được viết, sau đó sẽ được biên dịch để chạy chúng hoặc bằng tên (nếu tệp có một quyền để chạy) hoặc bằng việc truyền nó như một tham số tới lệnh của trình biên dịch lệnh.

• Những người sử dụng hệ thống có một trình biên dịch lệnh mặc định có liên quan tới chúng. Thông tin này được cung cấp dựa vào việc tạo ra các tài khoản người sử dụng. Người quản trị sẽ chỉ định một trình biên dịch lệnh cho từng người sử dụng, hoặc nếu không thì trình biên dịch lệnh mặc định sẽ được chỉ định (bash trong GNU/Linux). Thông tin này được lưu trữ trong tệp mật khẩu trong /etc/passwd và có thể được thay đổi với lệnh chsh, lệnh y hệt với lựa chọn -l sẽ liệt kê các trình biên dịch lệnh có sẵn của hệ thống (xem /etc/shells).

• Scripts trình biên dịch lệnh có thể được viết trong bất kỳ cái nào trong số chúng, nhưng việc chỉnh cú pháp cho từng cái, mà thường là khác nhau (đôi khi những khác biệt là nhỏ). Cú pháp

Trang 98/471

Page 99: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

xây dựng, cũng như các lệnh nội bộ, được ghi thành tài liệu trong mọi trang man của trình biên dịch lệnh (man bash ví dụ thế).

• Mỗi trình biên dịch lệnh có một số tệp khởi động có liên quan (các tệp cài đặt), và mỗi người sử dụng có thể chỉnh chúng cho những nhu cầu của họ, bao gồm mã, biến, các đường dẫn...

• Khả năng trong việc lập trình nằm trong sự kết hợp của từng cú pháp trình biên dịch lệnh (của việc xây dựng nó), với các lệnh nội bộ của mỗi trình biên dịch lệnh, và một loạt các lệnh UNIX thường được sử dụng trong các scripts, ví dụ như cut, sort, cat, more, echo, grep, wc, awk, sed, mv, ls, cp …

• Nếu như là những người sử dụng, thì chúng ta đang sử dụng một trình biên dịch lệnh đặc biệt, không có gì ngăn chúng ta khỏi việc khởi động một bản sao mới của trình biên dịch lệnh (chúng ta gọi nó là một trình biên dịch lệnh phụ), hoặc nó là y hệt hoặc là một trình biên dịch lệnh khác. Chúng ta đơn giản sẽ gọi nó thông qua tên của thứ chạy được, hoặc sh, bash, csh hoặc ksh. Hơn nữa khi chúng ta chạy một script trình biên dịch lệnh thì một trình biên dịch lệnh phụ được khởi động với trình biên dịch lệnh tương ứng cho việc chạy script được yêu cầu.

Một số khác biệt cơ bản giữa chúng [Qui01]:

a) Bash là trình biên dịch lệnh mặc định trong GNU/Linux (trừ phi nếu được chỉ định khác trong việc tạo ra tài khoản người sử dụng). Trong hệ thống UNIX khác nó cần phải là trình biên dịch lệnh Bourne (sh). Bash là tương thích với sh và cũng kết hợp được một số tính năng của các trình biên dịch lệnh khác, csh và ksh.

b) Các tệp khởi động: sh, ksh có .profile (trong tài khoản người sử dụng, và được chạy khi đăng nhập của người sử dụng) và ksh cũng có xu hướng sẽ có một .kshrc, chạy được tiếp, csh sử dụng .login (nó được chạy khi đăng nhập của người sử dụng khởi tạo ra chỉ một lần), . logout (trước khi rời phiên của người sử dụng) và .cshrc (tương tự như .profile, trong mỗi trình biên dịch lệnh phụ C được khởi tạo). Và Bash sử dụng .bashrc và .bash_profile. Hơn nữa, người quản trị có thể đặt các đường dẫn và tham biến chung trong tệp /etc/profile, sẽ được chạy trước các tệp mỗi người sử dụng có. Các tệp khởi động trình biên dịch lệnh được đặt trong tài khoản người sử dụng khi nó được tạo ra (thường thì chúng được sao chép từ thư mục /etc/skel), nơi người quản trị có thể để lại một số cốt lõi của các tệp được chuẩn bị.

c) Các scripts cấu hình của hệ thống hoặc dịch vụ thường được viết trong trình biên dịch lệnh Bourne (sh), vì hầu hết các hệ thống UNIX đã sử dụng chúng theo cách này. Trong GNU/Linux chúng ta cũng có thể thấy một số trong Bash và cũng trong những ngôn ngữ script khác không có liên quan tới trình biên dịch lệnh như là Perl hoặc Python.

d) Chúng ta có thể xác định những trình biên dịch lệnh nào mà script được chạy khi sử dụng lệnh file, ví dụ file <scriptname>. Hoặc bằng việc xem xét dòng đầu tiên của script, có xu hướng sẽ là: #!/bin/name, nơi mà tên là bash, sh, csh, ksh … Dòng này nói cho chúng ta, tại thời điểm chạy script, trình biên dịch lệnh nào cần phải được sử dụng để biên dịch nó (nói cách khác, trình biên dịch lệnh phụ nào cần phải được khởi tạo để chạy nó). Điều quan trọng cho tất cả các scripts có chứa nó, vì nếu không chúng sẽ cố chạy trình biên dịch lệnh mặc định (Bash trong trường hợp của chúng ta) và cú pháp

Trang 99/471

Lưu ý

Để lập trình một trình biên dịch lệnh được khuyến cáo cần có một tri thức tốt về các lệnh UNIX và về các lựa chọn khác nhau của chúng.

Page 100: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

có thể sẽ không phải là cú pháp đúng, gây ra nhiều lỗi cú pháp trong khi chạy.

3.4.3 Các biến hệ thống

Một số biến hệ thống hữu dụng (chúng ta có thể thấy chúng bằng việc sử dụng lệnh echo, ví dụ thế), có thể được tham vấn trong dòng lệnh hoặc bên trong việc lập trình của scripts trình biên dịch lệnh là:

Biến Ví dụ giá trị Mô tả

HOME /home/juan Thư mục gốc của người sử dụng

LOGNAME juan ID của người sử dụng khi đăng nhập

PATH /bin:/usr/local/bin:/usr/X11/bin Đường dẫn

SHELL /bin/bash Trình biên dịch lệnh của người sử dụng

PS1 $ Dấu nhắc của trình biên dịch lệnh, người sử dụng có thể thay đổi nó

MAIL /var/mail/juan Thư mục của thư điện tử

TERM xterm Dạng của máy đầu cuối mà người sử dụng dùng

PWD /home/juan Thư mục của người sử dụng hiện hành

Các biến môi trường khác nhau có thể thấy sử dụng lệnh env. Ví dụ:

$ env

SSH_AGENT_PID = 598

MM_CHARSET = ISO – 8859 - 15

TERM = xterm

DESKTOP_STARTUP_ID =

SHELL = /bin/bash

WINDOWID = 20975847

LC_ALL = es_ES@euro

USER = juan

LS_COLORS = no = 00:fi = 00:di = 01;34:ln = 01;

Trang 100/471

Page 101: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

SSH_AUTH_SOCK = /tmp/ssh-wJzVY570/agent.570

SESSION_MANAGER = local/aopcjj:/tmp/.ICE-unix/570

USERNAME = juan

PATH=/soft/jdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/

X11:/usr/games

MAIL = /var/mail/juan

PWD = /etc/skel

JAVA_HOME = /soft/jdk

LANG = es_ES@euro

GDMSESSION = Gnome

JDK_HOME = /soft/jdk

SHLVL = 1

HOME = /home/juan

GNOME_DESKTOP_SESSION_ID = Default

LOGNAME = juan

DISPLAY = :0.0

COLORTERM = gnome-terminal

XAUTHORITY = /home/juan/.Xauthority

_ = /usr/bin/env

OLDPWD = /etc

3.4.4. Lập trình scripts trong Bash

Ở đây chúng ta sẽ nhìn vào một số khái niệm cơ bản của scripts trình biên dịch lệnh trong Bash, chúng ta khuyến cáo xa hơn việc đọc trong [Bas] [Coo].

Tất cả các scripts Bash phải bắt đầu với dòng:

#!/bin/bash

Dòng này chỉ ra trình biên dịch lệnh được người sử dụng dùng, thứ tích cực khi này, trình biên dịch lệnh cần thiết cho việc chạy script xuất hiện tiếp theo.

Script có thể được chạy theo 2 cách:

Trang 101/471

Page 102: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1) Bằng việc chạy trực tiếp từ dòng lệnh, trong điều kiện nó có một quyền thực thi. Nếu không phải là trường hợp như vậy, thì chúng ta có thể thiết lập quyền với: chmod + x script.

2) Bằng việc chạy qua trình biên dịch lệnh, chúng ta gọi trình biên dịch lệnh một cách toàn diện: /bin/bash script.

Nên tính rằng, bất chấp chế độ thực thi, chúng ta luôn đang tạo ra một trình biên dịch lệnh phụ nơi script của chúng ta sẽ được chạy.

3.4.4.1. Các biến trong Bash

Việc chỉ định các biến được thực hiện bằng:

variable = value

Giá trị của biến có thể được thấy với:

echco $variable

nơi mà '$' tham chiếu chúng ta tới giá trị của biến.

Biến mặc định chỉ thấy được trong script (hoặc trong trình biên dịch lệnh). Nếu biến này cần phải được thấy bên ngoài script, ở mức của trình biên dịch lệnh hoặc bất kỳ trình biên dịch lệnh phụ nào được tạo ra một cái sau, thì chúng ta sẽ cần phải “xuất” nó cũng như chỉ định nó. Chúng ta có thể làm 2 thứ:

Chỉ định trước và xuất sau:

var = value

export var

• Xuất trong khi chỉ định:

export var = value

Trong scripts Bash chúng ta có một số biến được xác định trước có thể truy cập được:

• $1 - $N: Nó lưu các biến số trong quá khứ như các thông số cho script từ dòng lệnh.

• $0: Nó lưu tên script, nó có thể là thông số 0 của dòng lệnh.

• $*: Nó lưu tất cả các thông số từ 1 tới N của biến số này.

• $: Nó lưu cả 2 thông số, nhưng với 2 dấu ngoặc kép (**) cho mỗi thông số.

• $?: “Status”: nó lưu giá trị được trả về với lệnh được chạy gần nhất. Hữu dụng cho việc kiểm tra các điều kiện lỗi, khi UNIX có xu hướng trả về 0 nếu sự thực thi là đúng, và một giá trị khác như một mã lỗi.

Vấn đề quan trọng khác liên quan tới những chỉ định là việc sử dụng các dấu ngoặc kép:

• Dấu ngoặc kép cho phép mọi thứ sẽ được coi như một đơn vị

• Một dấu ngoặc kép duy nhất là tương tự, nhưng bỏ qua những ký tự đặc biệt bên trong chúng.

Trang 102/471

Page 103: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Những thứ này đã chỉ ra ở bên trái ('lệnh') được sử dụng cho việc đánh giá bên trong, nếu có một sự thực thi hoặc một sự thay thế sẽ được làm. Trước hết nội dung sẽ được thực thi, và sau đó những gì được kết quả của sự thực thi đó thay thế. Ví dụ: var = 'ls' lưu lại danh sách của thư mục trong $var.

3.4.4.2. Những so sánh

Đối với các điều kiện mà trật tự biểu thức thử (test expression) sẽ được sử dụng hoặc một cách trực tiếp [expression]. Chúng ta có thể nhóm các điều kiện có sẵn trong:

• Sự so sánh số: -eq, -ge, -gt, -le, -lt, -ne, tương ứng với: ngang bằng với, lớn hơn hoặc bằng với (ge), lớn hơn, nhỏ hơn hoặc bằng với (le), ít hơn, không bằng với.

• So sánh chuỗi: :=, !=, -n, -z, tương ứng với các chuỗi ký tự: bằng, khác, với một độ dài lớn hơn 0, độ dài bằng 0 hoặc rỗng.

• So sánh tệp: -d, -f, -r, -s, -w, -x. Tệp là: một thư mục, một tệp thông thường, đọc được, không rỗng, ghi được, chạy được.

• Các ký tự logic (booleans) giữa các biểu thức: !, -a, -o, các điều kiện của not, and, và or (tương ứng với không, và, và hoặc)

3.4.4.3. Các cấu trúc kiểm tra

Đối với việc lập trình nội bộ bên trong các script, chúng ta cần nghĩ cơ bản sẽ phải tìm:

• Các lệnh của bản thân hệ điều hành.

• Các lệnh nội bộ của Bash (xem: man bash).

• Các cấu trúc kiểm soát việc lập trình (for, while …), với các cú pháp của Bash.

Cú pháp cơ bản của các cấu trúc kiểm soát là như sau:

a) Cấu trúc if … then, đánh giá biểu thức và nếu một giá trị nào đó có được, thì sau đó các lệnh sẽ được thực hiện.

if [bi �u th �c]

then

các l �nh

fi

b) Cấu trúc if … then … else, đánh giá biểu thức và nếu một giá trị nào đó có được thì các lệnh 1 sẽ được thực hiện, nếu không thì các lệnh 2 sẽ được thực hiện:

if [bi �u th �c]

then

các l �nh 1

else

Trang 103/471

Page 104: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các l �nh 2

fi

c) Cấu trúc if … then … else if … else, y hệt như ở trên, với bổ sung thêm các cấu trúc if.

if [bi �u th �c]

then

các l �nh

elif [bi �u th �c 2]

then

các l �nh

else

các l �nh

fi

d) Cấu trúc case select, cấu trúc chọn nhiều thứ theo giá trị chọn (in case)

case chu �i1 - string1 in

str1)

các l �nh;;

str2)

các l �nh;;

*)

các l �nh;;

esac

e) Lặp for, thay thế các biến cho một yếu tố của danh sách:

for bi �n1 trong danh sách

do

các l �nh

done

f) Lặp while, khi biểu thức được thỏa mãn:

while [bi �u th �c]

do

các l �nh

done

g) Lặp until, cho tới khi biểu thức được thỏa mãn:

until [bi �u th �c]

do

các l �nh

Trang 104/471

Page 105: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

done

h) Khai báo các hàm:

fname ( ) (

các l �nh

)

hoặc với một lời gọi đi cùng với các thông số:

fname2 (bi �n1, bi �n2, …., bi �nN) (

các l �nh

)

và các lời gọi hàm với fname hoặc fname2 p1 p2 p3 … pN.

Trang 105/471

Page 106: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.5. Các công cụ quản lý gói

Trong bất kỳ phát tán nào, các gói là những khoản mục cơ bản cho việc xử lý các nhiệm vụ về cài đặt phần mềm mới, cập nhật các phần mềm đang có sẵn hoặc hạn chế các phần mềm vô dụng.

Về cơ bản, một gói là một tập hợp các tệp tạo nên một ứng dụng hoặc sự kết hợp của vài ứng dụng có liên quan, thường tạo nên một tệp duy nhất (được biết như là một gói), với định dạng riêng của nó, thường được nén, được phân phối thông qua CD/DVD hoặc dịch vụ tải về (các kho FTP hoặc HTTP).

Sử dụng các gói là hữu dụng cho việc bổ sung hoặc loại bỏ các phần mềm, vì nó được coi như là một đơn vị thay vì phải làm việc với các tệp đơn lẻ.

Trong nội dung các phát tán (các đĩa CD/DVD) các gói có xu hướng sẽ được nhóm lại trong các chủng loại như là: a) các gói cơ bản cho việc hoạt động của hệ thống (các công cụ, các chương trình khởi động, các thư viện hệ thống); b) hệ thống: các công cụ quản trị, các lệnh tiện ích; c) phát triển: việc lập trình các công cụ: các trình soạn thảo, các trình biên dịch, các trình gỡ rối... d) đồ họa: các trình kiểm soát đồ họa và các giao diện, môi trường đồ họa, các trình quản lý cửa sổ... e) các chủng loại khác.

Thông thường, để cài đặt một gói thì chúng ta sẽ cần tuân theo một loạt các bước:

1) Các bước sơ bộ (trước cài đặt): kiểm tra sự tồn tại của các phần mềm được yêu cầu (và với các phiên bản đúng) cho việc vận hành của nó (những phụ thuộc), hoặc các thư viện hệ thống hoặc các ứng dụng khác được phần mềm sử dụng.

2) Giảm bớt sức ép nội dung các gói, sao chép các tệp tới các vị trí được xác định của chúng, hoặc có thể được định vị lại tới các thư mục khác.

3) Sau khi cài đặt: chỉnh sửa lại các tệp cần thiết, cấu hình lại các thông số phần mềm có thể, chỉnh nó cho các hệ thống...

Phụ thuộc vào các dạng gói, những bước này có thể hầu hết được tự động hóa (đây là trường hợp trong RPM [Bai03] và DEB [Deb02] hoặc chúng tất cả có thể cần thiết được thực hiện bằng tay (trường hợp của .tgz) phụ thuộc vào các công cụ mà phát tán cung cấp.

Tiếp theo, hãy xem 3 gói kinh điển nhất của hầu hết các phát tán. Mỗi phát tán có một gói như là chuẩn và hỗ trợ một trong những phát tán khác.

3.5.1. Gói TGZ

Các gói TGZ có lẽ là những thứ đã được sử dụng lâu đời nhất. Những phát tán GNU/Linux đầu tiên đã sử dụng chúng cho việc cài đặt các phần mềm, và một vài phát tán còn sử dụng nó (ví dụ, Slackware) và một số UNIX thương mại. Chúng là sự hợp nhất các tệp được kết hợp với lệnh tar trong một tệp .tar duy nhất mà sau đó đã được nén bằng việc sử dụng tiện ích gzip, có xu hướng sẽ xuất hiện với mở rộng .tgz hoặc .tar.gz.

Trang 106/471

Lưu ý

Các gói TGZ là một công cụ cơ bản cho việc cài đặt phần mềm không có tổ chức gì cả. Ngoài ra, chúng là một công cụ hữu dụng cho các qui trình sao lưu và phục hồi các tệp.

Page 107: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Cùng lúc, ngày nay là phổ biến để tìm tar.bz2 thay vì sử dụng gzip, sử dụng một tiện ích khác gọi là bzip2, trong một số trường hợp có được sự nén tệp lớn hơn.

Đối nghịch với những gì có thể thấy, đây là định dạng thường được sử dụng đặc biệt với những người tạo ra và phân phối phần mềm bên ngoài của phát tán. Nhiều người tạo ra phần mềm làm việc cho một loạt các nền tảng, như một loạt các UNIX thương mại và các phát tán khác nhau của GNU/Linux ưu tiên nó hơn như một hệ thống đơn giản hơn và khả chuyển hơn.

Một ví dụ về trường hợp này là dự án GNU/Linux, phân phối các phần mềm của nó ở định dạng này (ở dạng mã nguồn), khi nó có thể được sử dụng trong bất kỳ UNIX nào, hoặc một hệ thống sở hữu độc quyền, một biến thể của BSD hoặc một phát tán GNU/Linux.

Nếu ở định dạng nhị phân, chúng ta sẽ phải ghi tạc trong đầu rằng nó phù hợp cho hệ thống của chúng ta, ví dụ một sự gọi tên như là thứ sau đây là thông thường (trong trường hợp này, phiên bản 1.4 của trình duyệt web Mozilla):

mozilla – i686 – pc - linux - gnu – 1.4 – installer.tar.gz

nơi mà chúng ta có tên gói, như Mozilla, được thiết kế cho kiến trúc i686 (Pentium II hoặc cao hơn hoặc tương thích), nó có thể là i386, i586, i686, k6 (amd k6), k7 (amd athlon), amd64 u x86_64 (cho AMD64 và một số Intels 64bit với em64t), hoặc ia64 (Intel Itaniums), những thứ khác cho các kiến trúc của các máy khác như SPARC, PowerPC, MIPS, HPPA, Alpha... sau đó nó nói cho chúng ta biết rằng đây là cho Linux, trên một máy tính cá nhân PC, phần mềm phiên bản 1.4.

Nếu là trong định dạng nguồn, thì nó có thể xuất hiện như:

mozilla - source – 1.4.tar.gz

Nếu không, có thể có các mã khác cho mỗi hệ điều hành hoặc nguồn: GNU/Linux, Solaris, Irix, bsd...

Qui trình cơ bản với những gói này cấu tạo từ:

1) Việc giải nén gói (chúng không có xu hướng sử dụng đường dẫn tuyệt đối, nghĩa là chúng có thể được nén ở bất kỳ đâu):

tar -zxvf t �p.tar.gz (ho �c t �p .tgz)

Với lệnh tar chúng ta sử dụng các lựa chọn z: giải nén, x: trích xuất các tệp, v: xem quá trình, f: tên tệp sẽ được đối xử.

Nó cũng có thể được thực hiện một cách tách biệt (mà không có z của tar):

gunzip t �p.tar.gz

(với một tệp tar)

tar -xvf t �p.tar

2) Một khi đã giải nén tgz, chúng ta sẽ có các tệp nó mang, thường phần mềm có đưa vào một số tệp dạng 'hãy đọc tôi' (readme) hoặc cài đặt (install), chỉ định các lựa chọn cài đặt từng bước một, và cả những phụ thuộc phần mềm có thể nữa.

Trước hết, nên kiểm tra những phụ thuộc để xem liệu chúng ta có phần mềm đúng hay không, và nếu

Trang 107/471

Page 108: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

không, hãy tìm nó và cài đặt nó.

Nếu đây là một gói nhị phân, thì sự cài đặt thường khá dễ dàng, vì nó sẽ hoặc là trực tiếp chạy được từ bất cứ đâu chúng ta để nó hoặc nó sẽ mang theo trình cài đặt của chính nó. Một khả năng khác là việc có khả năng phải làm bằng tay, nghĩa là sẽ cần phải sao chép nó (cp -r, sao chép đệ qui) hoặc để chuyển nó (lệnh mv) tới vị trí mong muốn.

Một trường hợp khác là định dạng mã nguồn. Trước khi cài đặt phần mềm chúng ta sẽ bắt đầu phải tiến hành biên dịch. Để làm điều này chúng ta sẽ cần đọc chỉ dẫn mà chương trình mang theo một số chi tiết. Nhưng hầu hết các lập trình viên sử dụng một hệ thống GNU gọi là autoconf (tự động thiết lập cấu hình), thường sử dụng các bước sau (nếu không có lỗi nào xuất hiện):

• ./conficgure: đây là một script thiết lập cấu hình mã nguồn sao cho nó có thể được biên dịch trên máy tính của chúng ta và kiểm tra việc có các công cụ đúng đắn tồn tại. Lựa chọn -- tiền tố = thư mục (prefix = directory option) làm cho có khả năng để chỉ định nơi cài đặt phần mềm.

• make: bản thân sự biên dịch.

• make install: cài đặt phần mềm vào đúng chỗ, thường trước khi được chỉ định như một lựa chọn để thiết lập cấu hình hoặc được giả thiết mặc định.

Đây là một qui trình chung, nhưng nó sẽ phụ thuộc vào việc liệu phần mềm có tuân theo nó hay không, có những trường hợp khá tệ nơi mà toàn bộ qui trình cần phải được triển khai bằng tay, chỉnh sửa lại các tệp cấu hình hoặc makefile, và/hoặc biên dịch từng tệp một, nhưng may thay điều này đang trở nên ngày một ít phố biến hơn.

Trong trường hợp mong muốn xóa tất cả các phần mềm được cài đặt, thì sẽ phải sử dụng trình bỏ cài đặt nếu được cung cấp hoặc, nếu không, hãy xóa trực tiếp thư mục hoặc các tệp được cài đặt, và hãy đề phòng các phụ thuộc tiềm tàng.

Các gói tgz khá phổ dụng như một cơ chế sao lưu cho các nhiệm vụ quản trị, ví dụ, cho việc lưu giữ các bản sao của các dữ liệu quan trọng, tiến hành sao lưu tài khoản của người sử dụng hoặc lưu giữ các bản sao các dữ liệu cũ khi không biết liệu có cần tới chúng nữa hay không. Qui trình sau có xu hướng sẽ được sử dụng: hãy giả thiết rằng chúng ta muốn lưu một bản sao của thư mục “dir”, chúng ta có thể gõ: tar -cvf dir.tar dir (C: nén dir trong tệp dir.tar) gzip dir.tar (nén) hoặc trong một lệnh duy nhất như:

tar -cvzf dir.tgz dir

Kết quả sẽ là một tệp dir.tgz. Cần phải cẩn trọng nếu chúng ta có quan tâm trong việc gìn giữ các thuộc tính của tệp và các quyền của người sử dụng, cũng như các đường liên kết (link) có thể đang tồn tại (phải kiểm tra các lựa chọn tar sao cho nó chỉnh các lựa chọn sao lưu theo yêu cầu).

3.5.2 Fedora/Red Hat: Các gói RPM

Hệ thống các gói RPM [Bai03] được Red Hat tạo ra là một bước tiến, vì nó bao gồm sự quản lý các nhiệm vụ và các phụ thuộc cấu hình phần mềm. Hơn nữa, hệ thống này lưu trữ một cơ sở dữ liệu nhỏ với các gói đã được cài đặt, có khả năng được tham vấn và cập nhật với những cài đặt triển khai mới.

Trang 108/471

Page 109: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Theo lệ thường, các gói RPM sử dụng một tên như là:

package - version - rev.arq.rpm

trong đó package là tên của phần mềm, version là đánh số phiên bản của phần mềm, rev thường chỉ ra sự xem xét lại của gói RPM, chỉ ra số lần nó đã được xây dựng và arq tham chiếu tới kiến trúc được thiết kế, hoặc Intel/AMD (i386, i586, i686, x86_64, em64t, ia64) hoặc các kiến trúc khác như Alpha, SPARC, PPC... “Kiến trúc” noarch thường được sử dụng khi nó là độc lập, ví dụ, một tập hợp các scripts và src trong trường hợp làm việc với các gói mã nguồn. Một sự thực thi điển hình sẽ bao gồm việc chạy rpm, các lựa chọn của hoạt động sẽ được trình bày, cùng với một hoặc nhiều tên gói hơn sẽ được xử lý cùng nhau.

Những hoạt động điển hình với các gói RPM bao gồm:

• Thông tin gói: thông tin đặc biệt về gói được tham vấn có sử dụng lựa chọn -q cùng với tên gói (với -p nếu trên một tệp rpm). Nếu gói này còn chưa được cài đặt, thì lựa chọn có thể là -q được đi kèm với lựa chọn thông tin sẽ được yêu cầu, và nếu yêu cầu này sẽ được thực hiện cho tất cả các gói được cài đặt cùng một lúc, thì lựa chọn có thể là -qa. Ví dụ, các yêu cầu từ một gói được cài đặt:

Yêu cầu Các lựa chọn RPM Các kết quả

Các tệp rpm -q1 Liệt kê các tệp nó chứa

Thông tin rpm -qi Mô tả gói

Các yêu cầu rpm -qR Các yêu cầu từ trước, các thư viện phần mềm

• Cài đặt: đơn giản là rpm ­i package.rpm, hoặc với URL nơi mà gói này có thể được thấy, để tải về từ FTP hoặc các máy chủ web, chúng ta chỉ cần sử dụng cú pháp ftp:// hoặc http:// để có được vị trí của gói. Cài đặt có thể được kết thúc trong điều kiện các phụ thuộc gói được đáp ứng, hoặc ở dạng của các phần mềm hoặc thư viện trước đó phải được cài đặt. Trong trường hợp không thỏa mãn được yêu cầu này, chúng ta sẽ được báo phần mềm nào đang thiếu, và tên của gói cung cấp nó. Chúng ta có thể ép cài đặt (mặc dù phần mềm được cài đặt có thể không

làm việc) với các lựa chọn - - forrce hoặc - - nodeps, hoặc đơn giản bằng việc bỏ qua thông tin về những phụ thuộc này.

Nhiệm vụ cài đặt một gói (được rpm thực hiện) đưa ra một loạt các nhiệm vụ phụ: a) kiểm tra các phụ thuộc tiềm tàng; b) kiểm tra các xung đột với các gói được cài đặt khác trước đó; c) thực hiện các nhiệm vụ trước cài đặt; d) quyết định những gì phải làm với các tệp cấu hình có liên quan tới gói này nếu chúng đã tồn tại trước đó; e) mở gói các tệp có liên quan tới gói nếu chúng đã tồn tại trước đó; f) thực hiện các nhiệm vụ cài đặt khác trước đó; cuối cùng f) lưu trữ

Trang 109/471

Lưu ý

Gói: apache -1.3.19-23.i686.rpm có thể chỉ định đây là phần mềm Apache (máy chủ web), trong phiên bản 1.3.19 của nó, rà soát lại gói RPM 23, cho các kiến trúc Pentium II hoặc ở trên.

Page 110: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

lưu ký log của các nhiệm vụ được thực hiện trong cơ sở dữ liệu RPM.

• Việc cập nhật: tương ứng với sự cài đặt nhưng đầu tiên kiểm tra phần mềm đã đang tồn tại

bằng lệnh rpm -U package.rpm. Nó sẽ quan tâm tới việc xóa cài đặt trước đó.

• Kiểm tra tính đúng đắn: trong hoạt động thông thường của hệ thống nhiều tệp được cài đặt sẽ thay đổi. Theo nghĩa này, RPM cho phép chúng ta kiểm tra các tệp để dò tìm ra bất kỳ thay đổi nào từ một qui trình thông thường hoặc từ một lỗi tiềm tàng có khả năng chỉ ra các dữ liệu bị

hỏng. Thông qua rpm -V package chúng ta kiểm tra một gói đặc thù và thông qua rpm -Va

chúng ta sẽ kiểm tra tất cả chúng.

• Sự xóa: xóa gói khỏi hệ thống RPM (-e hoặc - - erase); nếu có những sự phụ thuộc, thì chúng ta cần phải hạn chế những thứ khác trước đó.

Ví dụ

Đối với một trường hợp ở xa:

rpm -i ftp://site/directory/package.rpm

có thể cho phép tải gói về từ FTP được cung cấp hoặc website, với vị trí thư mục của nó, và tiếp tục cài đặt gói trong trường hợp này.

Chúng ta cần kiểm soát nơi các gói tới và chỉ sử dụng các nguồn được biết và tin cậy được của các gói, như là các site đáng tin cậy hoặc của nhà sản xuất của riêng phát tán đó. Thông thường, với các gói, chúng ta sẽ được chào một chữ ký số cho các gói đó, sao cho có thể kiểm tra tính xác thực của chúng. Các tổng số md5 thường được sử dụng cho việc kiểm tra việc gói và những hệ thống khác không bị sửa, như GPG (phiên bản GNU của PGP), cho việc kiểm tra tính xác thực của người đưa ra gói đó. Tương tự, chúng ta có thể thấy các gói RPM khác nhau lưu trữ trên Internet, nơi mà chúng là sẵn sàng cho những phát tán khác nhau, có sử dụng hoặc cho phép định dạng RPM.

Đối với việc sử dụng có an ninh của các gói, một số kho chính thức hoặc của bên thứ 3 hiện ký điện tử cho các gói, ví dụ, sử dụng GPG được nhắc tới ở trên; điều này giúp chúng ta chắc chắn (nếu chúng ta có các chữ ký) rằng các gói tới từ một nguồn đáng tin cậy. Thông thường, mỗi nhà cung cấp (kho) sẽ đưa vào một số tệp chữ ký PGP với khóa cho site của nó. Từ những kho chính thức chúng thường được cài đặt, nếu chúng tới từ các bên thứ 3 thì chúng ta sẽ cần có được tệp khóa và đưa nó vào RPM, một cách đặc trưng.

$ rpm -import GPG - KEY – FILE

Với GPG-KEY-FILE là một tệp khóa GPG hoặc URL của tệp, thông thường tệp này cũng sẽ có tổng md5 để kiểm tra tính toàn vẹn của nó. Và chúng ta có thể thấy được các khóa trong hệ thống với:

$ rpm -qa | grep ^gpg-pubkey

chúng ta có thể quan sát được nhiều chi tiết hơn trên nền tảng của khóa có được:

$ rpm -qi gpg - key – xxxxx – yyyyy

Đối với gói RPM đặc thù chúng ta sẽ có khả năng kiểm tra liệu nó có một chữ ký hay không và chữ ký

Trang 110/471

Lưu ý

Xem site: www.rpmfind.net

Page 111: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nào đã được sử dụng:

$ rpm -checksig -v <gói>.rpm

Và để kiểm tra một gói là đúng dựa trên các chữ ký có sẵn, chung ta có thể sử dụng:

$ rpm -K <gói.rpm>

Chúng ta cần thận trọng để nhập chỉ các khóa từ các site mà chúng ta tin tưởng. Khi RPM thấy được các gói với một chữ ký mà không có trong hệ thống của chúng ta hoặc khi gói này không được ký, thì nó sẽ nói cho chúng ta và, sau đó, chúng ta sẽ phải quyết định sẽ làm gì.

Về sự hỗ trợ RPM trong các phát tán, trong Fedora (Red Hat và cũng trong các dẫn xuất của nó), RPM là định dạng gói mặc định và là một định dạng được sử dụng một cách rộng rãi với phát tán này cho các cập nhật và cài đặt phần mềm. Debian sử dụng định dạng DEB (như chúng ta sẽ thấy), có sự hỗ trợ cho RPM (lệnh rpm đang tồn tại), nhưng chỉ cho việc tham vấn hoặc thông tin gói. Nếu điều cơ bản là để cài đặt một gói rpm trong Debian, thì khuyến cáo sử dụng tiện ích alien, có khả năng chuyển các định dạng gói, trong trường hợp này từ RPM sang DEB, và tiếp theo để cài đặt với gói được chuyển.

Bổ sung vào hệ thống đóng gói cơ bản của phát tán, ngày nay mỗi phát tán có xu hướng hỗ trợ một hệ thống quản lý phần mềm mức cao hơn trung bình, bổ sung một lớp cao hơn cho hệ thống cơ bản, trợ giúp các nhiệm vụ quản lý phần mềm, và bổ sung thêm một số tiện ích để

Trong trường hợp của Fedora (Red Hat và các dẫn xuất), nó sử dụng hệ thống YUM, cho phép như một công cụ mức cao hơn để cài đặt và quản lý các gói trong các hệ thống rpm, cũng như quản lý tự động các phụ thuộc giữa các gói. Nó cho phép truy cập tới một loạt các kho khác nhau, tập trung hóa cấu hình của chúng trong một tệp (/etc/yum.conf thông thường), và có một giao diện của các lệnh đơn giản.

Cấu hình của yum được dựa trên:

/etc/yum.config (tệp các lựa chọn)

/etc/yum (thư mục cho một số tiện ích có liên quan)

/etc/yum.repos.d (thư mục cho việc chỉ định các kho, một tệp cho từng kho, bao gồm cả sự truy cập thông tin và vị trí của các chữ ký gpg).

Một tóm tắt của các hoạt động yum điển hình có thể sẽ là:

Lệnh Mô tả

yum install <tên> Cài đặt gói với tên

yum update <tên> Cập nhật một gói đang tồn tại

yum remove <tên> Hạn chế gói

Trang 111/471

Lưu ý

YUM trong: http://yum.baseurl.org

Page 112: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lệnh Mô tả

yum list <tên> Tìm kiếm gói bằng tên (chỉ tên)

yum search <tên> Tìm kiếm mở rộng hơn

yum provices <tệp> Tìm kiếm các gói cung cấp tệp

yum update Cập nhật toàn bộ hệ thống

yum upgrade Như ở trên, bao gồm các gói bổ sung

Cuối cùng, Fedora cũng đưa ra một số các tiện ích đồ họa cho YUM, pup cho cho việc kiểm soát các cập nhật có sẵn gây đây, và pirutas như một gói quản lý phần mềm. Cũng có cả những thứ khác như yumex, với sự kiểm soát lớn hơn cấu hình nội bộ của yum.

3.5.3. Debian: Các gói DEB

Debian có các công cụ tương tác như là tasksel, có khả năng lựa chọn các tập hợp phụ của các gói được nhóm trong các dạng nhiệm vụ: các gói cho X, cho sự phát triển, cho tài liệu …, hoặc như là dselect, cho phép duyệt toàn bộ danh sách của các gói sẵn sàng (có hàng ngàn) và chọn những gói chúng ta muốn cài đặt hoặc bỏ cài đặt. Trên thực tế, những thứ này chỉ là mặt tiền của trình quản trị phần mềm mức trung bình của APT.

Ở mức độ dòng lệnh nó có dpkg, là lệnh mức thấp nhất (có thể tương ứng với rpm), cho việc quản lý các gói phần mềm DEB một cách trực tiếp [Deb02], điển hình dpkg -i package.deb để thực hiện việc cài đặt. Tất cả các dạng nhiệm vụ có liên quan tới thông tin, cài đặt, loại bỏ hoặc tiến hành các thay đổi nội bộ cho các gói phần mềm có thể được thực hiện.

Mức độ ngay lập tức (như trong trường hợp Yum trong Fedora) được trình bày bằng các công cụ APT (hầu hết là apt-xxx các lệnh). APT cho phép quản lý các gói từ một danh sách các gói hiện hành và sẵn sàng dựa trên một loạt các nguồn phần mềm, hoặc các đĩa CD, FTP hoặc website (HTTP) dành riêng cho việc cài đặt đó. Sự quản lý này được thực hiện một cách minh bạch, theo một cách mà hệ thống là độc lập với các nguồn phần mềm.

Hệ thống APT được cấu hình từ các tệp sẵn sàng trong /etc/apt, nơi mà

/etc/apt/sources.list là danh sách các nguồn có sẵn; một ví dụ có thể là:

deb http://http.us.debian.org/debian stable main contrib nonfree.

debsrc http://http.us.debian.org/debian stable main contrib nonfree

Trang 112/471

Lưu ý

Các gói DEB của Debian có lẽ là mạnh nhất trong hệ thống cài đặt hiện đang tồn tại trong GNU/Linux. Một lợi ích đáng kể là sự độc lập của hệ thống từ các nguồn của các gói (thông qua APT).

Page 113: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

deb http://security.debian.org stable/updates main contrib non-free

Nơi mà một loạt các nguồn “chính thống” đối với Debian được biên dịch (etch trong trường hợp này, được giả thiết sẽ là ổn định), từ đó chúng ta có thể có được các gói phần mềm bổ sung cho các bản cập nhật có sẵn của chúng. Về cơ bản, chúng ta chỉ định dạng của nguồn (trong trường hợp này là web/FTP), các site, phiên bản của phát tán (ổn định trong ví dụ này) và các chủng loại của phần mềm sẽ được tìm kiếm (tự do, đóng góp của các bên thứ 3, các giấy phép không tự do hoặc thương mại).

Các gói phần mềm là sẵn sàng cho những phiên bản khác nhau của phát tán Debian, có những gói cho những phiên bản ổn định, thử nghiệm và không ổn định. Việc sử dụng một trong số chúng sẽ xác định dạng của phát tán (sau việc thay đổi các nguồn của các kho trong sources.list). Có khả năng trộn lẫn các nguồn của các gói, nhưng không được khuyến cáo, vì những xung đột có thể nảy sinh giữa các phiên bản của các phát tán khác nhau.

Một khi chúng ta đã thiết lập cấu hình cho các nguồn phần mềm, thì công cụ chính cho việc điều khiển chúng trong hệ thống là apt-get, cho phép cài đặt, cập nhật hoặc loại bỏ khỏi các gói riêng rẽ, cho tới khi toàn bộ phát tán được cập nhật. Cũng có giao diện mặt tiền (front-end) cho apt-get, được gọi là aptitude, những giao diện lựa chọn của nó thực tế là hoàn toàn như nhau (trên thực tế nó cũng có thể được mô tả như một trình mô phỏng apt-get, vì giao diện là như nhau); về những lợi ích, nó quản lý những phụ thuộc của gói tốt hơn và cho phép một giao diện tương tác. Trên thực tế được hy vọng rằng aptitude sẽ trở thành giao diện mặc định trong dòng lệnh đối với sự quản lý gói trong Debian.

Một số chức năng cơ bản của apt-get:

• Cài đặt một gói đặc biệt:

apt -get install package

• Loại bỏ một gói:

apt -get remove package

• Cập nhật danh sách của các gói có sẵn:

apt -get update

• Cập nhật phát tán, chúng ta có thể triển khai các bước kết hợp:

apt -get update

apt -get upgrade

apt -get dist -upgrade

Thông qua qui trình cuối này, chúng ta có thể giữ cho phát tán được cập nhật một cách vĩnh viễn, việc cập nhật các gói được cài đặt và kiểm tra tính đúng đắn của các phụ thuộc với các gói mới. Một số công cụ hữu dụng cho việc xây dựng danh sách này là apt ­spy, cố gắng tìm kiếm các site chính thống nhanh nhất, hoặc netselect, cho phép thử nghiệm một danh sách các site. Trong một lưu ý riêng rẽ, có thể tìm kiếm các site chính thức (có thể cấu hình những thứ này với apt-setup) hoặc sao chép một tệp nguồn có sẵn. Phần mềm (của bên thứ 3) bổ sung có thể cần phải bổ sung vào thêm các tài nguyên khác

Trang 113/471

Page 114: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nữa (tới etc/sources.list); các danh sách của các site nguồn có sẵn có thể có được (như: http://www.apt-get.org).

Đặc biệt việc cập nhật một hệ thống sinh ra một sự tải về một số lượng lớn các gói (đặc biệt trong

unstable - không ổn định), được khuyến cáo phải làm rỗng bộ nhớ tạm cache, kho cục bộ, với các gói được tải về (chúng được giữ trong /var/cache/apt/archive) mà sẽ không còn được sử dụng nữa, hoặc

với apt -get clean để hạn chế tất cả chúng hoặc với apt -get autoclean để hạn chế các gói không được yêu cầu vì đã có những phiên bản mới, về nguyên tắc, chúng không còn cần thiết nữa.

Cần phải xem xét liệu chúng ta có thể cần những gói này một lần nữa hay không cho các mục đích cài đặt lại chúng, vì nếu thế, chúng ta sẽ lại phải tải chúng về một lần nữa.

Hệ thống APT cũng cho phép những gì được biết như là SecureAPT (APT an ninh), là sự quản lý an ninh của các gói thông qua việc kiểm tra các tổng (md5) và các chữ ký của các nguồn của các gói (dạng GPG). Nếu các chữ ký là không sẵn sàng trong khi tải về, thì apt-get báo điều này và tạo ra một danh sách các gói không được ký, yêu cầu hoặc chúng sẽ dừng việc cài đặt, để việc quyết định cho người quản trị. Danh sách của các nguồn hiện hành tin cậy được có được bằng việc sử dụng:

# apt -key list

Các khóa GPG của các site chính thức của Debian được phân phối thông qua một gói, và chúng ta có thể cài đặt chúng như sau:

# apt -get install debian - archive – keyring

Phải chắc chắn là chúng ta có source.list với các site chính thức. Hy vọng một cách mặc định (phụ thuộc vào phiên bản của Debian) những khóa này sẽ sẵn sàng được cài đặt khi hệ thống khởi tạo. Đối với các site không chính thức khác mà không cung cấp khóa trong một gói, mà chúng ta coi là đáng tin cậy, thì có thể nhập về khóa của chúng, lấy nó từ kho (chúng ta sẽ phải tham vấn nơi mà khóa này là sẵn sàng, không có chuẩn được xác định, dù nó thường là trên trang chủ của kho). Sử dụng apt-key add với tệp đó, để bổ sung khóa hoặc:

# gpg -import t �p, khóa

# gpg -export -armor XXXXXXXX | apt -key add -

Với X là hệ 16 (hexadecimal) có liên quan tới khóa (xem các chỉ dẫn của kho để biết cách được khuyến cáo nhập khóa và các dữ liệu cần thiết về).

Chức năng quan trọng khác của hệ thống APT là cho tham vấn thông tin của các gói, sử dụng công tụ apt-cache, cho phép chúng ta tương tác được với các danh sách các gói phần mềm Debian.

Ví dụ

Công cụ apt-cache có các lệnh cho phép chúng ta tìm kiếm thông tin về các gói, ví dụ:

• Tìm kiếm các gói dựa trên một tên không hoàn chỉnh:

apt -cache search name

• Chỉ ra mô tả gói:

Trang 114/471

Page 115: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

apt -cache show package

• Phụ thuộc vào gói nào:

apt -cache depends package

Các công cụ hoặc chức năng thú vị khác:

Các công cụ hoặc chức năng thú vị khác:

- apt-show-versions: nói cho chúng ta những gói nào có thể được cập nhật (và cho những phiên bản nào, xem lựa chọn -u).

Các nhiệm vụ đặc chủng khác hơn sẽ cần phải được thực hiện với công cụ mức thấp nhất, như dpkg. Ví dụ, có được danh sách các tệp của một gói cài đặt cụ thể nào đó:

dpkg -L gói

Danh sách đầy đủ của các gói với

dpkg -1

Hoặc tìm kiếm gói mà một yếu tố tới từ đó (ví dụ tệp chẳng hạn):

dpkg -S t �p

Các chức năng cho các gói được cài đặt; apt-file cũng có thể tìm kiếm các gói còn chưa được cài đặt.

Cuối cùng, một số công cụ đồ họa cho APT, như synaptic, gnome-apt cho gnome, và kpackage hoặc adept cho KDE cũng đáng được nhắc tới, cũng như những công cụ văn bản đã được nhắc tới như aptitude hoặc dselect.

Kết luận: chúng ta nên nhấn mạnh rằng hệ thống quản lý APT (kết hợp với nền tảng dpkg) là rất mềm dẻo và mạnh khi nói tới việc quản lý các cập nhật và là hệ thống quản lý gói được Debian và những phát tán dẫn xuất từ nó như Ubuntu, Kubuntu, Knoppix, Linex ... sử dụng.

Trang 115/471

Page 116: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.6. Các công cụ quản trị chung

Trong lĩnh vực quản trị, chúng ta cũng có thể xem xét một số công cụ, như là những thứ được thiết kế chung cho các mục đích quản trị. Mặc dù khó để cập nhật theo thời gian với những công cụ này vì những kế hoạch hiện hành về phân phối các phiên bản khác nhau tiến bộ rất nhanh. Chúng ta sẽ nhắc tới một ít ví dụ (dù ở một thời điểm nhất định nào đó chúng có thể không đầy đủ chức năng:

a) Linuxconf: đây là một công cụ quản trị chung, nhóm cùng các khía cạnh khác nhau theo một dạng của giao diện thực đơn văn bản, trong những phiên bản mới nhất đã tiến hóa cho sự hỗ trợ web; nó có thể được sử dụng thực tế với bất kỳ phát tán GNU/Linux nào và hỗ trợ một loạt chi tiết gắn với từng công cụ (đáng tiếc, nó còn chưa được cập nhật lúc này).

b) Webmin: đây là công cụ quản trị khác được hình thành từ một giao diện web; hoạt động với một loạt các trình cài cắm có khả năng được bổ sung cho từng dịch vụ cần được quản trị; thông thường nó có các mẫu chỉ định các thông số cấu hình dịch vụ; nó cũng đưa ra khả năng (nếu được kích hoạt) cho phép quản trị ở xa từ bất kỳ máy nào với một trình duyệt.

c) Các công cụ khác đang được phát triển như cPanel, ISPConfig.

Cùng lúc, các môi trường đồ họa GNOME và KDE có xu hướng đưa vào khái niệm “Bảng Kiểm soát - Control Panel”, cho phép quản lý khía cạnh trực quan của các giao diện đồ họa cũng như các thông số của một số thiết bị hệ thống.

Về các công cụ đồ họa riêng lẻ, phát tán GNU/Linux đưa ra một cách trực tiếp một số (các công cụ mà đi theo cả GNOME và KDE) công cụ chuyên dụng cho việc quản lý một thiết bị (các máy in, âm thanh, card mạng …), và những thứ khác cho việc chạy các nhiệm vụ cụ thể nào đó (kết nối Internet, cấu hình khởi động của các dịch vụ hệ thống, cấu hình X Windows, ảo hóa các tệp logs...). Nhiều trong số chúng và những giao diện mặt tiền (front-ends) đơn giản hóa cho các công cụ cơ bản của hệ thống, hoặc được áp dụng cho các tính năng đặc biệt của phát tán.

Trong phần này, chúng ta đặc biệt nhấn mạnh tới phát tán Fedora (Red Hat và các dẫn xuất), cố gắng đưa ra một vài (hơn là tối thiểu) các tiện ích cho các chức năng quản trị khác nhau, chúng ta có thể thấy chúng trong môi trường đồ họa (trong thực đơn quản trị), hoặc trong các lệnh như system-config-xxxxx (thiết lập hệ thống xxxxx) cho các chức năng quản lý khác nhau cho: màn hình, máy in, mạng, an ninh, người sử dụng, các gói … Chúng ta có thể thấy một số chúng trong hình:

Trang 116/471

Lưu ý

Chúng ta có thể thấy chúng trong: Linuxconf http://www.solucorrp.qc.ca/linuxconf

Page 117: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 3. Một số tiện ích đồ họa cho quản trị trong Fedora

Trang 117/471

Page 118: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

3.7. Các công cụ khác

Trong không gian hạn chế của phần này chúng ta không thể bình luận về tất cả các công cụ có thể đưa ra cho chúng ta những lợi ích trong việc quản trị. Chúng ta sẽ trích ra một số các công cụ cơ bản có thể xem xét:

• Một loạt các lệnh UNIX cơ bản: grep, awk, sed, find, diff, gzip, bzip2, cut, sort, df, du, cat, more, file, which...

• Các trình soạn thảo, cơ bản cho bất kỳ nhiệm vụ soạn thảo nào, như: vi, được sử dụng rất nhiều cho các nhiệm vụ quản trị vì tốc độ thực hiện những thay đổi nhỏ cho các tệp. Vim là một trình soạn thảo tương thích với vi, mà GNU/Linux có xu thế sẽ mang nó theo; nó cho phép một cú pháp được tô điểm trong một loạt các ngôn ngữ. Emacs, một trình soạn thảo rất hoàn chỉnh, được áp dụng cho các ngôn ngữ lập trình khác nhau (các mô hình cú pháp và soạn thảo); nó có một môi trường rất hoàn chỉnh và một phiên bản X được gọi là Xemacs. Joe, trình soạn thảo tương thích với Wordstar. Và nhiều thứ nữa...

• Các ngôn ngữ scripting, các công cụ quản trị, như: Perl, rất hữu dụng cho việc điều khiển các biểu thức chung và việc phân tích các tệp (việc lọc, sắp xếp trật tự...) PHP, ngôn ngữ rất thường được sử dụng trong các môi trường web. Python, một ngôn ngữ có khả năng tạo các mẫu của các ứng dụng một cách nhanh chóng …

• Công cụ cho việc biên dịch và gỡ rối các ngôn ngữ bậc cao: GNU gcc (trình biên dịch của C và C++), gdb (trình gỡ rối), xxgdb (giao diện X cho gdb), ddd (trình gỡ rối cho một loạt ngôn ngữ).

Trang 118/471

Lưu ý

Xem tư liệu có liên quan tới khóa giới thiệu GNU/Linux, các trang man của các lệnh hoặc một tham chiếu của các công cụ như [Stu01].

Page 119: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Để đọc nhanh, hãy xem chuẩn FHS, sẽ giúp chúng ta có được một chỉ dẫn cho việc tìm kiếm các tệp trong phát tán của chúng ta.

2) Để xem xét lại và mở rộng các khái niệm và việc lập trình các script trình biên dịch lệnh trong bash, xem: [Bas] [Coo]

3) Đối với các gói RPM, chúng ta có thể làm một số nhiệm vụ sau đây như thế nào?:

• Tìm ra gói nào đã cài đặt một lệnh cụ thể.

• Có được một mô tả gói cài đặt một lệnh.

• Xóa một gói mà tên đầy đủ của nó chúng ta không biết.

• Chỉ ra tất cả các tệp từng nằm trong cùng một gói như một tệp cụ thể nào đó.

4) Thực hiện cùng các nhiệm vụ như ở trên, nhưng cho các gói Debian, sử dụng các công cụ APT.

5) Cập nhật một phát tán Debian (hoặc Fedora).

6) Cài đặt một công cụ quản trị chung, như Linuxconf hoặc Webadmin, ví dụ thế, trong phát tán của chúng ta. Chúng sẽ đưa ra cho chúng ta những gì? Liệu chúng ta có hiểu được các nhiệm vụ được thực thi không, và những hiệu quả mà chúng mang lại là gì?

Trang 119/471

Page 120: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu khác về thông tin

[Bas] [Coo] đưa ra một giới thiệu rộng rãi (và các khái niệm tiên tiến) về việc lập trình scripts trình biên dịch lệnh trong bash, cũng như một vài ví dụ. [Qui01] thảo luận về các trình biên dịch lệnh khác nhau của việc lập trình trong GNU/Linux, cũng như những sự tương tự và khác biệt của chúng.

[Deb02] [Bai03] đưa ra một tầm nhìn rộng về các hệ thống gói phần mềm của các phát tán Debian và Fedora/Red Hat.

[Stu] là một giới thiệu rộng rãi đối với các công cụ sẵn có trong GNU/Linux.

Trang 120/471

Page 121: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4 Nhân Linux

Josep Jorba Esteve PID_00148468

Linux Kernel

Josep Jorba Esteve PID_00148468

Trang 121/471

Page 122: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Nhân của hệ thống GNU/Linux (thường được gọi là Linux) [Vasb] là trái tim của hệ điều hành: nó có trách nhiệm cho việc khởi động hệ thống, cho việc quản lý các tài nguyên máy tính bằng việc quản lý bộ nhớ, hệ thống tệp, đầu vào/đầu ra, các tiến trình và giao tiếp nội bộ của các tiến trình.

Các cuộc tranh luận gốc ban đầu của nó có từ tháng 08/1991, khi một sinh viên người Phần Lan tên là Linus Torvalds đã công bố trên một danh sách tin rằng anh ta đã tạo ra được nhân hệ điều hành của riêng mình, đã làm việc được cùng với các phần mềm của dự án GNU và anh ta đã đưa nó ra cộng đồng các lập trình viên để thử nghiệm và gợi ý các cải tiến để làm cho nó có khả năng được sử dụng nhiều hơn. Đây là sự khởi đầu của nhân hệ điều hành Linux mà sau này trở nên nổi tiếng.

Một trong những tính năng đặc biệt của Linux là nó tuân theo triết lý của phần mềm tự do, đưa ra mã nguồn của bản thân hệ điều hành (của nhân), theo một cách thức làm cho nó trở thành một công cụ tuyệt vời cho việc dạy về các hệ điều hành.

Ưu điểm chính khác, là bằng việc có mã nguồn, có thể biên dịch nó để thích nghi nó tốt hơn cho hệ thống của chúng ta và cũng có thể thiết lập cấu hình cho các thông số của nó để cải thiện hiệu năng của hệ thống.

Trong phần này, chúng ta sẽ nhìn vào cách điều khiển tiến trình chuẩn bị của một nhân đối với hệ thống của chúng ta. Làm thế nào, bắt đầu với mã nguồn, chúng ta có thể có được một phiên bản mới của nhân được thích nghi cho hệ thống của chúng ta. Tương tự, chúng ta sẽ thảo luận cách để phát triển cấu hình và biên dịch sau đó và cách để thử nhân mới mà chúng ta có được.

Trang 122/471

Lưu ý

Nhân của Linux có từ năm 1991, khi Linus Torvalds đã làm cho nó sẵn sàng đối với cộng đồng. Nó là một trong ít hệ điều hành mà trong khi được sử dụng một cách rộng rãi, thì cũng đưa ra mã nguồn một cách sẵn sàng.

Page 123: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.1. Nhân của hệ điều hành GNU/Linux

Lõi hoặc nhân kernel là phần cơ bản của bất kỳ hệ điều hành nào [Tan87], nơi mà mã nguồn của các dịch vụ cơ bản cho việc kiểm soát toàn bộ hệ thống nằm ở đó. Về cơ bản, cấu trúc này có thể được phân thành một loạt các thành phần quản lý được thiết kế cho:

• Quản lý các tiến trình: những nhiệm vụ nào sẽ được chạy, theo trật tự nào và với ưu tiên nào. Một khía cạnh quan trọng là việc lập lịch của CPU: làm thế nào để tối ưu hóa thời gian của CPU để chạy các nhiệm vụ với hiệu năng hoặc tính tương tác tốt nhất có thể với người sử dụng?

• Sự giao tiếp nội bộ bên trong các tiến trình và sự đồng bộ hóa: làm thế nào mà các nhiệm vụ giao tiếp được với nhau, với các cơ chế khác nhau nào và cách mà các nhóm nhiệm vụ có thể đồng bộ được với nhau?

• Quản lý đầu vào/ra (I/O): kiểm soát các thiết bị ngoại vi và quản lý các tài nguyên liên quan.

• Quản lý bộ nhớ: tối ưu hóa sử dụng bộ nhớ, dịch vụ phân trang và ảo hóa bộ nhớ.

• Quản lý tệp: làm thế nào hệ thống kiểm soát và tổ chức các tệp hiện diện trong hệ thống và truy cập được tới chúng.

Hình 1. Các chức năng cơ bản của một nhân với các ứng dụng và lệnh được thực hiện.

Trong các hệ thống sở hữu độc quyền, nhân là “được ẩn” tuyệt vời bên dưới các lớp phần mềm hệ điều hành; người sử dụng đầu cuối không có một triển vọng sáng sủa nào để biết nhân là gì và không có khả năng thay đổi nó hoặc tối ưu hóa nó, ngoài việc thông qua sử dụng các trình soạn thảo riêng tư bí mật của “những người đăng ký” nội bộ hoặc các chương trình đặc biệt của bên thứ 3, mà thường là rất đắt đỏ. Ngoài ra, nhân thường là duy nhất, thứ mà nhà sản xuất cung cấp và nhà sản xuất giữ quyền đưa ra bất kỳ thay đổi nào mà họ muốn, bất kỳ khi nào họ muốn và điều khiển các lỗi xuất hiện trong các chu kỳ không được công bố thông qua những cập nhật được đưa ra cho chúng ta ở dạng của các “bản vá” lỗi (hoặc các gói dịch vụ - service pack).

Trang 123/471

Page 124: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Một trong những vấn đề chính của tiếp cận này chính xác là tính sẵn sàng của các bản vá đó, việc có những bản vá lỗi đúng lúc là sống còn và nếu chúng có liên quan tới an ninh, thì còn sống còn hơn nữa, vì cho tới trước khi chúng được sửa thì chúng ta không thể đảm bảo an ninh hệ thống đối với những vấn đề được biết. Nhiều tổ chức, các công ty lớn, các chính phủ, các cơ quan khoa học và quân sự không thể phụ thuộc vào ý thích chợt nảy ra của một nhà sản xuất để giải quyết các vấn đề với các ứng dụng sống còn của họ.

Nhân Linux đưa ra một giải pháp nguồn mở với việc đảm bảo các quyền cho việc thay đổi, sửa lỗi, tạo ra những phiên bản mới và cập nhật rất nhanh với bất kỳ ai ở bất kỳ đâu với tri thức được yêu cầu để làm được điều đó.

Điều này cho phép những người sử dụng khó tính kiểm soát được các ứng dụng của họ và bản thân hệ thống tốt hơn, tạo ra khả năng đưa vào các hệ thống với một hệ điều hành “được chỉnh lại” cho từng nhu cầu của cá nhân và đổi lại có được một hệ điều hành nguồn mở được bởi một cộng đồng các lập trình viên cộng tác phát triển thông qua Internet, truy cập được cho các mục đích giáo dục vì nó có mã nguồn mở và tài liệu dư thừa, cho việc sản xuất cuối cùng của các hệ điều hành GNU/Linux được thích nghi cho những nhu cầu cá nhân hoặc cho những nhu cầu của một nhóm đặc thù nào đó.

Vì mã nguồn là mở, những cải tiến và giải pháp có thể thấy ngay lập tức, không giống như các phần mềm sở hữu độc quyền, nơi mà chúng ta phải chờ đợi các cập nhật của nhà sản xuất. Hơn nữa, chúng ta có thể cá nhân hóa nhân thật nhiều tùy theo ý thích của chúng, một yêu cầu cơ bản, ví dụ, trong các ứng dụng hiệu năng cao, các ứng dụng là sống còn đúng lúc hoặc các giải pháp với các hệ thống nhúng (như các thiết bị di động).

Đi qua một chút (nhanh chóng) lịch sử của nhân [Kera] [Kerb]: nó đã bắt đầu được một sinh viên người Phần Lan là Linus Torvalds phát triển, vào năm 1991, với dự định tạo ra một phiên bản tương tự với phiên bản của Minix [Tan87] cho máy tính cá nhân PC của UNIX [Bac86] cho vi xử lý Intel 386. Phiên bản đầu tiên chính thức được công bố là Linux 1.0 vào tháng 03/1994, chỉ đưa vào sự thực thi cho kiến trúc i386 và hỗ trợ các máy tính có duy nhất 1 vi xử lý. Linux 1.2 đã được tung ra vào tháng 03/1995, và là phiên bản đầu tiên bao trùm các kiến trúc khác nhau như Alpha, SPARC và Mips. Linux 2.0, vào tháng 06/1996, được bổ sung cho nhiều kiến trúc hơn và là phiên bản đầu tiên hỗ trợ đa vi xử lý (SMP) [Tum]. Trong Linux 2.2, tháng 01/1999, những lợi ích của SMP đã được nâng cao đáng kể, và các trình kiểm soát đã được bổ sung cho một số lượng lớn các phần cứng. Trong 2.4, được tung ra vào tháng 01/2001, hỗ trợ SMP đã được cải tiến, các kiến trúc mới được hỗ trợ đã được kết hợp và các trình kiểm soát cho USB, các thiết bị thẻ PC đã được đưa vào (PCMCIA cho các máy xách tay) một phần của PnP (cắm là chạy), RAID và sự hỗ trợ dung lượng lớn … Nhân các nhánh 2.6 (tháng 12/2003), hỗ trợ SMP được cải tiến đáng kể, đã đưa ra một câu trả lời tốt hơn đối với hệ thống đặt lịch cho CPU, sử dụng các luồng (thread) trong nhân, hỗ trợ tốt hơn cho các kiến trúc 64 bit, hỗ trợ ảo hóa và sự thích nghi được cải tiến cho các thiết bị di động.

Ở những nơi mà sự phát triển được quan tâm, vì nhân được Linus Torvalds tạo ra vào năm 1991 (phiên bản 0.01), ông đã tiếp tục duy trì nó, nhưng vì công việc của ông đã cho phép và vì nhân đã chín muồi (và đã trưởng hành) nên ông đã được giúp để duy trì các phiên bản ổn định khác nhau của nhân với các cộng tác viên khác nhau, trong khi Linus vẫn tiếp tục (có lẽ là cho tới tận bây

Trang 124/471

Lưu ý

Nhân có gốc gác từ hệ điều hành MINIX, một phát triển của Andrew Tanenbaum, như một bản nhái UNIX cho máy tính cá nhân PC.

Page 125: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

giờ) phát triển và biên dịch các đóng góp cho phiên bản mới nhất của sự phát triển nhân. Những cộng tác viên chính của các phiên bản này từng là [lkm]:

• 2.0 David Weinehall.

• 2.2 Alan Cox (người cũng phát triển và xuất bản các bản vá cho hầu hết các phiên bản).

• 2.4 Marcelo Tosatti.

• 2.6 Andrew Morton / Linus Torvalds.

Để hiểu một chút về sự phức tạp của nhân Linux, hãy nhìn vào bảng với một chút lịch sử tóm tắt của những phiên bản khác nhau và kích thước của nó trong mối quan hệ với mã nguồn. Bảng này chỉ đưa ra các phiên bản sản xuất; kich thước (khoảng) được xác định trong số lượng ngàn (K) dòng mã lệnh:

Phiên bản Ngày xuất bản Số dòng mã lệnh (ngàn dòng)

0.01 09/1991 10

1.0 03/1994 176

1.20 03/1995 311

2.0 06/1996 649

2.2 01/1999 1800

2.4 01/2001 3378

2.6 12/2003 5930

Như chúng ta thấy, chúng ta đã đi từ khoảng 10 ngàn dòng tới 6 triệu dòng mã lệnh.

Bây giờ, sự phát triển nhánh 2.6.x của nhân tiếp tục, phiên bản ổn định mới nhất, mà hầu hết các phát tán đưa vào như phiên bản mặc định (dù một số vẫn còn đưa vào 2.4.x, nhưng 2.6.x là một lựa chọn trong khi cài đặt); dù một số lượng nhất định nào đó tri thức về các phiên bản trước đó là cơ bản, thì vì chúng ta có thể dễ dàng thấy các máy với các phát tán cũ mà chúng không được cập nhật, chúng ta có thể phải duy trì hoặc chuyển đổi sang các phiên bản hiện đại hơn.

Trong khi phát triển nhánh 2.6, các công việc về nhân được đẩy nhanh đáng kể, vì cả Linus Torvalds và Andrew Morton (người duy trì Linux 2.6) đều đã tham gia (vào năm 2003) vào Phòng thí nghiệm Phát triển Nguồn Mở OSDL (Open Source Development Laboratory) [OSDa], một nhóm các công ty chuyên tâm thúc đẩy sử dụng nguồn mở và GNU/Linux (nhóm này bao gồm các công ty với những lợi ích trong GNU/Linux: HP, IBM, Sun, Intel,

Trang 125/471

Lưu ý

Quỹ Linux: www.linuxfoundation.org

Lưu ý

Nhân ngày nay đã đạt được một mức độ phức tạp và chín muồi đáng kể

Page 126: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Fujitsu, Hitachi, Toshiba, Red Hat, Suse, Transmeta...). Bây giờ chúng ta đang đi qua một tình trạng thú vị, khi mà nhóm OSDL đã đỡ đầu các công việc của cả phiên bản ổn định của người duy trì (Andrew) lẫn người phát triển (Linus Torvalds) nhân Linux, làm việc toàn thời gian trên các phiên bản và trong các vấn đề có liên quan. Linus vẫn giữ sự độc lập, làm việc về nhân, trong khi Andrew đã tới làm việc cho Google, nơi mà ông đã tiếp tục những phát triển của ông toàn thời gian, làm các miếng vá với các đóng góp khác nhau cho nhân. Sau một thời gian, OSDL đã trở thành Quỹ Linux.

Chúng ta cần nhớ trong đầu rằng với các phiên bản hiện hành của nhân, một mức độ cao và chín của sự phát triển đã đạt được, có nghĩa là thời gian giữa các phiên bản được xuất bản là dài hơn (đây không là trường hợp của các bản rà soát lại một phần).

Yếu tố khác phải xem xét là số lượng người hiện đang làm việc trong việc phát triển nhân. Ban đầu, từng chỉ có một nhóm người với tri thức đầy đủ về toàn bộ nhân, trong khi bây giờ nhiều người đã tham gia vào sự phát triển của nó. Ước tính gần 2,000 người với các mức độ khác nhau đang đóng góp, dù số lượng các lập trình viên trung kiên làm việc ước tính là vài chục người.

Chúng ta cũng nên xem xét rằng hầu hết những người đóng góp cho nhân có những tri thức về một phần nào đó của nhân, họ không cùng một lúc làm mọi công việc và cũng không có những đóng góp như nhau (một số chỉ chỉnh sửa các lỗi đơn giản); chỉ một số ít người (như những người duy trì là có tri thức đầy đủ về nhân. Điều này có nghĩa là sự phát triển có thể mất một chút thời gian để thực hiện, những đóng góp cần phải được gỡ rối để chắc chắn chúng không có xung đột với những thứ khác và những lựa chọn cần phải được thực hiện giữa các tính năng có khả năng thay thế được cho nhau.

Về việc đánh số cho các phiên bản của nhân Linux ([lkm][DBo]), chúng ta nên nhớ trong đầu điều sau:

a) Cho tới nhánh của nhân 2.6.x, các phiên bản của nhân Linux đã được quản lý bằng việc chia thành 2 loạt: một được biết như là phiên bản “thí điểm” (với con số thứ 2 là một số lẻ, như là 1.3.xx, 2.1.x hoặc 2.5.x) và loạt khác như là phiên bản “sản xuất” (loạt chẵn, như 1.2.xx, 2.0.xx, 2.2.x, 2.4.x và hơn nữa). Loạt thí điểm là những phiên bản được chuyển nhanh chóng và đã được sử dụng cho việc thử nghiệm các tính năng mới, các thuật toán, các trình điều khiển thiết bị … Vì bản chất tự nhiên của các nhân thí điểm, chúng có thể hành xử một cách không đoán trước được, mất dữ liệu, khóa máy... Vì thế, chúng không phù hợp với các môi trường sản xuất, trừ phi cho việc thử nghiệm một tính năng cụ thể nào đó (với những nguy hiểm có liên quan).

Các nhân sản xuất hoặc ổn định (loạt chẵn) là các nhân với một tập hợp các tính năng được xác định tốt, một số lượng thấp các lỗi được biết và với các trình kiểm tra thiết bị được thí điểm và kiểm thử. Chúng được xuất bản ít thường xuyên hơn so với các phiên bản thí điểm và đã có một loạt các phiên bản, một số tốt hơn số khác. Các phát tán GNU/Linux thường dựa trên một nhân ổn định được chọn, không nhất thiết là nhân sản xuất được xuất bản mới nhất.

b) Việc đánh số nhân Linux hiện hành (được sử dụng trong nhánh 2.6.x), tiếp tục duy trì một số khía cạnh cơ bản: phiên bản này được chỉ định với các con số X, Y, Z, nơi mà thông thường thì X là phiên bản chính, đại diện cho những thay đổi quan trọng cho nhân; Y là phiên bản thứ 2 và thường ngụ ý những cải tiến trong hiệu năng của nhân: Y là chẵn cho các nhân ổn định và là lẻ cho những phát triển hoặc thử nghiệm; và Z là phiên bản được xây dựng, chỉ ra số rà soát lại của X, Y, về các bản vá hoặc những chỗ sửa lỗi được thực hiện. Các nhà phân phối không có xu hướng đưa vào phiên bản mới nhất của nhân, mà là phiên bản họ đã thử nghiệm thường xuyên

Trang 126/471

Page 127: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nhất và có thể kiểm định được độ ổn định của nó cho phần mềm và các thành phần trong đó. Trên cơ sở của mô hình đánh số kinh điển này (từ sau các phiên bản 2.4.x, cho tới những phiên bản đầu của nhánh 2.6), những sửa đổi đã được thực hiện để thích nghi cho thực tế là nhân (nhánh 2.6.x) đang trở nên ổn định hơn (vì sự nhảy vọt trong phiên bản của các số đầu), nhưng sự nghiên cứu và phát triển vẫn còn tiếp tục.

Theo các mô hình mới nhất, 4 con số được giới thiệu để chỉ định trong Z những thay đổi nhỏ hoặc những khả năng xem xét lại khác (với những bản vá khác được bổ sung). Phiên bản này vì thể được xác định với 4 con số là một phiên bản được coi là ổn định. Những mô hình khác cũng được sử dụng cho một loạt các phiên bản thử nghiệm (thông thường không được khuyến cáo cho các môi trường sản xuất), như những tiền tố -rc (phiên bản ứng viên), -mm là tham chiếu tới các nhân thí điểm với những thử nghiệm cho các kỹ thuật đổi mới sáng tạo khác, hoặc -git là một dạng của việc chụp lại hàng ngày sự phát triển của nhân. Những mô hình đánh số này thường xuyên thay đổi để thích nghi cho cách làm việc của cộng đồng nhân và những nhu cầu của nó để tăng tốc cho sự phát triển.

c) Để có nhân mới nhất được xuất bản, bạn cần xem tệp nhân Linux (tại http://www.kernel.org) hoặc trên site gương soi cục bộ của nó đặt tại Tây Ban Nha (http://www.es.kernel.org). Cũng sẽ có khả năng tìm ra một số bản vá cho nhân ban đầu, nó sửa các lỗi được dò tìm thấy sau khi xuất bản nhân.

Một số đặc tính kỹ thuật ([Dbo][Arc]) của nhân Linux được nhấn mạnh là:

• Nhân có dạng nguyên khối: về cơ bản đây là một chương trình được tạo ra như một đơn vị, nhưng về khái niệm thì được chia thành vài thành phần logic.

• Nó có sự hỗ trợ cho các phần tải lên/tải về của nhân, những phần này được biết như các module, và có xu hướng sẽ là các đặc tính của nhân hoặc của các trình điều khiển thiết bị.

• Việc phân luồng nhân: đối với việc hoạt động nội bộ bên trong, vài phân luồng thực hành được sử dụng bên trong nhân, có khả năng được liên kết tới một chương trình của người sử dụng hoặc tới một chức năng nội bộ của nhân. Trong Linux, khái niệm này đã không được sử dụng rộng rãi. Những rà soát lại của nhánh 2.6.x đã đưa ra sự hỗ trợ tốt hơn và một phần lớn của nhân được chạy có sử dụng một loạt các luồng thực thi này.

• Hỗ trợ ứng dụng đa luồng: sự hỗ trợ các ứng dụng đa luồng, khi mà nhiều mẫu điện toán của dạng máy trạm/máy chủ, cần các máy chủ có khả năng tham gia với một loạt các yêu cầu cùng một lúc, chuyên dùng cho một luồng thực thi với từng yêu cầu hoặc nhóm các yêu cầu. Linux có thư viện các luồng của riêng nó, có khả năng được sử dụng cho các ứng dụng đa luồng, với những cải tiến được thực hiện cho nhân, chúng cũng cho phép sử dụng tốt hơn để triển khai các thư viện luồng cho việc phát triển các ứng dụng.

• Nhân là một dạng được ưu tiên trước: điều này có nghĩa là bên trong nhân, các lời gọi hệ thống (ở chế độ giám sát) không thể bị ngắt quãng trong khi nhiệm vụ của hệ thống đang được giải quyết và, khi cái sau kết thúc, thì sự thực thi của nhiệm vụ trước được hồi phục lại. Vì thế, nhân bên trong một lời gọi không thể bị ngắt quãng để tham gia vào một nhiệm vụ khác. Thông

Trang 127/471

Lưu ý

Kho của nhân: www.kernel.org

Page 128: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thường, các nhân được ưu tiên trước sẽ có liên quan tới các hệ thống hoạt động trong thời gian thực, nơi mà những nhu cầu ở trên sẽ được phép để điều khiển những sự kiện sống còn. Có một số phiên bản đặc biệt của nhân Linux cho thời gian thực, cho phép điều này bằng việc đưa ra một số điểm cố định nơi mà chúng có thể được trao đổi. Khái niệm này cũng đặc biệt được cải thiện trong nhánh 2.6.x của nhân, trong một số trường hợp cho phép một số nhiệm vụ phục hồi được của nhân sẽ bị ngắt để làm việc với những nhiệm vụ khác và phục hồi lại chúng sau này. Khái niệm về một nhân được ưu tiên trước cũng có thể là hữu dụng cho việc cải tiến các nhiệm vụ tương tác, vì nếu những lời gọi đắt giá được thực hiện đối với hệ thống, thì chúng có thể gây ra những chậm trễ trong các ứng dụng tương tác.

• Hỗ trợ đa vi xử lý, được biết tới như là đa xử lý đối xứng SMP (Symmetrical MultiProcessing). Khái niệm này chỉ các máy có sự kết hợp của 2 cho tới 64 CPU. Vấn đề này đã trở thành đặc biệt phù hợp với các kiến trúc đa nhân, cho phép từ 2 hoặc 4 tới nhiều hơn các lõi CPU trong các máy tính có thể truy cập được tới người sử dụng ở nhà. Linux có thể sử dụng nhiều vi xử lý, nơi mà mỗi vi xử lý có thể điều khiển một hoặc nhiều hơn các nhiệm vụ. Nhưng một số phần của nhân làm giảm hiệu năng, vì chúng đã được thiết kế cho một CPU duy nhất và ép toàn bộ hệ thống dừng trong những trường hợp bị bao vây nhất định nào đó. SMP là một trong những kỹ thuật được nghiên cứu nhiều nhất trong cộng đồng nhân Linux và những cải tiến quan trọng đã đạt được trong nhánh 2.6. Vì hiệu năng của SMP là một yếu tố xác định khi các công ty sử dụng Linux như một hệ điều hành cho các máy chủ.

• Các hệ thống tệp: nhân có một kiến trúc hệ thống tệp tốt, công việc nội bộ được dựa vào sự ảo hóa của một hệ thống ảo (VFS [Virtual File System], hệ thống tệp ảo - virtual filesystem), có khả năng dễ dàng được áp dụng cho bất kỳ hệ thống thực tế nào. Kết quả là, Linux có lẽ là hệ điều hành hỗ trợ số lượng các hệ thống tệp nhiều nhất, từ ext2, tới MSDOS, VFAT, NTFS, các hệ thống như ext3, ReiserFS, JFS (IBM), XFS (Silicon), NTFS, ISO9660 (CD), UDF và được bổ sung nhiều hơn trong những rà soát lại khác.

Các đặc tính ít kỹ thuật khác (một chút marketing):

a) Linux là tự do: cùng với các phần mềm GNU và được đưa vào trong bất kỳ phát tán nào, chúng ta có thể có một hệ thống đầy đủ như UNIX thực sự với chỉ còn lại giá của phần cứng, vì giá thành của GNU/Linux, chúng ta có thể có nó thực sự là tự do. Mặc dù nó có ý nghĩa để trả một chút gì đó thêm cho một phát tán hoàn chỉnh, với tập hợp đầy đủ các sách chỉ dẫn và hỗ trợ kỹ thuật, với mức giá thấp hơn so với việc phải trả cho một số hệ thống sở hữu độc quyền hoặc để đóng góp bằng việc mua để phát triển các phát tán mà chúng ta ưu tiên hơn hoặc chúng ta thấy thực tế hơn.

b) Linux có thể sửa đổi được: giấy phép GPL cho phép chúng ta đọc và sửa mã nguồn của nhân (trong điều kiện là chúng ta phải có sự tinh thông cần thiết).

c) Linux có thể chạy trên các phần cứng cũ với tài nguyên hạn chế; ví dụ, có thể tạo ra một máy chủ mạng trên máy 386 với 4MB RAM (có những phát tán chuyên dụng cho những tài nguyên hạn chế).

d) Linux là một hệ thống mạnh: mục tiêu chính của Linux là hiệu quả, nó hướng tới để làm được nhiều nhất với các phần cứng có sẵn.

Trang 128/471

Page 129: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

e) Chất lượng cao: các hệ thống GNU/Linux là rất ổn định, có một tỷ lệ lỗi thấp và giảm được thời gian cần thiết cho việc duy trì hệ thống.

f) Nhân khá nhỏ và gọn: có khả năng tùy biến nó, cùng với một số chương trình cơ bản, trên một đĩa chỉ 1.44MB (có vài phát tán trên chỉ một đĩa mềm với các chương trình cơ bản).

g) Linux là tương thích với một số lượng lớn các hệ điều hành, nó có thể đọc các tệp của thực tế hầu như mọi hệ thống tệp và có thể giao tiếp qua mạng để đưa ra/nhận về các dịch vụ từ bất kỳ hệ thống nào. Hơn nữa, với các thư viện nhất định nào đó nó cũng có thể chạy các chương trình của các hệ thống khác (như MSDOS, Windows, BSD, Xenix …) trên kiến trúc x86.

h) Linux có sự hỗ trợ rộng rãi: không có hệ thống nào có được tốc độ và số lượng các bản vá và cập nhật như Linux, không ngay cả đối với bất kỳ hệ thống sở hữu độc quyền nào. Đối với một vấn đề cụ thể nào đó, có một số lượng vô tận các danh sách thư và nhóm thảo luận có thể giúp giải quyết bất kỳ vấn đề nào trong chỉ một ít giờ. Vấn đề duy nhất ảnh hưởng tới các trình điều khiển thiết bị phần cứng gần đây, mà nhiều nhà sản xuất vẫn còn miễn cưỡng cung cấp khi chúng không phải là cho các hệ thống sở hữu độc quyền. Nhưng điều này dần dần thay đổi và nhiều nhà sản xuất quan trọng nhất trong các khu vực như card video (NVIDIA, ATI) và các máy in (Epson, HP) đã bắt đầu cung cấp các trình điều khiển cho các thiết bị của họ.

Trang 129/471

Page 130: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.2. Thiết lập cấu hình hoặc cập nhật nhân

Như những người sử dụng hoặc những quản trị viên hệ thống GNU/Linux, chúng ta cần nhớ trong đầu những khả năng mà nhân đưa ra để thích nghi cho các yêu cầu và trang thiết bị của chúng ta.

Khi cài đặt, các phát tán GNU/Linux đưa ra một loạt các nhân được thiết lập cấu hình sẵn từ trước và được biên dịch ở dạng nhị phân, chúng ta thường phải chọn nhân nào từ tập hợp có sẵn nào sử dụng được tốt nhất cho phần cứng của chúng ta. Có những nhân chung, nhằm vào thiết bị IDE, những nhân khác vào SCSI, những nhân khác nữa lại đưa ra sự pha trộn các trình điều khiển thiết bị [AR01] …

Lựa chọn khác trong khi cài đặt là phiên bản nhân. Các phát tán thường sử dụng một cài đặt cho là được thử nghiệm đủ và ổn định để không gây ra bất kỳ vấn đề gì cho người sử dụng. Ví dụ, ngày nay nhiều phát tán đi với các phiên bản 2.6.x của nhân một cách mặc định, vì nó được xem là phiên bản ổn định nhất (vào thời điểm phát tán được tung ra). Trong những trường hợp nhất định, như một lựa chọn, các phiên bản hiện đại hơn có thể được chào trong khi cài đặt, với sự hỗ trợ được cải thiện cho các thiết bị hiện đại hơn (thế hệ mới nhất), có thể lại không được thử nghiệm thật rộng rãi vào thời điểm phát tán được đưa ra.

Các nhà phân phối có xu hướng sẽ sửa đổi nhân để cải thiện hành vi của phát tán hoặc sửa các lỗi được dò tìm ra trong nhân trong khi thử nghiệm. Một kỹ thuật khá thông dụng khác với các phát tán thương mại là vô hiệu hóa các tính năng có vấn đề có thể gây ra những lỗi cho người sử dụng hoặc đòi hỏi một cấu hình máy cụ thể nào đó hoặc khi một tính năng cụ thể nào đó không được coi là đủ ổn định để được đưa vào một cách mặc định.

Điều này dẫn chúng ta tới việc xem xét, dù bất kể nhà phân phối làm tốt thế nào công việc thích nghi nhân cho phát tán của mình, thì chúng ta cũng có thể luôn bắt gặp một số vấn đề:

• Nhân không được cập nhật với phiên bản ổn định sẵn sàng mới nhất; một số thiết bị hiện đại không được hỗ trợ.

• Nhân tiêu chuẩn không hỗ trợ các thiết bị mà chúng ta có vì chúng đã không được cho phép.

• Các trình điều khiển mà một nhà sản xuất đưa ra cho chúng ta đòi hỏi một phiên bản mới hoặc những sửa đổi của nhân.

• Đối nghịch lại, nhân là quá hiện đại, và chúng ta có phần cứng cũ mà các nhân hiện đại không còn hỗ trợ nữa.

• Nhân, như bản thân nó, không có hiệu năng tốt nhất từ các thiết bị của chúng ta.

• Một số ứng dụng chúng ta muốn sử dụng đòi hỏi sự hỗ trợ của một nhân hoặc một trong những tính năng mới.

• Chúng ta muốn sẽ là hiện đại nhất, mạo hiểm cài đặt các phiên bản mới nhất của nhân Linux.

• Chúng ta thích nghiên cứu hoặc thử nghiệm những cải tiến mới trong nhân hoặc có thể muốn sờ mó hoặc sửa đổi nhân.

Trang 130/471

Lưu ý

Khả năng cập nhật và thích nghi nhân đưa ra một sự chỉnh sửa tốt cho bất kỳ hệ thống nào thông qua việc tinh chỉnh và tối ưu hóa.

Page 131: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Chúng ta muốn lập trình một trình điều khiển cho một thiết bị chưa được hỗ trợ.

• …

Đối với những lý do khác nhau, chúng ta có thể không hạnh phúc với nhân hiện có; trong trường hợp đó có 2 khả năng: cập nhật nhân nhị phân của phát tán hoặc chỉnh sửa nó với việc sử dụng mã nguồn.

Hãy xem một ít vấn đề có liên quan tới những lựa chọn khác và những gì chúng gây ra:

1) Việc cập nhật nhân của phát tán: nhà phân phối thường cũng xuất bản các cập nhật của nhân khi chúng được tung ra. Khi cộng đồng Linux tạo ra một phiên bản mới của nhân, thì mỗi nhà phân phối liên kết phiên bản đó vào với phát tán của mình và tiến hành các thử nghiệm thích hợp. Tiếp sau giai đoạn thử nghiệm, các lỗi tiềm năng sẽ được xác định, được sửa và việc cập nhật phù hợp của nhân được thực hiện có liên quan tới phát tán được đưa ra trong đĩa CD của phát tán đó. Người sử dụng có thể tải về bản rà soát mới của phát tán từ website, hoặc cập nhật nó thông qua một số hệ thống gói tự động khác thông qua một kho các gói. Thông thường, phiên bản của hệ thống được kiểm tra, nhân mới được tải về và những thay đổi được yêu cầu sẽ được làm tuân theo thời gian và các chức năng hệ thống với nhân mới, duy trì phiên bản cũ trong trường hợp có bất kỳ vấn đề gì xảy ra.

Dạng cập nhật này đơn giản hóa tiến trình cho chúng ta rất nhiều, nhưng có thể không giải quyết được vấn đề của chúng ta, vì phần cứng của chúng ta có thể còn chưa được hỗ trợ hoặc tính năng của nhân sẽ được thử nghiệm vẫn còn chưa có trong phiên bản chúng ta có của phát tán này; cần nhớ rằng không có lý do cho nhà phân phối để sử dụng phiên bản có sẵn mới nhất (ví dụ tại kernel.org), thay vào đó là một nhân được coi là ổn định cho phát tán của nó.

Nếu phần cứng của chúng ta cũng không được hỗ trợ một cách mặc định trong phiên bản mới, thì chúng ta tự thấy tình huống y hệt ở trên. Hoặc đơn giản, nếu chúng ta muốn phiên bản mới nhất, thì qui trình này cũng không sử dụng được.

2) Việc chỉnh nhân (qui trình này được mô tả chi tiết trong các phần sau). Trong trường hợp này, chúng ta sẽ tới các nguồn của nhân và tinh chỉnh “bằng tay” cho phần cứng hoặc các đặc tính được yêu cầu. Chúng ta sẽ đi qua một qui trình thiết lập cấu hình và biên dịch mã nguồn của nhân sao cho để tạo ra một nhân nhị phân chúng ta sẽ cài đặt lên hệ thống để nó sẵn sàng vào lúc hệ thống được khởi động.

Ở đây chúng ta cũng có thể bắt gặp 2 lựa chọn nữa, hoặc mặc định chúng ta sẽ có phiên bản “chính thức” của nhân (kernel.org), hoặc có thể đi tới các nguồn được bản thân phát tán cung cấp. Cần nhớ trong đầu rằng các phát tán như Debian và Fedora làm được nhiều trong việc thích nghi nhân và sửa các lỗi của nhân có ảnh hưởng tới phát tán của chúng, có nghĩa là trong một số trường hợp có thể có những sự sửa lỗi bổ sung cho mã gốc ban đầu của nhân. Một lần nữa, các nguồn được phát tán đưa ra không nhất thiết phải có sự tương ứng với phiên bản được xuất bản mới nhất.

Hệ thống này cho phép chúng ta tối đa hóa độ tin cậy và kiểm soát, nhưng với một giá thành quản trị cao; vì chúng ta sẽ cần phải có tri thức rộng lớn về các thiết bị và các đặc tính chúng ta đang lựa chọn (những gì chúng có nghĩa và những ảnh hưởng nào chúng có thể có), bổ sung vào với những hệ lụy của các quyết định mà chúng ta đưa ra có thể kéo theo.

Trang 131/471

Page 132: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.3. Quá trình cấu hình và biên dịch

Việc thiết lập cấu hình cho nhân [Vasb] là một qui trình đắt giá và đòi hỏi tri thức rộng lớn của người thực hiện nó, đây cũng là một trong những nhiệm vụ sống còn mà tính ổn định của hệ thống phụ thuộc vào nó, biết rằng bản chất tự nhiên của nhân là thành phần trung tâm của hệ thống.

Bất kỳ lỗi nào trong thủ tục này cũng có thể gây ra tính không ổn định hoặc sập hệ thống. Vì thế, được khuyến cáo thực hiện sao lưu các dữ liệu của người sử dụng, các cấu hình đã chỉnh sửa, hoặc, nếu có các thiết bị theo yêu cầu, hãy tiến hành sao lưu hệ thống một cách hoàn chỉnh. Cũng được khuyến cáo có một đĩa khởi động (hoặc phát tán Live CD với các công cụ) để trợ giúp cho chúng ta trong trường hợp có bất kỳ vấn đề gì, hoặc một đĩa cấp cứu mà hầu hết các phát tán cho phép tạo ra từ đĩa CD của các phát tán đó (hoặc bằng cách trực tiếp cung cấp một đĩa CD cấp cứu cho phát tán đó).

Không cường điệu, nếu các bước được tuân thủ đúng, thì chúng ta biết những gì chúng ta đang làm và thực hiện những đề phòng cần thiết, thì các lỗi hầu như không bao giờ xảy ra.

Hãy nhìn vào qui trình được yêu cầu để cài đặt và thiết lập cấu hình một nhân Linux. Trong phần sau, chúng ta sẽ xem xét:

1) Trường hợp các phiên bản cũ 2.4.x

2) Một số xem xét liên quan tới việc chuyển sang 2.6.x

3) Các chi tiết cụ thể về các phiên bản 2.6.x.

4) Một trường hợp đặc biệt với phát tán Debian, có hệ thống biên dịch mềm dẻo hơn của riêng nó (cách của debian).

Phiên bản 2.4.x thực tế không còn được đưa ra nữa với các phát tán hiện hành, nhưng chúng ta nên xem trong hơn một trường hợp có thể tự thấy có bổn phận phải chuyển đổi một hệ thống cụ thể nào đó sang các phiên bản mới hoặc để duy trì nó trong các phiên bản cũ, vì tính không tương thích hoặc sự tồn tại của các phần cứng cũ không được hỗ trợ.

Các khái niệm chung về tiến trình biên dịch và cấu hình sẽ được giải thích trong phần đầu (2.4.x), vì hầu hết chúng đều là chung, và chúng ta sau đó sẽ thấy những khác biệt đối với các phiên bản mới.

4.3.1 Biên dịch nhân 2.4.x

Những chỉ dẫn là đặc biệt cho kiến trúc Intel x86, với người sử dụng root (dù một phần của qui trình này có thể được thực hiện như một người sử dụng thông thường):

1) Việc có được nhân: ví dụ, chúng ta có thể tới www.kernel.org (hoặc máy chủ FTP của nó) và tải về phiên bản chúng ta có thể muốn thử nghiệm. Có những gương soi cho các quốc gia khác nhau. Trong hầu hết các phát tán GNU/Linux, như Fedora/Red Hat hoặc Debian, mã nguồn của nhân cũng được đưa ra như một gói (thường thì với một số sửa đổi bổ sung thêm vào), nếu chúng ta đang làm việc với phiên bản của nhân chúng ta cần, thì có thể là ưu tiên để sử dụng

Trang 132/471

Lưu ý

Qui trình để có một nhân mới được cá nhân hóa có liên quan tới việc có được các nguồn, việc thích nghi cấu hình và việc biên dịch và cài đặt nhân có trong hệ thống.

Page 133: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chúng (thông qua các gói nguồn của nhân hoặc tương tự). Nếu chúng ta muốn các nhân mới nhất, có lẽ chúng sẽ không sẵn sàng trong phát tán và chúng ta sẽ phải tới kernel.org.

2) Giải nén cho nhân: các nguồn của nhân thường được đặt và giải nén từ thư mục /usr/src, dù được khuyến cáo nên sử dụng một thư mục tách biệt để không phải trộn với các tệp nguồn mà phát tán đó có thể mang. Ví dụ, nếu các nguồn đi tới một tệp được nén dạng của bzip2:

bzip2 -dc linux-2.4.0.tar.bz2 | tar xvf -

Nếu các nguồn trong một tệp gz, thì sẽ thay thế bzip2 bằng gzip. Khi giải nén các nguồn này, thì sẽ tạo ra một thư mục cho phiên bản nhân Linux mà chúng ta sẽ đưa vào để thiết lập cấu hình cho nhân.

Trước khi tiến hành các bước trước khi biên dịch, nên chắc chắn rằng chúng ta có các công cụ đúng, đặc biệt là trình biên dịch gcc, make và các tiện ích bổ sung khác của GNU cho tiến trình này. Ví dụ, modutils, các tiện ích khác để sử dụng và điều khiển các module nhân động. Cũng vậy, đối với các lựa chọn cấu hình khác nhau chúng ta nên tính tới một số lượng các điều kiện tiên quyết ở dạng của các thư viện có liên quan tới giao diện cấu hình được sử dụng (ví dụ ncurrses cho giao diện menuconfig).

Nói chung, chúng ta khuyến cáo việc kiểm tra tài liệu của nhân (hoặc thông qua gói hoặc trong thư mục gốc của các nguồn) để biết những yêu cầu tiên quyết và các phiên bản nguồn của nhân cần thiết cho qui trình này. Khuyến cáo nghiên cứu các tệp README (hãy đọc tôi) trong thư mục gốc root của nguồn của nhân, và Tài liệu/Những thay đổi (Documentation/Changes) hoặc chỉ số tài liệu của nhân trong Documentation/00-INDEX.

Nếu chúng ta đã tiến hành làm các biên dịch trước đó trong cùng thư mục, thì cần chắc chắn rằng thư mục chúng ta sử dụng là rõ ràng đối với các biên dịch; có thể làm rõ nó bằng việc sử dụng make mrproper (từ thư mục “root”).

Đối với qui trình thiết lập cấu hình cho nhân [Vasb], có vài phương pháp thay thế được, đưa ra các giao diện khác nhau để chỉnh một loạt các tham số của nhân (có xu thế sẽ được lưu trữ trong một tệp thiết lập cấu hình, thường là .config trong thư mục gốc “root” của các nguồn). Các phương pháp thay thế là:

• make config: từ dòng lệnh chúng ta được yêu cầu với từng lựa chọn, và được yêu cầu khẳng định (Yes/No) - có hay không, đối với lựa chọn, hoặc được hỏi về các giá trị được yêu cầu. Hoặc cấu hình dài lâu, nơi mà chúng ta được hỏi với nhiều câu trả lời, và phụ thuộc vào mỗi phiên bản, sẽ phải trả lời gần như hàng trăm câu hỏi (hoặc hơn tùy thuộc vào phiên bản đó).

• make oldconfig: nó được sử dụng nếu chúng ta muốn sử dụng lại một cấu hình được sử dụng rồi (thường thì được lưu trữ trong một tệp .config, trong thư mục gốc root của các nguồn), cần tính điều đó chỉ hợp lý nếu chúng ta đang biên dịch cùng phiên bản của nhân, khi mà các phiên bản nhân khác nhau có thể có những lựa chọn thay đổi được.

• make menuconfig: cấu hình dựa trên các thực đơn văn bản, khá thuận tiện; có thể cho phép hoặc vô hiệu hóa những gì chúng ta muốn và nó là nhanh hơn so với make config.

• make xconfig: tiện lợi nhất, dựa vào các hộp thoại đồ họa trong X Window. Cần phải có các thư viện tcl/tk được cài đặt, khi mà cấu hình này được lập trình theo ngôn ngữ đó. Cấu hình này dựa vào các bảng của các hộp thoại và các núm/các ô chọn, có thể được thực hiện khá nhanh và có sự trợ giúp với các bình luận trong hầu hết các lựa chọn. Nhưng nó có một khiếm khuyết, là

Trang 133/471

Page 134: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

việc một số lựa chọn có thể không xuất hiện (nó phụ thuộc vào liệu chương trình cấu hình có được cập nhật hay không, đôi khi là không). Trong trường hợp này, make config (hoặc menuconfig) là thứ có thể chắc chắn sẽ đưa ra tất cả các lựa chọn cho chúng ta có thể chọn; đối với những dạng cấu hình khác thì nó phụ thuộc vào việc liệu các chương trình có được thích nghi cho những lựa chọn mới cho nhân để được tung ra đúng lúc hay không. Dù nói chung thì chúng cố gắng để thực hiện việc đó cùng một lúc.

Hình 2. Cấu hình của nhân (make xconfig) từ giao diện đồ họa trong X Window

Một khi qui trình cấu hình đã được thực hiện, chúng ta cần lưu tệp ( .config), vì sự thiết lập cấu hình đòi hỏi một số thời gian đáng kể. Hơn nữa, có thể là hữu dụng để làm cho việc cấu hình thực hiện được nhanh chóng nếu có kế hoạch tiến hành nó trên một vài máy tương tự hoặc y hệt.

Vấn đề quan trọng khác liên quan tới các lựa chọn cấu hình là việc trong nhiều trường hợp chúng ta sẽ được yêu cầu liệu có muốn một đặc tính cụ thể nào đó được tích hợp vào trong nhân hoặc như một module (trong phần về các module chúng ta sẽ cung cấp chi tiết hơn về chúng) hay không. Đây là quyết định khá quan trọng, vì trong những trường hợp nhất định sự lựa chọn của chúng ta sẽ ảnh hưởng tới hiệu năng của nhân (và vì thế tới toàn bộ hệ thống).

Nhân Linux đã trở nên rất lớn, về cả tính phức tạp và các trình điều khiển thiết bị (drivers) [AR01] được đưa vào nó. Nếu đã tích hợp mọi thứ, thì chúng ta có thể tạo ra một tệp nhân rất lớn, có thể chiếm nhiều bộ nhớ và, vì thế, làm chậm một số khía cạnh về chức năng. Các module của nhân [Hen] là một cách thức làm cho có khả năng phân chia nhân thành các phần nhỏ hơn, sẽ được tải lên một cách năng động theo yêu cầu hoặc khi chúng cần thiết cho việc tải hoặc sử dụng một tính năng rõ ràng nào đó.

Sự lựa chọn thông thường là tích hợp những gì được coi là cơ bản cho việc hoạt động hoặc sống còn cho hiệu năng bên trong nhân và để lại các phần hoặc các trình kiểm soát sẽ được sử dụng một cách không thường xuyên như các module cho những mở rộng tính năng của thiết bị.

Trang 134/471

Page 135: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Một trường hợp rõ ràng là các trình kiểm soát thiết bị: nếu đang cập nhật máy, thì có thể là khi tạo nhân chúng ta không chắc được phần cứng nào sẽ có; ví dụ, card mạng nào; nhưng chúng ta biết những gì sẽ được kết nối tới một mạng, sao cho, sự hỗ trợ của mạng này sẽ được tích hợp vào trong nhân, nhưng đối với các trình kiểm soát thì có thể chọn một ít (hoặc tất cả) và cài đặt chúng như các module. Sau đó, khi có card thì chúng ta có thể tải module được yêu cầu hoặc nếu cần thay đổi một card sau này, thì chúng ta sẽ chỉ phải thay đổi module sẽ được tải lên. Nếu chỉ một trình kiểm soát được tích hợp vào nhân và chúng ta đã thay đổi card, thì có thể bị ép phải cấu hình lại và biên dịch lại nhân với trình kiểm soát card mới.

• Trường hợp khác đang nổi lên (dù không phải là rất phổ biến) là khi có 2 thiết bị không tương thích với nhau, hoặc khi một hoặc thứ kia đang hoạt động (ví dụ, điều này có xu hướng xảy ra với một máy in được kết nối song song và phần cứng được kết nối tới cổng song song). Vì vậy, trong trường hợp này, cần đặt các trình kiểm soát như các module và tải hoặc tải về thứ mà chúng ta cần.

• Ví dụ khác là trường hợp của các hệ thống tệp. Thông thường có thể hy vọng rằng hệ thống có khả năng truy cập được tới một số trong số chúng, như ext2 hoặc ext3 (thuộc về Linux), và AT (thuộc về Windows 95/98/ME), và chúng ta cho phép chúng trong lúc thiết lập cấu hình cho nhân. Nếu có lúc nào đó phải đọc dạng không mong muốn nào khác, ví dụ các dữ liệu được lưu trữ trong một đĩa hoặc phân vùng của hệ thống Windows NT/XP NTFS, thì có thể sẽ không có khả năng để: nhân có thể không biết cách hoặc có thể không có sự hỗ trợ để làm thế. Nếu chúng ta đã thấy trước được điều đó đôi lúc nào đó (dù không thường xuyên) việc có thể cần phải truy cập các hệ thống này, thì có thể để những hệ thống tệp khác như các module.

3) Việc biên dịch nhân

Chúng ta sẽ bắt đầu sự biên dịch bằng việc sử dụng make, đầu tiên sẽ phải tạo ra những phụ thuộc có thể trong mã nguồn và sau đó là dạng ảnh của nhân chúng ta muốn (trong trường hợp này, một ảnh nén, có xu hướng sẽ là trường hợp thông thường):

make dep

make bzImage

Khi tiến trình này được hoàn tất, sẽ có phần được tích hợp của nhân; chúng ta bỏ qua các phần đã thiết lập như các module:

make modules

Tại điểm này chúng ta đã làm xong việc cấu hình và biên dịch nhân. Phần này có thể được một người sử dụng bình thường hoặc người sử dụng gốc root thực hiện, nhưng bây giờ chúng ta sẽ tuyệt đối cần người sử dụng gốc root, vì chúng ta sẽ chuyển sang phần cài đặt.

4) Cài đặt

Chúng ta sẽ bắt đầu bằng việc cài đặt các modules:

make module_install

Và cài đặt nhân mới (từ thư mục /usr/src/linux-version hoặc thư mục chúng ta đã sử dụng tạm thời):

Trang 135/471

Page 136: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.0

cp System.map /boot/System.map-2.4.0

tệp bzImage là nhân mới được biên dịch, được đặt trong thư mục /boot. Thông thường, chúng ta sẽ thấy nhân cũ trong cùng thư mục /boot với tên vmlinuz hoặc vmlinuz-previous-version như một liên kết biểu tượng tới nhân cũ. Một khi có nhân của chúng ta, thì tốt hơn hãy giữ lại nhân cũ, trong mọi trường hợp có lỗi xảy ra hoặc nhân mới hoạt động tồi, để chúng ta có thể phục hồi lại được nhân cũ. Tệp System.map chứa các biểu tượng sẵn sàng cho nhân và là cần thiết cho việc xử lý khởi tạo nó; nó cũng được đặt trong cùng thư mục.

Tại điểm này, chúng ta cũng cần xem xét rằng khi nhân khởi động nó có thể cần tạo ra các tệp dạng initrd, phục vụ như một ảnh ghép của một vài trình điều khiển cơ bản và được sử dụng khi tải hệ thống, nếu hệ thống cần những trình điều khiển này trước khi khởi động các thành phần nhất định nào đó. Trong một số trường hợp, nó là sống còn vì để khởi động phần còn lại của hệ thống, các trình điều khiển nhất định nào đó cần được tải vào pha đầu tiên; ví dụ các trình kiểm soát đĩa cụ thể nào đó như RAID hoặc các trình kiểm soát volume, có thể là cần thiết cho pha 2, đĩa có thể được truy cập để khởi động phần còn lại của hệ thống.

Nhân có thể được tạo ra với hoặc không với một ảnh initrd, phụ thuộc vào các nhu cầu của phần cứng hoặc hệ thống theo yêu cầu. Trong một số trường hợp, phát tán sẽ áp đặt nhu cầu sử dụng một ảnh initrd, trong các trường hợp khác nó sẽ phụ thuộc vào phần cứng của chúng ta. Cũng thường được sử dụng để kiểm soát kích thước của nhân, sao cho những thứ cơ bản của nó có thể được tải thông qua ảnh initrd và sau đó là phần còn lại trong pha 2 ở dạng các module. Trong trường hợp yêu cầu ảnh initrd, thì nó có thể được tạo ra bằng việc sử dụng tiện ích mkinitrd (xem man, hoặc chương về hội thảo), bên trong thư mục /boot.

5) Bước sau đây là để nói cho hệ thống những gì nhân cần để khởi động, mặc dù điều này phụ thuộc vào việc khởi động hệ thống Linux:

• Từ việc khởi động với lilo [Zan][Skoa], hoặc trong MBR (master boot record) hoặc từ một phân vùng của riêng nó, chúng ta cần bổ sung các dòng sau đây cho tệp cấu hình (trong /etc/lilo.conf):

image = /boot/vmlinuz-2.4.0

label = 2.4.0

trong đó image là nhân sẽ được khởi động, và label là tên lựa chọn sẽ xuất hiện trong khi khởi động. Có thể bổ sung những dòng này hoặc sửa đổi các dòng đó từ nhân cũ. Chúng ta khuyến cáo bổ sung chúng và để lại nhân cũ, trong bất kỳ trường hợp nào xảy ra, sao cho nhân cũ có thể được phục hồi. Trong tệp /etc/lilo.conf có thể có một hoặc nhiều cấu hình khởi động, cho các hệ thống Linux hoặc các hệ thống khác (như Windows).

Mỗi sự khởi động được xác định với dòng ảnh của nó và nhãn xuất hiện trong thực đơn khởi động.

Có một dòng default - label (mặc định – nhãn) chỉ ra nhãn được khởi động một cách mặc định. Chúng ta cũng có thể bổ sung root = /dev/... tới các dòng ở trên để chỉ ra phân vùng đĩa nơi hệ thống tệp chính

Trang 136/471

Page 137: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

được đặt ('/'), nhớ là các đĩa có những thiết bị như là /dev/hda (đĩa IDE đầu tiên) /dev/hdb (đĩa IDE thứ 2) hoặc /dev/sdx cho các đĩa SCSI (hoặc được mô phỏng), và phân vùng này có thể được chỉ ra như là root = /dev/hda2 nếu '/' của Linux của chúng ta là trên phân vùng thứ 2 của đĩa IDE đầu tiên. Bằng việc sử dụng “append =” chúng ta cũng có thể bổ sung các thông số cho khởi động nhân [Gor]. Nếu hệ thống sử dụng initrd, chúng ta cũng sẽ phải chỉ định tệp nào (cũng sẽ nằm trong /boot/initrd-versionkernel), với lựa chọn “initrd=”. Sau việc thay đổi cấu hình của lilo, cần viết nó để nó khởi động:

/sbin/lilo -v

Chúng ta khởi động lại và đây là khởi động với nhân mới.

Nếu có vấn đề, chúng ta có thể phục hồi lại nhân cũ, bằng việc chọn lựa chọn của nhân cũ, và sau đó, sửa lại lilo.conf, chúng ta có thể quay về cấu hình cũ hoặc nghiên cứu vấn đề lỗi và cấu hình lại và biên dịch lại nhân.

• Khởi động với grub [Kan01][Pro]. Trong trường hợp này, việc điều khiển là đơn giản, chúng ta cần bổ sung một cấu hình mới có xem xét tới nhân mới và bổ sung nó vào như một lựa chọn khác tới tệp grub. Sau đó, khởi động lại theo cách tương tự như với lilo, nhưng nhớ là trong grub cũng đủ để sửa tệp này (điển hình /boot/grub/menu.lst) và khởi động lại. Cũng tốt hơn hãy để cấu hình cũ lại để phục hồi nếu gặp lỗi.

4.3.2. Chuyển đổi sang nhân 2.6.x

Trong trường hợp phải cập nhật các phiên bản của các phát tán cũ, hoặc thay đổi việc tạo ra nhân có sử dụng mã nguồn, thì chúng ta sẽ phải nắm lấy một số khía cạnh để xem xét, vì những thứ mới được giới thiệu trong nhánh nhân 2.6.x.

Ở đây là một danh sách một số điểm đặc biệt phải xem xét:

• Một số module của nhân đã thay đổi tên của chúng, và một số có thể đã biến mất, nên chúng ta cần kiểm tra tình trạng của các module động mà chúng được tải (ví dụ, hãy kiểm tra /etc/modules và/hoặc /etc/modules.conf) và sửa chúng để phản ánh những thay đổi này.

• Những lựa chọn mới đã được bổ sung cho cấu hình ban đầu của nhân: như make gconfig, một cấu hình dựa trên gtk (GNOME). Trong trường hợp này, như một điều kiện tiên quyết, chúng ta sẽ cần nhìn vào các thư viện của GNOME. Lựa chọn make xconfig bây giờ đã được triển khai với các thư viện Qt (KDE).

• Các phiên bản được yêu cầu tối thiểu của một loạt các tiện ích cần thiết cho qui trình biên dịch được nhanh (tham vấn Documentation/Changes trong các nguồn về nhân). Đặc biệt, phiên bản của trình biên dịch gcc tối thiểu.

• Gói mặc định cho các tiện ích của các module đã thay đổi, trở thành các công cụ theo đơn vị module (thay vì các tiện ích module [modutils] được sử dụng trong 2.4.x). Gói này là một điều kiện tiên quyết để biên dịch các nhân 2.6.x, vì trình tải các module dựa trên phiên bản mới này.

• Hệ thống devfs trở nên lạc hậu không dùng được nữa có lợi cho udev, hệ thống kiểm soát sự khởi động hotplug (kết nối) của các thiết bị (và sự nhận biết ban đầu của chúng, trong thực tế

Trang 137/471

Page 138: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

xúc tác cho một sự khởi động hotplug khi hệ thống được khởi động), một cách động tạo ra những đầu vào trong thư mục /dev, chỉ đối với các thiết bị thực sự hiện diện.

• Trong Debian vì những phiên bản nhất định nào đó của nhánh 2.6.x, đối với các ảnh nhị phân của các nhân, các tiêu đề và mã nguồn, tên của các gói thay đổi từ kernel-images/source/headers sang linux-image/source/headers.

• Trong một số trường hợp, các thiết bị công nghệ mới (như SATA) có thể đã chuyển từ /dev/hdX sang /dev/sdX. Trong các trường hợp này, chúng ta sẽ phải soạn sửa các cấu hình của /etc/fstab và trình khởi động bootloader (lilo hoặc grub) để phản ánh những thay đổi.

• Có thể sẽ có một số vấn đề với các thiết bị vào/ra cụ thể nào đó. Thay đổi trong tên của các module của nhân đã ảnh hưởng (trong số những thứ khác) tới các thiết bị chuột, có thể ảnh hưởng tới việc chạy X-Window, cho tới khi các mô hình theo yêu cầu được kiểm tra và các module đúng được tải lên (ví dụ psmouse). Cùng lúc, nhân tích hợp các trình điều khiển âm thanh Alsa. Nếu có các phần mềm nguồn mở cũ, thì chúng ta sẽ phải hạn chế chúng từ việc tải lên các module, vì Alsa đã theo dõi việc mô phỏng chúng.

• Về các kiến trúc mà nhân hỗ trợ, cần nhớ trong đầu rằng nhân 2.6.x, trong các bản rà soát lại khác nhau của nó, đã gia tăng các kiến trúc được hỗ trợ, sẽ cho phép có các ảnh nhị phân của nhân trong các phát tán (hoặc những lựa chọn để biên dịch nhân) phù hợp tốt nhất để hỗ trợ các vi xử lý của chúng ta. Đặc biệt, có thể thấy các kiến trúc như i386 (cho Intel và AMD): hỗ trợ tính tương thích của Intel trong 32 bit cho toàn bộ họ các vi xử lý (một số phát tán sử dụng 486 như là kiến trúc chung), một số phát tán tích hợp các phiên bản khác biệt cho i686 (Intel từ pentium pro), cho K7 (AMD Athlon), và những thứ đặc biệt cho 64 bit, cho AMD 64 bit, và Intel với các mở rộng em64t của 64 bit như Xeon, và đa nhân. Cùng lúc, cũng có kiến trúc IA64 cho các mẫu 64 bit Intel Itanium. Trong hầu hết các trường hợp, các kiến trúc có các khả năng SMP được kích hoạt trong ảnh nhân (trừ phi phát tán hỗ trợ các phiên bản có và không có SMP, được tạo ra một cách độc lập, trong trường hợp này, hậu tố – smp thường được bổ sung cho ảnh có hỗ trợ nó).

• Trong Debian, để tạo ra các ảnh initrd, như của các phiên bản nhất định nào đó của nhân (>=2.6.12) thì các công cụ mkinitrd được coi là lỗi thời, và được đặt với các tiện ích như các công cụ initrams hoặc yaird. Cả 2 chúng đều cho phép ảnh initrd sẽ được xây dựng, nhưng cái trước được khuyến cáo (theo Debian).

4.3.3. Biên dịch các phiên bản nhân 2.6.x

Trong các phiên bản 2.6.x, nhớ trong đầu những xem xét được nhắc ở trên, sự biên dịch được thực hiện theo một cách tương tự như cách được mô tả ở trên:

Sau khi tải về nhân 2.6.x (với x là số hoặc cặp số của sự rà soát lại nhân) vào thư mục sẽ được sử dụng để biên dịch và kiểm tra các phiên bản được yêu cầu của các tiện ích cơ bản, chúng ta có thể tiến tới bước biên dịch và xóa bỏ các biên dịch trước đó:

# make clean mrproper

Trang 138/471

Page 139: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cấu hình các thông số (nhớ là nếu có một .config trước đó, thì chúng ta sẽ không có khả năng để bắt đầu cấu hình từ 0). Thực hiện cấu hình thông qua lựa chọn được chọn là make (phụ thuộc vào giao diện chúng ta sử dụng):

# make menuconfig

xây dựng ảnh nhị phân của nhân

# make dep

# make bzImage

xây dựng các module (những module được chỉ định như):

# make modules

cài đặt các module được tạo ra (/lib/modules/version)

# make modules_install

sao chép ảnh tới vị trí cuối cùng của nó (giả thiết kiến trúc là i386):

# cp arch/i386/boot/bzimage /boot/vmlinuz-2.6.x.img

và cuối cùng, tạo ảnh initrd mà chúng ta xem là cần thiết, với những tiện ích cần thiết theo phiên bản này (xem bình luận sau đó). Và chỉnh trình tải khởi động bootloader lilo hoặc grub tùy vào việc chúng ta sử dụng cái nào.

Các bước cuối cùng (vmlinuz, system.map và initrd) của việc chuyển các tệp tới /boot có thể thường cũng được thực hiện với qui trình:

# make install

nhưng chúng ta cần tính tới rằng nó tiến hành toàn bộ qui trình và sẽ cập nhật các trình tải khởi động, loại bỏ hoặc chỉnh sửa các cấu hình cũ; cùng lúc, có thể chỉnh sửa các liên kết mặc định trong thư mục /boot. Cần nhớ điều này khi nghĩ về các cấu hình trước đó chúng ta muốn lưu giữ lại.

Về việc tạo ra initrd, trong Fedora/Red Hat nó sẽ được tạo ra một cách tự động với lựa chọn install. Trong Debian hoặc nên sử dụng các kỹ thuật của phần sau hoặc tạo nó bằng việc sử dụng mkinitrd (các phiên bản <=2.6.12) hoặc, sau này, với mkinitramfs, hoặc một tiện ích được biết như là updateinitramfs, chuyên cho phiên bản của nhân (giả thiết rằng nó được gọi là phiên bản vmlinuz [vmlinuz-version] bên trong thư mục /boot):

# update -initramfs -c -k 'version'

4.3.4. Biên dịch nhân trong Debian (cách của Debian)

Trong Debian, bổ sung thêm vào cho các phương pháp được xem xét, chúng ta cần bổ sung cấu hình bằng việc sử dụng phương pháp được biết tới như là Cách của Debian (Debian Way). Một phương pháp cho phép xây dựng nhân nhanh chóng và mềm dẻo.

Đối với qui trình này, chúng ta sẽ cần vài tiện ích (cài đặt các gói hoặc tương tự): kernel-package,

Trang 139/471

Page 140: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

ncurrses-dev, fakeroot, wget, bzip2.

Có thể thấy phương pháp này từ 2 viễn cảnh, đóng bó lại một nhân tương đương cho một nhân được phát tán cung cấp hoặc sửa đối nó và sau đó sử dụng phương pháp này cho việc xây dựng một nhân tương đương được cá nhân hóa.

Trong trường hợp đầu, chúng ta ban đầu có phiên bản của các nguồn của nhân được phát tán cung cấp (nghĩa là x rà xét lại của nhân 2.6):

# apt -get install linux-source-2.6.x

$ tar -xvjf /usr/src/linux-source-2.6.x.tar.bz2

nơi chúng ta có được các nguồn và giải nén chúng (gói để lại tệp này trong /usr/src).

Cài đặt các công cụ cơ bản:

# apt-get install build-essential fakeroot

Kiểm tra những phụ thuộc các nguồn

# apt-get build-dep linux-source-2.6.x

Và xây dựng nhị phân, theo cấu hình gói được thiết lập từ trước (tương tự như với những thứ được đưa vào trong các gói ảnh chính thức của nhân trong Debian):

$ cd linux-source-2.6.x

$ fakeroot debian/rules binary

Có một số thủ tục bổ sung để tạo các nhân dựa trên các mức bản vá khác nhau được phát tán cung cấp và những khả năng để tạo ra các cấu hình khác nhau cuối cùng (xem lưu ý tham chiếu tới bình luận các khía cạnh này).

Thứ 2 là, trường hợp chung hơn, khi mong muốn một nhân được cá nhân hóa, chúng ta sẽ phải tuân theo một qui trình tương tự thông qua bước chỉnh sửa điển hình (ví dụ, sử dụng make menuconfig); các bước có thể như sau:

có được và chuẩn bị thư mục (ở đây có các gói của phát tán, nhưng nó tương đương với việc có được các nguồn từ kernel.org):

# apt-get install linux-source-2.6.x

$ tar xjf /usr/src/linux-source-2.6.x.tar.bz2

$ cd linux-source-2.6.x

tiếp đến, cấu hình các thông số, như mọi khi, tự chúng ta có thể dựa vào các tệp .config đã sử dụng trước đó, để bắt đầu từ một cấu hình được biết (cho việc sửa đổi mà chúng ta cũng có thể sử dụng bất kỳ các phương pháp nào khác, xconfig, gconfig …):

$ make menuconfig

Trang 140/471

Lưu ý

Chúng ta có thể thấy qui trình theo cách của Debian một cách chi tiết tại: http://kernel-handbook.alioth.debin.org/

Page 141: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

việc xây dựng cuối cùng của nhân phụ thuộc hoặc không phụ thuộc vào initrd, không có initrd có sẵn (chúng ta cần thận trọng với phiên bản chúng ta sử dụng; vì đối với một phiên bản nhất định nào đó của nhân, việc sử dụng ảnh initrd có thể là bắt buộc):

$ make -kpkg clean

$ fakeroot make-kpkg - - revision = custom.1.0 kernel_image

hoặc nếu chúng ta có initrd có sẵn (đã được xây dựng)

$ make -kpkg clean

$ f akeroot make-kpkg - - initrd - - revision = custom.1.0 kernel_image

qui trình này sẽ kết thúc với việc bổ sung gói có liên quan tới ảnh nhân, chúng ta cuối cùng sẽ có khả năng cài đặt được:

# dpkg -i ../linux-image-2.6.x_custom.1.0_i386.deb

Trong phần này, chúng ta cũng sẽ bổ sung tính dị biệt khác sẽ được tính tới trong Debian, là sự tồn tại của các tiện ích để bổ sung các module nhân động được các bên thứ 3 cung cấp. Đặc biệt, tiện ích module-assistant giúp tự động hóa qui trình này trên cơ sở của các nguồn mudule.

Cần phải cài đặt các tiêu đề của nhân (phiên bản tiêu đề Linux đóng gói) hoặc các nguồn chúng ta sử dụng để biên dịch nhân. Như ở đây, module-assistant có thể được sử dụng một cách tương tác, cho phép chúng ta chọn từ một danh sách mở rộng các module được đăng ký trước đó trong ứng dụng, và nó có thể có trách nhiệm cho việc tải về module này, biên dịch nó và cài đặt nó trong nhân đang tồn tại.

Cũng từ dòng lệnh, chúng ta có thể đơn giản chỉ định (m-a là tương đương với module-assistant):

# m-a prepare

# m-a auto-install module_name

Trang 141/471

Page 142: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.4. Vá nhân

Trong một số trường hợp ứng dụng của các bản vá cho nhân [lkm] cũng phổ biến.

Một tệp vá trong quan hệ với nhân Linux là một tệp văn bản ASCII chứa những khác biệt giữa mã nguồn của gốc ban đầu và mã mới, với những thông tin bổ sung về các tên tệp và các dòng mã lệnh. Chương trình vá (xem man patch) để áp dụng cho cây mã nguồn của nhân (thường là trong /usr/src).

Các bản vá thường là cần thiết khi phần cứng cụ thể nào đó đòi hỏi một số sửa đổi của nhân hoặc một số lỗi phải được dò tìm ra sau một sự phân phối rộng rãi một phiên bản nhân hoặc một tính năng mới cụ thể nào đó được bổ sung vào. Để sửa lỗi cho đúng (hoặc bổ sung tính năng mới), thường sẽ phân phối một bản vá thay vì toàn bộ nhân mới. Khi đã có một số bản vá, chúng sẽ được bổ sung vào một loạt những cải tiến của nhân trước đó để hình thành một phiên bản mới của nhân. Trong tất cả các sự kiện, nếu phần cứng có lỗi hoặc các lỗi ảnh hưởng tới hoạt động hoặc tính ổn định của hệ thống và chúng ta không thể chờ đợi phiên bản tiếp sau của nhân, thì chúng ta sẽ phải áp dụng bản vá.

Bản vá thường được phân phối trong một tệp được nén ở dạng bz2 (bunzip2, mặc dù bạn cũng có thể thấy nó trong gzip với mở rộng .gz), như trong trường hợp của ví dụ sau:

patchxxxx-2.6.21-pversion.bz2

nơi mà xxxx thường là bất kỳ thông điệp nào về dạng hoặc mục đích của bản vá, còn 2.6.21 có thể là phiên bản nhân mà bản vá đó được áp dụng, và pversion có thể tham chiếu tới phiên bản của bản vá, cũng có thể có một vài phiên bản như vậy. Cần nhớ trong đầu rằng chúng ta đang nói về việc áp dụng các bản vá cho các nguồn của nhân (thường được cài đặt, như chúng ta đã thấy, trong /usr/src/linux hoặc một thư mục tương tự).

Một khi có bản vá, chúng ta phải áp dụng nó, chúng ta sẽ thấy qui trình tuân thủ trong bất kỳ tệp readme (đọc tôi) nào đi theo bản vá, nhưng thường thì qui trình tuân theo các bước (một khi những yêu cầu trước đó được kiểm tra) của việc giải nén bản vá trong thư mục các tệp nguồn và áp dụng nó qua các nguồn của nhân, ví dụ:

cd /usr/src/linux (ho �c /usr/src/linux-2.6.21 ho �c b �t k � phiên b �n nào khác).

bunzip2 patch-xxxxx-2.6.21-version.bz2

patch -pl < patch-xxxxx-2.6.21-version

và sau đó chúng ta sẽ phải biên dịch lại nhân để tạo ra nó một lần nữa.

Các bản và có thể có được từ các nơi khác nhau. Thông thường, có thể thấy chúng trên site lưu kho của nhân (www.kernel.org) hoặc trên www.linuxhq.com, có một bản ghi đầy đủ của chúng. Một số cộng đồng Linux (hoặc những người sử dụng riêng lẻ) cũng đưa ra những sửa lỗi cho đúng, nhưng là tốt hơn để tìm kiếm các site chuẩn để đảm bảo rằng các bản vá sẽ đáng tin cậy và tránh được những vấn đề về an ninh có thể với các bản vá “ăn cướp” (pirate). Cách khác là các nhà sản xuất phần cứng có thể đưa ra

Trang 142/471

Page 143: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

những sửa đổi nhất định nào đó cho nhân (hoặc các trình điều khiển) để các thiết bị của họ làm việc được tốt hơn (một ví dụ nổi tiếng là Linux NVIDIA và các trình điều khiển thiết bị cho các card đồ họa của hãng).

Cuối cùng, chúng ta nên chỉ ra rằng nhiều phát tán GNU/Linux (Fedora/Red Hat, Mandriva...), đã đưa ra các nhân được bản thân họ vá và các hệ thống để cập nhật chúng (một số còn là tự động hóa, như trong trường hợp của Fedora/Red Hat và Debian). Thông thường, trong các hệ thống sản xuất sẽ được khuyến cáo hãy theo kịp các bản cập nhật của nhà sản xuất, và không nhất thiết phải sử dụng nhân mới nhất được xuất bản, mà là một nhân ổn định nhất đối với phát tán đó, với tổn phí về việc bỏ qua những tính năng của thế hệ mới nhất hoặc những đổi mới sáng tạo công nghệ mới nhất được đưa vào trong nhân Linux.

Trang 143/471

Lưu ý

Đối với các hệ thống chúng ta muốn cập nhật, vì những lý do thử nghiệm hoặc vì chúng ta cần những tính năng mới nhất, chúng ta luôn có thể đi tới www.kernel.org và lấy nhân được xuất bản mới nhất.

Page 144: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.5. Các module của nhân

Nhân có khả năng tải các phần động của mã nguồn (các module) theo yêu cầu [Hen], để bổ sung chức năng của nó (khả năng này là sẵn sàng từ phiên bản nhân 1.2 và cao hơn). Ví dụ, các module có thể bổ sung sự hỗ trợ cho một hệ thống tệp hoặc cho các thiết bị phần cứng đặc biệt. Khi chức năng do module cung cấp là không còn cần thiết nữa, thì module đó có thể được tải về, giải phóng bộ nhớ.

Theo yêu cầu, nhân thường xác định một đặc tính không tồn tại trong nhân vào thời điểm mà nó liên hệ với một luồng của nhân được biết như là kmod (trong nhân các phiên bản 2.0.x thì daemon đó đã được gọi là kerneld), thứ này chạy một lệnh, modprobe, để cố tải lên module có liên quan từ hoặc của một chuỗi với tên của module hoặc từ một trình nhận dạng chung; thông tin này sẽ có trong tệp /etc/modules.conf ở dạng của một bí danh (alias) giữa tên và trình nhận dạng.

Tiếp sau, chúng ta tìm trong /lib/modules/version_kernel/modules.dep

để tìm ra liệu có những phụ thuộc vào các module khác hay không. Cuối cùng, với lệnh insmod thì module được tải từ /lib/modules/version_kernel/ (thư mục chuẩn cho các module), version_kernel là phiên bản hiện hành của nhân có sử dụng lệnh uname -r để thiết lập. Vì thế, các module ở dạng nhị phân sẽ có liên quan tới một phiên bản đặc biệt của nhân, và thường nằm trong /lib/modules/version-kernel.

Nếu cần biên dịch chúng, thì chúng ta sẽ cần phải có các nguồn và/hoặc các tiêu đề của phiên bản lõi được thiết kế cho chính lõi đó.

Có một số tiện ích cho phép làm việc với các module (chúng thường xuất hiện trong một gói phần mềm gọi là modutils, đã được thay thế bằng module -init-tools để quản lý các module của nhánh 2.6.x):

• lsmod: chúng ta có thể thấy các module được tải lên trong nhân (thông tin có được từ pseudofile/proc/modules). Nó liệt kê các tên và những phụ thuộc với những thứ khác (trong []), kích thước của module trong bytes, và module sử dụng bộ đếm; điều này cho phép nó sẽ được tải về nếu số đếm là 0.

• modprobe: số lần thử tải của một module và những phụ thuộc của nó.

• insmod: tải một module cụ thể nào đó.

• depmod: phân tích những phụ thuộc giữa các module và tạo ra một tệp các phụ thuộc.

• rmmod: loại bỏ một module khỏi nhân.

Ví dụ

Một số module trong một phát tán Debian:

Trang 144/471

Lưu ý

Các module đưa ra cho hệ thống một mức độ mềm dẻo rộng lớn, cho phép áp dụng cho những tình huống động.

Page 145: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Module Kích thước Được sử dụng bởi Tainted: P

agpgart 37.344 3 (autoclean)

apm 10.024 1 (autoclean)

parport_pc 23.304 1 (autoclean)

1p 6.816 0 (autoclean)

parport 25.992 1 (parport_pc 1p)

snd 30.884 0

af_packet 13.448 1 (autoclean)

NVIDIA 1.539.872 10

es1371 27.116 1

soundcore 3.972 4 [and es1371]

ac97_codec 10.9640 0 [es1371]

gameport 1.676 0 [es1371]

3c59x 26.960 1

• Các lệnh khác có thể được sử dụng cho việc gỡ rối hoặc phân tích các module, như modinfo, liệt kê một số thông tin có liên quan tới module hoặc ksyms, mà (chỉ trong các phiên bản 2.4.x) cho phép xem xét các biểu tượng được các module xuất (cũng trong /proc/ksyms).

Để tải module lên thì tên của module thường sẽ được chỉ định, hoặc bởi bản thân nhân hoặc bằng tay bởi người sử dụng có sử dụng insmod và các thông số đặc biệt một cách tùy ý. Ví dụ, trong trường hợp của các thiết bị, thường phải chỉ định các địa chỉ của các cổng I/O hoặc các tài nguyên IRQ hoặc DMA. Ví dụ:

insmod soundx io = 0x320 irq = 5

Trang 145/471

Page 146: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.6. Tương lai của nhân và những lựa chọn

Ở một số thời điểm nhất định, những cải tiến trong nhân Linux được tung ra trong những khoảng thời gian rất ngắn, nhưng bây giờ với một hiện trạng khá ổn định của các nhân của loạt 2.6.x, thì ngày càng mất nhiều thời gian hơn trôi qua giữa các phiên bản nhân, mà theo một số cách thức là rất tích cực. Nó cho phép thời gian để sửa các lỗi, tìm những ý tưởng còn chưa làm việc được tốt, và cố gắng thử những ý tưởng mới, mà, nếu chúng làm việc được, thì sẽ được đưa vào.

Trong phần này, chúng ta sẽ thảo luận một số ý tưởng của các nhân mới nhất và một số nhân được lên kế hoạch cho tương lai gần trong sự phát triển của nhân.

Loạt trước, loạt 2.4.x [Dbo], đã đưa vào trong hầu hết các phát tán hiện hành, những đóng góp đã được làm để:

• Thỏa mãn các chuẩn IEEE POSIX, điều này có nghĩa là nhiều chương trình UNIX hiện đang tồn tại có thể được biên dịch lại và chạy trong Linux.

• Hỗ trợ các thiết bị được cải tiến: PnP, USB, cổng song song, SCSI...

• Hỗ trợ cho các hệ thống tệp mới, như UDF (CD-ROM có thể ghi được như một đĩa). Các hệ thống khác, như Reisser từ IBM hoặc ext3, chúng cho phép có một tạp chí (journal) những sửa đổi hệ thống tệp và vì thế chúng có khả năng phục hồi lại từ những lỗi hoặc điều khiển các tệp không đúng.

• Hỗ trợ bộ nhớ tới 4GB, từng có một số vấn đề đã nảy sinh (với các nhân 1.2x), có khả năng không hỗ trợ bộ nhớ lớn hơn 128MB (vào lúc đó nó từng được cho là nhiều bộ nhớ).

• Giao diện /proc đã được cải tiến. Đây là một hệ thống tệp không thật (thư mục /proc), không thực sự tồn tại trên đĩa, nhưng đơn giản là một cách chỉ định các dữ liệu của nhân và của phần cứng theo một cách có tổ chức.

• Hỗ trợ âm thanh trong nhân: các trình kiểm soát Alsa, đã được cấu hình một cách riêng rẽ từ trước, một phần đã được bổ sung vào.

• Hỗ trợ sơ bộ cho phần mềm RAID và trình điểu khiển lượng động LVM1 đã được đưa vào.

Trong loạt hiện hành, nhánh của nhân 2.6.x [Pra] đã tiến hành những cải tiến quan trọng so với trước đó (với những rà soát lại khác nhau của .x của nhánh 2.6):

• Các tính năng SMP được cải tiến, quan trọng cho các vi xử lý đa nhân được sử dụng một cách rộng rãi trong các môi trường doanh nghiệp và khoa học.

• Những cải tiến trong bộ đặt lịch của CPU.

• Những cải tiến trong hỗ trợ đa luồng cho các ứng dụng của người sử dụng. Những mô hình luồng mới NGPT (IBM) và NPTL (Red Hat) được kết hợp (qua thời gian NPTL cuối cùng đã được tăng cường).

Trang 146/471

Lưu ý

Nhân tiếp tục tiến hóa, kết hợp thứ mới nhất trong sự hỗ trợ phần cứng và các tính năng được cải tiến.

Page 147: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Hỗ trợ cho USB 2.0.

• Các trình kiểm soát âm thanh Alsa được kết hợp vào trong nhân.

• Các kiến trúc mới cho 64 bit CPU, hỗ trợ AMD x86_64 (cũng được biết như với amd64) và PowerPC 64 và IA64 (kiến trúc Itanium của Intel).

• Hỗ trợ cho các hệ thống tệp lưu ký: JFS, JFS2 (IBM), và XFS (Silicon Graphics).

• Các tính năng I/O được cải thiện, và các mô hình mới của các trình kiểm soát được thống nhất.

• Những cải tiến trong việc triển khai TCP/IP, và hệ thống NFSv4 (chia sẻ của hệ thống tệp với các hệ thống khác thông qua mạng).

• Những cải tiến đáng kể cho một nhân có chất lượng tốt nhất: cho phép nhân quản lý nội bộ một loạt nhiệm vụ theo cách tách biệt từng nhiệm vụ một, cơ bản cho triển khai cài đặt có hiệu quả các hệ thống thời gian thực.

• Ngưng và phục hồi hệ thống sau khi khởi động lại (bởi nhân).

• UML, Linux ở chế độ của người sử dụng, một dạng máy ảo Linux trên Linux cho phép xem một Linux (ở chế độ của người sử dụng) chạy trên một máy ảo. Đây là ý tưởng cho việc gỡ rối bây giờ mà một phiên bản của Linux có thể được phát triển và thử nghiệm trên hệ thống khác, nó là hữu dụng cho sự phát triển của bản thân nhân và cho việc phân tích an ninh của nó.

• Các công nghệ ảo hóa được đưa vào nhân: những phát tán dần dần tích hợp các kỹ thuật ảo hóa khác nhau, đòi hỏi những mở rộng đối với nhân; chúng ta nên nhấn mạnh, ví dụ, các nhân được sửa đổi cho Xen, hoặc máy chủ ảo (Vserver).

• Phiên bản mới hỗ trợ LVM2.

• Hệ thống tệp bí danh (pseudo) mới /sys, được thiết kế để đưa vào thông tin hệ thống và các thiết bị sẽ được chuyển đổi từ hệ thống /proc, để cái sau lại với thông tin về các tiến trình và sự phát triển của chúng trong thời gian vận hành.

• Module FUSE cho việc triển khai các hệ thống tệp trong không gian của người sử dụng (trên tất cả trường hợp NTFS).

Trong tương lai, cải tiến của những khía cạnh sau được lên kế hoạch:

• Gia tăng công nghệ ảo hóa trong nhân, cho việc hỗ trợ những cấu hình hệ điều hành khác nhau và các công nghệ ảo hóa khác nhau, bổ sung thêm cho sự hỗ trợ phần cứng tốt hơn cho ảo hóa, bao gồm trong các vi xử lý đang nổi lên với các kiến trúc mới.

• Hỗ trợ SMP (các máy nhiều vi xử lý) của các CPU 64bit (Itanium của Intel, Opteron của AMD), hỗ trợ các CPU đa nhân.

• Các hệ thống tệp được cải tiến cho các hệ thống bó (clustering) và phân tán.

• Cải tiến cho các nhân được tối ưu hóa cho các thiết bị di động (PDA, các điện thoại...).

• Đáp ứng được cải tiến của chuẩn POSIX ...

Trang 147/471

Page 148: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Việc đặt lịch của CPU được cải tiến: mặc dù trong loạt ban đầu của nhánh 2.6.x nhiều cải tiến đã được thực hiện ở khía cạnh này, vẫn còn có hiệu năng thấp trong một số tình huống, đặc biệt trong việc sử dụng các ứng dụng môi trường đồ họa tương tác, các lựa chọn thay thế khác nhau đang được nghiên cứu để cải thiện điều này và những khía cạnh khác.

Hơn nữa, mặc dù tách biệt với các hệ thống Linux, thì Quỹ Phần mềm Tự do FSF và dự án GNU vẫn tiếp tục làm việc trong dự án này để hoàn tất một hệ điều hành hoàn chỉnh. Điều quan trọng để ghi nhớ là mục tiêu chính của dự án GNU là để có được một sự bắt chước như UNIX là phần mềm tự do và các tiện ích của GNU chính là những phần mềm cần thiết cho hệ thống này. Trong năm 1991, khi Linux đã kết hợp nhân của mình với một số tiện ích của GNU, bước đầu tiên đã được thực hiện hướng tới điểm cao nhất trong các hệ thống GNU/Linux ngày nay. Nhưng dự án GNU tiếp tục làm việc theo ý tưởng của mình để hoàn tất hệ thống một cách hoàn chỉnh. Ngay bây giờ, họ đã có một lõi có khả năng chạy được các tiện ích GNU của mình. Lõi này được biết đến như là Hurd; và một hệ thống được xây dựng với nó được biết là GNU/Hurd. Đã có một số phát tán thử nghiệm, đặc biệt, một Debian GNU/Hurd.

Hurd đã được thiết kế như một lõi cho hệ thống GNU khoảng năm 1990 khi sự phát triển của nó đã bắt đầu, vì hầu hết các phần mềm GNU đã được phát triển vào lúc đó, và thứ duy nhất còn thiếu là nhân. Vào năm 1991 khi Linus đã kết hợp GNU với nhân Linux của ông thì lịch sử của hệ điều hành GNU/Linux đã bắt đầu. Nhưng Hurd tiếp tục được phát triển. Những ý tưởng phát triển cho Hurd là phức tạp hơn, vì Linux có thể được xem là một thiết kế bảo thủ, dựa trên những ý tưởng đã được biết và được triển khai rồi.

Đặc biệt, Hurd đã được thừa nhận như một bộ sưu tập các dịch vụ được triển khai trong một vi nhân (microkernel) Mach [Vah96], là một thiết kế nhân dạng vi nhân (không giống Linux, là dạng liền khối - monolithic) được Đại học Carnegie Mellon và sau này là đại học Utah phát triển. Ý tưởng cơ bản là mô hình các chức năng của nhân UNIX như các máy chủ có khả năng được triển khai trên một nền tảng nhân của Mach. Sự phát triển của Hurd đã bị chậm trong khi việc thiết kế của Mach đã đang được hoàn thiện và nó cuối cùng đã được xuất bản như là phần mềm tự do, có thể cho phép sử dụng nó để phát triển Hurd. Tại thời điểm này, chúng ta nên nhắc tới tầm quan trọng của Mach, vì nhiều hệ điều hành bây giờ là dựa trên những ý tưởng được trích xuất ra từ nó; ví dụ nổi tiếng nhất là MacOS X của Apple.

Sự phát triển của Hurd đã bị trễ nhiều hơn vì tính phức tạp nội bộ của nó, vì nó đã có vài máy chủ với các nhiệm vụ khác nhau dạng đa luồng (chạy đa luồng), và việc gỡ rối đặc biệt là khó. Nhưng ngày nay, các phiên bản sản xuất đầu tiên của GNU/Hurd đã sẵn sàng, cũng như những phiên bản thử nghiệm của một phát tán GNU/Hurd.

Có thể là trong tương lai không quá xa các hệ thống GNU/Linux sẽ cùng tồn tại với GNU/Hurd, hoặc ngay cả việc nhân Linux sẽ được thay thế bằng nhân Hurd, nếu một số vụ kiện chống lại Linux gia tăng (đọc vụ kiện của SCO chống lại IBM), khi mà nó có thể đại diện cho một giải pháp cho việc tránh những vấn đề sau này. Trong tất cả mọi trường hợp, cả 2 hệ thống này có một tương lai hứa hẹn ở phía trước chúng. Thời gian sẽ trả lời cán cân sẽ nghiêng về đâu.

Trang 148/471

Website

Dự án GNU: http://www.gnu.org/gnu/thegnuproject.html

Website

Các đặc tả kỹ thuật của POSIX www.UNIX-systems.org/

Tham khảo

GNU và Linux, của Richard Stallman: http://www.gnu.org/gnu/linux-and-gnu.html

Page 149: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4.7. Sách chỉ dẫn: Việc cấu hình nhân cho những yêu cầu của người sử dụng

Trong phần này chúng ta sẽ có một cái nhìn vào một xưởng tương tác nhỏ cho qui trình cập nhật và thiết lập cấu hình cho nhân trong 2 phát tán được sử dụng: Debian và Fedora.

Thứ cơ bản nhất đầu tiên, trước khi bắt đầu, là phải biết phiên bản hiện hành của nhân mà chúng ta có với uname -r, để xác định cái nào là phiên bản tiếp sau mà chúng ta muốn cập nhật hoặc cá nhân hóa. Và cái khác là để có các phương tiện khởi động hệ thống trong trường hợp có lỗi: tập hợp các đĩa CD cài đặt, các đĩa mềm (hoặc CD) cho việc phục hồi (hiện hành đĩa CD đầu của phát tán thường được sử dụng) hoặc một số phát tán Live CD cho phép chúng ta truy cập hệ thống tệp của máy, để làm lại bất kỳ cấu hình nào có thể đã gây ra những vấn đề. Việc sao lưu các dữ liệu hoặc các cấu hình quan trọng cũng là cơ bản ở đây.

Chúng ta sẽ nhìn vào các khả năng sau đây:

1) Việc cập nhật nhân các phát tán. Trường hợp tự động của Debian.

2) Cập nhật tự động trong Fedora.

3) Việc cập nhật một nhân nói chung (Debian hoặc Fedora). Trong trường hợp sau, các bước về cơ bản là y như nhau như những bước được trình bày trong phần về cấu hình, nhưng chúng ta sẽ tiến hành một vài bình luận hơn nữa:

4.7.1. Thiết lập cấu hình cho nhân trong Debian

Trong trường hợp của phát tán Debian, việc cài đặt cũng có thể được thực hiện tự động, sử dụng hệ thống các gói APT. Nó có thể được thực hiện hoặc từ dòng lệnh hoặc với các trình quản trị đồ họa APT (synaptic, gnome-apt...).

Chúng ta sẽ triển khai cài đặt có sử dụng dòng lệnh với apt-get, giả thiết rằng sự truy cập tới các nguồn apt (trên tất cả các gốc của Debian) được cấu hình phù hợp trong tệp /etc/apt/sources.list. Hãy nhìn vào các bước sau:

1) Để cập nhật danh sách các gói.

# apt-get update

2) Để liệt kê các gói có liên quan với các ảnh của nhân:

# apt-cache search linux-image

3) Để chọn một phiên bản phù hợp cho kiến trúc của chúng ta (nói chung, 386/486/686 của Intel, K6 hoặc K7 của AMD hoặc đặc biệt cho các phiên bản 64bit của AMD64, Intel và AMD hoặc IA64, của Intel Itanium). Phiên bản này được phiên bản của nhân, sự rà soát lại của Debian đối với nhân và kiến trúc đi cùng. Ví dụ: 2.6.21-4-K7, nhân cho AMD Athlon, rà soát lại của Debian 4 của nhân 2.6.21.

Trang 149/471

Page 150: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4) Kiểm tra phiên bản được chọn rằng các module phụ trợ bổ sung là sẵn sàng (với cùng số phiên bản). Với apt-cache chúng ta sẽ tìm kiếm liệu có các module động khác có thể thú vị cho phần cứng của chúng ta hay không, phụ thuộc vào phiên bản của nhân sẽ được cài đặt. Hãy nhớ rằng, như chúng ta đã thấy theo cách của Debian, cũng có tiện ích hỗ trợ các module, cho phép chúng ta tự động hóa tiến trình này sau khi biên dịch nhân. Nếu các module cần thiết này không được hỗ trợ, thì điều này có thể ngăn cản chúng ta khởi việc cập nhật nhân nếu chúng ta coi việc vận hành của phần cứng có vấn đề lỗi là sống còn cho hệ thống.

5) Tìm kiếm, nếu chúng ta cũng muốn có mã nguồn của nhân, thì Linux-source-version (chỉ 2.6.21, nghĩa là, các số chính yếu) và các tiêu đề nhân tương ứng, trong trường hợp chúng ta sau này muốn tạo ra một nhân được cá nhân hóa: trong trường hợp này, nhân chung tương ứng được Debian vá.

6) Cài đặt những gì chúng ta đã quyết định: nếu chúng ta muốn biên dịch từ các nguồn hoặc đơn giản phải có mã nguồn:

# apt-get install linux-image-version

# apt-get install xxxx-modules-version (n �u m �t vài module là c �n thi �t)

# apt-get install linux-source-version-generic

# apt-get install linux-headers-version

7) Cài đặt nhân mới, ví dụ trong trình tải khởi động lilo (kiểm tra tiện ích khởi động được sử dụng, một số phiên bản gần đây của Debian sử dụng trình tải khởi động grubas), điều này được thực hiện một cách tự động. Nếu chúng ta được yêu cầu liệu initrd có là tích cực hay không, thì chúng ta sẽ phải kiểm tra tính hợp lệ của tệp lilo (/etc/lilo.conf) và, trong cấu hình ảnh mới của lilo, hãy đưa vào dòng mới:

initrd = /initrd.img-version (hoặc /boot/initrd.img-version)

một khi điều này được cấu hình, chúng ta có thể phải có một lilo dạng này (sự phân mảnh), hỗ trợ sao cho initrd.img và vmlinuz là những liên kết tới vị trí của các tệp của nhân mới:

Default = Linux

image = /vmlinuz

label = Linux

initrd = /initrd.img

# restricted

# alias = 1

image = /vmlinuz.old

label = LinuxOLD

initrd = /initrd.img.old

# restricted

Trang 150/471

Page 151: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

# alias = 2

Chúng ta mặc định có ảnh đầu tiên, ảnh khác là nhân cũ. Vì thế, từ thực đơn lilo chúng ta có thể yêu cầu cái này hoặc cái kia hoặc, đơn giản bằng việc thay đổi mặc định, chúng ta có thể phục hồi lại cái cũ. Bất kỳ khi nào chúng ta tiến hành bất kỳ thay đổi nào trong /etc/lilo.conf thì chúng ta không nên quên viết lại trong khu vực tương ứng với lệnh /sbin/lilo hoặc /sbin/lilo-v.

4.7.2. Cấu hình cho nhân trong Fedora/Red Hat

Việc cập nhật nhân trong phát tán Fedora/Red Hat là hoàn toàn tự động bằng những phương tiện của dịch vụ quản lý gói hoặc bằng các phương tiện của các chương trình đồ họa mà phát tán đưa vào cho việc cập nhật; ví dụ, trong các phiên bản doanh nghiệp của Red Hat có một thứ gọi là up2date. Thông thường, chúng ta sẽ thấy nó trong thanh tác vụ hoặc trong thực đơn các công cụ hệ thống của Fedora/Red Hat (kiểm tra các tiện ích sẵn có trong thực đơn /tools/Administration, các công cụ đồ họa sẵn sàng hiện hành là độc lập cao với phiên bản của phát tán.

Việc cập nhật chương trình này về cơ bản kiểm tra các gói của phát tán hiện hành đối với cơ sở dữ liệu Fedora/Red Hat và đưa ra khả năng cho việc tải về các gói được cập nhật, bao gồm cả việc đưa vào các gói của nhân. Dịch vụ này của Red Hat cho các doanh nghiệp được thực hiện thông qua một tài khoản dịch vụ và Red Hat chào nó với việc thanh toán tiền. Với dạng các tiện ích này thì nhân được cập nhật một cách tự động.

Ví dụ, trong hình 10, chúng ta có thể thấy rằng một khi đang chạy, một phiên bản mới đang sẵn sàng của nhân đã dược dò tìm ra, thì chúng ta có thể chọn được để tải về:

Hình 3. Dịch vụ cập nhật của Red Hat (Mạng Red Hat up2date) chỉ ra sự cập nhật sẵn sàng của nhân và các nguồn của nó.

Trong Fedora chúng ta có thể hoặc sử dụng các công cụ đồ họa tương đương hoặc đơn giản sử dụng yum một cách trực tiếp, nếu chúng ta biết các nhân mới là sẵn sàng:

# yum install kernel kernel – source

Trang 151/471

Page 152: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Một khi được tải về, chúng ta tiến hành để cài đặt nó, thường thì cũng như một tiến trình tự động, hoặc với grub hoặc lilo như các trình khởi động. Trong trường hợp của grub, thường là tự động và để lại một đôi các lựa chọn trong thực đơn, một cho phiên bản mới nhất và cái kia cho nhân cũ. Ví dụ, trong cấu hình grub này (tệp là trong /boot/grub.conf hoặc /boot/grub/menu.lst), chúng ta có 2 nhân khác nhau, với các số phiên bản tương ứng của chúng.

# file grub.conf

default = 1

timeout = 10

splashimage = (hd0, 1) /boot/grub/splash.xpm.gz

title Linux (2.6.20-2945)

root (hd0, 1)

kernel /boot/vmlinuz-2.6.20-2945 ro root = LABEL = /

initrd /boot/initrd-2.6.20-18.9.img

title LinuxOLD (2.6.20-2933)

root (hd0, 1)

kernel /boot/vmlinuz-2.4.20-2933 ro root = LABEL = /

initrd /boot/initrd-2.4.20-2933.img

Mỗi cấu hình đưa vào một tiêu đề xuất hiện trong lúc khởi động. root hoặc phân vùng của đĩa từ nơi nó khởi động, thư mục với tệp tương ứng với nhân sẽ được thấy và tương ứng với tệp initrd.

Trong trường hợp có lilo (mặc định grub được sử dụng) trong Fedora/Red Hat như người quản lý, thì hệ thống cũng sẽ cập nhật nó (tệp /etc/lilo.conf), nhưng sau đó chúng ta sẽ phải viết lại khởi động bằng tay với lệnh /sbin/lilo.

Cũng quan trọng để nhắc rằng với cài đặt trước chúng ta đã có khả năng tải về các nguồn của nhân; những thứ này, một khi được cập nhật, sẽ ở trong /usr/src/linux-version và có thể được biên dịch và cấu hình tuân theo thủ tục thông thường dường như nó đã là một nhân chung. Chúng ta nên nhớ rằng công ty Red Hat triển khai nhiều công việc trên các bản vá và sửa lỗi cho nhân (được sử dụng sau Fedora) và rằng các nhân của nó là những sửa đổi cho chuẩn chung với một số các bổ sung thêm, có nghĩa là có thể tốt hơn để sử dụng các nguồn riêng của Red Hat, trừ phi chúng ta muốn một nhân mới hơn hoặc thí điểm nhiều hơn so với nhân được cung cấp.

4.7.3. Cấu hình một nhân chung

Hãy xem trường hợp chung về việc cài đặt một nhân bắt đầu từ nguồn của nó. Giả thiết là chúng ta có một số nguồn đã được cài đặt trong /usr/src (hoặc tiền tố tương ứng). Thông thường, có thể có một thư mục Linux hoặc linux-version hoặc đơn giản là số phiên bản. Đây sẽ là cây các nguồn của nhân.

Trang 152/471

Page 153: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các nguồn này có thể tới từ bản thân phát tán (hoặc chúng ta có thể đã tải chúng về trong một cập nhật trước), trước hết sẽ là thú vị để kiểm tra liệu chúng có là sẵn sàng mới nhất không, như chúng ta đã thực hiện trước đó với Fedora hoặc Debian. Hoặc nếu chúng ta muốn có các phiên bản chung mới nhất, thì có thể tới kernel.org và tải về phiên bản mới nhất có sẵn (phiên bản ổn định tốt hơn phiên bản thí điểm), trừ phi chúng ta có quan tâm trong sự phát triển của nhân. Tải tệp về vào trong /usr/src (hoặc thư mục được chọn khác, còn tốt hơn), giải nén các nguồn của nhân. Chúng ta cũng tìm để thấy liệu có những bản vá cho nhân và áp dụng được chúng hay không (như chúng ta đã thấy trong phần 4.4).

Tiếp đến, chúng ta sẽ bình luận về các bước sẽ phải được triển khai: chúng ta sẽ làm nó ngắn gọn, khi nhiều trong số chúng đã được nhắc tới trước khi tiến hành thiết lập cấu hình và chỉnh sửa.

1) Làm sạch thư mục của những thí nghiệm trước (những nơi áp dụng được):

make clean mrproper

2) Cấu hình nhân với, ví dụ: make menuconfig (hoặc xconfig, gconfig hoặc oldconfig). Chúng ta đã thấy điều này trong phần 4.3.

Hình 4. Cấu hình nhân có sử dụng thực đơn văn bản.

3) Các phụ thuộc và việc làm sạch các biên dịch trước đó:

make dep

4) Biên dịch và tạo ra một ảnh của nhân: make bzImage. zImage cũng có thể có khả năng nếu ảnh là nhỏ hơn, nhưng bzImage là thông thường hơn, vì nó tối ưu hóa qui trình tải và nén các nhân lớn hơn. Trên một số phần cứng cũ hơn nó có thể không làm việc và zImage có thể là cần thiết. Qui trình này có thể kéo dài từ một vài phút cho tới một giờ đồng hồ trên phần cứng hiện đại và nhiều giờ trên các phần cứng cũ hơn. Khi kết thúc, ảnh được thấy trong thư mục

Trang 153/471

Xem thêm

Được khuyến cáo để đọc lại phần 3.4.3.

Page 154: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/usr/src/directory-sources/arch/i386/boot.

5) Bây giờ chúng ta có thể biên dịch các module với make modules. Cho tới giờ chúng ta đã không thay đổi bất kỳ thứ gì trong hệ thống của chúng ta. Bây giờ chúng ta phải xử lý việc cài đặt.

6) Trong trường hợp của các module, nếu chúng ta thử một phiên bản nhân cũ hơn (nhánh 2.2 hoặc những nhánh đầu 2.4), thì chúng ta sẽ phải thận trọng, vì một số được sử dụng để viết đè lên những thứ cũ (trong nhân mới nhất 2.4.x hoặc 2.6.x thì không còn như thế nữa).

Nhưng chúng ta cũng sẽ cần phải thận trọng nếu chúng ta đang biên dịch một phiên bản là y hệt (chính xác đánh số) như nhân mà chúng ta có (các module sẽ bị viết đè), thì tốt hơn là hãy sao lưu các module:

cd /lib/modules

t � -cvzf old_modules.tgz versionkernel-old/

Bằng cách này chúng ta có một phiên bản trong .tgz mà có thể phục hồi sau này nếu có xảy ra bất kỳ vấn đề gì. Và, cuối cùng, chúng ta có thể cài đặt các module với:

make modules install

7) Bây giờ chúng ta có thể đi tiếp để cài đặt nhân, ví dụ với:

# cd /usr/src/directory-sources/arch/i386/boot

# cp bzImage /boot/vmlinuz-versionkernel

# ln -s /boot/System.map-versionkernel

# ln -s /boot/vmlinuz-versionkernel /boot/vmlinuz

# ln -s /boot/System.map-versionkernel /boot/System.map

Bằng cách này chúng ta lưu trữ tệp các biểu tượng của nhân (System.map) và ảnh của nhân.

8) Bây giờ tất cả những gì chúng ta phải làm là đặt cấu hình được yêu cầu vào trong tệp cấu hình của trình quản lý khởi động, hoặc lilo (/etc/lilo.conf) hoặc grub (/boot/grub/grub.conf), tùy thuộc vào các cấu hình mà chúng ta đã thấy với Fedora hoặc Debian. Và hãy nhớ, trong trường hợp của lilo, thì chúng ta sẽ cần cập nhật cấu hình một lần nữa với /sbin/lilo hoặc /sbin/lilo-v.

9) Khởi động lại máy và quan sát các kết quả (nếu tất cả đã chạy tốt).

Trang 154/471

Page 155: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Hãy xác định phiên bản hiện hành của nhân Linux được kết hợp vào trong phát tán của chúng ta. Hãy kiểm tra các cập nhật sẵn sàng một cách tự động, hoặc trong Debian (apt) hoặc trong Fedora/Red Hat (thông qua yum).

2) Triển khai một cập nhật tự động với phát tán của chúng ta. Hãy kiểm tra những phụ thuộc có thể với các module khác được sử dụng (hoặc pcmcia hoặc những thứ khác) và với trình tải khởi động (lilo hoặc grub) được sử dụng. Một bản sao lưu các dữ liệu quan trọng của hệ thống (các tài khoản của người sử dụng và các tệp cấu hình được sửa đổi) được khuyến cáo nếu chúng ta không có hệ thống khác sẵn sàng để thử nghiệm.

3) Đối với nhánh nhân của chúng ta, để xác định phiên bản sẵn sàng mới nhất (tham vấn http://www.kernel.org) và triển khai một cài đặt bằng tay tiếp theo các bước được mô tả trong phần này. Cài đặt cuối cùng có thể để là tùy chọn, hoặc làm một khoản trong trình tải khởi động cho việc thử nghiệm nhân mới.

4) Trong trường hợp của phát tán Debian, bổ sung cho các bước bằng tay, chúng ta đã thấy cách để có một cách thức đặc biệt (được khuyến cáo) của việc cài đặt nhân từ các nguồn của nó có sử dụng gói nhân (kernel – package).

Trang 155/471

Page 156: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu và thông tin khác

[Kerb] Site cung cấp một kho các phiên bản khác nhau của nhân Linux và các bản vá của nó.

[Kera] [lkm] Các website tham chiếu tới một phần của cộng đồng nhân Linux. Nó đưa ra một loạt các tài nguyên bổ sung và các danh sách thư về sự tiến hóa của nhân, tính ổn định của nó và các tính năng sẽ phát triển.

[Dbo] Sách về nhân Linux 2.4, chi tiết hóa các thành phần khác nhau, sự triển khai và thiết kế của chúng. Có một xuất bản phẩm đầu tiên về nhân 2.2 và một cập nhật mới đối với nhân 2.6.

[Pra] Một bài viết mô tả một số đổi mới sáng tạo chính của loạt mới 2.6 của nhân Linux.

[Ker] [Mur] Các dự án tài liệu của nhân, còn chưa hoàn chỉnh nhưng với các tư liệu hữu dụng.

[Bac86] [Vah96] [Tan87] Một số văn bản về các khái niệm, thiết kế và triển khai của các nhân các phiên bản UNIX khác nhau.

[Skoa] [Zan01] [Kan] [Pro] Cho những thông tin xa hơn về các trình tải khởi động lilo và grub.

Trang 156/471

Page 157: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5 Quản trị cục bộ

Josep Jorba Esteve PID_00148465

Local administration

Josep Jorba Esteve PID_00148465

Trang 157/471

Page 158: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Một trong những nhiệm vụ đầu tiên của người quản trị sẽ là quản lý các tài nguyên cục bộ của máy tính. Một số những khía cạnh này về cơ bản đã được bao trùm trong khóa học của GNU/Linux. Trong khóa học này, chúng ta sẽ đưa ra những nhiệm vụ quản lý sâu hơn cũng như một số sự tùy biến và những khía cạnh về hiệu quả của tài nguyên.

Chúng ta sẽ bắt đầu bằng việc phân tích tiến trình cho việc khởi động một hệ thống GNU/Linux để giúp chúng ta hiểu được cấu trúc ban đầu của hệ thống và mối quan hệ của nó với một loạt các dịch vụ mà nó cung cấp.

Chúng ta bây giờ sẽ học cách có được một khái quát chung về hiện trạng của hệ thống, sử dụng các thủ tục và lệnh khác nhau có sẵn cho việc đánh giá một loạt các phần của hệ thống; điều này cho phép chúng ta đưa ra các quyết định quản trị nếu chúng ta dò tìm ra được bất kỳ lỗi nào hoặc sự thiếu sót nào khi vận hành hoặc nếu chúng ta thấy đang bị mất đi bất kỳ tài nguyên nào.

Một trong những nhiệm vụ chính của người quản trị là việc quản lý các tài khoản của người sử dụng, như bất kỳ cấu hình nào của máy sẽ được thiết kế cho người sử dụng; chúng ta sẽ thấy cách có thể xác định được các tài khoản người sử dụng mới và kiểm soát các mức truy cập các tài nguyên của họ.

Về các thiết bị ngoại vi của hệ thống, như là các ổ đĩa và máy in, có những khả năng quản lý khác nhau sẵn sàng, hoặc thông qua các máy chủ khác nhau (cho in ấn) hoặc các hệ thống tệp khác nhau mà chúng ta có thể làm việc, cũng như một số kỹ thuật cho việc tối ưu hóa hiệu năng của các đĩa.

Chúng ta cũng sẽ xem xét nhu cầu để cập nhật hệ thống và cách tốt nhất để giữ cho hệ thống được cập nhật; cũng vậy, chúng ta sẽ xem xét cách để cài đặt các ứng dụng và phần mềm mới và cách để làm cho những chương trình này sẵn sàng cho người sử dụng. Cùng lúc, chúng ta sẽ phân tích các vấn đề có liên quan trong việc thực thi các nhiệm vụ định trước thời gian trong hệ thống.

Trong sách chỉ dẫn mới nhất, chúng ta sẽ học cách đánh giá tình trạng của một máy, tuân theo những điểm đã thấy trong module này, và chúng ta sẽ triển khai một số nhiệm vụ quản trị cơ bản đã mô tả. Trong module này, chúng ta sẽ thảo luận một số lệnh và sau đó, trong sách chỉ dẫn, chúng ta sẽ xem xét một số điều này một cách chi tiết hơn, về cách mà chúng làm việc và những lựa chọn có sẵn.

Trang 158/471

Lưu ý

Quản trị cục bộ bao trùm nhiều nhiệm vụ khác nhau, có thể là những nhiệm vụ mà người quản trị sẽ sử dụng nhiều nhất trong công việc hàng ngày của mình.

Page 159: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.1. Các phát tán: các tính năng đặc biệt

Chúng ta bây giờ sẽ cố gắng phác họa một số khác biệt nhỏ về kỹ thuật (mà chúng sẽ luôn ít đi) trong các phát tán (Fedora/Red Hat và Debian) được sử dụng [Mor03], và chúng ta sẽ xem xét chi tiết hơn thông qua các module khi chúng sẽ xuất hiện.

Những sửa đổi hoặc những nét đặc biệt của Fedora/Red Hat:

• Sử dụng trình tải khởi động grub (một tiện ích của GNU); không giống như những phiên bản trước của hầu hết các phát tán, mà có xu hướng sử dụng lilo, Fedora sử dụng grub. GRUB (grand unified bootloader) có một cấu hình dạng văn bản (thường là trong /boot/grub/grub.conf) hoàn toàn là đơn giản và có thể được sửa đổi khi khởi động. Nó có thể mềm dẻo hơn lilo. Sau này, các phát tán có xu hướng sẽ sử dụng grub; Debian cũng đưa nó vào như một lựa chọn.

• Quản lý các lựa chọn thay thế. Nếu có nhiều hơn một chương trình tương tự hiện có cho một nhiệm vụ cụ thể nào đó, thì lựa chọn thay thế sẽ được sử dụng phải được chỉ ra thông qua một thư mục (/etc/alternatives). Hệ thống này đã được vay mượn từ Debian, sử dụng nhiều trong phát tán của nó.

• Chương trình quét cổng TCP/IP dựa trên xinetd; trong /etc/xinetd.d chúng ta sẽ thấy các tệp cấu hình dạng module cho một số dịch vụ TCP/IP, cùng với tệp cấu hình /etc/xinetd.conf. Trong các hệ thống UNIX kinh điển, chương trình được sử dụng cho việc này là inetd, có một tệp cấu hình duy nhất trong /etc/inetd.conf, ví dụ, trong phát tán Debian, mà nó sử dụng inetd, để lại xinetd như một lựa chọn.

• Một số thư mục cấu hình đặc biệt: /etc/profile.d, các tệp được thực thi khi một người sử dụng mở một trình biên dịch lệnh (shell); /etc/xinetd.d, cấu hình của một số dịch vụ mạng; /etc/sysconfig, các dữ liệu cấu hình cho một loạt các khía cạnh của hệ thống; /etc/cron., một loạt các thư mục nơi mà các nhiệm vụ phải được thực hiện thường xuyên được chỉ định (thông qua crontab); /etc/pam.d, nơi mà các module xác thực được biết như là PAM: các quyền cho dịch vụ hoặc chương trình đặc biệt nào đó được cấu hình trong từng các tệp PAM; /etc/logrotate.d, cấu hình xoay vòng (cần thiết để dọn sạch, nén...) của một số các tệp log cho các thiết bị khác nhau.

• Có một thư viện phần mềm gọi là kudzu, xem xét phần cứng khi khởi động để dò tìm ra bất kỳ sự thay đổi có thể nào (trong một số phiên bản trước của Fedora) trong cấu hình và để tạo ra những yếu tố hoặc cấu hình phù hợp. Mặc dù hiện có một sự chuyển đổi có tiến bộ sang API Hal giúp kiểm soát chính xác khía cạnh này.

Trong trường hợp của Debian:

• Hệ thống đóng gói nội bộ dựa trên các gói DEB, với các công cụ ở nhiều mức độ để làm việc

Trang 159/471

Lưu ý

Quan trọng để biết các chi tiết của một phát tán, khi chúng là cơ bản cho việc thực thi một nhiệm vụ hoặc giải quyết một vấn đề (ví dụ, nếu có những công cụ bổ sung thêm có sẵn).

Page 160: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

với các gói như là: dpkg, apt-get, dselect, tasksel.

• Debian đi theo FHS, qua cấu trúc các thư mục, bổ sung một số đặc biệt trong /etc, như là: /etc/default, các tệp cấu hình và các giá trị mặc định cho một số chương trình; /etc/network, các scripts cấu hình của các giao diện mạng và dữ liệu; /etc/dpkg; /etc/apt, thông tin về cấu hình của các công cụ quản lý gói; /etc/alternatives, các liên kết tới các chương trình mặc định, trong đó có (hoặc có thể có) một loạt các lựa chọn thay thế có sẵn.

• Hệ thống cấu hình cho nhiều gói phần mềm có sử dụng công cụ dpkg-reconfigure. Ví dụ:

dpkg-reconfigure gdm

làm cho có khả năng chọn trình quản lý sắp tới cho X, hoặc:

dpkg-reconfigure X-Window-system

• Sử dụng cấu hình các dịch vụ TCP/IP thông qua inetd; cấu hình trong tệp /etc/inetd.conf; có một công cụ update-inetd cho việc vô hiệu hóa hoặc tạo ra các khoản mục đầu vào của các dịch vụ.

• Một số thư mục cấu hình đặc biệt: /etc/cron., một số thư mục nơi mà các nhiệm vụ phải được thực hiện thường xuyên được chỉ định (thông qua crontab); /etc/pam.d, nơi mà PAM là các module xác thực.

Trang 160/471

Page 161: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.2. Các mức khởi động và chạy

Điểm quan trọng đầu tiên trong phân tích về hiệu năng cục bộ của một hệ thống là ccsh, nó làm việc trên các mức chạy, xác định phương thức làm việc hiện hành của hệ thống và các dịch vụ được cung cấp (trên mức đó) [Wm02].

Một dịch vụ là một chức năng được máy cung cấp, thường dựa trên daemons (hoặc các tiến trình thực thi cơ bản kiểm soát các yêu cầu của mạng, hoạt động của phần cứng hoặc các chương trình cung cấp bất kỳ nhiệm vụ nào khác).

Các dịch vụ này có thể được kích hoạt hoặc được treo bằng việc sử dụng các scripts. Hầu hết các tiến trình chuẩn thường được cấu hình trong thư mục /etc, có xu hướng sẽ được kiểm soát bằng scripts trong /etc/init.d/. Scripts với các tên tương tự với các dịch vụ mà đối với chúng thì các tên này thường xuất hiện trong thư mục và việc khởi động hoặc dừng các thông số sẽ thường được chấp nhận. Các hành động sau đây sẽ được tiến hành:

/etc/init.d/service start khởi động dịch vụ

/etc/init.d/service stop dừng dịch vụ

/etc/init.d/service restart dừng và sau đó khởi động lại dịch vụ

Khi một hệ thống GNU/Linux khởi động, trước tiên nhân của hệ thống được tải lên, sau đó tiến trình ban đầu khởi động; tiến trình này được gọi là init và nó phải chạy và kích hoạt phần còn lại của hệ thống, thông qua sự quản lý của các mức chạy khác nhau.

Một mức chạy là một cấu hình cơ bản của các chương trình và dịch vụ sẽ được thực thi để triển khai các nhiệm vụ được xác định.

Các mức điển hình, mặc dù có thể có những sự khác biệt trong trật tự, đặc biệt ở các mức 2-5 (trong bảng cấu hình trong Fedora và chúng được khuyến cáo trong chuẩn LSB), thường là:

Mức chạy Chức năng Mô tả

0 Treo Treo hoặc tắt các dịch vụ và chương trình tích cực, và vô hiệu hóa các hệ thống tệp tích cực đối với CPU.

1 Chế độ 1 người sử dụng Treo hoặc tắt hầu hết các dịch vụ, chỉ cho phép người quản trị (root) đăng nhập. Được sử dụng cho các nhiệm vụ duy trì và sửa các lỗi sống còn.

2 Chế độ nhiều người sử dụng Không dịch vụ mạng nào được khởi động và chỉ những

Trang 161/471

Page 162: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Mức chạy Chức năng Mô tả

mà không có kết nối mạng đăng nhập cục bộ được cho phép.

3 Nhiều người sử dụng Khởi động tất cả các dịch vụ trừ đồ họa có liên quan tới X Window.

4 Nhiều người sử dụng Không thường xuyên được sử dụng; thường hệt như với 3

5 Nhiều người sử dụng X Như với 3, nhưng với hỗ trợ X cho những đăng nhập của người sử dụng (đăng nhập đồ họa).

6 Khởi động lại Cho tất cả các chương trình vàdịch vụ. Khởi động lại hệ thống.

Mặt khác, được lưu ý rằng Debian sử dụng một mô hình thực sự không có sự khác biệt nào được thực hiện giữa các mức 2-5 và thực hiện chính xác nhiệm vụ y hệt (mặc dù điều này có thể thay đổi trong phiên bản tương lai để những mức này tương ứng với LSB).

Các mức chạy này thường được cấu hình trong các hệ thống GNU/Linux (và UNIX) với 2 hệ thống khác: BSD hoặc System V (đôi khi được viết tắt là V). Trong trường hợp của Fedora và Debian, System V được sử dụng và nó là một thứ chúng ta sẽ xem xét, nhưng UNIX và một số phát tán GNU/Linux khác (như Slackware) sử dụng mô hình BSD.

Trong trường hợp mô hình các mức chạy của System V, khi tiến trình init bắt đầu, nó sử dụng một tệp cấu hình là /etc/inittab để quyết định về chế độ thực thi sẽ tham gia. Tệp này xác định mức chạy mặc định (initdefault) khi khởi động (bằng việc cài đặt, 5 trong Fedora và 2 trong Debian), và một loạt các dịch vụ của máy đầu cuối phải được kích hoạt sao cho những người sử dụng có thể đăng nhập được.

Sau đó, hệ thống, theo mức chạy được chọn, sẽ tham vấn các tệp có trong /etc/rcn.d, nơi mà n là số có liên quan tới mức chạy (mức được chọn), có chứa một danh sách các dịch vụ phải được khởi động hoặc treo nếu chúng ta khởi động trong mức chạy đó hoặc bỏ qua nó. Trong thư mục này, chúng ta sẽ thấy một loạt các scripts hoặc đường liên kết tới các scripts kiểm soát dịch vụ này.

Mỗi script có một số liên quan tới dịch vụ, một S hoặc K ở đầu chỉ ra liệu script cho việc khởi động (S) hay cho việc giết (K) dịch vụ, và một số để chỉ trật tự trong đó các dịch vụ sẽ được thực hiện.

Một loạt các lệnh hệ thống sẽ giúp chúng ta điều khiển các mức chạy; chúng ta phải nhớ:

• Scripts, như chúng ta đã thấy, trong /etc/init.d/ cho phép chúng ta khởi động, treo hoặc khởi động lại các dịch vụ riêng rẽ.

• Telinit, cho phép chúng ta thay đổi mức chạy; chúng ta đơn giản phải chỉ ra số này. Ví dụ, chúng ta phải thực hiện một nhiệm vụ sống còn trong root; khi không có người sử dụng nào làm việc, chúng ta có thể thực hiện một telinit 1 (S cũng có thể được sử dụng) để chuyển qua mức chạy một người sử dụng duy nhất và sau đó, sau nhiệm vụ này, một telinit 3 sẽ trả lại chế độ nhiều người sử dụng. Lệnh init cũng có thể được sử dụng cho nhiệm vụ y hệt, mặc dù telinit sẽ cung cấp một ít các thông số bổ sung thêm. Ví dụ, sự khởi động điển hình của một hệ thống

Trang 162/471

Page 163: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

UNIX có thể sẽ được thực hiện với sync; init 6, lệnh sync ép các bộ nhớ đệm buffers của hệ thống tệp thành rỗng, và sau đó chúng ta khởi động lại ở mức chạy 6.

• Shutdown cho phép chúng ta treo (“h”) hoặc khởi động lại hệ thống (“r”). Điều này có thể được thực hiện theo một chu kỳ nào đó được đưa ra hoặc là ngay lập tức. Cũng có các lệnh treo (halt) và khởi động lại (reboot) cho các nhiệm vụ này.

• Wall cho phép chúng ta gửi các thông điệp cảnh báo tới những người sử dụng hệ thống. Đặc biệt, người quản trị có thể cảnh báo người sử dụng rằng máy đang sắp dừng tại một thời điểm được xác định nào đó. Các lệnh như Shutdown thường sử dụng chúng một cách tự động.

• Pidof cho phép chúng ta tìm ra ID tiến trình có liên quan tới một tiến trình. Với ps chúng ta có các danh sách của các tiến trình, và nếu chúng ta mong muốn hạn chế một dịch vụ hoặc tiến trình thông qua một sự giết (kill), thì chúng ta sẽ cần PID của nó.

Có một số thay đổi nhỏ trong các phát tán, với việc xem xét tới mô hình khởi động:

• Fedora/Red Hat: mức chạy 4 không có sử dụng được công bố. Các thư mục /etc/rcn.d tồn tại như các liên kết tới các thư mục con /etc/rd.d, nơi mà các scripts khởi động được tập trung. Các thư mục sẽ là như sau: /etc/rc.d/rcn.d; nhưng vì các liên kết đang tồn tại, nên nó là trong suốt đối với người sử dụng. Mức chạy mặc định là 5 khi khởi động bằng X.

Các lệnh và tệp có liên quan tới sự khởi động của hệ thống sẽ nằm trong các gói phần mềm sysvinit và initscripts.

Liên quan tới những thay đổi các tệp và scripts trong Fedora, chúng ta phải chỉ ra rằng trong /etc/sysconfig có thể thấy các tệp chỉ định các giá trị mặc định cho cấu hình của các thiết bị hoặc dịch vụ. Script /etc/rc.d/rc.sysinit được gọi một khi hệ thống khởi động; Script /etc/rc.d/rc.local được gọi vào cuối tiến trình và để chỉ định sự khởi động đặc biệt của máy.

Sự khởi động thực sự của các dịch vụ được triển khai thông qua các scripts được lưu giữ trong /etc/rc.d/init.d. Cũng có một liên kết từ /etc/init.d. Hơn nữa, Fedora cung cấp một số scripts hữu dụng cho việc điều khiển các dịch vụ: /sbin/service để treo hoặc khởi động lại một dịch vụ với tên này; và /sbin/chkconfic, để bổ sung các liên kết cho các tệp dạng S và K cần thiết cho một dịch vụ hoặc để có được các thông tin về các dịch vụ này.

• Debian có các lệnh quản trị cho các mức chạy như update-rc.d cho phép chúng ta cài đặt hoặc xóa các dịch vụ bằng việc khởi động hoặc treo chúng trong một hoặc nhiều mức chạy; invoke-rc.d, cho phép các hoạt động kinh điển đối với sự khởi động, treo hoặc khởi động lại dịch vụ.

Mức chạy mặc định trong Debian là 2, Hệ thống X Window không được quản lý từ /etc/inittab; thay vào đó có một trình quản lý (ví dụ, gdm hoặc kdm) làm việc dường như nó là thứ khác của các dịch vụ mức chạy 2.

Trang 163/471

Page 164: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.3. Việc giám sát tình trạng hệ thống

Một trong những nhiệm vụ chính hàng ngày của người quản trị (root) là để thẩm tra hệ thống làm việc đúng đắn và kiểm tra bất kỳ lỗi hoặc sự bão hòa có thể nào của các tài nguyên của hệ thống (bộ nhớ, các đĩa …). Trong các phần sau, chúng ta sẽ nghiên cứu các phương pháp cơ bản để xem xét tình trạng của hệ thống tại một điểm được xác định theo thời gian và cách để thực hiện những hoạt động theo yêu cầu để tránh được bất kỳ vấn đề nào xảy ra.

Trong sách chỉ dẫn ở cuối của module này, chúng ta sẽ xem xét toàn bộ một hệ thống ví dụ để có thể thấy được một số các kỹ thuật này.

5.3.1. Khởi động hệ thống

Khi khởi động một hệ thống GNU/Linux, có một sự trích lọc lớn ra những thông tin thú vị; khi hệ thống khởi động màn hình thường chỉ ra những dữ liệu từ các tiến trình xóa các đặc tính của máy, các thiết bị, các khởi động dịch vụ hệ thống …, và bất kỳ vấn đề gì mà xuất hiện được nhắc tới.

Trong hầu hết các phát tán, điều này có thể thấy trực tiếp trên phần điều khiển (console) của hệ thống trong quá trình khởi động. Tuy nhiên, hoặc tốc độ của các thông điệp hoặc một số các phát tán hiện đại ẩn đi các thông điệp đằng sau các hình đồ họa có thể làm cho chúng ta không thấy được các thông điệp đó một cách thích đáng, mà có nghĩa là chúng ta cần một loạt các công cụ cho quá trình này.

Về cơ bản, chúng ta có thể sử dụng:

• Lệnh dmesg: chỉ các thông điệp từ khởi động nhân mới nhất.

• Tệp /var/log/message: log của hệ thống chung có chứa các thông điệp được nhân và các daemon khác (có thể có nhiều tệp log khác nhau, thường là trong /var/log, và phụ thuộc vào cấu hình của dịch vụ syslog) tạo ra.

• Lệnh uptime: chỉ thời gian đã bao lâu hệ thống từng tích cực.

• Hệ thống /proc: hệ thống tệp bí danh (procfs) sử dụng nhân để lưu trữ các tiến trình và thông tin hệ thống.

• Hệ thống /sys: hệ thống tệp bí danh (sysfs) đã xuất hiện trong nhánh nhân 2.6.x để cung cấp một phương pháp cố kết mạch lạc của việc truy cập thông tin trong các thiết bị và các trình điều khiển của chúng.

5.3.2. Nhân: thư mục /proc

Khi khởi động, nhân khởi động một hệ thống tệp bí danh gọi là /proc, trong đó nó đổ các thông tin được biên dịch lên máy, cũng như nhiều dữ liệu nội bộ khác, trong khi thực hành. Thư mục /proc được triển khai trên bộ nhớ và không được lưu vào đĩa. Các dữ liệu được lưu chứa cả tĩnh và động (chúng thay đổi trong quá trình chạy).

Nên nhớ là, vì /proc phụ thuộc nặng vào nhân, nên cấu trúc có xu hướng phụ thuộc vào nhân hệ thống

Trang 164/471

Page 165: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

và cấu trúc và các tệp được đưa vào có thể thay đổi được.

Một trong những điểm thú vị là việc chúng ta có thể thấy các ảnh của các tiến trình đang được chạy trong thư mục /proc, cùng với thông tin mà nhân điều khiển trong các tiến trình. Mỗi tiến trình trong các tiến trình hệ thống có thể thấy được trong thư mục /proc/<process_pid, nơi có một thư mục với các tệp thể hiện tình trạng của nó. Thông tin này là cơ bản cho các chương trình gỡ rối hoặc cho các lệnh của riêng hệ thống như là ps hoặc top, có thể được sử dụng cho việc xem xét tình trạng của các tiến trình. Nói chung, nhiều tiện ích của hệ thống tham vấn thông tin động của hệ thống từ /proc (đặc biệt một số các tiện ích được cung cấp trong gói procps).

Một lưu ý khác, chúng ta có thể thấy các tệp khác trong tình trạng tổng thể của hệ thống trong /proc. Chúng ta sẽ xem xét một số các tệp có thể để có được tóm tắt các thông tin quan trọng:

Tệp Mô tả

/proc/bus Thư mục với các thông tin trên các bus PCI và USB

/proc/cmdline Dòng khởi động của nhân

/proc/cpuinfo Các dữ liệu của CPU

/proc/devices Danh sách các thiết bị hoặc các thiết bị khối đặc trưng của hệ thống

/proc/drive Thông tin về một số module nhân phần cứng

/proc/filesystems Các hệ thống của các tệp được phép trong nhân

/proc/ide Thư mục các thông tin về bus IDE, các đặc tính của các đĩa

/proc/interrups Ánh xạ các yêu cầu ngắt của phần cứng (IRQ) được sử dụng

/proc/ioports Các cổng I/O được sử dụng

/proc/meminfo Các dữ liệu về sử dụng bộ nhớ

/proc/modules Các module của nhân

/proc/mounts Các hệ thống tệp hiện đã được kích hoạt (mount)

/proc/net Thư mục với tất cả các thông tin mạng

/proc/scsi Thư mục của các thiết bị SCSI hoặc các IDE được mô phỏng bằng SCSI

/proc/sys Truy cập tới các thông số có khả năng cấu hình động của nhân

Trang 165/471

Lưu ý

Thư mục /proc là một nguồn bổ sung thêm cho việc có được thông tin mức thấp khi làm việc với hệ thống và nhiều lệnh của hệ thống dựa vào nó cho các tác vụ của chúng.

Page 166: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/proc/version Phiên bản và ngày tháng của nhân

Như đối với phiên bản 2.6, một sự chuyển dịch tiến bộ của procfs (/proc) tới sysfs (/sys) đã bắt đầu, để chuyển đổi tất cả thông tin không có liên quan tới các tiến trình, đặc biệt các thiết bị và các trình điều khiển (các module của nhân) tới hệ thống /sys.

5.3.3. Nhân: /sys

Hệ thống sys có trách nhiệm tạo ra thông tin về các thiết bị và các trình điều khiển nằm trong nhân, sẵn sàng cho không gian của người sử dụng sao cho các giao diện lập trình ứng dụng (API) hoặc các ứng dụng khác có thể truy cập thông tin này trên các thiết bị (hoặc các trình điều khiển của chúng) theo một cách mềm dẻo hơn. Thường được sử dụng bằng các lớp như HAL và dịch vụ udev cho việc giám sát và cấu hình động cho các thiết bị.

Bên trong khái niệm sys này có một cấu trúc dữ liệu dạng cây của các thiết bị và các trình điều khiển (nói về mô hình khái niệm đã cố định) và cách mà nó có thể truy cập được sau đó thông qua hệ thống tệp sysfs (cấu trúc của nó có thể thay đổi giữa các phiên bản khác nhau).

Khi một đối tượng bổ sung được dò tìm ra hoặc xuất hiện trong hệ thống, thì một thư mục được tạo ra trong sysfs trong cây mô hình của trình điều khiển (các trình điều khiển, các thiết bị bao gồm các lớp khác nhau của chúng). Mối qun hệ của các nút cha/con được phản ánh với các thư mục phụ theo /sys/devices/ (phản ánh lớp vật lý và những trình nhận dạng của nó). Các liên kết biểu tượng được đặt trong thư mục /sys/bus phản ánh cách thức trong đó các thiết bị được trình bày trong /sys/class, được nhóm theo lớp của chúng, ví dụ mạng, trong khi /sys/block/ chứa các thiết bị của khối (block).

Một số thông tin được /sys cung cấp cũng có thể thấy trong /proc, nhưng đã được quyết định rằng phương pháp này có liên quan tới việc trộn các yếu tố khác nhau (các thiết bị, các tiến trình, các dữ liệu, phần cứng, các thông số của nhân) theo một cách không thật có gắn kết và điều này là một trong những lý do mà /sys được tạo ra. Được mong đợi là thông tin sẽ chuyển từ /proc sang /sys để tập trung các dữ liệu của thiết bị.

5.3.4. Các tiến trình

Các tiến trình đang thực thi tại một thời điểm nào đó sẽ có bản chất tự nhiên khác nhau, thường thế. Chúng ta có thể thấy:

• Các tiến trình hệ thống, hoặc là các tiến trình có liên quan tới mạng cục bộ của các máy, nhân, hoặc các tiến trình (được biết như là các daemon) có liên quan tới sự kiểm soát của các dịch vụ khác nhau. Trong một lưu ý khác, chúng có thể là cục bộ hoặc được nối mạng, phụ thuộc vào việc liệu dịch vụ đó có đang được đưa ra không (như một máy chủ) hoặc chúng ta đang nhận các kết quả của dịch vụ (như những máy trạm). Hầu hết những tiến trình này sẽ xuất hiện có liên quan tới người sử dụng root, ngay cả nếu chúng ta không thể hiện khi đó như những người sử dụng. Có thể có một số dịch vụ có liên quan tới những người sử dụng hệ thống khác (lp, bin, www, mall, …), họ là những người sử dụng không tương tác ảo mà hệ thống sử dụng để chạy các tiến trình nhất định nào đó.

Trang 166/471

Page 167: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Các tiến trình quản trị người sử dụng: khi hành động như người sử dụng root, các tiến trình tương tác hoặc các ứng dụng được tung ra của chúng ta cũng sẽ xuất hiện như các tiến trình có liên quan tới người sử dụng root này.

• Các tiến trình của người sử dụng hệ thống: có liên quan tới sự thực thi của các ứng dụng của chúng, hoặc chúng là các nhiệm vụ tương tác trong chế độ văn bản hoặc trong chế độ đồ họa.

Chúng ta có thể sử dụng những thứ sau để nhanh hơn và hữu dụng hơn:

• ps: Lệnh chuẩn, liệt kê các tiến trình với các dữ liệu của người sử dụng, thời gian, trình nhận dạng tiến trình và dòng lệnh được sử dụng. Một trong những lựa chọn thường được sử dụng nhất là ps -ef (hoặc -ax), nhưng có nhiều lựa chọn sẵn sàng (xem man).

• Top: một phiên bản cung cấp cho chúng ta một danh sách được cập nhật theo các chu kỳ, để giám sát động các thay đổi. Nó cho phép chúng ta sắp xếp danh sách các tiến trình được chia theo các chủng loại, như sử dụng bộ nhớ, sử dụng CPU, sao cho có được một sự xếp hạng các tiến trình đang tiêu xài toàn bộ các tài nguyên. Rất hữu dụng cho việc cung cấp thông tin về nguồn có thể của vấn đề, trong các trường hợp tất cả các tài nguyên hệ thống đã bị sử dụng hết.

• Kill: cho phép chúng ta hạn chế được các tiến trình hệ thống bằng việc gửi đi các lệnh cho tiến trình như kill -9 pid_of_process (9 tương ứng với SIGKILL), nơi mà chúng ta thiết lập trình nhận dạng các tiến trình. Nó là hữu dụng cho các tiến trình với các hành vi không ổn định hoặc các chương trình tương tác đã dừng hoạt động. Chúng ta có thể thấy một danh sách các tín hiệu hợp lệ trong hệ thống với tín hiệu 7 của man.

5.3.5 Lưu ký hệ thống

Cả nhân và nhiều dịch vụ daemon, cũng như các ứng dụng hoặc các hệ thống phụ của GNU/Linux, có thể tạo ra các thông điệp được gửi tới các tệp log, hoặc để có được vết của việc vận hành hệ thống hoặc để dò tìm ra các lỗi hoặc cảnh báo sai sót hoặc các tình huống sống còn. Các dạng lưu ký (log) này là cơ bản trong nhiều trường hợp đối với các nhiệm vụ quản trị và nhiều thời gian của người quản trị được bỏ ra để xử lý và phân tích các nội dung của chúng.

Hầu hết các lưu ký (log) được tạo ra trong thư mục /var/log, mặc dù một số ứng dụng có thể sửa hành vi này; hầu hết các log của bản thân hệ thống nằm trong thư mục này.

Một daemon đặc biệt của hệ thống (quan trọng) là daemon Syslogd. Daemon này có trách nhiệm nhận các thông điệp được gửi tới từ nhân và các dịch vụ daemon khác và gửi chúng cho một tệp log nằm trong /var/log/messages. Đây là tệp mặc định, nhưng Syslogd cũng có thể cấu hình được (trong tệp /etc/syslog.conf), sao cho để có khả năng tạo ra các tệp khác phụ thuộc vào nguồn, theo daemon gửi đi thông điệp, bằng cách đó gửi nó cho log hoặc tới vị trí khác (được phân loại theo nguồn), và/hoặc phân loại các thông điệp theo tầm quan trọng (mức ưu tiên): báo động, cảnh báo, lỗi, sống còn (alarm, warning, error, critical) ...

Phụ thuộc vào phát tán, có thể cấu hình được theo các chế độ khác nhau một cách mặc định; trong

Trang 167/471

Lưu ý

Daemon Syslogd là dịch vụ quan trọng nhất để có được thông tin động về hệ thống. Tiến trình phân tích các log giúp chúng ta hiểu được cách chúng hoạt động, những lỗi tiềm năng và hiệu năng của hệ thống.

Page 168: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/var/log trong Debian có khả năng tạo (ví dụ) các tệp như: kern.log, mail.err, mail.info... mà chúng là những lưu ký logs của các dịch vụ khác nhau. Chúng ta có thể xem xét cấu hình để xác định những thông điệp đến từ đâu và trong các tệp nào chúng được lưu giữ. Một lựa chọn thường hữu dụng là khả năng của việc gửi các thông điệp tới một console văn bản ảo (trong /etc/syslog.conf thì console đích, như /dev/tty8 hoặc /dev/xconsole, được chỉ định cho dạng hoặc các dạng hữu dụng cho việc giám sát sự thực thi của hệ thống mà không phải luôn luôn kiểm tra các tệp lưu ký log mỗi lần. Một sự sửa đổi đơn giản đối với phương pháp này có thể đưa vào, từ một máy trạm đầu cuối, lệnh sau đây (cho tệp log chung):

tail -f /var/log/messages

Câu lệnh này cho phép chúng ta để lại máy đầu cuối hoặc cửa sổ máy đầu cuối sao cho những thay đổi mà xảy ra trong tệp này sẽ xuất hiện một cách tăng dần.

Các lệnh có liên quan khác:

• uptime: thời gian mà hệ thống từng tích cực. Hữu dụng cho việc kiểm tra việc không có sự khởi động hệ thống không mong muốn nào đã từng xảy ra.

• last: phân tích lưu ký log vào/ra (in/out) của hệ thống (/var/log/wtmp) của những người sử dụng, và những lần khởi động lại hệ thống. Hoặc kiểm soát log cuối cùng của lần cuối cùng mà người sử dụng thấy được trên hệ thống (thông tin trong /var/log/lastlog).

• Một loạt các tiện ích cho việc xử lý được kết hợp với các lưu ký log, những tóm tắt các vấn đề (hoặc sự báo động) của những gì đã xảy ra trong hệ thống, như: logwatch, logcheck (Debian), log_analysis (Debian)...

5.3.6. Bộ nhớ

Nơi mà bộ nhớ hệ thống được kết nối, phải nhớ rằng chúng ta có: a) bộ nhớ vật lý của bản thân máy; b) bộ nhớ ảo có thể được các tiến trình đánh địa chỉ. Thông thường (trừ phi chúng ta đang làm việc với các máy chủ lớn), chúng ta sẽ không có số lượng rất lớn, nên bộ nhớ vật lý sẽ ít hơn bộ nhớ ảo cần thiết (4GB trong các hệ thống 32 bit). Điều này sẽ ép chúng ta phải sử dụng một vùng hoán đổi trên đĩa, để triển khai các tiến trình có liên quan tới bộ nhớ ảo.

Vùng hoán đổi này có thể được triển khai như một tệp trong hệ thống tệp, nhưng thường xuyên hơn phải xem nó như một phân vùng hoán đổi (swap partition), được tạo ra trong khi cài đặt hệ thống. Khi phân vùng cho đĩa, nó được công bố như một dạng Linux Swap.

Để xem xét thông tin trong bộ nhớ, chúng ta có một loạt các lệnh và phương pháp:

• Tệp /etc/fstab: phân vùng hoán đổi xuất hiện (nếu nó tồn tại). Với một lệnh fdisk, chúng ta có thể tìm ra kích thước của nó (hoặc kiểm tra /proc/swaps).

• Lệnh ps: cho phép chúng ta thiết lập các tiến trình sẵn có, với các lựa chọn về số phần trăm và bộ nhớ được sử dụng.

• Lệnh top: là một phiên bản ps động có thể cập nhật được theo các chu kỳ thời gian. Nó có thể phân loại các tiến trình theo bộ nhớ sử dụng hoặc thời gian của CPU.

Trang 168/471

Page 169: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Lệnh free: báo cáo về tình trạng tổng thể của bộ nhớ. Cũng cung cấp kích thước của bộ nhớ ảo.

• Lệnh vmstat: báo cáo về tình trạng của bộ nhớ ảo và sự sử dụng được chỉ định.

• Một số gói, như dstat, cho phép chúng ta đối chiếu các dữ liệu theo các thông số khác nhau (bộ nhớ, hoán đổi và những thứ khác) theo các chu kỳ thời gian (tương tự như với top).

5.3.7. Đĩa và các hệ thống tệp

Chúng ta sẽ xem xét những đĩa nào là sẵn sàng, cách mà chúng được tổ chức và các phân vùng nào và hệ thống tệp nào chúng có.

Khi chúng ta có một phân vùng và một hệ thống tệp truy cập được được xác định, thì chúng ta sẽ phải thực hiện một tiến trình kích hoạt (mount), để tích hợp nó vào hệ thống, hoặc một cách hoàn toàn tuyệt đối hoặc như được lập trình tại lúc khởi động/khởi tạo. Trong khi kích hoạt tiến trình này, chúng ta kết nối hệ thống tệp được liên kết tới phân vùng tại một điểm trong cây thư mục.

Để tìm ra sự hiện diện của các đĩa (hoặc các thiết bị lưu trữ) trong hệ thống, chúng ta có thể sử dụng các thông tin khởi động hệ thống (dmesg), khi những thứ này sẵn sàng được tìm ra, như /dev/hdx cho các thiết bị IDE hoặc /dev/sdx cho các thiết bị SCSI. Những thiết bị khác, như là các đĩa cứng được kết nối USB, các đĩa flash (dạng ổ bút viết), các ổ có thể tháo lắp, các đĩa CD-ROM ngoài..., có thể là những thiết bị ở một số dạng mô phỏng SCSI, sao cho chúng sẽ xuất hiện như những thiết bị dạng này.

Bất kỳ thiết bị lưu trữ nào cũng sẽ thể hiện một loạt các phân vùng không gian. Điển hình, một đĩa IDE hỗ trợ tối đa 4 phân vùng vật lý hoặc hơn thế nếu chúng là logic (cho phép sắp đặt một loạt phân vùng dạng logic trên một phân vùng vật lý). Mỗi phân vùng có thể chứa các dạng hệ thống tệp khác nhau, hoặc chúng có tác dụng y hệt nhau hoặc có tác dụng khác nhau.

Để xem xét cấu trúc của một thiết bị được biết hoặc để thay đổi cấu trúc của nó bằng việc phân vùng đĩa, chúng ta có thể sử dụng lệnh fdisk hoặc bất kỳ biến thể tương tác ít nhiều nào của nó (cfdisk, sfdisk). Ví dụ, khi xem xét một đĩa ví dụ IDE /dev/hda, chúng ta được trao những thông tin sau đây:

# fdisk -j /dev/hda

Đĩa /dev/hda: 20.5 GB, 20520493056 bytes 255 đầu, 63 khu/rãnh, 2494 xy lanh

Các đơn vị = xy lanh của 16065 * 512 = 8225280 bytes

Thiết bị Khởi động Bắt đầu Kết thúc Các khối block Hệ thống ID

/dev/hda1 * 1 13,6 10482381 7 HPPS/NTFS

/dev/hda2 * 1306 2429 9028530 83 Linux

/dev/hda3 2430 2494 522112+ 82 Linux swap

20 GB đĩa với 3 phân vùng (chúng sẽ được xác định bởi số lượng được bổ sung cho tên thiết bị), nơi mà chúng ta quan sát thấy 2 phân vùng khởi động dạng NTFS và Linux (cột khởi động với *), chỉ ra sự

Trang 169/471

Page 170: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tồn tại của một Windows NT/2000/XP/Vista cùng với một phát tán GNU/Linux và một phân vùng cuối cùng được sử dụng như một vùng hoán đổi cho Linux. Hơn nữa, chúng ta có thông tin về cấu trúc của đĩa và các kích thước của từng phân vùng.

Một số đĩa và phân vùng chúng ta có, một số sẽ được kích hoạt trong hệ thống tệp của chúng ta, hoặc sẽ là sẵn sàng cho việc thiết lập theo yêu cầu, hoặc chúng có thể được thiết lập khi các tài nguyên trở nên sẵn sàng (trong trường hợp của các thiết bị tháo lắp được).

Chúng ta có thể có được những thông tin này theo các cách khác nhau (chúng ta sẽ thấy điều này chi tiết hơn trong phần thảo luận ở cuối cùng):

• Tệp /etc/fstab chỉ các thiết bị mà chúng là sẵn sàng để được kích hoạt khi khởi động hoặc các thiết bị có thể tháo lắp được có thể được kích hoạt. Không phải tất cả các thiết bị hệ thống sẽ nhất thiết xuất hiện; chỉ những thiết bị nào mà chúng ta muốn cho xuất hiện khi khởi động. Chúng ta có thể kích hoạt những thiết bị khác theo yêu cầu bằng việc sử dụng lệnh mount hoặc loại bỏ chúng với lệnh unmount.

• Lệnh mount. Lệnh này thông báo cho chúng ta về các hệ thống tệp được kích hoạt vào thời điểm đó (hoặc chúng là những thiết bị thực sự hoặc các hệ thống tệp ảo như /proc). Chúng ta cũng có thể có được các thông tin này từ tệp /etc/mtab.

• Lệnh df -k. Lệnh này thông báo cho chúng ta về các hệ thống tệp lưu trữ và cho phép chúng ta kiểm tra không gian được sử dụng và không gian sẵn sàng. Đây là một lệnh cơ bản cho việc kiểm soát không gian đĩa sẵn sàng.

Đối với lệnh df -k này, một trong những nhiệm vụ cơ bản của chúng ta như một người quản trị hệ thống là kiểm soát các tài nguyên hệ thống và, trong trường hợp này, không gian sẵn sàng trong các hệ thống tệp được sử dụng. Những kích thước này phải được giám sát khá thường xuyên để tránh đổ vỡ một hệ thống; một hệ thống tệp là nhiều daemon tiến trình thường ghi các thông tin tạm thời hoặc các lưu ký log, có thể sinh ra một số lượng lớn các thông tin; một trường hợp đặc biệt là việc các tệp lõi mà chúng ta đã nhắc tới, có thể liên quan tới các tệp rất lớn (phụ thuộc vào tiến trình). Thông thường, một số sự phòng ngừa nên được thực hiện có tính tới việc làm sạch hệ thống nếu thấy có bất kỳ sự bão hòa nào của hệ thống tệp được phát hiện ra:

• Hạn chế các tệp tạm thời. Các thư mục /tmp và /var/tmp có xu hướng cộng dồn nhiều tệp được tạo ra từ những người sử dụng hoặc các ứng dụng khác nhau. Một số hệ thống hoặc phát tán thực hiện các biện pháp làm sạch tự động, như việc dọn sạch /tmp mỗi lần hệ thống khởi động.

• Các lưu ký logs: việc tránh sự gia tăng quá đáng, theo cấu hình hệ thống (ví dụ, Syslogd), khi thông tin do các thông điệp tạo ra có thể rất lớn. Thông thường, hệ thống sẽ phải được làm sạch thường xuyên, khi số lượng không gian nhất định nào đó bị chiếm và, trong mọi trường hợp, nếu chúng ta cần thông tin cho các phân tích sau này, thì những sao lưu có thể được thực hiện trong các thiết bị tháo lắp được. Tiến trình này có thể được tự động hóa bằng việc sử dụng các scripts cron hoặc sử dụng các công cụ đặc chủng như logrotate.

• Có những phần khác của hệ thống có xu hướng phát triển rất nhiều, như là: a) các tệp lõi của người sử dụng: chúng ta có thể xóa chúng theo chu kỳ hoặc hạn chế sự sinh sôi của chúng; b) hệ thống thư điện tử: lưu trữ tất cả các thư điện tử được gửi và nhận; chúng ta có thể yêu cầu

Trang 170/471

Page 171: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

người sử dụng dọn chúng một cách thường xuyên hoặc triển khai một hệ thống khẩu phần quota; c) các bộ nhớ lưu tạm thời cache của các trình duyệt hoặc các ứng dụng khác; các yếu tố khác mà chúng thường chiếm nhiều không gian, mà đòi hỏi việc dọn dẹp thường xuyên, là: d) các tài khoản của bản thân những người sử dụng: họ có thể có những khẩu phần quota sao cho các không gian được phân bổ được thiết lập từ trước sẽ không vượt quá được...

Trang 171/471

Page 172: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.4. Các hệ thống tệp

Trong mỗi máy với một hệ thống GNU/Linux, chúng ta sẽ thấy các dạng khác nhau của các hệ thống tệp. [Hin].

Để bắt đầu, điển hình để tìm các hệ thống tệp Linux thực sự được tạo ra trong một loạt các phân vùng của các đĩa [Koe]. Cấu hình điển hình là phải có 2 phân vùng: điều đó tương ứng với “/” (hệ thống tệp root) và tệp hoán đổi (swap file) tương ứng. Mặc dù, trong các cấu hình chuyên nghiệp hơn, thường phải tách biệt các phân vùng với các phần “phân biệt được” của hệ thống, một kỹ thuật điển hình là, ví dụ (chúng ta sẽ xem xét các lựa chọn khác sau), để tạo ra các phân vùng khác nhau thế này:

/ /boot /home /opt /tmp /usr /var swap

Chúng chắc chắn sẽ được kích hoạt từ các nguồn khác nhau (các đĩa khác nhau, hoặc ngay cả mạng trong một số trường hợp). Ý tưởng này là để tách biệt một cách rõ ràng các phần tĩnh và động của hệ thống, vì thế để dễ dàng hơn cho việc mở rộng các phân vùng khi bất kỳ vấn đề gì quá tải nảy sinh. Hoặc cô lập dễ dàng hơn các phần để tiến hành các sao lưu (ví dụ, các tài khoản người sử dụng trong phân vùng /home).

Các phân vùng hoán đổi là các phân vùng dạng hoán đổi của Linux và chúng tương ứng với / có xu hướng trở thành một trong những hệ thống tệp chuẩn, hoặc ext2 (dạng mặc định cho tới các nhân 2.4), hoặc các dạng mới ext3, ext4, mà chúng là những nâng cấp của ext2 có việc ghi lưu ký làm cho có khả năng có một lưu ký log của những gì có trong hệ thống tệp, cho những việc phục hồi nhanh hơn trong trường hợp có lỗi. Các dạng hệ thống tệp khác, như Reiser hoặc XFS cũng là điển hình.

Cấu hình điển hình khác có thể là việc có 3 phân vùng: /, swap, /home, trong đó thì /home sẽ được sử dụng cho các tài khoản của người sử dụng. Điều này làm cho có khả năng để tách các tài khoản của người sử dụng hệ thống, cô lập 2 phân vùng riêng biệt và phân bổ không gian cần thiết cho các tài khoản trong phân vùng khác.

Cấu hình khác được sử dụng một cách rộng rãi là việc tách biệt các phần tĩnh của hệ thống khỏi các phần động, trong các phân vùng khác nhau, ví dụ, một phân vùng được sử dụng cho việc đặt / với phần tĩnh (/bin /sbin và /usr trong một số trường hợp), mà không được mong đợi tăng trưởng, hoặc, nếu có, thì không nhiều, và một loạt các phân vùng khác với phần động (/var /tmp /opt), giả thiết là /opt, ví dụ, là điểm cài đặt cho phần mềm mới. Điều này làm cho có khả năng chỉnh tốt hơn không gian đĩa và để lại nhiều không gian hơn cho các phần của hệ thống mà chúng là cần thiết.

Ở những nơi mà các hệ thống tệp được hỗ trợ được quan tâm, chúng ta phải chỉ ra sự đa dạng của chúng; chúng ta có thể thấy như hiện hành (với những thứ khác):

• Các hệ thống liên quan tới GNU/Linux, như các chuẩn ext2, ext3 và ext4, được phát triển từ khái niệm trước về ghi lưu ký (hỗ trợ lưu ký log cho các hoạt động được thực hiện trong hệ thống tệp

Trang 172/471

Lưu ý

Tài liệu dạy cách làm (Howto) của các hệ thống tệp đưa ra những giải thích ngắn gọn của một loạt các hệ thống tệp cũng như các website mà bạn có thể tham vấn cho từng hệ thống tệp này.

Page 173: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cho phép chúng ta phục hồi lại nó trong trường hợp có bất kỳ thảm họa nào làm cho nó không ổn định.

• Tính tương thích với các môi trường không phải GNU/Linux: MSDOS, VFAT, NTFS, truy cập tới các hệ thống khác của FAT16, FAT32 và NTFS. Đặc biệt, chúng ta phải chỉ ra rằng sự hỗ trợ nhân, trong trường hợp của nhân, là chỉ đọc. Nhưng, như chúng ta đã nhắc tới, có những giải pháp cho không gian của người sử dụng (thông qua FUSE, một module nhân cho phép chúng ta ghi các hệ thống tệp trong không gian của người sử dụng), nó làm cho việc đọc/ghi là có khả năng, như NTFS-3g được nhắc tới ở trên. Cũng có tính tương thích với các môi trường khác như Mac với HFS và HFSplus.

• Các hệ thống có liên quan tới những hỗ trợ vật lý, như CD/DVD, ví dụ như ISO9660 và UDE.

• Các hệ thống được sử dụng trong các UNIX khác nhau, mà thường cung cấp hiệu năng tốt hơn (đôi khi ở giá thành của sự tiêu dùng lớn hơn các tài nguyên, trong CPU, ví dụ thế), như JFS2 (IBM), XFS (SGI), hoặc ReiserFS.

• Các hệ thống tệp mạng (truyền thống hơn): NFS, Samba (smbfs, cifs), cho phép chúng ta truy cập các hệ thống tệp sẵn sàng trong các máy khác một cách trong suốt khi sử dụng mạng.

• Các hệ thống được phân tán trong mạng: như GFS, Coda.

• Các hệ thống tệp bí danh (Pseudo), như procfs (/proc) hoặc sysfs (/sys).

Trong hầu hết các hệ thống tệp (ngoại trừ trong một số trường hợp đặc biệt), GNU/Linux sẽ cho phép chúng ta tạo ra các phân vùng của các dạng này, xây dựng các hệ thống tệp của dạng được yêu cầu và kích hoạt chúng (mount) như một phần tích hợp của cây thư mục, hoặc tạm thời hoặc vĩnh viễn.

5.4.1. Điểm kích hoạt

Bỏ qua một bên hệ thống tệp /root và các phân vùng ngoài có khả năng của nó (/usr /var /tmp /home), nên nhớ rằng có khả năng để lại các điểm kích hoạt được chuẩn bị cho việc kích hoạt các hệ thống tệp khác, hoặc chúng là các phân vùng đĩa hoặc các thiết bị lưu trữ khác.

Trong các máy trong đó GNU/Linux chia sẻ phân vùng với các hệ điều hành khác, thông qua một số trình tải khởi động (lilo hoặc grub), có thể một loạt các phân vùng được chỉ định cho các hệ điều hành khác nhau. Thường là tốt để chia sẻ các dữ liệu với các hệ thống này, hoặc cho việc đọc hoặc sửa đổi các tệp của chúng. Không giống như các hệ thống khác (mà chỉ đăng ký các dữ liệu và hệ thống tệp của riêng chúng và trong một loạt những thứ đó một số các hệ thống tệp thực sự sẽ không được hỗ trợ), GNU/Linux có khả năng xử lý, như chúng ta đã thấy, một số lượng khổng lồ các hệ thống tệp từ các hệ điều hành khác nhau và chia sẻ các thông tin.

Ví dụ

Nếu chúng ta đã cài đặt GNU/Linux trong các máy tính cá nhân PC, chúng ta sẽ chắc chắn thấy nhiều hơn một hệ điều hành, ví dụ, phiên bản khác của GNU/Linux với ext2 hoặc ext3 của hệ thống tệp, chúng ta có thể thấy một MSDOS cũ với hệ thống tệp FAT của nó, một Windows98/ME/XP Home với FAT32 (hoặc VFAT cho Linux), hoặc một WindowsNT/2000/XP/Vista với các hệ thống NTFS (NTFS cho Linux) và FAT32 (VFAT) cùng một lúc.

Hệ thống GNU/Linux của chúng ta có thể đọc các dữ liệu (nói cách khác, các tệp và thư mục) từ tất cả

Trang 173/471

Page 174: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các hệ thống tệp này và ghi được trong hầu hết chúng.

Trong trường hợp của NTFS, cho tới các điểm nhất định nào đó, đã có những vấn đề với việc ghi, mà đã có thực nghiệm trong hầu hết các trình điều khiển nhân mà chúng đã xuất hiện. Chính do những phiên bản khác nhau của hệ thống tệp mà đã xuất hiện một cách tăng dần, khi đã có 2 phiên bản chính được gọi là NTFS và NTFS2, và một số mở rộng như các khối động (dynamic volume) hoặc các hệ thống tệp được mã hóa. Và việc truy cập với các trình điều khiển nhất định nào đó đã gây ra những sự không tương thích nhất định nào đó, có thể gây ra trong sự hỏng dữ liệu hoặc có lỗi trong hệ thống tệp.

Nhờ có FUSE, một module được tích hợp trong nhân (như phiên bản 2.6.11), đã có khả năng để phát triển các hệ thống tệp mềm dẻo hơn, trực tiếp trong không gian của người sử dụng (trên thực tế, FUSE hành động như một “cầu nối” giữa các yêu cầu của nhân, và sự truy cập từ trình điều khiển).

Nhờ có những tính năng của FUSE, chúng ta có ít nhiều sự hỗ trợ hoàn chỉnh cho NTFS, (miễn là Microsoft không tiến hành bất kỳ thay đổi gì nữa đối với các đặc tả kỹ thuật), đặc biệt khi và sự xuất hiện của trình điều khiển (dựa trên FUSE) NTFS-3g (http://www.ntfs-3g.org), và sự kết hợp với các tiện ích của ntfsprogs.

Phụ thuộc vào các phát tán, các hệ thống tệp khác nhau được sử dụng, hoặc tự chúng ta cũng có thể tạo ra nó. Thông thường, chúng tồn tại hoặc như các thư mục con của root, ví dụ, /cdrom/win/floppy hoặc các thư mục con bên trong của /mnt, điểm kích hoạt (mount) chuẩn (chúng xuất hiện như là /mnt/cdrom/mnt/floppy...), hoặc thư mục /media, mà nó gần đây được các phát tán ưa sử dụng. Theo chuẩn FHS, /mnt nên được sử dụng cho việc kích hoạt một cách tạm thời các hệ thống tệp, trong khi /media nên được sử dụng để kích hoạt các thiết bị tháo lắp được.

Tiến trình kích hoạt này được thực hiện thông qua lệnh mount, với định dạng sau:

mount -t filesystems-type device mount - point

Dạng của hệ thống tệp có thể: MSDOS (FAT), VFAT (FAT32), NTFS (đọc NTFS), ISO9660 (cho CD-ROM)... (những hệ thống tệp có thể khác).

Thiết bị này ở tại điểm trong thư mục /dev tương ứng với vị trí của thiết bị, IDE có /dev/hdxy nơi mà x là a, b, c hoặc d (1 master, 1 slave, 2 master, 2 slave) e và, số các phân vùng, SCSI (/dev/sdx) nơi mà x là a, b, c, d... (theo SCSI ID, 0, 1, 2, 3, 4, … có liên quan).

Chúng ta bây giờ sẽ xem xét một số ví dụ:

mount -t iso9660 /dev/hdc /mnt/cdrom

Điều này có thể kích hoạt CD-ROM (nếu nó là IDE mà trong IDE thứ 2 trong chế độ master) tại điểm /mnt/cdrom.

mount -t iso9660 /dev/cdrom /mnt/cdrom

Điều này có thể kích hoạt CD-ROM; /dev/cdrom được sử dụng như một thứ đồng nghĩa (đây là một liên kết) cho thiết bị nơi mà nó được kết nối.

mount -t vfat /dev/fdOH1440 /mnt/floppy

Điều này có thể kích hoạt đĩa mềm, /dev/fd0H1440. Nó có thể là một ổ đĩa A mật độ cao (1.44 MB);

Trang 174/471

Page 175: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/dev/fd0 cũng có thể được sử dụng.

mount -t ntfs /dev/hda2 /mnt/winXP

Điều này có thể kích hoạt phân vùng thứ 2 của thiết bị IDE đầu tiên dạng NTFS (C:) (Ví dụ, một Windows XP).

Nếu các phân vùng này ít nhiều ổn định trong hệ thống (nói cách khác, chúng không bị thay đổi thường xuyên) và muốn sử dụng chúng, thì thứ tốt nhất sẽ là đưa những phần kích hoạt này vào sao cho chúng chiếm chỗ trong giai đoạn thực hiện, khi khởi động hệ thống, thông qua cấu hình của tệp /etc/fstab:

# /etc/fstab: Thông tin tĩnh về hệ thống tệp

Tệp hệ thống Điểm mount Dạng Các lựa chọn Dump Pass

/dev/hdb2 / ext3 Errors = remountro 0 1

/dev/hdb3 none swap sw 0 0

proc /proc proc Các mặc định 0 0

/dev/fdo /floppy auto User, noauto (không tự động) 0 0

/dev/cdrom /cdrom ISO9660 Ro, user, noauto (không tự động) 0 0

/dev/sdb1 /mnt/usb vfat User, noauto 0 0

Ví dụ, cấu hình này bao gồm một số các hệ thống chuẩn, như root trong /dev/hda2, phân vùng hoán đổi trong hdb3, hệ thống proc (sử dụng nhân để lưu thông tin của nó). Đĩa mềm, CD-ROM và, trong trường hợp này, một đĩa USB đạng Flash (được dò tìm ra như một thiết bị SCSI). Trong một số trường hợp, auto (tự động) được chỉ định như một dạng của hệ thống tệp. Điều này cho phép sự dò tìm tự động của hệ thống tệp. Nếu không biết, sẽ là tốt hơn để chỉ ra nó trong cấu hình này và, trong một lưu ý khác, lựa chọn noauto (không tự động) sẽ có nghĩa là không phải luôn luôn kích hoạt được một cách tự động, mà phụ thuộc vào yêu cầu (hoặc sự truy cập).

Nếu chúng ta có thông tin này trong tệp, thì tiến trình kích hoạt được đơn giản hóa, khi mà nó sẽ xảy ra hoặc trong sự thực thi, khi khởi động máy, hoặc theo yêu cầu (không tự động). Và nếu bây giờ có thể thực hiện được bằng việc chỉ đơn giản yêu cầu là điểm kích hoạt hoặc thiết bị được kích hoạt:

mount /mnt/cdrom

mount /dev/fd0

biết rằng hệ thống đã có phần còn lại của thông tin

Tiến trình ngược lại, giải hoạt, hoàn toàn đơn giản, lệnh umount với điểm hoặc thiết bị kích hoạt:

umount /mnt/cdrom

umount /dev/fd0

Trang 175/471

Page 176: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Khi sử dụng các thiết bị tháo lắp được, như CD-ROM (hoặc những thứ khác), eject (đẩy [đĩa CD] ra) có thể được sử dụng để thoát khỏi sự hỗ trợ vật lý:

eject /dev/cdrom

hoặc, trong trường hợp này, chỉ:

eject

Các lệnh mount và umount sẽ kích hoạt hoặc giải hoạt tất cả các hệ thống sẵn sàng. Tệp /etc/mtab duy trì một danh sách các hệ thống được kích hoạt tại một thời điểm, có thể được tham vấn, hoặc một sự kích hoạt, mà không có các thông số, có thể chạy được để có được thông tin.

5.4.2. Các quyền

Một chủ đề khác mà chúng ta sẽ phải kiểm soát trong các trường hợp của các tệp và thư mục là các quyền mà chúng ta mong muốn thiết lập cho chúng, trong khi nhớ rằng mỗi tệp đó có thể có một loạt các quyền: rwxrwxrwx, nơi mà chúng tương ứng với người sở hữu rwx, nhóm rwx mà người sử dụng thuộc về, và rwx cho những người sử dụng khác. Trong từng trường hợp, chúng ta có thể thiết lập các quyền truy cập cho việc đọc (r), ghi (w) hoặc chạy (x). Trong trường hợp của một thư mục, x ngụ ý quyền cho khả năng truy cập tới thư mục đó (với lệnh cd, ví dụ thế).

Để sửa đổi các quyền truy cập tới một thư mục hoặc tệp, chúng ta có các lệnh:

• chown: thay đổi người sở hữu của tệp

• chgrp: thay đổi nhóm của người sở hữu tệp

• chmod: thay đổi các quyền cụ thể (rwx) của các tệp.

Các lệnh này cũng cung cấp lựa chọn R, là đệ qui nếu ảnh tác động tới một thư mục.

Trang 176/471

Page 177: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.5. Người sử dụng và nhóm

Những người sử dụng của một hệ thống GNU/Linux thường có một tài khoản có liên quan (được xác định với một số dữ liệu và ưu tiên của họ) cùng với một lượng không gian đĩa được phân bổ trong đó họ có thể tạo các thư mục và các tệp của họ. Không gian này được phân bổ cho người sử dụng và chỉ có thể được sử dụng bởi người sử dụng (trừ phi có các quyền chỉ định khác).

Trong số các tài khoản có liên quan tới những người sử dụng, chúng ta có thể thấy các dạng khác nhau:

• Tài khoản của người quản trị, với số chứng minh (identifier) gốc root, chỉ sử dụng được cho các hoạt động quản trị. Người sử dụng root là một người sử dụng với hầu hết các quyền và sự truy cập toàn phần tới máy tính và các tệp cấu hình. Hệ quả là, người sử dụng này cũng là người mà hầu hết sự gây hại có thể gây ra vì bất kỳ lỗi hoặc sự sai sót nào. Tốt hơn để tránh việc sử dụng tài khoản root nếu như nó là thứ của chỉ người sử dụng khác; vì thế được khuyến cáo rằng nó chỉ nên được sử dụng cho các hoạt động quản trị.

• Các tài khoản của người sử dụng: các tài khoản thông thường cho bất kỳ người sử dụng máy tính nào có các quyền được hạn chế cho việc sử dụng các tệp của tài khoản của họ và cho một số vùng đặc biệt (ví dụ, các tệp tạm thời trong /tmp), và đối với việc sử dụng các thiết bị cụ thể nào đó mà họ đã được xác thực để sử dụng.

• Các tài khoản dịch vụ đặc biệt: các tài khoản lp, news, wheel, www-data... mà chúng được các dịch vụ nội bộ của hệ thống, chứ không phải mọi người, sử dụng, khi mà các dịch vụ nội bộ của hệ thống sử dụng các tài khoản dịch vụ đặc biệt theo các tên của người sử dụng đó. Một số các dịch vụ cũng được sử dụng theo tài khoản của root.

Một tài khoản người sử dụng thường được tạo ra bằng việc chỉ định một tên (hoặc số chứng minh người sử dụng), một mật khẩu và một thư mục cá nhân có liên quan (tới tài khoản).

Thông tin về người sử dụng của hệ thống được đưa vào trong các tệp sau:

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

Ví dụ của một số dòng của /etc/passwd:

juan:x:1000:1000:Juan Garcia, , , : /home/juan:/bin/bash

root:x:0:0:root:/root:/bin/bash

trong đó (nếu :: xuất hiện cùng, thì hộp là rỗng):

• juan: số chứng minh của người sử dụng hệ thống

Trang 177/471

Page 178: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• x: mật khẩu được mã hóa của người sử dụng; ;nếu có một “x” thì nó được lưu trong tệp /etc/shadow.

• 1000: mã của người sử dụng, mà hệ thống sử dụng như là mã xác thực người sử dụng.

• 1000: mã của nhóm chính mà người sử dụng thuộc về nó, thông tin của nhóm này nằm trong /etc/group.

• Juan Garcia: ghi chú, thường là tên đầy đủ của người sử dụng.

• /home/juan: thư mục cá nhân có liên quan tới tài khoản của anh ta.

• /bin/bash: trình biên dịch lệnh tương tác mà người sử dụng dùng khi tương tác với hệ thống, ở chế độ văn bản, hoặc thông qua trình biên dịch lệnh đồ họa. Trong trường hợp này, GNU Bash, mà là trình biên dịch lệnh được sử dụng một cách mặc định. Tệp /etc/passwd được sử dụng để chứa các mật khẩu của người sử dụng ở dạng được mã hóa, nhưng vấn đề là bất kỳ người sử dụng nào cũng có thể thấy được tệp này, tại thời điểm, những vụ trộm đã được thiết kế để cố gắng tìm ra các mật khẩu một cách trực tiếp bằng việc sử dụng mật khẩu được mã hóa ngay từ đầu (từ được mã hóa với hệ thống mật mã).

Để tránh điều này, các mật khẩu không còn được đặt trong tệp này nữa; chỉ một “x” là có, để chỉ định rằng chúng được đặt trong tệp khác, mà chỉ có thể đọc được bởi người sử dụng root, /etc/shadow, các nội dung của nó có thể là thứ gì đó tương ứng với thứ sau đây:

juan: a1gNcs82ICst8CjVJS7ZFCVnu0N2pBcn/ :12208:0:99999:7: : :

trong đó số chứng minh của người sử dụng được đặt, cùng với mật khẩu được mã hóa. Hơn nữa, chúng xuất hiện như những khoảng trống cách nhau bởi “:”:

• Những ngày kể từ 01/01/1970 trong đó mật khẩu đã được đổi lần cuối cùng.

• Những ngày còn lại cho nó sẽ bị thay đổi (0 là nó không thể bị thay đổi).

• Những ngày sau đó mật khẩu phải được thay đổi (nói cách khác, chu kỳ thay đổi).

• Những ngày trong đó người sử dụng sẽ được cảnh báo trước khi mật khẩu hết hạn.

• Những ngày, sau khi hết hạn, sau đó tài khoản sẽ được vô hiệu hóa.

• Những ngày kể từ 01/01/1970 tài khoản này đã bị vô hiệu hóa.

• Và một khoảng trống được dự trữ.

Hơn nữa, các mã của sự mã hóa có thể khó hơn, vì bây giờ có khả năng sử dụng một hệ thống được gọi là md5 (thường xuất hiện như một lựa chọn khi cài đặt hệ thống) để bảo vệ các mật khẩu của người sử dụng. Chúng ta sẽ xem xét một số chi tiết hơn trong phần về an ninh.

Trong /etc/group chúng ta sẽ thấy thông tin trong các nhóm người sử dụng:

jose:x:1000 :

trong đó chúng ta có:

Trang 178/471

Page 179: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tên-nhóm: mật-khẩu-của-nhóm: số-chứng-minh-của–nhóm: danh-sách-những-người-sử-dụng

(name-group: password-group: identifier-of-group: list-users)

Danh sách của những người sử dụng trong nhóm có thể có hoặc có thể không hiện diện; biết rằng thông tin này là đã có trong /etc/passwd, thường không được đặt trong /etc/group. Nếu nó được đặt ở đó, nó thường xuất hiện như một danh sách những người sử dụng được cách biệt nhau bởi dấu phẩy. Các nhóm cũng có thể đặt ra một mật khẩu có liên quan (mặc dù điều này là không phổ biến), như trong trường hợp của người sử dụng, cũng có một tệp bảo vệ: /etc/gshadow.

Các tệp thú vị khác là những tệp trong thư mục /etc/skel, chứa các tệp được đưa vào trong từng tài khoản của người sử dụng khi nó được tạo ra. Chúng ta phải nhớ rằng, khi chúng ta thấy các trình biên dịch lệnh tương tác, thì chúng ta có thể có một số scripts cấu hình mà chúng chạy khi chúng ta vào hoặc ra khỏi tài khoản. “Bộ khung xương” được sao chép trong tài khoản của người sử dụng khi chúng được tạo ra, được lưu giữ trong thư mục skel. Người quản trị thường có trách nhiệm về việc tạo ra các tệp phù hợp cho những người sử dụng, cung cấp các đường dẫn thi hành cần thiết, khởi tạo các biến hệ thống cần thiết cho phần mềm …

Chúng ta sẽ thấy một loạt các lệnh hữu dụng cho quản trị của người sử dụng (chúng ta sẽ nhắc tới các hàm của chúng và thực hiện một số thử nghiệm trong thảo luận):

• useradd: bổ sung một người sử dụng vào hệ thống

• userdel: để xóa một người sử dụng khỏi hệ thống

• usermod: để sửa đổi một người sử đụng của hệ thống

• groupadd, groupdel, groupmod là các lệnh y hệt cho các nhóm.

• newusers, chpasswd: những lệnh này có thể rất hữu dụng trong các cài đặt triển khai rộng với nhiều người sử dụng, vì chúng cho phép chúng ta tạo một loạt các tài khoản từ thông tin được đưa vào trong một tệp newusers hoặc thay đổi các mật khẩu cho một số lượng lớn những người sử dụng. (chpasswd).

• chsh: để thay đổi trình biên dịch lệnh đăng nhập của người sử dụng.

• chfn: để thay đổi thông tin người sử dụng thể hiện trong tệp ghi chú /etc/passwd.

• passwd: để thay đổi một mật khẩu người sử dụng. Điều này người sử dụng có thể thực hiện được, và sau đó nó sẽ yêu cầu mật khẩu cũ và mật khẩu mới. Khi làm điều này, tài khoản root phải chỉ định người sử dụng với mật khẩu sẽ được thay đổi (nếu không, chúng có thể thay đổi mật khẩu của tài khoản) và mật khẩu cũ là không còn cần thiết nữa. Đây có lẽ là lệnh mà root sử dụng nhiều nhất, khi những người sử dụng quên mất mật khẩu cũ của họ.

• su: một dạng thay đổi xác minh. Nó được sử dụng cả bởi người sử dụng và bởi root để thay đổi người sử dụng hiện hành. Trong trường hợp của người quản trị, được sử dụng khá nhiều để thử nghiệm rằng tài khoản của người sử dụng làm việc đúng; có những phương án khác nhau: su (không có các thông số, phục vụ để chuyển sang người sử dụng root, sau khi xác minh, làm cho có khả năng để chúng ta để vượt qua, khi chúng ta đang ở trong một tài khoản của người sử dụng, sang tài khoản của root để thực hiện một nhiệm vụ nào đó). Câu của IDuser của su (thay

Trang 179/471

Page 180: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

đổi người sử dụng sang Iduser, nhưng để lại môi trường như nó có, nói cách khác, trong cùng thư mục...). su - IDuser bắt buộc (mà nó thực hiện một sự thay thế, dường như người sử dụng thứ 2 đã đăng nhập vào hệ thống).

Về sự quản trị của những người sử dụng và nhóm, những gì chúng ta đã nhắc tới ở đây tham chiếu tới sự quản trị cục bộ của một máy duy nhất. Trong các hệ thống với nhiều máy tính mà những người sử dụng chia sẻ, một hệ thống quản trị khác được sử dụng cho các thông tin của những người sử dụng. Các hệ thống này, thường được gọi là các hệ thống thông tin mạng, như NIS, NIS+ hoặc LDAP, sử dụng các cơ sở dữ liệu cho việc lưu giữ các thông tin về những người sử dụng và nhóm, sử dụng có hiệu quả các máy chủ, nơi mà cơ sở dữ liệu và các máy trạm khác được lưu giữ và nơi mà thông tin có thể được tham vấn. Điều này làm cho có khả năng để có một bản sao duy nhất các dữ liệu của người sử dụng (hoặc nhiều bản sao khác nhau được đồng bộ hóa) và làm cho có khả năng để trình bày một cách phù hợp các tài nguyên và sự sử dụng của chúng trong các tổ chức với các cấu trúc tổ chức khác nhau cho các phòng nhân sự và nội bộ của riêng họ.

Chúng ta có thể kiểm tra liệu chúng ta có ở trong một môi trường dạng NIS hay không bằng việc xem liệu compat có xuất hiện trong dòng passwd và tệp cấu hình của nhóm, /etc/nsswitch.conf, nếu chúng ta đang làm việc với các tệp cục bộ, hoặc NIS hoặc NISPLUS theo hệ thống mà trong đó chúng ta đang làm việc. Thông thường, điều này không liên quan tới bất kỳ sự sửa đổi nào đối với người sử dụng đơn giản, vì các máy tính được quản lý một cách trong suốt, hơn thế nếu nó được kết hợp với các tệp được chia sẻ bởi NFS mà chúng làm cho tài khoản này sẵn sàng, bất chấp máy tính nào được sử dụng. Hầu hết các lệnh được nhắc tới ở trên còn có thể được sử dụng mà không có bất kỳ vấn đề gì theo NIS hoặc NIS+, trong đó chúng là tương đương nhau, ngoại trừ lệnh đối với việc thay đổi mật khẩu, mà nó, thay vì là passwd, chúng ta thường sử dụng yppasswd (NIS) hoặc nispasswd (NIS+); mặc dù nó là điển hình cho người quản trị để đổi tên chúng thành passwd, (thông qua một liên kết), mà nó có nghĩa là những người sử dụng sẽ không để ý tới sự khác biệt.

Chúng ta sẽ xem xét điều này và các phương pháp khác để thiết lập cấu hình cho các đơn vị quản trị mạng.

Trang 180/471

Page 181: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.6. Các dịch vụ in ấn

Máy chủ in của GNU/Linux [Gt] [Smi02] bắt nguồn từ một biến thể BSD UNIX; hệ thống này được gọi là LPD (daemon máy in dòng - line printer daemon). Đây là một hệ thống in rất mạnh, vì nó tích hợp khả năng quản lý cả các máy in cục bộ và mạng. Và nó cung cấp dịch vụ này bên trong hệ thống cho cả máy chủ in và các máy trạm.

LPD là một hệ thống khá cũ, khi ban đầu nó từng là nhánh BSD của UNIX (giữa những năm 1980). Hệ quả là, LPD thường thiếu sự hỗ trợ cho các thiết bị hiện đại, biết rằng hệ thống ngay từ đầu không được thừa nhận cho dạng công việc in ấn đang có hiện nay. Hệ thống LPD đã không được thiết kế như một hệ thống dựa trên các trình điều khiển thiết bị, vì nó từng điển hình để sản sinh ra chỉ những máy in theo loạt hoặc song song cho việc ghi các ký tự văn bản.

Hiện hành, hệ thống LPD kết hợp với các phần mềm chung khác, như hệ thống Ghostscript, đưa ra một đầu ra dạng postscript cho một dãy lớn các máy in có các trình điều khiển đúng cho chúng. Cùng lúc, chúng thường được kết hợp với các phần mềm lọc, mà, phụ thuộc vào dạng của tài liệu phải được in, chọn ra những bộ lọc phù hợp. Thường thì, thủ tục phải được tuân theo là (cơ bản) như sau:

1) Công việc được bắt đầu bằng một lệnh trong hệ thống LPD.

2) Hệ thống lọc xác minh dạng công việc (hoặc tệp) phải được sử dụng và truyền công việc vào trong tệp postscript đi ra, là thứ được gửi cho máy in. Trong GNU/Linux và UNIX, hầu hết các ứng dụng giả thiết rằng công việc sẽ được gửi tới một máy in postscript và nhiều trong số chúng sẽ tạo ra một cách trực tiếp một đầu ra postscript, nó giải thích vì sao bước sau đây là cần thiết phải được thực hiện.

3) Ghostscript phải dịch các tệp postscript nó nhận được, và, phụ thuộc vào trình điều khiển của máy in mà tệp này được gửi tới, nó thực hiện sự chuyển dịch sang định dạng của riêng trình điều khiển. Nếu máy in là một máy in dạng postscript, thì tiến trình in là trực tiếp; nếu không, nó phải “dịch” công việc. Công việc này được gửi cho hàng đợi in.

Bỏ qua một bên hệ thống in LPD (được sinh ra với BSD UNIX), cũng còn có hệ thống được gọi là System V (ban đầu trong nhánh của UNIX System V). Thông thường, vì những lý do của tính tương thích, hầu hết các hệ thống UNIX tích hợp cả các hệ thống, sao cho hoặc một hệ thống này hoặc hệ thống kia được sử dụng như là hệ thống chính và hệ thống kia mô phỏng hệ thống chính. Trong trường hợp của GNU/Linux, một tiến trình tương tự xảy ra, phụ thuộc vào sự cài đặt mà chúng ta có, có thể chỉ có các lệnh LPD của hệ thống in, nhưng nó cũng sẽ là chung để có các lệnh của System V. Một cách đơn giản của việc xác minh 2 hệ thống (BSD hoặc System V) là việc sử dụng lệnh in chính (gửi các công việc tới hệ thống), trong BSD, nó là lpr, và là lp trong System V.

Đây là tình trạng ban đầu cho các hệ thống in của GNU/Linux, mặc dù trong vài năm qua, nhiều hệ thống hơn đã xuất hiện, cung cấp tính mềm dẻo hơn và có nhiều trình điều khiển hơn sẵn sàng cho các

Trang 181/471

Website

LPORng: http://www.lprng.org; CUPS: http://www.cups.org;

Website

Ghostscript: http://www.ghostscript.com/

Lưu ý

Các hệ thống UNIX cung cấp, có thể, các hệ thống in ấn phức tạp và mạnh nhất, cung cấp nhiều tính mềm dẻo cho các môi trường in ấn.

Page 182: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

máy in. Hai hệ thống chính là CUPS và, ở một mức độ nhỏ hơn, LPRng. Trong thực tế, gần đây, CUPS là chuẩn de facto của GNU/Linux, dù các hệ thống khác phải được hỗ trợ cho tính tương thích với các hệ thống UNIX đang tồn tại.

Cả 2 (CUPS và LPRng) đều là dạng của hệ thống mức độ cao, nhưng tất cả chúng đều khác nhau một cách khó nhận biết được đối với những người sử dụng thông thường, về các hệ thống chuẩn BSD và System V; ví dụ, các lệnh cho máy trạm y như nhau (hoặc các lệnh tương thích trong các lựa chọn) được sử dụng cho việc in ấn. Có những khác biệt không nhận biết được cho người quản trị, vì các hệ thống cấu hình là khác nhau. Theo một cách, chúng ta có thể xem xét LPRng và CUPS như những kiến trúc mới cho các hệ thống in ấn, mà chúng tương thích cho người sử dụng xét về các lệnh cũ.

Trong các phát tán GNU/Linux hiện hành, chúng ta có thể thấy các hệ thống in khác nhau. Nếu phát tán là cũ, nó có thể chỉ kết hợp hệ thống BSD LPD; trong các phát tán hiện hành: cả Debian và Fedora/Red Hat đều sử dụng CUPS. Trong các phiên bản cũ hơn của Red Hat, đã có một công cụ, chuyển in, làm cho có khả năng thay đổi hệ thống, chuyển hệ thống in, mặc dù gần đây chỉ có CUPS là sẵn sàng. Trong Debian, có khả năng cài đặt cả 2 hệ thống, nhưng chúng là độc chiếm: chỉ có một hệ thống có thể được sử dụng cho việc in ấn.

Trong trường hợp của Fedora Core, hệ thống in mặc định là CUPS (LPRng đã biến mất trong Fedora Core 4), và công cụ Chuyển In không còn tồn tại nữa, vì nó không còn cần thiết nữa: máy in - cấu hình - hệ thống được sử dụng để cấu hình các thiết bị. Mặc định, Debian sử dụng BSD LPD, nhưng phổ biến là cài đặt CUPS (và chúng ta có thể mong đợi nó sẽ tiếp tục là lựa chọn mặc định trong các phiên bản mới trong tương lai) và LPRng cũng có thể được sử dụng. Hơn nữa, chúng ta phải nhớ rằng chúng ta cũng đã có khả năng (xem trong phần về chuyển đổi) tương tác được với các hệ thống Windows thông qua các giao thức của Samba, đã cho phép bạn chia sẻ các máy in và truy cập các máy in.

Về mỗi hệ thống [Gt]:

• BSD LPD: đây là một hệ thống theo các chuẩn UNIX, và một số ứng dụng giả thiết rằng các lệnh và hệ thống in sẽ là sẵn sàng, cả LPRng và CUPS đều mô phỏng các chức năng và các lệnh BSD LPD cho hệ thống in này. Hệ thống LPOD là sử dụng được nhưng khó cấu hình, đặc biệt đối với việc kiểm soát truy cập, nó giải thích vì sao các phát tán đã chuyển sang các hệ thống khác, hiện đại hơn.

• LPRng: về cơ bản nó đã được thiết kế để thay thế BSD, và vì thế, hầu hết các cấu hình là tương tự và chỉ một số các tệp cấu hình là khác.

• CUPS: đây là dẫn xuất lớn nhất từ BSD gốc và cấu hình là y hệt. Thông tin được cung cấp cho các ứng dụng trên các máy in sẵn sàng (cũng trong cả LPRng). Trong CUPS, cả máy trạm và máy chủ đều phải có phần mềm CUPS.

Hai hệ thống đều mô phỏng các lệnh in của System V.

Đối với việc in của GNU/Linux, một loạt các khía cạnh phải được tính tới.

• Hệ thống in được sử dụng: BSD, LPRng hoặc CUPS.

• Thiết bị in (máy in): có thể có một kết nối cục bộ tới một máy tính hoặc có trên mạng. Các máy in hiện hành có thể được kết nối tới một máy tính sử dụng các kết nối cục bộ, thông qua những

Trang 182/471

Page 183: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

giao diện theo các cổng nối tiếp, song song, USB, … Hoặc chúng có thể chỉ đơn giản có trên mạng, như các máy tính khác, hoặc với các giao thức chủ sở hữu đặc biệt. Những thứ được kết nối tới mạng có thể bản thân chúng thường hành xử như một máy chủ in (ví dụ, nhiều máy in HP laser là những máy chủ in BSD LPD) hoặc chúng có thể được kết nối tới một máy tính hành xử như một máy chủ in cho chúng.

• Các giao thức giao tiếp được sử dụng với máy in hoặc hệ thống in: hoặc là kết nối TCP/IP trực tiếp (ví dụ, một HP với LPD) hoặc kết nối mức độ cao trong TCP/IP, như IPP (CUPS), JetDirect (một số máy in HP)... Thông số này là quan trọng, vì chúng ta phải biết nó để cài đặt được máy in trong hệ thống.

• Các hệ thống lọc được sử dụng: mỗi hệ thống in hỗ trợ một hoặc nhiều hệ thống lọc.

• Các trình điều khiển máy in: trong GNU/Linux, có ít dạng khác hoàn toàn; chúng ta có thể nhắc tới, ví dụ như các trình điều khiển CUPS, của hệ thống hoặc của bên thứ 3 (ví dụ, HP và Epson cung cấp chúng); GIMP, chương trình soạn sửa ảnh cũng có các trình điều khiển được tối ưu hóa cho việc in các ảnh; Fooomatic là một hệ thống quản lý trình điều khiển làm việc với hầu hết các hệ thống (CUPS, LPD, LPRng và những thứ khác); Các trình điều khiển Ghostscript … Trong hầu hết tất cả các máy in, có một hoặc nhiều trình điều khiển trong các tập hợp này.

Về phần máy trạm của hệ thống, các lệnh cơ bản là y hệt cho các hệ thống khác nhau và chúng là các lệnh hệ thống BSD (mỗi hệ thống đều hỗ trợ sự mô phỏng của các lệnh này):

• lpr: một công việc được gửi tới hàng đợi in mặc định (hoặc hàng đợi được chọn), và daemon in (lpd) rồi sau đó gửi nó tới hàng đợi tương ứng và chỉ định cho một số công việc, mà sẽ được sử dụng với các lệnh khác. Thông thường, máy in mặc định có thể được chỉ định bằng biến của hệ thống PRINTER hoặc máy in được xác định và máy in đang tồn tại sẽ được sử dụng hoặc, trong một số hệ thống, hàng đợi lp sẽ được sử dụng (như tên mặc định).

Ví dụ

Lpr ví dụ:

lpr ­Pepson data.txt

Lệnh này gửi tệp data.txt tới hàng đợi in có liên quan tới một máy in mà chúng ta đã xác định như “epson”.

• lpq: điều này cho phép chúng ta xem xét các công việc trong hàng đợi.

Ví dụ

# lpq -P epson

Xếp hàng Người sở hữu Các tệp công việc Tổng Kích thước

Thứ nhất juan 15 data.txt 74578 bytes

Thứ nhì marta 16 Fpppp.F 12394 bytes

Trang 183/471

Website

Thông tin về hầu hết các máy in và trình điều khiển phù hợp có thể thấy ở: http://www.openprinting.org/printer_list.cgi

Page 184: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lệnh này chỉ cho chúng ta các công việc trong hàng đợi, với trật tự và kích thước tương ứng; các tệp có thể xuất hiện với các tên khác nhau, khi điều này phụ thuộc vào việc liệu chúng ta đã gửi chúng với lpr hoặc với ứng dụng khác mà có thể thay đổi các tên khi gửi chúng hoặc nếu bất kỳ bộ lọc nào đã phải được sử dụng khi chuyển đổi chúng hay không.

• Lprm: hạn chế các công việc từ hàng đợi và chúng ta có thể chỉ định một số lượng công việc hoặc người sử dụng, để hủy bỏ các hoạt động này.

Ví dụ

lprm -Pepson 15

Delete the job with ID 15 from the queue. (Xóa công việc với ID 15 khỏi hàng đợi).

Đối với phía quản trị (trong BSD), lệnh chính có thể là lpc; Lệnh này có thể được sử dụng để kích hoạt hoặc giải hoạt các hàng đợi, chuyển các công việc trong trật tự sắp xếp của hàng đợi và kích hoạt hoặc giải hoạt các máy in (các công việc có thể được nhận trong các hàng đợi nhưng chúng sẽ không được gửi tới các máy in).

Chúng ta cũng nên chỉ ra rằng, trong trường hợp của System V, các lệnh in thường cũng sẵn sàng, thường được mô phỏng trên cơ sở của các lệnh BSD. Trong trường hợp của máy trạm, các lệnh này là: lp, lpstat, cancel và, cho các mục tiêu quản trị, lpadmin, accept, reject, lpmove, enable, disable, lpshut.

Trong các phần sau chúng ta sẽ thấy rằng cần thiết phải cấu hình một máy chủ in cho 3 hệ thống chính. Các máy chủ này có thể được sử dụng cả cho việc in cục bộ và những công việc in của các máy trạm mạng (nếu chúng được phép).

5.6.1. BSD LPD

Trong trường hợp của máy chủ BSD LPD, có 2 tệp chính phải được xem xét: một mặt, sự định nghĩa của các máy in trong /etc/printcap và, mặt khác, các quyền truy cập mạng trong /etc/hosts.lpd.

Về các quyền, mặc định, BSD LPD chỉ cung cấp sự truy cập cục bộ tới máy in và, vì thế, nó phải là được phép (bật) trong /etc/hosts.lpd.

Ví dụ

Tệp có thể là:

# file hosts.lpd

second

first.the.com

192.168.1.7

+ @groupnis

-three.the.com

mà có thể chỉ ra rằng có khả năng để in tới một loạt các máy, được liệt kê hoặc bằng tên DNS hoặc bằng địa chỉ IP của chúng. Các nhóm máy thuộc về một máy chủ NIS (groupnis, như được chỉ ra trong ví dụ) có thể được bổ sung hoặc có khả năng từ chối sự truy cập tới vài máy bằng việc chỉ định điều này với một dấu gạch ngang (-).

Trang 184/471

Page 185: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Đối với cấu hình của máy chủ trong /etc/printcap, chúng ta xác định đầu vào, trong đó mỗi đầu vào đại diện cho một hàng đợi của hệ thống in có thể được sử dụng để dừng các công việc in. Hàng đợi có thể liên quan tới một thiết bị cục bộ hoặc một máy chủ ở xa, hoặc đây là một máy in hoặc máy chủ khác.

Những lựa chọn sau đây có thể tồn tại trong mỗi cổng:

• lp =, chỉ thiết bị mà máy in được kết nối tới đó, ví dụ, lp = /dev/lp0 có thể chỉ cổng song song đầu tiên. Nếu máy in là một máy dạng LPD, ví dụ, thì một máy in mạng chấp nhận giao thức LPD (như một máy HP), sau đó chúng ta có thể để hộp chọn rỗng và điền vào thứ sau đây.

• Rm =, địa chỉ với tên hoặc IP của máy ở xa sẽ sử dụng hàng đợi in. Nếu đây là một máy in mạng, thì nó sẽ là địa chỉ máy in này.

• rp =, tên của hàng đợi ở xa, trong máy được chỉ ra trước với rm.

Chúng ta xem xét một ví dụ:

# Local printer input ( � � u vào máy in c �c b �)

lp|epson|Epson C62:\

:lp=/dev/lp1:sd=/var/spool/lpd/epson:\

:sh:pw#80:pl#72:px#1440:mx#0:\

:if = /etc/magicfilter/StylusColor@720dpi-filter:\filter

:af = /var/log/lp-acct:lf = /var/log/lp-errs:

# Remote printer input ( � � u vào máy in � xa)

hpremote|hpr|remote hp of the department|:\

:lp = :\

:rm = server:rp = queuehp:\

:lf = /var/adm/lpd_rem_errs:\log file.

:sd = /var/spool/lpd/hpremote:local associated spool

5.6.2. LPRng

Trong trường hợp của hệ thống LPRng, vì điều này đã được thực hiện để duy trì tính tương thích của BSD, và, trong số những cải tiến khác đối với sự truy cập, hệ thống là tương thích theo những khái niệm về cấu hình các hàng đợi và điều này được thể hiện thông qua cùng định dạng tệp, /etc/printcap, với một số hoạt động thực chất bổ sung.

Nơi mà cấu hình là khác về sự truy cập: trong trường hợp này, chúng ta thường có sự truy cập thông qua một tệp /etc/lpd.perms là chung cho toàn bộ hệ thống và cũng có thể là những cấu hình riêng rẽ cho từng hàng đợi với tệp lpd.perms được đặt trong thư mục tương ứng với hàng đợi, thường là

Trang 185/471

Page 186: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/var/spool/lpd/tên-hàng-đợi.

Các tệp lpd.perms có một khả năng lớn hơn cho việc cấu hình cho sự truy cập và cho phép các lệnh cơ bản sau:

DEFAULT ACCEPT

DEFAULT REJECT

ACCEPT [key = value [, value]* ]*

REJECT [key = value [, value]* ]*

trong đó 2 cái đầu cho phép chúng ta thiết lập giá trị mặc định, về việc chấp nhận mọi thứ hoặc từ chối mọi thứ, và 2 cái sau là về việc chấp nhận hoặc từ chối một cấu hình cụ thể trong dòng. Có khả năng chấp nhận (hoặc từ chối) những yêu cầu từ một máy chủ host cụ thể, cổng của người sử dụng hoặc IP. Cũng vậy, có khả năng cấu hình cho dạng dịch vụ sẽ được cung cấp cho yếu tố: X (có thể được kết nối), P (công việc in), Q (hàng đợi được kiểm tra với lpq), M (loại bỏ các công việc khỏi hàng đợi, lprm), C (kiểm soát các máy in, lpc lệnh lpc), và những thứ khác, như với tệp:

ACCEPT SERVICE – M HOST = first USER = jose

ACCEPT SERVICE – M SERVER REMOTEUSER = root

REJECT SERVICE = M

Việc xóa các công việc khỏi hàng đợi được phép đối với người sử dụng (đầu tiên) của máy và người sử dụng root từ máy chủ nơi mà dịch vụ in được quản lý (localhost) và, hơn nữa, bất kể thứ gì khác các yêu cầu cho việc xóa các công việc từ hàng đợi không được thiết lập sẽ bị từ chối.

Với cấu hình này, chúng ta phải rất thận trọng, vì trong một số phát tán, các dịch vụ LPRng là mở một cách mặc định. Kết nối có thể là hạn chế, ví dụ, với:

ACCEPT SERVICE = X SERVER

REJECT SERVICE = X NOT REMOTEIP = 100.200.0.0/255

Dịch vụ kết nối chỉ truy cập được tới máy cục bộ của máy chủ và từ chối truy cập nếu máy không thuộc về subnet của chúng ta (trong trường hợp này, chúng ta giả thiết rằng đó là 100.200.0.x).

Đối với việc quản trị các dòng lệnh, các công cụ y hệt như BSD chuẩn được sử dụng. Đối với sự quản trị bằng đồ họa của hệ thống, chúng ta nên chỉ ra công cụ lprngtool (không sẵn sàng trong mọi phiên bản của hệ thống LPRng).

Có một loạt các gói phần mềm cho LPRng: ví dụ, trong Debian chúng ta có thể thấy:

lprng – lpr/ lpd printer spooling system

lprng-doc - lpr/lpd printer spooling system (documentation)

lprngtool - GUI front - end to LPRng based /etc/printcap

Trang 186/471

Page 187: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

printop - Graphical interface to the LPRng print system

Hình 1. lprngtool, cấu hình của một máy in

5.6.3 CUPS

CUPS là một kiến trúc mới cho hệ thống in mà là hoàn toàn khác; nó có một lớp tương thích với BSD LPD, có nghĩa là nó có thể tương tác với các máy chủ dạng này. Nó cũng hỗ trợ một giao thức in mới gọi là IPP (dựa trên HTTP), nhưng nó chỉ sẵn sàng khi máy trạm và máy chủ là các máy trạm và máy chủ dạng CUPS. Hơn nữa, nó sử dụng một dạng trình điều khiển gọi là PPD xác định các khả năng của máy in; CUPS đi với một số trình điều khiển và một số nhà sản xuất cùng đưa ra chúng (HP và Epson).

CUPS có một hệ thống quản trị hoàn toàn khác, dựa vào các tệp khác: /etc/cups/cupsd.conf tập trung vào cấu hình hệ thống in, /etc/cups/printers.conf kiểm soát định nghĩa của các máy in và /etc/cups/classes.conf kiểm soát các nhóm máy in.

Trong /etc/cups/cupsd.conf chúng ta có thể cấu hình cho hệ thống tuân thủ một loạt các khu vực tệp và các thư mục của các hành động khác nhau. Tệp này là hoàn toàn lớn: chúng ta sẽ nhắc tới một số lệnh quan trọng sau:

• Allow: cho phép chúng ta chỉ định những máy nào có thể truy cập được máy chủ, hoặc trong nhóm nào hoặc một cách cá nhân, hoặc phân đoạn của IP mạng nào.

• AuthClass: làm cho có khả năng chỉ định liệu các máy trạm nào của người sử dụng sẽ được yêu cầu để xác thực các tài khoản của chúng hay không.

• BrowseXXX: có một loạt các thư mục liên quan tới khả năng của việc xem xét một mạng để

Trang 187/471

Page 188: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tìm các máy in được phục vụ; khả năng này được kích hoạt mặc định (browsing on), có nghĩa là chúng ta thường sẽ thấy rằng tất cả các máy in hiện có trong mạng là sẵn sàng. Chúng ta có thể giải hoạt nó, sao cho chúng ta chỉ thấy các máy in mà chúng ta đã xác định. Lựa chọn quan trọng khác là BrowseAllow, mà chúng ta sử dụng để xác định ai được phép để yêu cầu đối với các máy in của chúng ta; nó được kích hoạt một cách mặc định, có nghĩa là bất kỳ ai cũng có thể thấy máy in của chúng ta từ mạng của chúng ta.

Chúng ta phải chỉ ra rằng CUPS là, về nguyên tắc, được thiết kế sao cho cả các máy trạm và máy chủ đều làm việc theo cùng một hệ thống; nếu các máy trạm sử dụng LPD hoặc LPRng, thì cần thiết phải cài đặt một daemon tương thích được gọi là cups-lpd (thường trong các gói như cupsys-bsd). Trong trường hợp này, CUPS chấp nhận các công việc nằm ngoài một hệ thống LPD hoặc LPRng, nhưng nó không kiểm soát sự truy cập (cupsd.conf chỉ làm việc cho bản thân hệ thống CUPS và vì thế, sẽ cần thiết phải triển khai một số chiến lược cho việc kiểm soát truy cập, như một tường lửa, ví dụ (xem phần về an ninh).

Đối với việc quản trị từ dòng lệnh, CUPS là thứ gì đó khác thường, trong đó nó chấp nhận cả các lệnh của LPD và System V trong các máy trạm, và sự quản trị thường được thực hiện với lệnh lpadmin của System V.

Ở nơi mà những công cụ đồ họa được quan tâm, chúng ta có trình quản trị Gnome - cups gtklp hoặc giao diện web đi với cùng hệ thống CUPS, truy cập được tại http://localhost:631.

Hình 2. Giao diện cho quản trị của hệ thống CUPS.

Đối với các gói phần mềm được liệt kê với CUPS, trong Debian, chúng ta có thể thấy (cùng với những thứ khác):

Trang 188/471

Page 189: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cupsys – Hệ thống in chung của UNIX (tm) – máy chủ

cupsys-bsd - Hệ thống in chung của UNIX (tm) - các lệnh BSD

cupsys-client - Hệ thống in chung của UNIX (tm) - các chương trình máy trạm (SysV)

cupsys-driver-gimpprint - Các trình điều khiển máy in của Gimp-Print cho CUPS

cupsys-pt - Công cụ để xem/quản lý cho các công việc in đối với CUPS

cupsomatic-ppd - hỗ trợ máy in của linuxprinting.org - gói chuyển dịch

foomatic-db - hỗ trợ máy in linuxprinting.org - cơ sở dữ liệu

foomatic-db-engine - hỗ trợ máy in linuxprinting.org - các chương trinh

foomatic-db-gimp-print – linuxprinting - các trình điều khiển máy in của db Gimp-Print

foomatic-db-hpija – linuxprinting – các máy in của db HPIJS.

foomatic-filters – hỗ trợ máy in linuxprinting.org - các bộ lọc

foomatic-filters-ppds – linuxprinting - các tệp PPD được xây dựng trước

foomatic-gui – giao diện GNOME cho hệ thống các bộ lọc máy in Foomatic

gimpprint-doc - Sách chỉ dẫn cho người sử dụng cho GIMP-Print và CUPS

gimpprint-locals - các tệp dữ liệu cục bộ cho gimp-print

gnome-cups-manager - công cụ của admin của máy in CUPS cho GNOME

gtklp - mặt tiền (front-end) cho CUPS được viết trong gtk

Trang 189/471

Page 190: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.7. Quản trị đĩa

Về các thiết bị lưu trữ, như chúng ta đã thấy, chúng có một loạt các thiết bị liên quan, phụ thuộc vào dạng giao diện:

• IDE: các thiết bị

/dev/đĩa cứng chủ (master), kết nối IDE đầu tiên;

/dev/hdb đĩa phụ (slave) của kết nối đầu tiên,

/dev/hdc kết nối thứ 2 của đĩa chủ

/dev/hdd kết nối thứ 2 của đĩa phụ

• SCSI: các thiết bị /dev/sda, /dev/sdb … đi theo việc đánh số của các thiết bị ngoại vi trong SCSI Bus.

• Các đĩa mềm: các thiết bị /dev/fdx, với số đĩa mềm x (bắt đầu từ 0). Có những thiết bị khác nhau phụ thuộc vào dung lượng của đĩa, ví dụ, một đĩa 1.44 MB trong ổ đĩa A có thể là /dev/fd0H1440

Đối với các phân vùng, số mà tuân theo thiết bị chỉ ra chỉ số phân vùng bên trong đĩa và nó được đối xử như một thiết bị độc lập: /dev/hda1 phân vùng đầu tiên của đĩa IDE đầu tiên, hoặc /dev/sdc2, phân vùng thứ 2 của thiết bị SCSI thứ 3. Trong trường hợp của các đĩa IDE, những thứ này cho phép 4 phân vùng, được biết như các phân vùng đầu tiên, và một số lượng cao hơn các phân vùng logic. Vì thế, nếu /dev/hdan, trong đó n nhỏ hơn hoặc bằng 4, thì nó sẽ là một phân vùng đầu tiên; nếu không, nó sẽ là một phân vùng logic với n là lớn hơn hoặc bằng 5.

Với các đĩa và các hệ thống tệp có liên quan, các tiến trình cơ bản chúng ta có thể triển khai được là:

• Tạo các phân vùng hoặc sửa đổi các phân vùng. Thông qua các lệnh như fdisk hoặc tương tự (cfdisk, sfdisk).

• Định dạng các đĩa mềm: các công cụ khác nhau có thể được sử dụng cho các đĩa mềm: fdformat (định dạng mức thấp), siêu định dạng (định dạng tại các dung lượng khác nhau trong định dạng của MSDOS), mformat (định dạng đặc biệt tạo ra các hệ thống tệp MSDOS chuẩn).

• Tạo ra các hệ thống tệp Linux, trong các phân vùng, sử dụng lệnh mkfs. Có các phiên bản đặc biệt cho việc tạo các hệ thống tệp đa dạng, mkfs.ext2, mkfs.ext3 và cũng cả các hệ thống tệp không phải của Linux: mkfs.ntfs, mkfs.vfat, mkfs.msdos, mkfs.minix, hoặc những thứ khác. Đối với CD-ROM, các lệnh như mkisofs để tạo ra ISO9660 (với những phần mở rộng khác), mà có thể là một ảnh có khả năng sau này được ghi lại trong một CD/DVD, cùng với các lệnh như cdrecord sẽ cho phép chúng ta tạo/lưu các đĩa CD/DVD. Trường hợp đặc biệt khác là lệnh mkswap, cho phép chúng ta tạo ra các vùng hoán đổi trong các phân vùng, sẽ được kích hoạt hoặc giải hoạt sau đó với swapon và swpoff.

• Thiết lập các hệ thống tệp: các lệnh mount, umount

Trang 190/471

Page 191: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Kiểm tra tình trạng: công cụ chính cho việc kiểm tra các hệ thống tệp Linux là lệnh fsck. Lệnh này kiểm tra các vùng khác nhau của hệ thống tệp để kiểm tra tính ổn định và khả năng có các lỗi và sửa những lỗi này ở những nơi có thể. Hệ thống thực sự sẽ tự động kích hoạt lệnh này trong khi khởi động khi nó dò tìm ra những tình trạng nơi mà hệ thống đã không được tắt phù hợp (như cắt điện hoặc một tắt máy ngẫu nhiên) hoặc khi hệ thống từng được khởi động một số lần nhất định nào đó; kiểm tra này thường chiếm một số thời gian, thường một vài phút (phụ thuộc vào kích thước dữ liệu). Cũng có những phiên bản đặc biệt cho những hệ thống tệp khác: fsck.ext2, fsck.ext3, fsck.vfat, fsck.msdos … Tiến trình fsck thường được thực hiện với thiết bị trong chế độ chỉ đọc với các phân vùng được kích hoạt (mount); được khuyến cáo phải đưa về các phân vùng để sửa các lỗi. Trong những trường hợp nhất định, ví dụ, nếu hệ thống mà phải được kiểm tra là hệ thống root (/) và một lỗi sống còn được dò tìm r, thì chúng ta sẽ được yêu cầu thay đổi chế độ thực thi mức chạy. Thông thường, nếu cần thiết phải kiểm tra hệ thống; điều này nên được thực hiện ở chế độ của siêu người sử dụng (superuser) (chúng ta có thể chuyển giữa chế độ mức chạy với các lệnh init hoặc telinit).

• Các tiến trình sao lưu: hoặc trong đĩa, các khối của đĩa, các phân vùng, các hệ thống tệp, các tệp… Có một loạt các công cụ hữu dụng cho điều này: tar cho phép chúng ta sao chép các tệp tới các thiết bị tệp hoặc đầu băng từ; cpio, cũng vậy, có thể thực hiện các sao lưu của các tệp tới một tệp; cả cpio và tar đều duy trì các thông tin về những người chủ sở hữu của các quyền và các tệp; ddmakes có khả năng tạo các bản sao, hoặc chúng là các tệp, các thiết bị, các phân vùng hoặc các đĩa tới các tệp; khá phức tạp và chúng ta phải có một số thông tin mức thấp, về dạng, kích thước, khối hoặc vùng, và chúng cũng có thể được gửi tới các đầu băng từ.

• Một loạt các tiện ích: một số lệnh riêng rẽ, một số trong số đó được sử dụng bằng các tiến trình xử lý để triển khai một loạt các hoạt động: các khối bị hỏng đối với việc tìm kiếm các khối trong thiết bị: dumpe2fs cho việc giành được thông tin về các hệ thống tệp của Linux; tune2fs làm cho có khả năng triển khai hệ thống tệp Linux tinh chỉnh dạng ext2 hoặc ext3 và chỉnh các thông số hiệu năng khác nhau.

Chúng ta bây giờ sẽ nhớ tới 2 đối tượng có liên quan tới khái niệm về không gian lưu trữ, được sử dụng trong một loạt các môi trường cho việc tạo ra một cách cơ bản không gian lưu trữ. Đó là sử dụng phần mềm RAID và tạo ra các khối động.

5.7.1 Phần mềm RAID

Cấu hình của đĩa sử dụng các mức RAID hiện là một trong những mô hình lưu trữ có tính sẵn sàng cao được sử dụng rộng rãi, khi chúng ta có một loạt các đĩa cho việc triển khai các hệ thống tệp.

Tập trung chủ yếu vào các kỹ thuật khác nhau đang tồn tại dựa trên một sự chịu lỗi được cung cấp từ mức của thiết bị và tập hợp của các đĩa, tới các lỗi tiềm tàng khác nhau, cả vật lý hoặc trong hệ thống, để tránh mất dữ liệu hoặc thiếu sự cấu kết trong hệ thống. Cũng như trong một số mô hình được thiết kế để gia tăng hiệu năng của hệ thống đĩa, làm gia tăng băng thông của những thứ sẵn sàng này cho các ứng dụng và hệ thống.

Ngày nay chúng ta có thể thấy RAID trong phần cứng chủ yếu trong các máy chủ của các doanh nghiệp (mặc dù nó đang bắt đầu xuất hiện trong các máy để bàn), nơi có những giải pháp phần cứng khác nhau

Trang 191/471

Page 192: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

sẵn sàng thỏa mãn những yêu cầu này. Đặc biệt, đối với các ứng dụng cần nhiều đĩa, như các dòng âm thanh và video, hoặc các cơ sở dữ liệu lớn.

Nói chung, phần cứng này là ở dạng của các thẻ (hoặc được tích hợp với máy) hoặc các trình điều khiển đĩa dạng RAID, nó triển khai sự quản trị của một hoặc nhiều mức (của đặc tả của RAID) đối với một tập hợp các đĩa được quản trị với trình điều khiển này.

Trong RAID một loạt các mức (hoặc các cấu hình có thể) được phân biệt, có khả năng được cung cấp (mỗi nhà sản xuất của phần cứng hoặc phần mềm đặc thù có thể hỗ trợ một hoặc nhiều mức này). Mỗi mức RAID được áp dụng qua một tập hợp các đĩa, đôi khi được gọi là dãy RAID (hoặc ma trận RAID), thường là các đĩa với các kích thước như nhau (hoặc bằng nhau theo các kích thước nhóm). Ví dụ, trong trường hợp của một dãy, 4 đĩa 100GB có thể được sử dụng, trong trường hợp khác, 2 nhóm (ở 100 GB) của 2 đĩa, một đĩa 30GB và một đĩa 70GB. Trong một số trường hợp của các trình điều khiển phần cứng, các đĩa (hoặc các nhóm) không thể có các kích thước khác nhau; trong những chỗ khác, chúng có thể, nhưng dãy được xác định bởi kích thước của đĩa nhỏ nhất (hoặc nhóm).

Chúng ta sẽ mô tả một số khái niệm cơ bản về một số mức trong danh sách sau (nên nhớ rằng, trong một số trường hợp, khái niệm này không hoàn toàn được chấp nhận, và nó có thể phụ thuộc vào từng nhà sản xuất):

• RAID 0: Dữ liệu được phân tán như nhau giữa một hoặc nhiều đĩa mà không có thông tin về tính chẵn lẻ hoặc sự dư thừa, không có việc đưa ra sự chịu lỗi. Chỉ những dữ liệu đang được phân tán; nếu đĩa bị hỏng vật lý, thông tin sẽ bị mất và chúng ta sẽ phải phục hồi nó từ các bản sao sao lưu. Những gì gia tăng là hiệu năng, phụ thuộc vào sự triển khai của RAID 0, biết rằng các lựa chọn đọc và ghi được phân bổ trong các đĩa khác nhau.

• RAID 1: Một bản sao chính xác (soi gương) được tạo ra trong một tập hợp của 2 hoặc nhiều đĩa (được biết như là dãy RAID). Trong trường hợp này, là hữu dụng cho việc đọc hiệu năng (mà có thể gia tăng một cách tuyến tính với số lượng đĩa) và đặc biệt cho việc có một sự chịu lỗi trong một trong những đĩa này, biết rằng (ví dụ, với 2 đĩa) thông tin y hệt nhau là sẵn sàng. RAID 1 thường phù hợp đối với tính sẵn sàng cao, như các môi trường 24x7, nơi mà chúng ta cần các tài nguyên một cách sống còn. Cấu hình này cũng làm cho có khả năng (nếu phần cứng hỗ trợ điều này) đối với các đĩa hoán đổi nóng. Nếu chúng ta dò ra một lỗi trong bất kỳ đĩa nào, thì chúng ta có thể thay thế đĩa này bằng một đĩa khác theo yêu cầu mà không có việc tắt hệ thống.

• RAID 2: Trong các hệ thống trước, các dữ liệu có thể được phân chia thành các khối cho sự phân tán tiếp sau; ở đây, các dữ liệu được phân chia thành các bits và các mã dư thừa sẽ được sử dụg để sửa cho đúng các dữ liệu. Không được sử dụng một cách rộng rãi, bất chấp các mức độ thực thi cao có khả năng cung cấp, khi

Trang 192/471

Page 193: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

đòi hỏi một cách lý tưởng một số lượng lớn các đĩa, một chiếc cho một bit dữ liệu, và một dãy cho việc tính toán sự dư thừa (ví dụ, trong hệ thống 32 bit, tới 39 đĩa có thể được sử dụng).

• RAID 3: Nó sử dụng sự phân chia byte với một đĩa chuyên dụng cho tính chẵn lẽ (parity) của các khối. Điều này cũng rất ít được sử dụng rộng rãi, vì phụ thuộc vào kích thước và các vị trí của các dữ liệu, nó không cung cấp sự truy cập cùng một lúc. RAID 4 là tương tự, nhưng nó chia các dữ liệu theo mức khối, thay vì mức byte, có nghĩa là có khả năng để phục vụ những yêu cầu cùng một lúc khi chỉ có một khối duy nhất được yêu cầu.

• RAID 5: Việc chia mức khối được sử dụng, phân phối tính chẵn lẻ giữa các đĩa. Nó được sử dụng rộng rãi, nhờ mô hình tính chẵn lẻ đơn giản và nhờ thực tế là sự tính toán này được triển khai đơn giản bằng phần cứng, với các mức độ thực thi tốt.

• RAID 0+1 (hoặc 01): Một sự phân chia gương là một mức RAID lồng; ví dụ, chúng ta triển khai 2 nhóm của RAID 0, được sử dụng trong RAID 1 để tạo một gương soi giữa chúng. Một ưu điểm là việc, trong trường hợp có lỗi, thì mức RAID 0 được sử dụng có thể được dựng lại nhờ bản sao khác, nhưng nếu nhiều đĩa hơn cần phải được bổ sung, thì chúng phải được bổ sung vào tất cả các nhóm RAID một cách bằng như nhau.

• RAID 10 (1+0): việc phân chia các gương soi, các nhóm của RAID 1 theo RAID 0. Theo cách này, trong từng nhóm RAID 1, một đĩa có thể hỏng mà đảm bảo không mất dữ liệu. Tất nhiên, điều này có nghĩa là chúng phải được thay thế, nếu không thì đĩa mà bị để trong nhóm sẽ trở thành điểm lỗi khác có khả năng bên trong hệ thống. Cấu hình này thường được sử dụng cho các cơ sở dữ liệu hiệu năng cao (nhờ sự chịu lỗi và tốc độ, khi nó không dựa và những tính toán chẵn lẻ).

Một số điểm mà nên được tính tới đối với RAID nói chung:

• RAID cải thiện thời gian sống của hệ thống, khi một số các mức là cho có khả năng đối với hệ thống để giữ cho việc hoạt động được ổn định khi các đĩa hỏng và, phụ thuộc vào phần cứng, có khả năng ngay cả hoán đổi phần cứng có vấn đề mà không phải dừng hệ thống, mà là đặc biệt quan trọng trong các hệ thống sống còn.

• RAID có thể cải thiện hiệu năng của các

Trang 193/471

Page 194: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

ứng dụng, đặc biệt trong các hệ thống với những triển khai cài đặt gương soi, nơi mà việc phân chia các dữ liệu cho phép các hoạt động đọc tuyến tính gia tăng đáng kể, khi các đĩa có thể cung cấp cùng một lúc khả năng đọc, làm gia tăng tỷ lệ truyền dữ liệu.

• RAID không bảo vệ các dữ liệu: được chứng minh, nó không bảo vệ các dữ liệu khỏi những hoạt động không đúng có thể khác (virus, các lỗi chung hoặc các thảm họa tự nhiên). Chúng ta phải dựa vào các mô hình sao chép sao lưu.

• Phục hồi dữ liệu không được đơn giản hóa. Nếu một đĩa thuộc về một dãy RAID, thì sự phục hồi nó nên được cố gắng làm bên trong môi trường đó. Phần mềm mà nó là đặc trưng đối với các trình điều khiển phần cứng là cần thiết cho sự truy cập các dữ liệu này.

• Mặt khác, thường không cải thiện được hiệu năng của các ứng dụng người sử dụng điển hình, ngay cả nếu chúng là những ứng dụng của máy để bàn, vì những ứng dụng này có những thành phần mà chúng truy cập RAM và các tập hợp nhỏ dữ liệu, có nghĩa là chúng sẽ không có lợi từ việc đọc tuyến tính hoặc truyền các dữ liệu bền vững. Trong các môi trường đó, có khả năng là sự cải tiến trong hiệu năng và hiệu quả là khó thấy được.

• Truyền thông tin không được cải thiện hoặc tạo điều kiện thuận lợi theo bất kỳ cách gì; không có RAID, hoàn toàn dễ dàng truyền các dữ liệu, bằng việc chuyển một cách đơn giản đĩa từ một hệ thống này sang hệ thống khác. Trong trường hợp của RAID, hầu như không thể (trừ phi chúng ta có cùng phần cứng) để chuyển một dãy các đĩa sang hệ thống khác.

Trong GNU/Linux, phần cứng RAID được hỗ trợ thông qua một loạt các module nhân, có liên quan tới các tập hợp khác nhau của các nhà sản xuất hoặc các bộ vi xử lý của các trình điều khiển RAID. Điều này cho phép hệ thống tự trừu tượng hóa nó từ các cơ chế phần cứng và làm cho chúng minh bạch đối với hệ thống và người sử dụng đầu cuối. Trong mọi trường hợp, các module nhân này cho phép chúng ta truy cập vào các chi tiết của các trình điều khiển và để cấu hình các thông số của chúng ở một mức rất thấp, mà trong một số trường hợp (đặc biệt trong các máy chủ mà hỗ trợ một tải I/O cao) có thể có lợi cho việc tinh chỉnh hệ thống các đĩa mà máy chủ sử dụng để tối đa hóa hiệu năng của hệ thống.

Lựa chọn khác mà chúng ta sẽ phân tích là về việc triển khai những tiến trình này thông qua các thành phần phần mềm, đặc biệt là thành phần phần mềm của RAID cho GNU/Linux.

GNU/Linux có một nhân của dạng Đa Thiết bị (md - Multiple Device), mà chúng ta có thể coi như một sự hỗ trợ thông qua trình điều khiển của nhân cho RAID. Thông qua trình điều khiển này chúng ta có thể triển khai nói chung RAID các mức 0, 1, 4, 5 và các mức RAID lồng nhau (như RAID 10) trên các thiết bị khối khác nhau như các đĩa IDE hoặc SCSI. Cũng có mức tuyến tính, nơi mà có một sự kết hợp tuyến tính của các đĩa có sẵn (không có vấn đề gì nếu chúng có các kích thước khác nhau), có nghĩa là các đĩa được ghi một cách liên tục nhau.

Để sử dụng phần mềm RAID trong Linux, chúng ta phải có sự hỗ trợ RAID trong nhân, và, nếu áp dụng được, các module md được kích hoạt (cũng như một số trình điều khiển đặc biệt, phụ thuộc vào từng trường hợp (xem các trình điều khiển sẵn sàng có liên quan tới RAID, như trong Debian với modconf)). Phương pháp được ưu tiên cho việc triển khai các dãy của các đĩa RAID thông qua phần mềm RAID được Linux đưa ra hoặc trong lúc cài đặt hoặc thông qua tiện ích mdadm. Tiện ích này cho phép chúng ta tạo và quản lý các dãy này.

Trang 194/471

Page 195: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hãy xem một vài ví dụ (giả thiết chúng ta đang làm việc với một số đĩa SCSI /dev/sda, /dev/sdb … trong đó chúng ta có một loạt các phân vùng sẵn sàng cho việc triển khai RAID):

Việc tạo ra một dãy tuyến tính:

# mdadm -create -verbose /dev/md0 -level = linear -raid-devices=2 /dev/sda1

/dev/sdb1

trong đó chúng ta tạo một dãy tuyến tính dựa trên các phân vùng đầu tiên của /dev/sda và /dev/sdb, việc tạo thiết bị mới /dev/md0, có thể đã được sử dụng như một đĩa mới (giả thiết là điểm kích hoạt /media/diskRAID tồn tại):

# mkfs.ext2fs /dev/md0

# mount /dev/md0 /media/diskRAID

Đối với một RAID 0 hoặc RAID 1, chúng ta có thể đơn giản thay đổi mức (-level) thành raid0 hoặc raid1. Với mdadm -detail /dev/md0, chúng ta có thể kiểm tra các thông số của dãy mới được tạo ra.

Chúng ta cũng có thể tham vấn đầu vào mdstat trong /proc để xác định các dãy tích cực và các thông số của chúng. Đặc biệt trong trường hợp với các gương soi (ví dụ, trong các mức 1, 5...) chúng ta có thể xem xét việc xây dựng lại các sao lưu ban đầu trong tệp được tạo ra; trong /proc/mdstat chúng ta sẽ thấy mức xây dựng lại (và thời gian hoàn tất ước định).

Tiện ích mdadm cung cấp nhiều lựa chọn cho phép chúng ta xem xét và quản lý các dãy phần mềm RAID khác nhau được tạo ra (chúng ta có thể thấy một mô tả và các ví dụ trong man mdadm).

Sự xem xét quan trọng khác là sự tối ưu hóa nên được thực hiện đối với các dãy RAID để cải thiện hiệu năng, thông qua cả việc giám sát hành vi của nó để tối ưu hóa các thông số của hệ thống tệp, cũng như để sử dụng các mức RAID và các đặc tính của chúng hiệu quả hơn.

5.7.2. Quản trị khối logic (LVM)

Có một nhu cầu để trừu tượng hóa từ hệ thống đĩa vật lý và cấu hình của nó và số lượng các thiết bị, sao cho hệ điều hành có thể chăm sóc công việc này và chúng ta không phải lo lắng về các thông số này một cách trực tiếp. Theo nghĩa này, hệ thống quản lý khối logic có thể được xem như một lớp ảo hóa lưu trữ cung cấp một cách nhìn đơn giản hơn, làm cho đơn giản hơn và trơn tru hơn để sử dụng.

Trong nhân Linux, có một LVM (trình khối logic), dựa trên những ý tưởng được phát triển từ các trình quản lý khối lưu trữ được sử dụng trong HP-UX (triển khai UNIX sở hữu độc quyền của HP). Hiện có 2 phiên bản và LVM2 được sử dụng rộng rãi nhất nhờ một loạt các tính năng bổ sung.

Kiến trúc của một LVM một cách điển hình cấu tạo từ các thành phần (chính) sau:

• Khối vật lý (PV): PV là các đĩa cứng hoặc các phân vùng hoặc bất kỳ yếu tố nào khác mà xuất hiện như một đĩa cứng trong hệ thống (ví dụ, phần mềm hoặc phần cứng RAID).

• Khối logic (LV): Chúng tương đương với một phân vùng trên đĩa vật lý. LV nhìn thấy được

Trang 195/471

Lưu ý

Sự tối ưu hóa các dãy RAID, có thể là một nguồn quan trọng cho việc tinh chỉnh hệ thống và một số câu hỏi phải được xem xét trong: Software-RAID-Howto, hoặc trong mdadm man thực tế.

Page 196: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

trong hệ thống như một thiết bị khối thô (hoàn toàn tương đương với một phân vùng vật lý) và nó có thể chứa một hệ thống tệp (như /home của người sử dụng). Thông thường, các khối này có ý nghĩa hơn cho những người quản trị, khi các tên có thể được sử dụng để xác định chúng (ví dụ, chúng ta có thể sử dụng một thiết bị logic, kho được đặt tên hoặc marketing thay vì hda6 hoặc sdc3).

• Các nhóm khối (VG): đây là một yếu tố nằm trên lớp cao hơn. Đơn vị quản trị đưa các tài nguyên của chúng ta vào, hoặc chúng là các khối logic (LV) hoặc các khối vật lý (PV). Các dữ liệu trên các PV có sẵn và cách mà các LV được hình thành bằng việc sử dụng các PV sẽ được lưu trong đơn vị này. Bằng chứng là, để sử dụng một Nhóm Khối (Volume Group), chúng ta phải có những hỗ trợ của PV vật lý, được tổ chức trong các đơn vị LV logic khác nhau.

Ví dụ, trong hình bên dưới, chúng ta có thể thấy các nhóm khối nơi chúng ta có 7 PV (ở dạng của các phân vùng đĩa, chúng được nhóm lại để tạo thành 2 khối logic (đã được hoàn thiện bằng việc sử dụng /usr và /home để hình thành các hệ thống tệp):

Bằng việc sử dụng các khối logic, chúng ta có thể đối xử với không gian lưu trữ có sẵn (có thể có một số lượng lớn các đĩa và phân vùng khác nhau) mềm dẻo hơn, theo những nhu cầu nảy sinh, và chúng ta có thể quản lý không gian này bằng những số chứng minh phù hợp hơn và bằng những hoạt động cho phép chúng ta thích nghi không gian này vào những nhu cầu nảy sinh bất kỳ lúc nào.

Hình 7. Mô hình của một ví dụ về LVM.

Quản lý Khối Logic cho phép chúng ta:

• Thay đổi kích thước các nhóm và khối logic, sử dụng các PV mới hoặc trích ra một số trong số những khối có sẵn ban đầu.

• Các hình chụp của hệ thống tệp (việc đọc trong LVM1, và việc đọc và/hoặc ghi trong LVM2). Điều này làm cho có khả năng tạo một thiết bị mới mà nó là ảnh chụp hiện trạng của một LV. Như vậy, chúng ta có thể tạo một ảnh chụp, đưa nó lên, cố thử một loạt các hoạt động hoặc cấu

Trang 196/471

Page 197: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hình cho phần mềm mới hoặc các yếu tố khác và, nếu những thứ này không làm việc như chúng ta đã mong đợi, chúng ta có thể quay trở về khối ban đầu tới tình trạng mà nó đã có trước khi thực hiện thử nghiệm.

• RAID 0 của các khối logic.

RAID các mức 1 hoặc 5 sẽ không được triển khai trong LVM; nếu chúng là cần thiết (nói cách khác, dư thừa và sự chịu lỗi được yêu cầu), thì sau đó hoặc chúng ta sử dụng phần mềm RAID hoặc các trình điều khiển phần cứng RAID sẽ triển khai chúng và đặt LVM như là lớp cao hơn.

Chúng ta sẽ cung cấp một ví dụ ngắn gọn, điển hình (trong mọi trường hợp, nhà phân phối trình cài đặt triển khai một tiến trình tương tự nếu chúng ta thiết lập một LVM như là hệ thống lưu trữ ban đầu). Về cơ bản, chúng ta phải: 1) tạo các khối vật lý (PV). 2) tạo nhóm logic (VG) và 3) tạo khối logic và cuối cùng sử dụng thứ sau đây để tạo và kích hoạt một hệ thống tệp:

1) Ví dụ: chúng ta có 3 phân vùng trên các đĩa khác nhau, chúng ta đã tạo ra 3 PV và đã bắt đầu các nội dung:

# dd if = /dev/zero of = /dev/hda1 bs = 1k count = 1

# dd if = /dev/zero of = /dev/hda2 bs = 1k count = 1

# dd if = /dev/zero of = /dev/hdb1 bs = 1k count = 1

# pvcreate /dev/hda1

Physical volume “/dev/sda1” successfully created

# pvcreate /dev/hda2

Physical volume “/dev/sda2” successfully created

# pvcreate /dev/hdb1

Physical volume “/dev/sdb1” successfully created

2) Sự sắp đặt của một VG được tạo ra từ các PV khác nhau

# vgcreate group_disks /dev/hda1 /dev/hda2 /dev/hdb1

Volume group “group_disks” successfully created

3) Cái chúng ta có thể, ví dụ, đặt một không gian sao lưu

# lvcreate -L1G -n logical_volume group_disks

lvcreate - - doing automatic backup of “group_disks”

lvcreate - - logical volume “/dev/group_disks/logical_volume”

successfully created

Và cuối cùng, chúng ta tạo một hệ thống tệp (ReisserFS trong trường hợp này):

Trang 197/471

Page 198: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

# mkfs.reiserfs /dev/group_disks/logical_volume

Mà chúng ta có thể, ví dụ, để như là không gian sao lưu

# mkdir /mnt/backup

# mount -t reiserfs /dev/group_disks/logical_volume /mnt/backup

Cuối cùng, chúng ta sẽ có một thiết bị như một khối logic triển khai một hệ thống tệp trong máy của chúng ta.

Trang 198/471

Page 199: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.8. Cập nhật phần mềm

Để quản trị cài đặt hoặc cập nhật phần mềm trong hệ thống, chúng ta sẽ, trước tiên, dựa vào dạng các gói phần mềm được sử dụng trong hệ thống:

• RPM: các gói sử dụng trong phát tán Fedora/Red Hat (và các dẫn xuất). Chúng thường được điều khiển thông qua lệnh rpm. Chứa các thông tin về những phụ thuộc mà phần mềm có đối với các phần mềm khác. Ở mức cao, thông qua Yum (hoặc up2date trong một số phát tán có dẫn xuất từ Red Hat).

• DEB: Các gói Debian thường được điều khiển với một tập hợp các công cụ làm việc trong các mức khác nhau với các gói hoặc nhóm riêng rẽ. Trong số chúng, phải nhắc tới: dselect, taskset, dpkg, và apt-get.

• Tar hoặc tgz (cũng có cả tar.gz): chúng là các tệp gói đơn giản tham gia và được nén bằng việc sử dụng các lệnh như tar, và gzip (những lệnh này được sử dụng cho việc giải nén nữa). Các gói không chứa thông tin về bất kỳ sự phụ thuộc nào và có thể thường được cài đặt ở các chỗ khác nhau nếu chúng không mang theo bất kỳ thông tin tuyệt đối nào của root (đường dẫn).

Có một loạt công cụ cho việc điều khiển các gói này, như RPM: Kpackage; DEB: Synaptic, Gnome-apt; Tgz: Kpackage, hoặc từ bản thân trình quản trị tệp đồ họa thực thụ (trong Gnome hoặc KDE). Cũng thường có các tiện ích chuyển đổi gói. Ví dụ, trong Debian chúng ta có lệnh alien, với nó chúng ta có thể thay đổi các gói RPM thành các gói DEB. Mặc dù là cần thiết để đưa ra những cảnh báo, sao cho gói này không sửa một cách không được mong đợi bất kỳ hành vi nào hoặc hệ thống tệp nào, vì nó có một phát tán đích đến khác.

Phụ thuộc vào việc sử dụng của các dạng gói hoặc công cụ: sẽ có khả năng để cập nhật hoặc cài đặt các phần mềm trong hệ thống của chúng ta theo các cách khác nhau:

1) Từ các CD cài đặt hệ thống thực sự; thông thường, tất cả các phát tán tìm kiếm các phần mềm trên các đĩa CD. Nhưng phần mềm nên được kiểm tra để đảm bảo rằng nó không cũ và không vì thế mà đưa vào một số các bản vá như các cập nhật hoặc các phiên bản mới với nhiều tính năng hơn; hệ quả là, nếu một CD được sử dụng cho cài đặt, thì chắc chắn phải kiểm tra nó có là phiên bản mới nhất và không tồn tại phiên bản gần đây nhất nào nữa cả hay không.

2) Thông qua việc cập nhật hoặc các dịch vụ tìm kiếm phần mềm, hoặc chúng là tự do, như trường hợp với công cụ apt-get của Debian hoặc yum trong Fedora, hoặc thông qua các dịch vụ thuê bao (các dịch vụ được trả tiền hoặc các dịch vụ với các trang thiết bị phương tiện cơ bản), như Red Hat Network của các phiên bản Red Hat.

3) Thông qua các kho phần mềm đưa ra những gói phần mềm được xây dựng sẵn trước cho một phát tán được xác định nào đó.

4) Từ người tạo ra hoặc nhà phân phối thực sự của phần mềm, những người có thể đưa ra một loạt các gói cài đặt phần mềm. Có thể thấy rằng chúng ta không có khả năng định vị dạng các gói cần cho phát tán của chúng ta.

Trang 199/471

Page 200: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5) Các phần mềm không được đóng gói hoặc chỉ với sự nén, không có bất kỳ dạng phụ thuộc nào cả.

6) Chỉ có mã nguồn, ở dạng của một gói hoặc tệp được nén.

Trang 200/471

Page 201: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.9. Các công việc về bó

Trong các nhiệm vụ quản trị, thường là cần thiết phải thực hiện những nhiệm vụ nhất định nào đó trong các khoảng thời gian một cách thường xuyên, hoặc vì nó là cần thiết để lên chương trình cho các nhiệm vụ sao cho chúng diễn ra được khi máy được sử dụng ít nhất hoặc theo bản tính tự nhiệm theo chu kỳ của các nhiệm vụ phải được thực hiện.

Có một loạt các hệ thống cho phép thiết lập lịch thời gian của các nhiệm vụ (lên kế hoạch thực hiện) để thực hiện những nhiệm vụ này ngoài giờ, như các dịch vụ theo chu kỳ hoặc được đặt lịch trước.

• at cho phép chúng ta khởi động một nhiệm vụ cho sau này, lập lịch trình cho điểm được xác định đúng thời gian mà ở đó chúng ta muốn nó khởi động, chỉ định thời gian (giờ:phút) và ngày, hoặc chỉ định liệu nó sẽ có là ngày hôm nay hoặc ngày mai hay không. Ví dụ:

at 10pm task

để thực hiện nhiệm vụ lúc 10 giờ tối.

at 2am tomorrow task

để thực hiện nhiệm vụ vào lúc 2 giờ sáng ngày hôm sau.

• nohup có lẽ là lệnh đơn giản nhất mà những người sử dụng hay dùng, khi nó cho phép thực hiện một nhiệm vụ không tương tác một khi họ đã đăng xuất khỏi tài khoản của mình. Thông thường, khi những người sử dụng đăng xuất, họ đánh mất các tiến trình của mình; nohup cho phép họ để lại các tiến trình vẫn đang được chạy ngay cả dù người sử dụng đã đăng xuất.

• cron: cho phép chúng ta thiết lập một danh sách các nhiệm vụ sẽ được thực hiện với việc lập trình tương ứng; cấu hình này được lưu giữ trng /etc/crontab; đặc biệt, trong trường hợp đầu vào trong tệp này, chúng ta có: giờ và phút mà ở đó nhiệm vụ sẽ được thực hiện, ngày của tháng, tháng, ngày của tuần, cùng với yếu tố gì (cái gì có thể là một nhiệm vụ hoặc một thư mục nơi các nhiệm vụ sẽ được chạy được đặt). Ví dụ, nội dung chuẩn là tương tự như sau:

25 6 * * * root test -e /user/sbin/anacron || run-parts - - report /etc/cron.daily

47 6 * * 7 root test -e /user/sbin/anacron || run-parts - - report /etc/cron.weekly

52 6 1 * * root test -e /user/sbin/anacron || run-parts - - report /etc/cron.month1

trong đó một loạt các nhiệm vụ được đặt lịch để chạy: hàng ngày (“*” chỉ 'bất kỳ cái nào'), hàng tuần (ngày thứ 7 trong tuần) hoặc hàng tháng (ngày đầu tiên của mỗi tháng). Thông thường, các nhiệm vụ sẽ được thực hiện với lệnh crontab, nhưng hệ thống cron giả thiết rằng máy tính luôn được bật, và nếu không phải thế, thì tốt hơn là hãy sử dụng anacron, nó kiểm tra liệu các nhiệm vụ có được thực hiện theo đúng giả thiết hay không, và nếu không, thì nó thực hiện nhiệm vụ đó.

Mỗi dòng trong tệp ở trên được kiểm tra để đảm bảo rằng lệnh anacron có ở đó và scripts có liên quan

Trang 201/471

Page 202: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tới mỗi hành động được chạy; trong trường hợp này, chúng được lưu trong các thư mục được chỉ định cho điều này.

Cũng có khả năng có các tệp cron.allow hoặc cron.deny để hạn chế ai đó có thể (hoặc không thể) đưa các nhiệm vụ vào trong cron. Thông qua lệnh crontab, người sử dụng có thể xác định các nhiệm vụ trong cùng một định dạng như chúng ta đã thấy trước, thường được lưu trong /var/spool/cron/crontabs. Trong một số trường hợp, cũng có một thư mục /etc/cron.d nơi mà chúng ta có thể đặt các nhiệm vụ và chúng được đối xử dường như thông qua chúng đã có một sự mở rộng tới tệp /etc/crontab.

Trang 202/471

Page 203: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5.10. Sách chỉ dẫn: những thực tế được kết hợp của các phần khác nhau

Sẽ bắt đầu bằng việc xem xét tình trạng chung hệ thống của chúng ta. Chúng ta sẽ triển khai các bước khác nhau trong một hệ thống Debian. Đây là một hệ thống Debian không ổn định (phiên bản không ổn định, nhưng được cập nhật hơn cả); tuy nhiên, các thủ tục là, hầu hết, truyền được sang các phát tán khác như là Fedora/Red Hat (sẽ nhắc tới một số trong những thay đổi quan trọng nhất). Phần cứng cấu tạo từ một máy Pentium 4 2.66GHZ với 768 MB RAM và một loạt các đĩa, DVD và CD-Writer, cũng như những thiết bị ngoại vi khác, trong đó sẽ có các thông tin khi chúng ta xử lý từng bước một.

Trước tiên chúng ta sẽ thấy cách mà hệ thống khởi động vào lần cuối:

# uptime

17:38:22 up 2:46, 5 users, load average: 0.05, 0.03, 0.04

Lệnh này nói cho chúng ta thời gian mà hệ thống đã được khởi động từ lần cuối đã được khởi động, 2 giờ 47 phút và, trong trường hợp này, chúng ta có 5 người sử dụng. Điều này sẽ không nhất thiết tương ứng với 5 người sử dụng khác nhau, nhưng sẽ thường xuyên được mở như những phiên của người sử dụng (ví dụ, thông qua một máy đầu cuối). Lệnh who cung cấp một danh sách những người sử dụng này. Tải trung bình là tải trung bình của hệ thống qua 1,5 và 15 phút mới nhất.

Hãy xem lưu ký log của hệ thống (lệnh dmesg), và các dòng đã được tạo ra khi hệ thống đã khởi động (chúng ta đã loại bỏ một số dòng cho mục đích làm rõ):

Linux version 2.6.20-1-686 (Debian 2.6.20-2) ([email protected])

(gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sun Apr 15 21:03:57

UTC 2007

BIOS-provided physical RAM map:

BIOS-e820: 0000000000000000 - 000000000009f800 (usable)

BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)

BIOS-e820: 00000000000ce000 - 00000000000d0000 (reserved)

BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)

BIOS-e820: 0000000000100000 - 000000002f6e0000 (usable)

BIOS-e820: 000000002f6e0000 - 0000000002f6f000 (ACPI data)

BIOS-e820: 000000002f6f0000 - 000000002f700000 (ACPI NVS)

BIOS-e820: 000000002f700000 - 000000002f780000 (usable)

Trang 203/471

Page 204: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

BIOS-e820: 000000002f780000 - 0000000030000000 (reserved)

BIOS-e820: 00000000ff800000 - 00000000ffc00000 (reserved)

BIOS-e820: 00000000fffffc00 - 0000000100000000 (reserved)

OMB HIGHMEM available.

759MB LOWMEM available.

Có những dòng đầu tiên chỉ ra một số dữ liệu thú vị: nhân Linux là phiên bản 2.6.20-1-686, một phiên bản 2.6 bản rà soát lại 20 ở lần rà soát lại 1 của Debian và cho các máy 686 (kiến trúc của Inel x86 và 32bit). Chúng cũng chỉ ra rằng chúng ta đang khởi động một hệ thống Debian, với nhân đã được biên dịch với một trình biên dịch gcc của GNU, phiên bản 4.1.2. Sau đó có một bản đồ các vùng bộ nhớ được sử dụng (được giữ lại) bởi BIOS và sau đó tổng số bộ nhớ được dò tìm thấy trong máy: 759MB, đối với nó chúng ta có thể phải bổ sung thêm 1MB đầu, làm cho nó có tổng là 760MB.

Dòng lệnh của nhân: BOOT_IMAGE = LinuxNEW ro root=302 lang=es acpi=force

Initializing CPU 80

Console: colour dummy device 80x25

Memory: 766132k/777728k sẵn sàng (1641 mã nhân, 10968k được giữ lại, 619k dữ liệu, 208k init, Ok bộ nhớ cao)

Việc đặt kích cỡ độ trễ bằng việc sử dụng thủ tục đặc biệt đặt thời gian.. 5320.63 BogoMIPS (lpj=10641275)

Ở đây, chúng ta biết được cách mà máy được khởi động và dòng lệnh nào đã được cho qua đối với nhân (các lựa chọn khác nhau có thể được cho qua, như lilo hoặc grub). Và chúng ta đang khởi động trong chế độ console với các ký tự 80x25 (điều này có thể được thay đổi). BogoMIPS là những đo đếm nội bộ của nhân về tốc độ của CPU. Có các kiến trúc trong đó khó mà dò tìm ra được có bao nhiêu MHZ mà CPU làm việc và điều này giải thích vì sao việc đo đạc tốc độ được sử dụng. Sau đó, chúng ta thấy được nhiều dữ liệu hơn về bộ nhớ chính và những gì đang được sử dụng ở giai đoạn khởi động này.

CPU: Trace cache: 12K uops, L1 D cache: 8K

CPU: 12 cache: 512K

CPU: Hyper - Threading is disabled

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#0.

CPU0: Intel P4/Xeon Extended MCE MSRs (12) available

CPU0: Intel (R) Pentium (DR) 4 CPU 2.66GHZ stepping 09

Cũng vậy, chúng ta thấy một loạt các dữ liệu trên CPU: kích thước của bộ nhớ đệm cache mức đầu tiên, cache nội bộ của CPU, L1 được chia trong một TraceCache của Pentium 4 (hoặc chỉ dẫn của cache), và cache dữ liệu và cache mức 2 thống nhất (L2), dạng của CPU, tốc độ của nó và bus của hệ thống.

Trang 204/471

Page 205: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

PCI:PCI BIOS bản rà soát lại 2.10 đầu vào ở 0xfd994, bus cuối cùng = 3

Thiết lập các tài nguyên PCI chuẩn

NET: giao thức được đăng ký

Các đầu vào của bảng băm IP route cache: 32768 (order: 5,131072 bytes)

TCP: các bảng băm được cấu hình (được thiết lập 131072 bind 65536) kiểm tra nếu ảnh là initramfs... đây là

Giải phòng bộ nhớ inittrd: 1270k được giải phóng

fb0: VESA VGA thiết bị bộ nhớ đệm khung

Dãy: trình điều khiển 8250/16550 $Revision: 1.90$ 4 cổng, chia sẻ IRQ được bật

serial8250: ttyS0 at I/O 0x3f8 (irq=4) is a 16550A

00:09: ttyS0 at I/O 0x3f8 (irq=4) is a 16550A

Trình điều khiển RAMDISK được khởi tạo: các đĩa 16MB RAM có kich thước 8192 khối 1024

PNP: PS/2 Controller [PNP0303:KBC0, PNPOf13:MSE0] at 0x60, 0x64 irq 1,12 i8042.c: Detected active multiplexing controller, rev 1.1.

serial: i8042 KBD port at 0x60,0x64 iraq 1

serial: i8042 AUX0 port at 0x60, 0x64 irq 12

serial: i8042 AUX1 port at 0x60, 0x64 irq 12

serial: i8042 AUX2 port at 0x60, 0x64 irq 12

serial: i8042 AUX3 port at 0x60, 0x64 irq 12 mice: PS/2 mouse device commom for all mice

Nhân và các thiết bị tiếp tục khởi động, nhắc tới sự khởi tạo của các giao thức mạng. Các máy đầu cuối, các cổng nối tiếp ttyS0 (mà có thể là cổng com1) và ttyS01 (com2). Nó cung cấp thông tin về các đĩa RAM đang được sử dụng, kết nối của các thiết bị PS2, bàn phím và chuột.

ICH4: trình kiểm soát IDE tại PCI slot 0000:00:1f.1

ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio

ide1: BM-DMA at 0x1868-0x186f, BIOS setting: hdc:DMA, hđ:pio

Probing IDE interface ide0...

hda: FUJITSU MHT2030AT, ATA DISK drive

ide0 at 0x1f0-0x177,0x376 on irq 15

SCSI subsystem initialized

libata version 2.00 loaded.

Hda: max request size: 128KiB

hda: 58605120 sectors (30005 MB) w/2048KiB Cache, CHS=58140/16/63<6>hda:

hw_config=600b, UDMA (100)

hda: cache flushes supported

Trang 205/471

Page 206: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hda: hda1 hda2 hda3

kjournald starting. Commit interval 5 seconds

EXT3-fs: mounted file system with ordered dât mode.

hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA (33)

Uniform CD-ROM driver Revision: 3.20

Addinf 618492 swap on /dev/hda3.

Dò tìm ra các thiết bị IDE, dò tìm ra chip IDE trong PCI bus và báo cáo những gì đang điều khiển các thiết bị: hda, và hdc, mà chúng là, một cách tương đối: một đĩa cứng (Fujitsu), một đĩa cứng thứ 2, một đĩa DVD Samsung, và một CD ghi (biết rằng trong trường hợp này, chúng ta có một đơn vị combo). Nó chỉ ra những phân vùng tích cực. Hệ quả là, máy dò tìm ra hệ thống tệp chính của Linux, một ext3 có tính năng ghi lưu ký, kích hoạt và bổ sung không gian hoán đổi có sẵn trong một phân vùng.

usbcore: trình điều khiển giao diện mới usbfs được đăng ký

usbcore: trình điều khiển giao diện mới hub được đăng ký

usbcore: trình điều khiển thiết bị mới usb được đăng ký

input: Microphone của PC như /class/input/input1

Trình điều khiển Giao diện Kiểm soát Host Vạn năng của USB v3.0

hub 1-0:1.0: đã tìm thấy USB hub

hub 1-0:1.0:2 các cổng được tìm thấy

uhci_hcd 0000:00:1d.1: UHCI Host Controller

uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 2

uhci_hcd 0000:00:1d.1: irq 11, io base 0x00001820

usb usb2: configuration #1 chosen from 1 choice

hub 2-0:1.0: USB hub được tìm thấy

hub 2-0:1.0: 2 cổng được tìm thấy

hub 4-0:1.0: USB hub được tìm thấy

hub 4-0:1.0: 6 cổng được tìm thấy

Tìm ra nhiều hơn các thiết bị, USB (và các module tương ứng); trong trường hợp này, 2 thiết bị hub (với tổng cộng 8 cổng USB) đã được dò tìm ra.

Parport: PnPBIOS parport được tìm thấy.

Parport0: PC-style at 0x178 (0x778), iraq 7, dma 1

[PCSPP, TRISTATE, COMPAT, EPP, ECP, DMA]

input: ImPS/2 Logitech Wheel Mouse as /class/input/input2

iee1394: Initialized config rom entry 'IP1394'

eepro100.c:v1.09j-t 9/29/99 Donald Becker

Trang 206/471

Page 207: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Synaptics Touchpad, model: 1, fw: 5.9, id: 0x2e6eb1, caps: 0x944713/0xc0000

input: SynPS/2 Synaptics TouchPad as /class/input/input3

agpgart: Detected an Intel 845G Chipset

agpgart: Detected 8060K stolen Memory

agpgart: AGP aperture is 128M

eth0: Intel (R) PRO/100 Network Driver, 3.5.17-k2-NAPI

usbcore: registered new interface driver usbkbd

Initializing USB Mass Storage driver...

usbcore: registered new interface driver usb-storage

USB Mass Storage support registered.

lp0: using parport0 (interrupt-driven).

Ppdev: user-space parallel port driver

Và cuối cùng dò tìm ra của phần còn lại của các thiết bị: cổng song song, loại chuột, cổng FireWire (IEEE1394) card mạng (Intel), một màn hình cảm ứng, card AGP video (i845). Nhiều dữ liệu hơn về card mạng, một pro 100 của Intel, đăng ký của USB như sự lưu trữ lớn (chỉ ra một thiết bị lưu trữ USB như một đĩa bên ngoài) và dò tìm ra của cổng song song.

Cũng thấy tất cả thông tin chúng ta đã truy cập thông qua lệnh dmesg, được dump trong lưu ký log chính của hệ thống, /var/log/messages. Trong log này, chúng ta sẽ thấy các thông điệp của nhân, cùng với những thứ khác, những thông điệp của các daemon và mạng hoặc các lỗi thiết bị khi tiến hành giao tiếp các thông điệp của chúng với một daemon đặc biệt được goại là syslogd, có trách nhiệm ghi các thông điệp vào trong tệp này. Nếu chúng ta đã khởi động máy gần đây, thì chúng ta sẽ thấy được những dòng cuối chứa chính xác y hệt những thông tin như lệnh dmesg, ví dụ, nếu chúng ta nhìn vào phần cuối của tệp này (mà nó thường là rất lớn):

# tail 200 /var/log/messages

Chúng ta quan sát thấy các dòng y hệt như ở trước và một số thông tin như là:

shutdown[13325]: shutting down for system reboot

kernel: usb 4-1: USB disconnect, address 3

kernel: nfsd: last server has exited

kernel: nfsd: unexporting all file systems

kernel: Kernel logging (proc) stopped.

kernel: Kernel log daemon terminating.exiting on signal 15

syslogd 1.4.1#20: restart.

kernel: klogd 1.4.1#20, log source = /proc/kmsg started.

Linux version 2.6.20-1-686 (Debian 2.6.20-2) ([email protected]) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sun Apr 15 21:03:57 UTC 2007

Trang 207/471

Page 208: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

kernel: BIOS-provided physical RAM map:

Phần đầu tiên tương ứng với lúc tắt máy trước đó, thông báo cho chúng ta rằng nhân đã dừng đặt thông tin vào /proc, rằng hệ thống được tắt... Vào đầu của lần khởi động mới, daemon Syslogd tạo ra log được kích hoạt, và hệ thống bắt đầu tải, nó nói cho chúng ta rằng nhân sẽ bắt đầu ghi thông tin vào hệ thống của mình, /proc; chúng ta xem những dòng đầu tiên của dmesg nhắc tới phiên bản của nhân đang được tải và chúng ta sau đó thấy những gì chúng ta đã thấy với dmesg.

Tại điểm này, một lệnh hữu dụng khác cho việc tìm ra cách thức mà tiến trình tải đã diễn ra là Ismod, nó nói cho chúng ta những module nào đã được tải vào nhân (phiên bản được tóm tắt):

# lsmod

C � module � � � c s � d �ng b �i

nfs 219468

nfsd 202192

export fs 5632

lockd 58216

nfs_ac1 3616

sunrpc 148380

ppdev 8740

lp 11044

button 7856

ac 5220

battery 9924

md_mod 71860

dm_snapshot 16580

dm_mirror 20340

dm_mod 52812

i810fb 30268

vgastate 8512

eeprom 7184

therma1 13928

0

17

1 nfsd

3 nfs, nfsd

2 nfs, nfsd

13 nfs, nfsd, 1 ockd, nfs_acl

0

0

0

0

0

1

0

0

2 dm_snapshot, dm_mirror

0

1 i810fb

0

0

Trang 208/471

Page 209: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

processor 30536

fan 4772

udf 75876

ntfs 205364

usbkbd 6752

eth1394 18468

e100 32648

eepro100 30096

ieee1394 89208

snd_intel8x0 31420

snd_ac97_codec 89412

ac97_bus 2432

parport_pc 32772

snd 48196

ehci_hcd 29132

ide_cd 36672

cdrom 32960

soundcore 7616

psmouse 35208

uhci_hcd 22160

parport 33672

intelfb 34596

serio_raw 6724

pcspkr 3264

pci_hotplug 29312

usbcore 122312

intel_agp 22748

1 therma1

0

0

0

0

0

0

0

2 eth1394, ohci1394

1

1 snd_intel8x0

1 snd_ac97_codec

1

snd_intel8x0, snd_ac97_codec, snd_pcm, snd_timer

0

0

1 ide_cd

1 snd

0

0

ppdev, lp, parport_pc

0

0

0

1 shpchp

6 dvb_usb, usb_storage, usbkbd, ehci_hcd, uhci_hcd

1

Trang 209/471

Page 210: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

agpgart 30504

ext3 121032

jbd 55368

ide_disk 15744

ata_generic 7876

ata_piix 15044

libata 100052

scsi_mod 133100

generic 4932

piix 9540

ide_core 114728

5 I810fb, drm, intelfb, intel_agp

1

1 ext3

3

0

0

2 ata_generic, ata_piix

2 usb_storage, libata

0 [permanent]

0 [permanent]

5 usb_storage, ide_cd, ide_disk, generic, piix

Chúng ta thấy về cơ bản chúng ta có các trình điều khiển cho phần cứng mà chúng ta đã dò tìm ra và những yếu tố khác có liên quan hoặc những thứ cần thiết của những phụ thuộc.

Điều này đã cho chúng ta, sau đó, một ý tưởng về cách mà nhân và các module của nó đã được tải. Trong tiến trình này, chúng ta có thể đã quan sát thấy một lỗi, nếu phần cứng không được cấu hình đúng hoặc có các module của nhân được biên dịch còn chưa đúng (chúng đã không được biên dịch cho phiên bản nhân phù hợp), không ổn định...

Bước tiếp sau cho việc xem xét các tiến trình trong hệ thống, như là lệnh ps (cho tình trạng của tiến trình), ví dụ (chỉ các tiến trình hệ thống được trình bày, không có tiến trình của người sử dụng):

# pss -ef

UID PID PPID C STIME TTY TIME CMD

Thông tin về các tiến trình, người sử dụng UID đã khởi tạo tiến trình (hoặc số chứng minh được sử dụng để khởi tạo tiến trình), mã tiến trình và PID được hệ thống chỉ định cũng được chỉ ra một các tuần tự, như việc khởi xướng các tiến trình; cái đầu luôn bằng 0, tương ứng với tiến trình của đơn vị. PPID là ID của tiến trình cha hiện hành. STIME, thời gian ở đó tiến trình đã được khởi động. TTY, máy đầu cuối được chỉ định cho tiến trình (nếu có), CMD, dòng lệnh dùng cho việc khởi tạo.

root 1 0 0 14:52 ? 00:00:00 init [2]

root 3 1 0 14:52 ? 00:00:00 [ksoftirqd/0]

root 143 6 0 14:52 ? 00:00:00 [bdflush]

root 145 6 0 14:52 ? 00:00:00 [kswapd0]

root 357 6 0 14:52 ? 00:00:01 [kjournald]

Root 477 1 0 14:52 ? 00:00:00 udevd - -daemon

Trang 210/471

Page 211: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

root 719 6 0 14:52 ? 00:00:00 [khubd]

Một loạt các daemons hệ thống, như daemon kswapd, kiểm soát các hoán đổi swaps bộ nhớ ảo. Điều khiển các bộ nhớ tạm thời buffer (bdflush) của hệ thống. Điều khiển các trình ghi lưu ký (kjournald) của hệ thống tệp, điều khiển USB (khubd). Hoặc daemon udev kiểm soát kết nối các thiết bị nóng. Nói chung, các daemons không luôn được xác định bằng một chữ d ở cuối, và nếu chúng có một chữ k ở đầu, thì chúng thường là những luồng nội bộ của nhân.

root 1567 1 0 14:52 ? 00:00:00 dhclient -e -pf …

root 1653 1 0 14:52 ? 00:00:00 /sbin/portmap

root 1829 1 0 14:52 ? 00:00:00 /sbin/syslogd

root 1839 1 0 14:52 ? 00:00:00 /sbin/klogd -x

root 1983 1 0 14:52 ? 00:00:09 /usr/sbin/cupsd

root 2178 1 0 14:52 ? 00:00:00 /usr/sbin/inetd

Chúng ta có dhclient, cho thấy máy là máy trạm của một máy chủ DHCP, cho việc giành được IP của nó. Syslogd, một daemon gửi các thông điệp tới lưu ký log. CUPS daemon, mà, như chúng ta đã thảo luận, có liên quan tới hệ thống in. Và inetd, mà, như chúng ta sẽ thấy trong phần về mạng, là một dạng của “siêu máy chủ” hoặc vật trung gian của các daemons khác có liên quan tới các dịch vụ mạng.

root 2154 1 0 14:53 ? 00:00:00 /usr/sbin/rpc.mountd

root 2241 1 0 14:53 ? 00:00:00 /usr/sbin/sshd

root 2257 1 0 14:53 ? 00:00:00 /usr/bin/xfs -daemon

root 2573 1 0 14:53 ? 00:00:00 /usr/sbin/atd

root 2580 1 0 14:53 ? 00:00:00 /usr/sbin/cron

root 2675 1 0 14:53 ? 00:00:00 /usr/sbin/apache

www-data 2684 2675 0 14:53 ? 00:00:00 /usr/sbin/apache

www-data 2685 2675 0 14:53 ? 00:00:00 /usr/sbin/apache

Cũng có sshd, một máy chủ truy cập từ xa an toàn (một phiên bản được cải tiến cho phép các dịch vụ tương thích được với telnet và FTP). Xfs là một máy chủ phông (các dạng ký tự) của X Window. Các lệnh atd và cron có thể được sử dụng cho việc điều khiển các nhiệm vụ được lập trình tại một điểm được xác định. Apache là một máy chủ web, có khả năng có một loạt các luồng tích cực cho việc có mặt các yêu cầu khác nhau.

root 2499 2493 0 14:53 ? 00:00:00 /usr/sbin/gdm

root 2502 2499 4 14:53 tty ? 00:09:18 /usr/bin/X :0 -dpi 96 ...

root 2848 1 0 14:53 tty2 00:00:00 /sbin/getty 38400 tty2

root 2849 1 0 14:53 tty3 00:00:00 /sbin/getty 38400 tty3

root 3941 2847 0 14:57 tty100:00:00 -

root 16453 12970 0 18:10 pts/2 00:00:00 ps -ef

Trang 211/471

Page 212: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

gdm là đăng nhập đồ họa của hệ thống máy để bàn GNOME (điểm truy cập, nơi mà chúng ta được yêu cầu cho tên và mật khẩu đăng nhập) và các tiến trình getty là những tiến trình quản lý các máy đầu cuối văn bản ảo (mà chúng ta có thể thấy bằng việc nhấn tổ hợp phím Alt+Fx (hoặc Ctrl+Alt+Fx nếu chúng ta ở chế độ đồ họa)). X là tiến trình của máy chủ đồ họa của hệ thống X Window và là cơ bản cho việc thực thi bất kỳ môi trường đồ họa nào trên đó. Một trình biên dịch lệnh mở (bash), và cuối cùng, tiến trình mà chúng ta đã tạo ra khi yêu cầu lệnh ps từ dòng lệnh.

Lệnh ps đưa ra một loạt lựa chọn dòng lệnh cho việc chỉnh thông tin chúng ta muốn trong từng tiến trình, hoặc đây là thời gian đang được chạy, số phần trăm CPU được sử dụng, bộ nhớ được sử dụng … (xem man của ps).

Một lệnh rất thú vị nữa là top, nó làm y hệt như ps nhưng một cách động; nói cách khác, nó cập nhật từng chu kỳ nhất định nào đó về thời gian, có thể phân loại các tiến trình theo sự sử dụng của CPU hoặc của bộ nhớ và nó cũng cung cấp thông tin về tình trạng của toàn bộ bộ nhớ.

# free total used free shared buffers cached

Mem: 767736 745232 22504 0 89564 457612

-/+ buffers/cache: 198056 569680

Swap: 618492 1732 616760

# vsmtat

procs …... memory ….... swap....... io ….... system ….. cpu …

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 1732 22444 89584 457640 0 0 68 137 291 418 7 1 85 7

Lệnh free cũng chỉ ra kích thước hoán đổi swap, khoảng 600 MB, hiện không được sử dụng tích cực vì không gian bộ nhớ vật lý còn đủ; vẫn còn có 22 MB tự do (chỉ ra một sự sử dụng cao của bộ nhớ vật lý và nhu cầu sử dụng hoán đổi swap sớm). Không gian bộ nhớ và swap (đối với các nhân 2.4) bổ sung vào cho nhau có một tổng số 1.4 GB sẵn sàng. Điều này có thể dường như là nhiều, nhưng nó sẽ phụ thuộc vào các ứng dụng đang được chạy.

Trang 212/471

Lưu ý

Xem man của các lệnh để dịch ra đầu ra.

Page 213: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Không gian hoán đổi làm cho có khả năng bổ sung vào bộ nhớ vật lý sao cho có nhiều bộ nhớ ảo hơn. Phụ thuộc vào số lượng các không gian được bổ sung thêm vào bộ nhớ vật lý và không gian hoán đổi, có thể tất cả bộ nhớ sẽ được sử dụng hết chăng? Có thể giải quyết điều này theo bất kỳ cách nào mà không liên quan tới việc bổ sung thêm bộ nhớ vật lý có được không?

2) Giả sử rằng chúng ta có một hệ thống với 2 phân vùng Linux: một / và một phân vùng hoán đổi. Làm thế nào chúng ta giải quyết được tình huống nếu những tài khoản của người sử dụng chiếm tất cả không gian đĩa nhỉ? Và nếu chúng ta có một phân vùng bị tách biệt /home, cũng đã được sử dụng hết, làm thế nào chúng ta giải quyết được điều này nhỉ?

3) Cài đặt hệ thống in ấn CUPS, xác định máy in của chúng ta sao cho nó làm việc được với CUPS và cố gắng quản trị thông qua giao diện web. Như hệ thống bây giờ, có thể được khuyến cáo như thế nào để sửa đổi, theo bất kỳ cách nào. Những thiết lập mặc định của CUPS là gì? Vì sao?

4) Xem xét thiết lập mặc định đi với hệ thống GNU/Linux cho công việc không tương tác có sử dụng cron. Có các công việc nào hoặc những tình huống nào không bình thường trong hệ thống được xem xét nhỉ? Nếu có, làm thế nào chúng ta giải quyết được chúng?

5) Tái sản xuất lại phân tích của thảo luận (cộng với các nội dung khác của phần này) trên máy sẵn có. Liệu chúng ta có thể thấy bất kỳ lỗi nào hoặc tình huống không bình thường nào trong hệ thống được xem xét không? Nếu có, làm cách nào chúng ta giải quyết được chúng?

Trang 213/471

Page 214: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu và thông tin khác

[Wm02] [Fri02] [Smi02] các sách chỉ dẫn quản trị GNU/Linux và UNIX, giải thích chi tiết những khía cạnh về quản trị cục bộ và quản lý các hệ thống in ấn.

[Gt] Thông tin được cập nhật về các hệ thống in và những thiết lập của chúng, cũng như những chi tiết của một số máy in, có thể thấy được ở đây. Để có những chi tiết cụ thể hơn về các mô hình máy in và các trình điều khiển, chúng ta có thể tới http://www.linuxprinting.org/ .

[Hin] [Koe] Chúng ta có thể thấy các thông tin về các hệ thống tệp khác nhau có sẵn và các mô hình cho việc tạo ra các phân vùng cho việc cài đặt hệ thống.

Trang 214/471

Page 215: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6 Quản trị mạng

Remo Suppi BoldritoPID_00148471

Network administration

Remo Suppi BoldritoPID_00148471

Trang 215/471

Page 216: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Hệ điều hành UNIX (GNU/Linux) được sử dụng như một ví dụ về kiến trúc của các giao tiếp chuẩn. từ UUCP thần thoại (Sao chép từ Unix tới Unix hoặc dịch vụ cho việc sao chép giữa các hệ điều hành UNIX) tới các mạng hiện hành, UNIX luôn chứng minh được tính linh hoạt của nó theo các khía cạnh có liên quan tới trao đổi truyền thông và thông tin. Bằng sự hiện diện của các mạng máy tính (các mạng cục bộ LAN, các mạng diện rộng WAN hoặc các mạng diện rộng thành phố MAN mới nhất) đưa ra những kết nối đa điểm với các tốc độ khác nhau (từ 56 kbits/giây tới 1 Gbit/giây), những dịch vụ mới dựa trên các giao thức nhanh nhất, khả chuyển giữa các máy tính khác nhau và được áp dụng tốt hơn, như TCP/IP (giao thức kiểm soát truyền/giao thức Internet), đã nổi lên. [Com01, Mal96, Cis00, Gar98, KD00].

Trang 216/471

Page 217: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.1. Giới thiệu về TCP/IP (bộ TCP/IP)

Giao thức TCP/IP tổng hợp một ví dụ về ý chí để giao tiếp và tiêu chuẩn hóa truyền thông trên phạm vi toàn cầu.

TCP/IP, trên thực tế, là một tập hợp các giao thức cơ bản được bổ sung vào giao thức gốc ban đầu, để đáp ứng được các nhu cầu khác nhau trong giao tiếp giữa máy tính với máy tính, như TCP, UDP, IP, ICMP, ARP. [Mal96]

TCP/IP được hầu hết những người sử dụng hiện nay sử dụng thường xuyên nhất để kết nối từ xa tới các máy tính khác (telnet, trình an ninh SSH, để sử dụng các tệp từ xa (các hệ thống tệp NFS) hoặc để truyền chúng (FTP - giao thức truyền tệp, HTTP - giao thức đánh dấu siêu văn bản).

6.1.1 Các dịch vụ trên TCP/IP

Các dịch vụ truyền thống nhất trên TCP/IP là [Gar98]:

• Truyền tệp: giao thức truyền tệp (FTP - File Transfer Protocol) cho phép người sử dụng một máy tính nhận được các tệp hoặc gửi chúng từ một máy tính này hoặc khác. Để làm điều này, người sử dụng phải có một tài khoản trong máy tính ở xa và xác định bản thân thông qua tên và mật khẩu đăng nhập hoặc người sử dụng phải kết nối tới các máy tính chứa một kho thông tin (phần mềm, tài liệu...) theo một tài khoản nặc danh để đọc các tệp này trên máy tính của họ. Điều này không giống hệt như các hệ thống tệp mạng gần đây (NFS) (hoặc các giao thức NetBIOS qua TPC/IP, một “phát kiến” hoàn toàn không an ninh trong Windows, mà nó nên được thay thế bằng một phiên bản an ninh hơn nhưng cũ hơn được gọi là NetBeui) làm cho có khả năng ảo hóa hệ thống tệp trong một máy tính sao cho nó có thể truy cập được một cách tương tác từ máy tính khác.

• Kết nối từ xa (đăng nhập - login): giao thức mạng đầu cuối (telnet) cho phép một người sử dụng kết nối từ xa vào một máy tính. Máy tính cục bộ này được sử dụng như một máy tính đầu cuối ở xa và mọi thứ được thực thi qua nó, trong khi người sử dụng mà đã bắt đầu phiên làm việc này dường như không nhìn thấy máy tính cục bộ đó. Dịch vụ này bây giờ đã được thay thế bằng SSH (trình biên dịch lệnh an ninh - secure shell) vì các lý do an ninh. SSH có thể sử dụng một kết nối từ xa thông qua telnet và các thông điệp được gửi ở dạng văn bản thông thường; nói một cách khác, nếu ai đó “kiểm tra” các thông điệp này trên mạng, thì tương đương với việc xem màn hình của người sử dụng. SSH mã hóa thông tin (một giá trị gia tăng cho giao tiếp) sao cho các gói trên mạng không thể đọc được với bất kỳ nút lạ nào.

• Thư điện tử (email): dịch vụ này làm cho có khả năng gửi các thông điệp tới những người sử dụng các máy tính. Dạng giao tiếp này đã trở thành một yếu tố cơ bản đối với những người sử dụng và cho phép các thông điệp thư điện tử được gửi tới một máy chủ trung tâm, sao cho

Trang 217/471

Lưu ý

Sử dụng điển hình đăng nhập từ xa TCP/IP:

telnet localhost Debian GNU/Linux 4.0 login:

Page 218: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chúng có thể sau đó được phục hồi bằng việc sử dụng các chương trình đặc biệt (các máy trạm) hoặc được đọc thông qua một kết nối Internet.

Sự tiến bộ trong công nghệ và giá thành ngày một giảm của các máy tính đã có ý nghĩa rằng các dịch vụ được xác định đã đặc thù hóa và bây giờ được cấu hình trên các máy tính được xác định, làm việc theo một mô hình máy trạm - máy chủ phục vụ. Một máy chủ là một hệ thống thực hiện các dịch vụ cụ thể nào đó cho những máy còn lại của mạng hoặc các máy trạm được kết nối vào. Một máy trạm là một máy tính khác sử dụng dịch vụ này. Tất cả các dịch vụ này thường được đưa ra bên trong TCP/IP:

• Các hệ thống tệp trong các hệ thống tệp mạng (File systems in network file systems): cho phép một hệ thống truy cập các tệp thông qua một hệ thống từ xa theo một cách mà nó được tích hợp hơn so với FTP. Các thiết bị lưu trữ (hoặc một phần của chúng) được xuất tới hệ thống mong muốn truy cập các tệp và hệ thống này có thể “thấy” chúng dường như chúng là các thiết bị cục bộ. Giao thức này cho phép ở phía máy chủ thiết lập các qui định và cách thức của việc truy cập các tệp, mà (nếu được cấu hình phù hợp) có chỗ ở những nơi mà thông tin được đặt một cách vật lý không phụ thuộc vào nơi thông tin được “truy cập”.

• In từ xa (Remote printing): cho phép người sử dung truy cập tới các máy in kết nối tới các máy tính khác.

• Chạy từ xa (Remotee execution): cho phép một người sử dụng chạy một chương trình trên máy tính khác. Có nhiều cách thức cho việc chạy một chương trình theo cách này: hoặc thông qua một lệnh (rsh, ssh, rexec) hoặc thông qua các hệ thống với RPC ( thủ tục gọi từ xa - remote procedure call), cho phép một chương trình trên một máy tính cục bộ chạy một chức năng trong một chương trình trên máy tính khác. Các qui trình RPC đã được nghiên cứu sâu và có một loạt các triển khai cài đặt, nhưng thông dụng nhất là Courier của Xerox và RPC của Sun (cái sau đã được áp dụng trong hầu hết các hệ thống UNIX).

• Các máy chủ tên (Name Servers): trong các mạng máy tính phạm vi rộng, có các dữ liệu mà phải được tập trung sao cho chúng có thể dễ đàng được sử dụng; ví dụ, các tên, mật khẩu, địa chỉ Internet của người sử dụng... Tất cả những thứ này làm cho dễ dàng hơn cho người sử dụng để có một tài khoản cho tất cả các máy tính trong một tổ chức. Ví dụ, các trang vàng của Sun (NIS trong các phiên bản hiện hành của Sun) được thiết kế để điều khiển tất cả các dạng dữ liệu này và nó sẵn sàng cho hầu hết các hệ thống UNIX. Hệ thống tên miền DNS (Domain Name System) là dịch vụ tên miền khác giữ một mối quan hệ trực tiếp giữa tên máy chủ và tên xác minh logic của máy tính này (địa chỉ IP).

• Các máy chủ đầu cuối (Terminal Servers): kết nối các máy đầu cuối tới một máy chủ chạy telnet để kết nối tới máy trung tâm. Các dạng thiết lập này cơ bản là hữu dụng đối với việc làm giảm giá thành và cải thiện các kết nối tới máy trung tâm (trong một số trường hợp).

• Các máy chủ đồ họa đầu cuối (Graphical Terminal Server) (các hệ thống cửa sổ hướng mạng - network - oriented window systems): chúng cho phép một máy tính nhìn được các thông tin đồ họa trên một màn hiển thị được kết nối tới máy tính khác. Phổ biến nhất của các hệ thống này là X Window.

Trang 218/471

Page 219: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.1.2 TCP/IP là gì?

TCP/IP trong thực tế là 2 giao thức giao tiếp giữa các máy tính mà chúng là độc lập với nhau.

TCP (giao thức kiểm soát truyền) xác định các qui định giao tiếp sao cho một máy (chủ host) có thể nói chuyện được với máy tính khác (nếu chúng ta sử dụng mô hình giao tiếp OSI/ISO như một tham chiếu, thì nó mô tả lớp 4, xem bảng sau)

TCP là một giao thức hướng kết nối, nói một cách khác, là tương đương với một điện thoại, và sự giao tiếp được xem như một dòng dữ liệu.

IP (giao thức Internet) xác định giao thức để xác minh các mạng và thiết lập đường đi giữa các máy tính khác nhau.

Nói cách khác, nó định tuyến cho các dữ liệu giữa 2 máy tính thông qua các mạng. Nó tương ứng với lớp 3 của mô hình OSI/ISO và nó là một giao thức phi kết nối (xem bảng bên dưới). [Com01, Rid00, Dra99].

Một lựa chọn thay thế cho TCP là giao thức UDP (giao thức mô hình dữ liệu của người sử dụng - user datagram protocol), ứng xử với các dữ liệu như một thông điệp (datagram) và gửi đi các gói. Nó là một giao thức phi kết nối (máy tính của người nhận không nhất thiết phải đang nghe khi máy tính khác thiết lập giao tiếp với nó) và nó có ưu điểm trong việc tạo ra ít sự quá tải trên mạng hơn là một kết nối TCP, nhưng nó lại ít được tin cậy hơn (các gói có thể không tới nơi hoặc tới nhưng bị lặp lại).

Có giao thức thay thế khác là ICMP (giao thức kiểm soát thông điệp Internet - Internet control message protocol). ICMP được sử dụng cho các thông điệp lỗi hoặc kiểm soát. Ví dụ, nếu một người cố gắng kết nối tới một máy chủ, thì máy tính cục bộ có thể nhận được một thông điệp ICMP chỉ “không tới được máy chủ - host unreachabel”. ICMP cũng có thể được sử dụng để trích thông tin trên một mạng. ICMP là tương tự như UDP trong đó nó điều khiển các thông điệp (datagrams), nhưng nó đơn giản hơn so với UPD, vì nó không có sự xác thực cổng (các cổng là những hộp thư nơi mà các gói dữ liệu được để lại và nơi mà các ứng dụng máy chủ đọc các gói đó) theo tiêu đề của các thông điệp.

Trong mô hình giao tiếp theo OSI/ISO (OSI, mô hình tham chiếu kết nối nội bộ các hệ thống mở - open systems interconnection reference model; ISO, Tổ chức Tiêu chuẩn Quốc tế - International Standard Organization), là một mô hình lý thuyết được nhiều mạng áp dụng. Có 7 lớp giao tiếp nơi mà mỗi lớp có một giao diện cho việc giao tiếp với các lớp liền kề trước và sau.

Mức Tên Sử dụng

7 Ứng dụng SMTP, giao thức truyền thư đơn giản, bản thân dịch vụ

6 Giới thiệu Telnet, FTP triển khai giao thức dịch vụ

5 Phiên Thường không được sử dụng

4 Truyền Truyền TCP, UDP phù hợp với giao thức truyền thông.

3 Mạng IP làm cho có khả năng định tuyến cho gói.

Trang 219/471

Page 220: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Mức Tên Sử dụng

2 Liên kết Các trình điều khiển - truyền phù hợp với giao thức vật lý

1 Vật lý Ethernet, ADSL... gửi một cách vật lý các gói

Để tóm tắt, TCP/IP là một tập hợp các giao thức bao gồm IP, TCP, UDP cung cấp một tập hợp các chức năng ở mức thấp được hầu hết các ứng dụng sử dụng. [KD00, Dra99].

Một số giao thức mà sử dụng các dịch vụ nói trên đã được Berkeley, Sun hoặc các tổ chức khác thiết kế. Chúng không được đưa vào (một cách chính thức) như một phần của bộ giao thức Internet (IPS - Internet Protocol Suite). Tuy nhiên, chúng được triển khai bằng việc sử dụng các giao thức TCP/IP có sẵn của Internet có thể thấy được trong RFC 1011 (xem các tham chiếu về RFC [IET]). Hiện có một phiên bản của giao thức Ipv6, cũng được gọi là IPng (IP thế hệ tiếp sau - IP Next Generation) thay thế cho Ipv4. Giao thức này cải thiện đáng kể các giao thức trước đó trong những yếu tố như có một số lượng lớn hơn các nút, kiểm soát giao thông, an ninh hoặc cải thiện việc định tuyến.

6.1.3. Các thiết bị mạng vật lý (phần cứng)

Từ quan điểm vật lý (lớp 1 của mô hình OSI), phần cứng được sử dụng phổ biến nhất cho LAN là thứ được biết tới như là Ethernet (hoặc FastEthernet hoặc GigaEthernet). Những ưu điểm của nó tạo nên từ giá thành thấp, tốc độ chấp nhận được (10, 100 hoặc 1,000 megabit trong một giây) và sự cài đặt thân thiện với người sử dụng.

Có 3 chế độ kết nối, phụ thuộc vào dạng của kết nối: dày, mỏng và cáp đôi xoắn (twisted pair).

Hai cái đầu là lạc hậu rồi (chúng đã sử dụng cáp đồng trục) trong khi cái cuối cùng sử dụng cáp đôi xoắn và các kết nối tương tự với những cáp được sử dụng trong các điện thoại (được biết như là RJ45). Kết nối cáp đôi xoắn được biết như là 10baseT hoặc 100baseT (theo tốc độ) và nó sử dụng các bộ lặp lại (repeater) được biết như các đầu nối trung tâm (hub) như những điểm kết nối. Công nghệ Ethernet sử dụng các yếu tố giao tiếp ngay lập tức (hub, switch, định tuyến – router) để cấu hình các phân đoạn mạng và chia giao thông để cải thiện hiệu năng của sự truyền dữ liệu. Thông thường, trong các tổ chức lớn, những mạng LAN Ethernet được kết nối thông qua các cáp quang sử dụng công nghệ FDDI (giao diện dữ liệu cáp phân tán - fibre distributed data interface), nó là đắt giá hơn và khó cài đặt hơn, nhưng với nó chúng ta có thể có được các tốc độ truyền tương đương như Ethernet trong khi không có những hạn chế về khoảng cách có liên quan tới Ethernet (FDDI cho phép với những khoảng cách lên tới 200 km). Giá thành được chứng minh khi chúng được sử dụng giữa các tòa nhà hoặc các phân đoạn mạng khác là rất dày đặc. [Rid00, KD00].

Cùng lúc, có những dạng phần cứng khác ít phổ dụng hơn, nhưng không kém phần thú vị, như ATM (chế độ truyền không đồng bộ - asynchronous transfer mode). Phần cứng này cho phép chúng ta thiết lập một mạng LAN với một mức độ cao về chất lượng dịch vụ và nó là lựa chọn tốt khi phải thiết lập các mạng tốc độ cao và độ trễ thấp, như những mạng mà đòi hỏi các dòng video thời gian thực.

Có phần cứng khác được GNU/Linux hỗ trợ cho việc kết nối nội bộ các máy tính, chúng ta có thể nhắc tới như: Frame Relay hoặc X.25 (được sử dụng trong các máy tính để truy cập hoặc kết nối nội bộ các

Trang 220/471

Page 221: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

mạng WAN và cho các máy chủ với các nhu cầu truyền dữ liệu lớn), Packet Radio (kết nối nội bộ thông qua radio có sử dụng các giao thức như AX.25, NetRom hoặc Rose) hoặc các thiết bị quay số dial-up sử dụng các đường nối tiếp, chúng là chậm nhưng rất rẻ, thông qua các modem số hoặc tương tự (RDSI, DSL, ADSL...). Cái sau là những thứ được sử dụng phổ biến ở nhà hoặc trong các doanh nghiệp vừa và nhỏ, và chúng đòi hỏi giao thức khác cho việc truyền các gói, như SLIP hoặc PPP. Để ảo hóa phần cứng đa dạng trên một mạng, TCP/IP xác định một giao diện ảo thông qua đó tất cả các gói sẽ được gửi bằng một thiết bị vật lý (đưa vào một mạng hoặc phân khúc mạng) sẽ được tập trung. Hệ quả là, đối với mỗi thiết bị giao tiếp trong máy, chúng ta sẽ có một giao diện tương ứng trong nhân của hệ điều hành.

Ví dụ

Trong GNU/Linux, Ethernet được gọi là ethx (trong đó, “x” chỉ một số thứ tự bắt đầu bằng 0), giao diện tới các đường nối tiếp (modem) được gọi là pppx (cho PPP) hoặ six (cho SLIP); fddix được sử dụng cho FDDI. Những tên này được sử dụng bằng các lệnh cấu hình cho chúng và chỉ định cho chúng sự xác nhận để sau đó cho phép chúng giao tiếp với các thiết bị khác trong mạng.

Trong GNU/Linux, điều này có thể có nghĩa là chúng ta phải đưa vào các module phù hợp cho thiết bị phù hợp (card giao diện mạng NIC - Network interface card) trong nhân hoặc như các module, và điều này có nghĩa là việc biên dịch nhân sau khi chọn NIC phù hợp, ví dụ, với make menuconfig, chỉ ra nó như là cục bộ hoặc như một module (trong trường hợp sau, module phù hợp cũng phải được biên dịch).

Các thiết bị mạng có thể được thấy trong thư mục /dev, nơi mà có một tệp (một tệp đặc biệt, có thể là một tệp khối hoặc một tệp ký tự, theo sự truyền), đại diện cho từng thiết bị phần cứng. [KD00, Dra99].

Trang 221/471

Lưu ý

Cách chúng ta nhìn các giao diện mạng sẵn sàng thế nào?

ifconfig -a

Lệnh này chỉ ra tất cả các giao diện/thông số mặc định cho từng thứ.

Page 222: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.2. Các khái niệm về TCP/IP

Như chúng ta đã thấy, giao tiếp liên quan tới một loạt các khái niệm mà chúng ta bây giờ sẽ thảo luận [Mal96, Com01]:

• Internet/intranet: khái niệm intranet tham chiếu tới ứng dụng của công nghệ Internet (mạng của các mạng) bên trong một tổ chức, về cơ bản phân phối thông tin nội bộ của hãng và sẵn sàng bên trong hãng. Ví dụ, các dịch vụ được GNU/Linux đưa ra như các dịch vụ Internet và intranet bao gồm thư điện tử, WWW, thông tin …

• Nút: Nút (máy chủ host) tham chiếu tới một máy được kết nối với mạng (ở nghĩa rộng hơn, một nút có thể là một máy tính, một máy in, một CD (rack)...); nói cách khác, một yếu tố tích cực và có thể phân biệt được sự khác biệt trong mạng đòi hỏi hoặc cung cấp một số dạng dịch vụ và/hoặc chia sẻ thông tin.

• Địa chỉ mạng Ethernet (địa chỉ Ethernet hoặc địa chỉ MAC): một con số 48 bit (ví dụ 00:88:40:73:AB:FF - theo 8 đơn vị – octal- 0000 0000 1000 1000 0100 0000 0111 0011 1010 1011 1111 1111 - theo nhị phân) đây là bên trong thiết bị vật lý (phần cứng) của trình điều khiển Ethernet (NIC) và nó được nhà sản xuất ghi (số này phải là duy nhất trên thế giới, mỗi nhà sản xuất NIC có một dãy được phân bổ trước).

• Tên máy chủ – Hostname: mỗi nút cũng phải có một tên mạng duy nhất. Chúng đơn giản có thể là các tên hoặc chúng có thể sử dụng một sơ đồ dựa trên một sơ đồ đặt tên miền có tôn ti trật tự. Các tên của các nút phải là duy nhất, dễ dàng trong các mạng nhỏ, phức tạp hơn trong các mạng lớn và không thể trong Internet trừ phi một số dạng kiểm soát được triển khai. Các tên phải có tối đa 32 ký tự là các ký tự trong các dãy từ a-z, A-Z và 0-9 và chúng không được chứa các khoảng trống hoặc dấu # bắt đầu với một ký tự trong bảng chữ cái ABC.

• Địa chỉ Internet (IP address): chứa 4 con số trong dãy 0-255 được cách nhau bằng các dấu chấm (ví dụ, 192.168.0.1) và nó được sử dụng vạn năng để xác định các máy tính trong một mạng hoặc trên Internet. Các tên là chuyển được thành các địa chỉ IP bằng một máy chủ DNS (hệ thống tên miền), mà nó chuyển các tên nút (hợp pháp đối với con người) thành các địa chỉ IP (dịch vụ này được thực hiện bằng một ứng dụng được gọi là named).

• Cổng (Port): Số chứng minh của hộp thư trong một nút cho phép một ứng dụng cụ thể đọc được một thông điệp (TCP, UDP) (ví dụ, 2 máy mà giao tiếp bằng telnet, sẽ làm thế thông qua cổng 23, nhưng nếu chúng có một giao dịch FTP thì chúng sẽ thực hiện thế thông qua cổng 21). Có những ứng dụng khác nhau giao tiếp giữa

Trang 222/471

Lưu ý

Trực quan của cấu hình của việc định tuyến:

netstat -r

Lưu ý

Địa chỉ IP của máy: more /etc/hosts

Lưu ý

Các cổng được chỉ định trước trong UNIX:

more /etc/services

Lệnh này chỉ các cổng được xác định trước với sự hỗ trợ cho TCP hoặc UDP.

Lưu ý

Tên của máy: more /etc/hostname

Page 223: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2 nút thông qua một loạt các cổng khác nhau cùng một lúc.

• Nút định tuyến (cổng gateway): đây là nút thực hiện việc định tuyến (truyền dữ liệu). Một bộ định tuyến, phụ thuộc vào các đặc tính của nó, có thể truyền thông tin giữa 2 giao thức mạng khác nhau hoặc tương tự nhau và cũng có thể có các lựa chọn.

• Hệ thống tên miền (DNS - Domain Name System): làm cho có khả năng đảm bảo một tên duy nhất và để cung cấp sự quản trị của các cơ sở dữ liệu thực hiện sự truyền giữa tên và địa chỉ Internet và có cấu trúc dạng cây. Để làm được việc này, các miền cách biệt nhau bằng các điểm xác định, trong đó miền cao nhất (từ phải qua trái) mô tả một chủng loại, cơ quan hoặc quốc gia (COM là cho Thương mại – Commercial, EDU là cho giáo dục, GOV là cho chính phủ, MIL là cho quân đội, ORG là cho các tổ chức phi lợi nhuận, XX mà có thể là bất kỳ 2 ký tự nào để chỉ quốc gia, hoặc các trường hợp đặc biệt, như CAT để chỉ ngôn ngữ và văn hóa Catalan …). Mức 2 đại diện cho tổ chức và mức 3 và các phần còn lại chỉ cơ quan, khu vực hoặc đơn vị bên trong tổ chức (ví dụ, www.uoc.edu hoặc [email protected]). 2 cái tên đầu (từ phải qua trái), uoc.edu trong trường hợp đầu, remix.es (trong trường hợp thứ 2) phải được SRI-NIC (tổ chức quốc tế mà nó quản lý đăng ký tên miền Internet) chỉ định (được phê chuẩn) và phần còn lại có thể được cơ quan cấu hình/chỉ định.

• DHCP, bootp: DHCP và bootp là những giao thức cho phép một nút máy trạm có được các thông tin về mạng (như địa chỉ IP của nút). Nhiều tổ chức với nhiều máy sử dụng cơ chế này để tạo điều kiện thuận lợi cho sự quản trị các mạng lớn hoặc các mạng mà trong đó có những người sử dụng lang thang (roaming).

• ARP, RARP: trong một số mạng (như IEEE 802 LAN, là chuẩn cho Ethernet), các địa chỉ IP là động và được phát hiện thông qua sử dụng của 2 thành viên khác của bộ giao thức Internet: giao thức phân giải địa chỉ (ARP - address resolution protocol) và giao thức phân giải địa chỉ ngược (RARP - reverse address resolution protocol). ARP sử dụng các thông điệp phát thanh để xác định địa chỉ Ethernet (đặc tả MAC cho lớp 3 của mô hình OSI), tương đương với một địa chỉ lớp mạng đặc biệt (IP). RARP sử dụng các thông điệp phát thanh (các thông điệp với tới được tất cả các nút) để xác định địa chỉ lớp mạng có liên quan tới một địa chỉ phần cứng đặc biệt. RARP đặc biệt quan trọng đối với các nút không đĩa, vì đối với chúng các địa chỉ lớp mạng thường không nhận biết được lúc khởi động.

• Thư viện của Socket (Socket Library): trong UNIX, tất cả triển khai TCP/IP là một phần của nhân của hệ điều hành (hoặc bên trong cùng hoặc như một module được tải lên lúc khởi động, như là trường hợp với trình điều khiển thiết bị trong GNU/Linux).

Cách thức để một lập trình viên sử dụng chúng là thông qua một giao diện lập trình ứng dụng (API - Application Programming Interface), triển khai giao diện mã nguồn này. Đối với TCP/IP, API thông dụng nhất là thư viện Socket Berkeley (Windows sử dụng một thư viện tương tự được gọi là Winsocks). Thư viện này là để có khả năng tạo ra một điểm đầu cuối giao tiếp (socket), nối nó tới một nút và cổng từ xa (bind) và đưa ra dịch vụ truyền thông (thông qua các lệnh connect, listen, accept,

Trang 223/471

Lưu ý

Miền và máy chủ DNS của chúng ta là:

more /etc/default domain

more /etc/resolv.conf

Lưu ý

Các bảng arp: arp to NameNode

Page 224: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

send, sendto, recv, recvàrom, ví dụ thế). Thư viện này cũng cung cấp một chế độ giao tiếp chung hơn (họ AFINET) và các giao tiếp được tối ưu hóa hơn cho các trường hợp mà trong đó qui trình này đang giao tiếp bên trong cùng máy (họ AF UNIX). Trong GNU/Linux, thư viện socket là một phần của thư viện C chuẩn, Libc, (Libc6 trong các phiên bản hiện hành), và nó hỗ trợ AF_INET, AF_UNIX, AF_ATMSVC (cho giao thức ATM) và AF_AX25,F_NETROM, AF_ROSE (cho giao thức radio của những người nghiệp dư).

Trang 224/471

Page 225: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.3. Làm thế nào để chỉ định một địa chỉ Internet

Địa chỉ này được NIC chỉ định và có 2 phần. Một phần ở bên trái thể hiện sự nhận dạng mạng và phần bên phải thể hiện sự nhận dạng của nút. Khi xem xét điểm được nhắc tới ở trên (4 con số giữa 0-255, hoặc 32 bit hoặc 4 byte), mỗi byte đại diện cho mạng hoặc nút. NIC chỉ định cho mạng, còn đơn vị (hoặc nhà cung cấp) chỉ định cho nút.

Có những hạn chế: 0 (ví dụ, 0.0.0.0) trong không gian mạng được dành cho việc định tuyến mặc định và 127 (ví dụ, 127.0.0.1) được giữ lại cho (vòng ngược lại cục bộ hoặc máy chủ cục bộ), 0 trong phần nút tham chiếu tới mạng này (ví dụ, 192.168.0.0) và 255 được giữ lại cho việc gửi các gói tới tất cả (sự phát đi) máy (ví dụ, 198.162.255.255). Có thể có những dạng khác nhau của các mạng hoặc các địa chỉ trong những chỉ định khác nhau:

Lớp A (network.host.host.host): 1.0.0.1 tới 126.254.254.254 (126 mạng, 16 triệu nút) xác định các mạng lớn. Chuẩn nhị phân là: 0+7 bit mạng + 24 bit nút mạng.

Lớp B (network.network.host.host): 128.1.0.1 tới 191.255.254.254 (16K mạng, 65K nút); (thường thì, byte của nút đầu tiên được sử dụng để xác định các subnet bên trong một cơ quan). Chuẩn nhị phân là 10 + 14 bit mạng + 16 bit nút mạng.

Lớp C (net.net.net.host): 192.1.1.1 tới 223.255.255.254 (2 triệu mạng, 254 nút). Chuẩn nhị phân là 110 + 21 biet + 8 bit nút mạng.

Lớp D và E (network.network.network.host): 224.1.1.1 tới 255.255.255.254 được giữ lại cho đa phát hành (từ một nút tới một tập hợp các nút hình thành từ một phần của nhóm) và các mục đích thí điểm.

Một số dãy địa chỉ đã được giữ lại sao cho chúng không tương ứng với các mạng công cộng, và được xem xét như là các mạng riêng (các máy tính được kết nối nội bộ mà không có kết nối bên ngoài; các thông điệp sẽ không được gửi qua Internet, nhưng qua một intranet). Những dãy địa chỉ này là lớp A 10.0.0.0 tới 10.255.255.255, lớp B 172.16.0.0 tới 172.31.0.0 và lớp C 192.168.0.0 tới 192.168.255.0.

Địa chỉ phát hành ra là đặc biệt, vì mỗi nút trong một mạng nghe tất cả các thông điệp (cũng như địa chỉ riêng của nó). Địa chỉ này làm cho có khả năng gửi các datagram (thường là các thông tin định tuyến và các thông điệp cảnh báo) tới một mạng và tất cả các nút trên mạng sẽ có khả năng đọc chúng. Ví dụ, khi ARP cố gắng tìm ra địa chỉ Ethernet tương ứng với một IP, khi nó sử dụng một thông điệp phát ra, được gửi tới tất cả các máy trên mạng cùng một lúc. Mỗi nút trong mạng đọc thông điệp này và so sánh IP đang được tìm và gửi trả lại một thông điệp tới nút của người gửi nếu khớp được.

Hai khái niệm có liên quan tới điểm được mô tả ở trên là các mạng con (subnets) và việc định tuyến (rooting) giữa các mạng con. Các mạng con (subnets) được chia nhỏ thành các phần nút trong các mạng nhỏ hơn bên trong cùng một mạng, do đó, ví dụ, để cải thiện giao thông. Một mạng con có trách nhiệm gửi giao thông tới các dãy địa chỉ IP nhất định nào đó, mở rộng tới cùng một khái niệm về các lớp mạng A, B và C, nhưng chỉ áp dụng việc định tuyến này trong phần nút IP. Số các bit được dịch như một số xác minh mạng con được cung cấp với một mặt nạ mạng (netmask), là một số 32 bit (như là một địa chỉ IP). Để có được số xác minh của mạng con này, chúng ta sẽ phải thực hiện một toán tử

Trang 225/471

Page 226: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

logic AND (và) giữa mặt nạ và IP, sẽ cung cấp cho chúng ta bằng IP của mạng con. Ví dụ, một cơ quan với một mạng lớp B, với số 172.17.0.0, có thể vì thế có một mặt nạ mạng với số 255.255.0.0. Một cách cục bộ, mạng này được hình thành từ các mạng nhỏ (mỗi mạng cho một tầng của một tòa nhà, ví dụ thế). Theo cách này, dãy các địa chỉ được chỉ định lại trong 20 mạng con (các tầng trong ví dụ của chúng ta, ngoại trừ 172.17.1.0, nó có một vai trò đặc biệt), 172.17.1.0 tới 172.17.20.0. Điểm này kết nối tất cả các tầng, được gọi là xương sống (backbone), có địa chỉ riêng của nó, ví dụ là 172.17.1.0.

Các mạng con này chia sẻ cùng địa chỉ IP mạng, trong khi cái thứ 3 được sử dụng để xác định mỗi mạng con trong các mạng con bên trong nó (giải thích vì sao nó sẽ sử dụng mặt nạ mạng 255.255.255.0).

Khái niệm thứ 2, việc định tuyến (rooting), đại diện cho chế độ trong đó các thông điệp được gửi thông qua các mạng con. Ví dụ, hãy để chúng ta nói có 3 phòng với các mạng con Ethernet:

1) Phòng mua sắm (mạng con 172.17.2.0),

2) Phòng khách hàng (mạng con 172.17.4.0),

3) Phòng nhân sự (mạng con 172.17.6.0),

4) Xương sống vơi FFDI (mạng con 172.17.1.0).

Để định tuyến các thông điệp giữa các máy tính trên 3 mạng này, chúng ta cần 3 cổng gateway, mỗi cổng có 2 giao diện mạng để chuyển giữa Ethernet và FFDI. Chúng sẽ là:

1) Các IP của cổng phòng mua sắm (PurchasesGW): 172.17.2.1 và 172.17.1.1,

2) Các IP của cổng của phòng khách hàng (ClientsGW): 172.117.4.1 và 172.17.1.2

3) Các IP của cổng của phòng nhân sự (HumanResourcesGW): 172.17.6.1 và 172.17.1.3, nói cách khác, một IP ở phía mạng con và một IP khác ở phía xương sống.

Khi các thông điệp được gửi giữa các máy trong phòng mua sắm, không nhất thiết phải để lại cổng gateway, khi TCP/IP sẽ thấy máy một cách trực tiếp. Vấn đề nảy sinh khi máy số 0 của phòng mua sắm muốn gửi một thông điệp tới máy số 3 của phòng nhân sự. Thông điệp này phải đi qua 2 cổng gateway tương ứng. Khi máy số 0 của phòng mua sắm “nhìn thấy” rằng máy số 3 của phòng nhân sự ở trên mạng khác, thì nó gửi gói thông qua cổng gateway của phòng mua sắm, mà tới lượt mình sẽ gửi nó tới cổng gateway của phòng nhân sự, mà, tới lượt mình, gửi nó tới máy số 3 của phòng nhân sự. Ưu điểm của việc có các mạng con là rõ ràng, biết rằng giao thông giữa tất cả các máy của phòng mua sắm, ví dụ, sẽ không ảnh hưởng tới các máy của phòng khách hàng hoặc nhân sự (mặc dù điều này là phức tạp và đắt giá hơn về khía cạnh thiết kế và xây dựng mạng).

Trang 226/471

Page 227: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 1. Cấu hình của các phân đoạn và các cổng gateway trong một itranet

IP sử dụng một bảng để định tuyến các gói giữa các mạng khác nhau, trong đó có một định tuyến mặc định có liên quan tới mạng 0.0.0.0. Tất cả các địa chỉ trùng khớp với địa chỉ này, vì không cái nào 32 bit là cần thiết; chúng sẽ được gửi qua cổng gateway mặc định tới mạng được chỉ định. Trong cổng của phòng mua sắm (PurchasesGW), ví dụ, bảng này có thể như sau:

Địa chỉ Mặt nạ Cổng Gateway Giao diện

172.17.1.0 255.255.255.0 - fddi0

172.17.4.0 255.255.255.0 172.17.1.2 fddi0

172.17.6.0 255.255.255.0 172.17.1.3 fddi0

0.0.0.0 0.0.0.0 172.17.2.1 fddi0

172.17.2.0 255.255.255.0 - eth0

'-' có nghĩa là máy được kết nối trực tiếp và không cần định tuyến. Thủ tục cho việc xác định liệu việc định tuyến có được yêu cầu hay không cấu tạo từ việc thực hiện một hành động rất đơn giản với 2 toán tử logic AND (mạng phụ AND mặt nạ và AND mặt nạ gốc) và việc so sánh 2 kết quả này. Nếu chúng khớp nhau, thì sẽ không có việc định tuyến, khi máy được xác định như cổng gateway phải được gửi trong mỗi máy, sao cho máy này định tuyến cho thông điệp.

Ví dụ, một thông điệp từ 172.17.2.4 tới 172.17.2.6 có thể có nghĩa là:

172.17.2.4 AND 255.255.255.0 = 172.17.2.0

172.17.2.6 AND 255.255.255.0 = 172.17.2.0

Khi các kết quả là y hệt như nhau, có thể không có việc định tuyến. Mặt khác, nếu chúng ta làm y hệt từ 172.17.2.4 tới 172.17.6.6 thì chúng ta sẽ thấy rằng sẽ có việc định tuyến thông qua 172.17.2.1 với một sự thay đổi giao diện (eth0 sang ffdi0) tới 172.17.1.1 và từ đây tới 172.17.2.1 với một sự thay đổi

Trang 227/471

Page 228: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

giao diện khác (ffdi0 sang eth0) và sau đó sang 172.17.6.6. Việc định tuyến mặc định sẽ được sử dụng khi không một qui định nào trùng khớp. Nếu 2 qui định này khớp nhau, thì việc định tuyến khớp một cách chính xác nhất, nói một cách khác, thứ với ít số 0 nhất, sẽ được sử dụng. Để xây dựng các bảng định tuyến, chúng ta có thể sử dụng lệnh route trong khi khởi động máy; tuy nhiên, nếu cần thiết phải sử dụng các qui định phức tạp hơn (hoặc việc định tuyến tự động), thì chúng ta có thể sử dụng lệnh của giao thức thông tin định tuyến RIP (routing information protocol) hoặc, giữa các hệ thống độc lập, giao thức cổng bên ngoài EGP (external gateway protocol) hoặc cả lệnh của giao thức cổng biên giới BGP (border gateway protocol).

Để cài đặt một máy trên một mạng đang tồn tại, cần thiết phải có những thông tin sau đây, được lấy từ nhà cung cấp mạng hoặc người quản trị: địa chỉ IP của nút, địa chỉ IP của mạng, địa chỉ phát ra, địa chỉ mặt nạ mạng, địa chỉ của bộ định tuyến và địa chỉ DNS.

Nếu chúng ta đang thiết lập một mạng mà nó sẽ không bao giờ có một kết nối Internet, thì chúng ta có thể chọn các địa chỉ chúng ta mong muốn, nhưng được khuyến cáo phải duy trì một trật tự phù hợp tương ứng đối với kích thước của mạng cần thiết, sao cho để tránh được các vấn đề quản trị bên trong mạng theo yêu cầu. Chúng ta bây giờ sẽ thấy cách để xác định mạng và nút cho một mạng riêng (phải rất thận trọng, vì, nếu máy được kết nối tới mạng này, thì chúng ta có thể làm phiền người sử dụng khác mà với họ địa chỉ này đã được chỉ định): địa chỉ nút 192.168.110.23, mặt nạ mạng 255.255.255.0, phần của mạng 192.168.110., phần của nút .23, địa chỉ mạng 192.168.110.0, địa chỉ phát ra 192.168.110.255.

Trang 228/471

Page 229: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.4. Cấu hình mạng như thế nào

6.4.1 Cấu hình của kiểm soát giao diện mạng (NIC)

Một khi nhân GNU/Linux được tải lên, nó chạy lệnh khởi động init, rồi tới lượt nó, đọc tệp cấu hình /etc/initab và bắt đầu khởi động qui trình. Thông thường, initab có hệ quả như: si::sysinit: /etc/init.d/boot, thể hiện tên của tệp các lệnh (script) kiểm soát các hệ quả của việc khởi động. Thông thường, script này gọi các scripts khác, đưa vào script khởi động mạng.

Ví dụ

Trong Debian, etc/init.d/network được chạy để cấu hình giao diện mạng, phụ thuộc vào mức khởi động; Ví dụ, trong mức khởi động 2, tất cả các tệp S* trong thư mục /etc/rc2.d (là những đường liên kết tới thư mục /etc/initd) sẽ chạy, và trong mức khởi động thấp, tất cả các tệp K* ở trong cùng một thư mục. Theo cách này, script chỉ ở đó một lần (/etc/init.d) và, phụ thuộc vào các dịch vụ được yêu cầu ở tình trạng đó, một liên kết được tạo ra trong thư mục tương ứng với tình trạng của nút.

Các thiết bị mạng được tạo ra một cách tự động khi phần cứng tương ứng khởi động. Ví dụ, trình điều khiển Ethernet tạo ra các giao diện eth[0..n] một cách tuần tự, khi phần cứng tương ứng được định vị.

Giao diện mạng có thể được cấu hình vào thời điểm đó, đòi hỏi 2 bước: chỉ định địa chỉ mạng cho thiết bị và khởi động các thông số mạng đối với hệ thống. Lệnh được sử dụng cho việc này là ifconfig (cấu hình giao diện). Một ví dụ có thể là:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

chỉ ra rằng thiết bị eth0 nên được cấu hình với địa chỉ IP 192.168.110.23 và mặt nạ mạng 255.255.255.0. Up chỉ ra rằng giao diện sẽ được kích hoạt (để giải hoạt nó, hãy chạy ifconfig eth0 down). Nếu không có giá trị nào được chỉ định, thì lệnh này giả thiết rằng các giá trị mặc định nên được sử dụng. Trong ví dụ trước thì nhân sẽ cấu hình cho máy này như một máy dạng C với IP=192.168.110.23 và địa chỉ phát ra là =192.168.110.255.

Có những lệnh, như ifup và ifdown, làm cho có khả năng cấu hình/bỏ cấu hình mạng đơn giản hơn bằng việc sử dụng tệp /etc/network/interfaces để có được tất cả các thông số cần thiết (tham vấn man interfaces cho cú pháp).

Trong Debian, có một phương pháp khác đơn giản hơn cho việc cấu hình mạng (được coi là mức cao), sử dụng các lệnh ifup, ifdown và tệp /etc/network/interfaces được nhắc tới ở trên. Nếu chúng ta quyết định sử dụng các lệnh này, thì không nên cấu hình mạng ở mức thấp, vì những lệnh này là đủ cho việc cấu hình/bỏ cấu hình cho mạng.

Để sửa đổi các thông số của mạng giao diện eth0, chúng ta có thể (tham vấn man interfaces trong phần 5 của sách chỉ dẫn Unix được đưa vào với hệ điều hành để có nhiều hơn thông tin):

if down eth0 cho tất cả các dịch vụ mạng qua eth0

vi/etc/network/interfaces soạn và sửa các thông số của các mạng/giao diện

Trang 229/471

Website

Tham vấn man ifconfig cho các lựa chọn lệnh khác nhau.

Page 230: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

ifup eth0 Khởi động các dịch vụ mạng qua eth0

Hãy giả thiết chúng ta mong muốn cấu hình một giao diện eth0 trong Debian, có địa chỉ IP tĩnh 192.168.0.123 và có 192.168.0.1 như một cổng gateway. Chúng ta phải soạn /etc/network/interfaces sao cho nó đưa vào một phần như là:

iface eth0 inet static

address 192.168.0.123

netmask 255.255.255.0

gateway 192.168.0.1

Nếu chúng ta đã cài đặt gói resolv.conf, thì có thể bổ sung các dòng để chỉ định thông tin DNS. Ví dụ:

iface eth0 inet static

address 192.168.0.123

netmask 255.255.255.0

gateway 192.168.0.1

dns-search remix.org

dns-nameservers 195.238.2.21 195.238.2.22

Sau khi giao diện đã được kích hoạt, các đối số của dòng lệnh của các lựa chọn dns-search và dns-nameservers là sẵn sàng cho việc đưa vào trong resolv.conf. Đối số dòng lệnh remix.org của lựa chọn dns-search tương ứng với đối số của lựa chọn tìm kiếm trong resolv.conf (chúng ta sẽ xem xét điều này chi tiết hơn sau) và các đối số 195.238.2.21 và 195. 238.2.22 của lựa chọn dns-nameservers tương ứng với các lựa chọn của máy chủ tên trong resolv.conf (tham vấn man resolv.conf). Cũng có khả năng để cấu hình mạng ở mức thấp thông qua lệnh ip (tương đương với ifconfig và route). Mặc dù lệnh này là linh hoạt hơn nhiều và mạnh (có thể được sử dụng để thiết lập các đường ngầm tunnels, thay thế việc định tuyến …), lại phức tạp hơn và được khuyến cáo sử dụng các thủ tục trước đó cho các cấu hình mạng cơ bản.

6.4.1.1 Cấu hình mạng theo dạng của Fedora

Red Hat và Fedora sử dụng một cấu trúc tệp khác cho cấu hình mạng: /etc/sysconfig/network. Ví dụ, để cấu hình mạng theo một cách tĩnh:

NETWORKING = yes

HOSTNAME = my-hostname

FORWARD_IPV4 = true

GATEWAY = “XXX.XXX.XXX.YYY”

Tên của máy chủ host được xác định bởi cmd hostname

Đúng cho NAT cho các cổng gateway và bộ định tuyến của tường lửa

Cổng gateway dẫn ra Internet

Để cấu hình có sử dụng DHCP, cần thiết phải xóa dòng GATEWAY, vì nó sẽ được chỉ định bằng máy chủ. Và nếu NIS được kết hợp vào, thì một dòng với miền máy chủ phải được bổ sung: NISDOMAIN=NISProject1

Trang 230/471

Page 231: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Để cấu hình cho giao diện eth0 trong tệp /etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0

BOOTPROTO=static

BROADCAST=XXX.XXX.XXX.255

IPADDR=XXX.XXX.XXX.XXX

NETMASK=255.255.255.0

NETWORK=XXX.XXX.XXX.0

ONBOOT=yes Activates the network on boot.

Từ FC3 trở đi, cũng có khả năng bổ sung:

TYPE=Ethernet

HWADDR=XX:XX:XX:XX:XX:XX

GATEWAY=XXX.XXX.XXX.XXX

IPV6INIT=no

USERCTL=no

PEERDNS=yes

Hoặc hơn nữa, cho việc cấu hình có sử dụng DHCP:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=dhcp

Để vô hiệu hóa DHCP, hãy thay đổi BOOTPROTO=dhcp thành BOOTPROTO=none. Bất kỳ thay đổi nào trong các tệp này đều phải khởi động lại các dịch vụ bằng khởi động lại mạng dịch vụ (hoặc, khác đi, khởi động lại /etc/init.d/network).

1) Lệnh host name new-name,

2) Thay đổi cấu hình mạng trong /etc/sysconfig/network sửa HOSTNAME=new-name

3) Phục hồi lại tất cả các dịch vụ (hoặc khởi động lại):

• service network restart (hoặc chạy /etc/int.d/network restart)

• Khởi động lại máy để bàn bằng việc chuyển qua chế độ console init 3 và thay đổi chế

độ GUI init 5.

Việc kiểm tra tính đúng đắn liệu tên này có không được đăng ký trong /etc/hosts hay không. Hostname có thể bị thay đổi trong thời gian chạy với sysctl -w kernel.hostname=”tên mới”.

Trang 231/471

Page 232: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.4.1.2. Cấu hình của một mạng Wi-Fi (không dây)

Để cấu hình các giao diện Wi-Fi, chúng ta về cơ bản sử dụng gói công cụ không dây (cũng như ifconfig hoặc ip). Gói này sử dụng lệnh iwconfig để cấu hình một giao diện không dây, nhưng điều này cũng có thể được triển khai thông qua /etc/network/interfaces.

Ví dụ: Cấu hình Wi-Fi trong Debian Sarge (Etch) (tương tự trong FC6)

Hãy giả thiết rằng chúng ta muốn cấu hình một card mạng không dây Intel Pro/Wireless 2200BG (rất phổ biến trong nhiều máy tính xách tay, như Dell, HP...). Phần mềm kiểm soát các card này thường được phân thành 2 phần: module phần mềm sẽ được tải vào trong nhân thông qua lệnh modprobe và phần dẻo firmware là mã sẽ được tải vào card và nó được nhà sản xuất đưa ra cho chúng ta (tham vấn site của Intel về mẫu này). Như chúng ta đang thảo luận về các module, thú vị để sử dụng gói hỗ trợ module của Debian cho phép tạo và cài đặt một module dễ dàng (lựa chọn khác có thể sẽ là cài đặt các nguồn và tạo module tương ứng). Chúng ta sẽ biên dịch và cài đặt phần mềm (có thể thấy trên website của các nhà sản xuất và được gọi là ipw2200) sử dụng lệnh m-a trong gói hỗ trợ module này.

apt-get install module-assistant (cài � � t gói này)

m-a -t update

m-a -t -f get ipw2200

m-a -t -build ipw2200

m-a -t install ipw2200

Chúng ta có thể tải về phiên bản phần dẻo firmware tương thích từ địa chỉ site được cung cấp từ nhà cung cấp (trong tài liệu sản phẩm) cùng với phiên bản của trình điều khiển cần thiết, trong trường hợp của chúng ta, có thể là trình điều khiển phiên bản 1.8 và phần dẻo phiên bản 2.0.4, lấy được từ địa chỉ:

http://ipw2200.sourceforge.net/firmware.php

Chúng ta sau đó nên giải nén và cài đặt phần dẻo này:

tar xzvf ipw2200fw2.4.tgz C /tmp/fwr/

cp /tmp/fwr/*.fw /usr/lib/hotplug/firmware/

Điều này sẽ sao chép 3 gói (ipw2200-bss.fw, ipw2200-ibss.fw và ipw2200-sniffer.fw). Module này sau đó được tải với: modprobe ipw2200, hệ thống khởi động lại và sau đó, từ console, chúng ta có thể chạy lệnh dmesg | grp ipw, sẽ chỉ cho chúng ta một số dòng tương tự như các dòng bên dưới và chúng chỉ ra rằng module đang tải (điều này có thể được kiểm tra với lsmod):

ipw2200: Intel (R) PRO/Wireless 2200/2915 Network Driver, git1.0.8

ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection

...

Chúng ta sau đó tải về gói các công cụ không dây chứa iwconfig để cài đặt các công cụ không dây với aptget, trong số các công cụ khác, và nếu chạy iwconfig, thì thứ gì đó tương tự như sau sẽ xuất hiện:

eth1 IEEE 802.11b ESSID: “Name-of-the-Wifi”

Mode: Managed Frequency:2.437 GHz

Access Point:00:0E:38:84:C8:72

Bit Rate=11 Mb/s TxPower=20 dBm

Trang 232/471

Page 233: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Security mode:open

...

Sau đó phải cấu hình tệp mạng, ví dụ, gedit /etc/network/interfaces, và bổ sung giao diện của eth1 wifi, ví dụ:

iface eth1 inet dhcp

pre-up iwconfig eth1 essid “Name of the Wifi”

pre-up iwconfig eth1 key open XXXXXXXXXX

Các dòng pre-up chạy lệnh iwconfig trước khi kích hoạt giao diện. Cấu hình này được sử dụng nếu chúng ta muốn sử dụng dịch vụ trong chế độ DHCP (chỉ định IP tự động, như sẽ thấy). Thay vì DHCP, IP tĩnh nên được sử dụng và các dòng sau, như một ví dụ, phải được đưa vào (như một card có dây):

address 192.168.1.132

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

gateway 192.168.1.1

Phương pháp khác cho việc cấu hình giao diện là:

iface eth1 inet dhcp

wireless-essid “Name of the Wifi”

wireless-key 123456789e

Chúng ta có thể khởi động mạng với ifup eth1 và sẽ được trao các thông tin về kết nối và tình trạng và chất lượng của sự đón nhận. Để quét các mạng WiFi sẵn có (các điểm truy cập), có thể sử dụng quét iwlist, sẽ chỉ cho chúng ta thông tin về các mạng có sẵn, và nếu muốn kết nối tới một mạng khác, thì có thể sử dụng lệnh iwconfig để thay đổi mạng hoặc điểm kết nối.

6.4.2. Cấu hình của trình giải tên

Bước tiếp theo là cấu hình cho trình giải tên, làm thay đổi các tên như pirulo.remix.com thành 192.168.110.23. Tệp /etc/resolv.conf được sử dụng cho việc này. Định dạng này rất đơn giản (mỗi dòng của văn bản cho một câu). Có 3 từ khóa cho mục đích này: miền (miền cục bộ), tìm kiếm (liệt kê các miền có thể thay thế) và máy chủ tên (địa chỉ IP của máy chủ tên miền).

Ví dụ của /etc/resolv.conf

domain remix.com

search remix.com.piru.com

name server 192.168.110.1

name server 192.168.110.65

Danh sách các máy chủ tên này thường phụ thuộc vào môi trường mạng, có thể thay đổi tùy thuộc vào máy tính ở đâu hoặc máy tính được kết nối ở đâu. Các chương trình cho việc kết nối tới các đường điện

Trang 233/471

Page 234: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thoại (pppd) hoặc có các địa chỉ IP tự động (dhclient) có thể sửa đổi resolv.conf để chèn vào hoặc xóa các máy chủ; nhưng những đặc tính này không luôn làm việc đúng và chúng có thể đôi khi tạo ra

những xung đột hoặc những cấu hình không đúng. Gói resolvconf giải quyết thích đáng một cách phù

hợp vấn đề này và cho phép cấu hình các máy chủ tên dễ dàng và động. resolvconf được thiết kế để làm việc mà người sử dụng không phải cấu hình bất kỳ thứ gì bằng tay; tuy nhiên, gói này là hoàn toàn mới và có thể đòi hỏi một số sự trợ giúp bằng tay để nó làm việc đúng mức. Để có thêm thông tin:

http://packages.debian.org/unstabale/net/resolvconf

Tệp quan trọng khác là /etc/host.conf, có thể được sử dụng để cấu hình cho hành xử của trình giải tên. Tệp này rất quan trọng vì nó chỉ nơi địa chỉ hoặc tên nút được giải đầu tiên. Điều này có thể tham vấn trong máy chủ DNS hoặc các bảng cục bộ bên trong máy đang tồn tại (/etc/hosts).

Ví dụ về /etc/host.conf

order hosts, bind

multi on

Cấu hình này chỉ rằng /etc/hosts nên được kiểm tra trước khi tham vấn DNS và nó cũng chỉ (dòng 2) ra rằng tất cả các địa chỉ hợp lệ được thấy trong /etc/hosts nên được quay trở lại. Hệ quả là, tập /etc/hosts là nơi mà các địa chỉ cục bộ được đặt và nó cũng có thể được sử dụng để truy cập các nút mà không phải tham vấn DNS.

Qui trình tham vấn là nhanh hơn nhiều, nhưng yếu điểm là việc, nếu nút này thay đổi, thì địa chỉ sẽ là không chính xác. Trong một hệ thống được cấu hình đúng, thì chỉ nút cục bộ và một đầu vào cho giao diện lặp ngược sẽ xuất hiện.

Ví dụ về /etc/hosts

127.0.0.1 localhost loopback

192.168.1.2 pirulo.remix.com pirulo

Các tên hiệu (bí danh) có thể được sử dụng cho tên của một máy; điều này có nghĩa là máy có thể có các tên khác nhau cho cùng một địa chỉ IP. Giao diện lặp ngược (loopback) là một dạng giao diện đặc biệt làm cho có khả năng đối với một nút kết nối tới bản thân nó (ví dụ, để kiểm tra rằng hệ thống con của mạng đang làm việc mà không có việc truy cập mạng). Mặc định, địa chỉ IPO 127.0.0.1 đã được

chỉ định một cách đặc biệt cho sự lặp ngược (một lệnh telnet 127.0.0.1 sẽ kết nối với cùng máy đó). Việc cấu hình cho các tên hiệu là rất dễ dàng (thường thì, script khởi động mạng sẽ cấu hình chúng).

Ví dụ về ng lặp ngược (loopback)

ifconfig lo 127.0.0.1

route add host 127.0.0.1 lo

Trong phiên bản 2 của thư viện GNU/Linux, có một thay thế quan trọng về các chức năng của tệp host.conf. Sự cải tiến này bao gồm sự tập trung các thông tin về các dịch vụ khác nhau cho giải pháp tên, cung cấp nhiều ưu điểm cho người quản trị mạng. Tất cả các thông tin trong những tham vấn dịch

Trang 234/471

Page 235: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

vụ và tên để cấu hình cho thứ tự và các cơ sở dữ liệu theo một cách rất đơn giản. Trong tệp này, mỗi dịch vụ xuất hiện, mỗi cái một dòng, với một tập hợp các lựa chọn, như là lựa chọn phân giải tên nút. Điều này chỉ ra rằng thứ tự tham vấn cho các cơ sở dữ liệu để có được IP của nút hoặc tên của nó sẽ là đầu tiên thông qua dịch vụ DNS (sử dụng tệp /etc/resolv.conf để xác định IP của nút DNS) và sau đó, nếu nó không thể giành được ở đây, thì các cơ sở dữ liệu của máy cục bộ (/etc/hosts) sẽ được sử dụng. Những lựa chọn khác được giải thích trong các phần sau. Phương pháp cho từng sự tham vấn cũng có thể được kiểm soát thông qua các hành động (giữa []), ví dụ:

hosts: xfn nisplus dns [NOTFOUND = return] files

Điều này chỉ ra rằng, khi DNS được tham vấn, nếu không có sự đăng ký cho sự tham vấn này, thì chương trình mà đã thực hiện sự tham vấn sẽ trả về số 0. Dấu '!' có thể được sử dụng để từ chối hành động, ví dụ:

hosts dns [!UNAVAIL = return] files

6.4.3. Cấu hình cho việc định tuyến

Một khía cạnh khác phải được cấu hình là việc định tuyến. Mặc dù qui trình này được coi là sẽ rất phức tạp, nói chung, những yêu cầu định tuyến là rất đơn giản. Trong một nút với nhiều kết nối, việc định tuyến cấu tạo từ việc quyết định gửi đi đâu và nhận cái gì. Một nút đơn giản (một kết nối mạng duy nhất) cũng cần việc định tuyến, biết rằng tất cả các nút có một sự lặp ngược và một kết nối mạng (ví dụ, Ethernet, PPP, SLIP...). Như chúng ta đã giải thích, có một bảng được gọi là bảng định tuyến chứa các hàng với một loạt các trường, trong đó đặc biệt quan trọng là: địa chỉ đích, giao diện thông qua đó thông điệp sẽ được gửi và địa chỉ IP, mà nó sẽ tiến hành bước tiếp theo trong cổng gateway.

Lệnh route có thể được sử dụng để sửa đổi bảng này để triển khai các nhiệm vụ định tuyến phù hợp. Khi một thông điệp tới, địa chỉ đích được xem xét, được so sánh với những đầu vào trong bảng và gửi thông qua giao diện với địa chỉ hầu như tương tự như đích của gói. Nếu một cổng gateway được chỉ định, thì nó được gửi tới giao diện phù hợp.

Giả thiết, ví dụ, rằng nút của chúng ta là trong một mạng lớp C với địa chỉ 192.168.110.0 và địa chỉ là 192.168.110.23; và bộ định tuyến được kết nối tới Internet là 192.168.110.3. Cấu hình sẽ là:

• Trước hết, giao diện:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

• Sau đó, chỉ ra rằng tất cả các datagram cho các nút với địa chỉ 192.168.0.* phải được gửi tới thiết bị mạng:

route add -net 192.1 ethernetmask (mặt nạ của ethernet) 255.255.255.0 eth0

Trang 235/471

Lưu ý

Ví dụ về nsswitch.conf: …

hosts: dns files

...

networks: files

Lưu ý

Tham vấn bảng định tuyến:

route -n

hoặc cũng cả

netstar -r

Page 236: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

-net chỉ rằng đây là một định tuyến mạng mà - host 192.168.110.3 cũng có thể được sử dụng. Cấu hình này sẽ cho phép nó kết nối được với tất cả các nút bên trong một phân khúc mạng (192.1), mà, điều gì có thể xảy ra nếu chúng ta muốn kết nối với nút khác bên ngoài phân khúc mạng này? Có thể sẽ rất khó khăn để có tất cả các đầu vào phù hợp cho tất cả các máy mà chúng ta muốn kết nối. Để đơn giản hóa, chúng ta có default route, được sử dụng khi địa chỉ đích không khớp với bất kỳ đầu vào nào trong bảng. Một khả năng cấu hình có thể là:

route add default gư 192.168.110.3 eth0

(gw là IP hoặc tên của một cổng gateway hoặc nút của bộ định tuyến).

Phương pháp khác để thực hiện điều này có thể là:

ifconfig eth0 inet down disable the interface

ifconfig lo

Link encap: Local Loopback

… (no entries for eth0 will appear)

route

… (no entry in the routing table will appear)

Hệ quả là, giao diện được kích hoạt với IP khác và một định tuyến mới:

ifconfig eth0 inet up 192.168.0.111\

netmassk 255.255.0.0 broadcast 192.168.255.255

route add -net 10.0.0.0 netmask 255.0.0.0 \

gw 192.168.0.1 dev eth0

Ký tự (\) chỉ rằng lệnh này tiếp tục trên dòng tiếp sau. Kết quả là:

ifconfig

eth0 Link encap: Ethernet HWaddr 08:00:46:7A:02:80

inet addr: 192.168.0.111 Bcast: 192.168.255.255 Mask: 255.255.0.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

lo Link encap: Local Loopback

inet addr:127.0.0.1 Mask: 255.0.0.0

route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.0.0 * 255.255.0.0 U 0 0 0 eth0

Trang 236/471

Page 237: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0

Để có thêm thông tin, hãy xem các lệnh ifconfig (8) và route (8).

6.4.4. Cấu hình của inetd

Bước tiếp theo trong cấu hình của mạng là cấu hình các máy chủ và các dịch vụ sẽ cho phép người sử dụng khác truy cập được tới máy cục bộ hoặc các dịch vụ của nó. Các chương trình máy chủ sẽ sử dụng các cổng để nghe các yêu cầu từ các máy trạm, mà chúng sẽ được gửi tới dịch vụ này như là IP:port. Các máy chủ có thể làm việc theo 2 cách khác nhau: đứng một mình (trong đó dịch vụ nghe cổng được chỉ định và luôn là tích cực) hoặc thông qua inetd.

inetd là một máy chủ kiểm soát và quản lý các kết nối mạng của các dịch vụ được chỉ định trong tệp /etc/inetd.conf, mà, khi một yêu cầu dịch vụ được thực hiện, sẽ khởi động máy chủ phù hợp và truyền đi yêu cầu.

Các tệp quan trọng phải được cấu hình: /etc/services và /etc/inetd.conf. Trong tệp đầu tiên, chúng ta liên kết các dịch vụ, các cổng và giao thức, và trong tệp thứ 2, các chương trình của máy chủ sẽ trả

lời cho một yêu cầu tới một cổng được xác định. Định dạng /etc/services là name port/protocol

aliases, nơi mà trường đầu tiên là tên dịch vụ, trường thứ 2 là cổng nơi mà dịch vụ diễn ra và giao thức sử dụng, và trường tiếp theo là một bí danh của tên này. Có một loạt các dịch vụ mặc định được cấu hình sẵn trước. Bây giờ sẽ chỉ ra một ví dụ của /etc/services (# chỉ ra những gì đi sau là bình luận):

tcpmux 1/tcp # # TCP port service multiplexer

echo 7/tcp

echo 7/udp

discard 9/tcp sink null

discard 9/udp sink sink null

systat 11/tcp users

...

ftp 21/tcp

ssh 22/tcp # Giao thức đăng nhập từ xa SSH

ssh 22/udp # Giao thức đăng nhập từ xa SSH

telnet 23/tcp

Trang 237/471

Page 238: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

# 24 - private

smtp 25/tcp mail

...

Tệp /etc/inetd.conf là cấu hình cho dịch vụ chủ chốt của mạng (intd server daemon). Mỗi dòng chứa 7 trường cách biệt nhau bằng các khoảng trống: service socket_type proto flags user server_path server_args, nơi service là dịch vụ được mô tả trong cột đầu trong /etc/services, socket_type là dạng của socket (các giá trị có thể là stream, dgram, raw, rdm, hoặc seqpacket), proto là giao thức có giá trị cho đầu vào này (nó phải khớp với thứ bên trong /etc/services), flags chỉ hành động nên được thực hiện khi có một kết nối mới trong một dịch vụ có mặt kết nối khác, (wait nói cho inetd không khởi động một máy chủ mới hoặc nowait có nghĩa là intd phải khởi động một máy chủ mới). user sẽ là tên người sử dụng cục bộ mà với nó máy trạm từng khởi động dịch vụ được xác định, server_path là thư mục nơi mà máy chủ được đặt và server_args có thể là những đối số sẽ được đi qua máy chủ. Một ví dụ về một số dòng /etc/inetd.conf (dấu # là một bình luận, vì thế nếu một dịch vụ có dấu # đứng trước tên, thì có nghĩa là nó không sẵn sàng):

...

telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd

ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd

# fsp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.fspd

shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd

login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind

# exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd...

...

Như với Debian Woody 3.0 r1, chức năng inetd đã được thay thế bằng xinetd (được khuyến cáo), cần

tệp cấu hình /etc/xinetd.conf (xem cuối của phần này). Nếu chúng ta muốn khởi động dịch vụ inetd,

thì phải chạy (và tạo các liên kết phù hợp trong các thư mục /etc/rcX.d) /etc/init.d/inetd.real

start (xem cuối chương có những ví dụ cấu hình).

Ngoài cấu hình của inetd hoặc xinetd, cấu hình điển hình của các dịch vụ mạng trong một máy để bàn hoặc môi trường máy chủ cơ bản cũng có thể đưa vào (một số dịch vụ này sẽ được xem xét trong chương về các máy chủ):

• ssh: kết nối tương tác an ninh để thay thế telnet, nó đưa vào 2 tệp cấu hình

/etc/ssh/ssh_config (cho máy trạm) và /etc/ssh/sshd_config (cho máy chủ).

• exim: đại lý truyền thông điệp (MTA), bao gồm các tệp cấu hình: /etc/exim/exim.conf,

/etc/mailname, /etc/aliases, /etc/email-addresses.

Trang 238/471

Page 239: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• fetchmail: daemon cho việc tải về thư từ một tài khoản POP3, /etc/fetchmailrc.

• procmail: chương trình cho việc lọc và phân phối thư cục bộ, -/.procmailrc.

• tcpd: Các dịch vụ lọc cho các máy và miền được kích hoặt và được giải hoạt cho việc kết nối

tới máy chủ (trình bọc – wrapper): /etc/hosts.allow, /etc/hosts.deny.

• DHCP: Dịch vụ cho việc quản lý (máy chủ) hoặc có được một IP (máy trạm),

/etc/dhcp3/dhclient.conf (máy trạm), /etc/default/dhcp3-server (máy chủ),

/etc/dhcp3/dhcpd.conf (máy chủ).

• CVS: hệ thống quản lý các phiên bản hiện hành, /etc/cvs-cron.conf, /etc/cvs-

pserver.conf.

• NFS: hệ thống tệp mạng, /etc/exports.

• Samba: hệ thống tệp mạng và chia sẻ máy in trong các mạng Windows, /etc/samba/smb.conf.

• lpr: daemon cho hệ thống in ấn, /etc/printcap (cho hệ thống lpr - không phải CUPS-).

• Apache và Apache2: máy chủ web, /etc/apache/* và /etc/apache2/*.

• squid: máy chủ proxy-cacthe (ủy quyền - lưu tạm), /etc/squid/*.

6.4.5. Cấu hình bổ sung: các giao thức và các mạng

Có các tệp cấu hình khác khó mà bao giờ đó được sử dụng, nhưng chúng có thể là thú vị. /etc/protocols là một tệp chỉ ra các trình xác minh giao thức với các tên giao thức; theo cách này, các lập trình viên có thể chỉ định các giao thức bằng tên của họ trong các chương trình.

Ví dụ về /etc/protocols

ip 0 IP # giao thức Internet, số giao thức theo bí danh

#hopopt 0 HOPOPT # Lựa chọn của IPv6 Hop-by-Hop [RFC-1883]

icmp 1 ICMP # Giao thức kiểm soát thông điệp Internet

Tệp /etc/network có một chức năng tương tự như /etc/hosts, nhưng ở những nơi các mạng được quan tâm, nó chỉ ra các tên mạng trong quan hệ với địa chỉ IP (lệnh route sẽ chỉ ra tên của mạng và không chỉ ra địa chỉ của mạng trong trường hợp này).

Ví dụ về /etc/networks

loopnet 127.0.0.0

localnet 192.168.0.0

amprnet 44.0.0.0 …

Trang 239/471

Page 240: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.4.6. Các khía cạnh an ninh

Điều quan trọng phải tính tới các khía cạnh an ninh trong các kết nối mạng, như một số lượng đáng kể các cuộc tấn công xảy ra thông qua mạng. Chúng ta sẽ thảo luận chủ đề này chi tiết hơn trong phần về an ninh; tuy nhiên, có một số khuyến cáo cơ bản nên được tính tới để giảm thiểu những rủi ro ngay lập tức trước và sau việc cấu hình mạng trong máy tính của chúng ta:

• Không kích hoạt các dịch vụ sẽ không được sử dụng trong /etc/inetd.conf, hãy chèn một # vào trước tên để tránh các nguồn rủi ro.

• Hãy sửa tệp /etc/ftpussers để từ chối sự truy cập với những người sử dụng nhất định nào đó mà họ có thể có được một kết nối FTP tới máy tính của bạn.

• Hãy sửa tệp /etc/securetty để chỉ từ những máy đầu cuối nào (mỗi tên một dòng), ví dụ: tty1 tty2 tty3 tty4, sẽ là có khả năng để siêu người sử dụng của root kết nối. Siêu người sử dụng root sẽ không có khả năng kết nối từ bất kỳ máy đầu cuối còn lại nào.

• Sử dụng chương trình tcpd. Máy chủ này là một trình bọc (wrapper) có khả năng cho phép/từ chối một dịch vụ từ một nút cho trước và được đặt trong /etc/inetd.conf như một dịch vụ tức thì.

tcpd kiểm tra các qui định truy cập nhất định nào đó trong 2 tệp: /etc/hosts.allow

/etc/hosts.deny.

Nếu kết nối này được chấp nhận, nó khởi tạo một dịch vụ phù hợp được đi qua như một đối số (ví dụ, dòng dịch vụ FTP chỉ ra trước đó trong inetd.conf:

ftp stream tcp nowait root /usr/sbin/tcpd/usr/sbin/in.ftpd.

tcpd đầu tiên tìm /etc/hosts.allow và sau đó bên trong của /etc/hosts.deny. Tệp hosts.deny chứa các qui định trong đó các nút không có sự truy cập tới một dịch vụ bên trong máy này. Một cấu hình hạn chế là ALL: ALL, khi nó sẽ chỉ cho phép truy cập tới các dịch vụ từ các nút được công bố trong

/etc/hosts.allow.

Tệp /etc/hosts.equiv cho phép truy cập tới máy mà không phải vào mật khẩu. Việc sử dụng cơ chế này không được khuyến cáo; những người sử dụng nên được khuyến cáo không sử dụng thứ tương đương từ tài khoản của người sử dụng, thông qua tệp .rhosts.

Trong Debian, điều quan trọng để cấu hình /etc/security/assess.conf, tệp chỉ ra các qui định xem ai và từ đâu có khả năng đăng nhập vào máy. Tệp này có một dòng lệnh với 3 trường cách biệt nhau bằng một dấu 2 chấm ':' ở dạng cho phép: Users:origin. Trường đầu sẽ là một +o- (cho phép hoặc từ chối), trường thứ 2 là tên của một người sử dụng /user names, group (tên, nhóm người sử dụng) hoặc user@host, và trường thứ 3 sẽ là tên của một thiết bị, nút, miền, các địa chỉ nút hoặc các mạng hoặc tất cả – ALL.

Ví dụ về access.conf

Lệnh này không thực hiện việc đăng nhập root qua tty1:

ALL EXCEPT ROOT:TTY1 …

Trang 240/471

Page 241: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Nó cho phép sự truy cập tới u1, u2, g1 và tất cả những ai trong miền remix.com:

+: u1 u2 g1 .remix.com:ALL

6.4.7. Các lựa chọn IP

Có những lựa chọn xa hơn về giao thông của IP nên được nhắc tới. Điều này được cấu hình bằng việc khởi động tệp tương ứng trong thư mục /proc/sys/net/ipv4/. Tên tệp là y hệt như lệnh và nếu bằng 1 thì buộc phải được đặt trong tệp để kích hoạt chúng, hoặc bằng 0 để giải hoạt chúng.

Ví dụ

Ví dụ, nếu chúng ta muốn kích hoạt ip_forward, chúng ta phải chạy:

echo 1 > /proc/sys/net/ipv4/ip_forrward

Được sử dụng rộng rãi nhất là: ip_forward được sử dụng cho việc định tuyến giữa các giao diện hoặc với việc làm mặt nạ cho IP; ip_default_ttl, là thời gian sống đối với một gói IP (64 mili giây, mặc định) biến logic ip_bootp_agent (BOOLEAN) chấp nhận các gói (hoặc không) với địa chỉ gốc của dạng 0.b.c.d và đích của nút này, phát ra hoặc phát kênh bội.

6.4.7.1 Các lệnh để giải quyết các vấn đề của mạng

Nếu có những vấn đề trong việc cấu hình mạng, thì chúng ta có thể bắt đầu bằng việc kiểm tra đầu ra của các lệnh để có được một ý tường ban đầu:

ifconfig

cat /proc/pc1

cat /proc/interrupts

dmesg | more

Để kiểm tra kết nối mạng, chúng ta có thể sử dụng các lệnh sau (netkit-ping, traceroute, dnsutils, iptables và net-tools được cài đặt):

ping uoc.edu

traceroute uoc.edu

ifconfig

route -n

dig [@dns.uoc.edu] www.uoc.edu

iptables -L -n | less

netstat -a

netstat -l - - inet

netstat -ln - - tcp

# Ki �m tra k �t n �i Internet

# Quét các gói IP

# Ki �m tra c �u hình c �a máy ch � host

# Ki �m tra c �u hình c �a vi �c � � nh tuy �n

# Ki �m tra nh �ng � � ng ký trong máy ch � dns.uoc.edu

# Ki �m tra vi �c l �c gói (nhân kernel >=2.4)

# Ch � ra t �t c � các c �ng m �

# Ch � ra t �t c � các c �ng nghe

# Ch � ra các c �ng TCP nghe (s � l � � ng)

Trang 241/471

Page 242: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.5. Cấu hình DHCP

DHCP là giao thức cấu hình máy chủ host động. Nó rất đơn giản để cấu hình và nó hữu dụng vì, thay vì phải cấu hình cho từng nút trong một mạng một các riêng rẽ, nó có thể được thực hiện theo một cách tập trung và việc quản trị nó vì thế là dễ dàng hơn. Cấu hình cho một máy trạm là rất dễ, vì chúng ta chỉ phải cài đặt một trong các gói sau đây: dhcp3-client (phiên bản 3, Nhóm các doanh nghiệp phần mềm Internet - Internet Software Consortium), dhcpcd (Yoichi Hariguchi và Sergei Viznyuk), pump (Red Hat); sau đó bổ sung từ dhcp vào phần tương ứng đối với giao diện mà chúng ta mong muốn làm việc theo máy trạm dhcp này (nghĩa là /etc/network/interfaces phải có iface eth0 inet dhcp...).

Việc cấu hình cho các yêu cầu của máy chủ cẩn thận hơn, nhưng nó không đặc biệt phức tạp. Trước tiên, đối với máy chủ để phục vụ tất cả các máy trạm DHCP (bao gồm cả Windows), chúng ta phải giải quyết một số câu hỏi có liên quan tới các địa chỉ phát ra. Để làm việc này, trước hết máy chủ phải có khả năng gửi các thông điệp tới địa chỉ 255.255.255.255, là không hợp lệ trong GNU/Linux. Để thử nó, hãy chạy:

rout add -host 255.255.255.255 dev eth0

Nếu thông điệp sau xuất hiện: 255.255.255.255: Unknown host (không rõ máy chủ) thì dòng ở trên phải được đưa vào trong tệp /etc/host: 255.255.255.255 dhcp và thử lại một lần nữa:

route add -host dhcp dev eth0

Cấu hình của dhcpd có thể được triển khai với giao diện đồ họa của linuxconf (không được khuyến cáo) hoặc bằng việc soạn thảo /etc/dhcpd.conf. Một ví dụ của tệp này là:

# Ví d � v � /etc/dhcpd.conf:

defaule – lease - time 1200;

max - lease - time 9200;

option domain - name “remix.com”;

deny unknown – clients;

option broadcast - address 192.168.11.255;

option routers 192.168.11.254;

option domain - name - servers 192.168.11.1, 192.168.11.2;

subnet 192.168.11.0 netmask 255.255.255.0

{ not authoritative;

range 192.168.11.1 192.168.11.254

host marte {

Trang 242/471

Page 243: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hardware ethernet 00:00:95:C7:06:4C;

fixed address 192.168.11.146;

option host-name “marte”;

}

host saturno {

hardware ethernet 00:00:95:C7:06:44;

fixed address 192.168.11.147;

option host - name “saturno”;

}

}

Điều này sẽ cho phép máy chủ chỉ định dãy địa chỉ từ 192.168.11.1 tới 192.168.11.254, như được mô tả cho mỗi nút. Nếu phân khúc của máy chủ host tương ứng {…} không tồn tại, thì chúng sẽ được chỉ định một cách ngẫu nhiên. Các IP sẽ được chỉ định cho một thời gian tối thiểu 1,200 giây và tối đa 9,200 (nếu các thông số này không tồn tại, chúng sẽ được chỉ định một cách vô hạn định).

Trước khi chạy máy chủ, chúng ta phải kiểm tra liệu tệp /var/state/dhcp/dhcpd.leases có tồn tại

không (nếu không, nó sẽ phải được tạo ra bằng tay /var/state/dhcp/dhcpd.leases). Để chạy máy

chủ này: /usr/sbin/dhcpd (hoặc có thể đặt nó trong các script khởi động). Với /usr/sbin/dhcpd -d-f, có thể thấy hoạt động trong máy chủ bên trong console của hệ thống. [Mou01, Rid00, KD00, Dra99].

Điều quan trọng không quên mệnh đề not authoritative (không có thẩm quyền), khi mà, nếu không, máy chủ này có thể để lại các máy chủ dhcp khác mà chúng phục vụ IP cho các phân khúc khác không tích cực.

Trang 243/471

Page 244: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.6. Việc đặt bí danh cho IP

Có một số ứng dụng mà với chúng là hữu dụng để cấu hình nhiều địa chỉ IP cho một thiết bị mạng duy nhất. Các nhà cung cấp dịch vụ Internet ISP (Internet Service Provider) thường xuyên sử dụng đặc tính này để cung cấp các tính năng cá nhân hóa (như là WWW và FTP) cho những người sử dụng của họ. Đối với việc này, nhân phải được biên dịch với các lựa chọn cho việc đặt bí danh cho mạng và IP (hỗ trợ đặt bí danh). Sau việc cài đặt nhân mới, cấu hình là rất dễ. Các bí danh được gắn vào các thiết bị mạng ảo có liên quan tới thiết bị mới bằng một định dạng như là: thiết bị: số ảo.

Ví dụ: eth0:0, ppp0:8

Giả sử chúng ta có một mạng Ethernet hỗ trợ 2 mạng con IP khác nhau cùng một lúc và máy của chúng ta muốn có sự truy cập trực tiếp tới chúng. Một ví dụ của cấu hình này có thể là:

ifconfig eth0 192.168.110.23 netmask 255.255.255.0 up

route add -net 192.168.110.0 netmask 255.255.255.0 eth0

ifconfig eth0:0 192.168.10.23 netmask 255.255.255.0 up

route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0

Nó có nghĩa rằng chúng ta có thể có 2 IP, 192.168.110.23 và 192.168.10.23 cho cùng NIC. Để xóa một bí danh, hãy bổ sung thêm một ký tự '-' vào cuối của tên (ví dụ, ifconfig eth0:0- 0). [Mou01, Ran05].

Một trường hợp điển hình là khi chúng ta muốn cấu hình một card Ethernet duy nhất sao cho nó hành xử như giao diện cho các mạng con IP khác nhau. Ví dụ, giả thiết chúng ta có một máy trong một mạng LAN, LAN 192.168.0.x/24. Và chúng ta muốn kết nối máy tính này tới Internet bằng việc sử dụng một địa chỉ IP công cộng được cung cấp bằng DHCP có sử dụng card Ethernet đang tồn tại. Ví dụ, chúng ta có thể tuân thủ thủ tục được mô tả trong ví dụ ở trên hoặc sửa tệp /etc/network/interfaces sao cho nó đưa vào một phần tương tự như sau:

iface eth0 inet static

address 192.168.0.1

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

iface eth0:0 inet dhcp

Giao diện eth0:0 là một giao diện ảo và giao diện bố của nó, eth0, sẽ kích hoạt khi nó làm việc.

Trang 244/471

Page 245: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.7. Đắp mặt nạ IP

Đắp mặt nạ IP là một nguồn được sử dụng sao cho một tập hợp các máy có thể sử dụng một địa chỉ IP duy nhất. Điều này cho phép những nút ẩn (nói cách khác, những nút sử dụng một IP riêng, như 192.168.10.1) có thể đi ra Internet; nhưng chúng không thể trực tiếp chấp nhận những lời gọi hoặc các dịch vụ bên ngoài; chỉ thông qua máy mà có địa chỉ IP thực sự.

Điều này có nghĩa là một số dịch vụ sẽ không làm việc (ví dụ, talk - nói chuyện) và những dịch vụ khác phải được cấu hình trong chế độ PASV (bị động) để chúng làm việc được (ví dụ, FTP). Tuy nhiên, WWW, telnet hoặc IRC sẽ làm việc tốt. Nhân phải được cấu hình với những lựa chọn sau: các tường lửa của mạng, mạng TCP/IP, IP: việc chuyển tiếp/cổng gateway, IP: việc đắp mặt nạ. Thông thường, cấu hình phổ biến nhất là có một máy với kết nối SLIP hoặc PPP và có thiết bị mạng khác (ví dụ, một card Ethernet) với một địa chỉ mạng được giữ lại. Như chúng ta đã thấy và như được mô tả trong RFC 1918, dãy địa chỉ sau đây (IP/Mặt nạ) có thể được sử dụng như là các IP riêng: 10.0.0.0/255.0.0.0, 172.16.0.0/255.240.0.0, 192.168.0.0/255.255.0.0. Các nút mà phải có địa chỉ của máy đắp mặt nạ như cổng gateway mặc định hoặc bộ định tuyến. Trên máy này, chúng ta có thể cấu hình:

• Đường đi của mạng cho Ethernet có xem xét tới mạng có một IP = 192.168.1.0/255.255.255.0

route add -net 192.168.1.0 netmask 255.255.255.0 eth0

• Đường đi mặc định cho phần còn lại của Internet:

route add default pppo

• Tất cả các nút qua mạng 192.168.1/24 sẽ được đắp mặt nạ:

ipchains -A forward -s 192.168.1.0/24 -j MASQ

• Nếu iptables được sử dụng qua một nhân, phiên bản 2.4 hoặc cao hơn:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

hãy tham vấn các tham chiếu trong phần nói về an ninh cho thông tin trên ipchains và iptables. [Ran05, KD00].

Trang 245/471

Page 246: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.8. NAT với nhân 2.2 hoặc cao hơn

Việc dịch địa chỉ mạng IP, NAT (network address translation), là một sự thay thế cho thứ mà đã thực hiện các tính năng của mặt nạ IP của GNU/Linux đã lỗi thời và nó đưa ra những tính năng mới cho dịch vụ này. Một trong những cải tiến được đưa vào trong kho TCP/IP của GNU/Linux 2.2 là việc NAT được tích hợp trong nhân. Để sử dụng nó, chúng ta phải biên dịch nhân với:

CONFIG_IP_ADVANCED_ROUTER, CONFIG_IP_MULTIPLE_TABLES and

CONFIG_IP_ROUTE_NAT.

Và nếu chúng ta cần sự kiểm soát toàn diện của các qui định của NAT, ví dụ, để kích hoạt tường lửa thì chúng ta cũng phải có

CONFIG_IP_FIREWALL and CONFIG_IP_ROUTE_FWMARK.

Để làm việc với những tính năng mới này, chúng ta cần sử dụng chương trình ip (có khả năng có được tại ftp://ftp.inr.ac.ru/ip_routing/). Sau đó, để dịch các địa chỉ datagram sẽ tới, chúng ta có thể sử dụng:

ip route add nat <extadd> [/<masklen>] via <intadd>

Điều này sẽ dịch địa chỉ đích của một gói tới được đánh địa chỉ cho ext-addr (địa chỉ nhìn thấy được từ bên ngoài từ Internet) tới int-addr (địa chỉ của mạng nội bộ thông qua cổng gateway/tường lửa). Gói này được định tuyến phù hợp với bảng chỉ đường cục bộ. Các địa chỉ duy nhất hoặc khối có thể được dịch. Ví dụ:

ip route add nat 240.0.11.34 via 192.109.0.2

ip route add nat 240.0.11.32/27 via 192.109.0.0

Cái đầu làm cho địa chỉ 192.109.0.2 có thể truy cập được như 240.0.11.34. Cái thứ 2 ánh xạ lại khối 192.109.0.0/31 tới 240.0.11.32/63. Trong trường hợp này, chúng ta đã sử dụng, như một ví dụ, việc dịch sang các địa chỉ lớp D và E, như 240.0.*.* sao cho không sử dụng một địa chỉ công cộng. Người sử dụng phải thay thế những địa chỉ này (240.0.11.34 và 240.0.11.3263) đối với các địa chỉ công cộng tương ứng mà họ muốn dịch. [Ran05].

Trang 246/471

Page 247: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.9. Cách cấu hình một kết nối quay số Dial-up và PPP

Việc cấu hình một kết nối quay số có sử dụng PPP trong GNU/Linux là rất đơn giản. PPP (giao thức điểm - điểm - point to point protocol) làm cho có khả năng thiết lập kết nối IP (IP-Links) giữa 2 máy tính với một modem (phải là một modem được GNU/Linux hỗ trợ, vì không phải tất cả các modem, đặc biệt các modem trong hoặc những modem được biết tới như là các Winmodem, có thể cấu hình được vì nhiều trong số chúng cần những phần mềm bổ sung để thiết lập giao tiếp). [Vas00, Law07, Sec00].

Để bắt đầu, chúng ta phải có thông tin sau: modem chuỗi khởi tạo (init-string) (điều này thường là không cần thiết nhưng nếu nó không sẵn sàng, thì chúng ta có thể sử dụng ATZ, làm việc được trong hầu hết các modem hoặc chúng ta có thể tham vấn các danh sách chuỗi khởi tạo đặc biệt).

Chúng ta cũng cần các dữ liệu của ISP: ID kết nối (tên đăng nhập), mật khẩu và số điện thoại. Các địa chỉ DNS có thể được khuyến cáo, nhưng điều này là tùy ý trong các phiên bản hiện hành của pppd. Hơn nữa, chúng ta nên kiểm tra xem modem có được kết nối đúng hay không. Với một modem ngoài, chúng ta phải chạy lệnh echo > /dev/ttyS0 và kiểm tra đèn LED trên modem để xem liệu nó có hoạt động hay không. Nếu không, hãy cố gắng với ttyS1, nếu modem được kết nối với cổng nối tiếp thứ 2. Với một modem trong, hãy kiểm tra tài liệu chỉ dẫn phần cứng được hỗ trợ để xem liệu modem này có thể cấu hình được không với GNU/Linux; nếu có vấn đề, thì có thể cần thiết phải cấu hình lại nhân để sử dụng nó. Chúng ta cũng có thể sử dụng cat/proc/pci trong trường hợp trong PCI bus. [PPP00].

Cách dễ nhất để cấu hình modem bây giờ là thông qua gói kppp (chúng ta phải cài đặt các gói kdenetwork – ppp* và ppp*). Trên một máy đầu cuối, hãy chạy /usr/bin/kppp. Trong Windows, hãy điền vào các hộp sau:

Accounts => New Connection

Dial => Authentication 'PAP/CHAP'

Store Password => yes

IP => Dynamic IP Address

Autoconfigure hostname => No

Gateway => Default Gateway => Assign the Default Route

DNS => Configuration Automatic => Disable existing DNS

Device => ttyS1(com1) o ttyS2(com2)

Modem => Query Modem to see the results (if you do not obtain the results, change the ttySx device).

Sau khi đưa tên và mật khẩu đăng nhập vào, chúng ta sẽ được kết nối tới Internet (để kiểm tra liệu chúng ta đã được kết nối hay chưa, hãy chạy lệnh ping www.google.com, ví dụ thế). Ở đây, chúng ta đã sử dụng gói kppp, nhưng chúng ta có thể dễ dàng sử dụng linuxconf hoặc gnomeppp).

Trang 247/471

Page 248: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Cách nhanh chóng cấu hình pppd trong Debian là bằng việc sử dụng chương trình pppconfig, đi cùng với gói này. pppconfig sẽ cấu hình các tệp như các tệp nêu ở trước sau khi yêu cầu người sử dụng một số câu hỏi thông qua giao diện thực đơn. Lựa chọn khác cho việc sử dụng pppd là việc chạy nó từ wvdial, đi cùng với gói wvdial. Thay vào việc làm pppd chạy chat tới quay số và bàn chuyện kết nối, wvdial sẽ quay số gọi, thực hiện trao đổi ban đầu và sau đó khởi động pppd sao cho nó có thể làm phần còn lại. Trong hầu hết các trường hợp, chỉ cần số điện thoại, tên và mật khẩu của người sử dụng, wvdial có thể khởi động kết nối đó.

Một khi PPP đã được cấu hình, để cho nó chạy được, ví dụ, my_isp, chúng ta phải sửa /etc/network/interfaces sao cho nó đưa vào một phần như sau (các lệnh ifup, ifdown sử dụng các lệnh pon và poff để cấu hình các giao diện PPP):

iface ppp0 inet ppp

provider mi_isp

với phần này, ifup ppp0 chạy:

pon my_isp

Hiện không có khả năng sử dụng ifup, ifdown để thực hiện một cấu hình hỗ trợ các giao diện PPP. Vì pon biến mất trước khi pppd hoàn tất việc thiết lập kết nối, ifup chạy các up script trước khi giao diện PPP sẵn sàng được sử dụng. Cho tới khi mặc định này được giải quyết, thì nó vẫn sẽ là cần thiết để cấu hình cho kết nối sau này trong /etc/ppp/ip-up hoặc /etc/ppp/ip-up.d/.

Nhiều ISP băng rộng sử dụng PPP để đàm thoại kết nối ngay cả khi các máy trạm được kết nối thông qua các mạng Ethernet và/hoặc ATM. Điều này đạt được thông qua PPP trên Ethernet (PPPoE) mà nó là một kỹ thuật cho việc gói tiến trình PPP bên trong các khung Ethernet. Giả thiết rằng ISP là my_isp. Trước hết, chúng ta phải cấu hình PPP và PPPoE cho my_isp. Cách dễ dàng nhất để làm việc này là việc cài đặt gói pppoeconf và chạy pppoeconf từ console. Sau đó soạn sửa /etc/network/interfaces sao cho nó đưa vào một phân đoạn như sau:

iface eth0 inet ppp

provider my_isp

Đôi lúc, các vấn đề nảy sinh với PPPoE liên quan tới đơn vị truyền cực đại (hoặc MTU - maximum transmit unit) trong các đường DSL (đường thuê bao số - digital subscriber line); bạn có thể tham vấn DSL-HOWTO để có thêm các chi tiết. Nếu modem có một bộ định tuyến, khi modem/bộ định tuyến sẽ điều khiển kết nối PPPoE cho riêng nó và nó sẽ xuất hiện ở phần LAN như một Ethernet đơn giản đối với cổng gateway của Internet.

Trang 248/471

Page 249: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.10. Việc cấu hình mạng thông qua cắm nóng (hotplug)

Gói cắm nóng (hotplug) hỗ trợ việc hoán đổi nóng khi khởi động (gói này theo yêu cầu phải được cài đặt). Phần cứng mạng có thể được cắm nóng hoặc lúc khởi động, hoặc sau khi chèn card vào máy (một card PCMCIA, ví dụ thế) hoặc sau một tiện ích như là discover được chạy và các module cần thiết được tải lên. Khi nhân dò tìm ra phần cứng mới, nó khởi động trình điều khiển cho phần cứng và sau đó chạy chương trình cắm nóng để cấu hình cho nó. Nếu phần cứng sau đó bị loại bỏ, thì chương trình sẽ chạy cắm nóng một lần nữa, với các thông số khác

nhau. Trong Debian, khi cắm nóng được gọi, nó sẽ chạy các script của /etc/hotplug/ và

/etc/hotplug.d/. Phần cứng mạng mà đã vừa kết nối được cấu hình bằng

/etc/hotplug/net.agent. Giả thiết rằng card mạng PCMCIA đã được kết nối, có thể có nghĩa

là giao diện eth0 có thể sẵn sàng để sử dụng. /etc/hotplug/net.agent thực hiện thứ sau:

ifup eth0 = hotplug

Trừ phi một giao diện logic gọi cắm nóng được bổ sung vào trong /etc/network/interfaces, lệnh này sẽ không có ảnh hưởng nào. Đối với lệnh này để cấu hình eth0, chúng ta phải bổ sung

các dòng sau vào /etc/network/interfaces:

mapping hotplug

script echo

Nếu bạn chỉ muốn eth0 cắm nóng và không cho các giao diện khác, hãy sử dụng grep thay cho echo:

mapping hotplug

script grep

map eth0

ifplugd kích hoạt hoặc giải hoạt một giao diện phụ thuộc vào việc liệu phần cứng bên trong có được kết nối tới mạng hay không. Chương trình có thể dò tìm ra một cáp được kết nối tới một giao diện Ethernet hoặc một điểm truy cập có liên quan tới một giao diện Wi-Fi. Khi ifplugd thấy tình trạng của kết nối đã

thay đổi, có nghĩa là giao diện sẵn sàng để sử dụng, thì /etc/hotplug.d/net/ifplugd.hotplug khởi động một phiên làm việc (instance) của ifplugd cho giao diện đó. Khi ifplugd dò tìm ra card được kết nối tới một mạng, thì nó chạy ifup cho giao diện này.

Để liên kết một card Wi-Fi với một điểm truy cập, chúng ta phải lập trình cho nó với một mã mã hóa WEB phù hợp. Nếu ifplugd đang được sử dụng để kiểm soát ifup, như chúng ta đã giải thích, thì sau đó nó sẽ không có khả năng để cấu hình cho mã mã hóa sử dụng ifup, vì điều này chỉ được gọi khi card đã có liên kết. Giải pháp đơn giản nhất là sử dụng waproamd, nó cấu hình mã mã hóa WEP theo các điểm truy cập có sẵn được phát hiện thông qua một tìm kiếm mạng WiFi. Để có thêm thông tin, hãy tham vấn man waproamd và thông tin về gói này.

Trang 249/471

Page 250: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.11. Mạng riêng ảo (VPN)

Một mạng riêng ảo VNP (Virtual Private Network) là một mạng sử dụng Internet để truyền các dữ liệu, nhưng không cho phép bất kỳ thành viên nào bên ngoài truy cập được các dữ liệu đó.

Điều này có nghĩa là chúng ta có một mạng với các nút VPN được kết nối trong hầm ngầm thông qua mạng khác, thông qua đó giao thông diễn ra và với nó không ai có thể tương tác được. Nó được sử dụng khi những người sử dụng ở xa mong muốn truy cập một mạng doanh nghiệp để duy trì an ninh và tính riêng tư của các dữ liệu. Một loạt các phương pháp có thể được sử dụng để cấu hình một VPN, như SSH (SSL), CIPE, IPSec, PPTP; chúng có thể được tham vấn trong phần thư mục tham khảo (chúng ta đã khuyến cáo tham vấn VPN PPP-SSH HOWTO, của Scott Bronson và VPN-HOWTO của Matthew D. Wilson). [Bro01, Wil02].

Để thực hiện thử cấu hình trong phần này, chúng ta sẽ sử dụng VPN mở (OpenVPN), là một giải pháp dựa trên SSL VPN và có thể được sử dụng cho một dãy rộng lớn các giải pháp, ví dụ, truy cập từ xa, VPN điểm – điểm, các mạng WiFi an ninh hoặc các mạng công ty dạng phân tán. OpenVPN triển khai OSI lớp 2 hoặc 3 sử dụng các giao thức SSL/TLS và hỗ trợ xác thực dựa trên các chứng thực, thẻ thông minh và các phương pháp thẩm định khác. OpenVPN là một máy chủ ứng dụng ủy quyền (proxy) và không hoạt động thông qua một trình duyệt web.

Để phân tích nó, chúng ta sẽ sử dụng một lựa chọn trong OpenVPN gọi là OpenVPN cho các cấu hình khóa tĩnh, cung cấp một phương pháp đơn giản cho việc cấu hình một VPN mà là lý tưởng cho những thử nghiệm hoặc các kết nối điểm – điểm. Những ưu điểm là tính đơn giản và thực tế là nó không nhất thiết phải có một chứng chỉ của hạ tầng khóa công khai X509 (PKI) để duy trì VPN. Những nhược điểm là nó chỉ cho phép một máy trạm và một máy chủ, vì khóa công khai và khóa cá nhân không được sử dụng, có thể là những khóa y hệt như trong các phần trước và phải có một khóa ở chế độ văn bản trong mỗi điểm và khóa bí mật phải được thay đổi trước đó đối với một kênh an ninh.

6.11.1 Ví dụ đơn giản

Trong ví dụ này, chúng ta sẽ cấu hình một hầm VPN trên một máy chủ với IP = 10.8.0.1 và một máy trạm với IP = 10.8.0.2. Giao tiếp sẽ được mã hóa giữa máy trạm và máy chủ trên một cổng UDP 1194, là cổng mặc định trong OpenVPN. Sau khi cài đặt gói (http://openvpn.net/install.html), phải tạo ra khóa tĩnh:

openvpn - - genkey - - secret static.key

Sau đó, chúng ta phải sao chép tệp static.key vào điểm khác qua một kênh an ninh (sử dụng ssh hoặc scp, ví dụ thế). Tệp cấu hình máy chủ của openVPN_server ví dụ:

dev tun

if config 10.8.0.1 10.8.0.2

Trang 250/471

Page 251: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

secret static.key

Tệp cấu hình máy trạm ví dụ openVPN_client

remote myremote.mydomain

dev tun

ifconfig 10.8.0.2 10.8.0.1

secret static.key

Trước khi kiểm tra VPN có làm việc không, chúng ta phải kiểm tra tường lửa để kiểm tra xem cổng 1194 UDP là mở trên một máy chủ và giao diện ảo tun0 được OpenVPN sử dụng là không bị khóa hoặc qua máy trạm hoặc qua máy chủ. Hãy nhớ trong đầu rằng 90% các vấn đề kết nối người sử dụng OpenVPN mới phải đối mặt là có liên quan một cách nào đó tới tường lửa.

Để kiểm tra OpenVPN giữa 2 máy, chúng ta phải thay đổi IP đối với những máy thực và miền (domain) đối với máy tương ứng, và sau đó chạy phía máy chủ.

openvpn [t �p c �u hình máy ch �]

Mà sẽ cung cấp đầu ra như sau:

Sun Feb 6 20:46:38 2005 OpenVPN 2.0_rc12 i686-suse-linux [SSL]

[LZO] [EPOLL] built on Feb 5 2005

Sun Feb 6 20:46:38 2005 Difie - hellman initialized with 1024 bit key

Sun Feb 6 20:46:38 2005 TLS - Auth MTU parms [L:1542 D:138 EF:38 EB:0 ET:0 EL:0]

Sun Feb 6 20:46:38 2005 TUN/TAP device tun1 opened

Sun Feb 6 20:46:38 2005 /sbin/ifconfig tun1 10.8.0.1 pointo-point 10.8.0.2 mtu

1500

Sun Feb 6 20:46:38 2005 /sbin/route add -net 10.8.0.0 netmask 255.255.255.0 g �

10.8.0.2

Sun Feb 6 20:46:38 2005 Data Channel MTU Parms [L:1542 D:1450 EF:42 EB:23 ET:0

AF:3/1]

Sun Feb 6 20:46:38 2005 UDPv4 link remote: [undef]:1194

Sun Feb 6 20:46:38 2005 UDPv4 link remote: [undef]

Sun Feb 6 20:46:38 2005 MULTI: multi_init called, r=256 v256

Sun Feb 6 20:46:38 2005 IFCONFIG POOL: base=10.8.4 size=62

Sun Feb 6 20:46:38 2005 IFCONFIG POOL LIST

Trang 251/471

Page 252: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Sun Feb 6 20:46:38 2005 Initialization Sequence Completed

Và phía máy trạm

openvpn [client config file]

Để kiểm tra nó có làm việc không, chúng ta có thể ping 10.8.0.2 từ máy chủ và ping 10.8.0.1 từ máy trạm. Để có thêm thông tin, hãy xem http://openvpn.net/howto.html.

Để bổ sung sự nén vào liên kết, chúng ta phải bổ sung dòng sau đây vào 2 tệp cấu hình:

comp-lzo

Để bảo vệ kết nối thông qua một bộ định tuyến router/tường lửa NAT và mang những thay đổi IP qua một DNS, nếu một trong những điểm này thay đổi, thì hãy bổ sung những thứ sau vào 2 tệp cấu hình:

keng - timer – rem

persist – tun

peepalive 10 60

pirsist - key6

Để chạy như một daemon với các quyền ưu tiên của người sử dụng/nhóm không ai cả (nobody), hãy bổ sung những thứ sau đây vào các tệp cấu hình:

user nobody

group nobody

Daemon

Trang 252/471

Page 253: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

6.12. Những cấu hình và công cụ tiên tiến

Có một tập hợp các gói bổ sung (thay thế những gói thông thường) và các công cụ hoặc cải tiến an ninh của máy (được khuyến cáo trong các môi trường thù địch) hoặc giúp để cấu hình mạng (và hệ thống nói chung) theo một cách thân thiện với người sử dụng hơn.

Các gói này có thể là trợ giúp tuyệt vời cho người quản trị mạng để tránh những truy cập không được phép hoặc tránh những người sử dụng cục bộ vượt quá những quyền hạn của họ (thường không được triển khai bởi người sử dụng cục bộ mà bởi ai đó giả vờ sự xác nhận của họ) hoặc cho việc giúp những người sử dụng mới cấu hình được các dịch vụ một cách phù hợp.

Theo nghĩa này, chúng ta phải xem xét:

• Cấu hình TCP/IP tiên tiến: lệnh systl có thể được sử dụng để sửa đổi các thông số của nhân trong khi chạy hoặc khởi động, để chỉnh chúng cho những nhu cầu của hệ thống. Các thông số có thể được sửa đổi là những thông số trong thư mục /proc/sys và chúng có thể được tham vấn với sysctl -a. Cách đơn giản nhất của việc sửa đổi những thông số này là thông qua tệp cấu hình /etc/syscntl.conf. Sau khi triển khai sự sửa đổi này, chúng ta phải khởi động lại mạng:

/etc/init.d/networking restart

Trong phần này, chúng ta sẽ xem xét một số sửa đổi cho việc cải thiện hiệu năng của mạng (những cải tiến phụ thuộc vào những điều kiện) hoặc an ninh của hệ thống (tham vấn các tham chiếu để có thêm các chi tiết) [Mou01]:

net.ipv4.icmp_echo_ignore_all = 1

• Không trả lời cho các gói ICMP, ví dụ như lệnh ping, có thể có nghĩa là có một cuộc tấn công từ chối dịch vụ (DoS).

net.ipv4.icmp_echo_ignore_broadcasts = 1

• Tránh cấu hình trong mạng không trả lời cho việc phát ra.

net.ipv4.conf.all.accept_source_route =0

net.ipv4.conf.to.accept_source_route =0

net.ipv4.conf.eth0.accept_source_route =0

net.ipv4.conf.default.accept_source_route =0

• Kiềm chế các gói định tuyến nguồn IP, mà có thể thể hiện một mối đe dọa về an ninh (trong tất cả các giao diện).

net.ipv4.tcp_syncookies = 1

Trang 253/471

Page 254: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

net.ipv4.conf.all.accept_redirects = 0

• Cho phép từ chối của các gói DoS bằng SYNC, có thể tiêu thụ hết tất cả các tài nguyên hệ thống, ép người sử dụng khởi động lại các máy tính.

net.ipv4.conf.lo.accept_redirects = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

• Hữu dụng cho việc tránh ICMP chuyển sự chấp nhận các cuộc tấn công (những gói này được sử dụng khi việc định tuyến không có đường phù hợp) trong tất cả các giao diện.

net.ipv4.icmp_ignore_bogus_error_responses = 1

• Gửi các cảnh báo trên tất cả các thông điệp lỗi trong mạng.

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.lo.rp_filter = 1

net.ipv4.conf.eth0.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1

• Cho phép bảo vệ chống lại việc đánh lừa IP trong tất cả các giao diện.

net.ipv4.conf.all.log_martians = 1

net.ipv4.conf.lo.log_martians = 1

net.ipv4.conf.eth0.log_martians = 1

net.ipv4.conf.default.log_martians = 1

Tạo một lưu ký log của tất cả các gói, các gói được định tuyến nguồn và các gói định tuyến lại bị lừa.

• Các thông số sau sẽ cho phép máy tham dự các kết nối TCP nhanh hơn và tốt hơn.

net.ipv4.tcp_fin_timeout = 40, By default, 60.

net.ipv4.tcp_keepalive_time = 3600, By default, 7.200.

net.ipv4.tcp_window_scaling = 0

net.ipv4.tcp_sack = 0

net.ipv4.tcp_timestamps = 0, By default, all at 1 (enabled).

• Iptables: Những phiên bản mới nhất của GNU/Linux (nhân 2.4 hoặc cao hơn) đưa vào một tính năng mới được kiểm soát bằng một công cụ gọi là iptables có những đặc tính tốt hơn so với tiền

Trang 254/471

Page 255: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nhiệm của nó (ipchains). Như chúng ta sẽ thấy trong phần về an ninh, cực kỳ dễ để xây dựng một tường lửa với công cụ này cho việc dò tìm và tránh hầu hết các cuộc tấn công, như DoS, lừa đảo IP/MAC... Trước khi nó được kích hoạt, chúng ta phải kiểm tra xem nhân là phiên bản 2.4 hoặc sau này, hay nó là một nhân được cấu hình để hỗ trợ ipfilter (có nghĩa là cần thiết phải biên dịch nhân để kích hoạt được lựa chọn lọc gói mạng (network packet filtering) [CONFIG_NETFILTER], và tất cả các lựa chọn phụ đặc biệt). Các qui định đặc biệt phải được kích hoạt khi khởi động (ví dụ, thông qua /etc/init.d và liên kết phù hợp trong thư mục rc phù hợp) và sẽ có một định dạng tương tự (kiểm tra tham chiếu về các khả năng và cú pháp hoàn chỉnh) cho:

iptable -A Type -i Interface -p protocol -s SourceIP - - source-port Port -d

DestinationIP - - destination-port Port -j Action

• GnuPG: công cụ này làm cho có khả năng mã hóa dữ liệu cho việc gửi sau đó (các thư điện tử, ví dụ) hoặc lưu trữ, nó cũng có thể tạo ra các chữ ký số (đáp ứng chuẩn RFC2440) và nó không sử dụng các thuật toán được cấp bằng sáng chế, có nghĩa đó là nguồn mở, nhưng chúng ta đánh mất tính tương thích với những công cụ khác (ví dụ, PGP 2.0), có sử dụng các thuật toán như IDEA và RSA. Đối với việc biên dịch và/hoặc cài đặt công cụ này, hãy tuân theo những hướng dẫn của các lập trình viên tại http://www.gnupg.org/. Đầu tiên, chúng ta phải tạo một đôi khóa

(công khai và cá nhân) bằng việc chạy, trong root, lệnh gpg - - gen-key hai lần và trả lời các câu hỏi xuất hiện. Thông thường, những khóa này sẽ được lưu trữ trong /root. Sau đó chúng ta xuất khẩu (tới một website, ví dụ thế) khóa công khai sao cho những người sử dụng khác có thể sử dụng nó để mã hóa thư/thông tin mà chỉ có thể nhìn thấy được bằng người sử dụng mà đã tạo

ra khóa công khai này. Đối với điều này, chúng ta phải sử dụng gpg - - export -ao UID, sẽ tạo ra một tệp ASCII của khóa công khai của người sử dụng UID.

• Để nhập khóa công khai của người sử dụng khác, chúng ta có thể sử dụng gpg - -import

filename (nhập tên tệp), và để ký một khóa (sẽ nói cho hệ thống là chúng ta thỏa mãn việc

khóa được đúng người ký), chúng ta có thể sử dụng gpg - -signkey UID. Để kiểm tra một

khóa, chúng ta có thể sử dụng gpg - -verify file/data (kiểm tra tệp/dữ liệu) và để mã hóa/giải mã một khóa, tệp gpg -sear UID file g, gpg -d, một cách tương ứng. [Gnu].

• Logcheck: một trong những nhiệm vụ chính của người quản trị mạng là kiểm tra các tệp log hàng ngày (hơn 1 lần trong ngày) để dò tìm ra bất kỳ cuộc tấn công/sự thâm nhập trái phép hoặc các sự kiện mà chúng có thể là bằng chứng cho những câu hỏi này. Công cụ này chọn thông tin được nén về những vấn đề và những rủi ro tiềm tàng (từ các tệp lưu ký log) và sau đó gửi những thông tin này tới người quản trị tương ứng, bằng thư điện tử, ví dụ thế. Gói này đưa vào những tiện ích cho việc chạy chế độ độc lập và việc ghi nhớ lần vào cuối cùng được kiểm tra cho những thực thi sau đó. Đối với các thông tin về cấu hình/cài đặt, bạn có thể tham vấn các tham chiếu. [Log].

• PostSentry và Tripwire: những công cụ này giúp người quản trị mạng triển khai các nhiệm vụ an ninh của họ. PostSentry làm cho có khả năng dò tìm ra và trả lời tới các qui trình tìm cổng (bước chuẩn bị trước khi tấn công hoặc đánh spam) theo thời gian thực và tiến hành một loạt

Trang 255/471

Page 256: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các quyết định đối với những hành động sẽ được thực hiện. Tripwire là một công cụ sẽ giúp cho những người quản trị bằng việc cảnh báo cho họ về những sửa đổi và thay đổi có thể có trong các tệp, để tránh những thiệt hại (nghiêm trọng) có thể. Công cụ này so sánh những khác biệt giữa các tệp hiện hành và một cơ sở dữ liệu trước đó được sinh ra để dò tìm những thay đổi (những thứ được chèn vào và được xóa đi), rất hữu dụng cho việc dò tìm ra những sự sửa đổi có thể đối với các tệp sống còn như, ví dụ, các tệp cấu hình. Hãy tham vấn các tham khảo về cài đặt/cấu hình của những công cụ này. [Tri].

• Xinetd: công cụ này cải thiện đáng kể hiệu quả và hiệu năng của inetd và tcp-wrappers. Một trong những ưu điểm lớn nhất của xinetd là nó có thể tránh được các cuộc tấn công từ chối truy cập (DoA) thông qua các cơ chế kiểm tra đối với các dịch vụ dựa trên sự xác định các địa chỉ máy trạm, trong thời gian truy cập và trong thời gian (ghi lưu ký). Không giả thiết rằng Xinetd là lựa chọn phù hợp nhất cho tất cả các dịch vụ (ví dụ, tốt hơn nếu FTP và SSH chạy chỉ như các daemons), khi nhiều qui trình sẽ làm quá tải hệ thống và sẽ có những cơ chế truy cập an ninh mà chúng không tạo ra những ngắt quãng trong an ninh của hệ thống. [Xin].

Việc biên dịch và/hoặc cài đặt là đơn giản; chúng ta chỉ phải cấu hình 2 tệp: /etc/xinetd.conf

(tệp cấu hình của Xinetd) và /etc/rc.d/init.d/xinetd (tệp khởi động Xinetd). Tệp đầu chứa 2 phần: defaults, mà nó là nơi chúng ta thấy các thông số sẽ áp dụng được cho tất cả các dịch vụ, sẽ là những dịch vụ hoạt động thông qua Xinetd.

Một ví dụ điển hình của cấu hình này có thể là:

# xinetd.conf

# Những lựa chọn cấu hình mặc định sẽ được áp dụng cho tất cả các máy chủ có thể được sửa đổi cho từng mặc định dịch vụ

{

instances = 10

log_type = FILE /var/log/service.log

log_on_success = HOST PID

log_on_failure = HOST RECORD

}

# Tên của dịch vụ phải nằm trong /etc/services để có được cổng đúng

# Nếu máy chủ/cổng không là một thứ chuẩn, hãy sử dụng “port = X”

service ftp

{

socket_type = stream

# protocol = tcp

# wait = no

# user = root

# no_access = 0.0.0.0

Trang 256/471

Page 257: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

# only_from = 127.0.0.1

# banner_fall = /etc/telnet_fail

# server = /usr/sbin/in.telnetd

#}

service ssh

{

socket_type = stream

protocol = tcp

wait = no

uscr = root

port = 22

server = /usr/sbin/sshd

server_args = -i

}

service http

{

socket_type = stream

protocol = tcp

wait = no

user = root

server = /usr/local/apache/bin/httpd

}

# service finger

# {

socket_type = stream

# protocol = tcp

# wait = no

# user = root

# no_access = 0.0.0.0

# only_fail = /etc/finger_fail

# server = /usr/sbin/in.fingerd

# server_args = -l

# }

# End of /etc/xinetd.conf

Trang 257/471

Page 258: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các dịch vụ được nhắc tới ở trên (#) sẽ không sẵn sàng. Trong phần mặc định, chúng ta có thể cài đặt các thông số như số lượng tối đa các yêu cầu dịch vụ cùng một lúc, dạng đăng ký (log) mà chúng ta yêu cầu, từ đó các nút yêu cầu sẽ được nhận một cách mặc định, số lượng tối đa của yêu cầu IP sẽ được hiện diện hoặc các dịch vụ mà chúng sẽ thực thi như là những siêu máy chủ (imapd hoặc popd), như là:

default {

instances = 20

log_type = SYSLOG

authpriv log_on_success = HOST

log_on failure = HOST

only_from = 192.168.0.0/16

per_source = 3

enabled = imaps

}

Phần dịch vụ, một cho từng dịch vụ, như là:

service imapd {

socket_type = stream

wait = no

user = root

server = /usr/sbin/imapd

only_from = 0.0.0.0/0 # cho phép từng máy trạm

no_access = 192.168.0.1

instances = 30

log_on_success + = DURATION USERID

log_on_failure + = USERID

nice = 2

redirect = 192.168.1.1 993 # Làm cho có khả năng định tuyến lại giao thông của cổng 993 tới nút 192.168.10.4

# Làm cho có khả năng chỉ ra giao diện mà đối với nó dịch vụ có liên quan tránh được các vấn đề lừa gạt dịch vụ.

}

Tệp /etc/init.d/xinetd làm cho có khả năng khởi động máy chủ (với liên kết phù hợp, theo mức chạy được chọn, ví dụ, 3, 4 và 5). Thuận tiện để thay đổi các thuộc tính của cả 2 tệp để đảm bảo rằng

chúng không bị sửa đổi hoặc vô hiệu hóa sau đó: chmod 700 /etc/init.d/xinetd; chown 0.0

/etc/init.d/xconfig; chmod 400 /etc/xinetd.conf; chattr +i /etc/xinetd.conf.

• Linuxconf: đây là một cấu hình và công cụ quản trị của hệ thống GNU/Linux, nhưng được coi là lỗi thời đối với những phát tán phổ biến nhất, mặc dù nó có thể vẫn còn được thấy trong một số phát tán. Thông tin nhiều hơn tại http://www.solucorp.qc.ca/linuxconf/.

Trang 258/471

Page 259: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Webmin: đây là một công cụ khác (các gói webmin-core, webmin-dhcp, webmin-inetd, webmin-sshd …) mà chúng làm cho có khả năng cấu hình và bổ sung các khía cạnh có liên quan tới mạng thông qua một giao diện web (chúng ta phải cài đặt rồi máy chủ Apache, ví dụ thế). Mặc dù nó vẫn còn đang được phát triển trong nhiều phát tán, thì nó không được đưa vào một cách mặc định. Để có thêm các thông tin, xem http://www.webmin.com/. Để chạy công cụ này sau khi nó đã được cài đặt từ một trình duyệt, hãy gọi URL https://localhost:10000, nó sẽ yêu cầu bạn chấp nhận SSL, chứng thực và tên người sử dụng (người sử dụng root ban đầu) và mật khẩu tương ứng.

• System-config*: Trong Fedora, có một loạt các công cụ đồ họa được gọi là system-config-* “thứ gì đó” và nơi mà “thứ gì đó” là những gì mà chúng đã được thiết kế. Nói chung, nếu chúng ta là trong một môi trường đồ họa, thì có thể tới được từng công cụ trong số chúng bằng việc sử dụng một thực đơn; tuy nhiên, mỗi thứ trong các công cụ này có nghĩa là chúng ta phải nhớ thực đơn. Một công cụ mà tập trung tất cả các cấu hình hệ thống là hệ thống - cấu hình - kiểm soát trong chỉ một đầu vào trong thực đơn và một giao diện đồ họa duy nhất từ đó chúng ta có thể tiến hành các lựa chọn của bằng việc sử dụng một tập hợp các biểu tượng. Đối với điều này, chúng ta phải đi tới Applications → Add/Remove Software và thứ này sẽ khởi động, ở chế độ của root, trong giao diện đồ họa của phần mềm Pirut (kho của Fedora Exras phải được kích hoạt). Trong giao diện của Pirut, các gói sẵn sàng có thể được tìm thấy để sử dụng, ví dụ, system-config-*; tiến hành lựa chọn cho system-config-control* và nháy vào Apply. Trong số các lựa chọn, có thể cấu hình hầu hết tất cả các tính năng của mạng và các dịch vụ ở đây.

• Networkmanager: là công cụ làm cho có khả năng quản lý các mạng không dây và các mạng cáp một cách dễ dàng, đơn giản và không có bất kỳ sự phức tạp nào, nhưng nó không phải là phù hợp nhất đối với các máy chủ (chỉ cho các máy tính để bàn). Việc cài đặt công cụ này là rất

dễ: apt-get install network - manager – xx, nơi mà xx là GNOME hoặc KDE phụ thuộc vào máy để bàn được cài đặt. Để cấu hình công cụ này, phải điền vào tất cả các đầu vào trong (Debian) /etc/network/interfaces ngoại trừ giao diện lặp ngược, ví dụ, chỉ bằng việc để:

auto lo

iface lo inet loopback

Bước này không bắt buộc nhưng nó thực hiện qui trình cho việc phát hiện các mạng/giao diện nhanh hơn. Trong Debian, có một bước thêm mà phải được tiến hành, khi người sử dụng phải tích hợp bên trong nhóm netdev, vì những lý do có liên quan tới các quyền. Để làm điều này,

chúng ta phải chạy (như người sử dụng root, hoặc nếu không, với lệnh sudo trước) adduser

current_user netdev và khởi động lại hệ thống (hoặc khởi động mạng với

/etc/init.d/networking restart và đăng xuất và quay lại, sao cho người sử dụng hiện hành được đưa vào trong nhóm netdev này).

• Các công cụ khác: (một số các công cụ khác được trình bày trong phần về an ninh) như: Nmap (duyệt và kiểm toán đối với các mục tiêu an ninh mạng), Nessus (đánh giá an ninh mạng từ xa), Wireshark http://www.wireshark.org/download.html (ex-Ethereal) (trình phân tích các giao thức mạng), Snort (hệ thống dò tìm truy cập trái phép, IDS), Netcat (tiện ích đơn giản và mạnh cho

Trang 259/471

Page 260: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

việc gỡ rối và khai thác một mạng), TCPFump (giám sát các mạng và lấy thông tin), Hping2 (tạo và gửi các gói ICMP/UDP/TCP để phân tích cách một mạng làm việc).

Trang 260/471

Page 261: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1. Xác định các kịch bản mạng sau:

a) Máy được cách ly.

b) Mạng cục bộ nhỏ (4 máy, 1 cổng gateway)

c) 2 mạng cục bộ được phân khúc (2 nhóm với 2 máy và một bộ định tuyến mỗi nhóm và một cổng chung).

d) 2 mạng cục bộ được kết nối với nhau (2 nhóm 2 máy + một cổng gateway mỗi nhóm).

e) 2 máy được kết nối thông qua một mạng riêng ảo. Chỉ ra những ưu điểm/nhược điểm của mỗi cấu hình, đối với chúng các dạng hạ tầng là phù hợp và các thông số quan trọng cần thiết.

2. Cấu hình mạng theo các lựa chọn a, b và d.

Trang 261/471

Page 262: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Phụ lục. Kiểm soát các dịch vụ được liên kết tới một mạng FC6

Một khía cạnh quan trọng cho tất cả các dịch vụ là chúng được khởi tạo như thế nào. FC6 bao gồm một loạt các tiện ích cho việc quản lý các daemon dịch vụ (bao gồm cả các daemon mạng). Như chúng ta đã thấy trong chương về quản trị cục bộ, mức chạy là chế độ vận hành mà sẽ chỉ định những daemon nào sẽ được chạy. Trong FC chúng ta có thể thấy: mức chạy 1 (người sử dụng duy nhất), mức chạy 2 (đa người sử dụng), mức chạy 3 (đa người sử dụng với mạng), mức chạy 5 (X11 cộng với / mức chạy 3). Điển hình, có thể chạy mức chạy 5 hoặc 3 nếu chúng ta không cần bất kỳ giao diện đồ họa nào. Để xác định mức mà đang được chạy, chúng ta có thể sử dụng /sbin/runlevel, và để biết mức nào sẽ khởi động

một cách mặc định cat /etc/inittab | grep: initdefault: cái nào sẽ cho chúng ta những thông tin như id:5:initdefault: (chúng ta cũng có thể sửa /etc/initab để thay đổi giá trị mặc định).

Để mường tượng được các dịch vụ đang chạy, có thể sử dụng /sbin/chkconfig - liệt kê và quản lý chúng, có thể sử dụng hệ thống - cấu hình - các dịch vụ trong chế độ đồ họa hoặc ntsysv trong chế độ dòng lệnh. Để kích hoạt các dịch vụ riêng rẽ, có thể sử dụng chkconfig; ví dụ lệnh sau đây cho phép

dịch vụ crond cho các mức 3 và 5: /sbin/chkconfig - - level 35 crond on. Bất chấp cách mà các dịch vụ đã được khởi tạo thế nào, có thể sử dụng /sbin/service -status-all hoặc một cách riêng rẽ /sbin/service crond status để thấy tình trạng của từng dịch vụ. Cũng có thể quản lý việc này (khởi động,

dừng, tình trạng, tải lại, khởi động lại), ví dụ service crond stop để dừng nó hoặc service crond

restart để khởi động lại nó.

Điều quan trọng để không vô hiệu hóa các dịch vụ sau (trừ phi bạn biết những gì bạn đang làm): acpid, haldaemon, messagebus, klogd, network, syslogd. Các dịch vụ quan trọng nhất được liên kết với mạng (mặc dù đây không phải là một danh sách toàn diện thấu đáo và một số đã bị để lại, hầu hết các dịch vụ được liệt kê) ở đây:

• NetworkManager, NetworkManagerDispatcher: là một daemon có thể dễ dàng thay đổi các mạng (về cơ bản là Wifi và Ethernet). Nếu chỉ có một mạng, thì nó không phải được thực thi.

• avahi-daemon, avahi-dnsconfd: là một triển khai của zeroconf và là hữu dụng cho việc dò tìm các thiết bị và dịch vụ trên các mạng cục bộ mà không có DNS (nó giống hệt như mDNS).

• bluetooth, hcid, hidd, sdpd, đun, pand: mạng không giây Bluetooth là cho các thiết bị khả chuyển (không phải wifi, 802.11). Ví dụ, các bàn phím, chuột, các điện thoại, mirophone/đầu nghe headphone …

• capi, isdn: mạng dựa trên phần cứng ISDN.

• Iptables: là dịch vụ tường lửa chuẩn trong GNU/Linux. Nó là cơ bản cho an ninh nếu chúng ta có một kết nối mạng (cáp, DSL, T1).

• Ip6tables: y hệt áp dụng nhưng cho giao thức và các mạng dựa trên Ipv6.

• netplugd: Netplugd có thể giám sát mạng và thực thi các lệnh khi tình trạng thay đổi.

Trang 262/471

Page 263: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• netfs: được sử dụng để đưa lên một cách tự động các hệ thống tệp thông qua mạng (NFS, Samba, ...) trong khi khởi động.

• nfs, nfslock: là những daemon chuẩn cho việc chia sẻ các hệ thống tệp thông qua mạng trong các hệ điều hành dạng Unix/Linux/BSD.

• ntpd: máy chủ thời gian và ngày thông qua mạng.

• portmap: là một dịch vụ bổ sung cho NFS (chia sẻ tệp) và/hoặc NIS (xác thực).

• rpcgssd, rpcidmapd, rpcsvcgssd: nó được sử dụng cho NFS v4 (phiên bản mới của NFS).

• sendmail: dịch vụ này có thể được sử dụng để quản lý các thư (MTA) hoặc hỗ trợ các dịch vụ như IMAP hoặc POP3.

• smb: daemon này có khả năng chia sẻ các tệp qua các hệ thống Windows.

• sshd: SSH cho phép những người sử dụng khác kết nối một cách tương tác và an ninh tới máy cục bộ.

• yum-updatesd: dịch vụ cập nhật mạng của FC.

• xinetd: dịch vụ thay thế của inetd thể hiện một tập hợp các tính năng và những cải tiến, như, ví dụ, khởi tạo nhiều dịch vụ thông qua cổng y hệt (dịch vụ này có thể không được cài đặt một cách mặc định).

Trang 263/471

Page 264: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7 Quản trị máy chủ

Remo Suppi BoldritoPID_00148466

Server administration

Remo Suppi BoldritoPID_00148466

Trang 264/471

Page 265: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Sự kết nối nội bộ giữa các máy và những giao tiếp tốc độ cao có nghĩa là các tài nguyên được sử dụng có thể ở một vị trí địa lý khác với vị trí của người sử dụng. UNIX (và tất nhiên cả GNU/Linux) có lẽ là ví dụ tốt nhất của triết lý này, vì từ đầu sự tập trung luôn là vào việc chia sẻ các tài nguyên và sự độc lập vào các 'thiết bị'. Triết lý này đã được hiện thực hóa trong việc tạo ra thứ gì đó mà bây giờ đã trở thành rất phổ biến: các dịch vụ. Một dịch vụ là một nguồn (có hoặc không có khả năng là vạn năng) làm cho có khả năng có được thông tin, chia sẻ các dữ liệu hoặc đơn giản hóa thông tin qui trình một cách ở xa, theo những điều kiện nhất định nào đó. Mục đích là để phân tích các dịch vụ có khả năng phục vụ cho mạng của chúng ta. Thông thường, bên trong một mạng, sẽ có một máy (hoặc một loạt các máy, phụ thuộc vào cấu hình) sẽ làm cho có khả năng để trao đổi thông tin với tất cả những yếu tố khác. Những máy này được gọi là những máy chủ và chúng chứa một tập hợp các chương trình tập trung hóa thông tin và làm cho dễ dàng truy cập được. Những dịch vụ này giúp giảm thiểu giá thành và gia tăng tính sẵn sàng của thông tin, nhưng nên nhớ rằng một dịch vụ tập trung cũng có một số nhược điểm, khi chúng có thể ở dạng phi trực tuyến và sẽ không có dịch vụ cho người sử dụng.

Các máy chủ nên được thiết kế sao cho tất cả các máy chủ được soi gương để giải quyết những tình huống này.

Các dịch vụ có thể được phân loại thành 2 chủng loại: những dịch vụ liên kết các máy tính với máy tính hoặc những dịch vụ liên kết những người sử dụng với các máy tính. Trong trường hợp đầu, các dịch vụ là những thứ cần thiết đối với những máy tính khác, trong khi ở trường hợp thứ 2, các dịch vụ là những thứ được yêu cầu từ những người sử dụng (mặc dù có những dịch vụ mà có thể rơi vào trong cả 2 chủng loại này). Trong chủng loạt thứ nhất, có các dịch vụ đặt tên, như hệ thống tên miền (DNS), dịch vụ thông tin người sử dụng (NISYP), thư mục thông tin LDAP hoặc các dịch vụ cho việc lưu trữ theo các ủy quyền. Theo chủng loại thứ 2, chúng ta có kết nối tương tác và các dịch vụ thực thi ở xa (SSH, telnet), truyền tệp (FTP), trao đổi thông tin mức người sử dụng như thư điện tử (MTA, IMAP, POP), tin, WWW, Wiki và các tệp (NFS). Để thể hiện tất cả những khả năng mà GNU/Linux Debian-FC6, chúng ta sẽ mô tả từng dịch vụ trong số này với một cấu hình tối thiểu và hoạt động được, mà không bỏ qua những khía cạnh có liên quan tới an ninh và tính ổn định.

Trang 265/471

Page 266: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.1. Hệ thống tên miền (DNS)

Chức năng của dịch vụ DNS (như đã giải thích trong phần về quản trị mạng) là để dịch các tên máy (hợp pháp và dễ dàng để nhớ đối với những người sử dụng) thành các địa chỉ IP hoặc ngược lại.

Ví dụ

Khi chúng ta hỏi về địa chỉ IP của pirulo.remix.com là gì, thì máy chủ sẽ trả lời 192.168.0.1 (qui trình này được biết như là việc ánh xạ); cũng như vậy, khi chúng ta yêu cầu một địa chỉ IP, thì dịch vụ sẽ trả lời với cái tên của máy (được biết như là việc ánh xạ ngược).

Hệ thống tên miền (DNS) là một kiến trúc dạng cây tránh việc trùng lặp thông tin và làm cho bất kỳ sự tìm kiếm nào cũng trở nên dễ dàng hơn. Vì lý do này, một DNS duy nhất không có ý nghĩa trừ phi nó là một phần của kiến trúc này.

Ứng dụng cung cấp dịch vụ này được gọi là named, được đưa vào trong hầu hết các phát tán GNU/Linux (/usr/sbin/named) và là một phần của gói được gọi là bind (hiện đang là phiên bản 9.x) của nhóm các phần mềm Internet ISC (Internet Software Consortium). DNS đơn giản là một cơ sở dữ liệu, có nghĩa là mọi người mà sửa đổi nó phải nhận thức được về cấu trúc của nó, vì nếu không, dịch vụ này sẽ bị ảnh hưởng. Như một cảnh báo trước, quan tâm đặc biệt phải được thực hiện là lưu các bản sao của các tệp hòng tránh bất kỳ sự đổ vỡ nào trong dịch vụ. Gói trong Debian là bind và bind.doc. [LN01, Deb03c, IET03]. Các cấu hình là tương tự, khi chúng là FC, nhưng bạn sẽ phải cài đặt bind, bind-utils và caching-nameserver để được yum quản trị, ví dụ thế.

7.1.1. Máy chủ tên Cache

Đầu tiên, chúng ta sẽ cấu hình một máy chủ DNS để giải quyết các yêu cầu, sẽ hành động như một bộ nhớ lưu trữ cache cho những yêu cầu về tên (trình giải resolver, máy chủ chỉ lưu trữ). Nói cách khác, lần đầu, máy chủ phù hợp sẽ được tham vấn vì chúng ta đang bắt đầu với một cơ sở dữ liệu không chứa thông tin, mà tất cả thời gian sau này, máy chủ tên lưu trữ sẽ trả lời, với sự giảm tương ứng về thời gian

trả lời. Để cấu hình máy chủ tên lưu trữ, chúng ta cần tệp /etc/bind/named.conf (trong Debian), gồm những thứ sau đây (các ghi chú bên trong tệp, được chỉ với //, đã được tôn trọng):

Options {

directory “/var/cache/bind”;

// query-source address * port 53;

// forwarders {

// 0.0.0.0;

//

};

auth-nxdomain no; # conform to RFC1035

Trang 266/471

Page 267: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

};

// prime the server with knowledge of the root servers}

zone “.” {

type hint;

file “/etc/bind/db.root”;};

// be authoritative for the localhost forward and reverse zones, and for

// broadcast zones as per RFC 1912

}

zone “localhost” {

type master;

file “/etc/bind/db.local”;

};

zone “127.in-addr.arpa”{

type master;

file “/etc/bind/db.127”;

};

zone “0.in-addr.arpa” {

type master;

file “/etc/bind/db.0”;

};

zone “255.in-addr.arpa” {

type master;

file “/etc/bind/db.255;”

};

// add entries for other zones below here

}

Câu về thư mục chỉ ra nơi sẽ tìm thấy các tệp cấu hình còn lại (/var/cache/bind trong trường hợp của chúng ta). Tệp /etc/bind/db.root sẽ chứa thứ gì đó tương tự như sau (chỉ những dòng đầukhông có các chú giải với một dấu ';', sẽ được chỉ ra, và mối quan tâm phải được thực hiện với các dấu chấm [.]) ở đầu của một số dòng - chúng có thể giành được và được cập nhật trực tiếp từ Internet).

Trang 267/471

Page 268: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

; formerly NS, INTERNIC.NET

;

.3600000 IN NS A.ROOT-SERVERS.NET.

A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4

;

; formerly NS1.ISI.EDU

;

. 3600000 NS B.ROOT-SERVERS.NET.

B.ROOT-SERVERS.NET. 3600000 A 192.33.4.12

;

...

Tệp này đã mô tả các máy chủ tên của root trên thế giới. Những máy chủ này thay đổi, có nghĩa là tệp này phải được cập nhật một cách thường xuyên từ Internet. Các phần tiếp sau là các vùng; máy chủ cục

bộ localhost và các vùng 127.in-addr.arpa, chúng liên kết các tệp tới các thư mục /etc/bind/db.local

và /etc/bind/db.127, tham chiếu tới phép giải trực tiếp và nghịch đảo cho giao diện cục bộ. Các vùng sau đây là cho các vùng truyền phát (xem RFC1912) và các vùng phù hợp nên được bổ sung vào cuối. Ví dụ, tệp db.local có thể là (';' có nghĩa là 'chú giải'):

; BIND reverse data file for local loopback interfaces

$TTL 604800

@ IN SOA ns.remix.bogus. root.remix.bogus. {

1 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800} ; Negative Cache TTL

@ IN NS ns.remix.bogus.

1.0.0 IN PTR localhost.

Sẽ giải thích cách nó được sử dụng sau. Bước tiếp theo là đặt máy chủ tên vào /etc/resolv.conf:

search subdomain.your-domain your-domain.domain

# ví dụ tìm kiếm remix.bogus bogus

nameserver 127.0.0.1

Trang 268/471

Page 269: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Đâu là nơi chúng ta sẽ phải thay thế subdomain.your-domain.domain bằng các giá trị phù hợp. Dòng tìm kiếm chỉ các miền nào sẽ được tìm vì bất kỳ host nào muốn kết nối (có khả năng thay thế search [tìm kiếm] bằng domain [miền], mặc dù chúng hành xử là khác nhau) và máy chủ tên chỉ định địa chỉ của máy chủ tên (trong trường hợp này, là máy thực của bạn, nơi qui trình đặt tên sẽ thực thi). Sự tìm kiếm hành xử như sau: nếu một máy trạm đang tìm máy được gọi là pirulo, trước tiên, pirulo.subdomain.your-domain.domain sẽ được tìm, sau đó pirulo.your-domain.domain và cuối cùng, pirulo. Điều này có nghĩa là sự tìm kiếm sẽ mất một chút thời gian; tuy nhiên, nếu pirulo là trong subdomain.your-domain.domain, thì không nhất thiết phải vào phần còn lại.

Bước tiếp sau là khởi động named và xem xét các kết quả của sự thực thi. Để khởi động daemon,

chúng ta có thể trực tiếp sử dụng /etc/init.d/bind9 start để khởi động script (nếu named đã đang

chạy, hãy tới /etc/init.d/bind9 reload) hoặc, nếu không, /usr/sbin/named. Nếu chúng ta xem log

của hệ thống trong /var/log/daemon.log, thì chúng ta sẽ thấy thứ gì đó tương tự sau:

Sep 1 20:42:28 remolix named[165]: starting BIND 9.2.1 \\

Sep 1 20:42:28 remolix named[165]: using 1 CPU \\

Sep 1 20:42:28 remolix named[165]: loading configuration from '/etc/bind/named.conf' \\

Sự khởi động và những thông điệp lỗi sẽ xuất hiện ở đây (nếu có bất kỳ lỗi nào, thì chúng phải được sửa cho đúng và qui trình được bắt đầu lại một lần nữa). Chúng ta bây giờ có thể kiểm tra cấu hình với các lệnh như nslookup (theo các lập trình viên thì nó là lệnh gốc ban đầu và dễ dàng nhưng đã lạc hậu rồi), host hoặc dig (được khuyến cáo). Kết quả của dig -x 127.0.0.1 sẽ là thứ gì đó như sau:

# dig -x 127.0.0.1

;; <<>> DiG 9.2.1 <<>> -x 127.0.0.1

;; global options: printcmd

;; Got answer:

;; ->> HEADER<<- opcode: QUERY, status: NOERROR, id: 31245

;; flags: qr aa rd ra: QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL:0

;; QUESTION SECTION: ; 1.0.0.127. in-addr.arpa. IN PTR

;; ANSWER SECTION: 1.0.0.127. in-addr.arpa. 604800 IN PTR localhost.

;; AUTHORITY SECTION: 127. in-addr.arpa. 604800 IN NS ns.remix.bogus.

;; Query tijme: 1 msec

;; SERVER: 127.0.0.1 # 53(127.0.0.1)

;; WHEN: Mon Sep 1 22:23:35 2003

;; MSG SIZE rcvd:91

Trong đó chúng ta có thể thấy rằng câu hỏi được đưa ra 1 mili giây. Nếu bạn có một kết nối Internet, thì bạn có thể tìm kiếm một máy trong miền của bạn và thấy sự thực thi và các hành xử của máy chủ. Trong BIND9 có Iwresd (lightweight resolver daemon), là daemon cung cấp các dịch vụ đặt tên cho các máy trạm có sử dụng thư viện lightweight resolver (trình giải nhẹ) của BIND9. Chắc chắn một máy

Trang 269/471

Page 270: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chủ lưu trữ cache (như máy chủ mà chúng ta đã cấu hình) tạo ra các câu hỏi có sử dụng giao thức lightweight resolver của BIND9 thay vì giao thức DNS. Máy chủ này nghe thông qua giao diện 127.0.0.1 (có nghĩa là nó chỉ hiện diện đối với các qui trình trong máy chủ cục bộ - local host) trong UPD và cổng 921. Các yêu cầu của máy trạm được mã hóa và được giải quyết bằng việc sử dụng giao thức DNS. Khi có được các câu trả lời, thì lwresd mã hóa chúng trong định dạng của lightweight và trả chúng lại cho máy trạm đã hỏi chúng.

Cuối cùng, như chúng ta đã nhắc tới, nhân sử dụng một loạt các nguồn thông tin, mà đối với mạng, có được từ /etc/nsswitch.conf. Tệp này chỉ từ nơi chúng ta có được nguồn thông tin và có một phần, đối với các tên và IP của máy, như là:

hosts: files dns

Dòng này (nếu không có ở đây, thì nó phải được bổ sung vào) chỉ rằng bất kể ai cần một tên hoặc IP

của một máy thì trước tiên nên kiểm tra /etc/hosts và sau đó trong DNS, phù hợp với các miền được

chỉ định trong /etc/resolv.conf.

7.1.2. Trình chuyển tiếp (forwarders)

Trong các mạng với tải công việc lớn, thì có khả năng phải cân nhắc giao thông bằng việc sử dụng phần dựa vào các trình chuyển tiếp. Nếu nhà cung cấp dịch vụ Internet (ISP) của bạn có một hoặc nhiều máy chủ tên ổn định, thì được khuyến cáo phải sử dụng chúng để không làm quá tải các yêu cầu trên máy chủ. Để làm việc này, chúng ta phải xóa các ghi chú (//) từ từng dòng trong phần của trình chuyển tiếp của tệp /etc/bind/named.conf và thay thế 0.0.0.0 bằng các IP của các máy chủ tên của ISP của chúng ta. Cấu hình này được khuyến cáo khi kết nối là chậm, khi sử dụng một modem, ví dụ vậy.

7.1.3. Cấu hình một miền của riêng

DNS sở hữu một cấu trúc dạng cây và ban đầu được biết như là '.' (xem /etc/bind/db.root). Bên cạnh '.' có các TLD (các miền mức đỉnh) như là org, com, edu, net … Khi tìm kiếm trong một máy chủ, nếu máy chủ đó không có câu trả lời, thì cây này sẽ được tìm đệ quy cho tới khi nó được tìm ra. Mỗi '.' trong một địa chỉ (ví dụ, pirulo.remix.com) chỉ một nhánh khác nhau của cây DNS và một phạm vi khác cho việc hỏi (hoặc trách nhiệm) sẽ được tuân thủ một cách đệ qui từ trái qua phải.

Khía cạnh quan trọng khác, ngoài miền mà, là in-addr.arpa (ánh xạ ngược - inverse mapping), cũng lồng lưới như các miền và phục vụ để có được các tên khi địa chỉ IP yêu cầu. Trong trường hợp này, các địa chỉ được viết cách khác, tuân thủ với miền. Nếu pirulo.remix.com là 192.168.0.1, thì nó sẽ được viết như là 1.0.168.192, phù hợp với pirulo.remix.com.

Chúng ta sau đó phải cấu hình miền remix.bogus thực sự trong tệp /etc/bind/db.127 [LN01]:

; BIND reserve data file for local loopback interface

$TTL 604800

@ IN SOA ns.remix.bogus. root.remix.bogus. (

Trang 270/471

Page 271: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

1 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative cache TTL

@ IN NS ns.remix.bogus.

1.0.0 IN PTR localhost.

Ký tự '.' phải được tính tới ở cuối của các tên miền. Gốc ban đầu của một tôn ti trật tự theo vùng được chỉ định bằng việc xác định vùng, trong trường hợp của chúng ta, là 127.in-addr.arpa. Tệp này (db.127) chứa 3 đăng ký: SOA, NS, PTR. Cái SOA (bắt đầu của quyền lực - Start of authority) phải nằm trong tất cả các tệp vùng, ở đầu, sau TTL và @ báo hiệu gốc của miền; NS, máy chủ tên cho miền và PTR (con trỏ tên miền - domain name pointer), là host 1 trong mạng con (127.0.0.1) và được gọi là máy chủ cục bộ (local host). Đây là loạt tệp 1 và [email protected] (không gian cuối cùng trong dòng SOA) có trách nhiệm đối với nó. Bây giờ có thể khởi động lại named như được chỉ ra ở trên và, khi sử dụng dig -x 127.0.0.1, có thể thấy được nó làm việc thế nào (hoàn toàn tương đương với những thứ được chỉ ra trước đó).

Chúng ta sau đó có thể phải bổ sung một vùng mới vào named.conf:

zone “remix.bogus” {

type master;

notify no;

file “/etc/bind/remix.bogus”;

};

Chúng ta phải nhớ rằng trong named.conf, các miền xuất hiện mà không có '.' ở cuối. Trong tệp remix.bogus chúng ta sẽ đặt các hosts mà chúng ta sẽ có trách nhiệm với chúng:

; Zone file for remix.bogus

$TTL 604800

@ IN SOA ns.remix.bogus. root.remix.bogus. {

199802151 ; serial, todays date + todays serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 } ; Negative Cache TTL

@ NS ns ; Inet Address of name server

Trang 271/471

Page 272: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

MX 10 mail.remix.bogus. ; Primary Mail Exchanger

localhost A 127.0.0.1

ns A 192.168.1.2

mail A 192.168.1.4

TXT “Mail Server”

ftp A 192.168.1.5

MX 10 mail

www CNAME ftp

Bước cuối cùng là cấu hình vùng nghịch đảo, nói cách khác, sao cho các địa chỉ IP có thể được thay đổi thành các tên, ví dụ, bổ sung một vùng mới:

zone “192.168.1.in-addr.arpa” {

type master;

notify no;

};

Và tệp /etc/bind/192.168.1 tương tự như tệp trước:

Một đăng ký MX mới, trình trao đổi thư Mail, xuất hiện ở đây. Đây là chỗ mà các thư điện tử tới sẽ được gửi đi, [email protected], và chúng sẽ được gửi tới mail.remix.bogus (con số chỉ sự ưu tiên nếu chúng ta có hơn một MX). Luôn luôn nhớ '.' là cần thiết trong các tệp của vùng ở cuối của miền (nếu chúng không được đưa vào, thì hệ thống sẽ bổ sung miền SOA vào cuối, mà có thể biến đổi

mail.remix.bogus, ví dụ thế, thành mail.remix.bogus.remix.bogue, mà nó có thể là không đúng). CNAME (tên theo chuẩn - canonical name) được sử dụng để trao cho máy một bí danh hoặc một loạt

các bí danh. Tại thời điểm này, chúng ta có khả năng (sau /etc/init.d/bind9 reload) để thử nghiệm,

ví dụ, dig www.remix.bogus.

$TTL 604800

@ IN SOA ns.remix.bogus. root.remix.bogus {

199802151 ; serial, todays date + todays serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 } ; Negative Cache TTL

@ NS ns.remix.bogus.

2 PTR ns.remix.bogus

4 PTR mail.remix.bogus

Trang 272/471

Page 273: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

5 PTR ftp.remix.bogus

Điều này có thể được thử nghiệm lần nữa với dig -x 192.168.1.4. Chúng ta phải nhớ rằng những ví dụ này là trong các IP riêng, nói cách khác, không trong các IP Internet. Điểm quan trọng khác là việc chúng ta phải không được quên notify 0 (lưu ý không), nếu không, các thí nghiệm của chúng ta với DNS sẽ lan truyền sang các máy chủ thông qua cây DNS (có thể ngay cả việc sửa đổi DNS của nhà cung cấp hoặc cơ quan cung cấp của chúng ta). Những thứ này chỉ được sửa đổi khi chắc chắn rằng nó làm việc và chúng ta chắc chắn về những thay đổi muốn tiến hành. Để xem xét một ví dụ thực tế, hãy xem DNS-HOWTO tại http://tldp.org/HOWTO/DNS-HOWTO-7.html.

Một khi đã tạo ra một máy chủ chính (master), thì chúng ta phải tạo một máy chủ phụ (slave) cho an ninh, là tương tự như máy chủ chính, ngoại trừ trong đó vùng trong chỗ có type master (máy chủ chính dạng) phải có một type slave (máy chủ phụ dạng) và IP của máy chủ chính. Ví dụ:

zone “remix.bogus” {

type slave;

notify no;

masters {192.168.1.2;}

};

Trang 273/471

Page 274: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.2. NIS (YP)

Để tạo điều kiện cho việc quản trị và làm cho hệ thống thân thiện hơn với người sử dụng, trong các mạng các kích cỡ khác nhau chạy GNU/Linux (hoặc Sun Solaris hoặc bất kỳ hệ điều hành nào khác mà hỗ trợ dịch vụ này), có các dịch vụ thông tin mạng, NIS (Network Information Services) hoặc là các trang vàng (Yellow Pages, tên ban đầu của Sun). GNU/Linux có thể cung cấp sự hỗ trợ đó như một máy trạm/máy chủ NIS và có thể hành động như một máy trạm (phiên bản “beta”) của NIS+, là phiên bản an toàn hơn và tối ưu hóa hơn của NIS. Thông tin có thể được phân phối trong NIS là: tên (tên đăng nhập), mật khẩu (/etc/passwd) của người sử dụng, các thư mục (các thư mục home) của người sử dụng, thông tin nhóm (/etc/group), có ưu điểm là, từ bất kỳ máy trạm nào hoặc từ bản thân máy chủ, người sử dụng có thể kết nối với cùng tài khoản và mật khẩu và tới cùng thư mục (mặc dù thư mục này phải được được kích hoạt (mount) trước đó trên tất cả các máy với NFS hoặc sử dụng dịch vụ tự động kích hoạt). [Miq01, Kuk03].

Kiến trúc của NIS là dạng máy trạm - máy chủ, nói cách khác, có một máy chủ có tất cả các cơ sở dữ liệu và một số máy trạm sẽ tham vấn những dữ liệu đó theo một cách minh bạch đối với người sử dụng. Vì lý do này, chúng ta phải xem xét việc cấu hình cho các máy chủ 'tăng cường' (được gọi là các máy chủ hàng 2) sao cho những người sử dụng sẽ không bị khóa vì máy chủ hàng đầu không sẵn sàng. Kiến trúc này được gọi là kiến trúc đa máy chủ (master + mirrors - clients hoặc máy chủ + máy gương soi - các máy trạm).

7.2.1. Làm thế nào để khởi tạo một máy trạm NIS cục bộ trong Debian?

Việc có một máy trạm cục bộ có nghĩa là việc bổ sung máy tính vào một miền NIS đang tồn tại:

• Trước tiên, phải kiểm tra là netbase (mạng TCP/IP cơ bản), portmap (máy chủ biến các số RPC thành các cổng DARPA và là cần thiết cho các chương trình chạy RPC, bao gồm cả NFS và NIS) và các gói nis (đặc chủng) đã được cài đặt. Khuyến cáo việc sử dụng lệnh kpackage hoặc trực tiếp với apt-get (có thể kiểm tra liệu thứ này có được cài đặt với apt-cache pkgnames hay không) trong chế độ văn bản. Khi cài đặt gói NIS, bạn sẽ được nhắc về một tên miền (NIS domainname). Đây là tên mô tả tập hợp các máy sử dụng NIS (không phải là một tên host). Hãy nhớ rằng NISPirulo là khác với Nispirulo như một tên miền. Để cấu hình miền này, có thể sử dụng lệnh nisdomainname, một miền mà sẽ được lưu trong /proc/sys/kernel/domainname.

• Trước tiên, chúng ta phải khởi động dịch vụ portmap với:

– /etc/init.d/portmap start

– Chúng ta có thể kiểm tra liệu những thứ này có tích cực sử dụng rpcinfo – p hay không.

• Nếu máy chủ NIS không phải là cục bộ, thì chúng ta phải sử dụng lệnh ypbind. Lệnh ypbind được sử dụng để tìm một máy chủ cho miền được chỉ định, hoặc thông qua một sự truyền phát – broadcast (không khuyến cáo vì không an ninh) hoặc thông qua việc tìm kiếm máy chủ được

Trang 274/471

Page 275: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chỉ định trong tệp cấu hình /etc/yp.conf (được khuyến cáo). Tệp /etc/yp.conf có cú pháp sau:

– domain nisdomain server hostname: chỉ rằng hostname nên được sử dụng cho nisdomain. Có khả năng có nhiều hơn một đầu vào của dạng này đối với cùng một miền.

– domain nisdomain broadcast: chỉ rằng broadcasst nên được sử dụng trên mạng cục bộ để phát hiện một máy chủ với một nisdomain.

– ypserver hostname: chỉ rằng hostname nên được sử dụng như một máy chủ. Được khuyến cáo sử dụng dòng này (ypserver) nơi mà chúng ta phải đưa vào địa chỉ IP của máy chủ NIS. Nếu tên này được chỉ định, hãy chắc chắn rằng IP có thể tìm thấy được bằng DNS hoặc là nó xuất hiện trong tệp /etc/hosts, nếu không, máy trạm sẽ bị khóa.

• Khởi động dịch vụ bằng việc chạy:

– /etc/init.d/nis stop

và sau đó:

– /etc/init.d/nis.start

• Những bước này phải khởi động, máy trạm NIS sẽ làm việc (điều này có thể được khẳng định

với rpcinfo hoặc localhost ypbind, chỉ ra 2 phiên bản của giao thức tích cực) hoặc chúng ta

có thể sử dụng lệnh ypcat mapname (ví dụ, ypcat passwd, chỉ ra những người sử dụng NIS được xác định trong máy chủ này) nơi mà mối quan hệ của mapnames đối với các bảng trong cơ sở dữ liệu NIS được xác định trong /var/yp/nicknames.

7.2.2. Những tài nguyên nào phải được chỉ định để sử dụng NIS?

Hãy giả thiết rằng chúng ta đã cài đặt một trong những phát tán mới nhất của Debian (ví dụ, 3.0 Woody hoặc 3.1 Sarge), hỗ trợ Libc6 (y hệt cho FC4 hoặc cao hơn) và rằng chúng ta muốn cấu hình hệ thống sao cho những người sử dụng của một máy trạm có thể truy cập được thông tin trong máy chủ. Trong trường hợp này, chúng ta phải gửi yêu cầu đăng nhập login tới các cơ sở dữ liệu phù hợp bằng:

1) Kiểm tra rằng /etc/nsswitch.conf và đảm bảo rằng các khoản passwd, group, shadow và netgroup là tương đương với:

passwd: compat

group: compat

shadow: compat …

netgroup: nis

Xem man nsswitch.conf cho cú pháp của tệp này.

2) Bổ sung dòng sau đây vào các máy trạm NIS, trong tệp /etc/passwd vào cuối của tệp (điều này sẽ chỉ ra rằng nếu người sử dụng không phải là cục bộ, thì máy chủ NIS sẽ được yêu cầu):

Trang 275/471

Page 276: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

+ :::::: (một '+' và 6 ':')

3) Nên nhớ rằng trong /etc/passwd có thể sử dụng + và ? trước mỗi tên người sử dụng trong /etc/passwd, để đưa vào/ghi đè lên đăng nhập của những người sử dụng này. Nếu chúng ta đang sử dụng các mật khẩu với các bóng shadows (an ninh hơn, vì sẽ không cho phép một người sử dụng thông thường thấy được các mật khẩu được mã hóa của những người sử dụng khác), thì dòng sau đây phải được bổ sung vào cuối của tệp /etc/shadow:

+:::::::: (một '+' và 8 ':')

4) Dòng sau đây cũng phải được bổ sung vào cuối của /etc/group:

+::: (một '+' và 3 ':')

5) Việc tra tìm các hosts (host lookups) sẽ được triển khai thông qua DNS (và không phải là NIS), có nghĩa là, đối với các ứng dụng Libc6, trong tệp /etc/nsswitch.conf chúng ta sẽ phải thay đổi khoản vào của hosts đối với dòng sau: hosts: files dns. Hoặc, nếu chúng ta ưa làm điều này bằng

việc sử dụng NIS, thì hosts: files nis. Đối với các ứng dụng Libc5, chúng ta phải sửa đổi tệp /host.conf bằng việc đưa vào lệnh hosts, DNS hoặc lệnh hosts, NIS, theo yêu cầu.

Với cấu hình này, sẽ là có khả năng để thiết lập một kết nối cục bộ (qua máy trạm NIS) với một người sử dụng mà không được xác định trong tệp /etc/passwd, nói cách khác, một người sử dụng được xác định trong máy khác (ypserver).

Ví dụ, có thể chạy ssh -1 user localhost, trong đó user là một người sử dụng xác định trong ypserver.

7.2.3. Nên chạy một máy chủ chính NIS như thế nào?

Hãy giả thiết rằng chúng ta đã cài đặt gói nis và portmap (và portmap đang làm việc) và rằng các nền tảng dữ liệu của NIS đã được tạo ra (xem phần sau):

• Phải chắc chắn rằng /etc/hosts có chứa tất cả các máy sẽ hình thành nên một phần của miền trong định dạng FQDN (tên miền hoàn toàn đủ tư cách - fully qualified domain name), là nơi mà IP, tên và miền và tên không có miền của mỗi máy xuất hiện (ví dụ, 192.168.0.1 pirulo.remix.com pirulo). Điều này chỉ cần thiết trong máy chủ, khi NIS không sử dụng DNS.

• Hơn nữa, nó tồn tại trong tệp /etc/defaultdomain với tên miền được chọn. Không sử dụng miền DNS của bạn sao cho bạn không bị bất kỳ rủi ro an ninh nào, trừ phi bạn cấu hình phù hợp cho các tệp /etc/ypserv.securenets, chỉ các site từ đó các máy trạm sẽ có khả năng kết nối với một cặp mặt nạ/mạng, và /etc/ypserv.conf, đã triển khai sự kiểm soát chi tiết hơn vì nó chỉ những hosts nào có thể truy cập các bản đồ (maps) nào, ví dụ: passwd.byname hoặc shadow.byname.

• Kiểm tra NISSERVER = master tồn tại trong /etc/default/nis.

• Vì những lý do an ninh, có khả năng bổ sung số mạng cục bộ vào tệp /etc/ypserv.securenets.

• Khởi động máy chủ chạy lệnh /etc/init.d/nis stop và sau đó lệnh /etc/init.d/nis start. Lệnh này sẽ khởi động máy chủ (ypserv) và daemon mật khẩu (yppasswdd), có thể được tham

Trang 276/471

Page 277: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

vấn nếu nó là tích cực với ypwich -d domain.

7.2.4. Làm thế nào để cấu hình cho một máy chủ?

Máy chủ được cấu hình với lệnh /usr/lib/yp/ypinit -m; tuy nhiên, cần thiết phải kiểm tra tệp /etc/networks tồn tại, vì nó là cơ bản cho script này.

Nếu tệp này không tồn tại, hãy tạo một tệp rỗng với touch /etc/networks. Cũng có khả năng làm cho máy trạm ypbind chạy trên máy chủ; theo cách này, tất cả những người sử dụng được NIS đưa vào, như được nhắc tới ở trên, sửa đổi tệp /etc/passwd, nơi mà tất cả các dữ liệu đầu vào trước dòng +:::::: sẽ bị NIS bỏ qua (chúng chỉ có thể truy cập được một cách cục bộ), trong khi những cái sau đó có thể truy cập được thông qua NIS từ bất kỳ máy trạm nào. [Miq01].

Hãy coi rằng từ thời điểm này, các lệnh để thay đổi passwd hoặc thông tin người sử dụng như passwd, chfn, adduser không còn hiệu lực nữa. Thay vào đó, sẽ phải sử dụng các lệnh như yppasswd, ypchsh và ypchfn. Nếu thay đổi những người sử dụng hoặc sửa đổi các tệp được nhắc tới ở trên, thì sẽ phải xây dựng lại các bảng NIS bằng việc chạy lệnh make trong thư mục /var/yp để cập nhật các bảng này.

Nhớ trong đầu rằng Libc5 không hỗ trợ các mật khẩu bóng shadow, có nghĩa là bóng shadow không nên được sử dụng với NIS, nếu chúng ta có những ứng dụng với Libc5. Sẽ không có vấn đề gì nếu chúng ta có Libc6, chấp nhận NIS với sự hỗ trợ bóng shadow.

Việc cấu hình một máy chủ phụ (slave) là tương tự như việc cấu hình một máy chủ chính (master), ngoại trừ là NISSERVER = slave trong /etc/default/nis. Trên máy chủ chính, chúng ta phải chỉ định nó phải phân phối các bảng này một cách tự động tới các máy phụ bằng việc đưa vào NOPUSH = “false” trong tệp /var/yp/Makefile.

Bây giờ chúng ta phải nói cho máy chủ chính ai là máy phụ của nó, bằng việc chạy:

/usr/lib/yp/ypinit -m

và đưa vào các tên của các máy chủ phụ. Điều này sẽ xây dựng lại các bản đồ (maps) mà chúng sẽ không gửi các tệp tới các máy phụ. Đối với điều này, trên máy phụ, hãy chạy:

/etc/init.d/nis stop

/etc/init.d/nis start

và, cuối cùng:

/usr/lib/yp/ypinit -s name_master_server.

Theo cách này, máy phụ sẽ tải các bảng từ máy chính.

Cũng có khả năng đặt tệp nis vào thư mục /etc/cron.d với một nội dung tương tự như (hãy nhớ để thực hiện một chmod 755 /etc/cron.d/nis):

20 **** root /usr/lib/yp/ypxfr_1perhour >/dev/null 2>&1

40 6*** root /usr/lib/yp/ypxfr_1perday >/dev/null 2>&1

Trang 277/471

Page 278: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

556,18 *** root /usr/lib/yp/ypxfr_2perday >/dev/null 2>&1

Với những thứ này chúng ta sẽ đảm bảo rằng tất cả những thay đổi trong máy chủ chính sẽ được truyền sang máy chủ phụ NIS.

Khuyến cáo: Sau khi sử dụng adduser để bổ sung một người sử dụng mới vào máy chủ thì hãy chạy

make -C /var/yp để cập nhật các bảng NIS (và làm thế này bất kỳ khi nào bất kỳ đặc tính nào của

người sử dụng thay đổi, ví dụ, mật khẩu với lệnh password, sẽ chỉ thay đổi mật khẩu cục bộ và không thay đổi mật khẩu của NIS). Để kiểm tra hệ thống có đang làm việc và người sử dụng có được đăng ký

trong NIS hay không, bạn có thể chạy ypmatch userid passwd trong đó userid là người sử dụng được

đăng ký trước đó với adduser và sau việc thực hiện lệnh make. Để kiểm tra hệ thống NIS có đang làm việc hay không, bạn có thể sử dụng script của http://tldp.org/HOWTO/NIS-HOWTO/verification.html, cho phép kiểm tra chi tiết hơn về NIS.

Trang 278/471

Page 279: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.3. Các dịch vụ kết nối ở xa: telnet và ssh

7.3.1. Telnet và telnetd

Telnet là một lệnh (máy trạm) được sử dụng để giao tiếp một cách tương tác với host khác chạy daemon telnetd. Lệnh telnet có thể được chạy như host telnet hoặc telnet một cách tương tác, vào lời nhắc “telnet>”, và sau đó, ví dụ: open host (mở host). Một khi giao tiếp được thiết lập, chúng ta phải vào tên và mật khẩu người sử dụng mà với chúng thì chúng ta mong muốn kết nối tới hệ thống ở xa. Có một loạt các lệnh (trong chế độ tương tác), như open, logout, mode (xác định đặc tính trực quan), close, encrypt, quit, set, unset, hoặc có thể chạy các lệnh bên ngoài với '!'. Bạn có thể sử dụng tệp /etc/telnetrc cho những định nghĩa mặc định hoặc .telnetrc cho những định nghĩa của một người sử dụng cụ thể nào đó (những lệnh này phải nằm trong thư mục home của người sử dụng).

Daemon telnetd là máy chủ giao thức telnet cho kết nối tương tác. Telnetd thường được daemon inetd khởi tạo và được khuyến cáo một trình bọc tcpd (sử dụng các qui định truy cập trong host.allow và host.deny) đưa vào trong lời gọi của telnetd trong tệp /etc/inetd.conf (ví dụ), đưa vào dòng như sau:

telnet stream tcp nowait telnetd.telenetd /usr/sbin/tcpd /usr/bin/in.telnetd)

Để gia tăng an ninh hệ thống, hãy xem phần về an ninh. Trong một số phát tán (Debian 3.0 hoặc cao hơn), các chức năng của inetd có thể được xinetd thay thế, có nghĩa là tệp /etc/xinetd.conf phải được cấu hình (xem phần về quản trị mạng). Cũng như vậy, nếu bạn chuyển sang khởi động inetd trong chế

độ thử nghiệm, thì bạn có thể sử dụng câu /etc/init.d/inetd.real start. Nếu tệp /etc/uissue.net hiện diện, thì telnetd sẽ chỉ những nội dung của nó khi đăng nhập. Cũng có khả năng sử dụng /etc/security/access.conf để kích hoạt/giải hoạt các đăng nhập của người sử dụng, các đăng nhập của host hoặc các đăng nhập của nhóm người sử dụng, khi họ kết nối.

Nên nhớ rằng, mặc dù cặp telnet-telnetd có thể hoạt động trong chế độ mã hóa trong các phiên bản mới nhất (truyền các dữ liệu được mã hóa, mặc dù chúng phải được biên dịch với lựa chọn tương ứng), thì đây là một lệnh bị phản đối, chủ yếu vì thiếu an ninh, mặc dù nó có thể vẫn còn được sử dụng trong các mạng an ninh hoặc trong các tình huống được kiểm soát.

Nếu nó không được cài đặt, chúng ta có thể sử dụng (Debian) apt-get install telnetd và sau đó kiểm tra xem nó đã được đăng ký hay chưa hoặc trong /etc/inetd.conf hoặc trong /etc/xinetd.conf (hoặc trong thư mục trong các tệp được xác định, ví dụ, /etc/xinetd.d như được chỉ ra trong tệp trước với câu này được đưa vào /etc/xinetd.d). xinetd.conf hoặc /etc/xinetd.d/telnetd nên đưa vào một phần như là

(bất kỳ sửa đổi nào trong xinetd.conf phải khởi động lại dịch vụ với service xinetd restart):

service telnet

{

disable = no

flags = REUSE

socket_type = stream

Trang 279/471

Page 280: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

wait = nouser = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

}

Thay vì sử dụng telnetd, được khuyến cáo sử dụng SSL telnet(d) thay thế cho telnet(d) bằng việc sử dụng mã hóa và xác thực thông qua SSL hoặc sử dụng SSH (phần tiếp sau). SSLTelnet(d) có thể làm việc với telnet(d) bình thường theo cả 2 hướng, khi bắt đầu giao tiếp, nó kiểm tra liệu điểm ngang hàng khác có hỗ trợ SSL hay không và nếu không, nó tiếp tục với giao thức telnet thông thường. Những ưu điểm được so sánh với telnet(d) là các mật khẩu và dữ liệu không truyền qua mạng ở chế độ văn bản đơn giản (plain text) mà bất kỳ ai cũng sử dụng được, ví dụ, tcpdump có khả năng nhìn thấy các nội dung của giao tiếp này. Hơn nữa, SSLtelnet có thể được sử dụng để kết nối, ví dụ, tới một máy chủ web

an ninh (ví dụ, https://servidor.web.org) bằng việc chạy đơn giản: telnet server.web.org 443.

7.3.2 Trình biên dịch lệnh (shell) an ninh và SSH

Một thay đổi được khuyến cáo là để sử dụng ssh thay vì telnet, rlogin hoặc rsh. Những lệnh sau này là không an ninh (ngoại trừ SSLTelnet) vì một loạt các lý do: quan trọng nhất là việc tất cả những thứ đó được truyền qua mạng, bao gồm các tên và mật khẩu của người sử dụng, là trong văn bản đơn giản - plain text (mặc dù có những phiên bản được mã hóa của telnet – telnetd, chúng phải trùng khớp nhau trong đó cả 2 chúng đều được mã hóa), bất kỳ ai có sự truy cập tới mạng đó hoặc bất kỳ phân khúc nào của mạng đó đều sẽ có khả năng để có được tất cả các thông tin đó và sau đó đóng giả nhận dạng của người sử dụng này. Cái thứ 2 là việc những cổng này (telnet, rsh, …) là nơi đầu tiên một kẻ đột nhập sẽ cố gắng kết nối. Giao thức ssh (trong phiên bản OpenSSH) cung cấp một kết nối được mã hóa và được nén mà an ninh hơn nhiều so với, ví dụ, telnet (được khuyến cáo để sử dụng phiên bản 2 của giao thức này). Tất cả các phát tán hiện hành kết hợp trình máy trạm ssh và máy chủ sshd một cách mặc định.

7.3.2.1. ssh

Để chạy lệnh này, hãy làm như sau:

ssh -l login name host o ssh user@hostname

Thông qua SSH chúng ta có thể gói gọn các kết nối khác như X11 hoặc bất kỳ TCP/IP nào khác, nếu chúng ta bỏ qua thông số -l, thì người sử dụng sẽ kết nối tới cùng người sử dụng cục bộ và trong cả 2 trường hợp máy chủ sẽ yêu cầu mật khẩu để xác thực sự nhận dạng của người sử dụng. SSH hỗ trợ các chế độ xác thực khác nhau (xem trang ssh man) dựa trên thuật toán RSA và mật khẩu công khai.

Có khả năng tạo những mật khẩu xác thực của người sử dụng bằng việc sử dụng lệnh ssh -keygen -t

rsa|dsa. Lệnh này tạo trong thư mục .ssh của người sử dụng tệp id_rsa và id_rsa.pub, khóa cá nhân và công khai một cách tương ứng (ví dụ, cho thuật toán mã hóa RSA). Người sử dụng có thể sao chép khóa công khai (id_rsa.pub) lên máy ở xa trong thư mục .ssh của người sử dụng ở xa, trong tệp authorized_keys. Tệp này sẽ có khả năng chứa càng nhiều khóa công khai càng tốt khi các site ở xa có mong muốn kết nối tới máy này. Cú pháp là mỗi khóa cho mỗi dòng và là tương đương với tệp .rhosts

Trang 280/471

Page 281: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

(mặc dù các dòng sẽ có một kích thước đáng kể). Sau khi đưa vào các khóa công khai của người sử dụng - máy kết nối vào tệp này, thì người sử dụng sẽ có khả năng để kết nối từ máy đó tới mà không cần một mật khẩu.

Trong chế độ thông thường (không có việc tạo các khóa), người sử dụng sẽ được nhắc nhở gõ vào một mật khẩu, nhưng giao tiếp sẽ luôn được mã hóa và sẽ không bao giờ truy cập được tới những người sử dụng khác có thể đang nghe trên mạng. Để có thêm thông tin, hãy xem man ssh. Để chạy một lệnh ở xa, đơn giản gõ:

ssh -l login name host_remote_command

Ví dụ:

ssh -l user localhost ls -al

7.3.2.2. sshd

sshd là máy chủ (daemon) cho ssh (nếu không được cài đặt, có thể cài đặt có sử dụng apt-get install

ssh sẽ cài đặt cả máy chủ và máy trạm). Kết hợp lại, chúng thay thế rlogin, telnet, và rsh và cung cấp an ninh và giao tiếp có mã hóa giữa 2 hosts không an ninh trong mạng.

Điều này thường bắt đầu với các tệp khởi tạo (/etc/init.d hoặc /etc/rc) và chờ những kết nối từ các máy trạm. sshd của hầu hết các phát tán hiện hành hỗ trợ các phiên bản 1 và 2 của giao thức SSH. Khi gói được cài đặt, nó tạo ra một khóa RSA đặc biệt của host, và khi daemon khởi động, nó tạo ra cái khác, RSA cho phiên, không được lưu trữ trên đĩa và thay đổi mỗi giờ. Khi một máy trạm khởi tạo giao tiếp, máy trạm tạo ra một số ngẫu nhiên của 256 bit được mã hóa cùng với 2 khóa của máy chủ và được gửi đi. Số này sẽ được sử dụng trong khi giao tiếp như là khóa phiên để mã hóa giao tiếp bằng việc sử dụng một thuật toán mã hóa chuẩn. Người sử dụng có thể chọn bất kỳ cái nào sẵn có được máy chủ đưa ra. Có một số (an ninh hơn) sự khác biệt khi sử dụng phiên bản 2 của giao thức này. Rồi thì, một số phương pháp xác thực người sử dụng được mô tả trong máy trạm sẽ được khởi tạo hoặc nó sẽ yêu cầu mật khẩu, nhưng luôn với giao tiếp được mã hóa. Để có thêm thông tin, hãy xem các trang man sshd.

7.3.2.3. Đường hầm qua SSH

Chúng ta thường có sự truy cập tới một máy chủ sshd, nhưng vì những lý do an ninh không tới những dịch vụ không mã hóa khác (ví dụ một dịch vụ thư POP3 hoặc máy chủ X11 window) hoặc đơn giản chúng ta muốn kết nối tới một dịch vụ mà nó chỉ có thể được truy cập từ môi trường công ty. Để làm thế, có khả năng phải thiết lập một đường hầm được mã hóa giữa máy trạm (ví dụ với Windows, chạy một phần mềm tự do ssh máy trạm gọi là putty) và máy chủ với sshd. Trong trường hợp này, khi chúng ta kết nối qua đường hầm tới dịch vụ, thì dịch vụ này sẽ thấy yêu cầu dường như nó đã tới từ cùng một máy. Ví dụ, nếu chúng ta muốn thiết lập một kết nối POP3 trên cổng 110 của máy ở xa (mà cũng có một máy chủ sshd) thì chúng ta sẽ chạy:

ssh -C -L 1100:localhost:110 user-id@host

Lệnh này sẽ tìm mật khẩu của user-id qua host và, một khi được kết nối, đường hầm sẽ được tạo ra. Mỗi gói được gửi tới máy cục bộ qua cổng 1100 sẽ được gửi tới máy localhost ở xa qua cổng 110, là

Trang 281/471

Page 282: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nơi dịch vụ POP3 nghe (lựa chọn -C nén giao thông thông qua đường hầm này).

Tạo các đường hầm qua các cổng khác là rất dễ dàng. Ví dụ, giả thiết chúng ta chỉ có sự truy cập tới một máy chủ ủy quyền ở xa từ một máy tính ở xa (đăng nhập ở xa) - không phải từ máy cục bộ - thì chúng ta có thể tạo một đường hầm để kết nối trình duyệt thông qua đường hầm trong máy cục bộ. Hãy giả thiết là chúng ta có một đăng nhập trên một máy là cổng gateway, mà nó có thể truy cập máy được gọi là ủy quyền proxy mà chạy máy chủ ủy quyền Squid qua cổng 3128. Chúng ta chạy:

ssh -C -L 8080:proxy:3128 use@gateway

Một khi chúng ta đã kết nối thì chúng ta sẽ có đường hầm nghe qua cổng cục bộ 8080, sẽ định tuyến lại giao thông từ cổng gateway tới proxy tới 3128. Để di chuyển một cách an ninh, tất cả điều chúng ta sẽ cần phải làm là http://localhost:8080/.

Trang 282/471

Page 283: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.4. Các dịch vụ truyền tệp: FTP

Giao thức truyền tệp (FTP) là một giao thức máy trạm/máy chủ (theo TCP) cho phép các tệp được truyền tới và từ một máy ở xa. Một máy chủ FTP là một máy tính chạy ftpd daemon.

Một số site cho phép một kết nối nặc danh với người sử dụng nặc danh thường là những kho phần mềm. Trên một site cá nhân, chúng ta sẽ cần một tên và mật khẩu người sử dụng để có được sự truy cập. Cũng có khả năng để truy cập một máy chủ FTP thông qua một trình duyệt và ngày nay các kho phần mềm thường được thay thế bằng các máy chủ web (nghĩa là Apache) hoặc các công nghệ khác như là Bittorrent (sử dụng các mạng điểm - điểm (P2P)). Tuy nhiên, trong một số trường hợp và với Debian, ví dụ, sự truy cập tiếp tục sử dụng tên và mật khẩu người sử dụng với khả năng của việc tải lên các tệp tới máy chủ (mặc dù điều này cũng là có thể với các dịch vụ web). Giao thức truyền tệp (FTP) (và máy chủ/máy trạm triển khai nó) bằng định nghĩa là không được mã hóa (các dữ liệu tên và mật khẩu của người sử dụng được truyền trong văn bản rõ ràng trên mạng) với những rủi ro chắc chắn. Nhưng có một số các máy chủ/máy trạm hỗ trợ SSL và vì thế, cả sự mã hóa.

7.4.1. Máy trạm FTP (thông thường)

Một máy trạm FTP cho phép truy cập tới các máy chủ FTP và có một số lượng lớn các máy trạm sẵn sàng. Việc sử dụng FTP là cực kỳ đơn giản; từ dòng lệnh, chạy:

ftp server-name

Hoặc cũng FTP, và sau đó một cách tương tác:

open server-name

Máy chủ sẽ nhắc về một tên và mật khẩu người sử dụng (nếu nó chấp nhận những người sử dụng nặc danh thì sẽ được đưa vào như tên người sử dụng và địa chỉ thư điện tử như là mật khẩu) và từ dấu nhắc lệnh (theo sau một vài thông điệp) chúng ta sẽ có khả năng bắt đầu việc truyền các tệp.

Giao thức cho phép truyền trong các chế độ ASCII hoặc nhị phân. Điều quan trọng để quyết định dạng nào của tệp sẽ được truyền vì việc truyền một nhị phân trong chế độ ASCII sẽ phá hủy tệp. Để thay đổi giữa các chế độ, sẽ cần chạy lệnh ascii hoặc nhị phân. Các lệnh hữu dụng của máy trạm FTP là ls (di chuyển trong thư mục ở xa), có được tên tệp file_name (để tải về các tệp) hoặc mget (chấp nhận *), đặt tên tệp file_name (để gửi các tệp tới máy chủ) hoặc mput (chấp nhận *); trong 2 trường hợp cuối thì cần phải được xác thực để ghi vào thư mục của máy chủ. Có thể chạy các lệnh cục bộ bằng việc gõ vào một dấu '!' trước lệnh. Ví dụ, !cd /tmp sẽ có nghĩa là các tệp được tải về máy cục bộ sẽ tới thư mục /tmp. Để xem tình trạng và việc vận hành của sự truyền này, máy trạm sẽ có khả năng để in các dấu nhắc, hoặc dấu kiểm, chúng được các lệnh hash và tick kích hoạt. Có những lệnh khác có thể được tham vấn trên trang của sách chỉ dẫn (FTP man) hoặc bằng việc chạy trợ giúp từ bên trong máy trạm.

Chúng ta có một số giải pháp thay thế cho các máy trạm, ví dụ trong chế độ văn bản: ncftp, lukemftp, lftp, cftp, yafc, hoặc trong chế độ đồ họa: gFTP, Wxftp, LLNL XFTP, guiftp. [Bor00].

Trang 283/471

Page 284: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.4.2. Các máy chủ FTP

Máy chủ UNIX truyền thống được chạy thông qua cổng 21 và được khởi động với daemon inetd (hoặc xinetd phụ thuộc vào cái nào được cài đặt). Trong inetd.conf được khuyến cáo đưa vào trình bao bọc tcpd với các qui định truy cập trong host.allow và host.deny trong lời gọi tới ftpd bằng inetd để gia tăng an ninh hệ thống (tham chiếu tới chương về an ninh). Khi nó nhận được một kết nối, nó kiểm tra người sử dụng và mật khẩu và cho phép vào nếu xác thực là đúng. Một FTP nặc danh làm việc một cách khác, vì người sử dụng này sẽ chỉ có khả năng truy cập một thư mục được thiết lập trong tệp cấu hình và cây thư mục bên dưới của nó, nhưng không đi ngược lên được, vì những lý do an ninh. Thư mục này thường chứa các thư mục bub/, bin/, etc/, và lib/ sao cho daemon FTP có thể chạy các lệnh bên ngoài cho các yêu cầu của ls. Cái daemon ftpd hỗ trợ các tệp sau cho cấu hình của nó:

• /etc/ftpchroot: liệt kê những người sử dụng mà thư mục chroot cơ sở của họ sẽ được thay đổi khi họ kết nối. Cần thiết khi chúng ta muốn cấu hình một máy chủ nặc danh.

• /etc/ftpwelcome: công bố chào mừng.

• /etc/motd: tin sau khi đăng nhập.

• /etc/nologin: thông điệp chỉ ra sau khi từ chối kết nối.

• /var/log/ftpd: ghi lưu ký của các lần truyền.

Nếu có lúc nào đó muốn ngăn chặn kết nối FTP, thì chúng ta có thể làm bằng việc đưa vào tệp /etc/nologin. ftpd sẽ chỉ ra nội dung của tệp đó và kết thúc. Nếu có một tệp .message trong một thư mục, thì ftpd sẽ chỉ ra điều này khi được truy cập.

Kết nối của một người sử dụng đi qua 5 mức khác nhau:

1. Việc có một mật khẩu hợp lệ.

2. Việc không xuất hiện trong danh sách /etc/ftpusers.

3. Việc có một trình biên dịch lệnh (shell) chuẩn hợp lệ.

4. Nếu nó xuất hiện trong /etc/ftpchroot, nó sẽ được thay đổi tới thư mục home (được đưa vào nếu nặc danh hoặc FTP).

5. Nếu người sử dụng là nặc danh hoặc FTP, thì nên có một khoản vào trong /etc/passwd với người sử dụng FTP, nhưng sẽ có khả năng kết nối bằng việc trao bất kỳ mật khẩu nào (thông thường thì địa chỉ thư điện tử được sử dụng).

Điều quan trọng để nhớ trong đầu rằng những người sử dụng chỉ được phép sử dụng dịch vụ FTP mà không có một trình biên dịch lệnh đối với người sử dụng khoản vảo tương ứng trong /etc/passwd để ngăn chặn người sử dụng này có một kết nối thông qua ssh hoặc telnet, ví dụ:

useradd -d/home/nteum -s /bin/false nteum

Và sau đó:

passwd nteum

Trang 284/471

Page 285: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Mà nó sẽ có nghĩa là người sử dụng nteum sẽ không có được một trình biên dịch lệnh cho một kết nối tương tác (nếu người sử dụng này đã tồn tại, thì chúng ta có thể sửa tệp /etc/passwd và thay đổi trường cuối cùng cho /bin/false). Rồi chúng ta sẽ phải bổ sung như một dòng cuối /bin/false trong /etc/shells. [Mou01] mô tả từng bước cách tạo cả một máy chủ FTP an ninh với những người sử dụng được đăng ký và một máy chủ FTP nặc danh cho những người sử dụng không được đăng ký. Hai trong số các máy chủ không tiêu chuẩn thông dụng nhất là WUFTPD (http://www.wuftpd.org) và ProFTPD (http://www.proftpd.org). [Bor00, Mou01].

Để cài đặt Proftpd trong Debian, hãy chạy: apt-get install proftpd. Sau khi nó được tải về, debconf sẽ yêu cầu liệu chúng ta muốn chạy nó bằng inetd hay trong chế độ bằng tay (được khuyến cáo để chọn cái sau). Nếu muốn dừng dịch vụ (ví dụ, để thay đổi cấu hình), thì có thể sử dụng

/etc/init.d/proftpd stop và để sửa tệp thì có thể sử dụng /etc/proftpd.conf.

Hãy tham vấn http://www.debian-administration.org/articles/228 để cấu hình nó trong chế độ được mã hóa (TSL) hoặc để có sự truy cập nặc danh.

Một máy chủ Debian rất thú vị là PureFtpd (pure-ftpd) là rất an ninh, nó cho phép những người sử dụng ảo, khẩu phần quota, SSL/TSL, và một tập hợp các tính năng rất thú vị. Chúng ta có thể kiểm tra sự cài đặt/cấu hình của nó tại http://www.debian-administration.org/articles/383.

Trang 285/471

Page 286: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.5. Các dịch vụ trao đổi thông tin ở mức của người sử dụng

7.5.1. Đại lý chuyển thư MTA (Mail Transport Agent)

Một MTA có trách nhiệm cho việc gửi/nhận các thư từ một máy chủ thư điện tử tới/từ Internet, triển khai giao thức truyền thư đơn giản SMTP (Simple Mail Transfer Protocol). Mặc định, Debian sử dụng exim, vì nó là dễ dàng hơn để cấu hình so với các gói MTA khác, như smail hoặc sendmail (cái sau là một trong những thứ có trước). exim đưa ra các tính năng tiên tiến như việc từ chối các kết nối site SPAM được biết, nó có những sự bảo vệ chống lại thư rác hoặc bom thư và là cực kỳ hiệu quả trong việc xử lý thư số lượng lớn. Nó được chạy thông qua inetd trên một dòng trong tệp cấu hình /etc/inetd.conf với các thông số cho các cấu hình thông thường (hoặc xinetd).

exin sử dụng một tệp cấu hình trong /etc/exim/exim/exim.conf, có khả năng sửa đổi được bằng tay, nhưng được khuyến cáo làm thế bằng việc sử dụng một script trình biên dịch lệnh được gọi là eximconfig, để có khả năng cấu hình exim một cách tương tác. Giá trị của cấu hình này sẽ phụ thuộc vào tình huống của máy; tuy nhiên, kết nối của nó là cực kỳ dễ dàng, vì bản thân script gợi ý những giá trị mặc định. Tuy thế, trong /usr/doc/exim chúng ta có thể thấy những ví dụ của những cấu hình này.

Có thể thử nghiệm hoặc cấu hình là hợp lệ với exim-bV và, nếu có những lỗi trong tệp cấu hình, thì chương trình sẽ chỉ ra chúng trên màn hình hoặc, nếu mọi thứ là đúng, thi sẽ đơn giản chỉ ra phiên bản và ngày tháng. Để thử nghiệm liệu có thể nhận biết được một hộp thư cục bộ hay không, hãy sử dụng:

exim -v -bt local_user

Điều này sẽ chỉ ra các lớp vận tải được sử dụng và địa chỉ cục bộ của người sử dụng. Chúng ta cũng có thể tiến hành thử nghiệm sau với một người sử dụng ở xa bằng cách thay thế người sử dụng cục bộ bằng một địa chỉ ở xa để xem nó hành xử thế nào. Sau đó cố gắng gửi đi một thông điệp thư cục bộ và ở xa, cho các thông điệp đi qua exim một cách trực tiếp (không có việc sử dụng một đại lý nào, ví dụ, mailx) bằng việc gõ vào ví dụ sau (tất cả cùng một lúc):

exim postmaster@OurDomain

From: user@OurDomain

To: postmaster@OurDomain

Subject: Test Exim

Test message

^D

Tiếp sau, chúng ta có thể phân tích các tệp theo dõi mainlog và paniclog trong /var/log/exim/ để xem hành xử của nó và thấy những thông điệp lỗi nào đã được tạo ra. Rõ ràng, chúng ta cũng có thể kết nối tới hệ thống này như người sử dụng postmaster (hoặc như người sử dụng mà thư được gửi cho anh/chị ta) và đọc các thông điệp thư để xem liệu mọi thứ có đúng hay không. Cách khác là chạy nó trong chế độ gỡ rối có sử dụng -dNro như một thông số, nơi mà Nro là mức gỡ rối (1-9). Với thông số thông

thường này, chúng ta nên khởi động là exim -bs, hoặc bằng inetd hoặc xinetd. Cũng có khả năng để

Trang 286/471

Page 287: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chạy nó như một daemon thông qua /etc/init.d/exim start trong các hệ thống đòi hỏi khả năng xử lý thư là cao. Xem tài liệu (có trong Debian trong gói exim-doc-html) để cấu hình các bộ lọc, kiểm tra các hosts, những người gửi … Cũng thú vị để cài đặt gói eximon, là trình giám sát exim cho phép người quản trị thấy được hàng đợi các thông điệp thư và các lưu ký logs và hành động trên các thông điệp trong hàng đợi để phân phối chúng (nén lại, nở ra, tan...).

Phiên bản mới nhất của exim là exim4 (nó có thể cài đặt được với apt-get install exim4-daemon-

heavy (và cũng cả install exim4-config mà sẽ giúp cấu hình cho exim4) - nhớ trong đầu là có các gói khác nhau với các khả năng khác nhau nhưng exim4-daemon-heavy là hoàn chỉnh nhất. Được khuyến cáo đọc /usr/share/doc/exim/README.Debian.gz và update.exim.org/docs.html. Một trong những sự khác biệt nhỏ để xem xét trong cấu hình này là việc thay vì có một cấu hình duy nhất exim.conf (lựa chọn mặc định nếu chúng ta cài đặt exim từ các nguồn) thì gói exim4-config (được khuyến cáo cài đặt) sử dụng các tệp cấu hình nhỏ của một thứ duy nhất và những thứ này sẽ nằm trong /etc/exim4/conf.d/* và sẽ được xâu chuỗi trong một tệp duy nhất (/var/lib/exim4/config được tự động sinh ra một cách mặc định) với update-exim4.conf.

7.5.2. Giao thức truy cập thông điệp Internet (IMAP)

Dịch vụ này cho phép truy cập tới các thông điệp thư được lưu trữ trong một máy chủ duy nhất thông qua một máy trạm thư như Thunderbird hoặc máy trạm thư Seamonkey (cả 2 đều trong mozilla.org). Dịch vụ này được imapd daemon hỗ trợ (hiện hỗ trợ giao thức IMAP4rev1) cho phép một tệp thư điện tử trên một máy ở xa. Dịch vụ imapd được đưa ra thông qua các cổng 143 (imap2) hoặc 993 (khi mã hóa SSL được hỗ trợ) (imaps). Nếu chúng ta sử dụng inetd, thì máy chủ này được khởi động thông qua một dòng trong /etc/inetd.conf như sau:

Imap2 stream tcp nowait root /usr/tcpd/usr/sbin/Imapd

Imap3 stream tcp nowait root /usr/tcpd/usr/sbin/Imapd

Trong ví dụ này, trình bọc tcpd được gọi, nó hành động với hosts.allow và hosts.deny để gia tăng an ninh. Các ứng dụng phổ biến nhất là uw-imapd (Đại học Washington và được cài đặt một cách mặc định trong Debian) hoặc phiên bản an ninh của nó uw-imapd-ssl, nhưng cũng còn cả cyrus-imap hoặc courier-imap nữa. Để thử nghiệm máy chủ imap hoạt động ra sao, chúng ta có thể sử dụng một trình máy trạm, như seamonkey-mail và tạo một tài khoản cho một người sử dụng cục bộ và cấu hình nó phù hợp sao cho nó kết nối qua máy cục bộ, kiểm tra được imap làm việc đúng đắn.

Trong Debian, phiên bản imap đã được biên dịch để hỗ trợ MD5 như là phương pháp cho việc xác thực những người sử dụng ở xa, cho việc mã hóa các mật khẩu kết nối và để tránh nhận dạng bị thay thế bằng việc lừa đảo trên mạng (máy trạm được sử dụng để kết nối tới máy chủ imap cũng phải hỗ trợ phương pháp xác thực MD5). Phương pháp này là rất đơn giản và an ninh, nhưng máy chủ phải biết các mật khẩu trong văn bản thông thường của những người sử dụng thư, nghĩa là được khuyến cáo sử dụng phiên bản của imapd qua SSL hoạt động qua cổng 993. Giống như ssh, giao thức imaps được dựa trên việc mã hóa giao tiếp thông qua một chứng chỉ của host (máy trạm được sử dụng cho việc kết nối tới máy chủ cũng phải hỗ trợ phương pháp kết nối này, ví dụ trình thư điện tử Thunderbird hoặc Seamonkey). Để cấu hình máy chủ imaps, hãy cài đặt gói của Debian là uw-imap-dssl là máy chủ imap

Trang 287/471

Page 288: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

có hỗ trợ SSL.

Cài đặt này sẽ tạo ra một chứng chỉ tự ký hợp lệ cho 1 năm và được lưu trữ trong /etc/ssl/certs/imapd.pem. Chứng chỉ này có thể được thay thế bằng một chứng chỉ được một công ty chức thực ký hoặc có thể tự tạo bằng việc sử dụng OpenSSL. Được khuyến cáo để lại chỉ khoản imaps trong tệp /etc/inetd.conf và loại bỏ những khoản của imap2 và imap3 nếu chúng ta muốn sự truy cập tới imap chỉ bằng SSL.

Một giao thức khác với những đặc tính tương tự từng rất phổ biến trong quá khứ nhưng đã bị vượt qua hiện nay bởi IMAP, là giao thức bưu điện (POP) phiên bản 2 và 3. Nó được cài đặt và khởi động theo một cách y hệt như IMAP. Có một loạt các máy chủ POP, nhưng hầu hết chúng là courier-pop, cyrus-pop3d, ipopd (Đại học Washington), qpopper, solid-pop3d.

7.5.2.1. Các khía cạnh bổ sung

Hãy giả thiết là những người sử dụng, chúng ta có 4 tài khoản thư trên các máy chủ khác nhau và chúng ta muốn tất cả các thông điệp thư được gửi tới những tài khoản này sẽ được thu thập vào một tài khoản duy nhất: để truy cập tới tài khoản đó từ bên ngoài và cũng phải có một trình lọc chống spam.

Trước tiên, chúng ta sẽ phải cài đặt exim + Imap và kiểm tra chúng làm việc. Chúng ta cần tính nếu chúng ta cài đặt courier-imap (theo một số tác giả là tốt hơn so với uw-imapd) mà nó hoạt động qua một định dạng thư gọi là Maildir, mà exim cũng sẽ phải được cấu hình để chạy trên một maildir với cấu hình sau trong /etc/exim/exim.conf (hoặc thứ tương ứng nếu chúng ta có exim4), thay đổi lựa chọn mail_dir format = true (các thư sẽ được lưu trong tài khoản người sử dụng cục bộ trong một thư mục

gọi là Maildir). Sau đó chúng ta sẽ phải khởi động lại máy chủ exim bằng /etc/init.d/exim restart, lặp lại thử nghiệm hoạt động bằng việc gửi cho chúng ta một thông điệp thư và đọc nó bằng một trình

máy trạm có hỗ trợ maildir (ví dụ mutt -mailx không hỗ trợ nó - xem http://www.mutt.org).

Để đem thư về từ những tài khoản khác nhau chúng ta sẽ sử dụng fetchmail, (được cài đặt với apt-get

install fetchmail). Tiếp sau, chúng ta sẽ phải tạo tệp .fetchmailrc trong $HOME của chúng ta (cũng có thể sử dụng công cụ fetchmailconf) sẽ phải chứa một số thứ như:

set postmaster “pirulo”

set bouncemail

set no spambounce

set flush

poll pop.domain.com proto pop3

user 'user1' there with password 'secret' is pirulo here

poll mail.domain2.com

user 'user5' there with password 'secret2' is 'pirulo' here

user 'user7' there with password 'secret3' is 'pirulo' here

Trang 288/471

Page 289: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hành động set nói cho Fetchmail rằng dòng này có chứa một lựa chọn toàn cầu (gửi lỗi, xóa thư khỏi các máy chủ...). Tiếp sau, chúng ta sẽ chỉ định các máy chủ thư: một máy cho việc kiểm tra liệu có thư với giao thức POP3 hay không và một cái khác cho việc thử nghiệm sử dụng một vài giao thức để tìm ra thứ làm việc được. Chúng ta kiểm tra thư của 2 người sử dụng với lựa chọn máy chủ thứ 2, nhưng tất cả các thư tìm được thì được gửi tới cho thùng thư của pirulo. Điều này cho phép kiểm tra một vài hộp thư của những máy chủ khác nhau để biết liệu chúng có là một hộp thư MUA duy nhất hay không. Thông tin đặc biệt của từng người sử dụng bắt đầu với người sử dụng có hành động. Fetchmail có thể được đặt trong cron (ví dụ trong /var/spool/cron/crontabs/pirulo bổ sung 1**** /usr/bin/fetchmail -s), sao cho nó chạy tự động hoặc có thể chạy được trong chế độ daemon (đặt thiết lập daemon 60 trong .fetchmailrc và chạy nó một lần, ví dụ, trong Autostart của Gnome/KDE hoặc trong .bashrc - nó sẽ chạy sau mỗi 60 giây).

Để loại bỏ thư rác chúng ta sẽ sử dụng SpamAssassin (apt-get install spamassassin) và có thể cấu hình Kmail hoặc Evolution (kiểm tra thư mục tham chiếu để xem cách cấu hình nó) để chúng chạy. Theo cấu hình này chúng ta sẽ sử dụng Procmail, là một công cụ rất mạnh (cho phép phân phối, lọc, tự động gửi lại các thư …). Một khi được cài đặt (apt-get install procmail), thì chúng ta cần phải tạo một tệp được gọi là .procmailrc trong từng home của từng người sử dụng mà sẽ gọi SpamAssassin:

• Set yes cho việc hoạt động hoặc gỡ rối các thông điệp

VERBOSE = no

• Chúng ta giả thiết là các thư là ở trong “~/.Maildir”, hãy thay đổi nếu là khác

PATH=/usr/bin:/bin:/usr/local/bin:

MAILDIR=$HOME/Maildir

DEFAULT=$MAILDIR/

# Thư mục để lưu trữ các tệp

PMDIR=$HOME/.procmail

# Bình luận nếu chúng ta không muốn một lưu ký log của Procmail

LOGFILE=$PMDIR/log

# Bộ lọc spam

INCLUDERS=$PMDIR/spam.rc

Tệp ~/.procmail/spam.rc chứa:

# Nếu spamassassin không ở trong PATH

# hãy bổ sung thư mục vào biến PATH:

Trang 289/471

Page 290: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

# Ofw: spamassassin.lock|

| spamassassin -a

# 3 dòng sau đây sẽ chuyển

# Thư rác tới một thư mục được gọi là

# “spam-folder”. Nếu chúng ta muốn lưu nó trong Inbox, sao cho

# nó có thể được lọc sau này với máy trạm, hãy chú giải cho 3 dòng này.

:0:

* ^X-Spam-Status: Yes

spam – folder

Tệp ~/.spamassassin/user_prefs chứa một số cấu hình hữu dụng cho spamassassin (xem thư mục tham khảo):

# Tệp các tham chiếu của người sử dụng. Ver man

# Mail::spamassassin::Conf

# Ngưỡng cho việc nhận thức được một Spam: # Mặc định là 5, nhưng với 4 nó làm việc tốt hơn required_hits 4 một chút.

# Các site mà chúng ta sẽ không bao giờ coi Spam tới từ whitelist_from [email protected] whitelist_from *@uoc.edu

# Các site SPAM luôn tới từ

# (cách nhau bởi dấu phẩy) blacklist_from [email protected]

# Các địa chỉ trên Whitelist và Blacklist là những mẫu toàn cầu

# như là: “[email protected]”, “*@isp.net”, hoặc “*.domain.com”.

# Hãy chèn từ “[SPAM]” vào chủ đề (để làm cho việc lọc dễ dàng hơn).

# Nếu chúng ta không muốn chú giải cho dòng này

subject_tag [SPAM]

Điều này sẽ tạo ra một thẻ X-Spam-Status: Yes trong tiêu đề thông điệp nếu nó tin tưởng rằng thông điệp là Spam. Rồi chúng ta sẽ phải lọc chúng và đặt chúng vào tệp khác hoặc xóa chúng một cách trực tiếp. Chúng ta có thể sử dụng procmail để lọc các thư từ các miền, những người sử dụng … Để có thêm

Trang 290/471

Page 291: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thông tin, hãy thăm http://www.debian-administration.org/articles/242. Cuối cùng, chúng ta có thể cài đặt một máy trạm thư và cấu hình các bộ lọc sao cho nó chọn tất cả các thông điệp thư điện tử với X-Spam-Status: Yes và xóa chúng hoặc gửi chúng tới một thư mục nơi mà chúng ta sau đó sẽ kiểm tra chúng (các thư được xác định là rác nhưng chúng lại không phải). Một khía cạnh bổ sung của thông tin này là nếu chúng ta mong muốn có một máy chủ thư thông qua webmail (nói cách khác, có khả năng kiểm tra các thư từ một máy chủ thông qua một trình duyệt mà không phải cài đặt hoặc cấu hình cho một máy trạm - giống như việc tham vấn một tài khoản gmail hoặc hotmail) là có khả năng để cài đặt

Squirrelmail (apt-get install squirrelmail) để đưa ra dịch vụ này. Đối với Debian hãy xem tại http://www.debian-administration.org/articles/200.

Có những khả năng khác như được thảo luận tại http://www.debian-administration.org/articles/364 việc cài đặt MailDrop thay vì Procmail, Postfix thay vì Exim, hoặc đưa vào Clamav/Amavisd như một trình chống virus (Amavisd cho phép Postfix được liên kết với SpamAssassin và ClamAV).

7.5.3. Tin tức

Tin tức hoặc các nhóm thảo luận được hỗ trợ thông qua giao thức truyền tin tức mạng NNTP (Network News Transfer Protocol). Việc cài đặt một máy chủ tin là cần thiết nếu chúng ta muốn đọc tin tức một cách phi trực tuyến, nếu chúng ta muốn phải có một trình nhắc lại của các máy chủ trung tâm hoặc nếu chúng ta muốn có máy chủ chính cho tin tức của riêng chúng ta. Các máy chủ thông dụng nhất là INN hoặc CNEWS, nhưng chúng là các gói phức tạp được thiết kế cho các máy chủ lớn. Leafnode là một gói của USENET triển khai một máy chủ tNP, đặc biệt phù hợp cho các site với các nhóm nhỏ những người sử dụng nhưng từ đó chúng ta mong muốn truy cập tới một số lượng lớn các nhóm tin. Máy chủ

này được cài đặt trong cấu hình cơ bản của Debian và có thể được cấu hình lại với dpkg-reconfigure

leafnode cho tất cả các thông số như các máy chủ trung tâm, dạng của kết nối... Daemon này khởi động từ inetd theo một cách tương tự như imap (hoặc với xinetd). Leafnode hỗ trợ các bộ lọc thông qua các biểu thức được chỉ định (của dạng ^Newsgroups:.* [,] alt.flame$) trong /etc/news/leafnode/filters, nơi mà với mỗi thông điệp thì tiêu đề là so sánh được với biểu thức thông thường và nếu có một sự trùng khớp, thì thông điệp đó sẽ bị từ chối.

Máy chủ này là đơn giản để cấu hình và tất cả các tệp phải là sở hữu của một người sử dụng tin tức với quyền xác thực để ghi (hãy kiểm tra rằng người chủ sở hữu này tồn tại trong /etc/passwd). Tất cả các tệp kiểm soát, tin tức và cấu hình được thấy trong /var/spool/news ngoại trừ cấu hình của bản thân máy chủ trong tệp /etc/news/leafnode/config. Cấu hình có một số thông số bắt buộc phải được cấu hình (ví dụ, sao cho máy chủ này có thể kết nối tới được các máy chủ chính). Chúng là máy chủ (máy chủ tin tức từ đó tin tức sẽ có được và được gửi đi) và expire (thời hạn hết hạn - số ngày mà một luồng hoặc phiên được đọc và sẽ được xóa). Vì thế, chúng ta có một tập hợp các thông số lựa chọn với bản chất tự nhiên chung hoặc đặc biết đối với máy chủ có thể được cấu hình. Để có thêm thông tin, xem tài liệu (leafnode man hoặc /usr/doc/leafnode/README.Debian).

Để kiểm tra hiệu năng của máy chủ, chúng ta có thể chạy:

telnet localhost nntp

và nếu mọi thứ làm việc đúng, thì nó sẽ chỉ sự xác thực của máy chủ và sẽ chờ một lệnh, như một thử

Trang 291/471

Page 292: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nghiệm, chúng ta có thể gõ vào help [để bỏ qua, nhấn Ctrl+ (và sau đó Quit)].

7.5.4. Word Wide Web (httpd)

Apache là một trong những máy chủ phổ biến nhất với những khả năng tốt nhất về giao thức truyền siêu văn bản (HTTP). Apache có một thiết kế theo module và hỗ trợ những mở rộng module động trong khi thực thi. Nó có khả năng cấu hình được cao trong nhiều máy chủ và các module có sẵn và hỗ trợ một loạt cơ chế xác thực, kiểm soát truy cập, siêu tệp (metafile), lưu trữ ủy quyền (proxy caching), các máy chủ ảo hóa … Với các module (bao gồm cả trong Debian) có khả năng có PHP3, Perl, Java Servlets, SSL và những mở rộng khác (xem tài liệu trong http://www.apache.org).

Apache được thiết kế để được chạy như một qui trình đứng một mình daemon. Bằng cách này nó tạo ra một tập hợp các qui trình phụ sẽ điều khiển các yêu cầu đầu vào. Nó cũng có thể được chạy như một daemon Internet thông qua inetd, nghĩa là nó sẽ khởi động mỗi lần nó nhận được một yêu cầu. Cấu hình của máy chủ có thể cực kỳ phức tạp phụ thuộc vào những yêu cầu (kiểm tra tài liệu), tuy nhiên, ở đây chúng ta có thể thấy một cấu hình tối thiểu chấp nhận được. Các tệp cấu hình là ở trong /etc/apache và là httpd.conf (tệp cấu hình chính), srm.conf, access.conf (2 tệp cuối được duy trì cho tính tương thích), mime.conf (các định dạng MIME) và magic (số xác thực tệp). Các tệp lưu ký log trong /var/log/apache và là error.log (các trình đăng ký các lỗi theo các yêu cầu của máy chủ), access.log (trình đăng ký ai đã truy cập cái gì) và apache.pid (trình xác định qui trình).

Apache khởi động từ script khởi động /etc/init.d/apache và /etc/rcX.d, nhưng có thể được kiểm soát bằng tay thông qua lệnh apachectl. Lệnh apacheconfig cũng có thể được sử dụng để cấu hình máy chủ này. Các thư mục mặc định (trong Debian) là:

• /var/www: thư mục các tài liệu HTML.

• /usr/lib/cgibin: thư mục các tệp chạy được (cgi) với máy chủ.

• Http://server.domain/ user: các trang cá nhân của những người sử dụng .

• /home/~user/public.html: thư mục của các trang cá nhân.

Tệp mặc định được đọc từ mỗi thư mục là index.html. Sau khi cài đặt các gói apache và apache-common, Debian về cơ bản cấu hình cho máy chủ này và khởi động nó. Chúng ta có thể kiểm tra hoạt động bằng việc mở một trình duyệt (ví dụ, Konqueror, và gõ “http://localhost” vào thanh URL, nó sẽ tải lên trang /var/www/index.html).

7.5.4.1. Cấu hình bằng tay (tối thiểu) của httpd.conf

Hãy nhìn vào một số thông số quan trọng nhất sẽ được cấu hình trong Apache (ví dụ được lấy từ phiên bản Apache 1.X và có một số thay đổi nhỏ nếu chúng ta sử dụng phiên bản 2).

ServerType đứng một mình Được khuyến cáo, hiệu quả hơn

ServerRoot /etc/apache Nơi chứa các tệp cấu hình

Port 80 Nơi máy chủ sẽ nghe các yêu cầu

Trang 292/471

Page 293: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

User www-data (dữ liệu www của người sử dụng) Người sử dụng và nhóm mà với họ máy chủ sẽ được chạy (quan trọng cho an ninh) phải là những người sử dụng hợp lệ (họ có thể bị khóa).

Group www-data

ServerAdmin [email protected]

Địa chỉ của người sử dụng sẽ tham dự vào các lỗi

ServerName pirulo.remix.com Tên máy chủ được gửi cho người sử dụng - phải là tên hợp lệ trong /etc/host hoặc DNS -

DocumentRoot /var/www Thư mục chứa các tài liệu

Alias /icons/ /usr/share/apache/icons/ Nơi chứa các biểu tượng

ScriptsAlias /cgibin/ /usr/lib/cgibin/ Nơi chứa các CGI scripts

7.5.4.2. Apache 2.2 + SSL + PHP + MySQL

Một khía cạnh quan trọng của các máy chủ web động là tận dụng được hầu hết những ưu điểm của Apache ở chế độ an ninh (SSL), PHP (là ngôn ngữ lập trình thường được sử dụng để tạo nội dung website) và MySQL + PHPAdmin (cơ sở dữ liệu mà nó sẽ được thảo luận trong các chương sau và giao diện đồ họa cho việc quản lý nó) tất cả làm việc trong sự phối kết hợp. Chúng ta sẽ bắt đầu bằng việc cài đặt nó trong một Debian Sarge, nhưng không thông qua các gói deb mà từ các phần mềm được tải về từ các site phù hợp, bằng cách này chúng ta có thể lặp lại kinh nghiệm với những phát tán khác. Rõ ràng, sau khi không có khả năng kiểm soát các gói này bằng việc sử dụng apt hoặc trình quản lý gói nào khác. Chúng ta cần quan tâm tới phiên bản, mà chúng có thể thay đổi, và không cài đặt gói này qua các gói đã được cài đặt.

a) Tải các tệp cần thiết về (ví dụ trong thư mục /root → cd /root):

1) Apache: từ http://httpd.apache.org/download.cgi: httpd-2.2.4.tar.bz2

2) PHP: từ http://www.php.net/downloads.php PHP 5.2.1 (tar.bz2)

3) MySQL từ http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.9.1-all-languages.tả.bz2?download

4) PHPAdmin từ http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.9.1-all-languages.tar.bz2?download

b) Các tiện ích: bzip2 libssl-dev openssl gcc g++ cpp make (kiểm tra rằng chúng không được cài đặt hoặc nếu không, chạy apt-get install bzip2 libssl-dev openssl gcc g++ cpp make.

c) Apache:

cd /root

tar jxvf httpd-2.2.4.tar.bz2

Trang 293/471

Page 294: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cd httpd-2.2.4

Với tiền tố, chúng ta chỉ rằng chúng ta sẽ cài đặt ví dụ /usr/local/apache2

./configure - - prefix = /usr/local/apache2 \

-with ssl-/usr/include/openssl \

- - enable -ssl

make

make install

Chúng ta sửa đổi tệp cấu hình /usr/local/apache2/conf/httpd.conf và thay đổi người sử dụng và nhóm workgroup đối với www-data:

User www-data

Group www-data

Chúng ta thay đổi chủ sở hữu và nhóm của thư mục dữ liệu cho

www-data:chown -R www-data: www-data /usr/local/apache2/htdocs

Chúng ta sửa đổi người sử dụng www-data để thay đổi thư mục home của nó trong /etc/passwd:

www-data:x:33:33:www-data:/usr/local/apache2/htdocs:/bin/sh

Máy chủ Apache được cài đặt. Để khởi tạo nó (để dừng nó, hãy thay đổi start thành stop):

/usr/local/apache2/bin/apachectl start

Chúng ta có thể đặt một script để khởi động máy chủ apache khi khởi động.

ln -s /usr/local/apache2/bin/apachectl /etc/rcS.d/S99apache chmod 755 /etc/rdS.d/S99apache

d) SSL:

Trong /usr/local/apache2/conf/httpd.conf chúng ta loại bỏ ghi chú này khỏi dòng

Include conf/extra/httpd-ssl.conf

Các tệp được tạo ra với các khóa cho máy chủ an ninh, trong /root chúng ta chạy (chỉnh các phiên bản tới một phiên bản mà nó đã được tải về) - lệnh openssl đầu tiên là một dòng dài và kết thúc với 1024:

openssl genrsa -rand ../httpd-2.2.4.tar.bz2:../php-5.2.1.tar.bz2:../phpMyAdmin-2.9.1-

all-languages.tar.bz2 -out server.key 1024

openssl rsa -in server.key -out server.pem

openssl req -new -key server.key -out server.csr

openssl x509 -req -days 720 -in server.csr -signkey server.key -out server.crt

Chúng ta sao chép các tệp …

Trang 294/471

Page 295: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/usr/local/apache2/bin/apachectl restart

Chúng ta có thể kiểm tra cách bổ sung module SSL vào một máy chủ còn chưa cài đặt nó tại http://www.debian-administration.org/articles/349.

e) MySQL (để có thêm thông tin hãy xem module 8):

Chúng ta tạo một nhóm và một người sử dụng MySQL nếu nó chưa tồn tại.

groupadd mysql

useradd -g mysql mysql

Trong thư mục nơi mà chúng ta sẽ cài đặt MySQL (/usr/local) chúng ta gõ:

cd /usr/local/

gunzip < /root/mysql -standard-4.1.21-pc-linux-gnu-i686.tar.gz | tar xvf -ln -s

mysql -standard-4.1.21-pc-linux-gnu-i686 mysql cd mysql

Chúng ta tạo một cơ sở dữ liệu và thay đổi các quyền

scripts /mysql_instll_db - - user = mysql

chown -R root

chown -R mysql data

chgrp -R mysql.

Chúng ta có thể đặt một script cho việc khởi tạo máy chủ MySQL.

ln -s /usr/local/mysql/support-files/mysql.server /etc/

rcS.d/S99mysql.server

chmod 755 /etc/rcS.d/S99mysql.server

Chúng ta khởi động máy chủ

/etc/rcS.d/S99mysql.server start

Chúng ta có thể nhập vào cơ sở dữ liệu và thay đổi mật khẩu của người sử dụng root vì lý do an ninh (tham vấn http://dev.mysql.com/doc/refman/5.0/en/index.html để biết cú pháp).

/usr/local/mysql/bin/mysql

Bên trong, chúng ta có thể gõ:

USE mysql

Chúng ta đặt mật khẩu cho pirulo vào root của người sử dụng

UPDATE user SET Password=PASSWORD 'purilo' WHERE User='root';

FLUSH privileges

Trang 295/471

Page 296: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Để vào MySQL chúng ta sẽ phải gõ:

/usr/local/mysql/bin/mysql -u root -ppirulo

f) PHP (thay thế với các phiên bản phù hợp):

Các tiện ích cần thiết:

apt-get install libxml2-dev curl \

libcurl3-dev libjpeg-mmx-dev zlib1g-dev \

libpng12-dev

Với máy chủ Apache đã dừng ta có thể gõ:

cd /root

tar jxvf php-5.2.0.tar.bz2

cd php-5.2.0

Với tiền tố này chúng ta có thể chỉ định nơi mà chúng ta muốn cài đặt nó (tất cả trên một dòng):

./configure - - prefix = /usr/local/php5 - - enable -mbstring

--with-apxs2 = /usr/local/apache2/bin/apxs - -with-mysql = /

usr/local/mysql - -with-curl = /usr/include/curl - -with-

jpeg-dir = /usr/include - - with-zlib-dir = /usr/include - -

with-gd - -with-xml - -enable-ftp - -enable-bcmath

make

make

install cp php.ini-dist /usr/local/php5/lib/php.ini

Chúng ta sửa đổi Apache (/usr/local/apache2/conf/httpd.conf) trong phần được chỉ định:

<IfModule mime_module>

AddType application/x-httpd-php .php .phtml

AddType application/x-httpd-php-source .phps

Và cũng:

DirectoryIndex index.php index.html

Chúng ta khởi động lại máy chủ.

g) PHPAdmin

cd /usr/local/apache2/

Trang 296/471

Page 297: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

phpmyadmin được giải nén trong thư mục của apache2 (cẩn thận với các phiên bản).

tar jxvf /root/phpMyAdmin-2.9.1-all-languages.tar.bz2

mv phpMyadmin-2.9.1-all-languages phpmyadmin

cd phpmyadmin

cp config.sample.inc.php config.inc.php

Chúng ta cần sửa đổi tệp cấu hình (config.inc.php):

$cfg['blowfish_secret'] = 'pirulo';

Chúng ta loại bỏ người sử dụng và mật khẩu người sử dụng mặc định 2 dấu ngoặc kép

(') dấu này sau dấu khác:

$cfg['Servers'] [$i] ['controluser'] = '';

$cfg['Servers'] [$i] ['controlpass'] = '';

Chúng ta thay đổi apache (/usr/local/apache2/conf/httpd.conf) bổ sung vào <IfModule alias_module>

<IfModule alias_module>

Alias /phpmyadmin “/usr/local/apache2/phpmyadmin/”

<Directory “/usr/local/apache2/phpmyadmin/”>

Order allow, deny

Allow from all

</Directory>

Chúng ta khởi động lại máy chủ và chúng ta có thể gọi nó với http://localhost/phpadmin

Thông tin hơn nữa có thể đạt được từ những website tương ứng của từng ứng dụng và trong LWP.

Trang 297/471

Page 298: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.6. Dịch vụ ủy quyền proxy: Squid

Một máy chủ ủy quyền proxy (PS) được sử dụng để tiết kiệm băng thông kết nối, để cải thiện an ninh và gia tăng tốc độc lướt web.

Squid là một trong những PS chính, vì nó là nguồn mở, nên nó chấp nhận ICP (đặc tính cho phép trao đổi các gợi ý với những PS khác), SSL (đối với các kết nối an ninh giữa các máy ủy quyền) và hỗ trợ các đối tượng FTP, Gopher, HTTP và HTTPS (an ninh – secure). Việc vận hành của nó là đơn giản, nó lưu giữa những đối tượng được yêu cầu thường xuyên nhất trong RAM và những đối tượng được yêu cầu ít nhất trong một cơ sở dữ liệu trên đĩa. Các máy chủ Squid cũng có thể được cấu hình một cách có tôn ti trật tự để hình thành một cây các máy ủy quyền theo các yêu cầu. Có 2 cấu hình có thể:

1) Như một trình tăng tốc của httpd về hiệu năng được cải thiện đạt được của dịch vụ web.

2) Như một máy chủ lưu trữ ủy quyền để cho phép những người sử dụng của một tập đoàn sử dụng PS để đi ra Internet.

Ở chế độ đầu, nó hành động như một ủy quyền ngược, nó chấp nhận một yêu cầu của máy trạm, phục vụ đối tượng này nếu nó có, còn nếu không, yêu cầu nó và truyền nó lên máy trạm khi thực hiện, lưu nó lại cho lần sau. Trong lựa chọn 2 nó có thể được sử dụng như một sự kiểm soát để hạn chế các site nơi mà một kết nối tới Internet có thể có được hoặc để xác thực sự truy cập tại những thời điểm cụ thể trong ngày. Một khi được cài đặt (gói squid trong Debian, squid-cgi, squidguard hoặc squidtaild cũng có thể được cài đặt) 3 tệp sẽ được tạo ra: /etc/squid.conf (cấu hình), /etc/init.d/squid (khởi tạo) và /etc/logrotate.d/squid (để kiểm soát log).

7.6.1. Squid như một bộ tăng tốc cho http

Trong chế độ này, nếu máy chủ web trên cùng máy như PS, thì nó sẽ phải được cấu hình lại để tham dự vào những yêu cầu của cổng 81 (trong Apache, thay đổi cổng 80 cho cổng 81 trong httpd.conf). Tệp cấu hình (/etc/squid.conf) chứa một số lượng lớn các khoản mục đầu vào, nhưng ở đây chúng ta sẽ chỉ thấy những thứ cơ bản [Mou01]:

http_port 80

icp_port 0

hierarchy_stoplist cgi-bin \?

acl QUERY urlpath_regex cgi-bin \?

no_cache deny QUERY

Nơi nó nghe httpd

Nơi nó nghe ICP

cache_mem 100 MB

redirect_rewrites_host_header off

cache_replacement_policy lru

memory_replacement_policy lru

Bộ nhớ cho các đối tượng trong tiến trình

Trang 298/471

Page 299: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cache_dir ufs /var/spool/squid 100 16 256

Database

emulate_httpd_log on

Gõ và đặt nơi mà chúng ta có thể thấy cache của đĩa

acl all src 0.0.0.0/0.0.0.0

http_access allow all

cache_mgr root

cache_effective_user proxy

cache_effective_group proxy

httpd_accel_host 192.168.1.1

httpd_accel_port 81

logfile_rotate 0

log_icp_queries off

buffered_logs on

Truy cập cho tất cả

Và cho mọi thứ

Thư có trách nhiệm

UID

GID

Máy chủ web thực sự

Cổng

Theo cách này, lựa chọn httpd_accel_host giải hoạt khả năng của nó đang được chạy như việc lưu ủy quyền (proxy-caching). Để có thêm thông tin, hãy xem http://www.squid-cache.org/.

7.6.2. Squid như việc lưu trữ ủy quyền - (proxy - caching)

Bằng cách này, squid được sử dụng để kiểm soát truy cập Internet, khi sự truy cập được trao, thì đối tượng mới có thể được truy cập tới được. Trong trường hợp này, tệp cấu hình sẽ phải đưa vào những sửa đổi sau đây được bổ sung vào /etc/squid.conf:

acl localnet src 192.168.1.0/255.255.255.0

acl localnet src 127.0.0.1/255.255.255.255

acl Safe_ports port 80 443 210 70 21 102565535

alc CONNECT method CONNECT

acl all src 0.0.0.0/0.0.0.0

http_access allow localnet

http_access allow localhost

http_access deny

http_access deny CONNECT

http_access deny all

cache_emulate_httpd_log on

Trang 299/471

Page 300: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Sự khác biệt chính với chế độ khác là các dòng acl, trong đó trường hợp C các máy trạm lớp C 192.168.1.0 sẽ được phép truy cập tới PS, cũng tới IP của máy cục bộ localhost và những cổng khác mà chúng sẽ có khả năng truy cập các cổng Internet 80 (http), 443 (https), 210(whais), 70(gopher), và 21 (ftP), cũng, phương pháp kết nối này bị từ chối để tránh một kết nối từ bên ngoài tới PS và sau đó tất cả IP và các cổng qua PS bị từ chối. [Mou01] Để có thêm thông tin hãy xem tại http://www.squid-cache.org/ và cho một máy ủy quyền trong suốt tại http://tldp.org/HOWTO/TransparentProxy-1.html.

Trang 300/471

Page 301: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.7. OpenLDAP (LDAP)

LDAP có nghĩa là giao thức truy cập thư mục hạng nhẹ (lightweight directory access protocol) và là một giao thức cho việc truy cập các dữ liệu dựa trên một dịch vụ X.500. Nó được chạy trên TCP/IP và thư mục này là tương tự với một cơ sở dữ liệu chứa các thông tin dựa trên các thuộc tính. Hệ thống này cho phép các thông tin được tổ chức theo một cách thức an ninh và sử dụng các bản nhân bản để duy trì tính sẵn sàng của nó, đảm bảo sự gắn kết và sự xác minh của nó về các dữ liệu được truy cập - sửa đổi.

Dịch vụ này dựa trên mô hình máy trạm - máy chủ, nơi mà có một hoặc nhiều máy chủ chứa các dữ liệu; khi một máy trạm kết nối và yêu cầu thông tin, thì máy chủ trả lời bằng các dữ liệu hoặc một con trỏ trỏ tới máy chủ khác nơi mà nhiều thông tin hơn có thể được trích lọc ra, nhưng máy trạm sẽ chỉ thấy một thư mục của thông tin toàn cầu. [Mou01, Mal07].

dn: o=UOC, c=SP

or: UOC

objectclass: organization

dn: cn=Pirulo Nteum, o=UOC, c=SP

cn: Nteum

mail: [email protected]

objectclass: person

Để nhập và xuất các thông tin giữa các máy chủ ldap hoặc để mô tả một số lượng những thay đổi sẽ được áp dụng cho thư mục này, chúng ta sử dụng một định dạng được goại là LDIF (định dạng trao đổi dữ liệu LDAP - LDAP data interchange format). LDIF lưu trữ các thông tin theo tôn ti trật tự hướng vào các đối tượng mà chúng sau đó sẽ được chuyển đổi thành định dạng nội bộ của cơ sở dữ liệu. Một tệp LDIF có một định dạng tương tự như sau:

Mỗi khoản được xác định bằng một tên được chỉ định như một tên phân biệt được (DN). DN cấu tạo từ tên khoản cộng với một loạt các tên mà kết nối nó với tôn ti trật tự của thư mục và nơi có một lớp đối tượng objectclass, xác định các thuộc tính có thể được sử dụng trong khoản này. LDAP đưa ra một tập hợp cơ bản các lớp đối tượng: các nhóm (bao gồm các danh sách không được tổ chức của các đối tượng riêng rẽ hoặc các nhóm của các đối tượng), các vị trí (như quốc gia và mô tả của chúng), các tổ chức và con người. Một khoản cũng có thể thuộc về nhiều hơn một lớp đối tượng, ví dụ, một cá nhân được xác định bằng lớp person (con người), nhưng cũng có thể được xác định bằng các thuộc tính của các lớp inetOrgPerson, groupOfNames, và organization. Cấu trúc của các đối tượng máy chủ (được gọi là schema) xác định những thuộc tính nào được phép cho một đối tượng của một lớp (được xác định trong /etc/ldap/schema như là openldap.schema, corba.schema, nis.schema, inetorgperson.schema...).

Tất cả các dữ liệu được trình bày như một cặp thuộc tính = giá trị (attribute = value) nơi mà thuộc tính là mô tả của thông tin mà nó chứa, ví dụ, thuộc tính được sử dụng để lưu trữ tên của một người là

Trang 301/471

Page 302: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

commonName, hoặc cn, nói cách khác cho người có tên là Pirulo Nteum, nó sẽ được trình bày bằng cn: Pirulo Nteum sẽ liên quan tới những thuộc tính khác của lớp person như givenname: Pirulo surname: Nteum mail: [email protected]. Các lớp có bổn phận và các thuộc tính tùy chọn và mỗi thuộc tính có một cú pháp có liên quan chỉ ra dạng nào của thông tin thuộc tính này có, ví dụ, bin (nhị phân), ces (chuỗi chính xác các ký tự [case exact string], phải trùng khớp khi tìm kiếm), cis (trường hợp bỏ qua chuỗi [case ignore string], trường hợp có thể được bỏ qua khi tìm kiếm), tel (chuỗi số điện thoại [telephone number string], bỏ qua các ký tự trống và '-'), dn (tên phân biệt được [distinguished name]). Một ví dụ của một tệp trong định dạng LDIF có thể là:

dn: dc = OUC, dc = com

objectclass: top

objectclass: organizationalUnit

dn: ou = gruops, dc = UOC, dc = com

objectclass: top

objectclass: organizationalUnit

ou: people

dn: cn = Pirulo Nteum, ou = people, dc = UOC, dc = com

cn: Pirulo Nteum

sn: Nteum

objectclass: top

objectclass: person

objectclass: posixAccount

objectclass: shadowAccount

uid: pirulo

userpassword: {crypt}p1pss2ii(0pgbs*do&@ = )eksd

uidnumber: 104 gidnumber: 100 gecos: Pirulo Nteum loginShell: /bin/bash

homeDirectory: /home/pirulo

shadowLastChange: 10877

shadowMin: 0

shadowMax: 999999

shadowWaring: 7 shadowInactive: -1

shadowExpire: -1

shadowFlag: 0

Trang 302/471

Page 303: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

dn: cn = unixgroup, ou = groups, dc = UOC, dc = com

objectclass: top

objectclass: posixGroup

cn: unixgroup

gidnumber: 200

memberuid: pirulo other-user

memberid:

Các dòng dài có thể được tiếp tục ở dưới bắt đầu với một khoảng trống hoặc một tab (định dạng của LDIF). Trong trường hợp này, cơ sở DN đã được xác định cho cơ quan dc = UOC, dc = com, có chứa 2 đơn vị con: people và groups (người và nhóm). Sau đó nó mô tả một người sử dụng thuộc về people và group. Khi đã chuẩn bị tệp với các dữ liệu, chúng ta cần nhập nó vào máy chủ sao cho nó sẵn sàng cho các máy trạm LDAP. Có những công cụ cho việc chuyển đổi các dữ liệu của các cơ sở dữ liệu khác nhau cho định dạng LDIF. [Mal07].

Trong Debian, chúng ta cần cài đặt gói slapd là máy chủ OpenLDAP. Trong khi cài đặt, nó sẽ hỏi một số câu hỏi như: Phương pháp cài đặt thư mục: auto (tự động); những mở rộng cho thư mục [máy chủ miền, site, cơ quan]: máy chủ, miền, mật khẩu của quản trị viên; nhân bản những thay đổi cục bộ tới các máy chủ khác: không. Cài đặt này sẽ tạo ra một tệp cấu hình trong /etc/ldap/slapd.conf và cơ sở dữ liệu trong /var/lib/ldap. cũng có tệp khác /etc/ldap/ldap.conf (hoặc ~/.ldaprc), là tệp cấu hình được sử dụng cho việc cài đặt các giá trị mặc định khi các máy trạm ldap được chạy. Ở đây nó chỉ ra cơ sở dữ liệu nào, cái nào là máy chủ ldap, các thông số an ninh, kích thước của việc tìm kiếm …

Tệp cấu hình máy chủ /etc/ldap/slapd.conf (xem man slap.con) cấu tạo từ những phần khác nhau, mỗi phần được chỉ ra bằng một trong những chỉ dẫn sau: toàn thể, nền tảng đặc biệt và cơ sở dữ liệu đặc biệt, và theo trật tự đó. Chỉ dẫn tổng thể (global) là về bản tính tự nhiên chung và áp dụng cho tất cả các nền tảng - backends (các cơ sở dữ liệu) và xác định các câu hỏi chung như các quyền truy cập, các thuộc tính, thời gian chờ đợi, các sơ đồ … Chỉ dẫn nền tảng đặc biệt - backend specific guideline xác định các thuộc tính cho nền tảng đặc biệt mà nó xác định (bdb, dnssrv, ldbm...), và chỉ dẫn cơ sở dữ liệu đặc biệt - database specific guideline xác định các thuộc tính đặc biệt cho cơ sở dữ liệu mà nó xác định. Để khởi động máy chủ, chúng ta cần chạy:

/etc/init.d/slapd start (ho �c stop � � d �ng nó)

Trong khi cài đặt, hệ thống sẽ tạo ra các đường liên kết đúng đắn cho việc chạy nó sau khi khởi động.

7.7.1. Việc tạo và duy trì cơ sở dữ liệu

Có 2 phương pháp cho việc vào các dữ liệu trong cơ sở dữ liệu của LDAP. Phương pháp đầu là dễ dàng và phù hợp với số lượng dữ liệu nhỏ, nó là tương tác và chúng ta cần sử dụng các công cụ như ldapadd (hoặc bất kỳ thứ gì khác như trình duyệt Ldap http://www.iit.edu/~gawojar/ldap/) để tạo những khoản mới. Phương pháp thứ 2 cần phải được làm việc phi trực tuyến và nó phù hợp cho những dữ liệu lớn và sử dụng lệnh slapadd được đưa vào với slapd. Vì nó là chung hơn, nên chúng ta sẽ mô tả ngắn gọn

Trang 303/471

Page 304: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

phương pháp thứ 2 này, nơi mà trước tiên phải kiểm tra là nó có chứa các thuộc tính sau đây trong slapd.conf: hậu tố (đỉnh của thư mục, ví dụ “o = UOC, c = SP”); thư mục /var/lib/ldap (thư mục nơi mà các chỉ số sẽ được tạo ra và có thể viết slapd). Chúng ta cũng phải kiểm tra xem cơ sở dữ liệu này có chứa các định nghĩa của các chỉ số mà chúng ta muốn sử dụng hay không:

index cn, sn, uid

index objectClass pres, eq

Đã xác định được slapd.conf, chúng ta phải chạy lệnh:

slapadd -l entry-f configuration {-d level} {-n whole | -b suffix}

Các đối số là:

-l: tệp trong định dạng LDIF.

-f: tệp cấu hình máy chủ nơi mà nó chỉ định cách tạo ra các chỉ số.

-d: mức của việc gỡ rối.

-n: Nro của cơ sở dữ liệu, nếu chúng ta có hơn 1.

-b: chỉ định cơ sở dữ liệu nào cần phải được sửa đổi.

Có những lệnh khác với slapd như slapindex, cho phép các chỉ số sẽ được tạo ra, và slapcat, cho phép biến cơ sở dữ liệu thành một tệp trong định dạng LDIF.

Trang 304/471

Page 305: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

7.8. Các dịch vụ tệp (NFS)

Hệ thống NFS cho phép một máy chủ xuất một hệ thống tệp sao cho nó có thể được sử dụng một cách tương tác từ một máy trạm. Dịch vụ này cấu tạo từ một máy chủ nfsd và một máy trạm (mountd) có thể chia sẻ một hệ thống tệp (hoặc một phần của nó) thông qua mạng.

Trong Debian, hãy cài đặt apt-get install nfs-common portmap cho máy trạm, trong khi máy chủ cần:

apt-get install nfs-kernel -server nfs-common portmap.

Máy chủ (trong Debian) khởi động thông qua các script nfscommon và nfs-kernel-server trong /etc/init.d (và các liên kết phù hợp trong /etc/rcX.d).

Máy chủ sử dụng một tệp (/etc/exports) để quản lý truy cập và kiểm soát các hệ thống tệp sẽ được truy cập ở xa. Trên máy trạm, người sử dụng root (hoặc người sử dụng khác thông qua lệnh sudo) có thể tải lên hệ thống ở xa bằng việc sử dụng lệnh:

mount Ipserver: remote-directory local_directory

và tại thời điểm đó, thư mục ở xa (remote-directory) sẽ được nhìn thấy bên trong thư mục cục bộ (phải tồn tại trước khi chạy mount). Nhiệm vụ này trong máy trạm có thể được tự động hóa bằng việc sử dụng tệp mount tự động (/etc/fstab) gồm một dòng; ví dụ:

pirulo.remix.com: /usr/local /pub nfs rsize=8192, wzise=8192, timeo=14

Câu này chỉ rằng thư mục /usr/local của host pirulo.remix.com sẽ được kích hoạt (mount) trong thư mục cục bộ /pub. Các thông số rsize, wzise là kích cỡ của các khối đọc và ghi, timeo là thời gian timeout RPC (nếu 3 giá trị này không được chỉ định, thì các giá trị mặc định được sử dụng).

Tệp /etc/exports phục vụ như ACL (danh sách kiểm soát truy cập - access control list) của các hệ thống tệp có thể được xuất sang các máy trạm. Mỗi dòng chứa một hệ thống tệp sẽ được xuất theo sau với các máy trạm có thể kích hoạt nó lên được, được tách biệt bằng các khoảng trống. Mỗi máy trạm có thể có một tập hợp các lựa chọn có liên quan tới nó để sửa đổi cách hành xử (xem exports man để có danh sách chi tiết về các lựa chọn). Một ví dụ của điều này có thể là:

# Ví dụ về /etc/exports

// master(rw) trusty(rw.no_root_squash)

/projects proj*.local.domain(rw)

/usr*.local.domain(ro) @trusted(rw)

/pub (ro, insecure, all_squash)

/home 195.12.32.2 (rw, no_root_squash) www.first.com(ro)

/user 195.12.32.2/24 (ro, insecure)

Trang 305/471

Page 306: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Dòng đầu tiên xuất toàn bộ hệ thống tệp (/) tới máy chính (master) và tin cậy trong chế độ đọc/ghi (rw). Hơn nữa, đối với sự tin cậy không có uid squashing (root của máy trạm sẽ truy cập như root tới các tệp root của máy chủ, nói cách khác, 2 root là tương đương bất chấp là đang từ các máy khác nhau; phù hợp cho các máy không có đĩa). Các dòng 2 và 3 chỉ những ví dụ của '*' và các nhóm mạng (netgroups) (được chỉ định bằng chữ @). Dòng thứ 4 xuất thư mục /pub sang bất kỳ máy nào trên thế giới, chỉ đọc, cho phép truy cập tới các máy trạm NFS mà không sử dụng một cổng được để dành cho NFS (lựa chọn không an ninh - insecure) và mọi thứ được thực thi bằng người sử dụng nobody (lựa chọn all squash). Dòng thứ 5 chỉ định một máy trạm cho IP của nó và dòng 6 y hệt nhưng với một mặt nạ mạng (/24) và với những lựa chọn giữa các ngoặc đơn () và không có dấu trống nào. Chỉ có các dấu trống giữa các máy trạm là được phép. Điều quan trọng để nhớ trong đầu là có 3 phiên bản của NFS (V2, V3 và gần đây là V4). Phiên bản phổ biến nhất là V3 và trong một số cài đặt V2. Nếu từ một máy trạm V3 chúng ta kết nối tới một máy chủ V2, thì tình trạng này phải được chỉ ra với một thông số.

7.8.1. Máy chủ Wiki

Một wiki (wiki trong tiếng Ha-oai là “nhanh”) là một website cộng tác có thể được nhiều người sử dụng soạn thảo mà họ có thể tạo, soạn, xóa hoặc sửa đổi nội dung của trang web một cách dễ dàng, nhanh chóng và tương tác; những khả năng này làm cho wiki thành một công cụ hữu hiệu cho việc viết một cách cộng tác. Công nghệ wiki cho phép các trang web được lưu trữ trong một máy chủ công cộng (các trang wiki) được viết theo một cách thức cộng tác thông qua một trình duyệt, sử dụng các chú giải đơn giản cho việc đưa ra định dạng, tạo các đường liên kết …, lưu một lưu ký log của những thay đổi làm cho có khả năng để phục hồi một cách dễ dàng bất kỳ tình trạng nào trước đó của trang. Khi ai đó soạn thảo một trang wiki, những thay đổi của nó xuất hiện ngay lập tức trên web, mà không có việc truyền qua bất kỳ dạng rà soát lại nào trước đó. Wiki cũng có thể tham chiếu tới các trang siêu văn bản, có thể được rà soát lại và soạn sửa lại bởi bất kỳ ai (định nghĩa của Wikipedia). Debian có wiki của nó trên http://wiki.debian.org/ và FC trên http://fedoraproject.org/wiki/ và cả 2 cùng dựa trên Moin Moin (http://moinmoin.wikiwikiweb.de/). MoinMoin là một WikiClone của Python có khả năng nhanh chóng khởi tạo wiki của riêng mình; nó chỉ cần một máy chủ web và ngôn ngữ Python được cài đặt.

Trong http://moinmoin.wikiwikiweb.de/MoinMoinPackages/DebianLinux chúng ta có thể thấy những chỉ dẫn chi tiết cho việc cài đặt Moin Moin trên Debian, nhưng, về cơ bản, là để: 1) Cài đặt apache 2 và mod_python; 2) cấu hình Apache để ghi lại mã nguồn của MoinMoin; 3) cài đặt gói moinmoin; 4) cấu hình MoinMoin và 5) khởi động lại Apache. Một ví dụ cấu hình:

apt-get install python-moinmoin

mkdir /var/www/mywiki

cp -r /usr/share/moin/data /usr/share/moin/underlay \

/usr/share/moin/server/moin.cgi /var/www/mywiki

chown -R www-data: www-data /var/www/mywiki

chmod -R g+w /var/www/mywiki

• Cấu hình apache2 bằng việc bổ sung /etc/apache2/conf.d/wiki (hoặc bất kỳ ở đâu có tệp cấu

Trang 306/471

Page 307: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hình):

Alias/wiki/”/usr/share/moin/htdocs/”

<Location /mywiki>

SetHandler python-program

PythonPath “['/var/www/mywiki', '/etc/moin']+sys.path”

PythonHandler MoinMoin.request::RequestModPy.run

PythonDebug On

</Location>

• Restart apache2:

/etc/init.d/apache2 reload

• Cấu hình cho MoinMoin: Soạn sửa /etc/moin/farmconfig.py (nhiều wiki)

wikis = [

(“mywiki”, r”^yoursite.com/mywiki”.*$),

]

• Chúng ta cũng có thể sử dụng (chỉ một wiki):

wiki = [

(“mywiki”, r”.*”)

]

• Cũng trong /etc/moin/farmconfig.py hãy loại bỏ ghi chú cho data_dir và data_underlay_dir (một cho từng wiki) và sao chép tệp này.

cp /etc/moin/moinmaster.py /etc/moin/mywiki.py

• Sau đó soạn sửa /etc/moin/mywiki.py và thay đổi:

sitename = u'MyWiki'

data_dir = '/var/www/mywiki/data'

data_underlay_dir = '/var/www/mywiki/underlay'

Wiki sẽ được cài đặt trên http://yoursite.com/mywiki/

Trang 307/471

Page 308: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Cấu hình một máy chủ DNS như cache và với miền riêng của nó.

2) Cấu hình một máy chủ/máy trạm DNS với 2 máy xuất các thư mục của người sử dụng máy chủ bằng NFS.

3) Cấu hình một máy chủ SSH để truy cập từ máy khác mà không cần mật khẩu.

4) Cấu hình một máy chủ Apache + SSL + PHP + MySQL + PHPAdmin để thấy một cách trực quan các trang cá nhân của người sử dụng.

5) Tạo và cấu hình một hệ thống thư điện tử thông qua Exim, fetchmail, SpamAssassin và một máy chủ IMAP cho việc nhận thư từ bên ngoài và có khả năng để đọc chúng từ một máy ở xa với trình máy trạm của Mozilla (Thunderbird).

6) Cài đặt MoinMoin Wiki và tạo một tập hợp các trang để kiểm tra nó làm việc.

Trang 308/471

Page 309: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu và thông tin khác

[Debc, LPD03b, Ibi]

http://tldp.org/HOWTO/DNS-HOWTO-7.hmtl

http://tldp.org/HOWTO/NIS-HOWTO/verification.html

Squid proxy server

Proxy Cache: http://ww.squid-cache.org/

Transparent Proxy: http://tldp.org/HOWTO/TransparentProxy-1.html

Proftpd: http://www.debian-administration.org/articles/228

PureFtpd: http://www.debian-administration.org/articles/383

Exim: http://www.exim.org/docs.html

Mutt: http://www.mutt.org/

ProcMail: http://www.debian-administration.org/articles/242

LWP: http://www.lawebdelprogramador.com/temas/tema_stablephpapachemysql.php

Moin Moin: (http://moinmoin.wikiwikiweb.de/)

Moin Moin + Debian:

http://moinmoin.wikiwikiweb.de/MoinMoinPackages/DebianLinux

Apache2 + SSL: http://www.debian-administration.org/articles/349

Trang 309/471

Page 310: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8 Quản trị dữ liệu

Remo Suppi BoldritoPID_00148469

Data administration

Remo Suppi BoldritoPID_00148469

Trang 310/471

Page 311: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Một khía cạnh quan trọng của một hệ điều hành là ở đâu và bằng cách nào các dữ liệu được lưu giữ. Khi tính sẵn sàng của dữ liệu cần phải là có hiệu quả, thì cần thiết phải sử dụng các cơ sở dữ liệu (DB).

Một cơ sở dữ liệu là một tập hợp các dữ liệu có cấu trúc có thể được tổ chức theo một cách đơn giản và hiệu quả bằng hệ quản trị cơ sở dữ liệu. Các cơ sở dữ liệu hiện hành được biết như là quan hệ, vì các dữ liệu có thể được lưu trữ trong các bảng khác nhau để dễ dàng cho việc quản lý và quản trị. Vì lý do này và với quan điểm để chuẩn hóa sự truy cập vào cơ sở dữ liệu, một ngôn ngữ được biết như là ngôn ngữ truy vấn có cấu trúc SQL (Structured Query Language) được sử dụng. Ngôn ngữ này cho phép tương tác mềm dẻo và nhanh chóng bất chấp các ứng dụng cơ sở dữ liệu.

Hiện tại, cách được sử dụng thông dụng nhất là truy cập một cơ sở dữ liệu (DB) từ một ứng dụng chạy các mã SQL. Ví dụ, rất phổ biến để truy cập một DB thông qua một trang web có chứa mã của PHP hoặc Perl được nhúng trong trang được chạy, DB được truy cập và trang được tạo ra với nội dung tĩnh và nội dung được trích ra từ DB sau đó được gửi tới máy trạm. Hai trong số các ví dụ về cơ sở dữ liệu phù hợp nhất hiện nay là những gì được PostgreSQL và MySQL cung cấp, chúng là những DB mà chúng ta sẽ phân tích.

Tuy nhiên, khi làm việc về phát triển phần mềm, có những khía cạnh khác có liên quan tới dữ liệu để xem xét, như tính hợp lệ và môi trường của chúng (đặc biệt nếu có một nhóm người sử dụng làm việc trên cùng những dữ liệu). Có một số gói cho việc kiểm soát phiên bản (rà soát lại), nhưng mục đích của tất cả chúng là để tạo điều kiện cho sự quản trị các phiên bản khác nhau của từng sản phẩm được phát triển cùng với những đặc tả kỹ thuật tiềm tàng được thực hiện cho bất kỳ máy trạm đặc biệt nào.

Kiểm soát phiên bản được đưa ra để kiểm soát các phiên bản khác nhau của mã nguồn. Tuy nhiên, những khái niệm y hệt áp dụng cho những môi trường khác nữa và không chỉ cho mã nguồn mà còn cho các tài liệu, ảnh … Mặc dù một hệ thống kiểm soát phiên bản có thể được triển khai bằng tay, thì được khuyến cáo cao độ nên có những công cụ tạo điều kiện cho sự quản lý này (cvs, Subversion, SourceSafe, Clear Case, Darcs, Plastic SCM, RCS …).

Trong chương này, chúng ta sẽ mô tả cvs (hệ thống kiểm soát phiên bản – version control system) và Subversion cho việc kiểm soát và quản trị nhiều phiên bản tệp, tự động hóa lưu trữ, việc đọc, xác định và trộn các phiên bản khác nhau. Những chương trình này là hữu dụng khi một văn bản được rà soát lại thường xuyên và có mã nguồn, những tệp chạy được, các thư viện, tài liệu, đồ họa, bài viết và các tệp khác. [Pos03e, Mys, Ced]

Lý do đằng sau việc sử dụng cvs và Subversion là vì cvs là một trong những gói có truyền thống được sử dụng phổ biến nhất và Subversion là một phần mềm hệ thống kiểm soát phiên bản được thiết kế đặc biệt để thay thế cvs và để giải quyết một số sự thiếu hụt của cvs. Subversion cũng được biết như svn vì đây là tên của công cụ dòng lệnh. Một tính năng quan trọng của Subversion là việc, không giống như CVS, các tệp với các phiên bản không có một số rà soát lại độc lập. Thay vào đó, toàn bộ kho này có một số phiên bản duy nhất xác định một tình trạng được chia sẻ của tất cả các tệp của kho tại một thời điểm nhất định nào đó theo thời gian.

Trang 311/471

Page 312: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.1. PostgreSQL

Ngôn ngữ cơ sở dữ liệu (DB) PostgreSQL sử dụng một mô hình máy trạm/máy chủ [Posa]. Một phiên của PostgreSQL cấu tạo từ một loạt các chương trình cộng tác:

• Một tiến trình của máy chủ điều khiển các tệp DB chấp nhận các kết nối từ các máy trạm và thực hiện các hành động được các máy trạm đó yêu cầu lên DB. Chương trình của máy chủ trong PostgreSQL được gọi là postmaster (trưởng bưu điện).

• Ứng dụng của máy trạm (mặt tiền – frontend) là những gì yêu cầu các hoạt động phải được thực hiện trên DB, có thể là cực kỳ khác nhau; ví dụ: các công cụ ở chế độ văn bản, đồ họa, các máy chủ web...

Nhìn chung, máy trạm và máy chủ là về những máy hosts khác nhau và giao tiếp thông qua kết nối TCP/IP. Máy chủ có thể chấp nhận nhiều yêu cầu từ các máy trạm khác nhau, kích hoạt một tiến trình sẽ tham gia vào yêu cầu của người sử dụng một cách hoàn toàn và minh bạch đối với mỗi kết nối. Có một tập hợp các nhiệm vụ có thể được người sử dụng hoặc người quản trị thực hiện khi phù hợp, và chúng ta mô tả như sau.

8.1.1. Nên tạo DB như thế nào?

Hành động đầu tiên cho việc kiểm tra liệu máy chủ DB có truy cập được hay không là tạo ra một cơ sở dữ liệu. Máy chủ PostgreSQL có thể điều khiển nhiều DB và được khuyến cáo sử dụng mỗi DB khác nhau cho từng dự án. Để tạo một cơ sở dữ liệu, chúng ta sử dụng lệnh createdb từ dòng lệnh của hệ điều hành. Lệnh này sẽ tạo ra một thông điệp CREATE DATABASE nếu mọi thứ là đúng. Quan trọng để tính đối với hành động này là sẽ cần phải có một người sử dụng được phép để tạo ra một cơ sở dữ liệu. Trong phần về cài đặt (1.4) chúng ta sẽ thấy có một người sử dụng, người mà cài đặt cơ sở dữ liệu, người sẽ có các quyền để tạo các cơ sở dữ liệu và tạo ra những người sử dụng mới mà họ, tới lượt mình, có thể tạo ra những cơ sở dữ liệu. Thông thường (và trong Debian) thì người sử dụng mặc định là postgres. Vì thế, trước khi chạy lệnh createdb, cần chạy postgres (nếu chúng ta là người sử dụng root, thì không cần một mật khẩu, nhưng bất kỳ ai khác sẽ cần mật khẩu của postgres) và sau đó sẽ có khả năng chạy createdb. Để tạo một DB có tên là nteumdb:

createdb nteumdb

Nếu không thể thấy lệnh này, thì có thể là đường dẫn không được cấu hình đúng hoặc DB không được

cài đặt đúng. Có thể thử với đường dẫn đầy đủ (/usr/local/pgsql/bin/createdb nteumdb), nó sẽ phụ thuộc vào cài đặt đặt thù của chúng ta, hoặc kiểm tra các tham chiếu để giải quyết vấn đề. Các thông điệp khác có thể là could not connect to server (không thể kết nối tới máy chủ) khi máy chủ không được khởi tạo hoặc CREATE DATABASE: permission denied (quyền bị từ chối) khi chúng ta không có

đủ thẩm quyền để tạo DB. Để loại trừ DB này, có thể sử dụng lệnh dropdb nteumdb.

Trang 312/471

Page 313: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.1.2. Truy cập một DB như thế nào?

Sau khi đã tạo ra DB, chúng ta có thể truy cập nó theo nhiều cách:

• Bằng việc chạy một lệnh tương tác gọi là psql, cho phép chúng ta soạn sửa và chạy lệnh SQL.

• Chạy một giao diện đồ họa như PgAccess hoặc một bộ với hỗ trợ ODBC cho việc tạo và điều khiển các DB.

• Viết một ứng dụng có sử dụng một trong những ngôn ngữ được hỗ trợ, ví dụ như PHP, Perl, Java, … (xem Chỉ dẫn của các Lập trình viên PostgreSQL 7.3).

Vì những lý do về tính đơn giản, chúng ta sẽ sử dụng psql để truy cập DB, nghĩa là sẽ phải vào psql

nteumdb: một số thông điệp sẽ xuất hiện với phiên bản và thông tin và một dấu nhắc tương tự như đối với nteumdb =>. Chúng ta có thể chạy một số lệnh SQL sau:

SELECT version();

or also

SELECT current date;

psql cũng có các lệnh không phải là SQL và chúng bắt đầu bằng '\', ví dụ như \h (liệt kê tất cả các lệnh có sẵn) hoặc \q để kết thúc.

Ví dụ

Access the DB nteumdb:

psql nteumdb [enter]

nteumdb =>

8.1.3. Ngôn ngữ SQL

Mục tiêu của phần này không phải là cung cấp một sách chỉ dẫn về SQL, mà sẽ phân tích một số ví dụ để thấy những khả năng của ngôn ngữ này. Chúng là những ví dụ mà đi với phân phối PostgreSQL

trong thư mục InstallationDirectory/src/tutorial (cd InstallationDirectory/ src/tutorial) và chạy

psql -s nteumdb và ở trong \i basics.sql. Thông số \i đọc các lệnh của tệp được chỉ định (basics.sql trong trường hợp này).

PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS), có nghĩa là nó quản lý các dữ liệu được lưu trữ trong các bảng. Mỗi bảng có một số nhất định các hàng và cột và mỗi cột chứa một dạng dữ liệu nhất định nào đó. Các bảng được nhóm trong một DB và một máy chủ duy nhất điều khiển tập hợp các DB (tập hợp đầy đủ được gọi là một cụm cơ sở dữ liệu).

Trang 313/471

Xem thêm

Để truy cập DB, máy chủ cơ sở dữ liệu phải đang chạy. Khi cài đặt PostgreSQL thì các liên kết phù hợp được tạo ra sao cho máy chủ được khởi tạo khi máy tính khởi động. Để có thêm chi tiết, hãy tham vấn phần về cài đặt (1.4).

Page 314: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Để tạo, ví dụ, một bảng với psql, hãy chạy:

CREATE TABLE weather {

city varchar (80),

min_temp int,

max_temp int,

real rain,

day date

};

Ví dụ

Create table. Inside psql:

CREATE TABLE NameTB (var1 type, var2 type, …);

Lệnh này kết thúc khi chúng ta gõ ';' và chúng ta có thể sử dụng các dấu trống và các tab một cách tự do, varchar(80) chỉ một cấu trúc dữ liệu có thể lưu giữ tới 80 ký tự (trong trường hợp này). Đây là dạng đặc biệt của PostgreSQL.

Để xóa bảng:

DROP TABLE table_name;

Chúng ta có thể vào các dữ liệu theo 2 cách, cách đầu là vào tất cả các dữ liệu của bảng và cách 2 là chỉ định các biến và các giá trị mà chúng ta muốn sửa đổi:

INSERT INTO weather VALUES ('Barcelona', 16, 37, 0.25, '2007-03-19');

INSERT INTO INTO weather (city, min_temp, max_temp, rain, day)

VALUES ('Barcelona', 16, 37, 0.25, '2007-03-19'); Phương pháp này có thể là đơn giản cho số lượng nhỏ các dữ liệu, nhưng khi một số lượng lớn các dữ liệu phải được đưa vào, thì nó có thể được sao chép từ một tệp với câu:

COPY weather FROM '/home/user/time.txt'; (tệp này phải ở trên máy chủ, không ở trên máy trạm).

Để xem xét một bảng, chúng ta có thể gõ:

SELECT * FROM weather;

trong đó * có nghĩa là tất cả các cột.

Ví dụ

• Vào các dữ liệu cho bảng. Vào trong psql:

INSERT INTO TBName (ValueVar1, ValueVar2, …);

Trang 314/471

Ví dụ

Ví dụ thứ 2 có thể là:

CREATE TABLE city (

name varchar (80),

place

point

);

Khuyến cáo đọc

Khuyến cáo đọc chương 3 của PostgreSQL về các đặc tính tiên tiến (các kiểu nhìn [Views], các khóa ngoại [Forreign Keys], các giao dịch [Transactions], http://www.postgresql.org/docs/8.2/static/tutorial-advanced.html [Pos03d]

Page 315: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Dữ liệu từ một tệp. Vào trong psql:

COPY TBName FROM 'FileName';

• Dữ liệu trực quan. Vào trong psql:

SELICT * FROM TBName;

Những ví dụ về các lệnh phức tạp hơn (trong psql) có thể là:

• Trực quan cột city sau khi gõ:

SELECT city, (max_temp + min_temp)/2 AS average_temp, date FROM weather;

• Trực quan mọi thứ nơi mà biểu thức logic được thỏa mãn:

SELECT * FROM weather WHERE city = 'Barcelona'

AND rain \verb+>+ 0.0;

• Các bảng liên kết:

SELECT * FROM weather, city WHERE city = name;

• Các hàm, trong trường hợp cực đại maximum:

SELECT max(min_temp) FROM weather;

• Các hàm lồng nhau:

SELECT city FROM weather WHERE min_temp = (SELECT max(min_temp) FROM weather):

• Sửa đổi có chọn lọc:

UPDATE weather SET max_temp = max_temp 2, min_temp = min_temp 2 WHERE day > '1999128';

• Xóa đăng ký:

DELETE FROM weather WHERE city = 'Sabaell';

8.1.4. Cài đặt PostgreSQL

Bước này là cần thiết cho những người quản trị DB [Posa]. Chức năng của người quản trị DB bao gồm việc cài đặt phần mềm, khởi tạo và cấu hình, quản trị những người sử dụng, DB và các nhiệm vụ duy trì DB.

Cơ sở dữ liệu có thể được cài đặt theo 2 cách: thông qua các tệp nhị phân của các phát tán, là không khó, vì các script của các phát tán triển khai tất cả các bước cần thiết cho việc tạo DB hoạt động được, hoặc thông qua mã nguồn, sẽ phải được biên dịch và cài đặt. Trong trường hợp đầu, có thể sử dụng kpackage (Debian) hoặc apt-get. Trong trường hợp thứ 2, khuyến cáo luôn đi tới nguồn (hoặc tới một kho gương soi của phát tán gốc). Điều quan trọng để nhớ trong đầu là việc cài đặt từ mã nguồn sau đó sẽ được để ra ngoài DB của phần mềm được cài đặt và những lợi ích của việc quản trị phần mềm được đưa ra, ví dụ, bởi apt-cache hoặc apt-get sẽ bị mất.

Cài đặt từ mã nguồn từng bước một:

• Trước tiên chúng ta cần có phần mềm từ site (x.x là phiên bản có sẵn) http://www.postgresql.org/download/ và giải nén nó (x.x.x là số phiên bản 8.2.3 vào lúc có sự rà

Trang 315/471

Page 316: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

soát lại này):

gunzip postgresql -x.x.x.tar.gz

tar xf postgresql -7.3.tar

Thay đổi thư mục của postgresql và cấu hình nó với ./configure.

Hoàn tất nó với gmake, kiểm tra sự biên dịch với gmake check và cài đặt nó với gmake install (mặc định, sẽ cài nó vào trong /usr/local/pgsql).

8.1.4.1. Sau cài đặt

Khởi tạo các biến, trong bash, sh, ksh:

LD_LIBRARY_PATH = /usr/local/pgsql/lib;

PATH = /usr/local/pgsql/bin:$PATH;

export LD_LIBRARY_PATH PHTH;

hoặc, trong csh:

setenv LD_LIBRARY_PATH /usr/local/pgsql/lib;

set path = (/usr/local/pgsql/bin $path)

Được khuyến cáo định vị sự khởi tạo này trong scripts cấu hình của người sử dụng, ví dụ /etc/profile hoặc .bashrc đối với bash. Để có sự truy cập tới các sách chỉ dẫn, cần khởi tạo biến MANPATH theo cùng cách:

MANPATH = /usr/local/pgsql/man:$MANPATH;

export MANPATH

Một khi DB được cài đặt, sẽ cần phải tạo ra một người sử dụng sẽ điều khiển các cơ sở dữ liệu (được khuyến cáo tạo một người sử dụng khác với người sử dụng root sao cho không có kết nối với những dịch vụ khác của máy), ví dụ, người sử dụng postgres có sử dụng lệnh useradd, ví dụ thế.

Tiếp theo, sẽ cần tạo một vùng lưu trữ cho các cơ sở dữ liệu (không gian duy nhất) trên đĩa, sẽ là một

thư mục, ví dụ /usr/local/pgsql/data. Vì mục đích này, hãy chạy initdb -D /usr/local/pgsql/data, được kết nối khi người sử dụng được tạo ra trong điểm ở trên. Có thể nhận được một thông điệp rằng thư mục không thể tạo ra được vì không có các quyền, nghĩa là trước hết sẽ phải tạo ra thư mục và sau đó nói cho DB đó là thư mục nào; như là root, phải gõ, ví dụ:

mkdir /usr/local/pgsql/data

chown postgres /usr/local/pgsql/data

su postgres

initdb -D /usr/local/pgsql/data

Trang 316/471

Page 317: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Khởi tạo máy chủ (được gọi là postmaster), để làm thế, hãy sử dụng:

postmaster -D /usr/local/pgsql/data

để chạy trong chế độ chủ động (ở mặt nền – foreground); và để chạy trong chế độ tiêu cực thụ động (ở mặt nền – background), hãy sử dụng postmaster -D/usr/local/pgsql/data <logfile 2> &1 &.

Sự định tuyến lại được thực hiện để lưu trữ các lỗi của máy chủ. Gói này cũng đưa vào một script (pg_ctl) sao cho không cần phải biết tất cả cú pháp của postmaster để chạy nó:

/usr/local/pgsql/bin/pg_ctl start -l logfile \

-D /usr/local/pgsql/data

Có thể bỏ qua việc chạy máy chủ theo các cách khác nhau, với pg-ctl, ví dụ, hoặc trực tiếp sử dụng:

kill -INT 'head -1 /usr/local/pgsql/data/postmaster.pid'

8.1.4.2. Những người sử dụng DB

Những người sử dụng DB là hoàn toàn khác đối với những người sử dụng hệ điều hành. Trong một số trường hợp, có thể thú vị để duy trì sự tương ứng, nhưng điều đó là không cần thiết. Những người sử dụng này là cho tất cả các DB phục vụ cho những kiểm soát, không phải cho từng DB. Để tạo ra một người sử dụng, hãy chạy câu SQL sau:

CREATE USER name

Để xóa những người sử dụng:

DROP USER name

Cũng có thể gọi các chương trình createuser và dropuser từ dòng lệnh. Có một người sử dụng mặc định gọi là postgres (bên trong DB), là những gì sẽ cho phép chúng ta tạo phần còn lại (để tạo những người

sử dụng mới từ psql -U postgres nếu người sử dụng của hệ điều hành được sử dụng cho việc quản trị DB không phải là postgres).

Một người sử dụng DB có thể có một tập hợp các thuộc tính theo đó người sử dụng này được phép để thực hiện:

• Superuser: người sử dụng này không có các hạn chế. Ví dụ, người này có thể tạo những người sử dụng mới; để làm việc này, hãy chạy:

CREATE USER name CREATEUSER

• Người tạo DB (DB creator): được quyền để tạo một DB. Để tạo ra một người sử dụng với những đặc tính này, hãy sử dụng lệnh:

CREATE USER name CREATEDB

• Mật khẩu (password): chỉ cần thiết nếu chúng ta muốn kiểm soát sự truy cập của những người sử dụng khi họ kết nối tới một DB vì những lý do an ninh. Để tạo một người sử dụng với một

Trang 317/471

Lưu ý

Việc tạo, xóa những người sử dụng:

createuser [options] name

dropuser [options] name

Page 318: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

mật khẩu, chúng ta có thể sử dụng: CREATE USER name PASSWORD 'password'

trong đó mật khẩu (password) sẽ là mật khẩu của người sử dụng đó.

• Có thể thay đổi các thuộc tính của một người sử dụng bằng việc sử dụng lệnh ALTER USER. Cũng có thể tạo các nhóm người sử dụng mà chúng chia sẻ cùng các quyền với:

CREATE GROUP GroupName

Và để chèn những người sử dụng vào nhóm này:

ALTER GROUP GroupName ADD USER Name1

Hoặc xóa nó:

ALTER GROUP GroupName DROP USER Name1

Ví dụ

Nhóm hoạt động bên trong psql:

CREATE GROUP GroupName:

ALTER GROUP GroupName ADD USER Name1...; ALTER GROUP GroupName

DROP USER Name1...;

Khi tạo ra một DB, các quyền ưu tiên là cho người sử dụng tạo ra nó (và cho superuser). Để cho phép người sử dụng khác sử dụng DB này hoặc một phần của nó, chúng ta cần trao cho nó các quyền ưu tiên. Có những dạng quyền ưu tiên khác nhau như là SELECT, INSERT, UPDATE, DELETE, RULE, REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE, và ALL PRIVILEGES (tham vấn các tham chiếu cho ý nghĩa của chúng). Để chỉ định các quyền ưu tiên, có thể sử dụng:

GRANT UPDATE ON object TO user

trong đó người sử dụng (user) phải là một người sử dụng PostgreSQL hợp lệ và đối tượng (object), một bảng, ví dụ thế.

Lệnh này phải được superuser hoặc người sở hữu bảng chạy. Người sử dụng PUBLIC có thể được sử dụng như một đồng nghĩa cho tất cả những người sử dụng và ALL, như một đồng nghĩa cho tất các các quyền ưu tiên. Ví dụ, để loại bỏ tất cả các quyền ưu tiên từ tất cả những người sử dụng của một đối tượng, chúng ta có thể chạy:

REVOKE ALL ON object FROM PUBLIC;

8.1.5. Duy trì

Có một tập hợp các nhiệm vụ mà người quản trị DB có trách nhiệm và phải thực hiện hàng ngày:

1) Việc phục hồi không gian: theo chu kỳ phải chạy lệnh VACUUM, nó sẽ phục hồi không gian đĩa của những hàng bị xóa hoặc bị sửa đổi, cập nhật các con số thống kê được trình đặt lịch của PostgreSQL sử dụng và cải thiện những điều kiện truy cập.

2) Đánh chỉ số lại: Trong một số trường hợp, PostgreSQL có thể đưa ra những vấn đề với sự sử dụng

Trang 318/471

Page 319: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

lại các đánh chỉ số, vì thế được khuyến cáo sử dụng REINDEX theo chu kỳ để hạn chế các trang và hàng. Chúng ta cũng có thể sử dụng contrib/reindexdb để đánh chỉ số lại toàn bộ một DB (chúng ta cần tính tới điều đó, phụ thuộc vào kích thước của các DB, các lệnh này có thể mất chút thời gian).

3) Thay đổi các tệp log: cần thiết ngăn ngừa các tệp log khỏi trở thành quá lớn và khó khăn cho việc điều khiển. Điều này có thể được thực hiện một cách dễ dàng khi máy chủ được khởi tạo với:

pg_ctl start | logrotate

logrotate đổi tên và mở một tệp lưu ký log mới và nó có thể được cấu hình với /etc/logrotate.conf.

4) Sao lưu và phục hồi: có 2 cách lưu trữ các dữ liệu, với câu SQL Dump hoặc bằng việc lưu tệp DB. Cái đầu sẽ là:

pg_dump DBFile> BackupFile

Để phục hồi, chúng ta có thể sử dụng: psql DBFile< BackupFile

Để lưu tất cả các DB của máy chủ, chúng ta có thể chạy:

pg_dumpall > TotalBackupFile

Chiến lược khác là lưu giữ các tệp cơ sở dữ liệu ở mức của hệ điều hành, ví dụ sử dụng:

tar -cf backup.tar /usrr/local/pgsql/data

Có 2 hạn chế có thể làm cho phương pháp này không thực tế:

• Máy chủ phải bị dừng trước khi sao lưu và phục hồi các dữ liệu

• Cần biết rất tốt tất cả các ảnh hưởng ở mức này của tệp nơi có tất cả các bảng, các giao dịch ..., vì nếu không, có thể trả về một DB vô dụng. Hơn nữa (nói chung), kích thước sẽ được lưu sẽ là lớn hơn so với nếu được thực hiện bằng việc sử dụng các phương pháp trước, ví dụ, với pg_dumb thì các chỉ số sẽ không được lưu, mà là lệnh để tạo lại chúng được lưu trữ.

Tóm tắt việc cài đặt PostgreSQL:

./configure

gmake

su

gmake install

adduser postgres

mkdir /usr/local/pgsql/data

chown postgres /usr/local/pgsql/data

su -postgres

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data< logfile 2>&1 &

/usr/local/pgsql/bin/createdb test

/usr/local/pgsql/bin/psql test

Trang 319/471

Page 320: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.1.6. Pgaccess

Ứng dụng pgaccess [DBName] (http://ww.pgaccess.org/) cho phép chúng ta truy cập và quản trị một cơ sở dữ liệu với một giao diện đồ họa. Cách dễ dàng nhất của việc truy cập (từ KDE ví dụ thế) là từ một

máy đầu cuối, người quản trị DB sẽ phải làm, (nếu không thì người sử dụng postgresql) xhost+ sẽ cho phép các ứng dụng khác kết nối tới hiển thị của người sử dụng hiện hành.

su postgres

pgaccess [DBName] &

Nếu được cấu hình trong 'Preferences' (Ưu tiên) thì nó sẽ luôn mở DB mới nhất. Hình 1 chỉ giao diện của pgaccess.

Hình 1. PgAccess

Trong một phiên điển hình mà người quản trị/người sử dụng có thể, trước tiên, mở cơ sở dữ liệu, chỉ ra ở đây ví dụ vậy, cổng Port = 5432, Database = nteum (các thông số khác không cần thiết nếu cơ sở dữ liệu là cục bộ) và sau đó Open (mở). Tới thời điểm này, người sử dụng sẽ có khả năng làm việc với không gian 2 chiều lựa chọn những gì muốn làm theo trục Y (các bảng, các tham vấn, các kiểu nhìn...) và với yếu tố được nhấn mạnh đó, và việc lựa chọn một trong những dạng đó trong cửa sổ, sử dụng trục X ở trên cho New (bổ sung), Open hoặc Design (thiết kế). Ví dụ, nếu chúng ta chọn trên trục Y Users và trên X, New, thì ứng dụng sẽ yêu cầu tên và mật khẩu của người sử dụng (với sự xác minh), thời gian trễ tạm ngưng (timeout) và các đặc tính (ví dụ, Create DB, Create những người sử dụng khác). Trong Database chúng ta cũng có thể chọn Preferences, để thay đổi dạng các phông chữ, ví dụ vậy, và chọn khả năng nhìn thấy các bảng của hệ thống.

Các cấu hình của người sử dụng cá nhân sẽ được đăng ký trong tệp ~/.pgaccessrc. Giao diện này giúp thực hiện/tạo điều kiện cho một số lượng lớn những công việc của người sử dụng/người quản trị và được khuyến cáo cho những người sử dụng mà chỉ mới bắt đầu trong PostgreSQL, vì họ sẽ không cần thiết phải biết cú pháp của dòng lệnh như trong psql (bản thân ứng dụng này sẽ yêu cầu tất cả các lựa chọn của một lệnh thông qua vài cửa sổ).

Một công cụ đơn giản hơn thông qua module webmin tương ứng (cần cài đặt các gói webmin-core và các module được yêu cầu, ví dụ, trong trường hợp này là webmin-postgresql), nhưng trong nhiều phát tán nó không được đưa vào một cách mặc định (hãy xem http://www.webmin.com/ để có thêm thông

Trang 320/471

Page 321: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tin). Trong khi cài đặt, webmin sẽ cảnh báo rằng người sử dụng chính sẽ là root và sẽ sử dụng cùng mật khẩu như root của hệ thống. Để kết nối, chúng ta có thể làm thế từ một trình duyệt, ví dụ vậy, https://localhost 10000, nó sẽ yêu cầu chấp nhận (hoặc từ chối) sử dụng chứng chỉ SSL cho giao tiếp SSL, và sau đó nó sẽ chỉ ra tất cả các dịch vụ có thể được quản trị, bao gồm cả PostgreSQL Data Base Server.

Trang 321/471

Page 322: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.2. MySQL

MySQL [Mys] là (theo các tác giả của nó) SQL (DB) mở phổ biến nhất, nói cách khác phần mềm tự do (phần mềm nguồn mở), được MySQL AB (một công ty thương mại kiếm lợi từ các dịch vụ đưa ra xung quanh DB này) phát triển và phân phối. MySQL là một hệ quản trị cơ sở dữ liệu (DBMS). Một DBMS là những gì có thể bổ sung và xử lý các dữ liệu được lưu trữ trong DB. Giống như PostgreSQL, MySQL là một cơ sở dữ liệu quan hệ, có nghĩa là nó lưu trữ các dữ liệu trong các bảng thay vì trong một vị trí duy nhất, đưa ra được tốc độ và tính mềm dẻo lớn hơn. Vì nó là phần mềm tự do, bất kỳ ai cũng có thể có được mã nguồn, nghiên cứu và sửa đổi nó theo các yêu cầu của họ, mà không cần phải trả bất kỳ thứ gì vì MySQL sử dụng giấy phép GPL. Trên trang web của nó, MySQL đưa ra một tập hợp các con số thống kê và các tính năng so sánh với các DB khác để chỉ cho những người sử dụng rằng MySQL nhanh và đáng tin cậy như thế nào. Sự lựa chọn một DB được thực hiện một cách cẩn trọng theo các nhu cầu của người sử dụng và môi trường trong đó DB sẽ được sử dụng.

8.2.1. Cài đặt

• Có được nó từ http://ww.mysql.com/ hoặc bất kỳ kho phần mềm nào. Các tệp nhị phân hoặc mã nguồn đều có thể có được để biên dịch và cài đặt.

• Trong trường hợp các tệp nhị phân, hãy sử dụng phát tán Debian, và chọn các gói mysql.* (máy trạm, máy chủ, được yêu cầu). Theo sau một vài câu hỏi, sự cài đặt sẽ tạo ra một người sử dụng mysql và một khoản đầu vào trong /etc/init.d/mysql để khởi động/dừng máy chủ trong khi khởi động. Nó cũng có thể được thực hiện bằng tay bằng việc sử dụng:

/etc/init.d/mysql start | stop

• Để truy cập cơ sở dữ liệu này, chúng ta có thể sử dụng trình giám sát của mysql từ dòng lệnh. Nếu chúng ta có được các tệp nhị phân (không phải là Debian hoặc RPM, đơn giản hãy sử dụng lệnh phổ biến -apt-get, rpm-), ví dụ gz từ website của MySQL, chúng ta sẽ phải chạy các lệnh sau để cài đặt DB:

groupadd mysql

useradd -g mysql mysql

cd /use/local

gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf –

ln -s full - path – to – mysql – VERSION – OS mysql

cd mysql

scripts/mysql_install_db - -user = mysql

chown -R mysql root

chown -R mysql data

chgrp -R mysql .

Trang 322/471

Page 323: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

bin/mysql_safe - - user = mysql &

Điều này sẽ tạo ra thư mục /user/group/, giải nén và cài đặt DB vào /usr/local/mysql.

• Trong trường hợp có được mã nguồn, các bước là tương tự:

groupadd mysql

useradd -g mysql mysql

gunzip < mysql-VERSION.tar.gz | tar xvf –

cd mysql-VERSION

./configure - -prefix = /usr/local/mysql

make

make install

cp support – files/my-medium.cnf /etc/my.cnf

cd /usr/local/mysql

bin/mysql_install_db - - user-mysql

chown -R root

chown -R mysql var

chgrp -R mysql .

bin/mysql_safe - - user = mysql &

Điều quan trọng phải chú ý khi cấu hình, vì prefix = /usr/local/mysql là thư mục nơi mà DB sẽ được cài đặt và nó có thể bị thay đổi để định vị DB trong bất kỳ thư mục nào chúng ta muốn.

8.2.2. Sau cài đặt và xác minh

Một khi được cài đặt (hoặc từ các tệp nhị phân, hoặc từ mã nguồn), chúng ta sẽ phải xác minh liệu máy chủ có làm việc đúng hay không. Trong Debian điều này có thể được thực hiện một cách trực tiếp:

/etc/init.d/mysql start Khởi động máy chủ

mysqladmin version Sinh ra các thông tin phiên bản

mysqladmin variables Chỉ ra các giá trị của các biến

Mysqladmin -u root shutdown Tắt máy chủ

mysqlshow Sẽ chỉ ra các DB được xác định trước

Mysqlshow mysql Sẽ chỉ ra các bảng của mySQL DB

Nếu được cài đặt từ mã nguồn, trước khi tiến hành các kiểm tra sẽ phải chạy các lệnh sau để tạo ra các cơ sở dữ liệu (từ thư mục của phát tán):

./scripts/mysql_install_db

Trang 323/471

Page 324: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

cd InstallationDirectoryMysql

./bin/mysql_safe - - user = mysql &

Nếu cài đặt từ các tệp nhị phân (RPM, Pkg, …) thì chúng ta phải làm thứ sau đây:

cd InstallationDirectoryMysql

./scripts/mysql_install_db

./bin/mysql_safe user = mysql &

Script mysql_install_db tạo ra mysql DB và mysql_safe khởi động máy chủ mysql. Tiếp theo, có thể kiểm tra tất cả các lệnh được đưa ra ở trên cho Debian, ngoại trừ lệnh đầu tiên là một lệnh khởi tạo máy

chủ. Hơn nữa, nếu những thử nghiệm này được cài đặt, thì chúng có thể được chạy có sử dụng cd sql-

bench và sau đó run-all-tests. Các kết quả sẽ xuất hiện trong thư mục sql-bench/results cho việc so sánh với các DB khác.

8.2.3. Chương trình giám sát MySQL (máy trạm)

Máy trạm MySQL có thể được sử dụng để tạo và sử dụng các DB đơn giản, nó là tương tác và có thể kết nối tới máy chủ, chạy các tìm kiếm và xem các kết quả. Nó cũng làm việc ở chế độ bó (như một script) nơi mà các lệnh trong một tệp sẽ lần lượt được thực hiện). Để xem tất cả các lựa

chọn của lệnh, có thể chạy mysql - -help. Chúng ta sẽ có khả năng để thực hiện một kết nối (cục bộ hoặc ở xa) có sử dụng lệnh mysql, ví dụ, cho một kết nối thông qua giao diện web nhưng từ cùng một máy:

mysql -h localhost -u mysql -p DBName

Nếu chúng ta không vào thông số cuối, thì không có DB nào được chọn.

Một khi ở bên trong, mysql sẽ chỉ ra một dấu nhắc (mysql>) và chờ chúng ta chèn vào một lệnh (của riêng và SQL), ví dụ help. Tiếp sau, chúng ta sẽ trao một loạt các lệnh để thử nghiệm máy chủ (hãy nhớ luôn luôn gõ ';' ở cuối của lệnh):

mysql> SELECT VERSION (), CURRENT_DATE;

Chúng ta có thể sử dụng các ký tự hoa hoặc các ký tự thường.

mysql> SELECT SIN(PI()/4), (4+1)*5; Calculator.

mysql> SELECT VERSION(); SELECT NOW();

Nhiều lệnh trên cùng một dòng.

mysql> SELECT

→ USER()

→,

Trang 324/471

Lưu ý

Máy trạm MySQL (mặt tiền frontend): mysql [DBName]

Website

Để có thêm thông tin, xem tài liệu, các lệnh và lựa chọn. [Mys07] http://dev.mysql.com/doc/refman/5.0/es/

Page 325: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

→ CURRENT DATE;

Hoặc nhiều dòng lệnh

mysql> SHOW DATABASES

Chỉ ra các DB sẵn sàng.

mysql> USE test

Thay đổi DB.

mysql> CREATE DATABASE nteum; USE nteum;

Tạo và chọn một DB có tên là nteum.

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),

→ species VARCHAR(20), sex CHAR(1), birth DATE, death DATE;

Tạo một bảng bên trong nteum.

mysql> SHOW TABLES;

Chỉ ra các bảng.

mysql> DESCRIBE pet;

Chỉ ra định nghĩa bảng.

mysql> LOAD DATA LOCAL INFILE “pet.txt” INTO TABLE pet;

Tải các dữ liệu từ pet.txt vào pet. Tệp pet.txt phải có một đăng ký mỗi dòng được cách nhau bằng các tab dữ liệu theo định nghĩa của bảng (ngày tháng trong định dạng YYYY-MM-DD).

mysql> INSERT INTO pet

→ VALUES ('Marciano', 'Estela', 'gato', 'f', '1999-03-30', NULL);

Tải các dữ liệu lên dòng.

mysql> SELECT * FROM pet; Shows table data.

mysql> UPDATE pet SET birth = “1989-08-31” WHERE name = “Browser”;

Sửa đổi các dữ liệu của bảng.

mysql> SELECT * FROM pet WHERE name = “Browser”;

Ví dụ chọn lọc.

mysql> SELECT name, birth FROM pet ORDER BY birth;

Ví dụ được sắp xếp theo trật tự.

mysql> SELECT name, birth FROM pet WHERE MONTH (birth) = 5;

Ví dụ có chọn lọc với các hàm.

mysql> GRANT ALL PRIVILEGES ON *.* TO

Trang 325/471

Page 326: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

martian@localhost → IDENTIFIED BY 'passwd'

WITH GRANT OPTION;

Tạo người sử dụng marciano trong DB. Điều này phải được người sử dụng root của DB thực hiện.

Hoặc nó cũng có thể được thực hiện một cách trực tiếp bằng việc sử dụng.

mysql> INSERT INTO user (Host, User, Password) →

VALUES ('localhost', 'marciano', 'passwd');

8.2.4. Quản trị

Mysql có một tệp cấu hình trong /etc/mysql/my.cnf (trong Debian), nơi mà những lựa chọn mặc định của DB có thể được thay đổi, ví dụ, cổng kết nối, người sử dụng, mật khẩu hoặc những người sử dụng ở xa, các tệp lưu ký log, các tệp dữ liệu, hoặc nó chấp nhận các kết nối ngoài … Liên quan tới an ninh, chúng ta cần tiến hành một số phòng ngừa nhất định.

1) Không trao cho bất kỳ ai (ngoại trừ người sử dụng root của MySQL) quyền truy cập tới bảng của người sử dụng bên trong MySQL DB, vì đây là nơi có các mật khẩu của người sử dụng, có thể được sử dụng cho những mục đích khác.

2) Kiểm tra mysql -u root. Nếu có thể truy cập được, thì có nghĩa là người sử dụng root không có một mật khẩu nào. Để thay đổi điều này, chúng ta gõ:

mysql -u root mysql

mysql> UPDATE user SET Password

PASSWORD ('new_password')

WHERE user = 'root';→

mysql> FLUSH PRIVILEGES;

Bây giờ, để kết nối như là root:

mysql -u root -p mysql

3) Kiểm tra tài liệu có liên quan tới các điều kiện an ninh và môi trường mạng để tránh các cuộc tấn công và/hoặc thâm nhập trái phép.

4) Để sao chép các cơ sở dữ liệu, chúng ta có thể sử dụng lệnh sau:

mysqldump - - tab = /DestinationDirectory \

- -opt DBName

hoặc cũng:

mysqlhotcopy DBName /DestinationDirectory

Cũng thế, có thể sao chép các tệp *,frm', *.MYD', và *.MYI với máy chủ đang dừng. Để phục hồi, hãy chạy lệnh:

Trang 326/471

Page 327: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

REPAIR TABLE o myisamchk -r

nó sẽ làm việc trong 99% các trường hợp. Nếu không, có thể sao chép các tệp được lưu và khởi động máy chủ. Có những phương pháp thay thế khác phụ thuộc vào việc chúng ta muốn phục hồi cái gì, như là khả năng của việc lưu trữ/phục hồi các phần của DB (xem điểm 4.4 của tài liệu). [Mys]

8.2.5. Các giao diện đồ họa

Có một số lượng lớn các giao diện đồ họa cho MySQL, trong số đó chúng ta nên nhắc tới MySQL Administration (có thể có được từ http://www.mysql.com/products/tools/administration/). Cũng như các công cụ có thể có Mysql-Navigator (http://sourceforge.net/projects/mysqlnavigator/), hoặc Webmin với module để làm việc với MySQL (các gói webmin-core và webmin-mysql) mặc dù cái sau không còn được đưa vào một số phát tán nữa. Tương tự như đối với PostgreSQL, Webmin cũng cho phép làm việc với MySQL (sẽ cần cài đặt các gói webmin-mysql cũng như webmin-core). Trong khi cài đặt, webmin sẽ cảnh báo rằng người sử dụng chính sẽ là root và sẽ sử dụng cùng mật khẩu như là root của hệ điều hành. Để kết nối, chúng ta có thể gõ, ví dụ như, https://localhost:10000 trên thanh URL của một trình duyệt, nó sẽ yêu cầu chấp nhận (hoặc từ chối) sử dụng một chứng chỉ cho giao tiếp SSL và sau đó nó sẽ chỉ ra tất cả các dịch vụ có thể quản trị được, trong số chúng có MySQL Data Base Server (máy chủ cơ sở dữ liệu MySQL).

MySQL Administration là một ứng dụng mạnh cho việc quản trị và kiểm soát các cơ sở dữ liệu dựa trên MySQL. Ứng dụng này tích hợp quản trị, kiểm soát và duy trì DB theo một cách đơn giản và trong cùng một môi trường. Những đặc tính chính của nó là: quản trị cao cấp các DB lớn, ít lỗi hơn thông qua “quản trị trực giác”, năng suất lớn hơn và một môi trường quản lý an toàn. Hình sau đây chỉ một kiểu nhìn của MySQL Administrator (trong http://dev.mysql.com/doc/administrator/en/index.html chúng ta có thể thấy tất cả các tài liệu cho việc cài đặt và bắt đầu làm quen với nó.

Hình 2. MySQL Administrator

Trang 327/471

Page 328: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.3. Các hệ thống quản lý mã nguồn

Hệ thống các phiên bản hiện hành CVS (Current Versions System) là một hệ thống kiểm soát phiên bản cho phép phiên bản cũ của các tệp sẽ được duy trì (thường là mã nguồn), lưu một lưu ký log của những ai đã làm bất kỳ thay đổi nào, khi nào và vì sao. Không giống như những hệ thống khác, CVS không làm việc với một tệp/thư mục cho từng trường hợp, mà hành động trong một nhóm có tôn ti trật tự các thư mục mà nó kiểm soát.

Mục đích của CVS là để giúp quản lý các phiên bản của phần mềm và kiểm soát việc soạn thảo hiện hành các tệp nguồn của nhiều tác giả. CVS sử dụng gói khác gọi là hệ thống kiểm soát sự rà soát lại RCS (Revision Control System) bên trong như một lớp ở mức thấp. Mặc dù RCS có thể được sử dụng một cách độc lập, nó không được khuyến cáo, vì bổ sung vào chức năng của riêng của nó thì CVS đưa ra tất cả các khả năng của RCS với những cải tiến đáng lưu ý về tính ổn định, việc vận hành và duy trì. Trong đó chúng ta có thể nhấn mạnh tới: vận hành phi tập trung (mỗi người sử dụng có thể có cây mã nguồn của riêng họ), soạn sửa cùng lúc, hành xử được chấp nhận thông qua các script vỏ … [Ced, CVS, Vasa, Kie].

Như đã được giải thích trong phần giới thiệu, Subversion (http://subversion.tigris.org/) là một phần mềm hệ thống kiểm soát phiên bản được thiết kế đặc biệt để thay thế cho CVS phổ biến, và ở một mức độ nào đó, các khả năng của nó. Đây là phần mềm tự do theo một giấy phép Apache/BSD và cũng được biết như là svn đối với tên dùng trong dòng lệnh. Một tính năng quan trọng của Subversion là việc, không giống như CVS, mỗi tệp trong số các đánh số phiên bản không có một số rà soát lại độc lập, thay vào đó toàn bộ kho có một số phiên bản duy nhất xác định tình trạng chung của tất cả các tệp của kho cùng một lúc, được “đánh số phiên bản”. Trong số những tính năng chính chúng ta có thể nhắc tới:

• Lịch sử của tệp và thư mục có thể theo được thông qua những sao lưu và việc đổi tên.

• Những sửa đổi hạt nhân và an ninh (bao gồm những thay đổi đối với một vài tệp).

• Sự tạo có hiệu quả và đơn giản các nhánh và nhãn.

• Chỉ những khác biệt được gửi vào cả 2 hướng (trong CVS, các tệp hoàn chỉnh luôn được gửi tới máy chủ).

• Nó có thể được Apache phục vụ, qua WebDAV/DeltaV.

• Nó điều khiển các tệp nhị phân một cách có hiệu quả (không giống như CVS khi hành xử với các tệp nhị phân một cách nội bộ dường như chúng là văn bản).

Có cuốn sách tự do thú vị giải thích mọi thứ về Subversion http://svnbook.red-bean.com/index.es.html và bản dịch khá là tiên tiến (http://svnbook.red-bean.com/nightly/es/index.html).

8.3.1. Hệ thống kiểm soát rà soát lại (RCS)

Biết rằng CVS được dựa trên RCS và vẫn còn được sử dụng trong một số hệ thống, chúng ta sẽ đưa ra một giải thích ngắn gọn về phần mềm này. RCS cấu tạo từ một tập hợp các chương trình cho các hoạt

Trang 328/471

Page 329: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

động RCS khác nhau của nó: rcs (chương trình kiểm soát các thuộc tính các tệp theo RCS), ci và co

(kiểm tra đầu vào và đầu ra của các tệp theo RCS), ident (tìm kiếm RCS đối với các tệp có sử dụng

các từ/thuộc tính khóa), rcsclean (xóa các tệp mà không còn được sử dụng hoặc không bị thay đổi),

rcsdiff (chạy lệnh diff để so sánh các phiên bản), rcsmerrge (liên kết 2 nhánh [các tệp] vào thành một

tệp), và rlog (in các thông điệp lưu ký log).

Định dạng của các tệp được RCS lưu trữ có thể là văn bản hoặc định dạng khác, như nhị phân chẳng hạn. Một tệp RCS cấu tạo từ một tệp rà soát lại ban đầu được gọi là 1.1 và một loạt các tệp thay đổi,

mỗi tệp cho từng sự rà soát lại. Mỗi lúc một bản sao của kho được làm cho thư mục công việc với co

(có sự rà soát lại của mỗi tệp RCS và đặt nó vào tệp làm việc) hoặc các lệnh ci (lưu trữ những sự rà soát lại mới trong RCS) được sử dụng, số phiên bản được gia tăng (ví dụ, 1.2, 1.3, …). Các tệp là (nói

chung) trong thư mục /RCS và hệ điều hành cần phải có các lệnh diff và diff3 được cài đặt cho nó để nó hoạt động đúng đắn. Trong Debian, nó không phải biên dịch vì nó được đưa vào trong phát tán.

Với lệnh rcs chúng ta sẽ tạo ra và sửa các thuộc tính tệp (tham vấn rcs man). Cách dễ nhất để tạo một

kho là tạo một thư mục với mkdir rcs trong thư mục gốc ban đầu và đưa các gốc ban đầu vào kho

bằng việc sử dụng: ci name_files_sources.

Chúng ta có thể sử dụng * và nên luôn luôn có một bản sao lưu để tránh mọi vấn đề. Điều này sẽ tạo ra

những rà soát lại của các tệp với tên ./RCS/file_name và yêu cầu một văn bản mô tả cho tệp này. Sau

đó, sử dụng co RCS/file_name, chúng ta sẽ có được một bản sao công việc từ kho. Tệp này có thể bị khóa hoặc mở khóa để tránh những sửa đổi, một cách tương ứng, bằng việc sử dụng:

rcs -L workfile_name

rcs -U workfile_name

Với rlog file_name chúng ta sẽ có khả năng xem thông tin về các phiên bản khác nhau. [Kie]

8.3.2. Hệ thống phiên bản hiện hành (CVS)

Trước tiên chúng ta cần cài đặt hệ thống phiên bản hiện hành (CVS) từ phát tán và nhớ trong đầu rằng phải có RCS được cài đặt và rằng cũng phải cài đặt OpenSSH nếu muốn sử dụng nó trong sự kết hợp với CVS cho sự truy cập từ xa. Các biến môi trường EDITOR CVSROOT cũng phải được khởi tạo, ví dụ, trong /etc/profile (hoặc trong hồ sơ .bash):

export EDITOR = /bin/vi

export CVSROOT = /usr/local/cvsroot

Rõ ràng, những người sử dụng có thể sửa đổi những định nghĩa này bằng việc sử dụng hồ sơ /.bash. Cần tạo ra thư mục cho kho và để cấu hình các quyền như root, chúng ta phải gõ vào, ví dụ:

export CVSROOT = /usr/local/cvsroot

groupadd cvs

Trang 329/471

Page 330: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

useradd -g cvs -d $CVSROOT cvs

mkdir $CVSROOT

chgrp -R cvs $CVSROOT

chmod o-rwx $CVSROOT

chmod ug+rwx $CVSROOT

Để khởi tạo kho và lưu các tệp mã nguồn trong nó:

cvs -d /usr/local/cvsroot init

cvs init sẽ tính tới việc không bao giờ ghi đè một kho đã được tạo ra để tránh mất các kho khác. Tiếp theo, chúng ta sẽ cần bổ sung những người sử dụng sẽ làm việc với CVS đối với nhóm cvs; ví dụ, để bổ sung một người sử dụng tên là nteum:

usermod -G cvs, nteum

Bây giờ người sử dụng nteum sẽ phải lưu các tệp của anh/chị ta trong thư mục kho (usr/local/cvsroot trong trường hợp của chúng ta) bằng việc gõ:

export EDITOR = /bin/vi

export CVSROOT = /usr/local/cvsroot

export CVSREAD = yes

cd directory_of_originals

cvs import RepositoryName vendor_1_0 rev_1_0

Tên của kho có thể là một trình xác minh duy nhất hoặc cũng là user/project/xxxx nếu người sử dụng muốn có tất cả các kho khác được tổ chức. Điều này sẽ tạo ra một cây thư mục trong CVSROOT với cấu trúc đó.

Điều này sẽ bổ sung một thư mục (/usr/local/cvsroot/RepositoryName) vào kho với các tệp sẽ nằm trong kho này tại thời điểm đó. Một thử nghiệm để biết liệu mọi thứ có được lưu trữ đúng hay không là phải lưu một bản sao trong kho này và sau đó tạo một bản sao từ đó và kiểm tra sự khác biệt. Ví dụ, với các bản gốc trong user_directory /dir_org nếu muốn tạo một kho first_cvs/proj, thì sẽ phải chạy các lệnh sau:

cd dir_org Thay đổi tới thư mục mã nguồn của gốc.

cvs import -m \

“Original sources”

\primer_cvs/proj userX vers0

Tạo kho trong first_cvs/proj với userX và vers0.

cd.. Thay đổi tới thư mục ở trên dir_org.

cvs checkout primer_cvs/proj

Tạo ra một bản sao của kho. Biến CVSROOT phải được khởi tạo, nếu không thì đường

Trang 330/471

Page 331: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

dẫn đầy đủ sẽ phải được chỉ ra.

diff -r dir_org primer_cvs/proj

Chỉ ra những khác biệt giữa chúng với nhau; phải không có bất kỳ ngoại lệ nào cho thư mục first_cvs/proj/CVS được tạo ra bởi CVS.

rm -r dir_org

Xóa các gốc (luôn tạo ra một bản sao lưu cho an toàn và phải có một tham chiếu của những nơi công việc này với CVS được bắt đầu).

Hình sau đây chỉ ra tổ chức và cách mà các tệp được phân phối giữa các phiên bản và các nhánh.

Hình 3

Việc xóa các gốc không phải luôn là ý tưởng hay; chỉ trong trường hợp này, sau khi xác minh được chúng ở trong kho, sao cho chúng sẽ không làm việc sai và những thay đổi sẽ không được phản ánh trong CVS. Trên các máy nơi mà những người sử dụng sẽ muốn truy cập một máy chủ CVS ở xa, thì chúng ta phải gõ vào:

export CVSROOT = “:ext:[email protected]: /home/cvsroot”

export CVS_RSH = “ssh”

Nơi mà user là đăng nhập của người sử dụng và cvs.server.com là tên của máy chủ với CVS. CVS đưa ra một loạt các lệnh (đặt tên như các lựa chọn lệnh của cvs...) để làm việc với hệ thống rà soát lại, bao gồm: checkout, update, add, remove, commit và diff.

Lệnh checkout ban đầu của cvs tạo ra bản sao riêng tư của riêng nó đối với mã nguồn để sau này làm việc được với nó mà không cần có sự can thiệp bằng công việc của những người sử dụng khác (ít nhất nó tạo ra một thư mục con nơi mà các tệp sẽ được chứa).

• cvs update phải được chạy từ cây riêng tư khi các bản sao của các tệp nguồn phải được cập nhật với những thay đổi được các lập trình viên khác thực hiện đối với các tệp của kho.

Trang 331/471

Page 332: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• cvs add file … lệnh này là cần thiết khi cần phải bổ sung các tệp mới vào thư mục làm việc trong một module đã chạy trước đó một checkout. Những tệp này sẽ được gửi tới kho của CVS khi chạy lệnh commit của cvs.

• cvs import có thể được sử dụng cho việc giới thiệu các tệp mới cho kho.

• cvs remove file... lệnh này sẽ được sử dụng để xóa các tệp khỏi kho (một khi chúng bị xóa khỏi tệp riêng tư). Lệnh này phải được đi kèm với một lệnh commit của cvs để những thay đổi sẽ trở nên có hiệu lực, vì đây là lệnh mà chuyển tất cả các yêu cầu của những người sử dụng qua kho.

• cvs diff file ... có thể được sử dụng mà không gây ảnh hưởng tới bất kỳ tệp nào có liên quan nếu cần phải kiểm tra những khác biệt giữa kho và thư mục làm việc hoặc giữa 2 phiên bản.

• cvs tag -R “version” có thể được sử dụng cho việc giới thiệu một số phiên bản trong các tệp của dự án và sau đó gõ lệnh commit của cvs và một dự án cvs checkout -r 'version' để đăng ký một phiên bản mới.

Một đặc tính thú vị của cvs là việc nó có khả năng cô lập những thay đổi đối với các tệp bị cô lập trong một dòng công việc riêng rẽ được gọi là một nhánh. Khi chúng ta thay đổi một tệp trong một nhánh, những thay đổi này sẽ không xuất hiện trong các tệp chính hoặc trong các nhánh khác. Sau này, những thay đổi này có thể được kết hợp vào những nhánh khác hoặc vào tệp chính (việc trộn). Để tạo ra một

nhánh mới, hãy sử dụng cvs tag -b rel-1-0-patches bên trong thư mục công việc, nó sẽ chỉ định tên rel-1-0-patches cho nhánh này. Để liên kết các nhánh tới thư mục công việc liên quan tới việc sử dụng

lệnh cvs update -j. Hãy tham vấn các tham chiếu cho việc trộn hoặc truy cập các nhánh khác nhau.

8.3.2.1. Ví dụ về một phiên

Tiếp sau ví dụ về tài liệu được cung cấp trong các tham chiếu, chúng ta sẽ chỉ ra một phiên công việc (ở một dạng chung) với cvs. Vì cvs lưu tất cả các tệp trong một kho trung tâm, sẽ giả thiết là nó đã được khởi tạo rồi.

Giả thiết chúng ta đang làm việc với một tập hợp các tệp trong C và một makefile, ví dụ vậy. Trình biên dịch mà chúng ta sử dụng là gcc và kho được khởi tạo cho gccrep.

Trong nơi đầu tiên, chúng ta sẽ cần có được một bản sao các tệp của kho như là bản sao riêng tư của chúng ta với:

cvs checkout gccrep

Điều này sẽ tạo ra một thư mục mới được gọi là gccrep với các tệp nguồn. Nếu chạy cd gccrep và ls, chúng ta sẽ thấy, ví dụ, cvs makefile a.c b.c c.c, nơi có một thư mục cvs được tạo ra để kiểm soát bản sao riêng tư mà thường thì không cần thiết động chạm tới.

Chúng ta có thể sử dụng một trình soạn thảo để sửa đổi a.c và đưa ra những thay đổi đáng kể trong tập này (xem tài liệu về nhiều người sử dụng cùng một lúc nếu cần làm việc với nhiều hơn một người sử

Trang 332/471

Page 333: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

dụng trên cùng một tệp), biên dịch, thay đổi một lần nữa ...

Khi quyết định rằng chúng ta có một phiên bản mới với tất cả những thay đổi được làm trong a.c (hoặc trong các tệp cần thiết), thì đến lúc phải làm một phiên bản mới bằng việc lưu a.c (hoặc tất cả những thứ mà đã được động tới) trong kho và làm cho phiên bản này sẵn sàng với những người sử dụng còn

lại: cvs commit a.c.

Sử dụng trình soạn thảo được xác định trong biến CVSEDITOR (hoặc EDITOR nếu nó không được khởi tạo) thì chúng ta sẽ có khả năng đưa vào một chú giải tranh luận những thay đổi nào đã được thực hiện để giúp những người sử dụng khác hoặc để nhắc nhở phiên bản này có những đặc trưng gì sao cho một lưu ký log có thể được tạo ra.

Nếu chúng ta quyết định hạn chế các tệp (vì dự án đã hoàn tất hoặc vì nó sẽ không được làm việc hơn nữa), thì một cách thực hiện điều này là ở mức độ của hệ điều hành (rm -r gccrep), nhưng sẽ tốt hơn

nếu sử dụng bản thân cvs ngoài thư mục công việc (mức ngay ở trên): cvs release -d gccrep. Lệnh này sẽ dò tìm ra liệu có bất kỳ tệp nào còn chưa được gửi đi tới kho, và nếu có và nó bị xóa, có nghĩa là tất cả những thay đổi sẽ bị mất, điều giải thích vì sao nó sẽ yêu cầu chúng ta có muốn tiếp tục hay không.

Để xem xét những khác biết, ví dụ, b.c đã bị thay đổi và chúng ta không nhớ những thay đổi nào đã

được thực hiện, bên trong thư mục công việc, thì có thể sử dụng: cvs diff b.c. Điều này sẽ sử dụng

lệnh diff của hệ điều hành để so sánh phiên bản b.c với phiên bản trong kho (phải luôn nhớ gõ cvs

commit b.c nếu muốn những khác biệt này sẽ được truyền sang kho như một phiên bản mới).

8.3.2.2. Nhiều người sử dụng

Khi nhiều hơn một người làm việc trong một dự án phần mềm với các rà soát khác nhau, thì điều này là cực kỳ phức tạp, vì hơn một người sử dụng đôi khi sẽ muốn soạn sửa tệp cùng một lúc. Một giải pháp tiềm năng là phải khóa tệp này hoặc sử dụng các điểm kiểm tra (các kiểm tra đầu ra được dự trữ), mà chúng sẽ chỉ cho phép một người sử dụng soạn sửa cùng tệp đó cùng một lúc. Để làm thế, chúng ta

phải chạy lệnh cvs admin -l command (xem man để có các lựa chọn).

cvs sử dụng một mô hình mặc định kiểm soát đầu ra không hạn chế, cho phép những người sử dụng soạn sửa một tệp trong thư mục làm việc của họ một cách cùng một lúc. Người đầu tiên truyền những thay đổi của họ vào kho sẽ có khả năng làm như vậy mà không có bất kỳ vấn đề gì, nhưng những người còn lại sẽ nhận được một thông điệp lỗi khi họ muốn thực hiện cùng tác vụ y hệt, nghĩa là họ phải sử dụng các lệnh của cvs để truyền trước tiên những thay đổi tới thư mục làm việc từ kho và sau đó cập nhật kho với những thay đổi của riêng họ.

Hãy tham vấn những tham chiếu để thấy một ví dụ của ứng dụng của nó và những cách thức khác để làm việc đồng thời với giao tiếp giữa những người sử dụng. [Vasa].

8.3.3. Các giao diện đồ họa

Có một tập hợp các giao diện đồ họa sẵn sàng như tkcvs (http://www.twobarleyconrns.net/tkcvs.html)

Trang 333/471

Page 334: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[gcus] được phát triển trong Tcl/Tk và hỗ trợ subversion, hoặc thứ cũng rất phổ biến, cervisia [Cerc].

Trong wiki cvs (http://ximbiot.com/cvs/wiki/index.php?title=CVS_Clients) cũng có thể thấy một tập hợp các máy trạm, các cài cắm (plugins) cho cvs. Tiếp theo, chúng ta sẽ xem xét 2 trong số những giao diện đồ họa được nhắc tới (tkcvs và gcvs):

Hình 4. TkCVS (TkSVN)

Hình 5. gCVS

Trang 334/471

Page 335: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

8.4. Subversion

Như một ý tưởng ban đầu subversion phục vụ để quản lý một tập hợp các tệp (kho) và những phiên bản khác nhau của nó. Lưu ý rằng chúng ta không quan tâm cách mà các tệp được lưu giữ, mà quan tâm tới cách chúng ta có thể truy cập được chúng, chính là cách thông thường để sử dụng một cơ sở dữ liệu. Ý tưởng về một kho hình như là một thư mục từ đó chúng ta muốn phục hồi một tệp của một tuần hoặc 10 tháng trước dựa trên tình trạng của cơ sở dữ liệu, để phục hồi những phiên bản mới nhất và bổ sung thêm những phiên bản mới. Không giống như cvs, subversion tiến hành những rà soát lại toàn cầu của kho, có nghĩa là một thay đổi trong một tệp không làm nảy sinh ra một sự nhảy trong phiên bản của chỉ tệp đó, mà còn của toàn bộ kho, bổ sung thêm một thay đổi tới sự rà soát lại. Bổ sung vào cuốn sách mà chúng ta đã nhắc tới (http://svnbook.red-bean.com/nightly/es/index.html), hãy tham vấn tài liệu tại http://subversion.tigris.org/servlets/ProjectDocumentList. Hình 5, gCVS.

Trong Debian, chúng ta sẽ phải gõ apt-get install subversion, nếu chúng ta muốn xuất bản các kho

trong Apache2 apt-get install Apache2-common và module đặc biệt apt-get install libApache2-

subversion.

• Bước 1: tạo kho của chúng ta, người sử dụng (giả thiết người sử dụng là svuser), nhóm (svgroup) như là root...

mkdir -p /usr/local/svn

addgroup svgroup

chown -R root.svgroup /usr/local/svn

chmod 2775 /usr/local/svn

• addgroup svuser svggroup - Bổ sung thêm người sử dụng svuser vào nhóm svgroup.

• Kết nối như svuser và kiểm tra chúng ta đang ở trong nhóm svgroup (với lệnh group).

• svnadmin create /usr/local/svn/tests

• Lệnh này sẽ tạo một loạt các tệp và thư mục cho sự quản lý và kiểm soát phiên bản. Nếu không

được phép trong /usr/local/svn, thì chúng ta có thể làm thế trong thư mục cục bộ: mkdir -p

$HOME/svndir và tiếp theo svnadmin create $HOME/svndir/tests.

• Tiếp theo là tạo một thư mục tạm thời mkdir -p $HOME/svntmp/tests, chuyển tới thư mục cd $HOME/svntmp/tests và tạo một tệp như:

echo First File svn 'date' > file1.txt

• Truyền nó tới kho: bên trong thư mục này chúng ta gõ

svn import file:///home/svuser/svndir/tests-m “View. Initial”. Nếu đã tạo nó trong

/usr/local/svn/tests thì chúng ta nên gõ đầy đủ đường dẫn sau file://. Lệnh import sẽ sao

Trang 335/471

Page 336: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chép cây thư mục này và lựa chọn -m cho phép thông điệp của phiên bản sẽ được chỉ ra. Nếu chúng ta không bổ sung thêm lựa chọn -m, thì một trình soạn thảo sẽ mở để làm thế (cần phải gõ vào một thông điệp để tránh các vấn đề). Thư mục con $HOME/svntmp/tests là một bản sao công việc trong kho và việc xóa nó được khuyến cáo để tránh bị cám dỗ gửi đi lỗi của công việc

với thư mục đó mà lại không với kho (rm -rf $HOME/svntmp/tests).

• Một khi ở trong kho, chúng ta có thể có được bản sao cục bộ nơi mà có thể làm việc và sau đó tải lên các bản sao vào các kho, bằng việc gõ:

mkdir $HOME/svm-work

cd $HOME/svn-work

svn checkout file:///home/svuser/svndir/tests

Nơi chúng ta nhìn thấy có thư mục tests. Có thể sao chép bằng tên khác có bổ sung tên mà chúng ta muốn vào cuối. Để bổ sung một tệp mới vào nó:

cd /home/kikov/svn-work/tests

echo Second File Svn 'date' > file2.txt

svn add file2.txt

svn commit -m”New file”

Điều quan trọng cần lưu ý rằng một khi ở trong bản sao cục bộ (svn-work), thì chúng ta phải không chỉ định đường dẫn. svn add đánh dấu cho sự bổ sung thêm tệp tới kho và thực sự nó được bổ sung khi chúng ta chạy cvn commit. Nó sẽ trao cho chúng ta một số thông điệp chỉ rằng đây là phiên bản thứ 2.

Nếu bổ sung dòng khác file1.txt với echo 'date'>>file1.txt, thì chúng ta sẽ có khả năng tải lên

những thay đổi với: svn commit -m”New line”.

Có khả năng để so sánh tệp cục bộ với tệp của kho, ví dụ bổ sung một dòng thứ 3 vào file1.txt với echo

'date'>>file1.txt, nhưng không tải nó lên và nếu muốn thấy những khác biệt thì có thể chạy: svn diff.

Lệnh này sẽ nhấn mạnh những khác biệt giữa tệp cục bộ và tệp của kho. Nếu sử dụng svn commit

-m”New line2” (sẽ sinh ra phiên bản khác) thì svn diff sẽ không cho bất kỳ khác biệt nào.

Chúng ta cũng có thể sử dụng lệnh svn update bên trong thư mục để cập nhật bản sao cục bộ. Nếu có 2 hoặc nhiều hơn người sử dụng làm việc cùng một lúc và mỗi người đã làm một bản sao cục bộ của kho và sửa đổi nó (bằng việc thực hiện lệnh commit), thì khi người sử dụng thứ 2 sắp gửi bản sao với những sửa đổi của họ, thì họ sẽ nhận được một báo lỗi xung đột, vì bản sao trong kho có ngày tháng sửa đổi gần hơn so với bản sao gốc của người sử dụng này (nói cách khác, đã từng có những thay đổi ở giữa), nghĩa là nếu người sử dụng thứ 2 mà chạy lệnh commit, thì chúng ta có thể đánh mất những sửa đổi của người đầu. Để làm thế, chúng ta phải chạy svn update, nó nói cho chúng ta tệp tạo ra một xung đột với một chữ C và sẽ chỉ cho chúng ta các tệp nơi mà những phần trong xung đột đã được đặt. Người sử dụng này phải quyết định phiên bản nào phải giữ và liệu chúng có thể chạy lệnh commit được không.

Trang 336/471

Page 337: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Một lệnh thú vị là svn log file1.txt, sẽ chỉ ra tất cả những thay đổi đã được thực hiện đối với tệp này và những phiên bản tương ứng của nó.

Một tính năng thú vị là việc subversion có thể chạy trong sự kết hợp với Apache2 (và cùng với SSL) sẽ truy cập được từ máy khác (tham vấn các máy trạm trong http://svnbook.red-bean.com/) hoặc đơn giản xem xét kho này. Trong Debian Administration có giải thích cách cấu hình Apache2 và SSL cho Sarge, hoặc như đã được chỉ ra trong phần về các máy chủ. Đối với điều này, chúng ta cần kích hoạt các module WebDAV (xem http://www.debian-administration.org/articles/285 hoặc nếu không có chúng http://www.debian-administration.org/articles/208).

Là người sử dụng root thì chúng ta gõ:

mkdir /subversion chmod www-data:www-data

Sao cho Apache có thể truy cập được thư mục này

svnadmin create /subversion

Chúng ta tạo kho

ls -s /subversion

-rw-r- -r- - 1 www-data www-data 376 May 11 20:27 README.txt

drwxr-xr-x 2 www-data www-data 4096 May 11 20:27 conf

drwxr-xr-x 2 www-data www-data 4096 May 11 20:27 dav

drwxr-xr-x 2 www-data www-data 4096 May 11 20:27 db

-rw-r- -r- - 1 www-data www-data 2 May 11 20:27 format

drwxr-xr-x 2 www-data www-data 4096 May 11 20:27 hooks

drwxr-xr-x 2 www-data www-data 4096 May 11 20:27 looks

Cho việc xác thực chúng ta sử dụng htpasswd (ví dụ với htpasswd2 -c -m

/subversion/.dav_svn.passwd user được tạo như www-data. Chúng ta chỉ phải gõ -c lần đầu tiên chạy lệnh để tạo tệp này. Điều này nói cho chúng ta rằng để truy cập thư mục này chúng ta cần một mật khẩu (là mật khẩu chúng ta đã gõ vào cho người sử dụng).

Sau đó chúng ta cần phải thay đổi httpd.conf sao cho nó là thứ gì đó giống như:

<location /svn>

DAV svn

SVNPath /subversion

AuthType Basic

AuthName “Subversion Repository*”

AuthUserFile /subversion/.dav_svn.passwd

Require valid_user

</location>

Khởi động lại Apache và bây giờ chúng ta sẵn sàng để nhập một số tệp, như là:

Trang 337/471

Page 338: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

svn import file1.txt http://url-server.org/svn \

-m “import initial”

Chúng ta sẽ được yêu cầu xác thực (tên và mật khẩu người sử dụng) và được nói rằng tệp file1.txt đã được bổ sung vào kho này.

Trang 338/471

Page 339: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Xác định trong PostgreSQL một DB mà có ít nhất 3 bảng với 5 cột (trong đó 3 cột phải là số) trong mỗi bảng.

Sinh ra một danh sách sắp xếp thứ tự cho từng bảng/cột. Sinh ra một danh sách sắp xếp thứ tự với giá trị cao hơn của cột X cho tất cả các bảng. Thay đổi giá trị số trong cột Y bằng giá trị số của cột Z + giá trị của cột W/2.

2) Bài tập y hệt như ở trên, nhưng với MySQL.

3) Cấu hình cvs để tạo 3 rà soát lại của một thư mục nơi mà có 4 tệp .c và một makefile. Tạo một nhánh của tệp và sau đó trộn nó với nhánh chính.

4) Phỏng theo việc sử dụng cùng một lúc một tệp với 2 máy đầu cuối Linux và chỉ ra hệ quả của các bước phải được thực hiện sao cho 2 lựa chọn sửa đổi của mỗi người sử dụng được phản ánh trong kho của cvs.

5) Bài tập y hệt ở trên, nhưng một trong những người sử dụng phải kết nối tới kho từ một máy khác.

6) Các điểm 3, 4 và 5 trong Subversion.

Trang 339/471

Page 340: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu thông tin khác

[Debc, Ibi, Mou01]

PgAccess: http://www.pgaccess.org/

WebMin: http://www.webmin.com/

Mysql Administrator http://www.mysql.com/products/tools/administrator/

Graphic interfaces for CVS: http://www.twobarleycorns.net/tkcvs.html

Or in the CVS wiki: http://ximbiot.com/cvs/wiki/index.php?title=CVS_Clients

Subversion: http://subversion.tigris.org/

Free Book about Subversion: http://svnbook.red-bean.com/index.es.html

Apache2 and SSL: http://www.debian-administration.org/articles/349

Apache2 and WebDav: http://www.debian-administration.org/articles/285

Có một số lượng lớn các tài liệu về Apache và SSL + Subversion trong Debian cũng như http://www.debian-administration.org trên Google, hãy gõ vào “Apache2 SSL and Subversion in Debian” để có được một số tài liệu thú vị.

Trang 340/471

Page 341: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9 Quản trị an ninh

Josep Jorba EstevePID_00148474

Security administration

Josep Jorba EstevePID_00148474

Trang 341/471

Page 342: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Bước nhảy công nghệ từ các hệ thống để bàn bị cô lập tới các hệ thống hiện hành được tích hợp trong các mạng cục bộ và Internet đã bổ sung một khó khăn mới cho những nhiệm vụ thông thường của người quản trị: việc kiểm soát an ninh hệ thống.

An ninh là một lĩnh vực phức tạp, kết hợp những kỹ thuật phân tích với các kỹ thuật cho việc dò tìm hoặc ngăn ngừa những cuộc tấn công tiềm tàng. Một phân tích như vậy về các yếu tố “tâm lý”, trong mối liên quan tới cách hành xử của những người sử dụng hệ thống hoặc những mưu toan có thể của những kẻ tấn công.

Các cuộc tấn công có thể tới từ nhiều nguồn và ảnh hưởng từ một ứng dụng hoặc dịch vụ hoặc người sử dụng duy nhất tới tất cả chúng hoặc ngay cả toàn bộ hệ thống máy tính.

Các cuộc tấn công tiềm tàng có thể thay đổi cách hành xử của hệ thống và thậm chí làm cho chúng sụp đổ (vô hiệu hóa chúng), hoặc mang lại ấn tượng không đúng về an ninh, có thể là khó khăn để dò tìm ra. Chúng ta có thể dượt qua các cuộc tấn công xác thực (có được sự truy cập thông qua các chương trình hoặc những người sử dụng đã bị vô hiệu hóa trước đó ), những sự can thiệp (định hướng lại hoặc can thiệp vào các kênh giao tiếp truyền thông và sự lưu thông của các dữ liệu bên trong chúng) hoặc sự thay đổi (thay thế các chương trình, máy tính hoặc người sử dụng thành những thứ khác, mà không có những thay đổi có thể lưu ý thấy được).

Chúng ta phải nhớ trong đầu rằng không thể đạt được an ninh 100%.

Các kỹ thuật an ninh là một con dao 2 lưỡi có thể dễ dàng trao cho chúng ta một ấn tượng không đúng về việc kiểm soát vấn đề này. Hiện tại, an ninh là một vấn đề rộng lớn bao quát và phức tạp và, quan trọng hơn, nó cũng năng động. Chúng ta có thể không bao giờ mong đợi hoặc nói rằng an ninh được đảm bảo cả, nhưng sẽ có khả năng là một trong những lĩnh vực mà người quản trị sẽ phải bỏ ra hầu hết thời gian vào nó và vào việc tri thức nào sẽ phải được giữ cập nhật.

Trong phần này chúng ta sẽ xem xét một số dạng các cuộc tấn công và các môi trường mạng từng bị tấn công. Hơn nữa, chúng ta sẽ xem xét các kỹ thuật dò tìm những truy cập bất hợp pháp và một số công cụ cơ bản có thể giúp chúng ta kiểm soát an ninh.

Cũng nên nhớ rằng trong phần này chúng ta chỉ có thể đưa ra một số khía cạnh có liên quan tới an ninh ngày nay. Đối với bất kỳ việc học thực tế tỉ mỉ kỹ lưỡng nào, thì được khuyến cáo tham vấn thư mục tham khảo có sẵn, cũng như những sách chỉ dẫn đối với các sản phẩm và công cụ đã được đề cập tới.

Trang 342/471

Lưu ý

An ninh tuyệt đối không tồn tại. Một ấn tượng không đúng về an ninh có thể là gây hại như là việc không có bất kỳ sự an ninh nào. An ninh là một lĩnh vực rất năng động trong đó chúng ta cần giữ cho tri thức của chúng ta luôn được cập nhật.

Page 343: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.1. Các dạng và các phương pháp tấn công

An ninh máy tính trong các khái niệm quản trị có thể được hiểu như là quá trình cho phép người quản trị hệ thống ngăn ngừa và dò tìm ra sự sử dụng hệ thống không được phép. Các biện pháp phòng ngừa giúp ngăn ngừa được những mưu toan của những người sử dụng không được phép (được biết như những kẻ thâm nhập trái phép) để truy cập vào bất kỳ phần nào của hệ thống. Sự dò tìm ra giúp phát hiện khi những mưu toan này được thực hiện ở đâu đó hoặc, nếu chúng là có ảnh hưởng, thì phải thiết lập những rào cản sao cho những sự thâm nhập trái phép sẽ không lặp lại và hệ thống có thể được phục hồi nếu bị đánh thủng.

Những kẻ thâm nhập trái phép (còn được biết một cách thông tục như là các tin tặc, những kẻ bẻ khóa, 'những kẻ tấn công' hoặc 'bọn kẻ cướp') thường mong muốn có được sự kiểm soát đối với hệ thống, hoặc để gây ra việc vận hành không đúng của nó, để làm hỏng hệ thống hoặc các dữ liệu của nó, để sử dụng các tài nguyên của các máy hoặc đơn giản để sử dụng nó để phát động các cuộc tấn công lên các hệ thống khác, vì thế giúp chúng bảo vệ được sự nhận diện của riêng chúng và ẩn dấu nguồn thực sự của các cuộc tấn công.

Cũng có khả năng là chúng muốn xem xét (hoặc ăn cắp) các thông tin của hệ thống, gián điệp trực tiếp các hành động của hệ thống hoặc để gây hại một cách vật lý cho máy móc, bằng việc định dạng đĩa, thay đổi các dữ liệu, xóa hoặc sửa các phần mềm sống còn...

Về những kẻ thâm nhập trái phép, cần thiết lập một số khác biệt mà chúng không thật rõ ràng trong những khái niệm thực tế. Thông thường, chúng ta tham chiếu tới một tin tặc [Him01], như một người với tri thức chi tiết về điện toán, ít nhiều say sưa về việc lập trình và các vấn đề an ninh và thường thì, không vì những mục đích ác hiểm sử dụng tri thức của họ để bảo vệ chính họ hoặc các bên thứ ba bằng việc thâm nhập vào các hệ thống mạng để dò tìm ra những khiếm khuyết về an ninh và, trong một số trường hợp, để thử những khả năng của họ.

Một ví dụ có thể là cộng đồng GNU/Linux, với nhiều cao thủ (hacker), thì khái niệm hacker phải hiểu là một chuyên gia trong những vấn đề nhất định nào đó (hơn là một kẻ thâm nhập trái phép về an ninh).

Cùng lúc, chúng ta có những kẻ bẻ khóa. Đây là những nơi mà khái niệm này được sử dụng ít nhiều một cách tiêu cực, hướng tới những người sử dụng tri thức của họ để làm hỏng (hoặc phá hủy) các hệ thống, hoặc vì sự nổi tiếng của riêng họ, vì những lý do tài chính, với mưu toan gây hại hoặc đơn giản là bất tiện; vì những lý do gián điệp kỹ thuật, những hành động khủng bố không gian mạng … Cũng như vậy, chúng ta nói về việc tin tặc hoặc bẻ khóa, khi tham chiếu tới các kỹ thuật cho việc nghiên cứu, dò tìm và bảo vệ an ninh, hoặc, đối nghịch lại, các kỹ thuật được thiết kế để gây hại bằng việc đánh thủng an ninh hệ thống.

Thật không may, việc có được sự truy cập tới một hệ thống (hoặc nó không được bảo vệ hoặc đặc biệt an toàn) là dễ hơn nhiều so với tưởng tượng. Những kẻ thâm nhập trái phép luôn phát hiện ra những chỗ bị tổn thương mới (đôi khi được biết như là 'những lỗ hổng – lỗ thủng' hoặc những khai thác), cho phép chúng thâm nhập vào các lớp khác nhau của phần mềm. Tính phức tạp gia tăng chưa từng có của phần mềm (và phần cứng) làm cho ngày càng khó khăn hơn để thử nghiệm an ninh của các hệ thống

Trang 343/471

Page 344: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

máy tính theo một cách hợp lý chấp nhận được. Việc sử dụng phổ biến GNU/Linux trong các mạng, hoặc thông qua Internet hoặc các mạng riêng với công nghệ TCP/IP như các intranet, làm phơi ra các hệ thống, như những nạn nhân, đối với những cuộc tấn công về an ninh. [Bur02][Fen02][Line].

Thứ đầu tiên mà chúng ta phải làm là phá bỏ huyền thoại về an ninh máy tính: nó đơn giản không tồn tại. Những gì có thể đạt được là một mức độ nhất định nào đó về an ninh mà làm cho chúng ta cảm thấy an toàn bên trong những thông số nhất định nào đó. Nhưng như vậy, đây chỉ là một nhận thức về an ninh và, giống như tất cả sự nhận thức, có thể là sai làm cho chúng ta chỉ có thể trở nên nhận thức được vào phút cuối một khi các hệ thống đã bị ảnh hưởng. Kết luận logic là an ninh máy tính đòi hỏi một nỗ lực quan trọng về sự kiên định nhất quán, chủ nghĩa hiện thực và việc học hỏi trên một nền tảng thực hành hàng ngày.

Cần phải có khả năng thiết lập các chính sách an ninh cho các hệ thống của chúng ta cho phép ngăn ngừa, xác định và phản ứng chống lại các cuộc tấn công tiềm tàng. Và để nhận thức được rằng việc cảm nhận về an ninh mà chúng ta có thể có, là chính xác không gì hơn là: một cảm giác. Vì thế, chúng ta phải không phớt lờ bất kỳ chính sách được triển khai nào và cần giữ cho chúng được cập nhật, cũng như tri thức của chúng ta về vấn đề này.

Những cuộc tấn công có thể là mối đe dọa thường trực đối với các hệ thống và có thể làm tổn thương việc vận hành của chúng, cũng như các dữ liệu chúng ta quản lý; Chúng ta sẽ luôn phải xác định một chính sách nhất định nào đó về những yêu cầu an ninh cho các hệ thống và dữ liệu của chúng ta. Những mối đe dọa chúng ta có thể gặp có thể ảnh hưởng tới những khía cạnh sau:

• Tính bí mật: thông tin phải được truy cập được chỉ đối với những người có quyền hạn; chúng ta đang trả lời câu hỏi: ai sẽ có khả năng truy cập nó?

• Tính toàn vẹn: thông tin chỉ phải được sửa đổi với những người có quyền hạn: Ai có thể được làm với nó?

• Tính có thể truy cập được: thông tin phải được sẵn sàng cho chỉ những ai cần nó khi họ cần nó, với điều kiện là họ được phép: bằng cách nào và khi nào thì nó có thể được truy cập?

Hãy đi tiếp tới một sự làm sáng tỏ chắc chắn (không toàn diện) về những dạng thông thường của các cuộc tấn công mà chúng ta có thể gặp:

• Sự xác thực: các cuộc tấn công làm giả sự xác thực của người tham gia sao cho sự truy cập có được tới các chương trình hoặc các dịch vụ ban đầu đã nằm ngoài những phạm vi qui định.

• Sự chặn ngang (hoặc việc chọc ngang): cơ chế mà nhờ đó các dữ liệu bị bên thứ 3 chặn ngang đường mà đối với những người này các dữ liệu đã không được hướng tới.

• Sự giả mạo (hoặc sự thay thế): thay thế một số những người tham gia – hoặc các máy, các phần mềm hoặc các dữ liệu – bằng những đối tượng khác.

• Trộm cắp các tài nguyên: sử dụng các tài nguyên của chúng ta mà không được phép.

• Hoặc, đơn giản, sự phá hoại: sau tất cả, sự hiện diện của các cơ chế cho phép can thiệp với

Trang 344/471

Lưu ý

Những mối đe dọa ảnh hưởng tới tính bí mật, hoặc tính toàn vẹn hoặc tính có thể truy cập được đối với các hệ thống của chúng ta.

Page 345: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

việc hoạt động đúng của hệ thống hoặc các dịch vụ để gây ra sự bất tiện một phần hoặc đánh sập hoặc hủy bỏ các tài nguyên là khá phổ biến.

Các phương pháp và kỹ thuật chính xác được sử dụng có thể khác nhau đáng kể (hơn nữa, những đổi mới sáng tạo nảy sinh mỗi ngày), sẵn có đối với chúng ta, khi những người quản trị luôn liên hệ với lĩnh vực an ninh để biết chúng ta có thể phải đối mặt những gì trong công việc hàng ngày.

Đối với mỗi dạng của các cuộc tấn công, thường thì một hoặc nhiều hơn các phương pháp tấn công có thể được sử dụng, mà tới lượt nó có thể gọi một hoặc nhiều hơn các dạng tấn công nữa.

Về nơi nào một cuộc tấn công có khả năng xảy ra, chúng ta cần phải rõ ràng những gì có thể được thực hiện hoặc đối tượng của những phương pháp này sẽ là:

• Phần cứng: Ở khía cạnh này, mối đe dọa là trực tiếp vào tính có thể truy cập được, những gì mà ai đó có được sự truy cập tới phần cứng có khả năng để làm nhỉ? Trong trường hợp này, chúng ta sẽ thường cần tới các biện pháp “vật lý”, như là những kiểm soát an ninh truy cập tới những phạm vi nơi mà các máy tính được đặt để ngăn ngừa các vấn đề trộm cắp hoặc gây thiệt hại cho trang thiết bị được thiết kế để xóa bỏ sự phục vụ của chúng. Tính bí mật và toàn vẹn cũng có thể bị tổn thương nếu sự truy cập vật lý tới các máy cho phép khởi động các máy hoặc truy cập tới các tài khoản của người sử dụng có thể bị lộ.

• Phần mềm: Nếu tính có thể truy cập được bị tổn thương trong một cuộc tấn công, thì các chương trình có thể bị xóa hoặc bị vô hiệu hóa, từ chối truy cập. Trong trường hợp về tính bí mật, nó có thể gây ra các bản sao không được phép của phần mềm. Trong trường hợp của tính toàn vẹn, việc hoạt động mặc định của chương trình có thể bị sửa đổi, sao cho nó bị hỏng trong những tình huống nhất định nào đó, sao cho nó thực hiện các nhiệm vụ vì lợi ích của kẻ tấn công, hoặc có thể đơn giản gây tổn thương cho tính toàn vẹn của các dữ liệu của chương trình: làm cho chúng bị lộ, sửa đổi chúng hoặc đơn giản là trộm cắp chúng.

• Các dữ liệu: hoặc có cấu trúc, như là trong các dịch vụ cơ sở dữ liệu, hoặc quản lý phiên bản (như cvs) hoặc các tệp đơn giản. Các cuộc tấn công đe dọa tính có thể truy cập được có thể phá hủy hoặc hạn chế chúng, vì thế từ chối sự truy cập tới chúng. Trong trường hợp về tính bí mật, chúng ta có thể đang cho phép việc đọc một cách không được phép và tính toàn vẹn có thể bị ảnh hưởng khi những sửa đổi được thực hiện hoặc các dữ liệu mới được tạo ra.

• Kênh giao tiếp truyền thông (trên mạng, ví dụ thế): đối với những phương pháp ảnh hưởng tới tính có thể truy cập được, thì nó có thể gây ra sự phá hoại hoặc hạn chế các thông điệp và ngăn cản sự truy cập tới mạng. Theo tính bí mật, việc đọc và quan sát giao thông của các thông điệp tới hoặc từ máy tính. Và với sự chú ý về tính toàn vẹn, thì bất kỳ sự sửa đổi, chậm trễ, thay đổi trật tự, nhân bản hoặc làm sai lệch nào của các thông điệp đến và/hoặc đi.

9.1.1. Các kỹ thuật được sử dụng trong các cuộc tấn công

Các phương pháp được sử dụng là đa dạng và có thể phụ thuộc vào một yếu tố (phần cứng hoặc phần mềm) hoặc phiên bản của yếu tố đó. Vì thế, chúng ta cần duy trì phần mềm được cập nhật đối với

Trang 345/471

Lưu ý

Các cuộc tấn công có thẻ có mục đích để phá hủy, vô hiệu hóa hoặc gián điệp các thành phần của chúng ta, hoặc phần cứng, phần mềm hoặc các hệ thống truyền thông.

Page 346: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

những sửa lỗi về an ninh phát sinh và tuân theo những chỉ dẫn của nhà sản xuất hoặc nhà phân phối để bảo vệ yếu tố đó.

Bất chấp điều này, thường luôn có những kỹ thuật hoặc những phương pháp “hợp thời trang” bất kỳ lúc đặc biệt nào. Một số lưu ý ngắn gọn về những kỹ thuật tấn công ngày nay là:

• Khai thác các lỗi: hoặc sự khai thác các lỗi hoặc những khai thác [CERb][Ins][San], hoặc của một phần cứng, phần mềm, dịch vụ, giao thức hoặc bản thân hệ điều hành (ví dụ, trong nhân), và thường trong một phiên bản cụ thể nào đó của những thứ này. Thông thường, bất kỳ yếu tố nào của máy tính cũng ít nhiều có thiên hướng có các lỗi trong thiết kế của nó, hoặc đơn giản đối với những thứ mà chúng không nhìn thấy trước hoặc tính tới được. Theo chu kỳ, các lỗ hổng được phát hiện (đôi khi được biết như những sự khai thác, hoặc đơn giản là các bọ lỗi), có thể bị lợi dụng cho việc thâm nhập an ninh hệ thống. Thông thường các kỹ thuật tấn công chung hoặc được sử dụng, như kỹ thuật được giải thích tiếp sau, hoặc những kỹ thuật đặc biệt đối với yếu tố bị ảnh hưởng. Mỗi yếu tố bị ảnh hưởng sẽ có trách nhiệm của ai đó – hoặc của nhà sản xuất, của lập trình viên, của nhà phân phối hoặc của cộng đồng GNU/Linux – về việc sản xuất các phiên bản hoặc các bản vá mới để khắc phục những vấn đề này. Là những người quản trị, chúng ta có trách nhiệm được báo tin và và duy trì một chính sách có trách nhiệm đối với những cập nhật để tránh những rủi ro tiềm tàng của các cuộc tấn công. Nếu không có những giải pháp nào sẵn có, thì chúng ta có thể cũng nghiên cứu khả năng của việc sử dụng những giải pháp thay thế cho yếu tố đó hoặc vô hiệu hóa nó cho tới khi chúng ta tìm ra được một giải pháp.

• Virus: chương trình thường được thêm vào các chương trình khác và chúng sử dụng các cơ chế tự động sao chép và lan truyền. Thông thường đối với các virus được thêm vào các chương trình có thể chạy được, các thư điện tử, hoặc kết hợp chúng vào trong các tài liệu hoặc các chương trình mà phép các macro (không được xác minh). Chúng có lẽ là thứ giả mạo lớn nhất về an ninh lúc này.

Các hệ thống GNU/Linux được bảo vệ hầu như hoàn toàn chống lại những cơ chế này vì một vài lý do: trong các chương trình chạy được, chúng có sự truy cập rất hạn chế tới hệ thống, đặc biệt tới tài khoản của người sử dụng. Với ngoại lệ của người sử dụng root, nơi mà chúng ta phải rất cẩn thận với những gì nó chạy. Thư không có xu hướng sử dụng các macro không được xác minh (ngược lại đối với Outlook và Visual Basic Scripts trong Windows, là một khai thác cho đầu vào của các virus), và trong trường hợp của các tài liệu, thì chúng ta cũng ở trong một tình huống tương tự, vì các tài liệu không hỗ trợ các macro không được xác minh hoặc các ngôn ngữ script (như Visual Basic cho các ứng dụng (VBA) trong Microsoft Office).

Trong mọi trường hợp, sẽ phải chú ý tới những gì có thể xảy ra trong tương lai, vì những virus đặc biệt cho GNU/Linux có thể được tạo ra bằng việc lợi dụng một số lỗi hoặc khai thác. Cũng phải xem xét các hệ thống thư, vì mặc dù chúng ta có thể không tạo ra các virus, thì có thể truyền chúng: ví dụ, nếu hệ thống hoạt động như một bộ định tuyến của thư, thì các thông điệp với một virus có thể tới và có thể sau đó được gửi tới những người khác. Ở đây có thể triển khai các chính sách dò tìm và lọc virus. Sự giả mạo khác trong chủng loại các virus là các thông điệp

Trang 346/471

Lưu ý

Các phương pháp được những kẻ tấn công sử dụng là cực kỳ đa dạng và luôn luôn tiến hóa về các chi tiết công nghệ mà chúng sử dụng.

Page 347: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

spam, mặc dù không thường xuyên được sử dụng như những yếu tố tấn công, thì có thể được coi là có vấn đề vì tính độc hại mà chúng gây ra, và giá thành về tài chính có thể liên quan (trong việc mất thời gian và các tài nguyên).

Sâu: thông thường đây là một dạng chương trình lợi dụng một lỗi của hệ thống để chạy mã mà không có quyền. Chúng có xu hướng được sử dụng để lợi dụng các tài nguyên của máy, như là sử dụng CPU, khi nó dò tìm ra hệ thống đang không hoạt động hoặc không được sử dụng hoặc, với ý định độc hại, với mục đích trộm cắp các tài nguyên hoặc sử dụng chúng để làm dừng hoặc khóa hệ thống. Các kỹ thuật truyền và sao chép cũng thường được sử dụng.

Ngựa Trojan (hoặc “Trojans”): các chương trình hữu dụng kết hợp với một số chức năng nhưng ẩn dấu những chức năng khác, là những chức năng được sử dụng để giành các thông tin từ hệ thống hoặc để làm tổn thương nó. Một trường hợp đặc biệt có thể là một trong những mã nguồn dạng di động của các ứng dụng web như Java, JavaScript hoặc ActiveX; chúng thường yêu cầu sự tán thành để được chạy (ActiveX trong Windows), hoặc có các mô hình hạn chế của những gì chúng có thể làm (Java, JavaScript). Nhưng giống như tất cả các phần mềm, chúng cũng có các lỗi và là một phương pháp lý tưởng cho việc truyền Trojans.

• Cửa hậu (hoặc cửa bẫy): phương pháp cho việc truy cập một chương trình ẩn dấu mà có thể được sử dụng để trao sự truy cập tới hệ thống hoặc các dữ liệu được xử lý mà không có sự nhận biết của chúng ta. Những tác động khác có thể là việc thay đổi cấu hình hệ thống, hoặc cho phép các virus hoạt động. Cơ chế được sử dụng có thể bao gồm trong một số dạng phần mềm phổ biến hoặc trong một Trojan.

• Các bom logic: chương trình được nhúng vào chương trình khác mà nó kiểm tra khi những điều kiện nhất định nào đó xảy ra (tạm thời, các hành động của người sử dụng …) để kích hoạt bản thân và thực hiện các hoạt động không được phép.

• Trình ghi bàn phím (Keyloggers): chương trình đặc biệt chuyên cho việc thâm nhập các tương tác với bàn phím và/hoặc chuột của người sử dụng. Chúng có thể là các chương trình độc lập hoặc các Trojans được kết hợp vào trong các chương trình khác.

Thông thường, chúng có thể cần phải được giới thiệu trong một hệ thống mở đã từng có sự truy cập tới đó (mặc dù ngày càng thường xuyên hơn chúng có thể được kết hợp trong các Trojans được cài đặt). Ý tưởng là để chộp được bất kỳ cái gõ bàn phím nào, theo một cách thức như để chộp lấy các mật khẩu (ví dụ, đối với các tài khoản ngân hàng), sự tương tác với các ứng dụng, các website được tham quan, các dạng hoàn chỉnh khác...

• Trình quét (quét các cổng): thay vì một cuộc tấn công, nó đại diện cho một bước ưu tiên cấu tạo từ việc tập hợp các mục tiêu tiềm năng. Về cơ bản, nó cấu tạo từ việc sử dụng các công cụ cho phép xem xét mạng để tìm ra các máy tính với các cổng mở, hoặc TCP, UDP hoặc các giao thức khác, chỉ ra được sự hiện diện của các dịch vụ nhất định nào đó. Ví dụ, việc quét các máy tính tìm kiếm cổng TCP 80, chỉ ra sự hiện diện của các máy chủ web, từ đó có thể có được các thông tin về máy chủ và phiên bản được sử dụng để lợi dụng những chỗ có thể bị tổn thương được biết của nó.

• Các trình đánh hơi (sniffer): cho phép chộp các gói lưu thông trên một mạng. Với các công cụ

Trang 347/471

Page 348: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

đúng đắn, có thể phân tích các lối hành xử của máy: đâu là các máy chủ, các máy trạm, những giao thức nào được sử dụng, và trong nhiều trường hợp việc có được các mật khẩu của các dịch vụ không an ninh như telnet, rsh, rcp, ftp... mà chúng không nên được sử dụng (sử dụng các phiên bản an ninh thay vào đó: ssh, scp, sftp). Các trình đánh hơi (và các trình quét) không nhất thiết là một công cụ tấn công, khi mà chúng cũng có thể phục vụ cho việc phân tích giao thông của riêng chúng ta. Thông thường, các kỹ thuật của cả các trình quét và trình đánh hơi đều có xu thế được sử dụng từ một kẻ thâm nhập tìm kiếm những chỗ bị tổn thương của hệ thống hoặc nghiên cứu các dữ liệu của một hệ thống lạ (các trình quét), hoặc để phân tích sự tương tác bên ngoài của nó (trình đánh hơi).

• Bắt cóc (Hijacking): đây là các kỹ thuật cố đặt một máy tính theo một cách thức để chặn hoặc tái sản xuất lại chức năng của một dịch vụ trên một máy khác từ đó nó đã can thiệp được vào giao tiếp truyền thông. Chúng có xu hướng trở nên phổ biến trong các trường hợp của thư điện tử, truyền tệp hoặc web. Ví dụ, trong trường hợp của web, một phiên có thể bị bắt cóc và nó sẽ có khả năng tại tạo lại những gì mà người sử dụng đang làm, các trang đã thăm, tương tác với các mẫu biểu...

• Tràn bộ nhớ đệm: kỹ thuật khá phức tạp lợi dụng các lỗi lập trình trong các ứng dụng. Ý tưởng cơ bản là để lợi dụng sự tràn bộ nhớ đệm (buffer) trong các ứng dụng, hoặc các hàng đợi, các dãy … Nếu giới hạn không kiểm soát được, thì một chương trình tấn công có thể sinh ra một thông điệp hoặc dữ liệu còn lớn hơn so với mong đợi và sẽ gây hỏng hóc. Ví dụ, nhiều ứng dụng của C với các bộ nhớ đệm được viết không tốt, trong các dãy (array). Nếu vượt qua được các giới hạn thì có thể gây cho mã nguồn của chương trình sẽ bị viết đè gây ra một sự hoạt động không đúng hoặc sập dịch vụ hoặc máy. Hơn nữa, một biến thể phức tạp hơn cho phép các phần của chương trình được kết hợp trong cuộc tấn công (C được biên dịch hoặc các scripts của trình biên dịch - shell), có thể cho phép sự thực thi của bất kỳ mã nguồn nào mà kẻ tấn công mong muốn giới thiệu.

• Từ chối dịch vụ ('Tấn công DoS'): dạng tấn công này làm cho máy sụp đổ hoặc quá tải với một hoặc nhiều dịch vụ, biến chúng thành vô dụng. Một kỹ thuật khác là DDoS (DoS phân tán), dựa vào việc sử dụng một tập hợp các máy được phân tán để tạo ra cuộc tấn công hoặc quá tải dịch vụ. Dạng tấn công này có xu hướng được giải quyết với những cập nhật phần mềm, vì thông thường tất cả các dịch vụ mà chưa từng được thiết kế cho một tải công việc đặc biệt sẽ bị ảnh hưởng và sự bão hòa là không kiểm soát nổi. Các cuộc tấn công DoS và DDoS thường được sử dụng trong các cuộc tấn công vào các website hoặc các máy chủ DNS, mà chúng sẽ bị ảnh hưởng với những chỗ bị tổn thương của các máy chủ, ví dụ, các phiên bản đặc biệt của Apache hoặc BIND. Một khía cạnh khác đáng để tính tới là việc hệ thống cũng có thể bị sử dụng cho các cuộc tấn công DDoS, thông qua sự kiểm soát từ một cửa hậu hoặc một Trojan.

Một ví dụ khá đơn giản của cuộc tấn công này (DoS) được biết như là lũ SYN (SYN flood), cố gắng tạo ra các gói TCP để mở một kết nối, nhưng sau đó không làm gì nữa với nó, đơn giản để nó lại ở dạng mở; thứ này tiêu hao các tài nguyên hệ thống trong các cấu trúc dữ liệu của nhân,

Trang 348/471

Các website

SYN flood, hãy xem http://www.cert.org/advisories/CA-1996-21.html

Các vấn đề liên quan tới đánh bom thư và spam http://www.cert.org/techtips/email_bombing_spamming.html

Page 349: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

và các tài nguyên kết nối mạng. Nếu cuộc tấn công này được lặp lại hàng trăm hoặc hàng ngàn lần, thì tất cả các tài nguyên có thể trở nên bị chiếm dụng mà không sử dụng được, theo một cách thức khi mà những người sử dụng muốn sử dụng dịch vụ, thì sẽ bị từ chối vì các tài nguyên đã bị chiếm giữ. Một trường hợp khác được biết tới như là ném bom thư, hoặc đơn giản là việc gửi lại (thường với một người gửi giả mạo) cho tới khi các tài khoản thư bị bão hòa, gây ra cho hệ thống thư bị sập hoặc trở nên quá chậm mà không sử dụng được. Ở một mức độ nào đó những cuộc tấn công này là khá đơn giản để triển khai với các công cụ đúng kiểu và có giải pháp không dễ dàng, vì chúng lợi dụng việc vận hành nội bộ của các giao thức và dịch vụ; trong những trường hợp này cần nắm lấy những biện pháp đối với việc dò tìm và kiểm soát tiếp theo.

• Lừa gạt (spoofing): các kỹ thuật lừa gạt nhấn mạnh vào một loạt các phương pháp (thường thì, rất phức tạp) của việc làm sai lệch cả thông tin lẫn những người tham gia trong một truyền dẫn (gốc và/hoặc đích). Một số ví dụ về lừa gạt bao gồm:

– Lừa gạt về IP, làm sai lệch một máy, cho phép giao thông sai lệch được tạo ra hoặc việc chặn giao thông đã được hướng tới máy khác. Trong sự kết hợp với những cuộc tấn công khác, nó có thể còn đánh thủng cả sự bảo vệ của tường lửa.

– Lừa gạt ARP, kỹ thuật phức tạp (sử dụng một DDoS), cố gắng làm sai lệch các địa chỉ nguồn và những người nhận trên mạng bằng những biện pháp tấn công các bộ nhớ cache ARP của máy, theo một cách thức mà những địa chỉ thực sẽ được thay thế bằng những địa chỉ khác tại một loạt các điểm của mạng. Kỹ thuật này có thể đánh thủng tất cả các dạng bảo vệ, bao gồm cả các tường lửa, nhưng nó không phải là một kỹ thuật đơn giản.

– Thư điện tử có lẽ là đơn giản nhất. Nó cấu tạo từ việc sinh ra các thư điện tử giả mạo, về cả nội dung và địa chỉ nguồn. Đối với dạng này, các kỹ thuật của dạng này được biết như là kỹ thuật xã hội khá là phổ biến; về cơ bản chúng lừa người sử dụng theo một cách hợp lý, một ví dụ kinh điển là các thư điện tử giả mạo từ người quản trị hệ thống hoặc, ví dụ, từ ngân hàng nơi mà có tài khoản hiện hành của chúng ta, nói rằng đã có các vấn đề với các tài khoản và rằng chúng ta phải gửi các thông tin bí mật hoặc mật khẩu trước đó để giải quyết chúng, hoặc yêu cầu mật khẩu sẽ được thay đổi vì một vấn đề cụ thể nào đó. Đáng ngạc nhiên, kỹ thuật này (được biết như là phising) có ý định đánh lừa một số lượng đáng kể những người sử dụng. Ngay cả với (kỹ thuật xã hội) các phương pháp đơn giản: một tin tặc nổi tiếng đã bình luận rằng phương pháp ưa thích của anh ta là bằng điện thoại. Như một ví dụ, chúng ta mô tả trường hợp của một công ty xác thực (Verisign), đối với công ty này thì các tin tặc đã giành được chữ ký cá nhân của phần mềm của Microsoft chỉ bằng một cuộc gọi nhân danh một công ty đã nói có một vấn đề đã nảy sinh và họ cần khóa đó một lần nữa. Tóm lại, những mức độ cao về an ninh máy tính có thể vượt qua được chỉ bằng một cuộc gọi điện thoại đơn giản hoặc bằng một thư điện tử bị hiểu sai của một người sử dụng.

• Tiêm SQL (SQL injection): đây là một kỹ thuật nhắm vào các cơ sở dữ liệu và đặc biệt là các

Trang 349/471

Các website

Xem trường hợp của Microsoft trong: http://www.computerworld.com/softwaretopics/os/windows/story/0,10801,59099,00.html

Page 350: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

máy chủ web, thường lợi dụng việc lập trình không đúng của các mẫu biểu (form) web, nơi mà thông tin được cung cấp không được kiểm soát đúng. Nó không xác định rằng thông tin đầu vào là ở dạng đúng (thường được mong đợi như vậy) hoặc dạng hoặc các ký tự sai sẽ được đưa ra mà sẽ không kiểm soát được. Kỹ thuật này lợi dụng thực tế rằng các ký tự có được với các mẫu biểu (ví dụ web, mặc dù các cuộc tấn công có thể trụ vững được từ bất ký API nào cho phép truy cập tới một cơ sở dữ liệu, ví dụ PHP hoặc Perl) được sử dụng một cách trực tiếp cho việc tiến hành các tham vấn (trong SQL), sẽ tấn công một cơ sở dữ liệu cụ thể nào đó (đối với cơ sở dữ liệu này thì về nguyên tắc là không có sự truy cập trực tiếp nào). Thông thường, nếu có những chỗ bị tổn thương và sự kiểm soát mẫu biểu kém cỏi, thì mã SQL có thể bị tiêm vào trong mẫu biểu đó, theo một cách có thể làm cho những tham vấn SQL cung cấp thông tin tìm kiếm. Trong những trường hợp quyết liệt, có thể lấy được các thông tin về an ninh (tên và mật khẩu của người sử dụng trong cơ sở dữ liệu), hoặc thậm chí toàn bộ các bảng của cơ sở dữ liệu, hoặc sự mất các thông tin hoặc sự xóa có chủ tâm các dữ liệu. Kỹ thuật này trong các môi trường web có thể đặc biệt nghiêm trọng, vì một cuộc tấn công dạng này có thể đe dọa các luật về bảo vệ tính riêng tư của các dữ liệu cá nhân. Trong trường hợp này, thay vì vấn đề về an ninh hệ thống, chúng ta sẽ làm việc với một vấn đề về lập trình và kiểm soát với việc đánh máy các dữ liệu được mong đợi của ứng dụng, bổ sung thêm vào sự kiểm soát phù hợp tri thức về những chỗ có thể bị tổn thương hiện diện trong các phần mềm được sử dụng (các cơ sở dữ liệu, máy chủ web, API như PHP, Perl...).

• Viết script tự do (Cross-side scripting) (hoặc XSS): Một vấn đề khác có liên quan tới các môi trường web và, đặc biệt, tới những sự chỉnh sửa mã HTML và/hoặc các script mà một người sử dụng có thể có được bằng việc xem trực quan một website cụ thể nào đó, có thể chỉnh sửa được một cách động. Thường thì những lỗi khi liên quan tới việc kiểm tra mã HTML bị lợi dụng (tất cả các trình duyệt có các vấn đề với điều này, vì bản thân định nghĩa của HTML, cho phép thực tế là đọc mọi mã HTML dù nó là sai). Trong một số trường hợp, việc sử dụng các chỗ bị tổn thường có thể là trực tiếp thông qua các script trên trang web, nhưng thông thường sẽ có những kỹ thuật cho phép mã script sẽ được chèn vào, hoặc thông qua sự truy cập tới cookies của người sử dụng từ trình duyệt, hoặc bằng việc chỉnh sửa qui trình của việc định tuyến lại từ trang web này tới trang web khác. Cũng có những kỹ thuật sử dụng các khung (frame), có thể định tuyến lại mã HTML sẽ được xem hoặc treo trực tiếp trong trình duyệt. Đặc biệt, các máy tìm kiếm của các website có thể bị tổn thương, vì việc cho phép mã script được chạy. Nói chung, chúng là những cuộc tấn công với các kỹ thuật phức tạp, nhưng được thiết kế để bắt thông tin như cookies, có thể được sử dụng cho các phiên, và vì thế cho phép một người xác định nào đó được quyền định tuyến lại các website hoặc có được các thông tin của chúng. Một lần nữa từ viễn cảnh của hệ thống, đây là một câu hỏi về sử dụng phần mềm. Chúng ta cần kiểm soát và biết về những chỗ bị tổn thương được dò tìm ra trong các trình duyệt (và tạo ra hầu như toàn bộ tài nguyên mà chúng đưa ra để tránh những kỹ thuật này) và kiểm soát sự sử dụng phần mềm (các máy tìm kiếm được sử dụng, các phiên bản của máy chủ web, và các giao diện lập trình ứng dụng API được sử dụng trong các phát triển).

Một số khuyến cáo cơ bản chung cho an ninh, có thể là:

• Kiểm soát một yếu tố có vấn đề: những người sử dụng. Một trong những yếu tố mà có thể ảnh

Trang 350/471

Page 351: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hưởng nhất tới an ninh là tính bí mật và các mật khẩu, bị ảnh hưởng bởi hành vi của người sử dụng; điều này tạo điều kiện cho các hoạt động bên trong bản thân hệ thống ở phía của những kẻ tấn công tiềm năng. Hầu hết các cuộc tấn công có xu hướng tới từ bên trong hệ thống, nói cách khác, một khi kẻ tấn công có được sự truy cập tới hệ thống.

• Người sử dụng bao gồm cả những người mà hay quên (hoặc không thận trọng) và quên mật khẩu của họ một cách thường xuyên, nhắc tới nó trong các trao đổi, viết nó xuống một mảnh giấy để đâu đó hoặc gắn vào cạnh bàn làm việc hoặc máy tính, hoặc đơn giản là cho mượn nó cho những người quen biết khác. Một dạng khác là người sử dụng sử dụng các mật khẩu được báo trước, hoặc cùng y hệt mã số ID của người sử dụng, số chứng minh quốc gia, tên của bạn gái, mẹ, con chó..., mà với một số lượng tối thiểu thông tin có thể dễ dàng phát hiện được. Trường hợp khác là những người sử dụng thông thường với một số tri thức nhất định, họ có được các mật khẩu hợp lệ nhưng chúng ta luôn nhớ trong đầu rằng có những cơ chế có khả năng phát hiện ra chúng (việc phá mật khẩu, đánh hơi, lừa gạt...). Cần thiết lập một “văn hóa” về an ninh trong những người sử dụng và, thông qua việc sử dụng các kỹ thuật, bắt buộc họ thay đổi các mật khẩu của họ, mà không sử dụng các từ điển hình, cho những mật khẩu dài (hơn 2 hoặc 3 ký tự)... Gần đây, nhiều công ty và cơ quan đang triển khai kỹ thuật để người sử dụng ký một hợp đồng bắt buộc người sử dụng không để lộ mật khẩu hoặc cam kết các hành động về tính hợp lệ hoặc các cuộc tấn công từ những tài khoản khác (mặc dù tất nhiên điều này không ngăn được những người khác làm thế thông qua người sử dụng này).

• Không sử dụng hoặc chạy các chương trình không có đảm bảo nguồn gốc. Thông thường, các nhà phân phối sử dụng cơ chế xác minh chữ ký để xác minh các gói phần mềm đó là những gì mà họ nói, như là, ví dụ, lệnh md5 sums hoặc sử dụng các chữ ký GPG [Hatd] (lệnh gpg). Người bán hoặc nhà phân phối cung cấp một md5 sum của tệp của họ (hoặc một ảnh CD) và chúng ta có thể kiểm tra xác thực của nó. Sau này, các chữ ký cho cả các gói riêng rẽ và cho các kho của các gói được sử dụng trong các phát tán như một cơ chế để đảm bảo độ tin cậy của các nhà cung cấp.

• Không sử dụng những người sử dụng được trao các quyền ưu tiên hơn (như là người sử dụng root chẳng hạn) cho công việc thông thường của máy; bất kỳ chương trình nào (hoặc ứng dụng nào) cũng có thể có các quyền truy cập ở bất kỳ đâu.

• Không truy cập ở xa với các quyền ưu tiên của người sử dụng được ưu tiên hoặc để chạy các chương trình mà chúng có thể có các quyền ưu tiên. Đặc biệt nếu chúng ta không biết hoặc không được kiểm tra các mức độ về an ninh hệ thống.

• Không sử dụng các yếu tố khi chúng ta không biết chúng hành xử ra sao hoặc cố phát hiện cách mà chúng hành xử thông qua những hành động được lặp đi lặp lại.

Những biện pháp này có thể không thật có hiệu quả nhưng nếu chúng ta không bảo vệ hệ thống, thì không kiểm soát được những gì có thể xảy ra và, ngay cả như thế, không ai có thể đảm bảo rằng một chương trình độc hại không thể thâm nhập vào được và đánh thủng an ninh nếu chúng ta chạy nó với các quyền đúng. Nói cách khác, nói chung chúng ta cần rất thận trọng với tất cả các dạng hoạt động có liên quan tới sự truy cập và thực thi của ít nhiều các nhiệm vụ có quyền ưu tiên.

Trang 351/471

Page 352: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.1.2. Các biện pháp đối phó

Với nhìn nhận về các biện pháp có thể được thực hiện để đối phó lại các dạng tấn công xảy ra, chúng ta có thể thấy được một số biện pháp ngăn chặn và một số biện pháp cho việc dò tìm những gì đang xảy ra đối với các hệ thống của chúng ta.

Hãy xem xét một số dạng các biện pháp mà chúng ta có thể nắm để ngăn ngừa và dò tìm ra sự thâm nhập trái phép (các công cụ hữu dụng được nhắc tới, một số trong số đó chúng ta sẽ xem xét sau):

• Phá mật khẩu (Password cracking): Trong các cuộc tấn công tàn bạo thì sức mạnh được thiết kế để phá các mật khẩu, điều này là phổ biến để cố gắng có được sự truy cập thông qua những lần đăng nhập lặp đi lặp lại; nếu đầu vào là đúng, thì an ninh của người sử dụng đã bị tổn thương và cánh cửa để mở cho những dạng tấn công khác, như là các cuộc tấn công cửa hậu hoặc đơn giản là sự thâm nhập trái phép đối với tài khoản của người sử dụng. Để ngăn ngừa dạng tấn công này, chúng ta cần tăng cường cho chính sách của các mật khẩu, yêu cầu độ dài tối thiểu và những thay đổi thường xuyên về mật khẩu. Một thứ mà chúng ta cần tránh là sử dụng các từ phổ biến trong các mật khẩu: nhiều cuộc tấn công được thực hiện bằng việc sử dụng sức mạnh tàn bạo, với một tệp từ điển (chứa các từ trong ngôn ngữ của người sử dụng, những khái niệm phổ biến, tiếng lóng …). Dạng mật khẩu này sẽ là đầu tiên bị phá. Cũng có thể dễ dàng có được thông tin về nạn nhân, như là tên, số chứng minh nhân dân hoặc địa chỉ, và sử dụng các dữ liệu này cho việc thử nghiệm một mật khẩu. Đối với tất cả những thứ ở trên, cũng không được khuyến cáo có các mật khẩu với các số chứng minh quốc gia, các tên (của riêng người sử dụng hoặc của những người thân...), các địa chỉ … Một lựa chọn tốt có xu hướng sẽ là mật khẩu giữa 6-8 ký tự trong bảng tối thiểu với các nội dung của bảng abc và các con số bổ sung thêm một ký tự đặc biệt.

Ngay cả nếu mật khẩu được chọn tốt rồi, thì có thể không an toàn nếu được sử dụng cho những dịch vụ không an toàn. Vì thế, được khuyến cáo tăng cường các dịch vụ sử dụng các kỹ thuật mã hóa mà chúng bảo vệ các mật khẩu và các thông điệp. Và, mặt khác, để ngăn ngừa (hoặc không sử dụng) bất kỳ dịch vụ nào mà không hỗ trợ mã hóa, và hệ quả là dễ bị tổn thương đối với các cuộc tấn công có sử dụng các phương pháp, như là những kẻ đánh hơi (sniffers); trong số những thứ này, chúng ta có thể đưa vào các dịch vụ telnet, FTP, rsh, rlogin.

• Những khai thác lỗi (Bug expolits): tránh để các chương trình sẵn sàng mà lại không được sử dụng, là cũ hoặc không được cập nhật (vì chúng là lỗi thời). Áp dụng các bản vá và các cập nhật mới nhất có sẵn cho cả các ứng dụng và hệ điều hành. Hãy kiểm thử các công cụ dò tìm những chỗ bị tổn thương. Giữ được cập nhật với những chỗ bị tổn thương khi chúng được phát hiện ra.

• Virus: sử dụng các cơ chế hoặc các chương trình chống virus, các hệ thống lọc các thông điệp nghi vấn; tránh chạy các macros (mà không thể xác minh được). Chúng ta không nên tối thiểu hóa các

Trang 352/471

Các website

Xem các bản vá cho hệ điều hành tại: http://www.debian.org/security http://www.redhat.com/security http://fedoraproject.org/wiki/security

Các website

Đối với những chỗ có thể bị tổn thương, một công cụ tốt là Nessus. Để phát hiện những chỗ mới bị tổn thương, xem CERT trong: http://www.cert.org/advisories/ (site cũ) và http://www.us-cert.gov/cas/techalerts/index.html

Page 353: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tác động tiềm tàng của các virus, mỗi ngày chúng sẽ hoàn thiện hơn và về mặt kỹ thuật là có khả năng làm cho những virus đơn giản có thể vô hiệu hóa được các mạng chỉ trong vài phút (chúng ta chỉ phải xem xét một số các virus gần đây trong thế giới của Windows).

• Sâu: kiểm soát việc sử dụng các máy tính của chúng ta hoặc của người sử dụng ngoài các giờ thông thường và kiểm soát các giao thông đến và/hoặc đi.

• Ngựa Trojan (hoặc Trojan): Thường xuyên kiểm tra tính toàn vẹn của các chương trình đang sử dụng bằng việc kiểm tra tổng (check sum) hoặc các cơ chế chữ ký. Dò tìm ra những sự bất thường trong lưu thông đến và đi của hệ thống. Sử dụng các tường lửa để khóa sự lưu thông đáng ngờ. Một phiên bản khá nguy hiểm của Trojan cấu tạo từ các rootkit (được bàn thảo bên dưới), thực hiện hơn một chức năng nhờ một tập hợp của nhiều công cụ khác nhau. Để xác minh tính toàn vẹn, chúng ta có thể sử dụng các cơ chế tổng như md5 hoặc gpg, hoặc các công cụ tự động hóa qui trình này như Tripware hoặc AIDE.

• Cửa hậu (hoặc cửa bẫy): chúng ta cần có được sự chứng thực rằng các chương trình không chứa bất kỳ dạng cửa hậu ẩn dấu không được viết thành tài liệu nào từ những người bán hoặc cung cấp phần mềm và, tất nhiên, chỉ chấp nhận các phần mềm từ những nơi đưa ra được sự đảm bảo. Khi phần mềm thuộc về các bên thứ 3 hoặc tới từ các nguồn mà có thể đã sửa đổi các phần mềm gốc, nhiều nhà sản xuất (hoặc nhà phân phối) sẽ tích hợp một số dạng xác thực phần mềm dựa trên các mã tổng hoặc các chữ ký số (dạng md5 hoặc gpg)[Hatd]. Bất kỳ khi nào những thứ này sẵn sàng, hữu dụng để xác minh chúng trước khi xử lý để cài đặt phần mềm. Cần thử nghiệm hệ thống một cách tích cực, trước khi cài đặt nó như một hệ thống sản xuất.

Một vấn đề khác tạo thành từ sự chỉnh sửa các phần mềm đến sau. Trong trường hợp này, các hệ thống của các chữ ký hoặc tổng cũng có thể hữu dụng cho việc tạo các mã đối với các phần mềm đã được cài đặt sao cho để kiểm soát việc không có những thay đổi nào được thực hiện cho các phần mềm sống còn. Hoặc sao lưu các bản sao có thể so sánh để dò tìm ra những thay đổi.

• Các bom logic: Trong trường hợp này, chúng có xu hướng sẽ được ẩn dấu sau những kích hoạt qua thời gian hoặc thông qua các hành động của người sử dụng. Chúng ta có thể xác minh rằng không có các công việc không tương tác được đưa ra trong hệ thống của crontab hoặc ở dạng của các qui trình khác, mà chúng thường xuyên được chạy, hoặc được chạy ở phần nền (background) đã từ lâu (các lệnh w, các công việc). Trong mọi trường hợp, chúng ta có thể sử dụng các biện pháp phòng ngừa để ngăn ngừa các công việc không tương tác đối với những người sử dụng, hoặc chỉ cho phép chúng đối với những người sử dụng mà cần chúng.

• Trình ghi bàn phím (keylogger) và bộ công cụ root (rootkit): trong trường hợp này có thể là một số qui trình trung gian muốn ghi lại được việc nhấn các phím gõ bàn phím của chúng ta và cố gắng lưu lại chúng ở đâu đó. Chúng ta sẽ phải kiểm tra các tình huống nơi mà một qui trình lạ lẫm xuất hiện thuộc về người sử dụng của chúng ta, hoặc để dò tìm ra liệu có bất kỳ tệp nào mở mà với chúng thì chúng ta không làm việc một cách trực tiếp (ví dụ, lsof có thể là hữu dụng, xem man), hoặc các kết nối mạng, nếu chúng ta từng làm việc với một trình ghi bàn phím với việc

Trang 353/471

Website

Chúng ta có thể thấy công cụ chkrootkit tại: http://ww.chkrootkit.org

Page 354: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

gửi ra ngoài. Để thử nghiệm một chức năng rất cơ bản của một trình ghi bàn phím đơn giản, chúng ta có thể thấy lệnh script của hệ thống (xem script man). Trong trường hợp khác, rootkit (cũng có xu hướng đưa vào một trình ghi bàn phím) thường là một gói của một vài chương trình với một loạt các kỹ thuật cho phép kẻ tấn công, một khi nằm bên trong một tài khoản, sẽ sử dụng một loạt các yếu tố như là một trình ghi bàn phím, các cửa hậu, các Trojan (thay thế các lệnh hệ thống) … để lấy được các thông tin và các cửa vào hệ thống, thường đi kèm các chương trình xóa sạch các lưu ký log, để hạn chế bằng chứng về sự thâm nhập trái phép. Trường hợp đặc biệt nguy hiểm là các rootkit, được sử dụng hoặc tới từ các module nhân, cho phép hoạt động ở mức của nhân. Để dò tìm ra chúng, chúng ta sẽ cần kiểm soát việc không có lưu thông nào bên ngoài đi tới một địa chỉ cụ thể nào đó. Một công cụ hữu ích cho việc xác minh các rootkit là chkrootkit.

• Trình quét (quét các cổng): các trình quét có xu hướng được tung ra qua một hoặc nhiều hệ thống lặp cho việc quét các cổng được biết để dò tìm những gì để mở và những dịch vụ nào đang hoạt động (và để lấy được thông tin về các phiên bản của dịch vụ) có thể dễ dàng cho các cuộc tấn công.

• Trình đánh hơi (sniffers): tránh việc can thiệp ngang và vì thế ngăn ngừa được khả năng của những can thiệp đang được chèn vào. Một kỹ thuật là xây dựng phần cứng mạng, có thể được chia thành các phân vùng sao cho giao thông chỉ có thể lưu thông qua vùng sẽ được sử dụng, đặt các tường lửa để nối các phân vùng có khả năng kiểm soát giao thông đến và đi. Sử dụng các kỹ thuật mã hóa sao cho các thông điệp không thể bị đọc và bị dịch bởi ai đó can thiệp vào mạng. Đối với trường hợp của cả các trình quét và trình đánh hơi, chúng ta có thể sử dụng các công cụ như Whireshark [Wir] (trước kia gọi là Ethereal) và Snort để kiểm tra mạng hoặc, cho việc quét các cổng, Nmap. Các trình đánh hơi có thể được dò tìm ra trên mạng bằng việc tìm kiếm các máy trong chế độ Ethernet hỗn hợp (can thiệp vào bất kỳ gói lưu thông nào); card mạng thường chỉ chộp được giao thông đi tới nó (hoặc của dạng truyền phát đi – broadcast hoặc multicast).

• Bắt cóc (hijacking): các cơ chế triển khai cho việc mã hóa các dịch vụ, đòi hỏi xác thực, và nếu có thể, thường xuyên làm mới xác thực. Kiểm tra giao thông đến và đi thông qua sử dụng các tường lửa. Giám sát mạng để dò tìm ra các dòng giao thông đáng ngờ.

• Tràn bộ nhớ đệm: chúng có xu hướng là phổ biến như các lỗi hoặc lỗ thủng trong hệ thống, và có xu hướng sẽ được giải quyết thông qua các nâng cấp phần mềm. Trong mọi trường hợp, thông qua các lưu ký log, chúng ta có thể quan sát được những tình huống lạ của các dịch vụ bị hỏng mà chúng đáng phải hoạt động. Chúng ta cũng tối đa hóa kiểm soát các qui trình và sự truy cập đối với các tài nguyên để cô lập vấn đề này khi nó xảy ra trong các môi trường truy cập có kiểm soát, như được SELinux đưa ra (xem tiếp trong module này).

• Từ chối dịch vụ ('Tấn công DoS') và những thứ khác, như lụt SYN (SYN flood), hoặc đánh bom thư: sử dụng các biện pháp để khóa giao thông không cần thiết trên mạng của chúng ta (thông qua việc sử dụng các tường lửa, ví dụ thế). Với các dịch vụ ở những nơi có khả năng, chúng ta sẽ phải kiểm soát kích thước bộ nhớ đệm, số lượng máy trạm sẽ tham gia, thời gian ngưng trễ tạm thời của các kết nối (timeout), các khả năng của các dịch vụ …

Trang 354/471

Page 355: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• Lừa gạt (spoofing): a) lừa gạt IP, b) lừa gạt ARP, c) lừa gạt thư điện tử. Những trường hợp này đòi hỏi mã hóa dịch vụ mạnh, kiểm soát thông qua sử dụng các tường lửa, các cơ chế xác thực dựa trên một loạt các khía cạnh (ví dụ, không dựa trên IP, nếu nó có thể bị tổn thương), các cơ chế có thể được triển khai kiểm soát các phiên được thiết lập dựa trên vài thông số của máy tại cùng một thời điểm (hệ điều hành, vi xử lý, IP, địa chỉ Ethernet...). Cũng giám sát các hệ thống DNS, các lưu trữ cache ARP, các kho thư … để dò tìm ra những thay đổi trong các thông tin làm mất hiệu lực những thứ trước.

• Kỹ thuật xã hội (Social engineering): đây thực sự không phải là một vấn đề của công nghệ thông tin, mà chúng ta phải chắc chắn rằng những người sử dụng không làm cho an ninh tồi tệ hơn đi. Những biện pháp phù hợp như việc gia tăng các thông tin hoặc việc giáo dục người sử dụng và các kỹ thuật viên về an ninh: việc kiểm soát người nào sẽ có sự truy cập tới các thông tin an ninh sống còn và trong những điều kiện nào họ có thể nhượng lại các quyền đó cho những người khác. Các dịch vụ trợ giúp và duy trì của các công ty có thể là một điểm sống còn: việc kiểm soát ai có thông tin an ninh và cách mà nó được sử dụng.

• Về quan hệ với người sử dụng đầu cuối, việc cải thiện văn hóa mật khẩu, việc tránh để chúng được ghi chú ở đâu đó, nơi mà các bên thứ 3 có thể nhìn thấy chúng hoặc đơn giản là phát hiện được chúng.

Trang 355/471

Page 356: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.2. An ninh hệ thống

Đối mặt với các cuộc tấn công tiềm tàng, cần phải có những cơ chế phòng ngừa, dò tìm và khôi phục các hệ thống của chúng ta.

Để ngăn ngừa cục bộ, cần xem xét các cơ chế xác thực khác nhau và các quyền truy cập các tài nguyên để xác định chúng là đúng đắn và có khả năng đảm bảo cho tính bí mật và tính toàn vẹn của các thông tin. Trong trường hợp này, chúng ta sẽ phải tự bảo vệ mình chống lại những kẻ tấn công đã giành được sự truy cập vào hệ thống hoặc chống lại những người sử dụng thù địch mà họ muốn vượt qua những giới hạn được đặt ra trong hệ thống của chúng ta.

Về quan hệ đối với an ninh mạng, cần đảm bảo rằng các tài nguyên được ta đưa ra (nếu chúng ta cung cấp những dịch vụ nhất định nào đó) có những thông số cần thiết của tính bí mật và các dịch vụ này không thể được các bên thứ 3 không được phép sử dụng, nghĩa là bước đầu tiên sẽ phải kiểm soát dịch vụ nào trong số các dịch vụ được đưa ra là những dịch vụ chúng ta thực sự mong muốn, và sẽ không đưa ra những dịch vụ khác không kiểm soát được cùng một lúc. Trong trường hợp các dịch vụ là các máy trạm, thì cũng sẽ phải đảm bảo các cơ chế xác thực, theo nghĩa là chúng ta truy cập tới các máy chủ đúng và không có những trường hợp thay đổi các dịch vụ hoặc các máy chủ (thường khá khó khăn để dò tìm).

Đề cập tới bản thân các ứng dụng và dịch vụ, để bổ sung vào việc đảm bảo cấu hình đúng của các mức truy cập có sử dụng các quyền và sự xác thực của những người sử dụng được phép, chúng ta cần giám sát sự khai thác có thể các lỗi phần mềm. Tuy nhiên, bất kỳ ứng dụng nào, dù được thiết kế và được triển khai tốt cũng có thể có ít nhiều số lượng cao các lỗi có thể bị lợi dụng để vượt qua những giới hạn được đặt ra có sử dụng những kỹ thuật nhất định nào đó. Trong trường hợp này, cần tăng cường chính sách ngăn ngừa bao gồm việc giữ cho hệ thống được cập nhật càng nhiều càng tốt, sao cho chúng ta hoặc cập nhật bất kỳ khi nào có một sự sửa lỗi mới hoặc nếu, chúng ta bảo thủ, thì duy trì những phiên bản mà chúng là ổn định nhất về an ninh. Thông thường, điều này có nghĩa là việc kiểm tra theo chu kỳ vài site an ninh để học về những sự cố mới nhất được dò tìm ra trong phần mềm và những chỗ bị tổn thương bắt nguồn từ những phần mềm đó mà chúng có thể phơi các hệ thống ra với những sự cố về an ninh cục bộ hoặc của mạng của chúng ta.

Trang 356/471

Page 357: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.3. An ninh cục bộ

An ninh cục bộ [Pen][Hatb] là cơ sở cho việc bảo vệ hệ thống [Deb][Hatc], vì nó thường đi sau ý định đầu tiên từ mạng, đây là hàng rào bảo vệ thứ 2 trước một cuộc tấn công định giành quyền kiểm soát một phần của máy tính. Hơn nữa, hầu hết các cuộc tấn công kết thúc bằng việc sử dụng các tài nguyên cục bộ của hệ thống.

9.3.1. Các trình khởi động (Bootloaders)

Đối với an ninh cục bộ, các vấn đề có thể được bắt đầu với việc khởi động bằng sự truy cập vật lý mà một kẻ thâm nhập trái phép có thể giành được đối với một máy tính.

Một trong những vấn đề bắt đầu khi hệ thống khởi động. Nếu hệ thống có thể khởi động được từ đĩa hoặc CD, thì một kẻ tấn công có thể truy cập các dữ liệu của một phân vùng GNU/Linux (hoặc cũng vậy với Windows) chỉ bằng việc kích hoạt hệ thống tệp và đặt bản thân chúng vào như những người sử dụng root mà không cần phải có bất kỳ mật khẩu nào. Trong trường hợp này, chúng ta cần bảo vệ sự khởi động của máy từ BIOS, ví dụ, bằng việc bảo vệ sự truy cập với một mật khẩu, sao cho việc khởi động từ một đĩa CD là không được phép (ví dụ thông qua một Live CD hoặc đĩa mềm). Cũng hợp lý để cập nhật BIOS, vì nó cũng có thể có sự cố an ninh. Hơn nữa, chúng ta cần phải cẩn thận vì nhiều nhà sản xuất BIOS đưa ra những mật khẩu bổ sung được biết (một dạng của cửa hậu), nghĩa là chúng ta không thể phụ thuộc hoàn toàn vào các biện pháp này.

Bước tiếp sau là để bảo vệ trình khởi động, hoặc lilo hoặc grub, sao cho kẻ tấn công không có khả năng sửa đổi các lựa chọn khởi động của nhân hoặc trực tiếp sửa đổi sự khởi động (trong trường hợp của grub). Hoặc cả 2 cũng có thể được bảo vệ bằng sử dụng các mật khẩu.

Trong grub, tệp /sbin/grub-md5-crypt yêu cầu mật khẩu và tạo một tổng md5 có liên quan. Sau đó, giá trị có được sẽ được đưa vào /boot/grub/grub.conf. Theo đường thời gian trễ tạm ngưng timeout, chúng ta đưa ra:

password - -md5 sum-md5-calculated

Đối với lilo chúng ta đặt, hoặc một mật khẩu với:

password - <selected password>

hoặc một mật khẩu trong phân vùng mà chúng ta muốn:

image - /boot/vmlinux-version

password - <selected password>

restricted

Trong trường hợp này restricted cũng chỉ ra rằng sẽ không có khả năng thay đổi các thông số được truyền qua nhân từ dòng lệnh. Cần cẩn trọng thiết lập tệp /etc/lilo.conf như được bảo vệ sao cho chỉ người sử dụng root mới có các quyền ưu tiên đọc/ghi (chmod 600).

Trang 357/471

Lưu ý

Một loạt các cuộc tấn công, mặc dù chúng có thể tới từ bên ngoài, được thiết kế để giành được sử truy cập cục bộ.

Page 358: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Một vấn đề khác có liên quan tới việc khởi động là khả năng mà ai đó với sự truy cập tới bàn phím có thể khởi động lại hệ thống vì nếu họ nhấn CTRL+ALT+DEL, (trong một số phát tán bây giờ được vô hiệu hóa một cách mặc đinh) thì chúng sẽ gây ra việc tắt máy. Hành vi này được xác định trong /etc/inittab, với một dòng như:

ca: 12345:ctrlaltdel: /sbin/shutdown -tl -a -r now

Nếu được phép bình luận, thì khả năng khởi động lại này nên bị giải hoạt. Hoặc mặt khác, có thể tạo một tệp /etc/shutdown.allow, cho phép những người sử dụng nhất định nào đó khởi động lại.

9.3.2. Mật khẩu và bóng (shadows)

Các mật khẩu điển hình của các hệ thống UNIX ban đầu (và của những phiên bản đầu tiên của GNU/Linux) đã được mã hóa bằng các thuật toán DES (với các khóa nhỏ và một lời gọi hệ thống đã có trách nhiệm cho việc mã hóa và giải mã, đặc biệt là mật mã, xem man).

Thông thường, chúng nằm trong tệp /etc/passwd, trong trường thứ 2, ví dụ:

user: sndb565sadsd: ...

Nhưng vấn đề nằm ở thực tế là tệp này là hợp pháp cho bất kỳ người sử dụng nào, nghĩa là một kẻ tấn công có thể giành được tệp và sử dụng cho một cuộc tấn công tàn khốc, cho tới khi giải mã được các mật khẩu mà tệp có chứa, hoặc sử dụng một cuộc tấn công tàn khốc với các từ điển.

Bước đầu tiên là sử dụng các tệp mới /etc/shadow, nơi mà các mật khẩu bây giờ được lưu giữ. Tệp này chỉ hợp pháp đối với người sử dụng root và không với ai khác nữa. Trong trường hợp này, trong /etc/passwd một dấu sao (*) xuất hiện nơi mà trước đó mật khẩu đã được mã hóa. Mặc định, các phát tán GNU/Linux hiện hành sử dụng các mật khẩu dạng bóng (shadow) này, trừ phi được nói không sử dụng chúng.

Bước thứ 2 là thay đổi hệ thống mã hóa các mật khẩu thành thứ mà phức tạp hơn và khó phá được hơn. Bây giờ, cả Fedora và Debian đều đưa ra các mật khẩu bằng md5, chúng ta thường được phép chọn hệ thống vào lúc cài đặt. Cần thận trọng với các mật khẩu của md5, vì nếu chúng ta sử dụng NIS, thì có thế có vấn đề; nếu không, tất cả các máy trạm và máy chủ sẽ sử dụng md5 cho các mật khẩu của chúng. Các mật khẩu có thể được nhận diện trong /etc/shadow vì chúng có một tiền tố “$1$”.

Các hành động khác có thể bao gồm việc bắt buộc những người sử dụng thay đổi mật khẩu thường xuyên (lệnh change có thể là hữu dụng), đặt ra những giới hạn lên kích thước và nội dung của các mật khẩu, và thẩm định chúng với các từ điển với các khoản phổ biến chung.

Đối với các công cụ, là thú vị để có một chương trình phá mật khẩu (nghĩa là một chương trình để moi được mật khẩu), để kiểm tra tình trạng an ninh thực sự với các tài khoản của những người sử dụng, và vì thế việc ép thay đổi đối với những tài khoản mà chúng ta dò tìm thấy không an ninh. Hai trong số những tài khoản thường được sử dụng nhất đối với các quản trị viên là John the Ripper và crack. Chúng cũng làm việc với một từ điển, nên sẽ thú vị để có một số từ điển ASCII bằng tiếng Anh (có thể thấy trên web). Một công cụ khác là “Slurpie”, có thể thử nghiệm vài máy cùng một lúc.

Một vấn đề mà chúng ta luôn cần tính tới là chạy những thử nghiệm này trong các hệ thống. Phải

Trang 358/471

Page 359: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

không quên rằng những người quản trị các hệ thống khác (hoặc nhà cung cấp truy cập hoặc nhà cung cấp dịch vụ Internet ISP) sẽ có các hệ thống dò tìm thâm nhập trái phép được kích hoạt và chúng ta có thể bị tố cáo vì những mưu toan thâm nhập trái phép, hoặc đứng trước các nhà chức trách có thẩm quyền (các đơn vị chống tội phạm máy tính) hoặc trước ISP của chúng ta sao cho họ đóng lại sự truy cập của chúng ta. Cần rất thận trọng với việc sử dụng các công cụ an ninh, mà chúng luôn là ranh giới của an ninh hoặc sự thâm nhập trái phép.

9.3.3. Suid và những bits gây khó

Một vấn đề quan trọng khác ảnh hưởng tới một số quyền đặc biệt sử dụng trong các tệp hoặc script.

Bit gây khó này được sử dụng một cách đặc biệt trong các thư mục tạm thời, nơi mà chúng ta muốn trong một số nhóm (đôi khi không có liên quan) với bất kỳ người sử dụng nào có khả năng ghi, nhưng chỉ người chủ của thư mục mới có khả năng để xóa, hoặc người chủ của tệp nằm trong thư mục đó. Một ví dụ kinh điển về bit này là thư mục tạm /tmp. Cần chắc chắn rằng không có thư mục nào ở dạng này, vì chúng có thể cho phép bất kỳ ai ghi vào chúng, vì thế chúng ta phải kiểm tra việc không có gì hơn là những thư mục thuần túy cần thiết như là các thư mục tạm. Bit này được đặt bằng cách sử dụng (chmod +t dir), và có thể được loại bỏ bằng -t. Trong một lệnh ls nó sẽ xuất hiện như một thư mục với các quyền drwxrwxrwt (hãy ghi nhớ chữ t ở cuối cùng).

Bit setuid cho phép một người sử dụng chạy (hoặc một script trình biên dịch dòng lệnh (shell) hoặc chạy được) với các quyền của người sử dụng khác. Trong một số trường hợp điều này có thể là hữu dụng, nhưng nó cũng nguy hiểm tiềm tàng. Đây là trường hợp, ví dụ, của các chương trình với setuid như root: một người sử dụng, mặc dù không có các quyền root, có thể chạy được một chương trình với setuid mà có thể có được các quyền cục bộ của người sử dụng root. Điều này là rất nguy hiểm trong trường hợp của các script, vì chúng có thể bị soạn sửa và sửa đổi để làm bất kỳ thứ gì. Vì thế, chúng ta cần hạn chế nó. Bit này được đặt bằng cách sử dụng chmod +s, hoặc áp dụng nó đối với người chủ (khi ấy nó được gọi là suid) hoặc đối với nhóm (khi ấy nó được gọi là bit sgid); nó có thể được loại bỏ với -s. Trong trường hợp xem với lệnh ls, thì tệp này sẽ xuất hiện với -rwSrw-rw (lưu ý tới S), nếu nó chỉ là suid, thì trong sgid ký tự S có thể xuất hiện sau ký tự w thứ 2.

Trong trường hợp sử dụng chmod với hệ 8, thì 4 số sẽ được sử dụng, trong đó 3 số cuối cùng là các quyền kinh điển rwxrwxrwx (hãy nhớ là chúng ta phải bổ sung vào số 4 cho r, số 2 cho w, và số 1 cho x), và số đầu có giá trị cho mọi quyền đặc biệt mà chúng ta muốn (được bổ sung vào): 4 (cho suid), 2 (sgid), và 1 (cho bít gây khó).

9.3.4. Cho phép các máy chủ hosts

Hệ thống có vài tệp cấu hình đặc biệt làm cho có khả năng cho phép truy cập một số máy chủ hosts đối với một số dịch vụ mạng, nhưng những lỗi của chúng có thể sau này làm cho an ninh cục bộ bị tấn công. Chúng ta có thể thấy:

• user.rhosts: cho phép một người sử dụng chỉ định một số máy tính (và người sử dụng) có thể sử dụng tài khoản của chúng thông qua các lệnh “r” (rsh, rcp...) mà không phải nhập vào mật khẩu của tài khoản. Điều này là nguy hiểm tiềm tàng, vì một cấu hình của người sử dụng mà tồi thì

Trang 359/471

Page 360: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

có thể cho phép vào với những người sử dụng không mong muốn hoặc có thể cho phép một kẻ tấn công (với truy cập tới tài khoản của người sử dụng) để thay đổi các địa chỉ trong .rhosts để vào một cách thuận tiện mà không có bất kỳ dạng kiểm soát nào. Thường thì, không nên cho phép tạo ra những tệp này và thậm chí nên xóa chúng hoàn toàn và vô hiệu hóa các lệnh “r”.

• /etc/hosts.equiv: điều này chính xác là y hệt như với các tệp .rhosts nhưng ở mức của máy, chỉ định những dịch vụ nào, những người sử dụng nào và những nhóm nào có thể truy cập được các lệnh “r” mà không cần kiểm soát mật khẩu. Hơn nữa, một lỗi như việc đặt một dấu “+” lên một dòng của tệp đó cho phép truy cập tới “bất kỳ” máy nào. Ngày nay, tệp này không thường tồn tại hoặc luôn có dịch vụ ssh để thay thế cho “r”.

• /etc/hosts.lpd: trong hệ thống in LPD được sử dụng để đặt các máy có thể truy cập hệ thống in. Cần rất thận trọng, nếu chúng ta đang không phục vụ, hãy vô hiệu hóa hoàn toàn sự truy cập tới hệ thống, và nếu chúng ta đang phục vụ, hãy hạn chế tối đa các máy thực sự cần sử dụng nó. Hoặc cố gắng thay đổi sang một hệ thống CUPS hoặc LPRng, chúng có sự kiểm soát nhiều hơn nhiều đối với các dịch vụ đó. Hệ thống LPD là một mục tiêu phổ biến cho dạng các cuột tấn công với sâu bọ hoặc tràn bộ nhớ và một số lỗi quan trọng sẽ được ghi thành tài liệu. Cần phải được canh phòng nếu chúng ta sử dụng hệ thống này và tệp hosts.lpd.

9.3.5. Các module PAM

Các module PAM [Pen][Mor03] là một phương pháp cho phép người quản trị kiểm soát cách mà một quá trình xác thực người sử dụng được thực hiện cho những ứng dụng nhất định nào đó. Các ứng dụng cần phải được tạo ra và được liên kết tới các thư viện PAM.

Về cơ bản, các module PAM là một tập hợp của các thư viện được chia sẻ có thể được kết hợp vào các ứng dụng như một phương pháp cho việc kiểm soát xác thực người sử dụng của chúng. Hơn nữa, phương pháp xác thực này có thể thay đổi được (bằng những biện pháp của việc cấu hình các module PAM), mà không phải thay đổi ứng dụng.

Các module PAM (các thư viện) có xu hướng sẽ ở trong thư mục /lib/security (ở dạng của các đối tượng tệp tải được một cách động). Cấu hình của PAM có trong thư mục /etc/pam.d, nơi mà một tệp cấu hình PAM xuất hiện với mỗi ứng dụng đang sử dụng các module PAM. Chúng ta thấy cấu hình xác thực của các ứng dụng và các dịch vụ như ssh, đăng nhập đồ họa của hệ thống X Window, như xdm, gdm, kdm, xscreensaver... hoặc, ví dụ, sự đăng nhập hệ thống (nơi vào với tên và mật khẩu của người sử dụng). Các phiên bản cũ của PAM đã sử dụng tệp (thường trong /etc/pam.conf), nơi mà cấu hình PAM đã được đọc nếu thư mục /etc/pam.d không tồn tại.

Dòng điển hình của những tệp đó (trong /etc/pam.d) có thể có định dạng này (nếu sử dụng /etc/pam.conf chúng ta có thể phải bổ sung dịch vụ mà tệp thuộc về như là một trường đầu tiên):

module-type control-flag module-path arguments

mà nó chỉ định:

Trang 360/471

Website

Để có thêm thông tin, hãy xem “Chỉ dẫn cho những người quản trị hệ thống Linux-PAM”; http://www.kernel.org/pub/linux/libs/pam/Linux-PAM.html

Page 361: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

a) dạng module: nếu đây là một module đòi hỏi sự xác thực của người sử dụng (auth), hoặc đã có sự truy cập hạn chế (tài khoản - account); mọi thứ chúng ta cần phải làm khi người sử dụng vào hoặc ra (phiên – session); người sử dụng phải cập nhật mật khẩu.

b) các cờ kiểm soát: chúng chỉ định liệu nó có được yêu cầu, có là cần thiết, hoặc nó có là đủ hay là sự tùy chọn. Đây là một cú pháp. Còn có cờ khác cập nhật hơn làm việc theo cặp đôi giá trị và hành động.

c) Đường dẫn của module

d) Các đối số được đi qua module này (chúng phụ thuộc vào từng module).

Vì một số dịch vụ cần vài dòng cấu hình chung, có khả năng có những hoạt động để đưa vào những định nghĩa chung cho các dịch vụ khác, chúng ta chỉ phải bổ sung một dòng với:

# include service

Một ví dụ nhỏ về sử dụng các module PAM (trong một phát tán Debian), có thể là sử dụng chúng trong quá trình đăng nhập (chúng ta cũng đã liệt kê các dòng được đưa vào từ các dịch vụ khác):

auth requisite pam_security.so

auth requisitepam_nologin.so

auth requiredpam_env.so

auth requiredpam_unix.so nullok

account required pam_unix.so

session required pam_unix.so

session optional pam_lastlog.so

session optional pam_motd.so

session optional pam_mail.so standard noenv

password required pam_unix.so nullok obscure min = 4 max = 8 md5

Điều này xác định các module PAM được yêu cầu để kiểm soát xác thực người sử dụng khi đăng nhập. Một trong những module, pam_unix.so, là một module mà thực sự xác minh mật khẩu người sử dụng (xem xét mật khẩu của tệp, bóng shadow...).

Những module khác kiểm tra phiên để xem khi nào thì khoản vào mới nhất đã xảy ra hoặc lưu giữ lại khi người sử dụng gõ vào và lưu lại (đối với lệnh lastlog), cũng có một module có trách nhiệm cho việc xác định liệu người sử dụng có thư để đọc (xác thực cũng được yêu cầu) và người khác kiểm soát những thay đổi của mật khẩu này (nếu người sử dụng bị bắt buộc phải làm thế với đăng nhập đầu tiên) và rằng nó có từ 4 tới 8 ký tự, và rằng md5 có thể được sử dụng để mã hóa.

Trong trường hợp này chúng ta có thể cải thiện an ninh của người sử dụng: auth và passwords cho phép

Trang 361/471

Page 362: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các mật khẩu có độ dài là nil: đây là đối số nullok của module này. Điều này có thể cho phép có những người sử dụng với các mật khẩu rỗng (là nguồn tiềm tàng đối với các cuộc tấn công). Nếu chúng ta loại bỏ đối số này, thì chúng ta không còn cho phép các mật khẩu rỗng với qui trình đăng nhập nữa. Y hệt như vậy có thể được thực hiện trong tệp cấu hình mật khẩu (trong trường hợp này, lệnh thay đổi các mật khẩu), cũng đưa ra nullok. Hành động khác có thể là gia tăng kích thước cực đại của các mật khẩu trong các tệp, ví dụ, với max = 16.

9.3.6. Những sửa đổi hệ thống

Một vấn đề khác có thể là sự sửa đổi các lệnh hệ thống hoặc các cấu hình cơ bản, thông qua việc đưa ra các Trojan, hoặc các cửa hậu, chỉ bằng việc đưa ra các phần mềm thay thế hoặc chỉnh sửa một chút hành vi của các phần mềm hệ thống.

Một trường hợp điển hình là khả năng ép root chạy các lệnh giả của hệ thống; ví dụ, nếu root đưa vào “.” trong biến PATH của nó, thì có thể cho phép các lệnh sẽ được chạy từ thư mục hiện hành của nó, có thể cho phép đặt các tệp đã thay thế các lệnh hệ thống và có thể được chạy như một ưu tiên trước các lệnh hệ thống. Qui trình y như vậy có thể được thực hiện với một người sử dụng cho dù các quyền của một người sử dụng là hạn chế hơn nhiều, thì nó vẫn không ảnh hưởng nhiều tới hệ thống, so với an ninh của bản thân người sử dụng đó. Trường hợp điển hình khác là trường hợp các màn hình đăng nhập giả, thay thế qui trình đăng nhập điển hình, mật khẩu, với một chương trình giả có thể lưu trữ những mật khẩu được đưa vào.

Trong trường hợp của những sửa đổi này, điều sống còn là tăng cường một chính sách kiểm kê những thay đổi, hoặc thông qua việc tính toán các chữ ký hoặc các tổng (gpg hoặc md5), hoặc sử dụng một số dạng phần mềm kiểm soát như là Tripwire hoặc AIDE. Đối với Trojan chúng ta có thể có các dạng dò tìm hoặc sử dụng các công cụ khác nhau như chkrootkit, nếu những thứ này tới từ sự cài đặt triển khai của một số rootkit nổi tiếng.

Trang 362/471

Website

Danh sách AusCert UNIX: http://www.auscert.org.au/5816

Website

chkrootkit, xem: http://www.chkrootkit.org/

Page 363: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.4. SELinux

An ninh truyền thống trong hệ thống từng dựa vào các kỹ thuật kiểm soát truy cập DAC (Discretionary Access Control) một cách tùy ý, nơi mà thông thường mỗi chương trình có sự kiểm soát toàn phần đối với sự truy cập tới các tài nguyên hệ thống. Nếu một chương trình đặc biệt (hoặc cho phép người sử dụng) quyết định tạo ra một sự truy cập không đúng (ví dụ, để các dữ liệu bí mật mở, hoặc bằng sự cẩu thả hoặc hoạt động không đúng). Vì thế trong DAC, một người sử dụng có toàn quyền đối với các đối tượng thuộc về anh/chị ta và các chương trình anh/chị ta chạy. Chương trình được chạy sẽ có cùng các quyền như người sử dụng đang chạy nó. Vì thế an ninh hệ thống sẽ phụ thuộc vào các ứng dụng đang được chạy và ở những chỗ bị tổn thương có thể có hoặc các phần mềm độc hại có thể đưa vào, và sẽ đặc biệt ảnh hưởng tới các đối tượng đó (các chương trình, tệp hoặc tài nguyên khác) mà người sử dụng có sự truy cập tới chúng. Trong trường hợp của người sử dụng root, điều này có thể gây tổn thương cho an ninh toàn bộ hệ thống.

Trong một lưu ý riêng khác, các kỹ thuật kiểm soát truy cập bắt buộc MAC (Mandatory Access Control), phát triển các chính sách an ninh (được người quản trị xác định) nơi mà hệ thống có sự kiểm soát toàn phần đối với các quyền truy cập được trao cho từng nguồn. Ví dụ, có thể trao sự truy cập tới các tệp không có các quyền (ở dạng Unix), mà, với các chính sách MAC, có sự kiểm soát bổ sung để xác định rõ ràng những tệp nào một qui trình được phép truy cập và mức độ truy cập nào chúng ta muốn trao. Ngữ cảnh chỉ ra trong những tình huống nào một đối tượng có thể truy cập đối tượng khác được thiết lập.

SELinux [NSAb] là một thành phần dạng MAC được đưa vào gần đây trong nhánh 2.6.x của nhân, mà các phát tán đang kết hợp một cách tích cực: Fedora/Red Hat để nó là mặc định (mặc dù có khả năng thay đổi nó trong khi cài đặt) và là một thành phần tùy chọn trong Debian.

SELinux triển khai các chính sách an ninh dạng MAC, cho phép các quyền truy cập được tinh lọc hơn so với các quyền của tệp UNIX truyền thống. Ví dụ, người quản trị có thể cho phép các dữ liệu được bổ sung tới một tệp ghi lưu ký log, nhưng không được ghi lại hoặc cắt ngắn nó (các kỹ thuật thường được những kẻ tấn công sử dụng để xóa các dấu vết của chúng). Trong một ví dụ khác, có thể cho phép các chương trình mạng liên kết tới cổng (hoặc các cổng) mà chúng yêu cầu, nhưng từ chối truy cập tới các cổng khác (ví dụ, nó có thể là một kỹ thuật giúp kiểm soát các Trojan hoặc cửa hậu nhất định nào đó).

SELinux đã được cơ quan an ninh quốc gia Mỹ NSA phát triển với những đóng góp trực tiếp từ một loạt các công ty cho các hệ thống UNIX và tự do, như Linux và BSD. Nó đã được đưa ra tự do vào năm 2000 và kể từ đó nó đã được tích hợp vào các phát tán GNU/Linux khác nhau.

Trong SELinux có một mô hình dạng miền, nơi mà mỗi qui trình chạy trong một cái gọi là ngữ cảnh an ninh và bất kỳ tài nguyên nào (tệp, thư mục, socket …) đều có một dạng có liên quan tới nó. Có một tập hợp các qui định chỉ ra những hành động nào có thể được thực hiện theo từng ngữ cảnh trong từng dạng. Một trong những ưu điểm của mô hình dạng ngữ cảnh là việc các chính sách được xác định có thể được phân tích (có các

Trang 363/471

Website

Một số tài nguyên của SELinux:

http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/sellinux-guide/ http://www.nsa.gov/research/selinux/index.shtml, http://fedoraproject.org/wiki/SELinux

Page 364: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

công cụ) cho việc xác định những luồng thông tin nào đang được phép, ví dụ, để dò tìm ra một loạt đường đi của cuộc tấn công, hoặc liệu chính sách có là đủ hoàn chỉnh để bao trùm tất cả các truy cập tiềm năng hay chưa.

Nó có những gì được biết tới như là cơ sở dữ liệu về chính sách của SELinux (SELinux policy database) kiểm soát tất cả các khía cạnh của SELinux. Nó xác định những ngữ cảnh nào mỗi chương trình có thể sử dụng để chạy và chỉ ra những dạng nào mỗi ngữ cảnh có thể truy cập được.

Trong SELinux, mỗi tiến trình hệ thống có một ngữ cảnh cấu tạo từ 3 phần: một sự nhân diện, một vai trò và một miền. Sự nhận diện là tên và tài khoản của người sử dụng hoặc system_u đối với các tiến trình hệ thống hoặc user_u nếu người sử dụng không có các chính sách xác định. Vai trò xác định những ngữ cảnh có liên quan là gì. Ví dụ user_r là không được phép có ngữ cảnh sysadm_t (miền chính cho người quản trị hệ thống). Vì thế một user_r với sự nhận diện user_u không thể giành được một ngữ cảnh sysadm_t bằng mọi cách. Một ngữ cảnh an ninh luôn được chỉ định bằng tập hợp các giá trị như:

root:sysadm_r: sysadm_t

là ngữ cảnh cho người quản trị hệ thống, xác định ngữ cảnh của sự nhận diện, vai trò và an ninh của nó.

Ví dụ, trong một máy với SELinux được kích hoạt (trong trường hợp này là một Fedora) chúng ta có thể thấy lựa chọn -Z của ps đối với các ngữ cảnh có liên quan tới các tiến trình:

# ps ax -Z

Nhãn PID TTY Tình

tr �ng

Th �i

gian

L �nh

system_u: system_r: init_t 1 7 Ss 0:00 init

system_u: system_r: kernel_t 2 7 S 0:00 [migration/0]

system_u: system_r: kernel_t 3 7 S 0:00 [ksoftirqd/0]

system_u: system_r: kernel_t 4 7 S 0:00 [watchdog/0]

system_u: system_r: kernel_t 5 7 S 0:00 [migration/1]

system_u: system_r: kernel_t 6 7 SN 0:00 [migration/1]

system_u:system_r:kernel_t 7 ? S 0:00 [watchdog/1]

system_u:system_r:syslogd_t 2564 ? Ss 0:00 syslogd -m 0

system_u:system_r:klogd_t 2567 ? Ss 0:00 klogd -x

system_u:system_r:irqbalance_t 2579 ? Ss 0:00 irqbalance

system_u:system_r:portmap_t 2608 ? Ss 0:00 portmap

user_u:system_r:rpcd_t 2629 ? Ss 0:00 rpc.statd

user_u:system_r:unconfined_t 4812 ? Ss 0:00 /usr/libexec/gconfd-2 5

user_u:system_r:unconfined_t 4858 ? Sl 0:00 gnome-terminal

user_u:system_r:unconfined_t 4861 ? S 0:00 gnome-pty-helper

Trang 364/471

Page 365: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Nhãn PID TTY Tình

tr �ng

Th �i

gian

L �nh

user_u:system_r:unconfined_t 4862 pts/0 Ss 0:00 bash

user_u:system_r:unconfined_t 4920 pts/0 S 0:00 gedit

user_u:system_r:rpcd_t 4984 ? Ss 0:00 rpc.idmapd

user_u:system_r:gpm_t 5029 ? Ss 0:00 gpm -m /dev/input/mice -t

exps2

user_u:system_r:unconfined_t 5184 pts/0 R+ 0:00 ps ax -Z

user_u:system_r:unconfined_t 5185 pts/0 D+ 0:00 bash

và với ls có sử dụng lựa chọn -Z chúng ta có thể thấy các nội dung có liên quan tới các tệp và thư mục:

# ls -z

drxr-xr-x josep josep user_u:object_r:user_home_t Desktop

drwxrwxr-x josep josep user_u:object_r:user_home_t proves

-rw-r- -r- - josep josep user_u:object_r:user_home_t yum.conf

và từ console chúng ta có thể thấy ngữ cảnh với:

$ id -z

user_u:system_r:unconfines_t

Trong quan hệ với chế độ chức năng này, SELinux thể hiện 2 chế độ được biết như: cho phép (permissive) và ép buộc (enforcing). Trong chế độ cho phép, sự truy cập không được phép được cho phép, nhưng bị kiểm soát trong các lưu ký log tương ứng (thường là trực tiếp qua /var/log/messages hoặc, phụ thuộc vào phát tán, với sự sử dụng của kiểm toán trong /var/log/audit/audit.log). Trong chế độ ép buộc thì không dạng truy cập không được phép nào theo các chính sách xác định là được cho phép cả. Cũng có thể vô hiệu hóa SELinux thông qua tệp cấu hình của nó (thường là trong /etc/selinux/config), bằng việc thiết lập SELINUX=disabled.

Cần thận trọng với việc kích hoạt và vô hiệu hóa SELinux, đặc biệt với việc gắn nhãn cho các ngữ cảnh trong các tệp, vì trong giai đoạn các nhãn được kích hoạt/vô hiệu hóa có thể sẽ mất hoặc đơn giản là không được thực hiện. Do vậy, khi sao lưu hệ thống tệp, cần chắc chắn rằng các nhãn của SELinux được giữ lại.

Vấn đề có thể khác sẽ được tính tới là số lượng lớn các qui định chính sách an ninh có thể tồn tại và có thể gây ra những hạn chế về việc kiểm soát các dịch vụ. Đối mặt với một dạng vận hành không đúng cụ thể nào đó, đáng để xác định trước rằng không phải chính xác là SELinux đang ngăn ngừa việc hoạt động vì một sự hạn chế an ninh ngặt nghèo quá mức (xem phần chỉ trích đối với SELinux) hoặc những lựa chọn không mong đợi được kích hoạt (có thể đòi hỏi một sự thay đổi trong cấu hình của các Booleans (dạng logic) như chúng ta sẽ thấy).

Trong quan hệ với chính sách được áp dụng, SELinux hỗ trợ 2 dạng khác nhau: có chủ đích (targeted)

Trang 365/471

Page 366: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

và nghiêm ngặt (strict). Ở dạng chính sách có chủ đích, hầu hết các tiến trình hoạt động không có những hạn chế và chỉ các dịch vụ cụ thể nào đó (một số daemon) được đặt vào các ngữ cảnh an ninh khác nhau được nằm trong chính sách về an ninh. Ở dạng chính sách nghiêm ngặt, tất cả các tiến trình sẽ được chỉ định tới các ngữ cảnh an ninh và nằm trong các chính sách được xác định, theo cái cách mà bất kỳ hành động nào cũng được kiểm tra theo các chính sách được xác định này. Về nguyên tắc, đây là 2 dạng chính sách được xác định chung, nhưng đặc tả này là mở để đưa vào được nhiều hơn.

Một trường hợp về chính sách là an ninh đa mức MLS (multilevel security), là một chính sách đa mức của dạng nghiêm ngặt. Ý tưởng này là để xác định các mức khác nhau về an ninh bên trong cùng chính sách, với những ngữ cảnh an ninh có một trường bổ sung của mức truy cập có liên quan tới chúng. Dạng chính sách an ninh này (như MLS) có xu hướng được sử dụng trong chính phủ và các tổ chức quân đội, nơi mà các cấu trúc có tôn ti trật tự với các mức khác nhau về thông tin được ưu tiên, các mức truy cập chung và các khả năng khác nhau của hành động tại mỗi mức. Để có được một số chứng chỉ về an ninh, chúng ta cần phải có chính sách an ninh dạng này.

Có thể xác định dạng chính sách nào sẽ được sử dụng trong /etc/selinux/config, biến SELINUXTYPE. Chính sách tương ứng và cấu hình của nó sẽ thường được cài đặt trong các thư mục /etc/selinux/SELLINUXTYPE/, ví dụ, trong thư mục con của chính sách này mà chúng ta có xu hướng để tìm tệp nhị phân của chính sách được biên dịch này (là những gì được tải vào nhân, khi SELinux được khởi tạo).

9.4.1. Kiến trúc

Kiến trúc của SELinux cấu tạo từ những thành phần sau:

• Mã nguồn ở mức nhân

• Thư viện SELinux được chia sẻ

• Chính sách an ninh (cơ sở dữ liệu)

• Các công cụ

Hãy để chúng ta ngó qua một ít các cấu hình đối với từng thành phần:

• Mã nguồn của nhân giám sát hoạt động của hệ thống và đảm bảo rằng những hoạt động được yêu cầu là được ủy quyền theo cấu hình chính sách an ninh của SELinux, không cho phép các hoạt động không được phép và thường tạo ra các khoản mục đầu vào của lưu ký log của các hoạt động bị từ chối. Mã nguồn này hiện hành được tích hợp vào nhân 2.6.x và, trong các phiên bản trước, được đưa ra như một loạt các bản vá.

• Hầu hết các tiện ích và các thành phần của SELinux không trực tiếp liên quan tới việc sử dụng của nhân thư viện được chia sẻ được gọi là libselinux1.so, nó cung cấp một giao diện lập trình ứng dụng API cho việc tương tác với SELinux.

• Chính sách an ninh là những gì được tích hợp trong cơ sở dữ liệu các qui định của SELinux. Khi hệ thống khởi tạo (với SELinux được kích hoạt), nó tải tệp chính sách nhị phân lên, mà nó thường nằm trong /etc/security/selinux (mặc dù nó có thể thay đổi tùy theo phát tán).

Trang 366/471

Page 367: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Tệp chính sách nhị phân này được tạo ra trên cơ sở của một biên dịch (thông qua lệnh make) của các tệp nguồn về chính sách và một số tệp cấu hình.

Một số phát tán (như Fedora) không cài đặt các nguồn một cách mặc định, mà chúng ta thường có thể thấy trong /etc/security/selinux/src/policy hoặc trong /etc/selinux.

Thông thường, những nguồn này cấu tạo từ một loạt các nhóm thông tin:

– Các tệp có liên quan tới sự biên dịch, makefile và các scripts có liên quan.

– Các tệp cấu hình khởi tạo, có liên quan tới những người sử dụng và các vai trò.

– Các tệp dạng tăng cường, có chứa hầu hết các câu của ngôn ngữ chính sách có liên quan tới một ngữ cảnh cụ thể nào đó. Cần tính tới những tệp này là nhiều vô số, thường là hàng chục ngàn dòng, có nghĩa là có thể bắt gặp vấn đề về tìm các lỗi (bug) hoặc xác định những thay đổi trong các chính sách.

– Và các tệp phục vụ để dán nhãn cho các ngữ cảnh của các tệp và thư mục trong lúc tải lên hoặc ở các thời điểm đặc biệt nào đó.

• Các công cụ: bao gồm các lệnh được sử dụng để quản trị và sử dụng SELinux. Các phiên bản được sửa đổi của các lệnh Linux chuẩn. Và các công cụ cho việc phân tích các chính sách và cho sự phát triển.

Hãy nhìn từ phần mới nhất này vào các công cụ điển hình mà chúng ta có thể thường thấy:

Một số các lệnh chính:

Tên Sử dụng

chcon Gắn nhãn cho một tệp cụ thể, hoặc một tập hợp các tệp với một ngữ cảnh cụ thể nào đó.

checkpolicy Thực hiện một loạt các hành động có liên quan tới các chính sách, bao gồm sự biên dịch các chính sách sang nhị phân, thường gọi từ sự vận hành lệnh makefile.

getenforce Tạo một thông điệp với chế độ SELinux (cho phép hoặc ép buộc). Hoặc bị vô hiệu hóa nếu đây là vấn đề.

getsebool Có được danh sách các Booleans, nói cách khác, danh sách các lựa chọn bật/tắt cho từng ngữ cảnh có liên quan tới một dịch vụ hoặc lựa chọn chung của hệ thống.

newrole Cho phép truyền một người sử dụng từ một vai trò này sang vai trò khác.

runn_init Được sử dụng để kích hoạt một dịch vụ (start, stop), đảm bảo rằng nó được thực hiện theo cùng ngữ cảnh như khi nó được khởi tạo một cách tự động (với init).

setenforce Thay đổi chế độ của SELinux, 0 permissive, 1 enforcing.

setfiles Gắn nhãn cho các thư mục và thư mục con với các ngữ cảnh phù hợp, thường được sử dụng trong cấu hình khởi tạo của SELinux.

setstatus Có được tình trạng hệ thống với SELinux.

Trang 367/471

Page 368: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hơn nữa, các chương trình chung khác được sửa đổi để hỗ trợ SELinux như:

• cron: được sửa đổi để đưa vào các ngữ cảnh cho các công việc trong tiến trình bằng cron.

• login: được sửa đổi để đặt ngữ cảnh an ninh khởi tạo ban đầu cho những người sử dụng khi họ đăng nhập vào hệ thống.

• logrotate: được sửa đổi để duy trì ngữ cảnh của các tệp lưu ký log khi chúng được biên dịch.

• pam: được sửa đổi để đặt ngữ cảnh ban đầu của người sử dụng và để sử dụng giao diện lập trình ứng dụng API của SELinux và có được sự truy cập quyền ưu tiên tới các thông tin về mật khẩu.

• ssh: được sửa đổi để đặt ngữ cảnh của người sử dụng khi người sử dụng đăng nhập hệ thống.

• Và một loạt các chương trình bổ sung sửa đổi /etc/passwd hoặc /etc/shadow.

Hình 1. Giao diện trong Fedora cho việc thiết lập cấu hình SELinux.

Hơn nữa, một số phát tán đưa vào các công cụ cho việc quản lý SELinux, như các công cụ thiết lập setools (giao diện người sử dụng gui), mang theo một số công cụ cho việc quản lý và phân tích các chính sách. Cũng như các công cụ đặc biệt cho việc kiểm soát các ngữ cảnh có liên quan tới các dịch vụ khác nhau được SELinux hỗ trợ trong phát tán, ví dụ công cụ mức an ninh - cấu hình - hệ thống trong Fedora có một phần cho việc cấu hình SELinux như chúng ta có thể thấy trong hình trên.

Trong hình, chúng ta có thể thấy cấu hình Booleans đối với các dịch vụ khác nhau và các lựa chọn chung, bao gồm cả máy chủ web. Chúng ta còn có thẻ có được danh sách này với lệnh getsebool -a và, với lệnh setsebool/togglesebool, chúng ta có thể kích hoạt/vô hiệu hóa các lựa chọn này.

Ví dụ, trong Fedora, chúng ta thấy sự hỗ trợ Booleans cho (trong số những thứ khác): Cron, FTP, httpd

Trang 368/471

Page 369: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

(apache), dns, grub, lilo, nfs, nis, cups, pam, ppd, samba, là những bảo vệ chống lại sự truy cập thái quá tới bộ nhớ tiến trình...

Cấu hình của Booleans cho phép chính sách của SELinux sẽ được chỉnh sửa trong thời gian chạy. Booleans sẽ được sử dụng như những giá trị có điều kiện của các qui định đối với các chính sách được áp dụng, mà chúng cho phép những sửa đổi về chính sách mà không phải đưa lên một chính sách mới.

9.4.2. Chỉ trích

Một số quản trị viên và chuyên gia an ninh đã đặc biệt chỉ trích SELinux vì quá là phức tạp để thiết lập cấu hình và quản trị. Còn gây tranh cãi rằng vì tính phức tạp về bản chất, ngay cả những người sử dụng có kinh nghiệm cũng có thể gửi các lỗi, làm cho cấu hình của SELinux không an ninh hoặc không thể sử dụng được và hệ thống có thể bị tổn thương. Mặc dù ở một mức độ nào đó điều này là còn gây tranh cãi, vì ngay cả nếu chúng ta để cho SELinux được cấu hình tồi tệ, thì các quyền có thể vẫn hoạt động, và SELinux sẽ không cho phép hoạt động nào mà các quyền ban đầu đã không được cho phép, trong thực tế, chúng ta có thể thấy điều này như một mức khác nghiêm ngặt hơn về an ninh.

Các yếu tố thực thi cũng có thể bị ảnh hưởng, vì kích cỡ khổng lồ của các chính sách, chúng sử dụng nhiều bộ nhớ và mất nhiều thời gian để tải lên, và, trong một số trường hợp, do việc xử lý các qui định. Cần nhớ trong đầu rằng chúng ta đang làm việc với một hệ thống thực tế có 10,000 qui định về chính sách. Và rằng con số này có thể còn lớn hơn nếu chọn chính sách dạng nghiêm ngặt (strict) nơi mà cần phải chỉ định một cách tuyệt đối tất cả các lựa chọn sẽ được kiểm tra. Thông thường, việc xử lý chính sách ở định dạng nhị phân và sử dụng Booleans để vô hiệu hóa các qui định sẽ cho phép hệ thống được sử dụng có hiệu quả hơn.

Một khía cạnh khác mà có xu hướng gây phiền phức cho các quản trị viên là vấn đề bổ sung xác định, trong trường hợp có một sự hoạt động không đúng, nguyên nhân gốc gác và ban đầu là gì. Vì điều này là phổ biến đối với chúng ta để cuối cùng tìm ra vấn đề bắt nguồn từ một cấu hình nghiêm ngặt một cách rộng lớn (có lẽ vì sự nhận thức sai một phần của người quản trị) về SELinux đối với một dịch vụ cụ thể nào đó.

Trong ví dụ cuối, cần chỉ ra sự hỗ trợ mở rộng mà SELinux đưa ra cho an ninh và rằng, như những quản trị viên, cần phải nhận thức về những khả năng và những mối nguy hiểm của bất kỳ kỹ thuật mới nào mà chúng ta sử dụng.

Trang 369/471

Page 370: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.5. An ninh mạng

9.5.1. Máy trạm dịch vụ

Như các máy trạm dịch vụ, về cơ bản cần phải chắc chắn rằng chúng ta không đặt những người sử dụng vào nguy hiểm (hoặc họ tự đặt họ vào nguy hiểm) bằng việc sử dụng các dịch vụ không an ninh. Tránh sử dụng các dịch vụ không sử dụng mã hóa các dữ liệu và mật khẩu (FTP, telnet, các thư không an ninh). Hãy sử dụng các kỹ thuật kết nối có mã hóa, như SSH và SSL.

Một điểm quan trọng khác liên quan tới sự thay thế tiềm tàng các máy chủ đối với các kỹ thuật cướp phiên hoặc các máy chủ giả mạo khác. Trong những trường hợp này, sẽ cần phải có các cơ chế xác thực mạnh cho phép xác minh sự xác thực của các máy chủ (ví dụ, SSH và SSL có một số những cơ chế này). Và cũng sẽ phải xác minh mạng để tìm kiếm những kẻ thâm nhập trái phép cố gắng thay thế các máy chủ, cũng như để áp dụng các dịch vụ lọc gói đúng đắn bằng việc sử dụng các tường lửa, cho phép loại bỏ các gói của chúng ta khỏi các yêu cầu và sự sử dụng các máy chủ đúng đắn, kiểm soát các gói đến mà chúng ta nhận được như một sự trả lời.

9.5.2. Máy chủ: inetd và xinetd

Như đã thấy, các dịch vụ mạng [Mou01] sẽ được cấu hình từ một loạt nơi [Ano99][Hat01][Pen]:

• Trong /etc/inetd.conf hoặc thư mục tương tự trong /etc/xinetd.d: những khái niệm này là dạng của “các siêu máy chủ” vì chúng kiểm soát các dịch vụ bổ sung và khởi động các điều kiện. Dịch vụ inetd được sử dụng trong Debian và xinetd trong Fedora (trong Debian nó có thể được cài đặt như một lựa chọn để thay thế inetd).

• Các máy chủ được bật lên trong lúc khởi động: phụ thuộc vào mức chạy mà chúng ta sẽ có một số các máy chủ được khởi tạo. Sự khởi tạo sẽ sinh ra trong thư mục có liên quan tới mức chạy. Ví dụ, trong Debian, mức chạy mặc định là 2, các dịch vụ sẽ được khởi tạo từ thư mục /etc/rc2.d, chắc chắn với các liên kết tới các scripts nằm trong /etc/init.d, sẽ chạy với thông số khởi động (start), dừng (stop), khởi động lại (restart) khi được áp dụng.

• Các dịch vụ dạng RPC khác: có liên quan tới những lời gọi ở xa giữa các máy được sử dụng, ví dụ, trong NIS và NFS. Chúng ta có thể kiểm tra dịch vụ nào với lệnh rpcinfo -p.

Các tệp hỗ trợ khác (với các thông tin hữu ích đưa vào: /etc/services, nó cấu tạo từ một danh sách các dịch vụ cục bộ và mạng cùng với tên giao thức, (tcp, udp hoặc khác), được sử dụng cho dịch vụ và cổng sử dụng; /etc/protocols là một danh sách các giao thức được biết: và /etc/rpc là một danh sách các máy chủ RPC cùng với các cổng được sử dụng. Những tệp này đi với phát tán và là một dạng cơ sở dữ liệu được sử dụng với các công cụ mạng và các lệnh để xác định tên và các dịch vụ và những giao thức có liên quan của chúng hoặc rpc và các cổng. Nên nhớ rằng chúng ít nhiều là các tệp lịch sử, không cần

Trang 370/471

Lưu ý

Như các máy trạm dịch vụ, chúng ta sẽ cần tránh việc sử dụng các dịch vụ không an ninh

Page 371: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thiết phải chứa tất cả các định nghĩa của các giao thức và các dịch vụ; vì thế có thể tìm kiếm trên Internet các danh sách khác nhau của các cổng phổ biến.

Một trong những hành động đầu tiên của các quản trị viên sẽ là vô hiệu hóa tất cả các dịch vụ đang không được sử dụng hoặc không có lịch để sử dụng, đọc về việc sử dụng các dịch vụ [Mou01] và những phần mềm nào có thể cần tới chúng. [Neu]

Trong trường hợp của /etc/inetd.conf, chúng ta chỉ phải ghi chú dòng dịch vụ phải được vô hiệu hóa, bằng việc đặt một số dấu hiệu (#) như là ký tự đầu tiên trên dòng đó.

Trong mô hình khác của các dịch vụ, được sử dụng mặc định trong Fedora (và là tùy ý trong Debian), xinetd, cấu hình nằm trong tệp /etc/xinetd.conf, nơi có một số giá trị mặc định của lưu ký log, sự kiểm soát được thiết lập cấu hình và sau đó sự thiết lập cấu hình của từng dịch vụ bổ sung này được thực hiện thông qua một tệp bên trong thư mục /etc/xinetd.d. Trong mỗi tệp, thông tin của dịch vụ được xác định, tương ứng với những gì xuất hiện trong inetd.conf, trong trường hợp này, để vô hiệu hóa một dịch vụ, chúng ta chỉ cần phải nhập vào dòng này “disable = yes” bên trong tệp dịch vụ. Xinetd có một cấu hình mềm dẻo hơn inetd, vì nó tách biệt cấu hình của các dịch vụ khác nhau thành các tệp khác nhau và có một số lượng khá các lựa chọn cho việc hạn chế các kết nối tới một dịch vụ, số lượng hoặc các khả năng của chúng; tất cả những thứ này cho phép kiểm soát dịch vụ tốt hơn và với cấu hình đúng thì có thể tránh được một số cuộc tấn công từ chối dịch vụ (DoS hoặc DdoS).

Đề cập tới việc điều khiển các dịch vụ mức chạy từ các lệnh của các phát tán, chúng ta đã nhắc tới một số công cụ cho phép các dịch vụ sẽ có được khả năng hoặc bị vô hiệu hóa trong phần về quản trị cục bộ. Cũng có các công cụ đồ họa như ksysv của KDE, hoặc các dịch vụ - cấu hình - hệ thống và ntsysv trong Fedora (trong Debian, chúng ta khuyến cáo sysv-rc-conf, rcconf hoặc bum). Và ở một mức thấp hơn, có thể đi tới mức chạy mong muốn (/etc/rcx.d) và vô hiệu hóa các dịch vụ mà chúng ta muốn bằng việc thay đổi S hoặc K ban đầu của script cho văn bản khác: ví dụ, một phương pháp có thể là: thay đổi S20ssh, đối với STOP_S20ssh, và nó sẽ không còn khởi động nữa; lần sau mà cần nó, thì chúng ta có thể loại bỏ tiền tố này và nó sẽ được kích hoạt trở lại một lần nữa. Hoặc có lẽ được khuyến cáo sử dụng các tiện ích đơn giản để thay thế, loại bỏ hoặc kích hoạt một dịch vụ cụ thể nào đó (như dịch vụ chkconfig trong Fedora hoặc tương tự trong Debian, như là update-rc.d và invoke-rc.d).

Một khía cạnh khác là việc đóng lại các dịch vụ không an ninh. Theo truyền thống, trong thế giới UNIX các hệ thống truyền tệp như FTP đã được sử dụng với các kết nối ở xa, như telnet, và các lệnh chạy ở xa (đăng nhập hoặc sao chép), nhiều trong số đó được bắt đầu với ký tự “r” (ví dụ, rsh, rcp, rexec...). Những mối nguy hiểm tiềm tàng khác là các dịch vụ finger và rwhod, cho phép các thông tin lấy được từ mạng của những người sử dụng máy tính; sự nguy hiểm ở đây nằm trong thông tin mà một kẻ tấn công có thể lấy được có thể làm cho công việc của kẻ tấn công dễ dàng hơn. Tất cả những dịch vụ này không nên được sử dụng hiện nay vì những nguy hiểm tiềm tàng mà chúng mang lại. Trong quan hệ với nhóm đầu tiên:

a) trong sự truyền trên mạng, ftp và telnet không mã hóa các mật khẩu và bất kỳ ai cũng có thể có được các mật khẩu dịch vụ pde hoặc các tài khoản có liên quan (ví dụ, bằng việc sử dụng một trình đánh hơi).

b) rsh, rexec, rcp cũng có vấn đề mà, với một số điều kiện nhất định, các mật khẩu thậm chí là không cần thiết (ví dụ, nếu chạy từ các nơi được xác minh trong tệp .rhosts), có nghĩa là một lần

Trang 371/471

Page 372: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nữa chúng là không an ninh và để lại các cửa hậu mở rộng cho các cuộc tấn công.

Giải pháp thay thế là sử dụng các máy trạm và máy chủ an ninh hỗ trợ mã hóa thông điệp và xác thực những người tham gia. Có những lựa chọn thay thế an ninh đối với các máy chủ kinh điển, nhưng hiện nay giải pháp được sử dụng phổ biến nhất là gói OpenSSH (cũng có thể được kết hợp với OpenSSL, cho các môi trường web). OpenSSH đưa ra các giải pháp dựa trên các lệnh ssh, scp và sftp, cho phép những máy trạm và máy chủ cũ sẽ được thay thế (có sử dụng một daemon được gọi là sshd). Lệnh ssh cho phép các chức năng cũ của telnet, rlogin và rsh và hơn nữa, scp có thể an ninh tương đương với rcp và sftp tương đương với ftp.

Đề cập tới SSH, cũng cần chắc chắn chúng ta sử dụng ssh phiên bản 2. Phiên bản đầu có một số khai thác được biết tới; cần cẩn thận khi cài đặt OpenSSH và, nếu chúng ta không cần phiên bản đầu, hãy chỉ cài đặt hỗ trợ cho SSH2 (xem lựa chọn giao thức [Protocol] trong tệp cấu hình /etc/ssh/ssh_config).

Bên cạnh đó, hầu hết các dịch vụ mà chúng ta để tích cực trên các máy tính của chúng ta có thể phải được lọc sau đó bằng một tường lửa để chắc chắn rằng chúng không bị những người chúng ta không mong muốn sử dụng hoặc tấn công.

Trang 372/471

Page 373: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.6. Dò tìm thâm nhập trái phép

Với hệ thống dò tìm sự thâm nhập trái phép [Hat01][IDS] mục đích là để tiến hành một bước tiến lên trước. Một khi chúng ta đã có khả năng cấu hình được cho an ninh là đúng, thì bước tiếp theo sẽ là để dò tìm ra và ngăn cản một cách tích cực những thâm nhập trái phép.

Các hệ thống dò tìm thâm nhập trái phép IDS (Intrusion Detection System) tạo ra các thủ tục nghe và tạo ra những cảnh báo khi chúng dò tìm thấy các tình huống nghi vấn, nói một cách khác, chúng tìm kiếm những triệu chứng của các sự việc mất an ninh tiềm tàng.

Có các hệ thống dựa trên các thông tin cục bộ, ví dụ, việc tập hợp các thông tin từ các lưu ký hệ thống logs, việc giám sát những thay đổi trong hệ thống tệp hoặc trong những cấu hình của các dịch vụ điển hình. Các hệ thống khác sẽ dựa trên mạng và xác minh việc không có các hành vi bất thường, như việc lừa gạt, với những sự làm giả các địa chỉ được biết; việc kiểm soát giao thông đáng ngờ, các cuộc tấn công từ chối dịch vụ tiềm tàng, việc dò tìm các giao thông quá mức hướng tới các dịch vụ đặc biệt nào đó, việc kiểm soát không có các giao diện mạng nào ở chế độ bừa bãi không phân biệt được (một triệu chứng của sự do thám đánh hơi hoặc chộp các gói).

Những ví dụ

Một số ví dụ của các công cụ IDS: Logcheck (xác minh log), TripWire (tình trạng hệ thống thông qua các tổng md5 được áp dụng cho các tệp), AIDE (một phiên bản tự do của TripWire), Snort (IDS cho việc xác minh tình trạng của toàn bộ một mạng).

Trang 373/471

Lưu ý

Các hệ thống IDS cho phép chúng ta dò tìm ra đúng lúc những kẻ thâm nhập trái phép có sử dụng các nguồn tài nguyên của chúng ta hoặc khai thác các hệ thống của chúng ta trong việc tìm kiếm những khiếm khuyết về an ninh.

Page 374: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.7. Bảo vệ bằng các trình lọc thông qua các trình bao bọc và các tường lửa

Các trình bao bọc TCP (TCP wrappers) [Mou01] là các chương trình hành động như các trung gian giữa các yêu cầu của người sử dụng một dịch vụ và các daemons của các máy chủ cung cấp dịch vụ này. Hầu hết các phát tán đã có đi cùng với các wrapper được kích hoạt và thiết lập cấu hình cho các mức truy cập. Các wrapper có xu hướng được sử dụng trong sự kết hợp với inetd hoặc xinetd, do đó bảo vệ các dịch vụ mà chúng đưa ra.

Trình bao bọc wrapper về cơ bản thay thế cho daemon của dịch vụ bằng daemon khác mà nó hành động như một trung gian (được gọi là tcpd, thường trong /usr/sbin/tcpd). Khi thứ này nhận được một yêu cầu, nó xác minh người sử dụng và nguồn gốc của yêu cầu, xác định liệu cấu hình wrapper của dịch vụ có cho phép nó được sử dụng hay không. Hơn nữa, nó đưa vào khả năng tạo ra các lưu ký logs, hoặc thông báo qua thư điện tử những mưu toan có thể để truy cập và sau đó chạy daemon phù hợp được chỉ định cho dịch vụ này.

Ví dụ, hãy giả thiết đầu vào sau trong inetd:

finger stream tcp nowait nobody /usr/etc/in.fingerd in.fingerd

Chúng ta thay đổi nó thành:

finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd

sao cho khi một yêu cầu tới, nó được daemon tcpd điều khiển, có trách nhiệm cho việc xác minh sự truy cập (để có thêm thông tin, hãy xem các trang tcpd man).

Cũng còn có một phương pháp thay thế trình bao bọc TCP mà cấu tạo từ việc biên dịch ứng dụng gốc với thư viện của các trình bao bọc wrappers. Cách này thì ứng dụng không phải ở trong inetd và chúng ta có thể kiểm soát nó như trong trường hợp đầu với cấu hình mà sẽ được thảo luận tiếp sau.

Hệ thống các trình bao bọc wrapper được kiểm soát từ tệp /etc/hosts.deny, nơi mà chúng ta chỉ định các dịch vụ nào chúng ta từ chối đối với những ai, có sử dụng các lựa chọn, như một trình biên dịch (shell) nhỏ để lưu giữ các thông tin về dự định, và tệp /etc/hosts.allow, nơi chúng ta đặt dịch vụ mà chúng ta mong muốn sử dụng, sau đó là danh sách những ai được phép sử dụng dịch vụ đó (sau này, trong hội thảo, chúng ta sẽ xem xét một ví dụ nhỏ). Chúng ta cũng có các lệnh tcpdchk, kiểm thử cấu hình của các tệp máy chủ hosts (xem man hosts_access và hosts_options) để kiểm tra rằng chúng là đúng, nói cách khác, nó kiểm thử cấu hình. Lệnh hữu dụng khác là tcpdmatch, mà chúng ta trao tên của một dịch vụ và một máy trạm (người sử dụng, và/hoặc máy host) cho nó, còn nó nói cho chúng ta hệ thống sẽ làm gì trong tình huống này.

Trang 374/471

Lưu ý

Các trình bao bọc wrapper cho phép chúng ta kiểm soát an ninh thông qua sự truy cập các danh sách tới các mức dịch vụ.

Page 375: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.7.1. Các tường lửa

Một tường lửa là một hệ thống hoặc nhóm các hệ thống tăng cường các chính sách kiểm soát truy cập giữa các mạng. Tường lửa có thể được triển khai trong phần mềm như một ứng dụng đặc biệt chạy trên một máy tính hoặc có thể là một thiết bị đặc biệt được thiết kế để bảo vệ một hoặc nhiều máy tính.

Nói chung, chúng ta sẽ có hoặc một ứng dụng tường lửa để bảo vệ một máy tính cụ thể trực tiếp được kết nối tới Internet (trực tiếp hoặc thông qua một nhà cung cấp), hoặc chúng ta có thể đặt một hoặc vài máy được thiết kế cho chức năng này trong mạng để bảo vệ mạng nội bộ.

Về mặt kỹ thuật, giải pháp tốt nhất là có một máy tính có từ 2 card mạng trở lên, chúng tách biệt các mạng khác nhau được kết nối (hoặc các phân vùng mạng), theo một cách mà phần mềm tường lửa trên máy (hoặc nếu đây là một phần cứng đặc biệt) có trách nhiệm cho việc kết nối các gói mạng và xác định gói nào có thể đi qua hoặc không và tới mạng nào.

Tường lửa dạng này thường được kết hợp với một bộ định tuyến router để liên kết các gói của các mạng khác nhau. Cấu hình điển hình khác là tường lửa hướng tới Internet, ví dụ với 2 card mạng: trên một card chúng ta có/cung cấp giao thông tới Internet và trên card kia chúng ta gửi hoặc cung cấp giao thông tới mạng nội bộ của chúng ta, vì thế hạn chế được giao thông không có địa chỉ tới chúng ta và cũng kiểm soát được giao thông di chuyển ra ngoài tới Internet, trong trường hợp chúng ta không muốn cho phép truy cập tới các giao thức nhất định nào đó hoặc nếu chúng ta nghi ngờ là có sự rò rỉ thông tin một cách tiềm tàng đối với một số cuộc tấn công.

Một khả năng thứ 3 là máy riêng rẽ được kết nối với một card duy nhất hướng tới Internet, hoặc trực tiếp hoặc thông qua một nhà cung cấp. Trong trường hợp này, chúng ta chỉ muốn bảo vệ máy tính khỏi những kẻ thâm nhập trái phép, giao thông không mong muốn hoặc giao thông mà bị nghi ngờ có việc ăn cắp các dữ liệu.

Nói cách khác, trong mọi trường hợp, có thể thấy rằng một tường lửa có thể có các cấu hình khác nhau và sử dụng phụ thuộc vào việc nó có là phần mềm hay không, vào việc liệu máy có một hay vài card mạng hoặc vào việc liệu nó bảo vệ một máy riêng rẽ hay là một mạng.

Nói chung, tường lửa cho phép người sử dụng xác định một loạt các chính sách truy cập (các máy nào có thể được kết nối hoặc các máy nào có thể nhận được thông tin và dạng thông tin nào) bằng các biện pháp kiểm soát các cổng ra/vào ICP/UDP được cho phép. Một số tường lửa đi với các chính sách được cấu hình sẵn trước; trong một số trường hợp chúng chỉ yêu cầu liệu chúng ta có muốn một mức độ an ninh cao, trung bình hay thấp; những tường lửa khác cho phép chỉnh tất cả các lựa chọn (các máy, các giao thức, các cổng …).

Một kỹ thuật có liên quan khác là biên dịch địa chỉ mạng NAT (network address translation). Kỹ thuật này cung cấp một đường định tuyến cho việc ẩn dấu các địa chỉ IP được sử dụng trên mạng riêng và ẩn dấu chúng từ Internet, nhưng vẫn duy trì sự truy cập từ các máy. Một trong những phương pháp điển hình được biết tới như là việc gắn mặt nạ. Việc sử dụng mặt nạ cho NAT, một hoặc vài thiết bị mạng có thể xuất hiện như một địa chỉ IP duy nhất được thấy từ bên ngoài. Điều này cho phép vài máy tính sẽ được kết nối tới một thiết bị kết nối duy nhất bên ngoài; ví dụ, trường hợp của một bộ định tuyến

Trang 375/471

Lưu ý

Các tường lửa làm cho có khả năng thiết lập an ninh ở mức của các gói và các kết nối truyền thông.

Page 376: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

ADSL ở nhà cho phép vài máy tính được kết nối mà không cần nhà cung cấp trao cho chúng ta vài địa chỉ IP. Các bộ định tuyến ADSL thường đưa ra một số dạng gắn mặt nạ NAT, và cả những khả năng tường lửa nữa. Khá phổ biến để sử dụng một sự kết hợp của cả 2 kỹ thuật này. Trong trường hợp đó, cũng như cấu hình của máy tường lửa (trong các trường hợp chúng ta đã thấy ở trên), thì cấu hình của mạng riêng nội bộ mà chúng ta muốn bảo vệ cũng dùng được.

9.7.2. Bộ lọc mạng: IPtables (bảng IP)

Nhân Linux (như của các phiên bản 2.4.x) đưa ra một hệ thống con lọc được gọi là Netfilter (bộ lọc mạng) [Net], đưa ra các tính năng lọc gói cũng như NAT. Hệ thống này cho phép các giao diện lọc khác nhau được sử dụng, phổ biến nhất là IPtables. Lệnh kiểm soát chính là iptables. Trước đó [Hata], đã có bộ lọc khác gọi là ipchains trong các nhân 2.2 [Gre], hệ thống này đã có một cú pháp khác (dù tương tự). Các nhân 2.0 đã sử dụng một hệ thống khác được gọi là ipfwadm. Ở đây (và trong các ví dụ sau) chúng ta sẽ chỉ làm việc với Netfilter/IPTables (nói cách khác với các phiên bản nhân 2.4/2.6).

Giao diện của lệnh IPtables cho phép các nhiệm vụ khác nhau sẽ được thực hiện để thiết lập cấu hình cho các qui định có ảnh hưởng tới hệ thống bộ lọc: hoặc tạo ra các lưu ký logs, trước và sau các hành động định tuyến các gói, NAT, và chuyển tiếp cổng.

Dịch vụ khởi động: /etc/init.d/iptables start, nếu không được cấu hình sẵn trong mức chạy.

Lệnh iptables -L liệt kê các qui định đang hoạt động tại thời điểm trong từng chuỗi. Nếu không được thiết lập cấu hình trước đó, thì mặc định chúng có xu hướng chấp nhận tất cả các gói của các chuỗi cả đầu vào, đầu ra và chuyển tiếp.

Hệ thống IPTables có các bảng như một mức ở trên. Mỗi mức chứa các chuỗi khác nhau, mà tới lượt chúng có chứa các qui định khác nhau. 3 bảng chúng ta có là: bộ lọc Filter, NAT và Mangled. Bảng đầu là cho việc lọc bản thân các tiêu chí, bảng 2 là để dịch các địa chỉ bên trong một hệ thống sử dụng NAT và bảng thứ 3, ít được sử dụng thường xuyên hơn, phục vụ để chỉ định một số lựa chọn kiểm soát gói và cách để quản lý chúng. Đặc biệt, nếu chúng ta để một hệ thống được kết nối trực tiếp tới Internet, thì sẽ thường chỉ sử dụng bảng Filter. Nếu hệ thống là trong một mạng riêng phải đi qua một bộ định tuyến router, cổng gateway hoặc ủy quyền proxy (hoặc một sự kết hợp của chúng), thì chúng ta sẽ hầu như chắc chắn có một hệ thống mặt nạ NAT hoặc IP; nếu chúng ta đang thiết lập cấu hình cho máy để cho phép truy cập tới bên ngoài, thì sẽ phải soạn sửa bảng NAT và bảng Filter. Nếu máy là trong một hệ thống mạng riêng, nhưng là một trong những máy nội bộ, thì sẽ là đủ để sửa bảng Filter, trừ phi nó là một máy chủ mà dịch các địa chỉ mạng tới phân khúc mạng khác.

Nếu một gói tới được hệ thống, thì tường lửa sẽ đầu tiên xem liệu có các qui định trong bảng NAT hay không, trong trường hợp các địa chỉ hướng tới mạng nội bộ cần phải được dịch (các địa chỉ là không thường thấy được bên ngoài); sau đó nó sẽ xem xét các qui định trong bảng Filter để quyết định liệu các gói sẽ được phép để đi qua hoặc liệu chúng có không phải là cho chúng ta hay không và chúng ta phải chuyển tiếp các qui định để biết phải định tuyến lại chúng đi tới nơi nào. Đối nghịch lại, khi các

Trang 376/471

Website

Netfilter, phiên bản: http://www.netfilter.org/

Ipchains, xem http://www.netfilter.org/ipchains/

Lưu ý

IPTables tự đưa ra những yếu tố khác nhau như các bảng, các chuỗi và các qui định.

Page 377: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

tiến trình của chúng ta tạo ra các gói, các qui định đầu ra của bảng Filter sẽ kiểm soát liệu chúng ta có cho phép chúng đi ra hay không, và nếu có một hệ thống NAT thì các qui định sẽ dịch các địa chỉ để gắn mặt nạ cho chúng. Trong bảng NAT thường có 2 chuỗi: định tuyến trước và định tuyến sau . Trong chuỗi trước, các qui định phải quyết định liệu gói có được định tuyến không, và nếu có, địa chỉ đích sẽ là gì. Trong chuỗi thứ 2, cuối cùng được quyết định liệu gói có được phép nằm bên trong hay không (đối với mạng riêng, ví dụ thế). Và cũng có một chuỗi đầu ra cho giao thông đi ra được tạo ra một cách cục bộ đối với mạng riêng, khi mà việc định tuyến trước không kiểm soát được điều này (để có thêm chi tiết, xem trang iptables man).

Tiếp theo chúng ta sẽ bình luận về một số khía cạnh và ví dụ của việc cấu hình bảng Filter (đối với các bảng khác, chúng ta có thể tham vấn thư mục tham khảo có liên quan).

Bảng Filter thường được thiết lập cấu hình như một loạt các qui định chỉ định điều gì được thực hiện bên trong một chuỗi đặc biệt nào đó, giống như 3 chuỗi trước (đầu vào, đầu ra và chuyển tiếp). Thông thường, chúng ta sẽ chỉ định:

iptables -A chain -j target

trong đó chain là đầu vào, đầu ra hoặc chuyển tiếp và target là đích mà sẽ được chỉ định cho gói tương ứng với qui định. Lựa chọn -A bổ sung qui định tới những qui định đang tồn tại. Phải cẩn thận ở đây, vì trật tự là quan trọng. Phải đặt các qui định ít hạn chế nhất ở đầu, biết rằng, nếu đặt một qui định hạn chế các gói ngay từ đầu, thì ngay cả nếu có qui định khác, thì điều này sẽ không được tính tới.

Lựa chọn -j có thể được sử dụng để quyết định chúng ta sẽ làm gì với các gói, thường là chấp nhận (accept), từ chối (reject) hoặc bỏ (drop). Với cái đầu, chúng ta từ chối dự định kết nối (thường thì đối với một gói dạng ICMP). Với cái thứ 2, drop, chúng ta đơn giản “đánh mất” gói mặc dù nó đã chưa bao giờ tồn tại và sẽ không gửi bất kỳ mẫu biểu trả lời nào. Đích target khác được sử dụng là lưu ký log, để gửi gói này tới hệ thống log. Thông thường, trong trường hợp này, có 2 qui định, một với log và cái kia là y hệt với chấp nhận (accept), bỏ (drop) và từ chối (reject), sao cho thông tin trong các gói được chấp nhận, bị từ chối hoặc bị bỏ có thể được gửi tới lưu ký log.

Khi vào qui định, chúng ta cũng có thể sử dụng lựa chọn -I (chèn) để chỉ một vị trí, ví dụ:

iptables -I INPUT 3 -s 10.0.0.0/8 -j ACCEPT

nó nói cho chúng ta qui định này nên được đặt vào vị trí thứ 3 trong chuỗi đầu vào ( input); và các gói (j) tới từ (với nguồn – source, -s) mạng con 10.0.0.0 với mặt nạ 255.0.0.0 sẽ được chấp nhận. Với -D, tương tự, chúng ta có thể xóa hoặc một số qui định hoặc qui định chính xác nào đó, như được chỉ định bên dưới, việc xóa qui định đầu tiên của chuỗi hoặc qui định được đề cập tới:

iptables -D INPUT 1

iptables -D INPUT -s 10.0.0.0/8 -j ACCEPT

Cũng có những qui định có thể được sử dụng để xác định một “chính sách” mặc định cho các gói (lựa chọn -P); thứ y hệt sẽ được thực hiện với tất cả các gói. Ví dụ, có thể thường quyết định bỏ tất cả các gói một cách mặc định và sau đó cho phép những gói khác chúng ta yêu cầu; như vậy, có thể thường tránh được việc chuyển tiếp các gói nếu nó không cần thiết (nếu không hành động từ bộ định tuyến router), thì điều này có thể được công bố như sau:

Trang 377/471

Page 378: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

iptables -P INPUT DENY

iptables -P OUTPUT REJECT

iptables -P FORWARD REJECT

Điều này thiết lập nên các chính sách mặc định tạo thành từ việc từ chối bất kỳ các gói đến nào và không cho phép việc gửi và gửi lại các gói. Bây giờ chúng ta sẽ có khả năng bổ sung các qui định ảnh hưởng tới các gói chúng ta muốn sử dụng, nói những giao thức nào, cổng nào, nơi xuất phát nào và đích nào chúng ta muốn cho phép hoặc tránh. Điều này có thể là khó khi chúng ta phải biết tất cả các cổng và các giao thức mà các phần mềm hoặc các dịch vụ của chúng ta sử dụng. Một chiến lược khác chỉ có thể để lại sự tích cực đối với các dịch vụ là cơ bản và để cho phép sự truy cập tới các dịch vụ đối với máy tính chúng ta mong muốn thông qua tường lửa.

Một số ví dụ về các qui định trong bảng Filter có thể là:

1) iptables -A INPUT -s 10.0.0.0/8 -d 192.168.1.2 -j DROP

2) iptables -A INPUT -p tcp - -dport 113 -j REJECT - -reject-with tcp-reset

3) iptables -I INPUT -p tcp - -dport 113 -s 10.0.0.0/8 -j ACCEPT

trong đó:

1) Chúng ta bỏ các gói mà chúng tới từ 10.x.x.x được gửi tới 192.168.1.2

2) Chúng ta từ chối các gói tcp được gửi tới cổng 113, đưa ra một câu trả lời dạng thiết lập lại tcp.

3) Các gói y hệt như trong 2) nhưng tới từ 10.x.x.x sẽ được chấp nhận.

Đề cập tới các tên của các giao thức và các cổng, hệ thống iptables sử dụng các thông tin được cung cấp từ các tệp /etc/services và /etc/protocols, và có thể chỉ định các thông tin (cổng hoặc giao thức) hoặc bằng các số hoặc bằng các tên (phải chắc chắn, trong trường hợp này, các thông tin trong các tệp là đúng và nó không bị sửa đổi, ví dụ, bởi một kẻ tấn công).

Cấu hình của iptables thường được thiết lập thông qua những lời gọi liên tiếp tới lệnh iptables với các qui định. Điều này tạo ra trạng thái của các qui định tích cực có thể được tham vấn với iptables -L; nếu muốn lưu chúng vĩnh viễn, thì chúng ta có thể làm điều này trong Fedora với:

/etc/init.d/iptables save

Và chúng được lưu trong:

/etc/sysconfig/iptables

Trong Debian, chúng ta có thể chạy:

/etc/init.d/iptables save name-rules

Chúng ta phải cẩn thận và chắc chắn rằng thư mục /var/log/iptables đã tồn tại, vì đây là nơi mà các tệp sẽ được lưu giữ; các qui định theo tên sẽ là một tệp trong thư mục này.

Với (/etc/init.d/iptables) chúng ta có thể tải các qui định (trong Debian, chúng ta phải cung cấp tên của tệp các qui định này), mặc dù Debian hỗ trợ một số tên tệp mặc định, là tích cực đối với các qui định thông thường (những thứ sẽ được sử dụng khi dịch vụ khởi tạo) và không tích cực đối với những thứ sẽ

Trang 378/471

Page 379: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

ở lại khi dịch vụ bị vô hiệu hóa (hoặc dừng). Phương pháp tương tự khác thường được sử dụng là việc đặt các qui định vào trong một tệp script với các lời gọi iptables, là cần thiết và gọi chúng, ví dụ, bằng việc đặt chúng vào mức chạy cần thiết, hoặc với một liên kết tới script trong /etc/init.d.

9.7.3. Các gói và các tường lửa trong các phát tán

Đề cập tới các công cụ cấu hình ít nhiều tự động trong tường lửa, có một loạt các khả năng, nhưng chúng ta nên nhớ rằng chúng không thường đưa ra cùng các tính năng như cấu hình bằng tay của iptables (mà trong hầu hết các trường hợp, là qui trình được khuyến cáo). Một số công cụ là:

• lokkit: trong Fedora/Red Hat, ở một mức rất cơ bản, người sử dụng chỉ có thể chọn mức an ninh mong muốn (cao, trung bình hoặc thấp). Sau đó, các dịch vụ có thể bị ảnh hưởng sẽ được chỉ ra và chúng ta có thể bỏ nó, hoặc không, sao cho chúng ta đi qua dịch vụ bằng việc thay đổi cấu hình mặc định. Cơ chế được sử dụng ở dưới là iptables. Cấu hình cuối cùng của các qui định được tiến hành có thể thấy trong /etc/sysconfig/iptables mà, tới lượt mình, là sẵn sàng với dịch vụ iptables, được tải lên khi khởi động hoặc khi dừng hoặc khởi động có sử dụng /etc/init.d/iptables với các lựa chọn khởi động hoặc dừng. Cũng có khả năng để cài đặt nó trong Debian, nhưng các qui định mà cấu hình phải được để lại trong /etc/defaults/lokkit-l và một script trong /etc/init.d/lokkit-l. Cũng có một phiên bản đồ họa được gọi là gnome-lokkit.

• Bastille [Proa]: đây là một chương trình an ninh giáo dục và khá hoàn chỉnh giải thích những thiết lập về an ninh khác nhau được khuyến cáo và cách có thể áp dụng chúng từng bước một; nó cũng giải thích cấu hình của tường lửa (chương trình là tương tác được). Nó làm việc trong một loạt các phát tán, bao gồm cả trong Fedora và Debian.

• Fwbuilder: một công cụ có khả năng được sử dụng để xây dựng các qui định của tường lửa có sử dụng một giao diện đồ họa. Nó có thể được sử dụng trong một loạt các hệ điều hành (GNU/Linux, cả Fedora và Debian, OpenBSD, MacOS), với các dạng tường lửa khác nhau (bao gồm cả iptables).

• firestarter: một công cụ đồ họa (GNOME) cho việc tạo một tường lửa. Nó rất hoàn chỉnh, quản lý thực tế được tất cả các khả năng của iptables, mà, vì thế, nó có những hỗ trợ làm cho dễ dàng để thiết lập một tường lửa một cách trực giác. Cũng vậy, có một trình giám sát thời gian thực cho việc dò tìm bất kỳ sự thâm nhập trái phép nào.

Thông thường, mỗi trong các gói này sử dụng một hệ thống các qui định được lưu giữ trong tệp cấu hình của riêng nó và thường khởi động như một dịch vụ hoặc như một sự thực thi script ở mức chạy mặc định.

9.7.4. Những xem xét cuối cùng

Ngay cả nếu đã cấu hình tốt cho các tường lửa, thì phải nhớ rằng chúng không là sự bảo vệ an ninh tuyệt đối được, khi mà có những cuộc tấn công tinh vi phức tạp có thể vượt qua được các tường lửa hoặc làm giả được các dữ liệu để tạo sự rối loạn. Hơn nữa, kết nối hiện đại đôi khi cần

Trang 379/471

Website

Xem: http://www.fwbuilder.org/

Lưu ý

Chúng ta nên không bao giờ dựa vào chỉ một cơ chế hoặc hệ thống an ninh. An ninh của hệ thống phải được thiết lập ở tất cả các mức khác nhau.

Page 380: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

phải ép chúng ta để tạo ra những phần mềm mà chúng sẽ vượt qua được tường lửa.

• Các công nghệ, như IPP, giao thức in ấn được sử dụng với CUPS, hoặc WebDAV, giao thức cho việc xác thực và đánh phiên bản đối với các website, làm cho có khả năng vượt qua được (hoặc làm cho nhất thiết phải vượt qua được) cấu hình của các tường lửa.

• Một kỹ thuật được gọi là hầm (tunnel) thường được sử dụng (ví dụ, với các giao thức được nhắc tới ở trên và những giao thức khác). Kỹ thuật này về cơ bản sẽ gói các giao thức không được cho phép, trên cơ sở của những giao thức được phép khác; ví dụ, nếu một tường lửa chỉ cho phép giao thông của HTTP đi qua (mặc định là cổng 80), thì có khả năng ghi vào một máy trạm và máy chủ (mỗi máy ở một phía của tường lửa) mà có thể nói chuyện được theo bất kỳ giao thức nào được biết đối với cả 2, nhưng trong đó mạng được chuyển sang một chuẩn HTTP, có nghĩa là giao thông có thể đi qua được tường lửa.

• Các mã di động của Web (ActiveX, Java, JavaScript) đi qua các tường lửa, và vì thế khó để dò tìm ra các hệ thống nếu có khả năng bị tổn thương đối với các cuộc tấn công chống lại bất kỳ lỗ hổng mở nào được phát hiện ra.

Vì thế, mặc dù các tường lửa là một giải pháp rất tốt cho hầu hết các khía cạnh có liên quan tới an ninh, thì chúng luôn có thể có những chỗ bị tổn thương và để cho giao thông mà được coi là hợp lệ đi qua, sau đó đưa vào các nguồn có thể khác của cuộc tấn công hoặc chỗ bị tổn thương. Đề cập về an ninh, chúng ta nên không bao giờ coi (và dựa vào) chỉ một giải pháp duy nhất và mong đợi nó bảo vệ chúng ta khỏi mọi thứ; Cần thiết phải xem xét các vấn đề khác nhau, để đề xuất các giải pháp sẽ dò tìm ra bất kỳ vấn đề gì đúng lúc và để thiết lập các chính sách phòng ngừa sẽ bảo vệ được hệ thống trước bất kỳ thiệt hại nào xảy ra.

Trang 380/471

Page 381: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.8. Các công cụ an ninh

Một số công cụ này cũng có thể được coi là các công cụ cho việc tấn công các máy khác. Vì thế, được khuyến cáo thử nghiệm các công cụ này trên các máy trong mạng cục bộ hoặc riêng của chúng ta; nên không bao giờ làm điều này với các IP của bên thứ ba, vì những thứ này có thể làm cho các thử nghiệm được coi như những thâm nhập trái phép và chúng ta hoặc ISP của chúng ta có thể bị chịu trách nhiệm vì chúng và các cơ quan chức năng liên quan có thể được nhắc nhở để điều tra chúng ta và loại bỏ sự truy cập của chúng ta.

Sẽ thảo luận ngắn gọn về một số công cụ và cách thức theo đó chúng có thể được sử dụng:

a) TripWire: công cụ này duy trì một cơ sở dữ liệu các tổng cho việc kiểm tra các tệp quan trọng trong hệ thống.

Hình 2. Việc phân tích các dịch vụ cục bộ của xnmap

Nó có thể phục vụ như một hệ thống IDS ngăn ngừa. Có thể sử dụng nó để “chụp” ảnh hệ thống, sao cho có thể sau đó kiểm tra bất kỳ sửa đổi nào được thực hiện và hệ thống không bị sập vì một kẻ tấn công. Mục đích ở đây là để bảo vệ các tệp trong bản thân máy và tránh bất kỳ thay đổi nào xảy ra, như những thứ, ví dụ, rootkit có thể đã gây ra. Vì thế, khi chúng ta chạy lại công cụ này một lần nữa, thì có thể kiểm tra tất cả những thay đổi được so sánh đối với sự thực thi trước đó. Phải chọn một tập con của

Trang 381/471

Page 382: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các tệp là quan trọng trong hệ thống hoặc các nguồn có khả năng cho cuộc tấn công. TripWire là sở hữu độc quyền, nhưng có một công cụ tự do nguồn mở tương đương được gọi là AIDE.

b) Nmap [Insb]: đây là một công cụ quét các cổng trong các mạng lớn. Nó có thể quét từ các máy riêng rẽ cho tới các phân đoạn mạng. Nó cung cấp một loạt các phương thức quét, phụ thuộc vào những bảo vệ của hệ thống. Nó cũng cung cấp các kỹ thuật giúp chúng ta có thể xác định hệ điều hành được sử dụng trong các máy ở xa. Các gói TCP và UDP khác nhau có thể được sử dụng để thử các kết nối. Có một giao diện đồ họa được biết như là xmap.

c) Wireshark [Wir] (trước đây được gọi là Ethereal): là một trình phân tích giao thức chụp giao thông trong mạng (nó hoạt động như một trình đánh hơi). Nó có thể được sử dụng để theo dõi giao thông được chụp, xem các con số thống kê và các dữ liệu của các gói riêng rẽ và nhóm các gói, hoặc bằng điểm gốc, điểm đích, các cổng hoặc giao thức. Nó có thể còn xây dựng lại được giao thông từ toàn bộ một phiên từ một giao thức kiểm soát truyền TCP.

d) Snort [Sno]: là một hệ thống IDS có khả năng phân tích giao thông trong thời gian thực và lưu các lưu ký logs của các thông điệp. Nó có thể được sử dụng để phân tích các giao thức và tìm kiếm các mẫu (giao thức, điểm gốc, điểm đích …). Nó có thể được sử dụng để dò tìm ra hàng loạt dạng tấn công. Về cơ bản, nó phân tích giao thông trong mạng để dò ra các mẫu có khả năng tương ứng với một cuộc tấn công. Hệ thống này sử dụng một loạt các qui định để hoặc sản sinh ra một lưu ký log về tình trạng (log) hoặc cảnh báo người sử dụng (cảnh báo - alert) hoặc từ chối thông tin (bỏ – drop).

e) Nessus [Nes]: dò tìm ra bất kỳ chỗ bị tổn thương được biết nào (bằng việc thử các kỹ thuật thâm nhập trái phép khác nhau) và đánh giá những lựa chọn an ninh tốt nhất cho những thứ được phát hiện ra. Nó là một chương trình theo module, đưa vào một loạt các trình cài cắm plugins (hơn 11,000) cho việc thực hiện các phân tích khác nhau. Nó sử dụng một kiến trúc máy trạm/máy chủ, với một máy trạm đồ họa để chỉ ra những kết quả và máy chủ, triển khai các thử nghiệm khác nhau trên các máy. Nó có khả năng để kiểm tra toàn bộ mạng. Nó sinh ra các báo cáo về các kết quả, có thể được xuất sang các định dạng khác (HTML, ví dụ). Cho tới năm 2005, Nessus 2 đã là một công cụ tự do, nhưng hãng này đã quyết định biến nó thành sở hữu độc quyền, trong phiên bản Nessus 3. Trong GNU/Linux, Nessus 2 vẫn còn được sử dụng, khi nó tiếp tục có giấy phép GPL và một loạt các trình cài cắm, mà chúng dần dần được cập nhật. Nessus 3, như một công cụ sở hữu độc quyền cho GNU/Linux, là mạnh hơn và được sử dụng rộng rãi, vì nó là một trong những công cụ an ninh phổ biến nhất và thường có một phiên bản tự do có sẵn với các trình cài cắm ít được cập nhật hơn so với các trình cài cắm trong phiên bản không phải là tự do.

Chúng ta có thể thấy nhiều công cụ an ninh sẵn có khác. Một chỗ tốt để bắt đầu là http://sectools.org, nơi các nhà thiết kế của Nmap duy trì một danh sách các công cụ phổ biến, khi được những người sử dụng biểu quyết (bây giờ, một danh sách hơi cũ một chút, nhưng là các công cụ hữu dụng).

Trang 382/471

Page 383: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 3. Máy trạm Nessus chỉ ra báo cáo những chỗ bị tổn thương và các giải pháp có thể

Trang 383/471

Page 384: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.9. Phân tích các lưu ký logs

Bằng việc quan sát các tệp lưu ký log [Ano99][Fri02], có thể nhanh chóng có được một ý tưởng về tình trạng tổng thể của hệ thống, cũng như những sự kiện mới nhất, và dò tìm ra bất kỳ những thâm nhập trái phép nào không bình thường (hoặc những mưu toan thâm nhập trái phép). Nhưng cũng nên nhớ rằng, nếu thực sự đã có một sự thâm nhập trái phép, thì các logs có thể đã bị xóa sạch hoặc bị làm giả. Hầu hết các tệp log sẽ ở trong thư mục /var/log.

Nhiều dịch vụ có thể có những logs riêng của chúng, thường được thiết lập trong khi cấu hình (thông qua tệp cấu hình tương ứng). Hầu hết chúng thường sử dụng các trang bị log được kết hợp trong Syslog thông qua daemon Syslogd. Cấu hình sẽ nằm trong /etc/syslog.conf. Cấu hình này thường được thiết lập theo các mức thông điệp: có những dạng khác nhau của thông điệp theo tầm quan trọng của chúng. Thông thường, các mức như là debug, info, err, notice, warning, crit, alert, emerg, appear, trong đó trật tự về tầm quan trọng của các thông điệp có thể ít nhiều như sau (từ ít quan trọng nhất cho tới quan trọng nhất). Thông thường, hầu hết các thông điệp được gửi tới /var/log/messages, nhưng hệ thống có thể được thiết lập sao cho mỗi dạng thông điệp đi tới các tệp khác nhau và cũng có khả năng để xác định ai đã tạo ra chúng; một cách điển hình, thì nhân, thư, thông tin, và hệ thống xác thực...

Hệ quả là, phù hợp để xem xét (hoặc trong mọi trường hợp áp dụng) cấu hình của Syslog sao cho để xác định các logs trong đó chúng ta có thể thấy được/tạo ra được thông tin. Điểm quan trọng khác là để kiểm soát sự tăng trưởng của nó, khi, phụ thuộc vào những gì là tích cực và các hoạt động (và các dịch vụ) được thực hiện trong hệ thống, các logs có thể tăng trưởng rất nhanh. Trong Debian và Fedora, điều này có thể được kiểm soát thông qua logrotated, một daemon mà thường tạo các bản sao và nén các logs cũ nhất; có khả năng để tìm cấu hình chúng trong /etc/logrotate.conf, mặc dù một số ứng dụng thiết đặt các cấu hình có thể tìm thấy được trong thư mục /etc/logrotate.d.

Trong các điểm sau, chúng ta sẽ thảo luận một số các tệp log nên được tính tới (có lẽ thường được sử dụng nhiều nhất):

a) /var/log/messages: là tệp log mặc định của daemon Syslogd, nhưng chúng ta có lẽ phải kiểm tra cấu hình của nó, trong trường hợp nó đã bị chuyển sang chỗ khác hoặc chúng có vài cái. Tệp này chứa một dải rộng lớn các thông điệp từ nhiều điểm gốc (các daemon, dịch vụ khác nhau hoặc cùng một nhân); mọi thứ mà thấy không bình thường phải được kiểm tra. Nếu đã từng có một sự thâm nhập trái phép, thì ngày tháng của sự thâm nhập và các tệp bị thay thế phải được kiểm tra.

b) /var/log/utmp: tệp này chứa thông tin nhị phân cho từng người sử dụng hiện đang hoạt động. Nó được sử dụng để xác định ai được ghi lưu ký trong hệ thống. Lệnh who sử dụng tệp này để cung cấp các thông tin.

c) /var/log/wtmp: mỗi lần mà một người sử dụng đăng nhập hoặc xuất đối với hệ thống, hoặc máy khởi động, thì một khoản vào được lưu trong tệp này. Đây là một tệp nhị phân từ đó lệnh cuối cùng có được các thông tin; tệp này ghi lại những người sử dụng nào đã đăng nhập hoặc xuất đối với hệ thống và khi nào và ở đâu kết nối được thực hiện. Nó có thể dò tìm ra sự sử dụng của các tài khoản đáng ngờ. Cũng có một biến thể trong lệnh này được gọi là lastb, liệt kê những mưu toan đăng nhập đã được xác minh

Trang 384/471

Page 385: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

là không đúng và tệp /var/log/btmp được sử dụng (bạn có thể phải tạo ra nó nếu nó không tồn tại). Những lỗi xác thực y hệt này cũng có thể được gửi tới log auth.log. Theo cách tương tự, lệnh lastlog sử dụng tệp khác, /var/loglastlog, để xác minh kết nối cuối cùng từng là cái nào với từng người sử dụng.

d) /var/log/secure: chúng thường được sử dụng trong Fedora cho việc gửi các thông điệp wrapper tcp (hoặc các tường lửa). Mỗi lần một kết nối được thiết lập tới dịch vụ inetd, hoặc, trong trường hợp của Red Hat 9, với dịch vụ xinetd (với an ninh của riêng nó), thì một thông điệp log được bổ sung cho tệp này. Chúng ta có thể tìm kiếm những mưu toan thâm nhập trái phép trong các dịch vụ không thường được sử dụng hoặc trong các máy tính lạ cố gắng kết nối tới.

Trong hệ thống logs, một thứ khác phải được kiểm tra là các log thư mục trong /var/log chỉ có root mới có khả năng ghi vào được (hoặc các daemon có liên quan tới các dịch vụ). Nếu khác đi, thì những kẻ tấn công có thể giả mạo thông tin trong các logs. Dù vậy, nếu những kẻ tấn công cố truy cập root, thì chúng có thể thường xóa đi tất cả các dấu vết của chúng.

Trang 385/471

Page 386: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

9.10. Sách chỉ dẫn: các công cụ cho việc phân tích an ninh

Bây giờ chúng ta sẽ thực hiện một số tiến trình được mô tả ở trên trong một hệ thống Debian, để cải thiện cấu hình an ninh.

Trước tiên chúng ta sẽ xem xét máy tính đưa ra những gì trong mạng. Để làm việc này, chúng ta sẽ sử dụng công cụ nmap như một trình quét cổng. Với lệnh (từ root):

nmap -sTU -O localhost

chúng ta có được:

root@machine: ~# nmap -sUT -O localhost

starting nmap 3.27 (www.insecure.org/nmap/) at 2003-09-17

11:31 CEST Interesting ports on localhost (127.0.0.1):

(Các cổng 3079 được quét nhưng không chỉ ra ở dưới là trong tình trạng: đóng)

Cổng Tình trạng Dịch vụ

9/tcp open discard

9/udp open discard

13/tcp open daytime

22/tcp open smtp

25/tcp open time

37/tcp open time

37/udp open http

80/tcp open sunrpc

111/tcp open sunrpc

111/udp open auth

113/tcp open ipp

631/tcp open unknown

728/udp open

731/udp open netviewdm3

734/tcp open unknown

Trang 386/471

Page 387: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

� oán h � � i � u hành � xa: Nhân Linux 2.4.0-2.5.20

Uptime 2.011 days (since Mon Sep 15 11:14:57 2003)

Nmap run completed - -1 IP addres (1 host up) scanned in 9.404 seconds

Chúng ta có thể thấy rằng một số lượng cao các dịch vụ mở đã được dò tìm ra (phụ thuộc vào máy, có thể có nhiều hơn: telnet, FTP, finger...), trong cả 2 giao thức kiểm soát truyền (TCP) và giao thức datagram của người sử dụng (UDP). Một số dịch vụ, như discard, daytime, time có thể hữu dụng đôi khi, nhưng chúng nên không thường xuyên được mở đối với mạng, vì chúng được coi là không an ninh. SMTP là dịch vụ gửi lại và định tuyến, cho thư; nếu chúng ta đang hoạt động như máy chủ host hoặc máy chủ thư, thì điều này có thể sẽ là tích cực; nhưng nếu chúng ta chỉ đọc và ghi các thư điện tử thông qua các tài khoản POP3 hoặc IMAP, thì điều này không cần thiết phải là tích cực.

Một phương pháp khác cho việc dò tìm các dịch vụ tích cực có thể là bằng việc tìm kiếm các cổng nghe tích cực, mà chúng có thể đạt được với lệnh netstat -lut.

Lệnh nmap cũng có thể được áp dụng với tên DNS hoặc IP của máy; điều này chỉ cho chúng ta cách mà hệ thống được nhìn từ một người bên ngoài (với localhost, chúng ta thấy những gì máy thực sự có thể thấy), hoặc, còn tốt hơn, chúng ta còn có thể sử dụng một máy của một mạng bên ngoài (ví dụ, bất kỳ máy PC nào được kết nối tới Internet) để xem xét những gì có thể được thấy trong máy của chúng ta từ bên ngoài.

Chúng ta bây giờ sẽ đi tới /etc/inetd.conf để vô hiệu hóa các dịch vụ này. Nên tìm kiếm các dòng như:

discard stream tcp nowait root internal

smtp stream tcp nowait mail /usr/sbin/exim exim -bs

và gõ một ký tự (#) vào đầu của dòng (chỉ trong các dịch vụ chúng ta muốn vô hiệu hóa và khi biết những gì chúng thực sự đang làm (kiểm tra các trang của man khi việc vô hiệu hóa chúng được khuyến cáo). Trường hợp khác của sự vô hiệu hóa được khuyến cáo có thể là các dịch vụ ftp, telnet, finger và nên sử dụng ssh để thay thế chúng.

Bây giờ phải khởi động inetd sao cho nó đọc lại cấu hình mà đã được thay đổi: /etc/init.d/inetd restart.

Chúng ta quay về với nmap:

22/tcp open ssh

80/tcp open http

111/tcp open sunrpc

111/udp open sunrpc

113/tcp open auth

631/tcp open ipp

Trang 387/471

Page 388: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

728/udp open unknown

734/tcp open unknown

Từ những gì còn lại, có dịch vụ ssh, mà chúng ta muốn để nó tích cực, và máy chủ web, mà chúng ta sẽ dừng một lúc:

/etc/init.d/apache stop

ipp là dịch vụ in ấn có liên quan tới CUPS. Trong phần quản trị cục bộ chúng ta đã thấy rằng đã có một giao diện web của CUPS đã kết nối tới cổng 631. Nếu muốn có một ý tưởng về những gì một cổng cụ thể đang làm, thì chúng ta có thể nhìn vào /etc/services:

root@machine:# grep 631 /etc/services

ipp 631/tcp # Internet Printing Protocol

ipp 631/udp # Internet Printing Protocol

Nếu chúng ta không hoạt động như máy chủ in đối với người ở ngoài, thì phải đi tới cấu hình của CUPS và hạn chế tính năng này (ví dụ, bằng việc thay thế một cổng IP nghe 127.0.0.1:631, sao cho chỉ máy cục bộ nghe), hoặc hạn chế sự truy cập tới các máy được phép.

Một số cổng khác cũng xuất hiện như là không được biết, trong trường hợp này, các cổng 728 và 734; điều này chỉ rằng hệ thống không có khả năng xác định nmap nào là có liên quan tới cổng này. Chúng ta sẽ tự mình cố gắng xem nó. Đối với điều này, có thể chạy lệnh netstat trong hệ thống, nó đưa ra các con số thống kê khác nhau về hệ thống mạng, từ các gói được gửi và được nhận và những lỗi đối với những yếu tố trong đó cần được quan tâm, là các kết nối mở và ai đang sử dụng chúng. Chúng ta sẽ cố gắng tìm ra ai đang sử dụng các cổng không được biết tới:

root@machine: ~# netstat -anp | grep 728

udp 0 0 0.0.0.0:728 0.0.0.0:* 552/rpc.statd

Và nếu làm y hệt với cổng 734, thì có thể thấy rằng nó từng là rpc.statd mà nó đã mở cổng này; rpc.statd là một daemon có liên quan tới NFS (trong trường hợp này, hệ thống có một máy chủ NFS). Nếu lặp lại tiến trình này với các cổng 111, đã xuất hiện như sunrpc, thì sẽ thấy rằng daemon đứng đằng sau là portmap, được sử dụng trong hệ thống gọi thủ tục ở xa (RPC). Hệ thống RPC cho phép những người sử dụng sử dụng các lời gọi ở xa giữa 2 tiến trình trên các máy khác nhau, portmap là một daemon chuyển các lời gọi ở cổng thành các số dịch vụ RPC bên trong nội bộ và nó được các máy chủ khác nhau như là NFS, NIS, NIS+ sử dụng.

Các dịch vụ RPC được đưa ra có thể thấy được với lệnh rpcinfo:

root@machine: ~# rpcinfo -p

programme vers proto Port

100000 2 tcp 111 portmapper

Trang 388/471

Page 389: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

100000 2 udp 111 portmapper

100024 1 udp 731 status

100024 1 tcp 734 status

391002 1 tcp 39797 sgi_fam

391002 2 tcp 39797 sgi_fam

nơi mà chúng ta thấy các dịch vụ RPC với một số cổng đã được dò tìm ra. Một lệnh khác có thể hữu dụng là lsof, mà, trong số các chức năng, có khả năng liên hệ các cổng với các dịch vụ đã mở các cổng đó (ví dụ: lsof -i | grep 731).

Daemon portmap là thứ gì đó sống còn khi đề cập tới an ninh, vì, về nguyên tắc, nó không đưa ra các cơ chế xác thực máy trạm, vì điều này được cho là đại diện cho dịch vụ (NFS, NIS...). Hệ quả là, portmap có thể khắc chế được các cuộc tấn công DoS có thể gây ra các lỗi trong các dịch vụ hoặc gây ra thời gian chết. Nếu chúng ta không sử dụng những thứ này và không định sử dụng các dịch vụ NFS và NIS, thì tốt nhất là hoàn toàn vô hiệu hóa portmap, loại bỏ nó khỏi mức chạy trong đó nó hoạt động. Chúng ta cũng có thể dừng chúng tạm thời với các script sau (trong Debian):

/etc/init.d/nfs-common

/etc/init.d/nfs-kernel-server

/etc/init.d/portmap

bằng việc đưa vào thông số stop để dừng các dịch vụ RPC (trong trường hợp này là NFS).

Chúng ta sau đó sẽ kiểm soát an ninh trên cơ sở sử dụng một trình bao bọc wrapper đơn giản. Giả thiết rằng chúng ta muốn để một máy cụ thể nào đó đi qua ssh, sẽ gọi 1.2.3.4 (địa chỉ IP). Sẽ đóng portmap đối với người bên ngoài, khi chúng ta không có NIS và có một máy thủ NFS nhưng không phục vụ bất kỳ thứ gì (có thể đóng nó, nhưng sẽ để nó cho việc sử dụng trong tương lai). Sẽ tạo ra một trình bao bọc wrapper (giả thiết các trình wrapper TCP đã được cài đặt rồi) bằng việc sửa đổi các tệp hosts.deny -j allow. Trong /etc/hosts.deny:

ALL : ALL : spawn (/usr/sbin/safe_finger -1 @%h \ | /usr/bin/mail -s “%c FAILED

ACCESS TO %d!!” root) &

chúng ta đang từ chối tất cả các dịch vụ (hãy cẩn thận, một số chúng có liên quan tới inetd), và bước tiếp sau phải làm sẽ là tìm ra ai đã yêu cầu dịch vụ này và từ máy nào và chúng ta sẽ gửi một thông điệp thư điện tử tới người sử dụng root báo về mưu toan này. Cũng có thể ghi vào một tệp lưu ký log... Bây giờ, trong /etc/hosts.allow:

sshd: 1.2.3.4

chúng ta cho phép sự truy cập cho máy có địa chỉ IP 1.2.3.4 trong máy chủ sshd (của ssh). Cũng có thể đưa vào sự truy cập tới portmap, tất cả điều chúng ta có thể cần là một dòng portmap: la_ip. Có thể vào một danh sách các máy hoặc các mạng con có thể sử dụng dịch vụ này (xem man hosts.allow). Hãy nhớ là cũng có lệnh tcpdchk để kiểm tra cấu hình của trình bao bọc wrapper là đúng và lệnh tcpdmatch khuyến khích những gì có thể xảy ra với một ý định cụ thể, ví dụ:

Trang 389/471

Page 390: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

root@machine: ~# tcpdmatch sshd 1.2.3.4

warning: sshd: no such process name in /etc/inetd.conf client:

hostname machine.domain.es

client: addres 1.2.3.4

server: process sshd

matched: /etc/hosts.allow line 13

access: grantedv

nói cho chúng ta rằng sự truy cập có thể được cung cấp. Một chi tiết là nó nói cho chúng ta rằng sshd không ở trong inetd.conf và, nếu kiểm tra nó, thì thấy rằng nó không có: thứ này không được kích hoạt bằng máy chủ inetd, nhưng bằng daemon trong mức chạy trong đó chúng ta đang vận hành. Bên cạnh đó, trong Debian, đây là một daemon được biên dịch với các thư viện của wrapper được đưa vào (mà vì thế không đòi hỏi tcpd để làm việc). Trong Debian, có một loạt các daemons như: ssh, portmap, in.talk, rpc.statd, rpc.mountd, và những thứ khác. Điều này cho phép chúng ta đảm bảo an ninh cho các daemon này bằng việc sử dụng các wrapper.

Câu hỏi khác cần được xác minh có liên quan tới các kết nối hiện đang tồn tại. Với lệnh netstat -utp, chúng ta có thể liệt kê các kết nối tcp, udp được thiết lập với bên ngoài, hoặc chúng là đi vào hay đi ra và vì thế, bất kỳ lúc nào, cũng có thể dò tìm ra các máy trạm được kết nối và chúng ta được kết nối tới ai. Một lệnh quan trọng khác (với nhiều chức năng) là lsof, có thể liên quan tới các tệp mở với các tiến trình được thiết lập hoặc các kết nối trên mạng thông qua lsof -i, giúp dò tìm ra bất kỳ sự truy cập không phù hợp nào đối với các tệp này.

Chúng ta cũng có thể sử dụng một tường lửa cho các tiến trình tương tự (hoặc như một cơ chế bổ sung).

Chúng ta sẽ bắt đầu bằng việc xem các qui định của tường lửa là như thế nào vào lúc này: (lệnh iptables -L).

root@aopcjj:&#732;# iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain FORWARD (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Nói cách khác, tường lửa không đặt ra bất kỳ hạn chế nào vào lúc này và tất cả các gói có thể được gửi, nhận và gửi lại.

Tại điểm này, chúng ta có thể bổ sung một tường lửa có khả năng đưa ra sự quản lý tốt hơn các gói mà chúng ta gửi và nhận, và có thể là sự kiểm soát sơ bộ để cải thiện an ninh. Phụ thuộc vào những nhu cầu, chúng ta có thể thiết lập những qui định cần thiết tương tự như những ví dụ của tường lửa được đưa ra trong phần này.

Trang 390/471

Page 391: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Nếu thiết lập các tường lửa, chúng ta có thể coi hoặc sử dụng cơ chế này như một yếu tố an ninh duy nhất và loại bỏ các wrapper: điều này có thể được thực hiện, vì các tường lửa (trong trường hợp này là thông qua iptables) đưa ra tính năng rất mạnh cho phép tuân theo dạng các gói, giao thức và những gì đang làm việc trong hệ thống. Một tường lửa tốt có thể là đủ, nhưng sẽ là ở phần an toàn, các biện pháp an ninh hơn sẽ luôn là hữu dụng. Nếu tường lửa chưa được thiết kế tốt và để lọt một số gói ra ngoài, thì wrapper có thể là biện pháp mức dịch vụ để dừng bất kỳ sự truy cập không mong muốn nào. Để đưa ra một phép ẩn dụ thường được sử dụng, nếu coi hệ thống của chúng ta như một lâu đài thời trung cổ phải được bảo vệ, thì các tường và hào bao mặt tiền là tường lửa, và bức tường ngăn chặn thứ 2 là wrapper.

Trang 391/471

Page 392: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Giả thiết rằng chúng ta định vị một website trong máy của chúng ta, sử dụng Apache, ví dụ thế. Site của chúng ta được thiết kế cho 10 người sử dụng Internet, nhưng chúng ta không kiểm soát được con số này. Hệ quả là, chúng ta coi việc làm cho hệ thống này truy cập được trên Internet, như chúng ta nghĩ rằng nó có thể là hữu dụng cho các máy trạm, và thứ duy nhất mà chúng ta phải làm là chỉ định một địa chỉ IP trên Internet đối với hệ thống này. Những dạng tấn công nào hệ thống này có thể gánh chịu?

2) Làm thế nào chúng ta có thể dò tìm ra được các tệp với suid trong hệ thống của chúng ta? Những lệnh nào là cần thiết? Và những thư mục nào với SUID hoặc SGID? Vì sao nó cần thiết, ví dụ, cho /usr/bin/passwd để có được một bit SUID?

3) Các tệp .rhosts, như chúng ta đã thấy, là một mối nguy hiểm đáng kể cho an ninh. Liệu chúng ta có sử dụng một số dạng phương pháp tự động cho việc kiểm tra thường xuyên các tệp này hay không? Làm thế nào?

4) Giả thiết rằng chúng ta muốn vô hiệu hóa một dịch vụ mà chúng ta biết có script /etc/init.d/service của nó đang kiểm soát nó: chúng ta muốn vô hiệu hóa nó trong tất cả các mức chạy trong đó nó xuất hiện. Làm thế nào chúng ta tìm được các mức chạy trong đó nó hiện diện? (ví dụ, việc tìm kiếm các liên kết tới script này).

5) Xem xét các dịch vụ tích cực trong máy của bạn. Liệu chúng tất cả có cần thiết? Làm thế nào chúng ta có thể bảo vệ hoặc vô hiệu hóa chúng được?

6) Thực hành sử dụng một số công cụ an ninh được mô tả (nmap, nessus, …).

7) Những qui định IPtables nào có thể là cần thiết cho một máy mà chúng ta chỉ muốn truy cập thông qua SSH từ một địa chỉ cụ thể nào đó?

8) Điều gì sẽ xảy ra nếu chúng ta chỉ muốn truy cập tới máy chủ web?

Trang 392/471

Page 393: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham chiếu và các thông tin khác

[Deb][Hatc] The security sites for the distributions.

[Pen] Essential for Debian, with a very good description of how to configure security, that can be followed step by step, [Hatb] would be the equivalent for Fedora/Red Hat.

[Mou01] Excellent security reference for Red Hat (also applicable to Debian).

[Hat01] GNU/Linux security books covering extensive techniques and aspects.

[Line] Small guide (2 pages) to security.

[Sei] Step-by-step guide identifying the key points that have to be verified and the problems that may arise.

[Net] Project Netfilter, and IPTables.

[Ian] A list of TCP/IP ports.

[Proa][Sno][Insb][Nes] Some of the most commonly used security tools.

[NSAb] Linux version focused on security, produced by the NSA, Reference for SELinux.

[CERa][Aus][Insa][Incb] [NSAa] Security organisation' sites.

[CERb][Ins][San] Vulnerabilities and exploits of the different operating systems.

[NSAa][FBI][USA] Some cybercrime “policies” in the United States.

Trang 393/471

Page 394: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

10 Cấu hình, tinh chỉnh và tối ưu hóa

Remo Suppi BoldritoPID_00148473

Configuration, tuning and optimisation

Remo Suppi BoldritoPID_00148473

Trang 394/471

Page 395: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Một khía cạnh cơ bản, một khi hệ thống đã được cài đặt, thì cần thiết lập cấu hình và tinh chỉnh hệ thống cho những nhu cầu của người sử dụng để đảm bảo rằng các tính năng là phù hợp một cách có thể cho những yêu cầu sẽ được đặt lên nó. GNU/Linux là một hệ điều hành hiệu quả cung cấp một mức độ tuyệt vời về những cấu hình có thể và một sự tối ưu hóa rất tinh tế thể được chỉnh cho các nhu cầu của người sử dụng. Điều này giải thích vì sao, một khi hệ thống đã được cài đặt (hoặc được cập nhật, phụ thuộc vào từng trường hợp), thì những cấu hình nhất định là cơ bản đối với hệ thống phải được tinh chỉnh. Mặc dù hệ thống có thể “làm việc”, thì sự cần thiết để thực hiện một số thay đổi (áp dụng cho môi trường hoặc tinh chỉnh sao cho tất cả nhu cầu của những người sử dụng/các dịch vụ máy phải cung cấp là đáp ứng được. Việc tinh chỉnh phụ thuộc vào việc máy đang làm việc ở đâu; việc tinh chỉnh sẽ được triển khai, trong một số trường hợp, để cải thiện hiệu năng và tính hiệu quả của hệ thống, và, trong những trường hợp khác (bổ sung thêm vào), vì những lý do an ninh (xem module 9, “Quản trị an ninh”. Khi hệ thống đang làm việc, cần thiết phải giám sát hệ thống để xem nó thực thi và hành xử thế nào và để hành xử một cách tương ứng. Mặc dù là một khía cạnh cơ bản, thì việc tinh chỉnh một hệ điều hành thường dành cho các ý kiến của các chuyên gia hoặc cao thủ (guru) máy tính; nhưng nếu chúng ta nhận thức được về các thông số có ảnh hưởng tới hiệu năng, thì có khả năng đạt được những giải pháp tốt bằng việc quyết định một tiến trình phân tích tuần hoàn theo chu kỳ, tiến hành những thay đổi đối với cấu hình, giám sát và tiến hành những tinh chỉnh.

Trang 395/471

Page 396: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

10.1. Những khía cạnh cơ bản

Trước khi học các kỹ thuật tối ưu hóa, cần thiết phải liệt kê những nguyên nhân có thể ảnh hưởng tới hiệu năng của một hệ điều hành [Maj96]. Trong số đó, chúng ta có thể nhắc tới:

a) Những tắc nghẽn trong các tài nguyên: hệ quả là toàn bộ hệ thống sẽ bị chậm vì có những tài nguyên không thể thỏa mãn yêu cầu mà chúng phải phục vụ. Bước đầu tiên cho việc tối ưu hóa hệ thống là tìm những chỗ tắc nghẽn này và những lý do của chúng, trong khi học cách hạn chế chúng cả về lý thuyết và thực hành.

b) Luật của Amdah; Theo luật này, “có một giới hạn đối với toàn bộ một hệ thống có thể được cải thiện (hoặc tăng tốc độ) bao nhiêu khi chỉ một phần của hệ thống được cải thiện”; nói cách khác, nếu chúng ta có một chương trình mà sử dụng 10% CPU và nó được tối ưu hóa để giảm sử dụng với 1 hoặc 2 yếu tố, thì chương trình này sẽ cải thiện hiệu năng của nó (nhanh hơn) được 5%, có nghĩa là một nỗ lực khổng lồ được đặt vào thứ gì đó không bù trừ được với việc đảm bảo cho các kết quả.

c) Đánh giá sự tăng tốc: cần thiết phải đánh giá hệ thống sẽ cải thiện được bao nhiêu sao cho tránh được bất kỳ những nỗ lực và chi phí không cần thiết nào. Chúng ta có thể sử dụng luật được mô tả ở trên để đánh giá liệu có cần thiết phải đầu tư thời gian hoặc tiền bạc vào hệ thống hay không.

d) Hiệu ứng bong bóng: rất phổ biến có cảm giác rằng, một khi chúng ta đã giải quyết được một vấn đề, thì một vấn đề khác sẽ luôn xuất hiện. Một biểu hiện của vấn đề này là việc hệ thống luôn dịch chuyển giữa các vấn đề của CPU và các vấn đề vào/ra, và ngược lại.

e) Thời gian trả lời với tải công việc: nếu chúng ta có 20 người sử dụng, việc cải thiện hiệu năng có nghĩa rằng tất cả sẽ có nhiều công việc được thực hiện hơn cùng một lúc, nhưng từng thời gian trả lời riêng rẽ sẽ không cải thiện được; có thể là những lúc trả lời cho một số vụ việc này sẽ tốt hơn so với các vụ việc khác. Việc cải thiện thời gian trả lời có nghĩa là việc tối ưu hóa hệ thống sao cho những nhiệm vụ riêng rẽ chiếm ít thời gian nhất có thể.

f) Tâm lý của người sử dụng: 2 thông số là cơ bản: 1) người sử dụng nói chung sẽ không thỏa mãn khi có những biến đổi trong thời gian trả lời; và 2) người sử dụng sẽ không lưu ý tới bất kỳ sự cải thiện nào trong thời gian thực hiện ít hơn 20%.

g) Hiệu ứng thử nghiệm: các biện pháp giám sát ảnh hưởng tới bản thân các biện pháp giám sát đó. Chúng ta nên xử lý thận trọng khi đang thực hiện những thử nghiệm vì các hiệu ứng phụ của các chương trình kiểm thử thực tiễn.

h) Tầm quan trọng của sự trung bình và những biến đổi: các kết quả phải được tính tới, biết rằng, nếu chúng ta có được một sự trung bình về sử dụng CPU cỡ 50% khi chỉ 100, 0, 0, 100 đã được sử dụng, thì chúng ta có thể đi tới những kết luận sai. Điều quan trọng để thấy sự biến đổi trong sự trung bình này.

i) Sự nhận biết cơ bản về phần cứng của hệ thống sẽ được tối ưu hóa: để cải thiện thứ gì đó thì chúng ta cần phải “biết” liệu nó có thể được cải

Trang 396/471

Lưu ý

Khi tối ưu hóa, sự bão hòa của các tài nguyên phải được tính tới. Luật Amdahl liệt kê sự nhận biết về tính sẵn sàng của phần cứng và phần mềm, thời gian trả lời và số lượng các công việc.

Page 397: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

thiện hay không. Người có trách nhiệm tối ưu hóa phải có nhiều kiến thức cơ bản về phần cứng bên trong (CPU, bộ nhớ, các bus, cache, đầu vào/ra, các đĩa, video...) và những kết nối nội bộ để xác định vấn đề nằm ở đâu.

j) Kiến thức cơ bản về hệ điều hành được tối ưu hóa: như với điểm xử lý, người sử dụng phải biết những khía cạnh tối thiểu về hệ điều hành mà họ dự định tối ưu hóa, cái nào có thể đưa vào những khái niệm như các tiến trình và các luồng (sự tạo ra, sự chạy, các tình trạng, các ưu tiên, sự kết thúc), các lời gọi hệ thống, các bộ nhớ đệm cache, các hệ thống tệp, quản trị bộ nhớ và bộ nhớ ảo (bộ nhớ trang – paging, bộ nhớ hoán đổi – swap) và các bảng của nhân.

10.1.1. Việc giám sát trên một UNIX System V

/proc sẽ xuất hiện như một thư mục nhưng trong thực tế, đây là một hệ thống tệp giả tưởng, nói cách khác, nó không tồn tại trên đĩa và nhân tạo ra nó trong bộ nhớ. Nó được sử dụng để cung cấp thông tin về hệ thống (ban đầu về các tiến trình, sau đó là tên), sau đó sẽ được các lệnh, chúng ta bây giờ sẽ xem xét, sử dụng. Bây giờ chúng ta sẽ nhìn vào một số tệp thú vị (kiểm tra trang thích hợp trong sách chỉ dẫn để có thêm thông tin):

/proc/1: thư mục với thông tin về tiến trình 1 (số lượng các thư mục là PID của tiến trình).

/proc/cpuinfo: thông tin về CPU (đạng, hiệu, mẫu mã, hiệu năng...).

/proc/devices: danh sách các thiết bị được cấu hình trong nhân.

/proc/dma: các kênh DMA được sử dụng ở điểm này đúng lúc.

/proc/filesystems: các hệ thống tệp được cấu hình trong nhân

/proc/interrupts: chỉ các ngắt nào đang được sử dụng và có bao nhiêu trong số chúng đã được xử lý.

/proc/ioports: thứ y hệt áp dụng cho các cổng.

/proc/kcore: ảnh của bộ nhớ vật lý của hệ thống.

/proc/kmsg: các thông điệp được tạo ra bởi nhân mà sau đó được guiwir tới syslog.

/proc/ksyms: bảng các biểu tượng của nhân.

/proc/loadavg: tải của hệ thống.

/proc/meminfo: thông tin về sử dụng bộ nhớ.

/proc/modules: các module được tải bởi nhân.

/proc/stat: các số thống kê về hệ thống.

/proc/uptime: từ lúc hệ thống đang làm việc.

/proc/version: phiên bản của nhân.

Nên nhớ những tệp này là nhìn thấy (văn bản) nhưng đôi khi các dữ liệu ở trong một tình trạng “thô” và các lệnh cần thiết phải dịch chúng. Những lệnh này sẽ là những lệnh chúng ta sẽ xem xét bây giờ.

Các hệ thống UNIX SV tương thích sử dụng các lệnh sar và sadc để có được các số thống kê hệ thống

Trang 397/471

Page 398: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

(trong FC được đưa vào bên trong gói sysstat cũng đưa vào iostat hoặc mpstat). Thứ tương đương trong

GNU/Linux Debian là atsar (và atsadc), là tương đương tuyệt đối đối với thứ chúng ta đã nhắc tới. Lệnh atsar đọc các con đếm và các số thống kê trong tệp /proc và chỉ chúng ở đầu ra chuẩn. Cách đầu tiên để gọi lệnh này là:

atsar options t [n]n

trong đó hoạt động được chỉ ra trong n lần mỗi t giây với một tiêu đề chỉ con đếm của hoạt động đó (giá trị mặc định của n là 1). Cách thứ 2 để gọi nó là:

atsar -options -s time -e time -i sec -f file -n day#

Lệnh này trích các dữ liệu từ tệp được chỉ định với -f (mặc định /var/log/alsar/atsarxx, với xx là ngày của tháng) và nó trước đó đã được lưu bằng atsadc (được sử dụng để thu thập các dữ liệu, lưu chúng và xử lý chúng và, trong Debian, nó là ở trong /usr/lib/atsar). Thông số -n có thể được sử dụng để chỉ ngày của tháng và -s, -e là thời gian của lần khởi động cuối cùng, một cách tương ứng. Để kích hoạt atsadc, ví dụ, chúng ta có thể đưa vào một dòng như sau trong /etc/cron.d/atsar:

@reboot root test -x /usr/lib/atsadc && /usr/lib/atsar/atsadc

/var/log/atsar/atsa 'date +\%d'

10, 20, 30, 40, 50 * * * * root test -x /usr/lib/atsar/atsa1 &&

/usr/lib/atsar/atsa1

Cái đầu tạo tệp sau một khởi động. Cái thứ 2 lưu các dữ liệu mỗi 10 phút với script của trình biên dịch atsa1, mà nó gọi atsadc.

Trong atsar (hoặc sar), những lựa chọn được sử dụng để chỉ ra những con đếm nào phải được chỉ ra; một số ví dụ bao gồm:

Lựa chọn Mô tả

u Sử dụng CPU

d Hoạt động của đĩa

I (i) Số lượng các ngắt

V Sử dụng các bảng trong nhân

and Sử dụng các số thống kê của ttys

p Thông tin về phân trang và hoạt động hoán đổi

r Bộ nhớ tự do và hoán đổi (swap) được sử dụng

I (L) Các số thống kê của mạng

L Thông tin về các lỗi của mạng

w Các số thống kê kết nối IP

Trang 398/471

Page 399: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lựa chọn Mô tả

t Các số thống kê TCP

U Các số thống kê UDP

m Các số thống kê ICMP

N Các số thống kê NFS

A Tất cả các lựa chọn

Lưu ý

Việc giám sát với atsar

• CPU: atsar -u

• Memory: atsar -r

• Disk: atsar -d

• Paging: atsar -p

Giữa atsar và sar chỉ có một ít khác biệt về khía cạnh các dữ liệu được thể hiện như thế nào và sar đưa vào một ít lựa chọn bổ sung (hoặc khác biệt). Chúng ta bây giờ sẽ thấy một số ví dụ về cách sử dụng sar (chính xác y hệt như với atsar, những khác biệt duy nhất là theo cách mà trong đó các dữ liệu sẽ được hiển thị) và ý nghĩa của thông tin mà nó sinh ra:

1) Sử dụng CPU

sar -u 4 5

Linux 2.6.19-prep (localhost.localdomain) 24/03/07

08:23:22 CPU %user %nice %system %iowait %steal %idle

08:23:26 all 0.25 0.00 0.50 0.00 0.00 99.25

08:23:30 all 0.00 0.00 0.00 0.00 0.00 100.00

08:23:34 all 0.00 0.00 0.00 0.00 0.00 100.00

08:23:38 all 0.25 0.00 0.00 0.00 0.00 99.75

08:23:42 all 0.00 0.00 0.00 0.00 0.00 100.00

Media: all 0.10 0.00 0.10 0.00 0.00 99.80

• usr và hệ thống chỉ ra phần trăm thời gian của CPU ở chế độ người sử dụng với nice = 0 (thông thường) và trong chế độ của nhân.

Trang 399/471

Page 400: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• nice là y hệt nhưng với các tiến trình của người sử dụng với nice > 0 (thấp hơn ưu tiên trung bình).

• idle chỉ thời gian của CPU không được sử dụng với các tiến trình ở chế độ trực – standby (không bao gồm chế độ trực standby của đĩa).

• iowait là thời gian mà CPU đã được tự do khi một đĩa được đưa vào hoặc bỏ ra khỏi hệ thống.

• steal là thời gian bị bỏ phí trong khi chờ một CPU ảo (hợp lệ trong các môi trường ảo hóa).

Trong trường hợp này idle = 100, có nghĩa là CPU đang không làm gì, có nghĩa là không có các tiến

trình để chạy và chất tải là thấp; nếu idle = 10 và có số lượng các tiến trình là cao, thì sự tối ưu hóa của CPU nên được tính tới, khi nó có thể là một sự tắc nghẽn trong hệ thống.

2) Số lượng các ngắt trong một giây

sar -I 4 5

Linux 2.6.19-prep (localhost.localdomain) 24/03/07

08:24:01 INTR intr/s

08:24:06 4 0.00

Media: 4 0.00

Chỉ ra thông tin theo tần suất của các ngắt của các mức tích cực được định vị trong /proc/interrupts. Điều này là hữu dụng để thấy liệu có bất kỳ thiết bị nào thường xuyên ngắt công việc của CPU không.

3) Bộ nhớ và hoán đổi swap

sar -r 4 5

Linux 2.6.19-prep (localhost.localdomain) 24/03/07

08:24:20 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad

08:24:24 296516 729700 71.11 24260 459972 963860 0 0.00 0

08:24:28 296500 729716 71.11 24268 459968 963860 0 0.00 0

08:24:32 296516 729700 71.11 24268 459976 963860 0 0.00 0

08:24:36 296516 729700 71.11 24276 459976 963860 0 0.00 0

08:24:40 296500 729716 71.11 24276 459976 963860 0 0.00 0

Media: 296510 729706 71.11 24270 459974 963860 0 0.00 0

Trong trường hợp này, dbmemfree là bộ nhớ tự do chính (MP); thường được sử dụng, buffer là MP được sử dụng trong các buffers; cached là bộ nhớ chính được sử dụng trong các cache của các trang; swpfree/ sử dụng không gian hoán đối tự do/bị chiếm. Điều quan trọng phải nhớ là nếu không có không gian trong MP, thì các trang của tiến trình sẽ kết thúc trong swap, nơi sẽ có không gian. Điều này nên được so sánh với việc sử dụng CPU. Chúng ta cũng có thể kiểm tra kích thước của các buffers là phù

Trang 400/471

Page 401: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hợp và trong mối quan hệ với các tiến trình mà chúng thực hiện các hoạt động của I/O.

Cũng thú vị để xem xét lệnh tự do (fc), khi nó cho phép chúng ta xem số lượng bộ nhớ theo một sự đại diện được đơn giản hóa:

total used free shared buffers cached

Mem: 1026216 729716 296500 0 24324 459980

-/+ buffers/cache: 245412 780804

Swap: 963860 0 963860

Điều này chỉ rằng hầu hết 3/4 bộ nhớ 1GB bị chiếm và rằng hầu hết 1/2 là cache. Hơn nữa, nó nói cho chúng ta rằng hoán đổi swap đang không được sử dụng cho bất kỳ thứ gì, có nghĩa là chúng ta có thể kết luận rằng hệ thống là tốt. Nếu chúng ta muốn xem nhiều chi tiết hơn, thì chúng ta phải sử dụng lệnh

vmstat (hoặc sar -r) để phân tích điều gì đang gây ra những vấn đề hoặc ai đang tiêu thụ nhiều bộ

nhớ. Sau đây là một đầu ra từ vmstat 1 10:

procs ----------------memory-------- ---swap-- ---io-- --system----- ---cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 295896 24384 459984 0 0 321 56 1249 724 11 2 81 5 0

0 0 0 295896 24384 459984 0 0 0 28 1179 383 1 0 99 0 0

0 0 0 295896 24384 460012 0 0 0 0 1260 498 0 0 100 0 0

0 0 0 295896 24384 460012 0 0 0 0 1175 342 0 0 100 0

0 0 0 295896 24384 460012 0 0 0 0 1275 526 0 0 100 0 0

1 0 0 295896 24392 460004 0 0 0 72 1176 356 0 0 99 1 0

0 0 0 295896 24392 460012 0 0 0 0 1218 420 0 0 100 0 0

0 0 0 295896 24392 460012 0 0 0 0 1216 436 0 0 100 0 0

0 0 0 295896 24392 460012 0 0 0 0 1174 361 0 0 100 0 0

1 0 0 295896 24392 460012 0 0 0 0 1260 492 0 0 100 0 0

4) Sử dụng các bảng của nhân

sar -v 4 5

Linux 2.6.19-prep (localhost.localdomain) 24/03/07

08:24:48 dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz

08:24:52 19177 3904 15153 0 0.00 0 0.00 0 0.00

08:24:56 19177 3904 15153 0 0.00 0 0.00 0 0.00

Trang 401/471

Page 402: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

08:25:00 19177 3904 15153 0 0.00 0 0.00 0 0.00

08:25:04 19177 3904 15153 0 0.00 0 0.00 0 0.00

08:25:08 19177 3904 15153 0 0.00 0 0.00 0 0.00

Media: 19177 3904 15153 0 0.00 0 0.00 0 0.00

Trong trường hợp này, superb-sz là số cực đại hiện hành của các siêu khối được nhân duy trì, đối với các hệ thống tệp được kích hoạt; inode-sz, số cực đại hiện hành của incore-inodes theo sự cần thiết của nhân, mà có thể là từng số cho mỗi đĩa, ít nhất là như vậy; file-sz là số cực đại các tệp mở hiện hành, dquota-sz là sự chiếm cực đại hiện hành về khẩu phần quota các đầu vào (vì việc duy trì các lựa chọn, xin hãy xem sar (hoặc atsar) man). Tiến trình giám sát này có thể hoàn tất với lệnh ps -edaflm (tình trạng của tiến trình) và lệnh top, sẽ chỉ ra hoạt động và tình trạng của các tiến trình trong hệ thống. Sau đây là 2 ví dụ của các lệnh này (chỉ một số dòng):

ps -edaflm

F S UID PID PPID C PRI NI AD-DR SZ WCHANSTIMETTY TIME CMD

4 - root 1 0 0 - - - 508 - 08;01? 00:00:00 init [5]

1 - root 1927 7 0 - - - 0 - 08:02? 00:00:00 [kondemand/0]

1 - rpc 2523 1 0 - - - 424 - 08:02? 00:00:00 syslogd -m 0

5 s rpc 2566 1 0 - - - 444 - 08:02? 00:00:00 portmap

5 - root - 0 78 0 - - - - 08:02- 00:00:00 -

5 root 2587 1 0 - - - 472 - 08:02? 00:00:00 rpc.statd

5 s root - - 0 81 0 - - 08:02- 00:00:00 -

1 - root 2620 1 0 - - 1232 - 08:02? 00:00:00 rpc.idmapd

1 S root - - 0 75 0 - defa 08:02- 00:00:00 -

5 - root 2804 1 0 - - - 1294 - 08:02? 00:00:00 /usr/sbin/sshd

5 S root - - 0 84 0 - - - 08:02- 00:00:00 -

5 - root 2910 1 0 - - - 551 - 08:02? 00:00:00 /usr/sbin/atd

5 S root - - 0 84 0 - - - 08:02- 00:00:00 -

Trang 402/471

Page 403: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

4 - root 3066 1 0 - - - 407 - 08:02tty1 00:00:00 /sbin/mingetty

tty1

4 root 3305 1 0 - - - 21636 - 08:03? 00:00:01 Nautilus --no-

default - window

-sm-

4 - root 3305 1 0 - - - 21636 - 08:03? 00:00:01 client -id

default3

0 - root 3643 3541 0 - - - 1123 - 08:17pts/1 00:00:00 bash

4 - root 3701 3643 0 - - - 1054 - 08:27pts/ 00:00:00 Ps -edaflm

..

Trong đó những thông số phản ánh giá trị được chỉ ra trong biến của nhân đối với tiến trình này; những thuộc tính quan trọng nhất từ viễn cảnh giám sát là: các cờ F (trong trường hợp 1 là với các quyền siêu ưu tiên, 4 được tạo từ daemon khởi động), S là tình trạng (D: ngủ không ngắt quãng vào/ra, R: có thể chạy được, hoặc chạy hàng đợi, S: ngủ, T: được theo vết hoặc được dừng, Z: một tiến trình chết ('dạng sống dở chết dở – zombie'). PRI là ưu tiên; NI là tốt; STIME, thời gian khởi động chạy; TTY, từ nơi nó được thực thi; TIME, thời gian của CPU; CMD, chương trình đã chạy với các thông số của nó. Nếu chúng ta muốn thoát ra và làm tươi lại trang (có thể thiết lập cấu hình được), thì có thể sử dụng lệnh top, nó chỉ ra những con số thống kê chung (các tiến trình, các tình trạng, tải, …) và sau đó có được các thông tin về mỗi điểm, tương tự như với ps, nhưng được cập nhật 5 phút một lần một cách mặc định.

top – 08:26:52 up 25 min, 2 users, load average: 0.21, 0.25, 0.33

Tasks: 124 total, 1 running, 123 sleeping, 0 stopped, 0 zombie

CPU (s): 10.8%us, 2.1%sy, 0.0%ni, 82.0%id, 4.9%wa, 0.1%hi, 0.1%si, 0.0%st

Mem: 1026216k total, 731056k used, 295160k free, 24464k buffers

Swap: 963860k total, ok used, 963860k free, 460208k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

3541 root 15 0 42148 14m 981 S 1.9 1.5 00:00.76 gnome-terminal

3695 root 15 260 944 1650 R 1.9 0.1 0:00.02 tcp

1 root RT 2032 680 580 S 0.0 0.1 0:00.85 init

2 root 34 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

Trang 403/471

Lưu ý

Kiểm tra lệnh ps man hoặc top man cho một mô tả các thông số và các đặc tính

Page 404: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

3 root RT 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0

4 root 10 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

5 root 16 -5 0 0 0 S 0.0 0.0 0:00.00 events/0

6 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper

7 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread

53 root 11 -5 0 0 0 S 0.0 0.0 0:00.01 kblockd/0

54 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid

177 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0

178 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd

181 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd

183 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod

203 root 23 0 0 0 0 S 0.0 0.0 0:00.00 pdflush

204 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pdflush

Debian Linux cũng đưa vào toàn bộ một tập hợp các công cụ giám sát tương đương với sar, nhưng nó

được bắt nguồn trong UNIX BSD và có một chức năng tương tự, mặc dù từ các lệnh khác nhau, vmstat

(các con số thống kê CPU, bộ nhớ và vào/ra), io-stat (các con số thống kê các đĩa và CPU), uptime (tải và tình trạng chung của CPU).

10.1.2. Tối ưu hóa hệ thống

Chúng ta bây giờ sẽ xem xét một số khuyến cáo cho việc tối ưu hóa hệ thống phù hợp với các dữ liệu có được.

1) Giải quyết các vấn đề với bộ nhớ chính

Chúng ta phải đảm bảo rằng bộ nhớ chính có thể điều khiển số phần trăm cao các tiến trình đang thực thi, vì nếu không, hệ điều hành có thể phân trang và đi tới bộ nhớ hoán đổi swap; nhưng điều này có nghĩa là sự thực thi của tiến trình đó sẽ giảm giá trị một cách đáng kể. Nếu chúng ta bổ sung thêm bộ

Trang 404/471

Page 405: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nhớ, thì thời gian trả lời sẽ được cải thiện đáng kể. Vì điều này, chúng ta phải tính tới kích thước (SIZE) của các tiến trình là tình trạng R và bổ sung những gì được nhân sử dụng, có thể có được bằng lệnh dmesg, sẽ chỉ ra cho chúng ta (hoặc với free), ví dụ:

Bộ nhớ:

255048k/262080k sẵn sàng (1423k lõi của nhân, 6644k dự trữ, 466k dữ liệu, 240k khởi tạo, OK bộ nhớ cao (highmem).

Chúng ta sau đó phải so sánh điều này với bộ nhớ vật lý và phân tích xem liệu hệ thống có bị giới hạn với bộ nhớ không (nhiều hoạt động phân trang có thể thấy với atsar -r và -p).

Các giải pháp cho các vấn đề của bộ nhớ là rõ ràng: hoặc chúng ta gia tăng khả năng hoặc giảm các yêu cầu. Đưa ra giá thành hiện hành của bộ nhớ, thì tốt hơn là gia tăng kích thước của nó hơn là bỏ ra nhiều giờ đồng hồ cố gắng giải phóng chỉ một vài trăm bytes, bằng việc xóa, chuyển, tổ chức hoặc giảm các yêu cầu của các tiến trình đang thực thi. Các yêu cầu này có thể được giảm thiểu bằng việc giảm các bảng của nhân, xóa các module, hạn chế số lượng cực đại những người sử dụng, giảm các bộ nhớ tạm buffers …, tất cả những thứ này sẽ hạ cấp hệ thống (hiệu ứng bong bóng) và hiệu năng sẽ tệ hơn (trong một số trường hợp, hệ thống có thể được trả về hoàn toàn không hoạt động được).

Một khía cạnh khác có thể giảm được là số lượng bộ nhớ cho những người sử dụng, việc hạn chế bất kỳ tiến trình dư thừa nào và thay đổi tải công việc. Để làm việc này, chúng ta phải giám sát các tiến trình đã chết (các tiến trình sống dở chết dở) và hạn chế chúng, hoặc những tiến trình không hoạt động trong I/O (biết liệu có là các tiến trình đang hoạt động hay không, chúng tiêu tốn CPU bao nhiêu và liệu những người sử dụng có muốn có chúng hay không). Việc thay đổi tải công việc là việc sử dụng hàng đợi được lên kế hoạch sao cho các tiến trình cần tới một số lượng lớn bộ nhớ có thể chạy khi có ít hoạt động (ví dụ, vào buổi tối, sử dụng lệnh at để khởi động chúng).

2) Sử dụng CPU quá nhiều

Về cơ bản, chúng ta có thể có được điều này từ những thời gian rỗi không làm gì (các giá trị thấp). Với

ps hoặc top, chúng ta phải phân tích những tiến trình nào là 'ăn sống nuốt tươi CPU' và ra quyết định như: trì hoãn lại sự thực thi của chúng, dừng chúng tạm thời, thay đổi ưu tiên (ít xung đột đối với tất cả, ưu tiên khởi động lại lệnh PID), tối ưu hóa chương trình (cho lần sau) hoặc thay đổi CPU (bổ sung thêm một CPU nữa). Như chúng ta đã nhắc tới, GNU/Linux sử dụng thư mục /proc để lưu giữ tất cả các biến cấu hình của nhân, có khả năng được phân tích và, trong những trường hợp nhất định, 'được chỉnh' để đạt được các mức độ hiệu năng khác hoặc tốt hơn.

Để làm việc này, chúng ta phải sử dụng lệnh systune dump > /tmp/sysfile để có được tất cả các biến và các giá trị của chúng trong tệp /tmp/sysfile (trong các phát tán khác nhau, điều này có thể được thực hiện với sysctl). Tệp này có thể được soạn sửa, thay đổi biến tương ứng và sau đó sử dụng lệnh

systune -c /tmp/sysfile để tải lại chúng trong /proc. Lệnh systune cũng đọc một cách mặc định nếu chúng ta không có lựa chọn -c trong /etc/systune.conf. Trong trường hợp này, ví dụ, chúng ta có thể sửa (xử lý cẩn thận, vì nhân có thể không còn hoạt động được nữa) các biến của loại /proc/sys/vm (bộ nhớ ảo) hoặc /proc/sys/kernel (cấu hình lõi của nhân).

Trang 405/471

Lưu ý

Chúng ta có thể xem ở đâu? (1) Bộ nhớ; (2) CPU; (3) Vào/Ra; (4) TCP/IP; (5) Nhân

Page 406: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Theo đúng nghĩa y hệt, cũng có khả năng (đối với các chuyên gia hoặc những người không có gì để mất) để thay đổi thời gian cắt cực đại, mà trình đặt lịch của CPU của hệ điều hành chuyên tâm cho mỗi tiến trình theo một tuần tự vòng tròn (được khuyến cáo sử dụng renice khi thực nghiệm). Nhưng GNU/Linux, không giống các hệ điều hành khác, là một giá trị được cố định bên trong mã lệnh, khi nó được tối ưu hóa cho những chức năng khác (có khả năng để sửa đổi nó). Chúng ta có thể “chơi” (với rủi ro của chính mình) với một tập hợp các biến mà chúng có khả năng động chạm tới các lát cắt thời gian - time slice được chỉ định cho CPU (nhân - nguồn – 2.x.x/kernel/sched.c).

3) Giảm số lượng cuộc gọi

Cách thực tế khác để cải thiện hiệu năng là giảm số lượng các cuộc gọi tới hệ thống, mà chiếm giữ hầu hết thời gian của CPU. Những lời gọi này thường là được fork() và exec() của trình biên dịch lệnh gọi. Một cấu hình không phù hợp của biến PATH và vì thực tế là lời gọi exec() không lưu bất kỳ thứ gì trong cache, thư mục hiện hành (được chỉ ra với một ./), có thể có một mối quan hệ thực thi tiêu cực. Hệ quả là, chúng ta phải luôn luôn cấu hình biến PATH với thư mục hiện hành như là đường dẫn cuối cùng. Ví dụ, trong bash (hoặc trong .bashrc) chúng ta phải: xuất PATH = $PATH. Nếu điều này không đúng, thì thư mục hiện hành không có ở đó, hoặc nếu là thế, hãy hoãn biến PATH để công bố nó như là đường dẫn cuối cùng.

Nên nhớ rằng nhiều hoạt động ngắt quãng có thể ảnh hưởng tới hiệu năng của CPU, xét về các tiến

trình đang được thực thi. Bằng việc giám sát (atsar -I), chúng ta có thể thấy mối quan hệ của các ngắt trong một giây đồng hồ là gì và đưa ra các quyết định đối với các thiết bị mà chúng gây ra những điều này. Ví dụ, thay đổi modem bằng một cái thông minh hơn hoặc thay đổi cấu trúc các giao tiếp truyền thông nếu chúng ta dò tìm ra hoạt động quá đáng trên cổng nối tiếp được kết nối tới.

4) Sử dụng đĩa quá nhiều

Sau bộ nhớ, một thời gian trả lời chậm có thể là do hệ thống các đĩa. Trước hết, chúng ta phải xác minh rằng có thời gian CPU (ví dụ, sự rỗi rãi > 20%) sẵn sàng và số lượng vào/ra là cao (ví dụ, >30 vào/ra

trong 01 giây) sử dụng atsar -u và atsar -d. Các giải pháp có thể là:

a) Trong một hệ thống nhiều đĩa, việc lên kế hoạch xem các tệp thường được sử dụng nhiều nhất ở đâu được đặt ra để cân bằng giao thông đối với chúng (ví dụ, /home trong một đĩa và /usr trong đĩa khác) và việc đảm bảo là chúng có thể sử dụng tất cả các khả năng vào/ra với cache và cùng một lúc của GNU/Linux (bao gồm, ví dụ, việc lên kế hoạch cho bus IDE mà chúng sẽ ở trong đó). Rồi kiểm tra có

sự cân bằng trong giao thông bằng việc sử dụng atsar -d (hoặc iostat). Trong các tình huống sống còn, nên xem mua một hệ thống đĩa RAID, có khả năng làm những chỉnh sửa này một cách tự động.

b) Nhớ trong đầu rằng các mức hiệu năng tốt hơn sẽ đạt được bằng việc sử dụng 2 đĩa nhỏ thay vì 1 đĩa lớn, ngang bằng với kích thược được kết hợp lại của 2 cái đầu.

c) Trong các hệ thống với chỉ một đĩa, để giảm không gian nói chung, 4 phân vùng được làm ra theo cách sau đây (từ ngoài vào trong): /, swap, /usr, /home; điều này tạo ra những thời gian trả lời vào/ra không tốt vì nếu, ví dụ, một người sử dụng biên dịch từ thư mục của họ /home/user và trình biên dịch là trong /usr/bin, thì đầu đĩa sẽ chuyển động theo toàn bộ chiều dài. Trong trường hợp này, tốt hơn là liên kết các phân vùng /usr và /home trong trong một phân vùng duy nhất (lớn hơn) mặc dù điều này có thể biểu lộ một số bất tiện về duy trì.

Trang 406/471

Page 407: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

d) Gia tăng các bộ nhớ đệm buffers của bộ nhớ lưu trữ cache vào/ra (xem, ví dụ: /proc/ide/hd...).

e) Nếu chúng ta sử dụng một ext2fs, thì chúng ta có thể sử dụng lệnh: dumpe2fs -h /dev/hd... để có

được các thông tin trên đĩa và tune2fs /dev/hd... để thay đổi một số thông số cấu hình của đĩa.

f) Rõ ràng, việc thay đổi đĩa đối với một đĩa tốc độ cao (RPM) sẽ luôn có một hiệu ứng tích cực lên một hệ thống bị sự vào/ra của đĩa hạn chế. [Maj96]

5) Cải tiến các khía cạnh của TCP/IP

Hãy kiểm tra mạng với lệnh atsar (hoặc với netstat -i hoặc với netstat -s | more) để phân tích liệu có bất kỳ các gói nào bị phân mảnh, các lỗi, các chỗ bị bỏ, bị tràn..., mà chúng có thể ảnh hưởng tới các giao tiếp truyền thông và, hệ quả là, hệ thống (ví dụ, trong một NFS, NIS, FTP hoặc máy chủ web). Nếu bất kỳ vấn đề nào được dò tìm ra, thì có thể phân tích mạng để xem xét bất kỳ hành động nào sau đây:

a) Việc phân mảng mạng thông qua các yếu tố tích cực mà hủy bỏ các gói có các vấn đề hoặc các gói không dành cho các máy trong phân vùng.

b) Lên kế hoạch ở những nơi các máy chủ sẽ cần phải giảm giao thông và thời gian truy cập chúng.

c) Chỉnh các thông số của nhân (/proc/sys/net/), ví dụ, để có được những cải thiện giao thông, dạng:

echo 600 > /proc/sys/net/core/netdev max backlog (300 by default)

6) Các hành động khác về các thông số của nhân

Có một tập hợp khác các thông số trong nhân có thể được tinh chỉnh để có được các mức độ hiệu năng tốt hơn, dù, xét tới các điểm chúng ta đã thảo luận, thì điều này nên được thực thi với sự thận trọng, biết rằng chúng ta có thể gây ra hiệu ứng ngược hoặc vô hiệu hóa hệ thống. Hãy tham vấn sự phân phối mã nguồn trong nhân - source-2.4.18/Documentation/sysctl các tệp vm.txt, fs.txt, kernel.txt và sunrpc.txt:

a) /proc/sys/vm: những kiểm soát bộ nhớ ảo (MV) của hệ thống. Bộ nhớ ảo làm cho có khả năng đối với các tiến trình mà không truy cập bộ nhớ chính để được hệ thống chấp nhận nhưng trong thiết bị hoán đổi, mà đối với nó, lập trình viên không có giới hạn về kích thước chương trình của họ (rõ ràng, nó phải là ít hơn thiết bị hoán đổi). Các thông số có thể tinh chỉnh được có thể bị thay đổi rất dễ dàng

với gpowertweak.

b) /proc/sys/fs: các thông số tương tác nhân – FS có thể được chỉnh, như tệp - cực đại.

c) Và cũng qua /proc/sys/kernel, /proc/sys/sunrpc.

7) Tạo ra nhân phù hợp cho các nhu cầu của chúng ta

Sự tối ưu hóa nhân có nghĩa là việc chọn các thông số biên dịch phù hợp với các nhu cầu của chúng ta. Rất quan trọng đầu tiên phải đọc tệp readme trong /usr/src/linux. Một cấu hình tốt của nhân sẽ làm cho có khả năng để nhân chạy nhanh hơn, cung cấp nhiều bộ nhớ hơn cho các tiến trình của người sử dụng là làm cho toàn bộ hệ thống được ổn định hơn. Có 2 cách xây dựng một nhân: nguyên khối (các mức hiệu năng tốt hơn) hoặc theo các module (dựa trên các module, sẽ có tính khả chuyển tốt hơn nếu có một hệ thống rất không đồng nhất và chúng ta không muốn biên dịch một nhân cho từng thứ trong số

Trang 407/471

Page 408: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

chúng). Để biên dịch nhân của riêng bạn và thích nghi nó cho phần cứng và các nhu cầu của bạn, từng phát tán có những qui định riêng của mình (mặc dù thủ tục là tương tự).

8) Những bài báo sau đây là rất thú vị:

http://people.redhat.com/alikins/system_tuning.html về các thông tin tối ưu hóa và tinh chỉnh các hệ thống máy chủ Linux.

http://www.linuxjournal.com/article.php?sid=2396 Các công cụ giám sát hiệu năng cho Linux; mặc dù đây là một bài báo cũ và một số lựa chọn không còn nữa, thì phương pháp vẫn còn có giá trị.

10.1.3. Những tối ưu hóa chung

Có một loạt những tối ưu hóa chung có thể cải tiến được hiệu năng của hệ thống:

1) Các thư viện tĩnh hoặc động: khi một chương trình được biên dịch, điều này có thể được thực hiện với một thư viện tĩnh (libr.a), mã nguồn hoạt động của nó được đưa vào trong thư viện chạy được hoặc động (libr.so.xx.x), nơi mà thư viện này được tải lên vào lúc chạy. Dù trước tiên cần đảm bảo cho một mã nguồn khả chuyển và an ninh, thì nó cũng sẽ tiêu thụ nhiều bộ nhớ hơn. Lập trình viên phải quyết định lựa chọn nào là phù hợp cho chương trình của họ bao gồm - tĩnh (static) trong các lựa chọn của trình biên dịch (không bổ sung các biện pháp động này) hoặc o - vô hiệu hóa - được chia sẻ, khi lệnh cấu hình được sử dụng. Được khuyến cáo sử dụng (hầu như tất cả các phát tán mới đều làm thế) thư viện chuẩn libc.a và lubc.so của các phiên bản 2.2.x hoặc cao hơn (được biết như là Libc6) thay thế cho những phiên bản cũ.

2) Thay thế vi xử lý phù hợp: việc tạo mã nguồn chạy được cho kiến trúc trong đó các ứng dụng sẽ chạy. Một số thông số có ảnh hưởng nhất của trình biên dịch là: - march (ví dụ, marchi 686 hoặc - march k6) bằng việc đơn giản gõ gcc -marchi 686, việc tối ưu hóa được cho là – O1,2,3 (-O3 sẽ tạo ra phiên bản nhanh nhất) của chương trình, gcc -O3 -march = i686) và các thuộc tính -f (tham vấn tài liệu cho các dạng khác).

3) Tối ưu hóa đĩa: hiện hành, hầu hết các máy tính đưa vào đĩa UltraDMA (100) một cách mặc định; tuy nhiên, trong nhiều trường hợp, những thứ này không được tối ưu hóa để cung cấp các mức độ hiệu

năng tốt nhất. Có một công cụ (hdparm) thể được sử dụng để tinh chỉnh nhân cho các thông số của đĩa dạng IDE. Chúng ta phải cẩn thận với công cụ này, đặc biệt trong các đĩa UltraDMA (kiểm tra BIOS để đảm bảo rằng các thông số cho việc hỗ trợ DMA được kích hoạt), vì chúng có thể vô hiệu hóa đĩa. Hãy

kiểm tra các tham chiếu và tài liệu ([Mou01] và man hdparm) để thấy những sự tối ưu hóa nào là quan trọng nhất (và những rủi ro có liên quan), ví dụ: -c3, -d1, -X34, -X66, -X12, -X68, -mXX, -a16, -u1, -W1, -k1, -K1. Mỗi lựa chọn có nghĩa là một dạng tối ưu hóa và một số là rủi ro rất cao, có nghĩa là

chúng ta phải biết rõ về đĩa này. Để tham vấn các thông số được tối ưu hóa, có thể sử dụng dhparm

-vtT /dev/hdX (nơi mà X là đĩa được tối ưu hóa) và lời gọi tới hdparm với tất cả các thông số có thể được sử dụng trong /etc/init.d để tải nó vào lúc khởi động.

10.1.4. Các cấu hình bổ sung

Có nhiều cấu hình bổ sung từ viễn cảnh của an ninh được đưa ra với sự tối ưu hóa, nhưng chúng hầu

Trang 408/471

Page 409: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

hết là cần thiết khi hệ thống được kết nối tới một Intranet hoặc Internet. Những cấu hình này đòi hỏi những hành động sau:

a) Vô hiệu hóa sự khởi tạo hoặc hệ điều hành khác: nếu ai đó có sự truy cập vật lý tới máy, thì họ có thể khởi động hệ điều hành được cấu hình trước đó nữa và sửa đổi hệ điều hành đang tồn tại, có nghĩa là chúng ta nên truy cập các thiết lập BIOS của máy tính để vô hiệu hóa sự khởi động bằng việc sử dụng các đĩa mềm hoặc CD-ROM và thiết lập một mật khẩu (nhớ là mật khẩu của BIOS, hoặc bạn có thể có các vấn đề nếu bạn muốn thay đổi cấu hình).

b) Cấu hình và mạng: được khuyến cáo để ngắt kết nối khỏi mạng bất kỳ khi nào chỉnh hệ thống. Bạn

có thể loại bỏ cáp hoặc vô hiệu hóa thiết bị bằng lệnh /etc/int.d/networking stop (start để kích hoạt

nó) hoặc với ifdown eth0 (sử dụng ifup eth0 để kích hoạt nó) đối với bất kỳ thiết bị cụ thể nào.

c) Sửa đổi các tệp /etc/security tuân thủ với các nhu cầu an ninh và sử dụng hệ thống. Ví dụ, trong access.conf về việc ai có thể đăng nhập vào hệ thống.

Format:

permission: users: origins

+o -: users: from where

-:ALL EXCEPT root: tty1 Vô hi �u hóa s � truy c �p � � i v �i t �t c � no-root

over tty1.

-:ALL EXCEPT user1 user2 user3: console ng �n ch �n truy c �p ngo �i tr � users1,2,3 nh �ng

cái sau ch � truy c �p � � � c t � console.

-:user1:ALL EXCEPT LOCAL .uoc.edu 'group.conf':

Cũng nên cấu hình nhóm để kiểm soát những gì và cách mà những giới hạn tối đa (limits.conf) cho việc thiết lập thời lượng tối đa sử dụng CPU, I/O … để tránh, ví dụ, các cuộc tấn công DoS.

d) Duy trì an ninh các mật khẩu của người sử dụng root: sử dụng ít nhất 6 ký tự, với ít nhất một ký tự hoa hoặc một số ký hiệu khác '.-_,'; điều này là không thông thường; cũng vậy, được khuyến cáo kích hoạt lựa chọn hết hạn mật khẩu để ép bản thân bạn thay đổi nó thường xuyên, cũng như việc hạn chế số lần một người có thể vào một mật khẩu sai. Cũng vậy, chúng ta sẽ phải thay đổi thông số min x trong khoản đầu vào trong /etc/pam.d/passwd để chỉ ra số lượng tối thiểu các ký tự được sử dụng trong các mật khẩu (x là số lượng các ký tự).

e) Không đăng nhập hệ thống như là người sử dụng root: hãy tạo một tài khoản như sysadm và làm việc với nó. Nếu bạn truy cập nó ở xa, bạn sẽ luôn phải sử dụng ssh để kết nối tới sysadm và, nếu cần thiết, triển khai một su - để làm việc với root.

f) Thiết lập thời gian không hoạt động tối đa: khởi động biến TMOUT, ở 360 ví dụ thế (giá trị được thể hiện theo giây đồng hồ), sẽ là thời gian không hoạt động tối đa mà trình biên dịch lệnh (shell) sẽ cho phép đi qua trước khi khóa; có khả năng đặt nó trong các tệp cấu hình của trình biên dịch lệnh (ví dụ,

Trang 409/471

Page 410: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/etc/profile, /.bashrc...). Nếu chúng ta đang sử dụng các môi trường đồ họa (KDE, GNOME …), thì hãy kích hoạt lựa chọn này để ra khỏi trình lưu màn hình (screensaver) với mật khẩu.

g) Cấu hình của NFS trong chế độ có giới hạn: trong /etc/exports hãy xuất chỉ những gì là cần thiết, không xử dụng các wildcard (như *), chỉ cho phép truy cập đọc và không cho phép truy cập ghi bằng root, ví dụ, với /directory_exported host.domain.com (ro, root_squash).

h) Tránh khởi động từ lilo (hoặc grub) với các thông số: hệ thống có thể được khởi động như Linux duy nhất, mà sẽ khởi động hệ điều hành trong chế độ người sử dụng duy nhất. Hãy cấu hình hệ thống sao cho mật khẩu là luôn được yêu cầu khi khởi động trong chế độ này. Để làm thế, trong tệp /etc/inittab, hãy xác minh dòng sau đây là có: S:wait:/sbin/sulogin và /bin/sulogin được kích hoạt. Hơn nữa, tệp /etc/lilo.conf phải có tất cả các quyền phù hợp sao cho không ai có thể sửa đổi nó ngoại trừ người sử dụng root (chmod 600 /etc/lilo.conf). Để tránh bất kỳ thay đổi chẳng may nào, hãy thay đổi việc khóa

được cho là với chattr +1 /etc/lilo.conf (sử dụng -i khi bạn muốn thay đổi). Tệp này cho phép một loạt các lựa chọn phải được xem xét: thời gian trễ tạm ngưng timeout hoặc, nếu hệ thống chỉ có một hệ điều hành cho việc khởi động ngay lập tức, có giới hạn, để ngăn ngừa những người khác khỏi việc có khả năng chèn các lệnh khi khởi động như là linux init = /bin/sh, và có sự truy cập như một người sử dụng root không được phép; trong trường hợp này, mật khẩu phải được sử dụng; nếu chỉ vào mật khẩu này, thì sẽ được yêu cầu tải ảnh của nhân đối với mật khẩu. Grub có những lựa chọn tương tự.

i) Tổ hợp kiểm soát Ctrl+Alt+Delete. Để tránh những người khác khỏi có khả năng tắt máy tính từ bàn phím, hãy chèn một ký tự (#) vào cột đầu của dòng sau:

ca: 12345:ctrlaltdel: /sbin/shutdown -t1 -a -r now

Activate the changes with telinit q.

j) Tránh các dịch vụ không được đưa ra: khóa tệp /etc/services sao cho không cho phép các dịch vụ không được mong đợi bằng việc khóa tệp với chattr +i /etc/services.

k) Kết nối của root: hãy sửa tệp /etc/security có chứa TTY và VC (virtual console) trong đó root có thể

kết nối, chỉ để lại một trong số đó, ví dụ, tty1 và vc/1, và nếu cần thiết để kết nối như sysadm thì hãy

thạy một su.

i) Hãy hạn chế các tài khoản của người sử dụng mà không sử dụng: xóa users/groups không cần thiết, bao gồm cả những nhóm đi theo mặc định (ví dụ, operator, shutdown, ftp, uucp, games...), và chỉ để lại các nhóm cần thiết (root, bin, daemon, sync, nobody, sysadm) và những nhóm được tạo ra với sự cài đặt của các gói hoặc bằng việc sử dụng các lệnh (y hệt như với /etc/group). Nếu hệ thống là sống còn,

thì chúng ta có thể xem xét việc khóa các tệp (chattr +i file) /etc/passwd, /etc/shadow, /etc/group và /etc/gshadow để tránh sửa đổi chúng (cẩn thận với hành động này, vì bạn sẽ không có khả năng thay đổi được mật khẩu sau đó).

m) Kích hoạt phân vùng theo một cách hạn chế: trong /etc/fstab hãy sử dụng các thuộc tính cho các phân vùng như nosuid (làm cho có khả năng thay thế người sử dụng hoặc nhóm trong phân vùng này), nodey (không dịch các thiết bị của các ký tự hoặc các khối trên phân vùng này) và noexec (không cho phép chạy các tệp trên phân vùng này). Ví dụ:

Trang 410/471

Page 411: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/tmp /tmp ext2 defaults, nosuid, noexec 0 0

Cũng được khuyến cáo để kích hoạt trong /boot một phân vùng riêng rẽ với các thuộc tính chỉ đọc.

n) Một loạt các bảo vệ: thay đổi bảo vệ các tệp trong /etc/init.d (các dịch vụ hệ thống) thành 700 sao cho chỉ root mới có thể thay đổi chúng, khởi động chúng hoặc dừng chúng, và sửa đổi các tệp /etc/issue và /etc/issue.net sao cho chúng không cung cấp bất kỳ thông tin nào (hệ điều hành, phiên bản...) khi ai đó kết nối thông qua telnet, ssh ...

o) SUID và SGID: một người sử dụng có thể chạy một lệnh như một người chủ nếu họ có bit SUID hoặc SGID được kích hoạt, mà chúng có thể được phản ánh trong một 's' SUID (-rwsr-xr-x) và SGID

(--xr-sr-x). Vì thế, cần thiết phải xóa bit này (chmod a-s file) khỏi các lệnh mà chúng không cần nó. Những tệp này có thể được tìm với:

find / -type f -perm -4000 or -perm -2000 -print

Chúng ta phải xử lý cẩn thận với các tệp mà SUID - GUID loại bỏ vì lệnh này có thể bị vô hiệu hóa.

p) Các tệp nghi ngờ: bạn nên thường xuyên kiểm tra các tệp với các tên không bình thường, các tệp ẩn, hoặc các tệp mà không có một uid/guid hợp lệ, như '…' (3 dấu chấm), '.. ' (2 dấu chấm và một dấu cách), '..^G', đối với điều này, bạn sẽ phải sử dung:

find / -name “.*” -print | cat -v

hoặc nếu không thì:

find / name “..” -print

Để tìm kiếm uid/guid không hợp lệ, hãy sử dụng: find / -nouser hoặc -nogroup (cẩn thận, vì một số cài đặt được thực hiện với người sử dụng mà sau đó không xác định được và người quản trị phải thay đổi).

q) Kết nối không có mật khẩu: không cho phép tệp .rhosts trong bất kỳ người sử dụng nào trừ phi nó là cực kỳ cần thiết (khuyến cáo sử dụng ssh với một mật khẩu công khai thay cho các phương pháp dựa trên .rhosts).

r) Trình quản lý hiển thị X Display: sửa đổi tệp /etc/X11/xdm/Xaccess để chỉ định hosts có khả năng kết nối thông qua XDM và tránh được bất kỳ host nào có một màn hình đăng nhập.

10.1.5. Giám sát

Có 2 công cụ rất thú vị cho việc giám sát hệ thống: Munin và Monit. Munin sản sinh các đồ họa trên các thông số khác nhau của máy chủ (trung bình tải, sử dụng bộ nhớ, sử dụng CPU, vào ra của MySQL, giao thông của eth0 …) mà không có các cấu hình quá đáng, trong khi Monit xác minh cả tính sẵn sàng của các dịch vụ như Apache, MySQL, Postfix, và triển khai những hành động khác nhau như việc kích hoạt lại một dịch vụ không hiện diện. Sự kết hợp này đưa ra những đồ họa quan trọng cho việc nhận diện nơi đâu những vấn để đang được sinh ra và cái gì đang sinh ra chúng.

Hãy nói rằng hệ thống của chúng ta được gọi là pirulo.org và có trang của chúng ta được cấu hình như

Trang 411/471

Page 412: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

là www.pirulo.org với các tài liệu trong /var/www/pirulo.org/web. Để cài đặt Munin trên Debian

Sargem có thể chạy, ví dụ, apt-get install munin munin – node.

Chúng ta phải cấu hình munin (/etc/munin/munin.conf) với:

dbdir /var/lib/munin

htmldir /var/www/www.pirulo.org/web/monitoring

logdir /var/log/munin

tmpldir /etc/munin/templates

[pirulo.org]

address 127.0.0.1

use_node_name yes

Thư mục này sau đó được tạo ra, các quyền được thay đổi và dịch vụ được khởi tạo lại.

mkdir -p /var/www/pirulo.org/web/monitoring

/etc/init.d/munin-node restart

Sau một ít phút chúng ta sẽ có khả năng thấy những kết quả đầu tiên trong http://www.pirulo.org/monitoring/ trong trình duyệt. Ví dụ, 2 hình đồ họa (tải và bộ nhớ) được chỉ ra bên dưới:

Hình 1. Trung bình tải - theo ngày

Trang 412/471

Page 413: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 2. Sử dụng bộ nhớ - theo ngày

Nếu bạn muốn duy trì tính riêng tư trong các hình đồ họa, tất cả điều bạn phải làm là thiết lập một mật khẩu để truy cập thư mục này với apache. Ví dụ, chúng ta có thể lưu tệp .htaccess với các nội dung sau đây trong thư mục /var/www/pirulo.org/web/monitoring:

AuthType Basic

AuthName “Members Only”

AuthUsserFile /var/www/pirulo.org/.htpasswd

<limit GET PUT POST>

require valid – users1,2,3</limit>

Chúng ta sau đó phải tạo tệp mật khẩu trong /var/www/pirulo.org/.htpasswd với lệnh (như root):

htpasswd -c /var/www/pirulo.org/.htpasswd admin

Khi chúng ta kết nối tới www.pirulo.org/monitoring, nó sẽ không yêu cầu tên người sử dụng (admin) và mật khẩu mà chúng ta gõ vào sau lệnh ở trước.

Để cài đặt Monit, hãy chạy apt-get install monit và sửa /etc/monit/monitrc. Tệp mặc định này đưa vào một tập hợp ví dụ, nhưng có thể có được nhiều hơn từ http://www.tildeslash.com/monit/doc/examples.php. Ví dụ, nếu muốn giám sát proftpd, sshd, mysql, apache và postfix, bằng việc cho phép giao diện của monit trên cổng 3333, trên monitrc, có thể gõ:

set daemon 60

set logfile syslog facility log_daemon

set mailserver localhost

set mail-format { from: [email protected] }

set alerrt root@localhost

set httpd port 3333 and

allow admin:test

check process proftpd with pidfile /var/run/proftpd.pid

start program = “/etc/init.d/proftpd start”

Trang 413/471

Page 414: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

stop program = “/etc/init.d/proftpd stop”

if failed port 21 protocol ftp then restart

if 5 restarts within 5 cycles then timeout

check process sshd with pidfile /var/run/sshd.pid

start program “/etc/init.d/ssh start”

stop program “/etc/init.d/ssh stop”

if failed port 22 protocol ssh then restart

if 5 restarts within 5 cycles then timeout

check process mysql with pidfile /var/run/mysql/mysql.pid

group database

start program = “/etc/init.d/mysql start”

stop program = “/etc/init.d/mysql stop”

if failed host 127.0.0.1 port 3306 then restart

if 5 restarts within 5 cycles then timeout

check process apache with pidfile /var/run/apache2.pid

group www

start program = “/etc/init.d/apache2 start”

stop program = “/etc/init.d/apache2 stop”

if failed host www.pirulo.org port 80 protocol http

and request “/monit/token” then restart

if cpu is greater than 60% for 2 cycles then alert

if cpu > 80% for 5 cycles then restart

if totalmem > 500 MB for 5 cycles then restart

if children > 250 then restart

if loadavg (5min) greater than 10 for 8 cycles then stop

if 3 restarts within 5 cycles then timeout

check process postfix with pidfile /var/spool/postfix/pid/master.pid

group mail

start program = “/etc/init.d/postfix start”

stop program = “/etc/init.d/postfix stop”

if failed port 25 protocol smtp then restart

if 5 restarts within 5 cycles then timeout

tham vấn chỉ dẫn để có thêm chi tiết tại http://www.tildeslash.com/monit/doc/manual.php. Để xác minh máy chủ Apache làm việc với Monit, phải đặt cấu hình để truy cập tới if failed host www.pirulo.org port 80 protocol http and request “/monit/token” then restart. Nếu không thể truy cập điều này, thì có

nghĩa là Apache không làm việc, mà có nghĩa là tệp này phải tồn tại (mkdir

/var/www/pirulo.org/web/monit; echo “pirulo” > /var/www/pirulo.org/web/monit/token).

Trang 414/471

Page 415: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Cũng có thể cấu hình monit sao cho nó làm việc trên SSL. (xem http://www.howtoforge.com/server_monitoring_monit_munin_p2).

Cuối cùng, phải sửa /etc/default/monit để cho phép monit và thay đổi startup=1 và

CHECK_INTERVALS=60 ví dụ (trong vài giây). Nếu khởi động monit (/etc/init.d/monit start) và kết nối tới http://www.pirulo.org:3333, thì sẽ thấy một màn hình tương tự như sau:

Hình 3

Có các công cụ phức tạp hơn cho việc giám sát mạng và các dịch vụ mạng có sử dụng giao thức quản trị mạng đơn giản SNMP (Simple Network Management Protocol) và trình đồ họa giao thông của nhiều bộ định tuyến MRTG (Multi-Router Traffic Graper), ví dụ thế. Nhiều thông tin hơn về vấn đề này có thể thấy tại http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch22:_Monitoring_Server_Performance.

MRTG (http://oss.oetiker.ch/mrtg/) đã được tạo ra về cơ bản cho các dữ liệu mạng đồ họa, nhưng những dữ liệu khác có thể được sử dụng để trực quan hóa hành vi của nó, ví dụ, để tạo ra các số thống kê trung bình tải trong máy chủ. Vì điều này, chúng ta sử dụng các gói mrtg và atsar. Một khi được cài đặt, chúng ta sẽ cấu hình tệp /etc/mrtg.cfg.

WorkDir: /var/www/mrtg

Target [average]: '/usr/local/bin/cpu-load/average'

MaxBytes [average]: 1000

Options [average]: gauge, nopercent, growright, integer

YLegend [average]: Load average

kMG [average]: , ,

ShortLegend [average]:

Legend1 [average]: Load average x 100

LegendI [average]: load:

LegendO [average]:

Trang 415/471

Page 416: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Title [average]: Load average x 100 for pirulo.org

PageTop [average]: <H1> Load average x 100 for pirulo.org </H1>

<TABLE>

<TR><TD>System: </TD>

<TD> pirulo.org</TD></TR>

<TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR>

<TR><TD>Max used: <TD> <TD>1000</TD></TR>

</TABLE>

Để tạo ra các dữ liệu với atsar (hoặc sar), chúng ta tạo một script trong /usr/local/bin/cpu-load/average (mà nên có các quyền chạy cho tất cả) mà sẽ chuyển các dữ liệu này tới mrtg:

# !/bin/sh

load = '/usr/bin/atsar -u 1 | tail -n 1 | awk -F “ “ ' {print $10} ' '

echo “$load * 100” | bc | awk -F “.” ' {print $1} '

Chúng ta phải tạo và thay đổi các quyền trong thư mục /var/www/mrtg. Mặc định, mrtg chạy trong cron, nhưng nếu muốn chạy nó, thì có thể chạy mrtg /etc/mrtg.cfg và điều này sẽ tạo ra các đồ họa trong /var/www/mrtg/average.html mà có thể trực quan hóa với trình duyệt từ http://www.pirulo.org/mrtg/average.html.

Hình 4

Các gói thú vị khác mà chúng nên được tính tới khi giám sát một hệ thống là:

• Frysk (http://sources.redhat.com/frysk); mục đích của dự án frysk là để tạo ra một hệ thống giám sát được phân tán và thông minh để giám sát các tiến trình và các luồng.

• Cacti (http://cacti.net/): Cacti là một giải pháp đồ họa được thiết kế để làm việc cùng với các dữ liệu của RRDTool. Cacti cung cấp các dạng khác nhau của đồ họa, các phương pháp và các đặc tính thu nhận mà người sử dụng có thể kiểm soát được rất dễ dàng và là một giải pháp được áp dụng từ một máy tới một môi trường phức tạp nhiều máy, mạng và các máy chủ.

Chúng ta bây giờ sẽ mô tả các công cụ khác thú vị không kém (theo trật tự abc) mà GNU/Linux kết hợp (ví dụ Debian) cho việc giám sát hệ thống. Đây không phải là một danh sách toàn diện đầy đủ, nhưng đơn giản là một sự lựa chọn của những công cụ được sử dụng nhiều nhất (khuyến cáo xem trang chỉ dẫn của từng công cụ để có thêm thông tin):

• atsar, ac, sac, sysstat, isag: các công cụ kiểm toán như ac, last, accton, sa, atsar hoặc isag (Interactive System Activity Grapher - Trình đồ họa về các hoạt động của hệ thống một cách tương tác) cho việc kiểm toán các tài nguyên phần cứng và phần mềm.

Trang 416/471

Page 417: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• arpwatch; mon: giám sát hoạt động của ethernet/FDDI chỉ ra những thay đổi được thực hiện trong các bảng MACIP; giám sát các dịch vụ mạng.

• diffmon, fcheck: tạo các báo cáo về những thay đổi đối với cấu hình của hệ thống và giám sát các hệ thống tệp để dò tìm ra các thâm nhập trái phép.

• fam: giám sát sửa đổi tệp.

• genpower: giám sát việc quản lý các lỗi trong cung cấp điện.

• gkrellm: giám sát CPU bằng đồ họa, các tiến trình (bộ nhớ), các hệ thống tệp và những người sử dụng, đĩa, mạng Internet, hoán đổi...

• ksensors: (lm-sensors): giám sát bo mạch chủ (nhiệt độ, cung cấp điện, các quạt...).

• .lcap, systune: loại bỏ các khả năng được chỉ định cho nhân trong tệp /proc/sys/kernel và thích nghi nó với các nhu cầu bằng systune.

• Logwatcher: phân tích lưu ký log.

• Munin và monit: giám sát hệ thống bằng đồ họa.

• Powertweak và gpowertweak: giám sát và sửa đổi các thông số khác nhau của phần cứng, nhân, mạng, VFS, hoặc VM (cho phép sửa đổi một số thông số chỉ ra trước đó qua /proc).

• gps, gtop, tkps, lavaps (từ hầu hết những thứ ít thân thiện nhất với người sử dụng): một loạt các dạng giám sát tiến trình (chúng thường sử dụng các thông tin từ /proc) và cho phép chúng ta thấy được các nguồn tài nguyên, các socket, các tệp, môi trường và các thông tin khác mà những thứ này sử dụng, cũng như quản trị các tài nguyên/tình trạng của chúng.

• swatch: giám sát hoạt động của hệ thống thông qua các tệp nhật ký log.

• vtgrab: giám sát các máy tính ở xa (tương tự như VNC).

• whowatch: công tụ thời gian thực cho việc giám sát những người sử dụng.

• Wmnd, dmachinemon: giám sát giao thông mạng và giám sát bó máy trên mạng.

• xosview, si: giám sát các tài nguyên và các thông tin hệ thống bằng đồ họa

Hình sau đây chỉ ra các giao diện của ksensors, gkrellm và xosview, mà chúng thể hiện các kết quả từ việc giám sát tiến trình trong thời gian thực.

Trang 417/471

Page 418: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 5

Bên dưới là một số giao diện đồ họa của isag và gtop. Giao diện của isag có các thông tin được systat trong /etc/cron.d/, sysstat tạo ra thông qua các lệnh sa1 và sa2 trong trường hợp này, tích tụ dần trong ngày; trong khi gtop chỉ ra một trong những hiển thị có thể với vị trí, bộ nhớ và các thông tin bổ sung của CPU trong tiến trình.

Hình 6

Trang 418/471

Page 419: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Tiến hành một qui trình giám sát hệ thống toàn phần bằng việc sử dụng các công cụ mà bạn nghĩ là phù hợp nhất và đạt được một sự chuẩn đoán về sử dụng các tài nguyên và những chỗ tắc nghẽn có thể tồn tại trong hệ thống. Mô phỏng tải công việc của hệ thống mã nguồn của sumdis.c được đưa ra trong phần mà nó bao trùm các bó. Ví dụ, hãy sử dụng:

sumdis 1 2000000

2) Thay đổi các thông số của nhân và trình biên dịch và chạy mã được nhắc tới trong điểm ở trên (sumdis.c) với, ví dụ:

time ./sumdis 1 1000000

3) Y hệt với cả các nhân và tạo thành một kết luận đối với các kết quả.

Trang 419/471

Page 420: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham chiếu

Các nguồn tham chiếu và thông tin khác

[Debc, Ibi]

Optimisation of Linux servers: http://people.redhat.com/alikins/system_tuning.html

Performance Monitoring Tools for Linux http://www.linux

Munin: http://munin.projects.linpro.no/

Monit: http://www.tildeslash.com/monit/

Việc giám sát bằng Munin và Monit: http://www.howtoforge.com/server_monitoring_monit_munin

Việc giám sát bằng SNMP và MRTG: http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch22:_Monitoring_Server_Performance

MRTG: http://oss.oetiker.ch/mrtg/

Frysk: http://sources.redhat.com/frysk/

Cacti: http://cacti.net/

Trang 420/471

Page 421: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

11 Bó máy

Remo Suppi Boldrito PID_00148472

Clustering

Remo Suppi BoldritoPID_00148472

Trang 421/471

Page 422: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giới thiệu

Một bó máy tính tham chiếu tới một nhóm các máy tính làm việc chặt chẽ cùng nhau với một nhiệm vụ chung. Những máy tính này cấu thành từ phần cứng, các mạng truyền thông và phần mềm để làm việc cùng nhau như thể chúng từng tất cả là một phần của chỉ một hệ thống duy nhất. Có một loạt các lý do cho việc có mong muốn để thiết lập những bó máy này, nhưng một trong số những lý do chính là để cho có khả năng xử lý thông tin có hiệu quả hơn và nhanh hơn, dù nó là một hệ thống duy nhất. Thông thường, một bó máy làm việc trên một mạng cục bộ LAN và cung cấp sự giao tiếp truyền thông có hiệu quả, dù các máy sẽ nằm ở các vị trí gần với nhau một cách vật lý. Một phiên bản lớn hơn của khái niệm này là lưới máy tính, nơi mà mục đích là y hệt, nhưng nó liên quan tới các nhóm máy tính được kết nối với nhau thông qua một mạng diện rộng WAN. Một số lập trình viên nghĩ về lưới máy tính như một bó máy của các bó máy tính theo một nghĩa 'toàn cầu'. Mặc dù công nghệ ngày một tiên tiến và việc giảm giá thành làm cho dễ dàng hơn để thiết lập các dạng hệ thống này, thì tính phức tạp và những nỗ lực được đòi hỏi để sử dụng hàng tá hoặc hàng trăm (hoặc trong một số trường hợp, hàng ngàn) máy tính là rất lớn. Tuy nhiên, những ưu điểm theo thời gian tính toán có nghĩa rằng, bất chấp tình huống này, các dạng giải pháp điện toán hiệu năng cao HPC (High Performance Computing) được xem là rất hấp dẫn và thường xuyên được phát triển. Trong phần này, chúng ta sẽ chỉ ra một số tiếp cận được sử dụng và được phổ biến rộng rãi nhất. [Rad, Dieb, Prob, Prod, Proe, Gloa]

Trang 422/471

Lưu ý

Một bó máy là một nhóm các máy tính làm việc chặt chẽ với nhau, thường được kết nối trong một mạng cục bộ LAN (Local Area Network).

Grid là các nhóm máy tính được kết nối với mạng diện rộng WAN (Wide Area Network).

Page 423: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

11.1. Giới thiệu về Điện toán Hiệu năng Cao (HPC)

Những tiến bộ trong công nghệ đã làm cho các vi xử lý và các mạng hiệu quả cao hơn, nhanh hơn và giá thành thấp hơn, đã mang lại một sự thay đổi trong tỷ lệ giá thành/hiệu năng có lợi cho việc sử dụng các hệ thống xử lý được kết nối nội bộ trong một vi xử lý tốc độ cao. Dạng kiến trúc này có thể được phân loại thành 2 cấu hình cơ bản:

• Các hệ thống ghép nối chặt chẽ (Tighly Coupled Systems): có các hệ thống trong đó bộ nhớ được tất cả các vi xử lý (các hệ thống bộ nhớ chia sẻ) chia sẻ và bộ nhớ của mỗi vi xử lý được (lập trình viên) 'xem' như một bộ nhớ duy nhất.

• Các hệ thống ghép nối lỏng lẻo (Loosely Coupled Systems): chúng không chia sẻ bộ nhớ (mỗi vi xử lý là riêng biệt) và chúng giao tiếp thông qua các thông điệp đi qua một mạng (thông điệp đi qua các hệ thống).

Ví dụ đầu tiên được biết như là một hệ thống xử lý song song và cái thứ 2 như một hệ thống điện toán phân tán. Trong trường hợp sau, chúng ta có thể nói rằng một hệ thống phân tán là một tập hợp các vi xử lý được kết nối trong một mạng trong đó mỗi vi xử lý có những tài nguyên của riêng nó (bộ nhớ và các thiết bị ngoại vi) và chúng giao tiếp bằng việc trao đổi các thông điệp trên mạng.

Các hệ thống điện toán là một hiện tượng khá gần đây (có thể nói lịch sử điện toán đã bắt đầu vào những năm 70). Ban đầu, chúng đã tạo thành từ những hệ thống lớn, nặng nề, đắt tiền, mà chỉ có thể được một ít chuyên gia sử dụng và chúng đã không thể truy cập được và chậm. Trong những năm 70, những tiến bộ trong công nghệ đã dẫn tới một số cải tiến đáng kể được triển khai có sử dụng các công việc tương tác, chia sẻ thời gian và các máy đầu cuối và các kích thước của các máy tính đã giảm đáng kể. Những năm 80 được đặc trưng với một sự cải tiến đáng kể trong hiệu năng và hiệu quả (đã tiếp tục tới ngày nay) và một sự giảm cực kỳ lớn về kích thước, với sự ra đời của các các máy tính siêu nhỏ. Điện toán đã tiếp tục phát triển thông qua các máy trạm và những tiến bộ trong công nghệ mạng (từ 10 Mbits/giây cho LAN Và 56 Kbytes/giây cho WAN vào năm 1973 cho tới 1Gbit/giây LAN và chế độ truyền không đồng bộ (ATM) và 1.2 Gbits/giây cho WAN ngày nay), thì nó là một yếu tố cơ bản trong các ứng dụng đa phương tiện hiện hành và những gì sẽ được phát triển trong tương lai gần. Về phần các hệ thống phân tán, chúng có xuất xứ từ những năm 70 (các hệ thống với 4 hoặc 8 máy tính), nhưng thực sự trở thành rộng khắp vào những năm 90.

Mặc dù việc quản trị/cài đặt/duy trì các hệ thống phân tán là một nhiệm vụ phức tạp, thì chúng vẫn tiếp tục phát triển, những lý do cơ bản cho sự phổ biến của chúng là sự gia tăng về hiệu năng và hiệu quả cung cấp trong các ứng dụng phân tán vốn có (nhờ bản chất tự nhiên của chúng), thông tin có thể chia sẻ được với một nhóm những người sử dụng, việc chia sẻ các tài nguyên, sự chịu lỗi cao và khả năng mở rộng khi đang làm việc (khả năng bổ sung thêm các nút cho việc gia tăng dần và liên tục hiệu năng và hiệu quả).

Trong các phần sau đây chúng ta sẽ xem xét một số hệ thống xử lý song song/phân tán phổ biến nhất, cũng như các mô hình lập trình được sử dụng để tạo ra mã nguồn có thể sử dụng các tính năng này.

Trang 423/471

Page 424: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

11.1.1. Beowulf

Beowulf [Rad, Beo] là một kiến trúc đa máy tính có khả năng được sử dụng cho các ứng dụng song song/phân tán (APD). Hệ thống này về cơ bản cấu tạo từ một máy chủ và một hoặc nhiều máy trạm được kết nối (thường là) thông qua Ethernet, không có việc sử dụng bất kỳ phần cứng đặc biệt nào. Để khai thác khả năng xử lý này, cần thiết đối với các lập trình viên phải có một mô hình lập trình phân tán mà, trong khi nó là đúng là có khả năng để làm điều này thông qua UNIX (socket, rpc), thì có thể đòi hỏi một nỗ lực rất đáng kể, biết rằng các mô hình lập trình là ở mức độ các lời gọi hệ thống và ngôn ngữ C, ví dụ vậy; nhưng phương pháp làm việc này có thể được coi là mức thấp.

Lớp phần mềm được các hệ thống như máy ảo song song PVM (parallel virtual machine) và giao diện qua thông điệp MPI (message passing interface) cung cấp tạo điều kiện đáng kể cho sự ảo hóa của hệ thống và làm cho có khả năng để lập trình các ứng dụng song song/phân tán dễ dàng và đơn giản. Mẫu làm việc cơ bản là chủ - thợ (master – workers), trong đó có một máy chủ phân phối nhiệm vụ cho các máy thợ thực hiện. Trong các hệ thống lớn (các hệ thống với 1,024 nút), có hơn 1 máy chủ và các nút chuyên cho các nhiệm vụ đặc biệt như, ví dụ, vào/ra hoặc giám sát.

Một trong những khác biệt chính giữa Beowulf và một bó các máy trạm (COW - Cluster Of Workstations) là việc Beowulf được 'coi' như một máy duy nhất trong đó các nút truy cập được ở xa, khi chúng không có một máy đầu cuối (hoặc một bàn phím), trong khi một COW là một nhóm các máy tính có khả năng được cả những người sử dụng COW và những người sử dụng khác một cách tương tác thông qua màn hình và bàn phím sử dụng. Phải nhớ rằng Beowulf không phải là phần mềm truyền mã nguồn của người sử dụng vào mã nguồn phân tán hoặc nó ảnh hưởng tới nhân của hệ điều hành (như Mosix, ví dụ thế). Một cách đơn giản cho việc tạo ra một bó máy chạy GNU/Linux và hành động như một siêu máy tính. Rõ ràng, có nhiều công cụ làm cho có khả năng đạt được một cấu hình, thư viện hoặc sửa đổi nhân dễ dàng hơn cho việc có được các mức hiệu năng tốt hơn, nhưng cũng có khả năng xây dựng một bó máy Beowulf từ một phần mềm chuẩn và thông thường của GNU/Linux. Việc xây dựng một bó máy Beowulf với 2 nút, ví dụ, có thể đạt được đơn giản bằng 2 máy tính được kết nối thông qua Ethernet có sử dụng một hub, một phát tán GNU/Linux chuẩn (Debian) và hệ thống tệp mạng (NFS) và sau khi cho phép các dịch vụ mạng như rsh hoặc ssh. Trong tình huống như vậy, có thể tranh luận rằng chúng ta có một bó máy 2 nút đơn giản.

11.1.1.1. Cấu hình cho các nút như thế nào?

Đầu tiên, chúng ta phải sửa (mỗi nút) /etc/hosts sao cho dòng localhost chỉ có 127.0.0.1 và không đưa vào bất kỳ tên máy nào, như là:

127.0.0.1 localhost

Và bổ sung các địa chỉ IP của các nút (và cho tất cả các nút), ví dụ:

192.168.0.1 pirulo1

192.168.0.2 pirulo2

Trang 424/471

Lưu ý

Một loạt các lựa chọn:

Beowulf

OpenMosix

Grid (Globus)

Page 425: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Có khả năng để tạo ra một người sử dụng (nteum) trong tất cả các nút, tạo ra một nhóm và bổ sung người sử dụng này vào nhóm đó.

groupadd beowulf

adduser nteum beowulf

echo umask 007 >> /home/nteum/.bash_profile

Theo cách này, bất kỳ tệp nào được người sử dụng nteum hoặc bất kỳ ai trong nhóm tạo ra cũng có thể được bó máy Beowulf sửa đổi.

Có thể tạo một máy chủ NFS (và những nút còn lại sẽ là các máy trạm NFS). Trên máy chủ, chúng ta tạo một thư mục như sau:

mkdir /mnt/nteum

chmod 770 /mnt/nteum

chown -R nteum:beowulf /mnt/nteum

Bây giờ chúng ta có thể xuất thư mục này từ máy chủ.

cd /etc

cat >> exports

/mnt/wolf 192.168.0.100/192.168.0.255 (rw)

<control d>

Phải nhớ rằng mạng của chúng ta sẽ là 192.168.0.xxx và đây là một mạng riêng, nói cách khác, bó máy sẽ không thấy được từ Internet và chúng ta phải chỉnh các cấu hình sao cho tất cả các nút có thể thấy nhau được (từ các tường lửa).

Chúng ta nên xác minh rằng các dịch vụ đang làm việc:

chkconfig -add sshd

chkconfig -add nfs

chkconfig -add rexec

chkconfig -add rlogin

chkconfig -level 3 rsh on

chkconfig -level 3 nfs on

chkconfig -level 3 rexec on

chkconfig -level 3 rlogin on

Để làm việc một cách an ninh, điều quan trọng là làm việc với ssh thay vì rsh, có nghĩa là chúng ta phải tạo ra các khóa cho việc kết nối nội bộ giữa các máy tính với người sử dụng nteum một cách an ninh, mà không có mật khẩu. Để làm việc này, chúng ta sửa (chúng ta loại bỏ ghi chú #) các dòng sau đây trong /etc/ssh/sshd_config:

RSAAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

Trang 425/471

Page 426: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Khởi động lại máy tính và chúng ta có kết nối như là người sử dụng nteum, biết rằng người sử dụng này sẽ vận hành bó máy. Để tạo các khóa:

ssh - keygen -b 1024 -f ~/ .ssh/id_rsa -t rsa -N “ “

Các tệp id_rsa và id_rsa.pub sẽ được tạo ra trong thư mục của thư viện /home/nteum/.ssh và chúng ta phải sao chép id_rsa.pub trong một tệp được gọi là authorized_keys trong cùng thư mục. Và sửa các

quyền với chmod 644 ~/.ssh/aut* and chmod 755 ~/.ssh.

Biết rằng chỉ nút chính sẽ được kết nối tới những nút khác (và không theo cách khác) chúng ta chỉ cần sao chép khóa công khai (d_rsa.pub) tới từng nút trong thư mục/tệp /home/nteum/.ssh/authorized_keys của mỗi nút. Hơn nữa, trong mỗi nút, chúng ta sẽ phải kích hoạt NFS bổ sung vào /etc/fstab dòng pirulo1:/mnht/nteum /mnt/nteum nfs rw, hard, intr 0 0.

Như ở điểm này, chúng ta đã có một bó máy Beowulf cho việc chạy các ứng dụng có khả năng là PVM hoặc MPI (sẽ thấy điều này trong các phần sau). Qua FC, có một ứng dụng (hệ thống - cấu hình - bó máy) có khả năng cấu hình một bó máy dựa trên một công cụ đồ họa. Để có thêm thông tin, hãy xem: http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Cluster_Administration/index.html.

11.1.1.2. Những lợi ích của điện toán phân tán

Lợi ích của điện toán song song là gì? Chúng ta sẽ thấy những thứ này với một ví dụ [Red]. Có một chương trình cho việc bổ sung các số (ví dụ, 4 + 5 + 6 …) được gọi là sumdis.c và được viết trong C:

# include <stdio.h>

int main (int argc, char ** argv) {

float initial, final, result, tmp;

if (argc < 2) {

printf (“use: %s N, o initial N.o final\n”, argv[0]);

exit(1);

}

else {

initial = atol (argv[1]);

final = atol (argv[2]);

result = 0.0;

}

for (tmp = inicial; tmp <= final; tmp ++) {

result + = tmp; }

printf (“%f\n”, result)

return 0;

}

Biên dịch nó với gcc -o sumdis sumdis.c và nếu xem xét việc chạy chương trình này, với, ví dụ:

Trang 426/471

Page 427: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

time ./sumdis 1 1000000 (from 1 to 106)

chúng ta có thể thấy rằng thời gian trong một máy Debian 2.4.18 với chip AMD Athlon 1.400 MHz 256 Mb RAM là (khoảng) thực tế = 0.013 và người sử dụng = 0.010 hay nói cách khác, 13 ms tổng số và 10 ms trong vùng của người sử dụng. Nếu, tuy nhiên, chúng ta vào:

time ./sum 1 16000000 (from 1 to 16 * 106)

thời gian sẽ là thực tế = 182, nói cách khác, 14 lần nhiều hơn, có nghĩa là, nếu chúng ta coi 160.000.000 (160 * 106), thì thời gian sẽ vào khoảng vài phút.

Ý tưởng về điện toán phân tán là: nếu chúng ta có một bó 4 máy (nút 1 tới nút 4) với một máy chủ, nơi tệp được NFS chia sẻ, thì có thể là thú vị để chia sự thực thi thông qua rsh (không được khuyến cáo, nhưng chấp nhận được cho ví dụ này), sao cho máy đầu bổ sung từ 1 tới 40.000.000, máy 2 từ 40.000.001 tới 80.000.000, máy 3 từ 80.000.001 tới 120.000.000 và máy 4 từ 120.000.001 tới 160.000.000. Các lệnh sau chỉ ra một khả năng. Chúng ta coi hệ thống có thư mục /home được NFS chia sẻ và người sử dụng (nteum) sẽ chạy script đã cấu hình .rhosts phù hợp sao cho có khả năng truy cập tài khoản của chúng mà không cần mật khẩu. Hơn nữa, nếu tcpd đã được kích hoạt trong /etc/inetd.conf trong dòng rsh, thì phải có dòng tương ứng trong /etc/hosts.allow, có khả năng cho phép chúng ta truy cập 4 máy tính trong bó máy này:

mkfifo out Tạo một hàng đợi fifo trong /home/nteum

./distr.sh & time cat salida | awk '{total + = $1} \ END printf “%1f”, total} '

Chạy lệnh distr.sh; các kết quả được thu thập và bổ sung khi thời gian chạy được đo

Script của trình biên dịch lệnh (shell) distr.sh có thể là thứ gì đó giống như là:

rsh node1 /home/nteum/sumdis 1 40000000 > /home/nteum/out < /dev/null &

rsh node2 /home/nteum/sumdis 40000001 80000000 > /home/nteum/out < /dev/null &

rsh node3 /home/nteum/sumdis 80000001 120000000 > /home/nteum/out < /dev/null &

rsh node4 /home/nteum/sumdis 120000001 160000000 > /home/nteum/out < /dev/null &

Chúng ta có thể quan sát thấy rằng thời gian được giảm đáng kể (bằng một yếu tố của khoảng 4) và hầu như nhưng không chính xác tuyến tính. Rõ ràng, ví dụ này là rất đơn giản và chỉ được sử dụng cho các mục đích demo. Các lập trình viên sử dụng các thư viện cho phép họ thiết lập thời gian chạy, sự tạo ra và truyền thông của các tiến trình trong một hệ thống phân tán (như PVM và MPI).

11.1.2. Nên lập trình thế nào để tận dụng được điện toán đồng thời?

Có một loạt các cách thức thể hiện sự đồng thời trong một chương trình. 2 cách phổ biến nhất là:

1) Sử dụng các luồng (hoặc các tiến trình).

2) Sử dụng các tiến trình trong các vi xử lý khác nhau mà chúng giao tiếp thông qua các thông điệp (MPS, hệ thống truyền thông điệp - message passing system).

Trang 427/471

Page 428: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Cả 2 phương pháp có thể được triển khai trên các cấu hình phần cứng khác nhau (chia sẻ bộ nhớ hoặc các thông điệp) mà các hệ thống MPS có thể liên quan tới sự trễ và các vấn đề về tốc độ với các thông điệp trên mạng, mà có thể là một yếu tố tiêu cực. Tuy nhiên, với những tiến bộ trong công nghệ mạng, các hệ thống này đã trưởng thành về tính phổ biến (và về số lượng). Một thông điệp là cực kỳ đơn giản:

send (destination, msg)

recv (origin, msg)

Các giao diện lập trình ứng dụng API phổ biến nhất ngày nay là PVM và MPI và, hơn nữa, chúng không hạn chế khả năng sử dụng các luồng (ngay cả nếu nó là ở một mức cục bộ) hoặc có việc xử lý đồng thời và vào/ra. Mặt khác, trên một máy với bộ nhớ được chia sẻ (SHM) thì chỉ có thể sử dụng các luồng và có vấn đề nghiêm trọng về tính mở rộng theo phạm vi, biết rằng tất cả các vi xử lý sử dụng cùng bộ nhớ và số lượng các vi xử lý trong hệ thống bị hạn chế bởi băng thông của bộ nhớ.

Để tóm tắt, chúng ta có thể kết luận rằng:

1) Sự nở rộ của các máy tính đa nhiệm (đa người sử dụng) được kết nối thông qua một mạng với các dịch vụ phân tán (NFS và NIS YP).

2) Chúng là các hệ thống không đồng nhất với các hệ điều hành được kết nối mạng (NOS), đưa ra một loạt các dịch vụ phân tán và ở xa.

3) Các ứng dụng phân tán có thể được lập trình ở các mức khác nhau:

a) Sử dụng một mô hình máy trạm - máy chủ và việc lập trình ở mức thấp (sockets).

b) Mô hình y như vậy nhưng với một “mức độ cao” của API (PVM, MPI).

c) Việc sử dụng các mô hình lập trình khác như việc lập trình hướng đối tượng phân tán (RMI, CORBA, Agents...).

11.1.2.1. Máy ảo song song (PVM)

PVM - Parallel Virtual Machine [Proe] là một API làm cho có khả năng tạo, từ viễn cảnh của ứng dụng, một bó các máy tính năng động, tạo nên một máy ảo (VM). Các nhiệm vụ có thể được tạo ra một cách động (được sinh ra) và/hoặc bị hạn chế (bị giết) và bất kỳ nhiệm vụ PVM nào cũng có thể gửi một thông điệp tới máy khác. Không có hạn chế về kích cỡ hoặc số lượng các thông điệp (theo đặc tả, mặc dù có thể có các tổ hợp hệ điều hành/phần cứng gây ra những hạn chế về kích cỡ thông điệp) và mô hình này hỗ trợ sự chịu lỗi, kiểm soát tài nguyên, kiểm soát các tiến trình, sự không đồng nhất trong các mạng và trong các máy hosts.

Hệ thống này (VM) có các công cụ cho việc kiểm soát các tài nguyên (bổ sung hoặc xóa các hosts từ máy ảo), kiểm soát các tiến trình (sự tạo ra/sự hạn chế động đối với các tiến trình), các mô hình giao tiếp khác nhau (một nhiệm vụ có thể được gắn hoặc loại bỏ khỏi một nhóm một cách năng động) và sự chịu lỗi (VM dò tìm ra lỗi và nó có thể được cấu hình).

Cấu trúc PVM dựa vào, một mặt, daemon (pvm3d) nằm trong từng máy và được kết nối nội bộ bằng việc sử dụng UDP, và mặt khác, thư viện PVM (libpvm3.a), nó có chứa tất cả các thủ tục để gửi/nhận các thông điệp, tạo ra/hạn chế các tiến trình, các nhóm, sự đồng bộ hóa …, sử dụng ứng dụng phân tán.

Trang 428/471

Page 429: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

PVM có một console (pvm) có khả năng khởi động daemon này, tạo ra VM, chạy các ứng dụng … Được khuyến cáo để cài đặt phần mềm từ phát tán, biết rằng sự biên dịch đòi hỏi một số lượng nhất định nào đó về 'sự chuyên tâm'. Để cài đặt PVM trên Debian, ví dụ, phải đưa vào 2 gói (tối thiểu): pvm và pvm-dev (pvm console và các tiện ích là trước tiên và trong các thư viện, tiêu đề và phần còn lại của các công cụ biên dịch là đứng thứ 2). Nếu chỉ cần thư viện vì chúng ta đã có ứng dụng, thì có thể chỉ cài đặt gói libpvm3).

Để tạo một ứng dụng song song/phân tán trong PVM, có thể bắt đầu với phiên bản tiêu chuẩn hoặc xem xét cấu trúc vật lý của vấn đề và xác định các phần nào có thể là cùng một lúc (độc lập). Các phần cùng một lúc sẽ là những ứng viên để được viết lại như các mã song song. Hơn nữa, phải xem xét liệu có khả năng để thay thế các chức năng số học bằng các phiên bản song song hay không (ví dụ, ScaLapack, Scalable Linear Algebra Package, sẵn sàng trong Debian như scalapack.pvm | mpich - test | dev, scalapack1-pvm | mpich phụ thuộc vào liệu PVM hay là MPI). Cũng thuận tiện để tìm liệu có bất kỳ ứng dụng song song tương tự nào (http://www.epm.oml.gov/pvm) có thể chỉ dẫn cho chúng ta như là một phương pháp xây dựng ứng dụng song song hay không.

Việc song song hóa một chương trình không phải là nhiệm vụ dễ dàng, vì phải tính tới luật Amdahl.

Luật Amdahl nói rằng tăng tốc độ bị hạn chế với sự phân mảnh của mã nguồn (f) mà có thể được song song hóa: speedup = 1/(1-f).

Luật này ngụ ý rằng một ứng dụng tuần tự f = 0 và tăng tốc độ speedup = 1, với tất cả mã song song f = 1 và speedup = infinite (!) (vô định), với các giá trị có thể, 90% mã song song có nghĩa là speedup = 10 nhưng với f = 0.99, thì speedup = 100. Hạn chế này có thể tránh được bằng các thuật toán mở rộng được phạm vi và các mô hình ứng dụng khác nhau:

1) Chủ – thợ: máy chủ khởi động tất cả các máy thợ và điều phối công việc và vào/ra.

2) Tiến trình đơn đa dữ liệu (SPMD): cùng chương trình mà chạy với các tập hợp dữ liệu khác nhau.

3) Chức năng: các chương trình khác nhau thực hiện một chức năng khác nhau trong ứng dụng .

Với console pvm và với lệnh add (bổ sung) chúng ta có thể cấu hình VM trong khi bổ sung tất cả các nút. Trong nút này, phải có thư mục ~/pvm3/bin/LINUX, với các nhị phân của ứng dụng. Các biến PVM_ROOT = Directory phải được công bố, nơi có lib/LINUX/libpvm3.a và PVM_ARCH = LINUX, có thể được thay thế, ví dụ, trong tệp /.cshrc. Trình biên dịch lệnh (shell) mặc định của người sử dụng (thường là một người sử dụng NIS hoặc, nếu không, cũng người sử dụng này phải là trong từng máy với cùng mật khẩu) nên là csh (nếu chúng ta sử dụng rsh như một biện pháp chạy ở xa) và tệp /.rhosts phải được cấu hình để cung cấp sự truy cập tới từng nút mà không có mật khẩu. Gói PVM kết hợp một rsh-pvm có khả năng thấy được trong /usr/lib/pvm3/bin như một rsh được làm đặc biệt cho PVM (xem tài liệu), khi có một số phát tán mà chúng không đưa nó vào, vì những lý do an ninh. Được khuyến cáo để thiết lập cấu hình, như đã được chỉ ra, ssh với các khóa công khai của máy chủ trong .ssh/authorized_key của thư mục của mỗi người sử dụng.

Như một ví dụ của việc lập trình PVM, chúng ta chỉ ra một chương trình dạng máy chủ - máy trạm, nơi mà máy chủ tạo các nút con, gửi các dữ

Trang 429/471

Lưu ý

Luật Amdahl

speedup = 1/(1-f)

f là một phần của mã nguồn

Lưu ý

Việc biên dịch PVM: gcc -O -I/usr/include/ -o output output.c -lpvm3

Page 430: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

liệu, những nút này luân chuyển các dữ liệu với một số lần xác định giữa các nút con (nút đầu ở bên trái nhận được một mẩu dữ liệu, xử lý nó và gửi nó tới nút bên phải), trong khi các nút cha chờ cho từng nút con hoàn thành.

Ví dụ về PVM: master.c

Để biên dịch trong Debian:

gcc -O -I /usr/share/pvm3/include/ -L/usr/share/pvm3/lib/LINUX -o master master.c -lpvm3

Các thư mục trong -I và trong -L phải là nơi đưa vào pvm3.h và libpvm* nằm, một cách tương ứng

Thực thi:

1) chạy daemon pvmd với pvm

2) chạy add để bổ sung các nút (lệnh này có thể bỏ qua nếu chúng ta chỉ có 1 nút)

3) chạy lệnh quit (chúng ta bỏ lại pvm nhưng nó vẫn tiếp tục chạy)

4) chúng ta chạy máy chủ master

#include <stdio.h>

#include <pvm3.h>

#define SLAVENAME “/home/nteum/pvm3/client”

main () {

int mytid, tids [20], n, nproc, numt, i, who, msgtype, loops;

float data [10]; int n_times;

if (pvm_parent () = =PvmNoParent) {

/*Return if this is the parent or child process * / loops = 1;

printf (“\n How many children (120)? ”);

scanf (“%d”, &nproc);

printf (“\n How many child-child comminication loops (1 – 5000)? ”);

scanf (“%d”, &loops); }

/*Redirects the in/out of the children to the parent */

pvm_catchout (stdout);

/*Creates the children */

numt = pvm_spawn (SLAVENAME, (char **) 0, 0, “”, nproc, tids);

/* Starts up a new process, 1st: executable child, 2nd: argv, 3rd: options,

4th: where, 5th: N.o copies, 6th: matrix of id*/

printf (“Result of Spawn: %d \n”, numt);

/* Has it managed? */

if (numt &lt; nproc ) {

Printf (“Error creating the children. Error code: \n”);

for ( i = numt; i<nproc ; i++ ) {

printf (Tid %d %d\n”, i, tide [i] ); }

for (i = 0; i<numt; i++) {

pvm_kill (tids[i] ); } /* Kill the processes with id in tids */

pvm_exit ();

Trang 430/471

Page 431: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

exit (); /*Finish*/

}

/*Start up parent program, initialising the data */

n = 10;

for ( i = 0 ; i<n ; i++ ) {

data [I] = 2.0; }

/* Broadcast with initial data to slaves */

pvm_initsend (PvmDataDefault) ; .

/* Delete the buffer and specify message encoding */

pvm_pkint (&loops, 1, 1) ;

/* Package data in the buffer, 2nd N.o , 3*: stride */

pvm_pkint (&nproc, 1, 1) ;

pvm_pkint (&n, 1, 1);

pvm_pkfloat (data, n, 1) ;

pvm_mcast (tide, nproc, 0) ;

/* Multicast in the buffer to the tids and wait for the result from the children */

msgtype = 5 ;

for (i = 0 ; i<nproc ; i++ ) {

pvm_recv ( -1, msgtype );

/* Receive a message, -1: of any, 2nd: tag of msg */

pvm_upkint ( &who, 1, 1) ;

/* Unpackage */

printf (“Finished %d\n”, who) ;

pvm_exit () ;

}

Ví dụ về PVM: client.c

Để biên dịch trong Debian:

gcc -O -I/usr/share/pvm3/include/ -L/usr/share/pvm3/lib/LINUX -or client client.c -lpvm3

Các thư mục trong -I và trong -L phải ở những nơi mà pvm3.h và libpvm* nằm, một cách tương ứng.

Thực thi:

Điều này không cần thiết khi máy chủ master khởi động chúng, nhưng máy trạm phải ở trong /home/nteum/pvm3.

#include <stdio.h>

#include “pvm3.h”

main () {

int mytid; /*Mi tast id*/

int tids [20]; /*Task ids*/

int n, me, i, nproc, master, msgtype, loops; float data[10];

long result [4]; float work ();

mytid = pvm_mytid(); msgtype = 0;

pvm_recv ( -1, msgtype) ;

pvm_upkint (&loops, 1, 1);

Trang 431/471

Page 432: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

pvm_upkint (&nproc, 1, 1);

pvm_upkint (tids, nproc, 1);

pvm_upkint (&n, 1, 1);

pvm_upkfloat (data, n, 1);

/*Determines which child it is (0 - - nproc-1)*/

for (i = 0; i<nproc; i++)

if (mytid = = tids[i]) { me = i; break; }

/*Processes and passes the data between neighours*/

work (me, data, tids, nproc, loops);

/*Send the data to the master*/

pvm_initsend (PvmDataDefault) ;

pvm_pkint (&me, 1, 1) ;

msgtype = 5;

master = pvm_parent (); /*Find out who created it*/

pvm_send (master, msgtype);

pvm_exit ();

}

float work (me, data, tids, nproc, loops)

int me, *tids, nproc; float *data; {

int i, j, dest; float psum = 0.0, sum = 0.1;

for (j = 1; j<= loops; j++) {

pvm_initsend (PvmDataDefault) ;

pvm_pkfloat (&sum, 1, 1) ;

dest = me + 1;

if (dest = = nproc) dest = 0 ;

pvm_send (tids [dest] , 22) ;

i = me – 1;

if (me = = 0) i = nproc – 1;

pvm_recv (tids [i] , 22) ;

pvm_upkfloat (&psum, 1, 1) ;

}

}

Lập trình viên được một giao diện đồ họa hỗ trợ, là sự trợ giúp tuyệt vời (xem hình sau), hành động như một console PVM và màn hình, được gọi là xpvm (trong Debian XPVM, cài đặt gói xpvm), làm cho có khả năng để cấu hình VM, chạy các tiến trình, ảo hóa sự tương tác giữa các nhiệm vụ (giao tiếp truyền thông), các tình trạng, thông tin ...

Trang 432/471

Page 433: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 1.

11.1.2.2. Giao diện truyền qua thông điệp (MPI)

Định nghĩa của API về MPI - Message Passing Interface [Prob, Proc] là kết quả công việc từ nhóm thảo luận MPI Forum (MPIF), là một nhóm của hơn 40 tổ chức, MPI có những ảnh hưởng từ các kiến trúc, ngôn ngữ và công việc khác nhau trong thế giới của điện toán song song như: WRC (lbm), Intel NX/2, Express, nCUBE, vertex, p4, Parmac và những đóng góp từ ZipCode, Chimp, PVM, Chamaleon, PICL. Mục đích chính của MPIF là để thiết kế một API, mà không có bất kỳ mối quan hệ đặc biệt nào với bất kỳ trình biên dịch hoặc thư viện nào, sao cho giao tiếp sao chép có hiệu quả từ bộ nhớ tới bộ nhớ, tính toán và giao tiếp đồng thời và những sự tải về khi giao tiếp là có thể được, miễn là có một vi xử lý cho các giao tiếp đó. Hơn nữa, nó hỗ trợ sự phát triển trong các môi trường không đồng nhất, với giao diện C và F77 (bao gồm C++, F90), nơi mà giao tiếp sẽ là đáng tin cậy và các lỗi được hệ thống giải quyết. API cũng cần thiết cho một triển khai cài đặt, là chấp nhận được với hệ điều hành (an toàn theo luồng). API được thiết kế đặc biệt cho các lập trình viên đã sử dụng mẫu truyền qua thông điệp MPP (Message Passing Paradigm) trong C và F77 để tận dụng được đặc tính quan trọng nhất: tính khả chuyển. MPP có thể được chạy trên các máy đa vi xử lý, các mạng WS và thậm chí trên các máy với bộ nhớ chia sẻ. Phiên bản MPI1 (phiên bản phổ biến nhất) không hỗ trợ việc tạo động (spawn) các nhiệm vụ, mà MPI2 (đang được phát triển với một tỷ lệ ngày một gia tăng) thực hiện.

Nhiều khía cạnh đã được thiết kế để tận dụng những lợi ích của phần cứng giao tiếp trên các máy tính song song có khả năng mở rộng được phạm vi SPC (scalable parallel computer) và chuẩn được chấp nhận một cách nhiều nhất từ các nhà sản xuất phần cứng song song và phân tán (SGI, SUN, Cray, HPConvex, IPM, Parsystec...). Có các phiên bản phần mềm quảng cáo cho không – freeware (mpich, ví dụ) (là hoàn toàn tương thích với các triển khai cài đặt thương mại từ các nhà sản xuất phần cứng) và chúng dưa vào các giao tiếp điểm – điểm, các hoạt động hợp tác và các nhóm tiến trình, các ngữ cảnh giao tiếp, hỗ trợ cho F77 và C và một môi trường kiểm soát, quản trị và gia công định hình. Nhưng vẫn còn có một số điểm chưa giải quyết được, như: các hoạt động của SHM, chạy ở xa, các công cụ xây dựng chương trình, việc gỡ rối, kiểm soát các luồng, quản trị các nhiệm vụ, các chức năng vào/ra đồng thời xảy ra (hầu hết những vấn đề này phát sinh từ một sự thiếu hụt các công cụ sẽ được giải quyết trong phiên bản 2 của API MPI2). Chức năng trong MPI1, khi không có sự tạo ra tiến trình động, là rất đơn giản, biết rằng trong số rất nhiều tiến trình như nhiều tác vụ đang tồn tại, tự quản và việc chạy mã

Trang 433/471

Page 434: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nguồn dạng đa dữ liệu đa chỉ dẫn MIMD (multiple instruction multiple data) của riêng chúng và việc giao tiếp thông qua các lời gọi MPI. Mã nguồn này có thể là nối tiếp nhau hoặc đa luồng (cùng đồng thời xảy ra) và MPI làm việc trong các luồng đồng thời, khi các lời gọi được đưa vào lại.

Để cài đặt MPI, được khuyến cáo là bạn hãy sử dụng phát tán, vì việc biên dịch nó là cực kỳ phức tạp (vì những phụ thuộc mà nó cần từ những gói khác). Debian đưa vào Mpich phiên bản 1.2.7.2 (Etch) trong gói mpich-bin (mpich là gói đã cũ) và cả mpich-mpd-bin (phiên bản của một daemon đa mục đích, đưa vào sự hỗ trợ cho các tiến trình mở rộng được theo phạm vi, quản lý và kiểm soát). mpich-bin triển khai chuẩn MPI 1.2 và một số phần của MPI 2 (như, ví dụ, vào/ra song song). Hơn nữa, chính phát tán này đưa vào sự triển khai cài đặt khác của MPI gọi là LAM (các gói lam* và tài liệu trong /usr/doc/lam-runtime/release.html). Hai triển khai cài đặt là tương đương, từ viễn cảnh của MPI, nhưng chúng được quản lý một cách khác nhau. Tất cả thông tin về Mpich có thể thấy được (sau khi cài đặt các gói mpich*) trong /usr/share/doc/mpi (hoặc trong /usr/doc/mpi). Mpich cần rsh để chạy trong các máy khác, có nghĩa là chúng ta phải chèn vào thư mục của người sử dụng trong một tệp ~/.rhosts bằng các dòng với định dạng sau: host username để cho phép username nhập vào host mà không có mật khẩu (y hệt như vậy với PVM). Phải nhớ là chúng ta phải cài đặt gói rshserver trên tất cả các máy và nếu có tcpd trong /etc/inetd.conf trong rsh.d, thì chúng ta phải cho phép hosts trong /etc/hosts.allow. Hơn nữa, chúng ta phải kích hoạt (mount) thư mục của người sử dụng bằng NFS trong tất cả các máy và tệp /etc/mpich/machines.LINUX phải chứa hostname của tất cả các máy tạo thành bó máy (mỗi máy một dòng, mặc định, xuất hiện như là localhost). Hơn nữa, người sử dụng phải có Csh như là trình biên dịch lệnh (shell) một cách mặc định.

Trong Debian, chúng ta có thể cài đặt gói update-cluster để trợ giúp với sự quản trị. Cài đặt của Mpich trong Debian sử dụng ssh thay vì rsh vì những lý do an ninh, mặc dù có một liên kết của rsh => ssh cho tính tương thích. Sự khác biệt duy nhất là việc phải sử dụng các cơ chế xác thực ssh cho kết nối không có mật khẩu thông qua các tệp tương ứng. Nếu khác, đối với mỗi tiến trình cần chạy, sẽ phải gõ vào mật khẩu trước khi chạy. Để cho phép kết nối giữa các máy, với ssh, mà không có mật khẩu, phải tuân theo thủ tục được nhắc tới trong phần trước. Để kiểm tra nó, có thể chạy ssh localhost và sau đó chúng ta sẽ có khả năng để đăng nhập vào mà không có mật khẩu. Nhớ trong đầu rằng nếu cài đặt Mpich và LAM-MPI, thì mpirun của Mpich sẽ được gọi là mpirun.mpich và mpirun sẽ là của LAM-MPI. Điều quan trọng phải nhớ rằng mpirun của LAM sẽ sử dụng daemon lamboot để hình thành mẫu phân tán của VM.

Deamon lamboot đã được thiết kế sao cho những người sử dụng có thể chạy các chương trình phân tán mà không có các quyền root (cũng làm cho có khả năng để chạy các chương trình trong một VM mà không có các lời gọi tới MPI). Vì lý do này, để chạy mpirun, sẽ phải làm nó như một người sử dụng khác với root và chạy lamboot trước khi hand.lamboot sử dụng một tệp cấu hình trong /etc/lam cho việc xác định một cách mặc định các nút (xem bhost*); xin hãy tham vấn tài liệu để có thêm thông tin (http://www.lam-mpi.org). [Lam]

Để biên dịch các chương trình MMPI, có thể sử dụng lệnh mpicc (ví dụ, mpicc -o test test.c), nó chấp nhận tất cả các lựa chọn của gcc dù được khuyến cáo sử dụng (với những sửa đổi) một số makefiles mà chúng nằm trong tệp /usr/doc/mpich/examples. Cũng có khả năng sử dụng mpireconfig Makefiles, nó sử dụng tệp Makefile.in như một khoản vào để sinh ra makefile và là dễ dàng hơn nhiều để sửa đổi. Sau đó, chúng ta có thể chạy:

Trang 434/471

Page 435: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

mpirun -np 8 programme

hoặc:

mpirun.mpich -np 8 programme

trong đó np là số các tiến trình hoặc vi xử lý trong đó chương trình sẽ chạy (8, trong trường hợp này). Có thể đặt vào số lượng chúng ta muốn, khi mà Mpich sẽ cố phân phối các tiến trình theo một cách cân bằng tốt hơn giữa tất cả các máy của /etc/mpich/machines.LINUX. Nếu có nhiều hơn các tiến trình so với các vi xử lý, thì Mpich sẽ sử dụng các đặc tính hoán đổi swap của GNU/Linux để mô phỏng sự thực thi song song. Trong Debian và trong thư mục /usr/doc/mpich-doc (một liên kết tới /usr/share/mpich-doc), chúng ta có thể thấy tất cả các tài liệu trong các định dạng khác nhau (các lệnh, API của MPI …).

Để biên dịch MPI: mpicc -o -o outpt output.c

Chạy Mpich: mpirun.mpich -np No _processes output

Chúng ta bây giờ sẽ xem 2 ví dụ (được đưa vào trong phát tán của Mpich 1.2.x trong thư mục /usr/doc/mpich/examples). Srtest là một chương trình đơn giản cho việc thiết lập các giao tiếp giữa các tiến trình điểm - điểm và cpi tính toán giá trị của Pi ở dạng phân tán (thông qua sự tích hợp).

Các giao tiếp điểm – điểm: srtest.c

Forr compilling: mpicc -O -o srtest srtest.c

Execution of Mpich: mpirun.mpich -np N.o _processes srtest (sẽ yêu cầu mật khẩu [No._processes -1] lần nếu chúng ta không có sự truy cập trực tiếp thông qua ssh).

Execution of LAM: mpirun -np N.o _processes srtest (phải là một người sử dụng khác với root)

#include “mpi.h”

#include <stdio.h>

#define BUFLEN 512

int main (int argc, char *argv [] ) {

int myid, numprocs, next, namelen;

char bufer [BUFLEN], processor_name [MPI_MAX_PROCESSOR_NAME]; MPI_Status status;

MPI_Init (&argc, &argv) ;

/* Must be placed before other MPI calls, always*/

MPI_Comm_size (MPI_COMM_WORLD, &amp; myid);

/* Integrates the process in a communications group*/

MPI_Get_processor_name (processor_name, &namelen) ;

/*Obtains the name of the processor*/

fprintf (stderr, “Process %d on %s\n”, myid, processor_name);

strcpy (buffer, “Hello People”) ;

if (myid = = numprocs1) next = 0;

else next = myid + 1;

if (myid = = 0) { /*If it is the initial, send string of buffer*/.

printf (“%d Send '%s' \n”, myid, buffer);

Trang 435/471

Page 436: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

MPI_Send (buffer, strlen (buffer) +1, MPI_CHAR, next, 99, MPI_COMM_WORLD) ;

/*Blocking Send, 1 or: buffer, 2 or: size, 3 or: type, 4 or: destination, 5 or: tag,

6 or: context*/

/*MPI_Send (buffer, strlen(buffer) +1, MPI_CHAR,

MPI_PROC_NULL, 299, MPI_COMM_WORLD); */

printf (“%d receiving \n”, myid);

/*Blocking Recv, 1 o: buffer, 2 or: size, 3 or: type, 4 or: source, 5 or: tag, 6 or:

context, 7 or: status*/

MPI_Recv (buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD, &status);

printf (“%d received '%s' \n”, myid, buffer) }

else {

printf (“%d received '%s' \n”, myid) ;

MPI_Recv (buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD, status);

/*MPI_Recv (buffer, BUFLEN, MPI_CHAR, MPI_PROC_NULL,

299, MPI_COMM_WORLD, &status); */

printf (“%d received '%s' \n”, myid, buffer);

MPI_Send (buffer, strlen (buffer) +1, MPI)_CHAR, next, 99,

MPI_COMM_WORLD);

printf (“%d sent '%s' \n”, myid, buffer); }

MPI_Barrier (MPI_COMM_WORLD); /*Synchronises all the processes*/ MPI_Finalise () ;

/*Frees up the resources and ends*/ return (0) ;

}

Tính toán PI phân tán: cpi.c

Forr compiling: mpicc O hoặc cpi cpi.c.

Execution of Mpich: mpirun.mpich -np N.o processes cpi (sẽ yêu cầu mật khẩu (N.o processes -1) lần nếu chúng ta không có sự truy cập trực tiếp thông qua ssh).

Execution of LAM: mpirun -np N.o processes cpi (phải là một người sử dụng khác với root).

#include “mpi.h”

#include <stdio.h>

#include <math.h>

double f (double);

double f (double a) { return (4.0 / (1.0 + a*a)); }

int main (int argc, char *argv [ ] ) {

int done = 0, n, myid, numprocs, i;

double PI25DT = 3.141592653589793238462643;

double mypi, pi, h, sum, x;

double starwtime = 0.0, endwtime;

int namelen;

char processor_name [MPI_MAX_PROCESSOR_NAME];

MPI_Init (&argc, &argv);

MPI_Comm_size (MPI_COMM_WORLD, &amp; numprocs);

Trang 436/471

Page 437: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

/*Indicates the number of processes in the group*/

MPI_Comm_rank (MPI_COMM_WORLD, &myid);

/*Id of the process*/ MPI_Get_processor_name (processor_name, &namelen);

/*Name of the process*/

fpritf (stderr, “Process %d on %s\n”, myid, processor_name);

n = 0

while (!done) {

if (myid = = 0) { /*if it is the first...*/

if (n = = 0) n = 100; else n = 0;

startwtime = MPI_Wtime (); } /*Time Clock*/

MPI_Bcast (&amp; n, 1, MPI_INT, 0, MPI_COMM_WORLD; /*Broadcast to the rest*/

/*Send from 4th arg. to all the processes of the group. All others that are not 0

will copy the buffer from 4 or arg -process 0- */ /*1. o :buffer, 2nd :size, 3rd

:type, 5th :group*/

if (n = = 0) done = 1; else {

h = 1.0 / (double) n;

sum = 0.0;

for (i = myid + 1; i &lt; =n; i + = numprocs) {

x = h * ((double ) i – 0.5) ; sum + = f(x) ; }

mypi = h * sum;

MPI_Reduce (&mypi, &pi, 1, MPI_DOUBLE, MPI_SUN, 0, MPI_COMM_WORLD);

/*Combines the elements of the Send Buffer of each process of the group using

the operation MPI_SUM and returne the result in the Recv Buffer. It must be

called by all the processes of the group using the same arguments*/

/*1st :sendbuffer, 2nd :recvbuffer, 3rd :size, 4th :type, 5th :oper, 6th :root,

7th :context */

if (myid = = 0) { /*Only the PO prints the result*/

printf (“Pi is approximately %.16f, the error is %.16f\n”, pi, fabs (pi – PI25DT));

endwtime = MPI_Wtime ();

printf (“Execution time = %f\n”, endwtime – startwtime); }

}

} MPI_Finalize (); /*Free up resources and finish*/

return 0:

}

Vì XPVM tồn tại trong PVM, trong MPI có một ứng dụng tương tự (phức tạp hơn) được gọi là XMPI (xmpi trong Debian). Cũng có khả năng để cài đặt một thư viện, libxmpi3, nó triển khai giao thức XMPI cho các chương trình phân tích bằng đồ họa của MPI với nhiều chi tiết hơn được đưa ra trong xmpi. Hình sau đây chỉ một số đồ họa có thể trong xmpi.

Trang 437/471

Page 438: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 2. XMPI

Trang 438/471

Page 439: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

11.2. OpenMosix

OpenMosix [Prod] là một gói phần mềm truyền một tập hợp các máy được một mạng GNU/Linux trong một bó máy kết nối. Điều này làm cân bằng tải công việc một cách tự động giữa các nút khác nhau của bó máy và các nút có thể liên kết hoặc bó lại với nhau để không làm ngắt quãng dịch vụ. Tải được phân tán giữa các nút, tính tới tốc độ của kết nối và CPU. OpenMosix là một phần của nhân (thông qua một bản vá nhân Linux) và duy trì toàn bộ tính tương thích với GNU/Linux, các chương trình, các tệp và các tài nguyên của người sử dụng. Đặc tính khác của OpenMosix là nó kết hợp các ứng dụng của một hệ thống tệp mạnh và được tối ưu hóa (oMFS) cho điện toán hiệu năng cao HPC. Trong Debian Woody, có thể cài đặt OpenMosix từ openmosix-dev (các thư viện và các tiêu đề), nhân - bản vá - openmosix (bản vá của OpenMosix), openmosix (các công cụ quản trị). Cũng vậy, có khả năng để cài đặt mosix (xem tài liệu về sự khác biệt, nhất là về các giấy phép, giữa Mosix và OpenMosix). Trong các phiên bản Debian sau Woody, nó không được đưa vào như một gói (ổn định) và sẽ là cần thiết để lên http://openmosix.sourceforge.net/ để có được các gói này (hoặc các tài nguyên) và các chỉ dẫn cài đặt (http://howto.x-tend.be/openMosix-HOWTO/).

OpenMosix sử dụng một tệp cấu hình thường thấy trong en/etc (xem tài liệu cho các phiên bản cũ hơn của tệp này), được gọi là openmosix.map và nó được nằm trong từng nút. Định dạng của nó là rất đơn giản và từng dòng có 3 trường: Nodo_ID IP-Address (hoặc hostname) Range-size.

Một ví dụ có thể là:

1 node1 1 2 node2 13 node3 14 192.168.1.1 15 192.168.1.2 1

Cũng có khả năng sử dụng một dãy nơi mà ID và IP tăng một cách tương ứng: phải chắc chắn rằng chúng ta có cùng cấu hình và cùng phiên bản của OpenMosix trong từng nút. Để chạy OpenMosix, trong từng nút chúng ta phải gõ:

setpe -w -f /etc/openmosix.map

Chúng ta cũng có thể sử dụng script của OpenMosix (sao chép nó từ userspace-tools vào /etc/init.d) để khởi tạo nó trong quá trình khởi động.

Hệ thống tệp oMFS cho phép truy cập ở xa tới tất cả các tệp trong bó máy, mặc dù chúng đã được kích hoạt (mounted) một cách cục bộ trong /mfs và, vì thế, các tệp trong /home trong nút 3 sẽ được thấy trên từng máy trong /mfs/3/home.

Tất cả các UID (ID của người sử dụng) và các GID (ID của các nhóm) của FS trên từng nút của bó máy phải là như nhau (OpenLDAP có thể được sử dụng cho điều này).

Để đưa lên oMFS, chúng ta phải sửa đổi /etc/fstab bằng một khoản đầu vào như: mfs_mnt /mfs mfs dfsa =1 0 0 và để kích hoạt hoặc vô hiệu hóa nó: mfs_mnt /mfs mfs dfsa = 0 0 0.

Trang 439/471

Page 440: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Sau đó, FS của từng nút sẽ được thấy trong mfs/[openMosixNodeID]/. Một khi được cài đặt, nó sẽ có khả năng để chạy một script rất đơn giản nhiều lần, như, ví dụ (xem Howto của OpenMosix):

awk 'BEGIN {for (i = 0; i<10000; i++) for (j = 0; j<10000; j++); }'

Và, sau đó, chúng ta có thể quan sát hành vi với mosmom hoặc với openmosixview (được khuyến cáo). OpenMosix có một daemon (omdiscd), làm cho có khả năng cấu hình tự động bó máy hạn chế nhu cầu sửa và cấu hình /etc/openmosix.map. Daemon này sử dụng multicast để chỉ ra những nút khác cũng là một nút của OpenMosix, có nghĩa là, một khi omdiscd đã khởi động, thì daemon này sẽ liên kết bó máy một cách tự động. Để cho điều này xảy ra, nên phải có việc định tuyến mặc định (GW) của mạng được cấu hình một cách phù hợp. Một khi nó đã chạy (omdiscd), thì một loạt các thông điệp chỉ tình trạng của bó máy và cấu hình sẽ được tạo ra. Chúng ta có thể sử dụng lệnh showmap để thấy được cấu hình mới này sẽ được omdiscd tạo ra. OpenMosix cung cấp một tập hợp các công cụ mà người quản trị có thể sử dụng để cấu hình và tinh chỉnh bó máy của OpenMosix. Những nhiệm vụ này có thể được thực hiện với các công cụ trong không gian của một người sử dụng (migrate, mon, mosctl, mosrun) hoặc thông qua giao tiện /proc/hpc. Điều quan trọng phải nhớ rằng cho tới phiên bản OpenMosix 2.4.16, giao diện này đã được gọi là /proc/mosix và rằng, kể từ phiên bản 2.4.17, nó đã được gọi là /proc/hpc.

Chúng ta bây giờ sẽ đưa ra một tóm tắt các công cụ cấu hình mà chúng chạy được trong không gian của một người sử dụng; đối với /proc/hpc hãy tham vấn các tham chiếu sau:

• migrate [PID] [OpenMosix ID]: gửi một yêu cầu chuyển đổi tới một tiến trình.

• Mon: là một màn hình với một giao diện văn bản chỉ các thông tin trên bó máy thông qua một đồ thị hình các thanh.

• Mosctl: là công cụ cấu hình của OpenMosix. Việc sử dụng các lựa chọn (stay, lstay, block, quiet, mfs, expel, bring, get-tune, getyard, getdecay), chúng ta có thể chỉ ra liệu các tiến trình có thể chuyển đổi được hay không, sử dụng của MFS, có được thông tin về tải, sự cân bằng tải...

• mosrun [h | OpenMosix ID | danh sách OpenMosix ID] lệnh [các đối số]: chạy một lệnh trong một nút xác định nào đó.

Trang 440/471

Page 441: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

11.3. Các siêu máy tính, điện toán lưới

Những đòi hỏi về điện toán là cần thiết cho các ứng dụng nhất định nào đó là quá lớn, yêu cầu hàng ngàn giờ có thể để chạy trong những môi trường bó máy. Những ứng dụng như vậy đã thúc đẩy tạo ra những máy tính ảo trên các mạng, các siêu máy tính hoặc các máy tính lưới. Công nghệ này đã làm cho có khả năng để kết nối các môi trường thực thi, các mạng tốc độ cao, các cơ sở dữ liệu, các dụng cụ..., được phân tán trong các vị trí địa lý khác nhau. Điều này làm cho có khả năng đạt được một sức mạnh xử lý có lẽ không thể trụ vững được về mặt kinh tế theo bất kỳ cách gì khác với những kết quả tuyệt vời. Những ví dụ về ứng dụng của chúng là các môi trường như mạng I-WAY (kết nối các siêu máy tính từ 17 nơi khác nhau) tại Bắc Mỹ, hoặc DataGrid, CrossGrid tại châu Âu hoặc IrisGrid tại Tây Ban Nha. Những siêu máy tính hoặc các máy tính lưới này có nhiều điểm chung với các hệ thống song song và phân tán (SPD), nhưng chúng cũng khác theo những khía cạnh quan trọng nhất định nào đó. Mặc dù chúng được kết nối qua các mạng, thì các mạng này có thể có những đặc tính khác nhau, dịch vụ không thể được đảm bảo và chúng sẽ được đặt trong những miền khác nhau. Mô hình và các giao diện lập trình phải là khác biệt hoàn toàn (so với mô hình của các hệ thống phân tán) và phù hợp cho điện toán hiệu năng cao. Như với SPD, các ứng dụng của siêu điện toán đòi hỏi một kế hoạch giao tiếp truyền thông phải cung cấp được các mức hiệu năng được yêu cầu; nhưng việc đưa ra được bản chất tự nhiên năng động của chúng, các công cụ và kỹ thuật mới là cần thiết. Nói cách khác, trong khi siêu điện toán có thể được hình thành với nền tảng của các SPD, thì cần thiết phải tạo ra những công cụ mới, các cơ chế và kỹ thuật cho chúng. [Fos]

11.3.1. Các kiến trúc điện toán khác nhau

Nếu chỉ xem xét khía cạnh sức mạnh tính toán, thì có thể thấy có một loạt các giải pháp phụ thuộc vào kích cỡ và đặc tính của vấn đề. Trước hết, có thể nghĩ về một siêu máy tính (máy chủ) nhưng điều này có các vấn đề như là sự thiếu hụt về tính mở rộng về phạm vi, trang thiết bị và duy trì đắt đỏ, các vấn đề về độ tin cậy và tính toán lúc cao điểm (rất nhiều khi các tài nguyên không tận dụng được). Giải pháp lựa chọn kinh tế là một tập hợp các máy tính được kết nối nội bộ bằng một mạng hiệu năng cao (Ethernet tốc độ cao - LAN - hoặc Myrinet – SAN), có thể từ bó các trạm chuyên dụng cho điện toán song song/phân tán (SPD) với một mức hiệu năng rất cao (3 tới 15 lần về tỷ lệ giá thành/hiệu năng). Nhưng những hệ thống này có những bất tiện như giá thành cao về các giao tiếp, duy trì, mô hình lập trình … Tuy nhiên, đây là một giải pháp tuyệt vời cho điện toán mức trung bình hoặc thời gian cao HTC (high time computing). Một khái niệm thú vị nữa là điện toán intranet, có nghĩa là việc sử dụng thiết bị của một mạng cục bộ (ví dụ, một mạng lớp C) để chạy các công việc kế tiếp hoặc song song nhau với sự trợ giúp của một công cụ quản trị và tải; Nói cách khác, đây là một bước lùi từ một bó máy và nó cho phép khai thác sức mạnh tính toán trong một mạng cục bộ lớn với việc đảm bảo những ưu điểm, khi chúng ta gia tăng được tính hiệu quả của việc sử dụng các tài nguyên (các chu kỳ CPU giá thành thấp), cải thiện tính mở rộng về phạm vi và sự quản trị là không quá phức tạp. Đối với những dạng giải pháp này, có các phần mềm như Sun Grid Engine của Sun Microsystems [Sun], Condor của Đại học Wisconsin (cả 2 đều là tự do) [Uni] hoặc LSF của Platform Computing (thương mại) [Pla].

Trang 441/471

Page 442: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Lựa chọn về điện toán intranet thể hiện một số sự bất tiện như tính không thể quản lý các tài nguyên bên ngoài miền quản trị. Một số công cụ được nhắc tới ở trên (Condor, LSF hoặc SGE) cho phép sự hợp tác giữa các nút phụ khác nhau của hệ thống, nhưng tất cả chúng phải có cùng cấu trúc quản trị, cùng các chính sách an ninh và cùng triết lý về quản trị tài nguyên. Mặc dù đây là một bước tiến về khái niệm sức mạnh tính toán giá thành thấp, thì chúng chỉ quản lý CPU và không quản lý các dữ liệu được chia sẻ giữa các nút phụ đó. Ngoài ra, các giao thức và giao diện là sở hữu độc quyền và chúng không dựa trên một chuẩn mở, không thể hoàn trả lại các tài nguyên khi chúng không hoàn toàn được sử dụng và cũng không thể chia sẻ các tài nguyên với những tổ chức khác. [Beo, Ext, Die].

Sự gia tăng của các máy tính giữa 1986 và 2000 đã nhân lên 500 lần và các mạng tới 340,000 lần, nhưng dự đoán có thể chỉ ra rằng, giữa 2001 và 2010, các máy tính sẽ chỉ nhân lên 60 lần và các mạng là 4,000 lần. Điều này chỉ ra rằng chuẩn của kiến trúc tiếp sau cho HPC: điện toán phân tán với Internet hoặc điện đoán lưới (GC) hoặc siêu điện toán.

Điện toán lưới là một công nghệ mới nổi lên, mục đích của nó là để chia sẻ các tài nguyên với Internet theo một cách thống nhất, trong suốt, an ninh, hiệu quả và tin cậy. Công nghệ này là bổ sung cho các công nghệ ở trước, trong đó nó cho phép sự kết nối nội bộ các tài nguyên trong các miền quản trị khác nhau trong khi vẫn tôn trọng các chính sách an ninh nội bộ của chúng và phần mềm quản lý tài nguyên của chúng trong intranet. Theo một trong những người tiền nhiệm của nó, Ian Foster, trong bài báo của ông “Lưới là gì? Một danh sách kiểm tra gồm 3 điểm” (2002), thì một lưới là hệ thống mà:

1) phối hợp các tài nguyên không tuân theo sự kiểm soát trung tâm,

2) sử dụng các giao thức và các giao diện chuẩn, mở, có mục đích chung,

3) để phân phối chất lượng không bình thường của dịch vụ.

Hình 3

Trong số những ưu điểm mà công nghệ mới này cung cấp, có thể nhắc tới sự cho thuê các tài nguyên, mà sự trả dần các tài nguyên của riêng, một số lượng lớn sức mạnh không cần phải đầu tư vào các tài nguyên và các cài đặt triển khai, sự hợp tác/chia sẻ giữa các cơ quan và các tổ chức thực tế...

Trang 442/471

Page 443: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Hình 3 đưa ra một bức tranh về tất cả những khái niệm này. [Llo]

11.3.2. Globus

Dự án Globus [Gloa, Glob] là một trong những biểu tượng theo nghĩa này, vì đây là người đi tiên phong trong sự phát triển một bộ công cụ cho siêu máy tính hoặc điện toán lưới và đưa ra những tiến bộ đáng kể trong những lĩnh vực giao tiếp truyền thông, thông tin, vị trí và việc lên kế hoạch các tài nguyên, sự xác thực và truy cập các dữ liệu. Nói một cách khác, Globus làm cho có khả năng chia sẻ các tài nguyên nằm trong các miền quản trị khác nhau, với các chính sách quản lý tài nguyên và an ninh khác nhau và nó được tạo ra bằng một gói phần mềm của phần mềm trung gian, đưa vào một tập hợp các thư viện, các dịch vụ và các giao diện lập trình ứng dụng API.

Công cụ globus (bộ công cụ Globus) được hình thành từ một tập hợp các module với các giao diện được xác định tốt cho việc tương tác với các module và/hoặc các dịch vụ khác. Các chức năng của các module này là như sau:

• Vị trí và sự phân bổ tài nguyên; điều này cho phép nói cho các ứng dụng những yêu cầu nào và những tài nguyên nào chúng ta cần, biết rằng một ứng dụng không thể biết được các tài nguyên trong đó nó sẽ chạy được đặt ở đâu.

• Các giao tiếp truyền thông; điều này đưa ra các cơ chế giao tiếp truyền thông cơ bản, đại diện cho một khía cạnh quan trọng của hệ thống, khi chúng phải cho phép một loạt các phương thức đối với các ứng dụng để sử dụng một cách hiệu quả. Những phương thức này bao gồm việc truyền qua các thông điệp, các lời gọi thủ tục ở xa (RPC), bộ nhớ phân tán được chia sẻ, dòng dữ liệu và đa truyền phát multicast (dựa trên các dòng stream).

• Dịch vụ thông tin nguồn thống nhất (Unified resource information service) đưa ra một cơ chế thống nhất cho việc giành được thông tin trong thời gian thực như đối với tình trạng và cấu trúc của siêu hệ thống nơi mà các ứng dụng đang chạy.

• Giao diện xác thực; đây là các cơ chế xác thực cơ bản cho việc xác minh tính đồng nhất của những người sử dụng và các tài nguyên. Module này sinh ra lớp ở cao hơn, sau đó sẽ sử dụng các dịch vụ cục bộ cho việc truy cập các dữ liệu và tài nguyên của hệ thống.

• Sự tạo ra và thực thi các tiến trình; điều này được sử dụng để khởi động sự thực thi của các nhiệm vụ đã được phân bổ với các tài nguyên, việc truyền các thông số thực thi và việc kiểm soát chúng cho tới khi sự thực thi kết thúc.

• Truy cập dữ liệu; điều này phải cung cấp sự truy cập tốc độ cao tới các dữ liệu được lưu trữ trong các tệp. Đối với DB, nó sử dụng công nghệ truy cập phân tán hoặc thông qua CORBA và có khả năng đạt được các mức hiệu năng tối ưu khi nó truy cập các hệ thống tệp song song hoặc các thiết bị vào/ra thông qua mạng, như hệ thống lưu trữ hiệu năng cao HPSS (high performance storage system).

Trang 443/471

Page 444: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Cấu trúc nội bộ của Globus có thể thấy được theo hình sau (http://www.globus.org/toolkit/about.html). Hình 4

11.3.3. Phần mềm, cài đặt và quản trị Globus

Website của “Liên minh Globus” là http://www.globus.org [Gloa]. Ở đây có thể thấy mã nguồn và tất cả các tài liệu mà có thể cần thiết để biến intranet của chúng ta thành một phần của một lưới. Là một phần của một lưới có nghĩa là việc đồng ý và việc triển khai các chính sách của tất cả các cơ quan và các công ty mà là một phần của lưới đó. Có một loạt những sáng kiến khác nhau dựa trên Globus tại Tây Ban Nha. Một trong những sáng kiến đó là IrisGrid [Llo], chúng ta có thể tham gia nếu muốn tận dụng ưu thế những lợi ích của công nghệ này. Xem http://www.rediris.es/irisgrid/ để có thêm thông tin.

Bước đầu tiên cho việc thiết lập Globus là có phần mềm (hiện hành Globus Toolkit 4) được gọi là GT4. Phần mềm này triển khai các dịch vụ với một sự kết hợp của C và Java (các thành phần C chỉ có thể được chạy trong các nền tảng UNIX, GNU/Linux, nói chung như vậy), nó giải thích vì sao phần mềm này được chia thành các dịch vụ được đưa ra. Các gói nhất định nào đó, hoặc các gói khác, phải được cài đặt, phụ thuộc vào hệ thống chúng ta muốn thiết lập.

Một chỉ dẫn cài đặt nhanh, với những yêu cầu hệ thống, sự tải về và các chứng chỉ có thể thấy tại http://www.globus.org/toolkit/docs/4.0/admin/docbook/quickstart.html. Để tóm tắt, các bước sau phải được thực hiện:

1. Đòi hỏi phải có trước: xác minh phần mềm và các phiên bản (zlib, j2se, vô hiệu hóa gcj, apache,

Trang 444/471

Page 445: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

C/C++, tar, make, sed, perl, sudo, postgres, iodbc)

2. Tạo người sử dụng, tải về và biên dịch GT4

3. Khởi động an ninh hệ thống (các chứng chỉ)

4. Khởi động GridFTP

5. Khởi động nơi chứa các dịch vụ web (Webservice Container)

6. Cấu hình trình truyền tệp tin cậy RFT (Reliable File Transfer)

7. Khởi động GRAM (quản lý công việc)

8. Khởi động máy thứ 2.

9. Khởi động theo tôn ti trật tự của dịch vụ đánh chỉ số (Index Service)

10. Khởi động bó máy

11. Thiết lập độ tin cậy của CA chéo (Cross - CA Trust)

Như bạn quan sát thấy, việc cài đặt và thiết lập GT4 không phải là một nhiệm vụ dễ dàng, nhưng điều này được minh chứng nếu chúng ta muốn hợp tác một bó máy trong một lưới hoặc nếu chúng ta muốn thực hiện những thí nghiệm (được khuyến cáo một mức bổ sung về sự nhiệt thành và kiên nhẫn) để đánh giá cao sức mạnh thực sự của GT4. Để có thông tin chi tiết hơn về việc cài đặt GT4, xin hãy xem: http://www.globus.org/toolkit/docs/4.0/admin/docbook/ .

Trang 445/471

Page 446: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Các hoạt động

1) Cài đặt PVM trên một nút và chạy chương trình master.c và client.c đưa ra như những ví dụ và quan sát hành vi của chúng thông qua xpmv.

2) Cài đặt và cấu hình Mpich trên một nút; biên dịch và chạy chương trình cpi.c.

3) Cài đặt và cấu hình LAM-MPI trên một nút; biên dịch và chạy chương trình cpi.c và quan sát hành vi thông qua xmpi.

Trang 446/471

Page 447: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Thư mục tham khảo

Các nguồn tham khảo và các thông tin khác

[Debc, lbi, Mou01]

Lam-mpi: http://www.lam-mpi.org/

System-config-cluster (FC): http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Cluster_Administration/index.html

OpenMosix: http://openmosix.sourceforge.net/

Howto Openmosix: http://howto.x-tend.be/openMosix-HOWTO/

Globus4: http://www.globus.org/toolkit/docs/4.0/

Thư viện tham khảo

[Aiv02] Tigran Aivazian (2002). “Linux Kernel 2.4 Internals”. The Linux Documentation Project (guias).

[Ano99] Anonymous. Maximum Linux Security: A Hacker's Guide to Protecting

[Apa] Apache2 + SSL <http://www.debian-administration/articles/349>

[Apab] Apache2 + WebDav <http://www.debian-administration.org/articles/285>

[Apac] Apache2 + Subversion <http://www.debian-administration.org>

[Ar01] Jonathan Arcomano. “Kernel Analysis-HOWTO”. The Linux Documentation Project.

[Aus] CERT Australia. “Australian CERT” <http://www.auscert.org.au/>

[Bac86] Maurice J. Bach (1986). The Design of the UNIX Operating System. Prentice Halt.

[Bai03] Edward C. Bailey (2003). RedHat Maximum RPM. <http://www.redhat.com/docs/books/max-rpm/index.html>

[Ban] Tobby Banerjee. “Linux Installation Strategies HOWTO”. The Linux Documentation Project.

[Bar] Slashdot. Slashdot site. <http://barrapunto.com>

[Bas] Mike G. “BASH Programming – Introduction HOWTO”. The Linux Documentation Project.

[Beo] Beowulf.org. Beowulf Website. <http://www.beowulf.org>

[Bor] Matthew Borowski (2000). “FTP”. The Linux Documentation Project.

[Bro] Scott Bronson (2001). “VPN PPP-SSH”. The Linux Documentation Project.

[Bul] Bulma. “Bulma Linux User Group”. <http://bulmalug.net>

Trang 447/471

Page 448: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[Bur02] Hal Burgiss (2002). “Security QuickStart HOWTO for Linux”. The Linux Documentation Project.

[Cac] Monitoring with Cacti. <http://cacti.net>

[Cdg] Cedega. (Environment for portability of GNU/Linux games) <http://www.transgaming.com>

[Ced] Cederqvist. “Version Management with CVS”. <http://www.cvshome.org>

[Cen] The Community ENTerprise Operating System <http://www.centos.org>

[CERa] CERT, “CERT site” <http://www.cert.org>

[CERb] CERT (2003), “CERT vulnerabilities”. <http://www.cert.org/nav/index_red.html>

[CERc] Cervisia. “Cervisia interface for CVS” <http://cervisia.sourceforge.net>

[Cis00] Cisco (2000). “TCP/IP White Paper”. <http://www.cisco.com>

[Com01] Douglas Comer (2001). TCP/IP Basic principles, protocols and architecture. Prentice Hall.

[Cool] Mendel Cooper (2006). “Advanced bashScripting Guide”. The Linux Documentation Project (guias).

[CVS] CVShome.org. “CVS Home”. <http://www.cvshome.org>

[Dbo] Marco Cesati; Daniel Bovet (2006). Understanding the Linux Kernel (3.ed.). O'Relly.

[Deb] Debian. “Debian Security Site” <http://www.debian.org/security/>

[Deb04] Debian (2004). “APT-HOWTO”. <http://www.debian.org/doc/manuals/apt-howto/index.en.html>

[Deba] Debian. “Free Software vs Open Software” <http://www.debian.org/intro/free.es.html>

[Debb] Communidad Debian. “Debian Distribution”. <http://www.debian.org>

[Dieb] Hank Dietz (2004). “Linux Parallel Processing”. The Linux Documentation Project.

[Dis] Distrowatch. “Available Linux distributions”. <http://www.distrowatch.com>

[Dgn] the Dot Gnu Project. <http://www.gnu.org/software/dotgnu/>

[DNS] Start up a DNS Server. <http://tldp.org/HOWTO/DNS-HOWTO-7.html>

[Dra] Joshua Drake (1999). “Linux Networking”. The Linux Documentation Project.

[DSL] Digital Line Subscriber (2002). The Linux Documentation Project.

[Buy] Kris Buytaert and others (2002). “The OpenMosix”. The Linux Documentation Project.

[Ext] ExxtremeLinux.org. “Extreme Linux Web site” <http://www.extremelinux.org>

[Exim] Exim. Mail service (MTA). <http://www.exim.org/docs.html>

[FBI] FBI. “FBI Brigade for cybercrime”. <http://www.emergency.com/fbi-nccs.htm>

[Fed] the Fedora Project. <http://fedoraproject.org>

Trang 448/471

Page 449: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[Fen02] Kevin Fenzi. “Linux security HOWTO”. The Linux Documentation Project.

[Fos] Ian Foster; Carl Kesselmany (2003). “Globus: A Metacomputing Infrastructure Toolkit”. <http://www.globus.org7gt>

[Fre] Freshmeat. “Freshmeat site”. <http://freshmeat.org>

[Fri02] Aleen Frisch (2002). Essential System Administration. O'Reilly.

[Fry] Monitoring with Frysk. <http://sources.redhat.com/frysk/>

[FSF] FSF. “Free Software Foundation and GNU Project”. <http://www.gnu.org>

[Gar98] Bdale Garbee (1998). TCP/IP Tutorial. N3EUA Inc.

[Gloa] Globus. GT4. “Admin Guide Installation” and “Admin Guide Configuration”. <http://www.globus.org>

[Glob] Globus. “User's Guide Core Framework Globus Toolkit”, <http://www.globus.org>

[Gt] Dirk Allaert Grant Taylor. “The Linux Printing HOWTO”. The Linux Documentation Project.

[GT4] Quick Guide. <http://www.globus.org/toolkit/docs/4.0/admin/docbook/quickstart.html>

[Gnu] Gnupg.org. GnuPG Website. <http://www.gnupg.org/>

[Gon] Guido Gonzato. “From DOS/Windows to Linux HOWTO”. The Linux Documentation Project.

[Gor] Paul Gortmaker (2003). “The Linux BootPrompt HOWTO”. The Linux Documentation Project.

[Gre] Mark Grennan. “Firewall and Proxy Server HOWTO”. The Linux Documentation Project.

[Hat03] Red Hat (2003). “Firewalls” en Red Hat 9 manual. <http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/security-guide/chfw.html#S1-FIREWALL-IPT>

[Hatb] Red Hat (2003). “Red Hat 9 Security Guide”. <http://www.redhad.com/docs/manuals/linux/RHL-9-Manual/security-guide/>

[Hatc] Red Hat (2003). “Red Hat Security Site”. <http://www.redhad.com/security/>

[Hatd] Red Hat (2003). Use of GPG signatures in Red Hat. <http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/custom-guide/chgnupg.html>

[Hen03] Bryan Henderson. “Linux Loadable Kernel Module HOWTO”. The Linux Documentation Project.

[Him01] Pekka Hinmanen (2001). Hacker ethics and the spirit of the information age. Destination.

[Hin00] Martin Hinner. “Filesystems HOWTO”. The Linux Documentation Project.

[His] HispaLinux. “Linux Hispanic Community”. <http://www.hispalinux.es>

[IET] IETF. “Request For Comment Repository developed by the Internet Engineering Task Force (IETF) in the Network Information Center (NIC)”. <http://www.cis.ohio-state.edu/rfc/>

[Ian] Iana. “List of TCP/IP ports”. <http://www.iana.org/assignments/port-numbers>

Trang 449/471

Page 450: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[IP] Routing with the ip tool. <ftp://ftp.inr.ac.ru/ip_routing/>

[ipw] Firmware for wireless cards IPW2200. <http://ipw2200.sourceforge.net/firmware.php>

[Ibi] Ibiblio.org (2003). “The Linux Documentation Center”. <http://www.ibiblio.org/pub/Linux/docs/HOWTO/>

[Incb] Incidents.org. “vulnerabilities Incidents”. <http://isc.incidents.org>

[Insa] Insecure.org. “Insecure.org site”. <http://www.insecure.org>

[Insb] Insecure.org (2003). “Nmap”. <http://www.insecure.org/nmap/index.html>

[Log] LogCheck. <http://logcheck.org/>

[LWP] LWP: Apache+MySQL+PHP. <http://www.lawebdelprogramador.com/temas/tema_stablephpapachemysql.php>

[Joh98] Michael K.Johnson (1998). “Linux Information Sheet”. The Linux Documentation Project.

[Jou] Linux Journal. Linux Journal [Linux Magazine]. <http://www.linuxjournal.com>

[Kan] Ivan Kanis. “Multiboot with GRUB Mini-HOWTO”. The Linux Documentation Project.

[Kat] Jonathan Katz. “Linux + Windows HOWTO”. The Linux Documentation Project.

[KD00] Olaf Kirch; Terry Dawson. Linux Network Administrator's Guide. O'Reilly Associates. And how e-book (free) in Free Software Foundation, Inc., 2000. <http://www.tldp.org/guides.html>

[Ker02] Kernelhacking.org (2002). “Kernel Hacking Doc Project”. <http://www.kernelhacking.org>

[Kera] Kernelnewbies.org. “Kernel Newbies”. <http://www.kernelnewbies.org>

[Kerb] Kernel.org. “Linux Kernel Archives”. <http://www.kernel.org>

[Kie] Robert Kiesling (1997). “The RCS (Revision Control System)”. The Linux Documentation Project.

[Knp] Knoppix Distribution. <http://knoppix.org>

[Koe] Kristian Koehntopp. “Linux Partition HOWTO”. The Linux Documentation Project.

[Kuk] Thorsten Kukuk (2003). “The Linux NIS (YP)/NYS/NIS+”. The Linux Documentation Project.

[Lam] LamMPl.org. “LAM (Local Area Multicomputer”. <http://www.lam-mpi.org>

[Law07] David Lawyer (2007). “Linux Modem”. The Linux Documentation Project.

[Lev02] Bozidar Levi (2002). UNIX administration. CRC Press.

[Lev] Eric Levenez. “UNIX History”. <http://www.levenez.com/unix>

[Lin03b] FHS Standard, 2003. <http://www.pathname.com/fhs>

[Linc] Linux Standards Base project. <http://www.linux-foundation.org/en/LSB>

[Line] Linuxsecurity.com. Linux Security Reference Card. <http://www.linuxsecurity.com/docs/QuickRefCard.pdf>

Trang 450/471

Page 451: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[lkm] lkml. Linux Kernel Mailing List. <http://www.tux.org/lkml>

[Llo] Ignacio Martin Llorente. State of Grid Technology and IrisGrid Initiative. <http://www.rediris.es/irisgrid>

[Lan] Nicolai Langfeldt; Jamie Norrish (2001). “DNS”. The Linux Documentation Project.

[Log] Logcheck. “Logcheck Website”. <http://logcheck.org>

[LPD] LPD. The Linux Documentation Project.<http://www.tldp.org>

[Mag] Linux Magazine. Linux Magazine. <http://www.linux-mag.com/>

[Maj96] Amir Majidimehr (1996). Optimizing UNIX for Performance. Prentice Hll.

[Mal96] Fred Mallett (1996). TCP/IP Tutorial. FAME Computer Education.

[Mal07] Luiz Ernesto Pinheiro Malère (2007). “Ldap”. The Linux Documentation Project.

[Miq] Miquel, S. “NIS Debian”. On Debian Woody, /usr/doc/nis/nis.debian.howto.

[Moi] Moin Moin <http://moinmoin.wikiwikiweb.de/MoinMoinPackages/DebianLinux>

[Mon] Monit. <http://www.tildeslash.com/monit/>

[Monb] Monitoring with Munin and monit. <http://www.howtoforge.com/server_monitoring_monit_munin>

[Monc] Monitoring with SNMP and MRTG. <http://www.linuxhomenetworking.com/wiki/index.php/> Quick_HOWTO_:_Ch22:_Monitoring_Server_Performance

[Mono] Mono project. <http://www.mono-project.com/Main_Page>

[Mor03] Daniel Morill (2003). Configuration of Linux systems. Anaya Multimedia.

[Mou01] Gerhard Mourani (2001). Securing and Optimizing Linux: The Ultimate Solution. Open Network Architecture, Inc.

[Mun] Munin. <http://munin.projects.linpro.no/>

[MRTG] MRTG. <http://oss.oetiker.ch/mrtg/>

[Mur] Gary Lawrence Murphy. Kernel Book Project. <http://kernelbook.sourceforge.net>

[Mutt] Mutt mail client. <http://www.mutt.org>

[Mys] Mysql. “Reference Manual”. <http://www.mysql.com/>

[MysqlA] Mysql Administration. <http://www.mysql.com/products/tools/administrator/>

[Nes] Nessus.org. “Nessus”. <http://www.nessus.org>

[Net] Netfilter.org. Netfilter/IPtables Project. <http://www.netfilter.org>

[Neu] Christopher Neufeld. “Setting Up Your New Domain Mini-HOWTO”. The Linux Documentation Project.

[New] Newsforge. “Newsforge site”. <http://newsforge.org>

Trang 451/471

Page 452: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[NIS] Setting up a NIS Server. <http://tldp.org/HOWTO/NIS-HOWTO/verification.html>

[NSAa] NSA. “NIST site”. <http://csrc.nist.gov/>

[NSAb] NSA (2003). “Security Enhanced Linux”. <http://www.nsa.gov/selinux>

[Nt3] NTFS-3g Project: NTFS – 3G Read/Write Driver. <http://www.ntfs-3g.org/>

[Oke] Greg O'Keefe. “From Power Up To bash Prompt HOWTO”. The Linux Documentation Project.

[Open] OpenVPN, Virtual private network. <http://openvpn.net/howto.html>

[OpenM] OpenMosix. <http://openmosix.sourceforge.net/>

[OpenMb] Howto Openmosix. <http://howto.x-tend.be/openMosix-HOWTO/>

[OSDa] OSDI. “Open Source Development Laboratories”.

[OSDb] OSDN. “Open Source Development Network”. <http://osdn.com>

[OSIa] OSI. “List of Open Source licenses”. <http://www.opensource.org/licenses/index.html>

[OSIb] OSI (2003). “Open Source Definition”. <http://www.opensource.org/docs/definition.php>

[OSIc] OSI (2003). “Open Source Initiative”. <http://www.opensource.org>

[Pen] Javier Fernandez – Sanguino Pena (2007). “Securing Debian Manual”. <http://www.debian.org/doc/manuals/securing-debian-howto/>

[Pla] Plataform. “LSF”. <http://www.platform.com>

[Posa] PostgreSQL.org. “PostgreSQL Administrator's Guide”. <http://www.postgresql.org/docs/>

[Per] Performance Monitoring Tools for Linux. <http://www.linuxjournal.com/article.php?sid=2396>

[Pose] PostgreSQL. “PostgreSQL Web site”. <http://www.postgresql.org>

[PPP] Linux PPP (2000). “Corwin Williams, Joshua Drake and Robert Hart”. The Linux Documentation Project.

[Pra03] Joseh Pranevich (2003). “The Wonderful World of Linux 2.6”. <http://www.kniggit.net/wwol26.html>

[Pri] Steven Pritchard. “Linux Hardware HOWTO”. The Linux Documentation Project.

[Pro] GNU Project. “Bastille”. <http://bastille-linux.sourceforge.net/>

[Prob] Mpich Project. “MPI”. <http://www.mcs.anl.gov:80/mpi/>

[Proc] Mpich Project. “Mpich MPI Freeware”. <http://www-unix.mcs.anl.gov/mpi/>

[Prod] OpenMosic Project. “OpenMosix”. <http://openMosic.sourceforge.net/>

[Proe] PVM Project. “PVM Web site”. <http://www.csm.oml.gov/pvm/>

[Proc] ProcMail. <http://www.debian-administration.org/articles/242>

[ProX] Proxy Cache. <http://www.squid-cache.org/>

Trang 452/471

Page 453: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[ProT] transparent Proxy. <http://tldp.org/HOWTO/TransparentProxy-1.html>

[Prof] ProFTP: FTP file server. <http://www.debian-administration.org/articles/228>

[PS02] Ricardo Enriqez Pio Sierra (2002). Open Source. Anaya Multimedia.

[PurF] PureFTP: FTP file server. <http://www.debian-administration.org/articles/383>

[Qui01] Ellie Quigley (2001). Linux shells by Examples. Prentice Hall.

[Ran] David Ranch (2005). “Linux IP Masquerade” and John Tapsell. Masquerading Made Simple. The Linux Documentation Project.

[Ray98] Eric Raymond (1998). “The cathedral and the bazaar”. <http://es.tldp.org/Otros/catedral-bazar/cathedral-es-paper-00.html>

[Ray02a] Eric Raymond (2002). “UNIX and Internet Fundamentals”. The Linux Documentation Project.

[Rayb] Eric Steven Raymond. “The Linux Installation HOWTO”. The Linux Documentation Project.

[Rad] Jacek Radajewski; Douglas Eadline (2002). “Beowulf: Installation and Administration”. In: Kurt Swendson. Beowulf HOWTO (tlpd). <http://www.sci.usq.edu.au/staff/jacek/beowulf>

[Red] Optimisation of Linux servers. <http://people.redhat.com/alikins/system_tuning.html>

[Redb] System-config-cluster (FC). <http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Cluster_Administration/index.htm>

[Redh] Red Hat Inc. “Red Hat Distribution”. <http://www.redhat.com>

[Rid] Daniel Lopez Ridruejo (2000). “The Linux Networkingn Overview”. The Linux Documentation Project.

[Rus] Rusty Russell. “Linux IPCHAINS”. The Linux Documentation Project.

[SM02] Michael Schwartz and other (2002). Multitool Linux-Practical Uses for Open Source Software. Addison Wesley.

[Sal94] Peter H. Salus (1994). “25th anniversary of UNIX” (no. 1, November). Byte Spain.

[Sam] Samba Project. <http://samba.org>

[Sama] Samba HOWTO and Reference Guide (Chapter Domain Control). <http://smba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html>

[Samb] Samba Guide (Chapter Adding Domain member Servers and Clients). <http://samba.org/samba/docs/man/Samba-Guide/unixclients.html>

[San] Sans. “Top20 vulnerabilities”. <http://www.sans.org/top20/>

[Sci] Scientific Linux. <http://www.scientificlinux.org>

[Sec] Andres Seco (2000). “Diald”. The Linux Documentation Project.

[Sei02] Kurt Seifried (2002). “Securing Linux, Step by Step”.

Trang 453/471

Page 454: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

<http://seifried.org/security/os/linux/20020324-securing-linux-step-by-step.html>

[Skoe] Miroslav Skoric. “LILO mini-HOWTO”. The Linux Documentation Project.

[Skob] Miroslav Skoric. “Linux + WindowsNT mini-HOWTO”. The Linux Documentation Project.

[Sla] Slashdot. “Slashdot site”. <http://slashdot.org>

[Smb] Wikipedia entry for “Servere Message Block”. <http://en.wikipedia.org/wiki/Server_Message_Block>

[Smi02] Rod Smith (2002). Advanced Linux Networking. Addison Wesley.

[Sno] Snort.org. Snort. <http://www.snort.org>

[Sou] Sourceforge. “Sourceforge site”. <http://sourecforge.org>

[Squ] Squid proxy server. <http://www.squid-cache.org/>

[Sta02] Richard Stallman (2002). “Discussion by Richard Stallman on relationship between GNU and Linux”. <http://www.gnu.org/gnu/linux-and-gnu.html>

[Stu] Michael Stutz. “The Linux Cookbook: Tips and Techniques for Everyday Use”. The Linux Documentation Project (guias).

[Ste07] Steve French, Linux CIFS Client guide. <http://us1.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf>

[Stei] tony Steidler-Dennison (2005). Your Linux Server and Network. Sams.

[Sub] Subversion. <http://subversion.tigris.org>

[Subb] Control of versions with Subversion. Free Book. <http://svnbook.red-bean.com/index.es.html>

*[Sun02] Rahul Sundaram (2002). “The dosemu HOWTO”. The Linux Documentation Project.

[Sun] Sun. “Sun Grid Engine”. <http://www.sun.com/software/gridware/>

[Tan87] Andrew Tanenbaum (1987). Operating system: Design and Implementation. Prentice Hall.

[Tan06] Andrew Tanenbaum; Albert S. Woodhull (2006). The Minix Book: Operating Systems Design and Implementation (3rd ed.). Prentice Hall.

[Tkc] Tkcvs (2003). “Tkcvs interface for CVS”. <http://www.tkcvs.org> <http://www.twobarleycorns.net/tkcvs.html>

[Tri] Tripwire.com. Tripwire Web Site. <http://www.tripwire.com/>

[Tum02] Enkh Tumenbayar (2002). “Linux SMP HOWTO”. The Linux Documentation Project.

[Ubn] Ubuntu Distribution. <http://www.ubuntu.com>

[Uni] Wisconsin University (2003). Condor Web Site. <http://www.cs.wisc.edu/condor>

[USA] Dep. Justice USA. “Division of the US Justice Department for cybercrime”. <http://www.usdoj.gov/cariminal/cybercrime>

Trang 454/471

Page 455: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

[Vah96] Uresh Vahalia (1996). UNIX Internals: The New Frontiers. Prentice Hall.

[Vas] Alavoor Vasudevan (2000). “Modem-Dialup-NT”. The Linux Documentation Project.

[Vasa] Alavoor Vasudevan (2003). “CVS-RCS (Source Code Control System)”. The Linux Documentation Project.

[Vasb] Alavoor Vasudevan. “The Linux Kernel HOWTO”. The Linux Documentation Project.

[Wm02] Matt Welsh and others (2002). Running Linux 4th edition. O'Reilly.

[War] Ian Ward. “Debian and Windows Shared Printing mini-HOWTO”. The Linux Documentation Project.

[Web] Webmin. Tool for administrating Linux systems. <http://www.webmin.com/>

[Wil02] Matthew D. Wilson (2002). “VPN”. The Linux Documentation Project.

[Win] Wine Project. <http://www.winehq.com>

[Wir] WireShark. <http://www.wireshark.org/download.html>

[Woo] David Wood. “SMB HOWTO”. The Linux Documentation Project.

[Xin] Xinetd Web Site. <http://www.xinetd.org>

[Zan] Renzo Zanelli. Win95 + WinNT + Linux multiboot using LILOmini-HOWTO. The Linux Documentation Project.

Trang 455/471

Page 456: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Giấy phép tài liệu tự do GNU

Phiên bản 1.2, tháng 11/2002

Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

Mỗi người được phép để sao chép và phân phối các bản sao y hệt của tài liệu giấy phép này, nhưng việc thay đổi nó là không được phép.

0. Lời nói đầu

Mục đích của Giấy phép này là để làm ra một sách chỉ dẫn, sách, hoặc tài liệu khác hữu dụng về chức năng “tự do” theo nghĩa của sự tự do: để đảm bảo cho mỗi người sự tự do có hiệu quả để sao chép và phân phối nó, có hoặc không có việc sửa đổi nó, hoặc một cách thương mại hoặc không thương mại. Thứ 2, Giấy phép này giữ lại cho tác giả và người xuất bản một con đường để có được sự tin cậy cho công việc của họ, trong khi không được coi là có trách nhiệm cho những sửa đổi được những người khác thực hiện.

Giấy phép này là một dạng “copyleft”, có nghĩa là những công việc dẫn xuất của tài liệu này bản thân chúng phải là tự do theo cùng nghĩa này. Những bổ trợ cho Giấy phép Công cộng Chung GNU (GNU GPL), là một giấy phép copyleft được thiết kế cho phần mềm tự do (PMTD). Chúng tôi đã thiết kế Giấy phép này để sử dụng nó cho những sách chỉ dẫn cho PMTD, vì PMTD cần tài liệu tự do: một chương trình tự do phải đi với các sách chỉ dẫn cung cấp cùng những quyền tự do y hệt mà phần mềm có. Nhưng Giấy phép này không bị hạn chế đối với các sách chỉ dẫn phần mềm; nó có thể được sử dụng cho bất kỳ công việc văn bản nào, bất chấp vấn đề về chủ đề hoặc bất chấp nó được xuất bản như một sách được in. Chúng tôi khuyến cáo Giấy phép này một cách thực tế cho các công việc mà mục đích của chúng là chỉ dẫn hoặc tham chiếu.

1. Tính có thể áp dụng được và những định nghĩa

Giấy phép này áp dụng cho bất kỳ sách chỉ dẫn hoặc công việc nào khác, trong bất kỳ vật trung gian nào, chứa một lưu ý được người giữa bản quyền đặt ra, nói nó có thể được phân phối theo những điều khoản của Giấy phép này. Một lưu ý như vậy trao một giấy phép toàn cầu, miễn phí bản quyền, không hạn chế về thời gian, để sử dụng công việc đó theo những điều kiện được nêu ở đây. “Tài liệu”, bên dưới, tham chiếu tới bất kỳ sách hướng dẫn hoặc công việc nào như vậy. Bất kỳ thành viên nào của công chúng là một người nhận được giấy phép, và được gọi như là “Bạn'. Bạn chấp nhận giấy phép nếu bạn sao chép, sửa đổi hoặc phân phối công việc theo một cách thức đòi hỏi quyền theo luật bản quyền.

Một “Phiên bản Được sửa đổi” của một Tài liệu có nghĩa là bất kỳ công việc nào chứa Tài liệu hoặc một phần của nó, hoặc được sao chép y nguyên, hoặc với những sửa đổi và/hoặc được dịch sang ngôn ngữ khác.

Một “Phần Hai” là một phụ lục được đặt tên hoặc một phần vấn đề trước của Tài liệu, hoàn toàn làm

Trang 456/471

Page 457: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

việc trong mối quan hệ với những người xuất bản hoặc các tác giả của Tài liệu về toàn bộ mục đích của Tài liệu (hoặc các vấn đề có liên quan) và không chứa đựng điều gì có thể rơi trực tiếp vào bên trong toàn bộ mục đích đó. (Vì thế, nếu Tài liệu là một phần của một cuốn sách về toán học, thì một Phần Hai có thể không giải thích gì về toán học). Mối quan hệ có thể là một vấn đề kết nối lịch sử với mục đích hoặc với những vấn đề có liên quan, hoặc quan điểm về pháp lý, thương mại, triết học, đạo đức hoặc chính trị về chúng.

“Những Phần Không đổi” là những Phần hai nhất định nào đó mà những đầu đề của nó được chỉ định, như là những gì của các Phần Không đổi, trong lưu ý, nói rằng Tài liệu được tung ra theo Giấy phép này. Nếu một phần không hợp với định nghĩa ở trên của Phần Hai thì nó không được phép được chỉ định như Phần Không đổi. Tài liệu có thể không chứa các Phần Không đổi nào. Nếu Tài liệu không xác định bất kỳ các Phần Không đổi nào thì nó là không có.

“Văn bản Bìa” là những đoạn văn bản ngắn nhất định nào đó được liệt kê, như Văn bản Bìa Trước hoặc Văn bản Bìa Sau, trong một lưu ý nói rằng Tài liệu được tung ra theo Giấy phép này. Một Văn bản Bìa Trước có thể nhiều nhất 5 từ, và một Văn bản Bìa Sau có thể nhiều nhất 25 từ.

Một bản sao “Minh bạch” của Tài liệu có nghĩa là một bản sao mà máy có thể đọc được, được đại diện trong một định dạng mà đặc tả của nó là sẵn sàng cho công chúng nói chung, phù hợp cho việc rà soát lại tài liệu một cách trung thực với những trình soạn thảo văn bản thông thường hoặc (đối với các ảnh được cấu tạo từ các điểm pixel) các chương trình đồ họa thông thường hoặc (đối với các bản vẽ) một số trình vẽ sẵn có một cách rộng rãi, và nó phù hợp cho đầu vào tới các trình định dạng văn bản hoặc cho việc dịch tự động đối với một loạt các định dạng phù hợp cho đầu vào tới các trình định dạng văn bản. Một bản sao được làm trong một định dạng tệp Minh bạch khác mà sự đánh dấu của nó, hoặc không có việc đánh dấu, được sắp xếp để cản trở hoặc làm nản lòng đối với sự sửa đổi tiếp theo bởi những người đọc là không Minh bạch. Một định dạng ảnh là không Minh bạch nếu sử dụng được cho bất kỳ số lượng có thực nào đó của văn bản. Một bản sao là không “Minh bạch” được gọi là “Tù mù”.

Những ví dụ về những định dạng phù hợp cho các bản sao Minh bạch bao gồm các mã ASCII mà không có đánh dấu, định dạng đầu vào của Texinfo, định dạng đầu vào của LaTeX, SGML hoặc XML có sử dụng một DTD sẵn sàng một cách công khai, và đơn giản tuân thủ chuẩn HTML, PostScript hoặc PDF được thiết kế cho sự sửa đổi của con người. Những ví dụ về các định dạng ảnh Minh bạch bao gồm PNG, XCF và JPG. Những định dạng Tù mù bao gồm các định dạng sở hữu độc quyền có thể đọc được và soạn thảo được chỉ bằng các trình soạn thảo văn bản sở hữu độc quyền, SGML hoặc XML mà đối với chúng DTD và/hoặc các công cụ xử lý sẽ thường không sẵn sàng, và HTML được máy tạo ra, PostScript hoặc PDF được một số trình soạn thảo văn bản chỉ cho những mục đích của đầu ra tạo ra.

“Trang Tiêu đề” có nghĩa là, đối với một cuốn sách được in, bản thân trang tiêu đề, cộng với các trang tiếp sau là cần thiết để giữ, một cách hợp pháp, tư liệu mà Giấy phép này đòi hỏi phải xuất hiện trên trang tiêu đề. Đối với những công việc ở các định dạng mà không có bất kỳ trang tiêu đề nào như vậy, thì “Trang Tiêu đề” có nghĩa là văn bản gần sự xuất hiện nổi bật nhất của tiêu đề công việc, đứng trước cả bắt đầu của phần thân của văn bản.

Một phần “Tiêu đề XYZ” có nghĩa là một đơn vị phụ được đặt tên của Tài liệu mà tiêu đề của nó hoặc là chính xác là XYZ hoặc có chứa XYZ trong ngoặc kép đi theo văn bản mà dịch XYZ sang ngôn ngữ khác. (Ở đây XYZ đứng cho một tên phần đặc biệt được nhắc tới ở bên dưới, như là “Sự thừa nhận”,

Trang 457/471

Page 458: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

“Những cống hiến”, “Những xác nhận”, hoặc “Lịch sử”). Để “Giữ lại Tiêu đề” của một phần như vậy khi bạn sửa đổi Tài liệu có nghĩa là nó vẫn còn là một phần “Tiêu đề XYZ” theo định nghĩa này.

Tài liệu có thể đưa vào những Khước từ Đảm bảo bên cạnh lưu ý nói rằng Giấy phép này áp dụng cho Tài liệu. Những Khước từ Đảm bảo này được cho là sẽ được đưa vào bằng tham chiếu trong Giấy phép này, nhưng chỉ về việc khước từ những đảm bảo: bất kỳ ngụ ý nào khác mà những Khước từ Đảm bảo này có thể có được tránh và không có tác động nào đối với ý nghĩa của Giấy phép này.

2. VIỆC SAO CHÉP Y NGUYÊN

Bạn có thể sao chép và phân phối Tài liệu trong bất kỳ vật trung gian nào, hoặc một cách thương mại hoặc không thương mại, miễn là Giấy phép này, những lưu ý về bản quyền, và lưu ý của giấy phép nói Giấy phép này áp dụng cho Tài liệu được tái sản xuất trong tất cả các bản sao, và bạn bổ sung những điều kiện không khác hơn bất kể những thứ gì của Giấy phép này. Bạn có thể không sử dụng những phương tiện kỹ thuật để cản trở hoặc kiểm soát việc đọc hoặc sao chép tiếp tục của các bản sao mà bạn làm hoặc phân phối. Tuy nhiên, bạn có thể chấp nhận sự đền bù trong sự trao đổi cho những bản sao. Nếu bạn phân phối một số lượng đủ lớn các bản sao thì bạn cũng phải tuân theo những điều kiện trong phần 3. Bạn cũng có thể cho vay các bản sao, theo cùng y hệt các điều kiện được nêu ở trên, và bạn có thể hiển thị các bản sao một cách công khai.

3. VIỆC SAO CHÉP THEO SỐ LƯỢNG

Nếu bạn xuất bản các bản sao in được (hoặc các bản sao trong các vật chứa mà thường đã in các bìa) của Tài liệu, số lượng hơn 100, và lưu ý của giấy phép của Tài liệu đòi hỏi các Văn bản Bìa, thì bạn phải bao quanh các bản sao trong các bìa mà nó chứa, rõ ràng và hợp pháp, tất cả các Văn bản Bìa. Các Văn bản Bìa Trước ở bìa trước, và các Văn bản Bìa Sau ở bìa sau. Cả 2 bìa cũng phải phải xác định rõ ràng và hợp pháp bạn như người xuất bản của các bản sao này. Bìa trước phải thể hiện toàn bộ tiêu đề với tất cả các từ của tiêu đề một cách nổi bật và dễ nhìn một cách như nhau. Bạn có thể bổ sung tư liệu khác trên các bìa. Việc sao chép với những thay đổi có giới hạn đối với các bìa, cùng với việc chúng giữ lại tiêu đề của Tài liệu và làm thỏa mãn những điều kiện này, có thể được đối xử như việc sao chép y nguyên theo những lưu ý khác. Nếu các văn bản được yêu cầu cho những trang bìa là quá to không rõ ràng, thì bạn phải đặt những văn bản đầu được liệt kê (càng rõ ràng bao nhiều càng tốt có thể) lên bìa thực tế, và tiếp tục phần còn lại trên những trang tiếp sau.

Nếu bạn xuất bản hoặc phân phối các bản sao Tù mù của Tài liệu số lượng lớn hơn 100, thì bạn phải hoặc đưa vào một bản sao Minh bạch mà máy đọc được cùng với từng bản sao Tù mù, hoặc nói trong hoặc với mỗi bản sao Tù mù một vị trí mạng máy tính mà từ đó mọi người sử dụng mạng thông thường truy cập được tới để tải về bằng việc sử dụng các giao thức mạng tiêu chuẩn công cộng cho một bản sao Minh bạch đầy đủ của Tài liệu, tự do của tư liệu được bổ sung. Nếu bạn sử dụng lựa chọn sau, thì bạn phải tiến hành các bước thận trọng hợp lý, khi bạn bắt đầu sự phân phối các bản sao Tù mù theo số lượng, để đảm bảo rằng bản sao Minh bạch này sẽ vẫn giữ truy cập được như thế tại vị trí đã được nói cho tới khi ít nhất 1 năm sau lần cuối cùng bạn phân phối một bản sao Tù mù (trực tiếp hoặc thông qua các đại lý hoặc những nhà bán lẻ của bạn) đối với xuất bản phẩm đó cho công chúng.

Trang 458/471

Page 459: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Được yêu cầu, nhưng không đòi hỏi, rằng bạn liên hệ tới các tác giả của Tài liệu trước khi việc phân phối bất kỳ số lượng lớn nào các bản sao, để cho họ một cơ hội cung cấp cho bạn với một phiên bản cập nhật của Tài liệu.

4. NHỮNG SỬA ĐỔI

Bạn có thể sao chép và phân phối một Phiên bản được Sửa đổi của Tài liệu theo những điều kiện của các phần 2 và 3 ở trên, miễn là bạn tung ra Phiên bản được Sửa đổi chính xác theo Giấy phép này, với việc Phiên bản được Sửa đổi này làm tròn vai trò của Tài liệu, vì thế việc cấp phép phân phối và sửa đổi của Phiên bản được Sửa đổi cho bất kỳ ai có một bản sao của nó. Hơn nữa, bạn phải làm những thứ này trong Phiên bản được Sửa đổi:

• A. Sử dụng trong Trang Tiêu đề (và trên các bìa, nếu có) một tiêu đề phân biệt được với những thứ của Tài liệu, và với những thứ của các phiên bản trước (mà nên, nếu đã có, được liệt kê trong phần Lịch sử của Tài liệu). Bạn có thể sử dụng cùng y hệt tiêu đề như một phiên bản trước nếu người xuất bản ban đầu của phiên bản đó trao quyền.

• B. Liệt kê trên Trang Tiêu đề, như các tác giả, một hoặc nhiều người hoặc các thực thể có trách nhiệm về quyền tác giả của những sửa đổi trong Phiên bản được Sửa đổi, cùng với ít nhất 5 tác giả chính của Tài liệu (tất cả đối với các tác giả chính, nếu nó là nhỏ hơn 5), trừ phi họ đưa ra cho bạn từ yêu cầu này.

• C. Tuyên bố trên trang Tiêu đề tên của nhà xuất bản của Phiên bản được Sửa đổi, như là người xuất bản.

• D. Giữ lại tất cả các lưu ý về bản quyền của Tài liệu.

• E. Bổ sung một lưu ý phù hợp về bản quyền cho những sửa đổi của bạn ngay cạnh những lưu ý về bản quyền khác.

• F. Đưa vào, ngay lập tức sau những lưu ý về bản quyền, một lưu ý về giấy phép trao quyền công khai để sử dụng Phiên bản được Sửa đổi theo những điều khoản của Giấy phép này, ở dạng được chỉ ra trong Phụ lục bên dưới.

• G. Giữ lại trong lưu ý giấy phép đó những danh sách đầy đủ của những Phần Không đổi và những Văn bản Bìa được yêu cầu đưa ra trong lưu ý giấy phép của Tài liệu.

• H. Đưa vào một bản sao chưa bị sửa của Giấy phép này.

• I. Giữ lại phần Tựa đề “Lịch sử”, Giữ lại Tiêu đề của nó, và bổ sung cho nó một khoản nói ít nhất tiêu đề, năm, các tác giả mới, và người xuất bản của Phiên bản được Sửa đổi như được đưa ra trên Trang Tiêu đề. Nếu không có phần Tiêu đề “Lịch sử” trong Tài liệu, hãy tạo ra một phần để nói tiêu đề, năm, các tác giả, và nhà xuất bản của Tài liệu như được đưa ra trên Trang Tiêu đề, rồi bổ sung một khoản mô tả Phiên bản được Sửa đổi như được nêu trong câu trước.

• J. Giữ lại vị trí của mạng, nếu có, đưa ra trong Tài liệu cho việc truy cập công khai tới một bản sao Minh bạch của Tài liệu, và cũng như vậy các vị trí của mạng được đưa ra trong Tài liệu cho các phiên bản trước mà nó dựa vào. Những chỗ này có thể được đặt trong phần “Lịch sử”. Bạn

Trang 459/471

Page 460: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

có thể bỏ qua một vị trí mạng cho một công việc đã được xuất bản ít nhất 4 năm trước bản thân Tài liệu này, hoặc nếu người xuất bản gốc của phiên bản tham chiếu tới cho phép.

• K. Đối với bất kỳ phần nào có Tiêu đề “Những Thừa nhận” hoặc “Những Cống hiến”, hãy Giữ Tiêu đề của phần này, và hãy giữ trong phần này tất cả bản chất và giọng điệu của những thừa nhận của mỗi nhà đóng góp và/hoặc những cống hiến được đưa ra ở đây.

• L. Giữ lại tất cả các Phần Không đổi của Tài liệu, còn chưa bị sửa trong văn bản của chúng và trong các tiêu đề của chúng. Các số phần hoặc tương đương không được coi là một phần của các tiêu đề các phần.

• M. Hãy xóa đi bất kỳ phần có Tiêu đề “những Xác nhận” nào. Một phần như vậy có thể không được đưa vào trong Phiên bản được sửa đổi.

• N. Không đặt lại đầu đề cho bất kỳ phần đang tồn tại nào để có Tiêu đề “những Xác nhận” hoặc mâu thuẫn theo tiêu đề với bất kỳ Phần Không đổi nào.

• O. Giữ lại bất kỳ những Khước từ Đảm bảo nào.

Nếu Phiên bản được Sửa đổi đưa vào các phần của các vấn đề trước hoặc các phụ lục mới được coi là các Phần Hai và không chứa tư liệu được sao chép từ Tài liệu, thì bạn có thể tùy theo lựa chọn của bạn chỉ định một số hoặc tất cả những phần này như là không thay đổi. Để làm điều này, hãy bổ sung các tiêu đề của chúng vào danh sách của các Phần Không đổi trong lưu ý về giấy phép của Phiên bản được Sửa đổi. Những tiêu đề này phải phân biệt được với bất kỳ tiêu đề nào của các phần khác.

Bạn có thể bổ sung một phần có Tiêu đề “Những Xác nhận”, miễn là nó không chứa gì cả ngoài những xác nhận của Phiên bản được Sửa đổi của bạn bởi một loạt các bên - ví dụ, những tuyên bố của các bên rà soát lại hoặc văn bản đã được phê chuẩn bởi một tổ chức như định nghĩa có căn cứ của một chuẩn.

Bạn có thể bổ sung một đoạn tới 5 từ như một Văn bản Bìa Trước, và một đoạn tới 25 từ như một Văn bản Bìa Sau, vào cuối của danh sách của các Văn bản Bìa trong Phiên bản được Sửa đổi. Chỉ một đoạn của Văn bản Bìa Trước và một đoạn của Văn bản Bìa Sau có thể được bổ sung của (hoặc qua những dàn xếp được thực hiện bởi) bất kỳ một thực thể nào. Nếu Tài liệu đã đưa vào một văn bản bìa cho cùng bìa đó, được bổ sung trước đó bởi bạn hoặc bởi sự dàn xếp được thực hiện bởi cùng thực thể mà bạn thay mặt để hành động, thì bạn có thể không bổ sung thêm văn bản khác nữa; nhưng bạn có thể thay thế văn bản cũ, theo quyền dứt khoát từ người xuất bản trước mà đã bổ sung văn bản cũ đó.

(Những) tác giả và (những) người xuất bản của Tài liệu bằng Giấy phép này không trao quyền để sử dụng các tên của họ cho thiên hạ biết vì hoặc để đòi hoặc ngụ ý xác nhận về bất kỳ Phiên bản được Sửa đổi nào.

5. VIỆC PHỐI HỢP CÁC TÀI LIỆU

Bạn có thể phối hợp Tài liệu này với các tài liệu khác được tung ra theo Giấy phép này, theo những điều khoản được xác định trong phần 4 ở trên cho những phiên bản được sửa đổi, miễn là bạn đưa vào sự phối hợp này cho tất cả các Phần Không đổi của tất cả các tài liệu gốc ban đầu, chưa bị sửa đổi, và liệt kê chúng tất cả như các Phần Không sửa của công việc phối hợp của bạn trong lưu ý giấy phép của

Trang 460/471

Page 461: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

nó, và bạn giữ lại tất cả những Khước từ Đảm bảo của họ.

Công việc phối hợp chỉ cần chứa một bản sao của Giấy phép này, và nhiều Phần Không đổi y hệt có thể được thay thế bằng một bản sao duy nhất. Nếu có nhiều Phần Không đổi với cùng tên mà khác nội dung, hãy tạo ra tiêu đề duy nhất cho từng phần như vậy bằng việc bổ sung ở cuối của nó, trong các dấu ngoặc đơn, tên của tác giả hoặc nhà xuất bản gốc của phần đó nếu biết, hoặc một số duy nhất. Hãy thực hiện sự chỉnh y hệt cho các tiêu đề của các phần trong danh sách của các Phần Không đổi trong lưu ý giấy phép của công việc phối hợp.

Trong sự phối hợp, bạn phải phối hợp bất kỳ phần nào có Tiêu đề “Lịch sử” trong các tài liệu gốc khác nhau, tạo nên một phần có Tiêu đề “Lịch sử”; cũng như vậy hãy phối hợp bất kỳ phần nào có Tiêu đề “Những Thừa nhận”, và bất kỳ phần nào có Tiêu đề “Những Cống hiến”. Bạn phải xóa tất cả các phần có Tiêu đề “những Xác nhận”.

6. CÁC BỘ SƯU TẬP CỦA CÁC TÀI LIỆU

Bạn có thể tạo ra một bộ sưu tập cấu tạo từ Tài liệu và các tài liệu khác được tung ra theo Giấy phép này, và thay thế các bản sao riêng rẽ của Giấy phép này trong một loạt tài liệu bằng một bản sao duy nhất được đưa vào trong bộ sưu tập, miễn là bạn tuân theo các qui định của Giấy phép này về việc sao chép y nguyên của mỗi tài liệu với toàn bộ sự tôn trọng.

Bạn có thể trích dẫn một tài liệu duy nhất từ một bộ sưu tập như vậy, và phân phối nó một cách độc lập theo Giấy phép này, miễn là bạn chèn vào một bản sao của Giấy phép này vào trong tài liệu trích xuất đó, và tuân theo Giấy phép này với tất cả sự tôn trọng về việc sao chép y nguyên của tài liệu đó.

7. SỰ TẬP HỢP BÊN TRONG CÁC CÔNG VIỆC ĐỘC LẬP

Một sự biên tập của Tài liệu hoặc những dẫn xuất của nó với những tài liệu hoặc công việc riêng rẽ và độc lập khác, trong hoặc trên một số lượng của một lưu trữ hoặc vật chứa phân phối, được gọi là một “sự tập hợp” nếu bản quyền tạo ra từ sự biên tập này không được sử dụng để giới hạn các quyền pháp lý của những người sử dụng sự biên dịch đó vượt ra ngoài những gì các công việc riêng rẽ đó cho phép. Khi Tài liệu là sự tập hợp mà bản thân chúng không phải là những công việc dẫn xuất của Tài liệu.

Nếu yêu cầu Văn bản Bìa có thể được thay thế của phần 3 là áp dụng được cho các bản sao này của Tài liệu, thì sau đó nếu Tài liệu là ít hơn một nửa của toàn bộ sự tập hợp, thì các Văn bản Bìa của Tài liệu có thể được thay thế trên các tờ bìa mà chúng gộp Tài liệu này bên trong sự tập hợp, hoặc tương đương bằng điện tử của các tờ bìa nếu Tài liệu ở dạng điện tử. Nếu không chúng phải xuất hiện trong các tờ bìa được in mà chúng gộp toàn bộ sự tập hợp này.

8. BẢN DỊCH

Bản dịch được coi là một dạng sửa đổi, nên bạn có thể phân phối các bản dịch của Tài liệu theo những điều khoản của phần 4. Việc thay thế các Phần Không sửa bằng những bản dịch yêu cầu quyền đặc biệt từ những người giữ bản quyền của chúng, nhưng bạn có thể đưa những bản dịch của một số hoặt tất cả

Trang 461/471

Page 462: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

các Phần Không sửa bổ sung vào cho các phiên bản gốc của các Phần Không sửa đó. Bạn có thể đưa vào một bản dịch của Giấy phép này, và tất cả những lưu ý về giấy phép trong Tài liệu, và bất kỳ những Khước từ Đảm bảo nào, miễn là bạn cũng đưa vào phiên bản gốc tiếng Anh của Giấy phép và các phiên bản gốc của những lưu ý và những khước từ. Trong trường hợp của một sự không giống nhau giữa bản dịch và phiên bản gốc của Giấy phép này hoặc một lưu ý hoặc sự khước từ, thì phiên bản gốc sẽ thắng thế.

Nếu một phần trong tài liệu có Tiêu đề “Những Thừa nhận”, “Những Cống hiến”, hoặc “Lịch sử”, thì yêu cầu (phần 4) phải Giữ lại Tiêu đề của nó (phần 1) sẽ thường yêu cầu thay đổi tiêu đề có thực này.

9. KẾT THÚC

Bạn có thể không sao chép, sửa đổi, cấp giấy phép phụ, hoặc phân phối Tài liệu này trừ phi như được cung cấp một cách chính xác theo Giấy phép này. Bất kỳ dự định nào khác để sao chép, sửa đổi, cấp phép phụ hoặc phân phối Tài liệu này sẽ không có hiệu lực, và sẽ tự động kết thúc các quyền của bạn theo Giấy phép này. Tuy nhiên, các bên mà đã nhận được các bản sao, hoặc các quyền, từ bạn theo Giấy phép này sẽ không bị kết thúc các giấy phép của họ miễn là những bên như vậy giữ nguyên sự tuân thủ đầy đủ.

10. NHỮNG RÀ SOÁT LẠI TRONG TƯƠNG LAI CỦA GIẤY PHÉP NÀY

FSF có thể xuất bản các phiên bản mới, được rà soát lại của Giấy phép Tài liệu Tự do GNU theo thời gian. Những phiên bản mới như vậy sẽ là tương tự theo tinh thần đối với phiên bản hiện hành, nhưng có thể khác về chi tiết để giải quyết những vấn đề hoặc những mối quan tâm mới. Xem http://www.gnu.org/copyleft/.

Mỗi phiên bản của Giấy phép này được đưa ra với một số phiên bản khác biệt. Nếu Tài liệu này chỉ định rằng một phiên bản được đánh số đặc biệt nào đó của Giấy phép này “hoặc bất kỳ phiên bản nào sau đó” áp dụng cho nó, thì bạn có lựa chọn tuân theo những điều khoản và điều kiện hoặc của phiên bản được chỉ định đó hoặc của bất kỳ phiên bản nào sau này mà đã được FSF xuất bản (chứ không phải một bản phác thảo). Nếu Tài liệu không chỉ định một số phiên bản của Giấy phép này, thì bạn có thể chọn bất kỳ phiên bản nào từ trước tới nay được FSF xuất bản (không phải một bản phác thảo).

Làm thế nào để sử dụng Giấy phép này cho các tài liệu của bạn

Để sử dụng Giấy phép này trong một tài liệu mà bạn đã viết, bao gồm một bản sao của Giấy phép này trong tài liệu và đặt bản quyền sau và những lưu ý của giấy phép chỉ tới trang tiêu đề:

Bản quyền © NĂM, TÊN CỦA BẠN. Quyền được trao để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo những điều khoản của Giấy phép Tài liệu Tự do GNU, Phiên bản 1.2 hoặc bất kỳ phiên bản nào sau này được Quỹ Phần mềm Tự do xuất bản; không có các Phần Không sửa, không các Văn bản Bìa Trước, và không các Văn bản Bìa Sau. Một bản sao của giấy phép này được đưa vào trong phần có tiêu đề “Giấy phép Tài liệu Tự do GNU”.

Trang 462/471

Page 463: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Nếu bạn có các Phần Không sửa, các Văn bản Bìa Trước và các Văn bản Bìa Sau, hãy thay thế bằng các dòng Văn bản với điều này:

với các Phần Không sửa đang được LIỆT KÊ CÁC TIÊU ĐỀ CỦA CHÚNG, với các Văn bản Bìa Trước đang được LIỆT KÊ, và với các Văn bản Bìa Sau đang được LIỆT KÊ.

Nếu bạn có các Phần Không sửa mà không có các Văn bản Bìa, hoặc một số sự kết hợp khác của 3 thứ này, thì hãy sát nhập chúng theo 2 giải pháp thay thế để phù hợp với hoàn cảnh.

Nếu tài liệu của bạn chứa các ví dụ không bình thường về mã chương trình, thì chúng tôi khuyến cáo đưa ra những ví dụ này song song theo lựa chọn của bạn đối với giấy phép PMTD, như Giấy phép Công cộng Chung GNU, để cho phép sử dụng chúng trong PMTD.

Trang 463/471

Page 464: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

GNU Free Documentation License

Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0.PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1.APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding

Trang 464/471

Page 465: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

Trang 465/471

Page 466: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

2.VERBATIMCOPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3.COPYINGINQUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computernetwork location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4.MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

Trang 466/471

Page 467: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

• A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

• B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

• C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

• D. Preserve all the copyright notices of the Document.

• E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

• F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

• G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

• H. Include an unaltered copy of this License.

• I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

• J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

• K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

• L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

• M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

• N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with

Trang 467/471

Page 468: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

any Invariant Section.

• O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties - for example, statements of peer review or that the text has been approved by an organisation as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5.COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

6.COLLECTIONSOFDOCUMENTS

Trang 468/471

Page 469: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7.AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8.TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9.TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such

Trang 469/471

Page 470: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

parties remain in full compliance.

10.FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

Trang 470/471

Page 471: Quản trị cao cấp GNU/Linux (FTA)

FUOC • PID_00148358 Quản trị cao cấp GNU/Linux

Trang 471/471