Professional Documents
Culture Documents
1
hôm nay, cuối 2001, phiên bản mới nhất của Linux kernel là
2.4.20, có khả năng điều khiển các máy đa bộ vi xử lý ( hiện tại
Linux hỗ trợ máy tính có tối đa 16 CPUs) và rất nhiều các tính
năng khác.
Phiên bản mới nhất có thể tìm thấy tại
http://www.kernel.org
2
rất ổn định. Ngay cả server Linux phục vụ những mạng lớn (hàng
trăm máy trạm) cũng hoạt động rất ổn định.
Linux đầy đủ. Tất cả những gì bạn thấy ở IBM, SCO, Sun
… đều có ở Linux. C compiler, perl interpeter, shell , TCP/IP,
proxy, firewall, tài liệu hướng dẫn ... đều rất đầy đủ và có chất
lượng. Hệ thống các chương trình tiện ích cũng rất đầy đủ .
Linux là HDH hoàn toàn 32-bit. Như các Unix khác, ngay
từ đầu, Linux đã là một HDH 32 bits. Hiện nay đã có những
phiên bản Linux 64 bits chạy trên máy Alpha Digital hay Ultra
Sparc.
Linux rất mềm dẻo trong cấu hình. Linux cho người sử
dụng cấu hình rất linh động, ví dụ như độ phân dải màn hình
Xwindow tùy ý, dễ dàng sửa đổi ngay cả kernel
Linux chạy trên nhiều máy khác nhau từ PC 386, 486 tự lắp
cho đến SUN Sparc.
Linux được trợ giúp. Ngày nay, với các server Linux sử
dụng dữ liệu quan trọng, người sử dụng hoàn toàn có thể tìm
được sự trợ giúp cho Linux từ các công ty lớn. IBM đã chính
thức chào bán IBM server chạy trên Linux. Tài liệu giới thiệu
Linux ngày càng nhiều, không thua kém bất cứ một HDH nào
khác.
Với nguồn tài liệu phong phú, chương trình từ kernel cho
đến các tiện ích miễn phí và bộ mã nguồn mở, Linux là người bạn
đồng hành lý tưởng cho những ai muốn đi vào HDH chuyên
nghiệp UNIX và công cụ tốt nhất cho công tác đào tạo CNTT
trong các trường đại học.
Các phiên bản của Linux. Các phiên bản của HDH Linux
được xác định bởi hệ thống số dạng X.YY.ZZ. Nếu YY là số
chẵn => phiên bản ổn định. YY là số lẻ => phiên bản thử nghiệm
.
3
Các phân phối (distribution) của Linux quen biết là
RedHat, Debian, SUSE, Slakware, Caldera …
Chú ý phân biệt số phiên bản của hệ điều hành (Linux
kernel) với phiên bản của các phân phối (ví dụ RedHat 7.1 với
kernel Linux 2.4.2-14).
4
Nếu như trong Windows có bộ Microsoft Office thì trong Linux
có những bộ Office khác như KOffice hoặc bộ Start Office của
hãng Sun Microsystem được phân phối miễn phí .
5
2.2 Các ứng dụng giải trí
Ngoài các ứng dụng văn phòng ra, Linux cũng có khá nhiều
games phục vụ nhu cầu thư giãn và giải trí của người dùng.
6
7
2.3 Hệ điều hành mạng và các ứng dụng mạng
Có thể nói các ứng dụng mạng là tập hợp những ứng dụng nổi bật
nhất của hệ điều hành Linux. Những khả năng mà các ứng dụng
mạng trên Linux có thể thực hiện được làm cho hệ điều hành này
trở nên vượt trội hơn so với Windows.
Linux cho phép người dùng có thể cấu hình 1 server với đầy đủ
các ứng dụng cơ bản nhất của Internet :
Domain Name Service (DNS)
Web Server
Web Proxy Server
Routing
SMTP Server
Pop3 Server
8
Firewall
2.4 Các ứng dụng Web
Với sự bùng nổ các ứng dụng trên Internet , hệ điều hành Linux
hỗ trợ một môi trường lý tưởng cho các server ứng dụng.
Các hãng phần mềm nổi tiếng đều nghiên cứu để làm sao có thể
cài các ứng dụng của họ lên Linux. Tiêu biểu là các ứng dụng
sau:
Oracle Internet Application Server 9i
IBM WebSphere
2.5 Các ứng dụng cơ sở dữ liệu
Các ứng dụng cơ sở dữ liệu là không thể thiếu trong lãnh vực
CNTT cũng như các ngành khác. Một khi đã nói đến sự tin học
hoá trong mọi lãnh vực của đời sống thì dù ít, dù nhiều cũng phải
liên quan đến cơ sở dữ liệu .
Linux hỗ trợ khá mạnh các hệ quản trị cơ sở dữ liệu từ miễn phí
đến các hệ chuyên nghiệp như :
Postgres SQL
MySQL
Oracle Database Server 9i
IBM DB2
2.6 Các ngôn ngữ lập trình
Hệ điều hành Linux được viết lại hoàn toàn từ đầu bằng ngôn ngữ
C nhằm tránh vấn đề bản quyền của Unix . Do đó ngôn ngữ lập
trình C được hỗ trợ mạnh mẽ và khá đầy đủ cho việc phát triển
các ứng dụng mạng.
9
Tuy nhiên ngôn ngữ C không phải là sự lựa chọn duy nhất cho
việc lập trình trên Linux. Có nhiều ngôn ngữ lập trình khác cũng
được hỗ trợ bởi Linux được liệt kê dưới đây:
Ada, C, C++, Forth, Fortran, Icon, Java, Lisp,
Modular 2, Modular 3,Oberon,Objective C,
Pascal, Perl , Prolog, Python, Smalltalk, SQL,
Tck/Tl, Shell
10
CÀI ĐẶT LINUX
Phần mềm
Việc tiếp theo là ta phải chuẩn bị một bộ đĩa chứa hệ điều hành
Linux dùng để cài đặt .
Do Linux được nhiều hãng sản xuất ra nên sẽ có rất nhiều thương
hiệu Linux khác nhau như: RedHat Linux, Suse Linux, Debian
linux, Mandrake Linux, Calendra Linux, Corel Linux, ….
11
Trên thị trường Việt Nam hiện nay RedHat Linux là phổ biến
nhất và có lẽ là được sử dụng rộng rãi nhất ( hệ thống server
chính của Đại Học Quốc Gia Tp Hồ Chí Minh đều chạy hệ điều
hành RedHat Linux)
Do đó trong phần trình bày này chúng tôi xin giới thiệu chủ yếu
là trên hệ điều hành RedHat Linux.
Đối với RedHat Linux cũng có khá nhiều phiên bản khác nhau:
RedHat 6.0: 1 đĩa CD
RedHat 6.1: 1 đĩa CD
RedHat 6.2: 1 đĩa CD
RedHat 7.1: 2 đĩa CD ( ngoài ra còn một số đĩa
Sources, document đi kèm)
RedHat 7.2: 3 đĩa CD ( có một số đĩa Sources,
document đi kèm)
2. Phân hoạch đĩa cứng và khái niệm
mount point
Việc cài đặt hệ điều hành Linux lên một máy mới hoàn toàn,
chưa có chứa dữ liệu gì cả (khi đĩa cứng chưa fdisk càng tốt ) thì
thật dễ dàng và nhanh chóng. Nhưng đa số người sử dụng máy vi
tính đều khá quen thuộc với hệ điều hành Microsoft Windows do
đó hầu hết các máy tính hiện nay đều cài đặt sẵn hệ điều hành này
! Một vấn đề đặt ra là làm sao đối với học viên học Linux là có
thể cài đặt Linux lên máy đã có sẵn một hệ điều hành Windows
rồi mà không làm mất dữ liệu .
May mắn thay, các nhà phát triển Linux đã để ý đến điểm này và
một chương trình tiện ích LILO ( linux loader) được viết ra để
giúp cho người dùng có thể khởi động máy từ các hệ điều hành
khác nhau.
12
Đối với hệ điều hành Linux ngày nay nó đòi hỏi phải có ít nhất 2
partion của đĩa cứng để có thể cài đặt thành công.
Parttion thứ nhất: dùng để chứa hđh. Dung lượng cho
parttion này tuỳ theo các package mà bạn cài đặt, thông
thường khoảng 2Gb là đủ.
Đặc biệt đối với các hệ thống Linux mà sau này muốn cài đặt hệ
quản trị CSDL Oracle lên thì ta phải cho swap space lớn hơn
hoặc bằng 500MB vì đây là một trong những khuyến cáo của
Oracle. Ta phải để ý đến trường hợp này, nếu không khi hệ thống
đã cài xong, các parttion đã ổn định rồi thì không thể thay đổi
được !
Sau khi đã xác định những gì cần làm ta sẽ bắt tay vào cài đặt
Linux.
Cũng như các hệ điều hành khác, Linux yêu cầu ta chia các
partion cần thiết để chứa dữ liệu. Vấn đề là hiện tại máy tính của
ta đang có sẵn Windows và trong Windows, ta có rất nhiều dữ
liệu quan trọng không muốn bị mất thì ta phải làm thế nào.
Giả sử ta có một đĩa cứng 20GB, có chia 2 partion thành 2 đĩa
Logic C và D với dung lượng C: 10Gb, D: 10Gb. Và ổ đĩa C là ổ
đĩa hệ thống chứa hệ điều hành Windows ổ đĩa D dùng để ta lưu
back up dữ liệu . Để cài đặt ta phải dành trọn phần partition D để
install Linux. Không những thế ta phải cắt partition D thành 2
parttition: 1 dùng để cài đặt chương trình, một dùng để làm swap
.
13
Đối với các hệ điều hành từ RedHat 6.2 trở về trước thì Lilo
không thể boot được nếu ta cài đặt partition chứa file boot của hệ
thống nằm xa quá 4Gb. Để khắc phục tình trạng này ta phải cài
đặt Linux nằm trong khoảng từ phần đĩa từ 3G trở đi là tốt nhất,
phần từ 0 đến 3Gb sẽ dành cho Windows
14
Bước 2: Ta nhập ngay dấu nhắc lệnh chữ text dùng để cho
chương trình setup chạy trên chế độ text .
RedHat Linux có hai chế độ giao diện cài đặt
Giao diện đồ họa – GUI: Giao diện hướng dẫn cài đặt
RedHat Linux bằng hình ảnh đồ hoạ. Tương tự như hướng
dẫn cài đặt Windows. Nếu ta chọn giao diện này thì quá
trình cài đặt thường chậm hơn bởi vì ta sử dụng thiết bị
input chủ yếu là mouse.
Giao diện văn bản – text : Giao diện cài đặt RedHat
Linux toà bằng menu dòng lệnh. Sử dụng giao diện cài
đặt này thường thuận lợi và nhanh chóng hơn vì tất cả đều
sử dụng bàn phím nên thao tác sẽ nhanh hơn.
15
Trong phần này Redhat hỏi chúng ta ngôn ngữ sử dụng trong
phần cài đặt hệ điều hành này là gì ( mặc định sẽ là English)
Một số ngôn ngữ được hỗ trợ như: Czech, English, French,
German, Hungarian, Icelandic, Italian, Norwegian, Romanian,
Russian, Turkis, Zimbabue, …
Bước 3: Chọn bàn phím ( ta chọn mặc định là us )
Có nhiều kiểu bàn phím được hỗ trợ, nhưng bàn phím được sử
dụng phổ biến nhất tại Việt Nam hiện nay là bàn phím us.
Ta không nên chọn các loại bàn phím không chuẩn khác vì sẽ gặp
rắc rối trong các phím ký hiệu đặc biệt :
~!@#$%^&*()-_=+|\{[]}/?<,.>‘`"
Trong đó các ký hiệu : $ # % ! rất được sử dụng trong các thao
tác lập trình shell. Nếu ta chọn bàn phím không chuẩn sẽ bị rắc
rối trong quá trình thao tác sau này.
16
Bước 4:
Màn hình chào mừng hiện ra, ta bấm Enter để tiếp tục
Bước 5: Chọn mode cài đặt.
GNOME Workstation
KDE Workstation
17
Server System : Mode này dùng để cài đặt máy
chủ. Tuy nhiêu khi chọn chế độ này thì Linux sẽ
tự động chia các partition theo ý nó ! Và ta sẽ bị
mất hết cấu trúc đĩa cũ.
Mode này tuyệt đối tránh khi ta muốn cài đặt hệ điều
hành Linux chung với hệ điều hành khác đặc biệt là
Windows.
Custom System: Mode này dành cho những ai có
biết sơ qua Linux ! Các bạn đang học Linux thì
nên chọn mode cài đặt này.
Upgrade Existing Installation : Nâng cấp hệ thống
đã có (ví dụ từ RedHat 6.2 lên RedHat 7.1)
18
Bước 7:
Bước 8:
19
Ta chọn mode Master Boot Record để Lilo có thể cho ta tuỳ chọn
boot theo hệ điều hành nào sau khi cài đặt xong.
Bước 10:
Đặt tên cho máy, ta có thể thay đổi một cách dễ dàng sau này.
Bước 11: Thiết lập địa chỉ IP cho máy
20
Thiết lập địa chỉ IP cho máy: Nếu trong mạng nơi ta làm việc có
một DHCP Server thì ta có thể chọn chế độ [] Use bootp/dhcp
Bước 12:
21
Chọn múi giờ cho hệ thống: Asia/Saigon
Bước 14:
Đặt password cho root. Đây là password của user quan trọng nhất
trong hệ thống. Do đó phải ghi nhớ cẩn thận
Bước 15:
Sau đó click OK 2 lần để tiếp tục quá trình Install
22
Bước 16: Chọn các tập hợp package để install
Bước 17:
Sau khi đã chọn xong các package , redhat sẽ tự động install
23
Linux là một hệ điều hành mạng rất linh hoạt và mạnh mẽ, ta có
thể install nó từ một server khác, không cần phải có CD cục bộ.
Các thao tác chuẩn bị :
Một Anonymous FTP server hoặc Webserver: Không phụ
thuộc hệ điều hành. Chỉ cần server đáp ứng đầy đủ các
chuẩn của FTP hoặc HTTP. Sau đó ta chép bộ source vào
các thư mục của Webserver hoặc FTP server sao cho ta có
thể truy cập từ bên ngoài.
Ví dụ: ftp://ftp.citd.edu.vn/redhat hoặc
http://software.citd.edu.vn/: trong thư mục này ta chứa toàn
bộ các cdrom chứa chương trình cài đặt của Linux
Một đĩa mềm boot được tạo ra từ tập tin bootnet.img: Ta
chép hai tập tin rawrite.exe và bootnet.img từ đĩa CD Rom
thứ nhất của bộ cài đặt Linux trong thư mục dosutils và
images ra một thư mục tạm c:\temp của một máy Windows
để tạo đĩa mềm bootnet. Chạy chương trình rawrite để chép
bootnet.img vào đĩa mềm.
24
Hoặc ta có thể sử dụng trình tiện ích rawritewin để tạo đĩa mềm
boot.
Sau đó ta khởi động lại máy và boot từ đĩa mềm và làm theo
hướng dẫn để có thể cài đặt từ mạng.
5. Quá trình khởi động và kết thúc của
UNIX
Như thông lệ, khi một máy tính được khởi động, sau khi kiểm tra
các thiết bị phần cứng gắn trên máy tính qua các chương trình
kiểm tra ghi trong ROM, hệ điều hành được tải lên bộ nhớ. Công
tác đầu tiên của hệ điều hành là kiểm tra các thiết bị ngoại vi và
tải các chương trình điều khiển (driver) cần thiết lên bộ nhớ. Sau
các công tác này, bắt đầu giai đoạn định hình hệ thống và mỗi hệ
25
điều hành, thậm trí mỗi phiên bản của một hệ điều hành thực hiện
một khác. Chúng tôi xin giới thiệu cách thức khởi động và cấu
hình hệ thống của Linux RedHat 6.x .
Tập tin đầu tiên mà hệ điều hành xem xét đến là /etc/inittab
[root@pascal root]# less /etc/inittab
# inittab
# 4 - unused
# 5 - X11
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
26
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
Mức làm việc (run level) mặc định được quy định trong tập tin
này. Ví dụ trên cho thấy mức mặc định là mức 3 ở dòng cuối
cùng. Unix nói chung có 7 mức hoạt động khác nhau từ 0 đến 6.
Mức 0 là để shutdown hệ thống.
Mức 1 là đơn người sử dụng (single user) và thường
được dùng để sửa chữa lỗi hệ thống tập tin
Mức 2, 3 là hai mức cho đa người sử dụng
Mức 4 không dùng
Mức 5 mức cho đa người sử dụng và có giao diện đồ
hoạ X-Window
Mức 6 dùng để reboot hệ thống
Tương ứng với các mức trên, trong thư mục /etc/rc.d có các thư
mục rc0.d – rc6.d, chứa các tập tin khởi động trong từng mức (rc
là viết tắt của run command). RedHat 6.x có thư mục
/etc/rc.d/init.d chứa tất cả các tập tin khởi động. Thường các tập
tin này là các shell script (tập hợp lệnh shell). Trong các thư mục
rc?.d chỉ có các liên kết hình thức (symbolic link) đến các tập tin
khởi động trong /etc/rc.d/init.d.
Trong các phiên bản mới đây của RedHat Linux ( từ 7.0 8.0)
có thư mục chứa các scripts khởi động là /etc/init.d nhưng thực
chất đây cũng chỉ là một symbolic link đến /etc/rc.d/init.d.
27
Trong các thư mục rc?.d, các script bắt đầu bằng S (start) được
sử dụng khi khởi động, còn các script bắt đầu từ K (kill) dùng để
dừng các tiến trình trước khi qua một mức hoạt động khác.
Toàn bộ các tập tin này quyết định cấu hình làm việc của một
máy Linux sau khi hoàn thành quá trình khởi động. Việc khởi
động hệ thống các dịch vụ cũng thực hiện thông qua cơ chế như
đã miêu tả trên.
Lệnh init số_mức cho phép chuyển giữa các mức của hệ
thống.
Ví dụ :
Để chuyển hệ thống từ mức hiện hành qua mức 1 để sửa chữa.
[root@pascal /etc/rc.d]# init 1
Sau đó init 3 cho phép quay về mức 3 đa người dùng.
[root@pascal /etc/rc.d]# init 3
Shutdown hệ thống
[root@pascal /etc/rc.d]# init 0
Lệnh shutdown [-t sec] [-rhc] time [warning-message]
shutdown –h now: Shutdown hệ thống ngay lập tức
shutdown –h –t xx : Shutdown hệ thống sau xx giây
shutdown –c : Hủy (cancel) lệnh shutdown đã đánh
shutdown –r now: Reboot hệ thống sau khi shutdown
Tham số warning-message: dùng để xuất ra câu thông
báo trên tất cả các terminal nhằm báo cho người dùng biết
hệ thống sắp sửa bị shutdown và người dùng phải nhanh
chóng hoàn tất công việc của mình.
Đăng nhập và thoát khỏi hệ thống Linux
28
Để login vào hệ thống Linux ta nhập username và password tại
màn hình đăng nhập :
Red Hat Linux release 7.3 (Valhalla)
Kernel 2.4.18-3smp on an i686
login: tuanna
Password:
Last login: Sun Dec 1 09:28:51 from 192.168.254.163
[tuanna@blackboard tuanna]$
Chú ý: khi nhập password, hệ thống không xuất hiện các dấu
mask (* ) nhằm đảm bảo an toàn hơn khi login.
Login từ mạng
Dùng telnet :
[root@blackboard xinetd.d]# telnet
192.168.254.16
Trying 192.168.254.16...
Connected to 192.168.254.16.
Escape character is '^]'.
Red Hat Linux release 7.3 (Valhalla)
Kernel 2.4.18-3smp on an i686
login: tuanna
Password:
Last login: Sun Dec 1 09:28:51 from
192.168.254.163
Dùng ssh:
[tuanna@blackboard tuanna]$ ssh 172.16.10.25
The authenticity of host '172.16.10.25
(172.16.10.25)' can't be established.
29
RSA key fingerprint is
9d:08:7d:db:96:75:8e:6c:33:1d:fe:d4:7a:23:e7:c
9.
Are you sure you want to continue connecting
(yes/no)? yes
Warning: Permanently added '172.16.10.25'
(RSA) to the list of known hosts.
tuanna@172.16.10.25's password:
Last login: Sun Dec 8 09:29:50 2002 from
blackboard
[tuanna@pascal tuanna]$
Để thoát ra ta có thể dùng lệnh exit hoặc logout
6. X-Window
6.1 Giới thiệu
X Window System: Lịch sử và kiến trúc
X Window - X Window là một hệ thống windows khả chuyển,
network-transparent chạy trên một dãi rộng lớn các máy tính và
các máy đồ hoạ. Các bản thương mại đều có sẵn cho nhiều
platforms , được gọi dưới các tên:
X Window System
Version 11
Window System, Version 11
X11
Hệ thống X Window được phát triển trong Laboratory for
Computer Science tại MIT (Massachusetts Institute of
Technology) như là một phần trong dự án Athena hợp tác với
DEC, và được phát hành lần đầu vào năm 1984.
30
Người chủ trì dự án là Robert Scheifler, và phiên bản X đầu tiên
mang ơn "W" Windowing package(được phát triển bởi Paul
Asente tại Stanford) rất nhiều.
Tháng 9 năm 1987, MIT xuất phiên bản X11 đầu tiên mà chúng
ta còn sử dụng đến ngày nay.
Rất nhiều ý tưởng đến với X Window cũng đến từ việc nghiên
cứu tại tập đoàn Xerox Corporation's Palo Alto Research Center
(PARC), họ đã làm việc trên các máy tính như Parc và Star trong
các thập niên 70. Không có máy tính nào được thương mại hoá,
nhưng khi Xerox demo một hệ Window để chạy smalltalk 80 thì
mọi người thật sự bị cuốn hút. Các dòng sản phẩm của 3 máy tính
đã hiện thực giao diện WIMP (Windows, Icons, Menus, Pointer)
hoàn hảo đến mức nó làm nổ ra một cuộc cách mạng trong ngành
máy tính lúc này. Trong vòng 1 vài năm nhiều người sử dụng
máy tính đã nếm vị ngọt của hệ window và một cách tự tin bạn có
thể nói rằng họ không bao giờ nhìn lại.
X Window hiện tại được phát triển và phân phối bởi X
Consortium, Tuy nhiên, bản quyền thư viện hiện có phục vụ cho
việc phát triển X là miễn phí hoặc phí rất thấp, chính điều này đã
thúc đẩy cho việc phát triển X ngày càng rộng rãi hơn.
Một phiên bản của MIT X Window system version 11 release 6
(X11R6) cho cho các 80386/80486/Pentium UNIX systems được
phát triển bởi một nhóm các lập trình viên mà dẫn đầu là David
Wexelblat dwex@XFree86.org . Trong đó XFree86 là một bộ
sưu tập của các X servers cho các hệ điều hành Unix-like trên các
máy Intel x86.
Công việc được bắt đầu từ X386, và đóng góp rất nhiều cho sự
phát triển X11R6 sau đó. Chúng ta hãy nghĩ đến XFree86, vì tất
cả các ý định và mục đích, để trở thành X Window cho Linux,
nếu không chúng ta sẽ phải trả giá khá nhiều cho một X server.
X Window được xây dựng trên rất nhiều toolkits, hay libraries.
Nó được xây dựng trên X Toolkit Intrinsics và Athena Widgets.
31
Nhiều chương trình dùng XView hay Motif tools. Nhiều chương
trình ngày càng được hoàn thiện, thống nhất hệ Window và
truyền thông, như GNOME hay KDE. Nếu bạn thấy rất nhiều các
chương trình chưa biên dịch hay bạn cảm thấy lạc lõng hoặc gặp
các lỗi không tthể giải thích được bạn chỉ có thể ao ước rằng
mình đã cài đặt X đúng , bởi vì hầu hết các libraries (ngoại trừ
Motif) là miễn phí và được preinstalled với X trên hệ thống của
bạn.
X Window System servers chạy trên các máy tính có màn hình
đồ hoạ. Server phân phát các input của người dùng và chấp nhận
các output request từ nhiều chương trình client. Thông qua nhiều
kênh giao tiếp giữa các process. (through a variety of different
interprocess communication channels) . Mặc dù hầu hết các
trường hợp thông thường là chương trình client được chạy trên
một máy cùng với server, clients có thể chạy một cách trong suốt
từ một máy khác ( bao gồm cả các máy có cấu trúc hoặc hệ điều
hành hoàn toàn khác) .
6.2 Thành phần của Desktop
Có một số luật và các thành ngữ cơ bản mà ta phải quen thuộc để
làm cho việc sử dụng X được dễ dàng.
Screen là toàn bộ ``desktop'' của bạn , và 2 từ này có thể được
hoán chuyển cho nhau và . Về mặt kỹ thuật mà nói, screen là
primary video display bạn có thể xem X và bạn có thể có nhiều
hơn một screen, do đó bạn có thể có nhiều hơn một máy tính
đang chạy X trên một X-server , do đó ta cũng để ý đến sự khác
biệt .
Root window là background của screen. Nó được đề cập đến như
là một window đơn lẻ, nó không đối xử như bất kỳ các window
khác , nhưng thay vào đó bạn chạy các ứng dụng trên root
window, đặt một hình lên đó hay chỉ là một màu đơn trên nó.
32
Window manager là phần giao tiếp chính giữa X Window system
và người dùng. Window manager cung cấp các chức năng như
window borders, menus, icons, virtual desktops, button bars, tool
bars, và cho phép user có thể customize nó .
Con trỏ là một mũi tên hoặc bất kỳ một hình nào dùng để chỉ vị
trí mouse (hay các thiết bị chỉ điểm khác ) tương ứng trên màn
hình.
Active window được gọi là ``focus,'' các windows còn lại trên
desktop là ``unfocused.''
Các cách làm việc của menus và icons trên X tương tự như trên
các họ windowing systems, vàc các luật chung nhất cũng được áp
dụng. Windows chỉ có text được gọi là terminal emulators, như là
xterm, nhưng nó cho phép bạn có nhiều hơn một xterm trong
cùng một lúc .
Khởi động X Window
Có rất nhiều cách để khởi động X server và khởi động các ứng
dụng clients. Phương pháp cụ thể phụ thuộc vào OS nào bạn đang
sử dụng và bạn sự dụng hệ Windows nào thay vì X-Window.
xdm (the X Display Manager)
Nếu bạn muốn luôn luôn có X-window chạy trên màn hình của
mình thì, administrator của bạn có thể cấu hình máy bạn có thể
dùng X Display Manager xdm. Chuơng trình này thường được hệ
thống khởi động lên bởi hệ thống khi boot và trông coi server
running và việc logged in của users . Nếu bạn đang chạy xdm,
bạn sẽ thấy Welcome window trên màn hình và hỏi username &
password của bạn. Công việc của bạn thật đơn giản là nhập
username & password vào và làm việc bình thường .
xinit (run manually from the shell)
Các sites hỗ trợ nhiều hơn một window system có thể chọn dùng
chương trình xinit để khởi động X manually. Nếu điều này đúng
trên hệ thống của bạn thì bạn có thể dùng các lệnh :
33
startx, x11, xstart để khởi động X-window.
DISPLAY NAME
Nhìn từ góc độ người sử dụng server có display name theo dạng
sau:
hostname: displaynumber.screennumber
Thông tin này được dùng bởi ứng dụng để phát hiện làm thế nào
nó có thể nối tới server và màn hình nào nó có thể sử dụng mặc
định (trên các máy có nhiều monitors):
Hostname: Tên máy cụ thể của máy mà màn hình vật lý được kết
nối. Nếu tên máy không được chỉ định thì cách dễ nhất là giao
tiếp với server trên cùng một máy .
Displaynumber: Từ "display" được dùng để chỉ tập hợp các
monitors mà chia sẻ bàn phím và các thiết bị chỉ điểm (mouse,
tablet, etc.). Hầu hết các workstations đều có 1 keyboard, và do
đó , chỉ có 1 display. Trong các hệ thống khác lớn hơn, đa người
dùng thường có nhiều màn hình do đó có nhiều hơn 1 người có
thể cùng làm việc . Ðể tránh nhầm lẫn mỗi màn hình trên một
máy được gán cho 1 con số (bắt đầu từ 0) khi X server cho màn
hình được khởi động. Display number phải luôn được ghi trong
tên màn hình.
Screennumber: Một vài màn hình chia sẻ 1 keyboard và một thiết
bị chỉ điểm giữa 2 hoặc nhiều monitors. Khi mỗi monitor có một
tập các windows, mỗi screen được gán một screen number (bắt
đầu từ 0) khi X server cho display này được khởi động.
XHOST
xhost - server access control program for X
Công dụng: cho phép một X-Client được phép xuất màn hình của
mình lên X server đang chạy.
Cách dùng
34
xhost [[+-]name ...]
Ví dụ :
# xhost +172.16.1.5
Cho phép X-window trên máy 172.16.1.5 xuất màn hình đồ hoạ
lên máy hiện tại.
Mô tả
Chương trình xhost được dùng để thêm hoặc bớt host names vào
một danh sách các kết nối được phép nối vào X server.
OPTIONS
Xhost chấp nhận các lệnh được mô tả dưới đây. Vì mục đích
security, chỉ các host được kiểm soát mới được kết nối vào X-
server. Có nghĩa là dù cho ta có export DISPLAY lên một máy
nào mà máy đó không cho phép ta kết nối thì việc xuất màn hình
cũng không thành công . Ðối với máy trạm unix, X-server chạy
cùng trên máy đó.
+name : Tên của máy được phép kết nối vào X server. name có
thể là IP address của máy đó (Trong trường hợp DNS có khai báo
host name đó ).
-name : Tên của máy bị xoá khỏi danh sách các X-Client được
phép kết nối vào X server.
Các thao tác phải làm để xuất một màn hình từ Computer A sang
Computer B
35
7. Chọn Window Manager
Thông thường khi cài đặt Linux có rất nhiều Window manager để
cho chúng ta chọn lựa . Nhưng đối với các version Linux sau này
người ta thường chọn GNOME mặc định cho chúng ta. Khiến đôi
khi ta lầm tưởng màn hình X Window chỉ có GNOME. Ðể chọn
các kiểu X Window ta có thể vào tập tin Xclients để thay đổi các
kiểu window bằng cách comment các dòng lại
#!/bin/bash
PREFERRED=
if [ -f /etc/sysconfig/desktop ]; then
PREFERRED=gnome-session
PREFERRED=startkde
36
/etc/sysconfig/desktop`" ]; then
PREFERRED=AnotherLevel
fi
fi
if [ -n "$PREFERRED" -a "$PREFERRED" !=
"AnotherLevel" ] && \
PREFERRED=`which $PREFERRED`
exec $PREFERRED
fi
if [ -z "$PREFERRED" ]; then
GSESSION=gnome-session
STARTKDE=startkde
fi
37
exec `which $STARTKDE`
fi
fi
rm -f $HOME/Xrootenv.0
rm -f /tmp/fvwmrc* 2>/dev/null
if [ -f $HOME/.wm_style ] ; then
WMSTYLE=`cat $HOME/.wm_style`
case "$WMSTYLE" in
Afterstep | AfterStep)
;;
;;
Fvwm95 | fvwm95)
;;
38
exec /usr/X11R6/bin/RunWM --FvwmMWM
;;
esac
fi
KDE
Nếu bạn chạy KDE lần đầu tiên thì màn hình sau sẽ xuất hiện
39
40
41
42
43
Các dialog trên xuất hiện cho phép ta thiết lập các tùy chọn theo
quốc gia, ngôn ngữ hiển thị và chế độ KDE , chi tiết hay không
chi tiết.
Và sau cùng khi cài đặt thành công, màn hình sau sẽ xuất hiện:
44
45
Quản trị người dùng
1. Giới thiệu người dùng và nhóm
1.1 Người dùng – users
Mọi truy nhập vào hệ thống đều thông qua một tài khoản của
người sử dụng. Mỗi tài khoản được thiết lập bởi người quản trị hệ
thống ngoại trừ tài khoản root (và một số tài khoản hệ thống).
Mặc dù một số hệ Linux chỉ có một người dùng nhưng cũng
không nên dùng tài khoản root cho các hoạt động thường ngày.
Hầu hết các hệ thống cho phép nhiều người truy nhập vào. Vậy
việc quản lý các tài khoản, các thư mục liên quan là một khía
cạnh quan trọng trong việc quản trị hệ thống Linux
Tài khoản của người quản trị
Trong quá trình cài đặt Linux chúng ta khởi tạo người sử dụng
root cho hệ thống. Đây là superuser, tức là người sử dụng đặc
biệt có quyền không giới hạn. Sử dụng quyền root chúng ta rất
thấy thoải mái vì chúng ta có thể làm được thao tác mà không
phải lo lắng gì đết xét quyền truy cập này hay khác. Tuy nhiên,
khi hệ thống bị sự cố do một lỗi lầm nào đó, chúng ta mới thấy sự
nguy hiểm khi làm việc như root.
Hãy chỉ dùng quyền root khi bạn không có cách nào khác.
Một điều quan trọng là không phải tài khoản superuser nào cũng
gọi là root, mặc dù nó được tạo mặc định là root khi cài đặt
Linux. Nó có thể có tên bất kỳ nhưng thường được dùng nhất
dưới tên root. Tài khoản này được định nghĩa là tài khoản có
UserID là 0 , các userID được định nghĩa trong file /etc/passwd
Cần phân biệt bạn đang login như root hay người sử dụng thường
thông qua dấu nhắc của shell.
login: tuanna
46
Password:
Last login: Sat Oct 28 14:30:15 from 172.16.10.199
[tuanna@pascal tuanna]$ su –l root
Password:
[root@pascal /root]#
Dòng thứ tư với dấu $ cho thấy ta đang kết nối như một người sử
dụng thường (tuanna). Dòng cuối cùng với dấu # cho thấy bạn
đang thực hiện các lệnh như root. Lệnh su user_name cho phép
bạn thay đổi login dưới một user khác (user_name) mà không
phải logout rồi login lại.
Bạn cần tạo các tài khoản (account) cho người sử dụng thường
sớm nhất có thể được (đầu tiên là cho bản thân bạn). Với những
server quan trọng và có nhiều dịch vụ khác nhau, thậm trí bạn có
thể tạo ra các superuser thích hợp cho từng dịch vụ để tránh dùng
root cho các công tác này. Ví dụ như superuser cho công tác
backup chỉ cần chức năng đọc (read-only) mà không cần chức
năng ghi.
47
Sử dụng e-mail để trao đổi thông tin
Sử dụng các chương trình chat, icq để trao đổi tin tức
Truy cập đến các file server trong công ty
Không được login vào các máy chủ, không được chạy
chương trình trên máy chủ
Tuy nhiên các users của phòng quản trị hệ thống có thể có các
quyền ưu tiên hơn:
Bao gồm các quyền của người dùng bình thường trên
Có quyền thực thi một số lệnh đặc biệt dành cho quản trị
hệ thống
Có thể login vào server.
Các nhóm được đặt quyền để các thành viên của nó có thể truy
nhập đến các thiết bị, file, hệ thống file hoặc toàn bộ máy tính mà
những người khác nhóm có thể bị hạn chế.
Các thông tin về nhóm được lưu trong file /etc/groups
suse:~ # more /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:
sys:x:3:
kmem:x:9:
wheel:x:10:
mail:x:12:cyrus
news:x:13:news
48
uucp:x:14:uucp,fax,root,fnet,tuanna
shadow:x:15:root,gdm
named:x:44:named
dbmaker:x:52:
oinstall:x:54:
dba:x:55:oracle
localham:x:56:dpbox
logmastr:x:57:
users:x:100:
nogroup:x:65534:root
suse:~ #
group name: Tên duy nhất xác định một nhóm, thường dài
tối đa 8 ký tự
group ID: Số duy nhất cho mỗi nhóm, được sử dụng bởi
hệ điều hành
49
users : Chứa danh sách mọi tên người dùng thuộc nhóm
đó, phân cách bởi dấu ",". Danh sách này không kể những
người dùng thuộc nhóm đó theo số hiệu nhóm đã được
ghi trong file /etc/passwd của người đó (tức là những
thành viên mặc định của nhóm).
Mọi hệ Linux đều có một số các nhóm mặc định thuộc hệ điều
hành. Các nhóm này thường là bin,mail,uucp,sys,… Do vậy
không nên cho một người sử dụng thuộc vào nhóm này vì chúng
sẽ có quyền tương đương như root. Chỉ có các đăng nhập hệ
thống mới cho phép truy nhập đến các nhóm của hệ điều hành .
Các nhóm mặc định của hệ thống:
1 root/wheel/system: thường dùng để cho phép người
dùng sử dụng lệnh su để chuyển lên quyền root.
2 deamon: dùng để chỉ những người làm chủ thư mục
spool ( mail, squid, lpd,…)
3 kmem: dùng cho các chương trình truy cập đến kernel,
bộ nhớ trực tiếp ( ps )
4 tty: làm chủ tất cả các file đặc biệt dùng làm việc với
terminal
Thêm nhóm
groupadd hoặc addgroup
Xoá nhóm
groupdel hoặc delgroup
50
có root mới có quyền thay đổi nó. Tập tin /etc/passwd được lưu
dưới dạng text như đại đa số các tập tin cấu hình của Unix.
[oracle@appserv oracle]$ more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
...
tuanna:x:501:501:Tuanna:/home/tuanna:/bin/bash
Mỗi user được lưu trong một dòng gồm 7 cột.
Cột 1 : tên người sử dụng
Cột 2 : mã liên quan đến passwd cho Unix chuẩn và ‘x’ đối với
Linux. Linux lưu mã này trong một tập tin khác /etc/shadow mà
chỉ có root mới có quyền đọc.
Cột 3:4 : user ID:group ID
Cột 5: Tên đầy đủ của người sử dụng. Một số phần mềm phá
password sử dụng dữ liệu của cột này để thử đoán password.
Cột 6: thư mục cá nhân
Cột 7: chương trình sẽ chạy đầu tiên sau khi login (thường là
shell) cho user
Tập tin mở đầu bởi superuser root. Chú ý là tất cả những user có
user ID = 0 đều là root!!! Tiếp theo là các user hệ thống. Đây là
các user không có thật và không thể login vào hệ thống. Cuối
cùng là các user bình thường.
51
tên khi hiển thị trong lệnh ls chẳng hạn) và nhìn chung các user
đặt mật khẩu "yếu", do đó hầu hết các Unix phiên bản mới đều
lưu mật khẩu trong một tập tin khác /etc/shadow và chỉ co root
được quyền đọc tập tin này.
Chú ý: Theo cách xây dựng mã hóa mật khẩu, chỉ có 2 cách phá
mật khẩu là vét cạn (brute force) và đoán. Phương pháp vét cạn,
theo tính toán chặt chẽ, là không thể thực hiện nổi vì đòi hỏi thời
gian tính toán quá lớn, còn đoán thì chỉ tìm ra những mật khẩu
ngắn, hoặc "yếu", ví dụ như những từ tìm thấy trong từ điển như
god, darling ...
52
-g initial_group: nhóm khởi tạo
-G group : nhóm mà người dùng thuộc vào
-p passwd: password của người dùng, password này phải
được mã hoá trước
-s shell: shell mặc định của user
-u uid : user identification
login : tên username.
Ví dụ:
[root@appserv oracle]# /usr/sbin/adduser foo
[root@appserv oracle]# passwd foo
Changing password for user foo
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[root@appserv oracle]#
Sau khi bạn tạo xong user bởi dòng đầu tiên của ví dụ trên, user
foo vẫn chưa kết nối được vì thiếu password. Bạn phải khởi tạo
password cho foo bởi lệnh passwd foo như thấy ở trên.
Vì vấn đề an ninh của máy Unix này và kéo theo sự an toàn của
toàn hệ thống mạng của bạn, rất quan trọng chọn đúng password.
Một password gọi là đúng nếu :
Có độ dài tối thiểu 8 ký tự.
Phối hợp giữa chữ thường, chữ hoa, số và các ký tự đặc biệt
Không liên quan đến tên tuổi, ngày sinh … của bạn và
người thân
Không có trong từ điển
53
Trong ví dụ trên, bạn khởi tạo người dùng và không quan tâm gì
đến nhóm (group) của người dùng. Rất tiện lợi nếu bạn tập hợp
nhiều người dùng vào chung một nhóm có cùng một chức năng
và cùng chia sẻ nhau dữ liệu. Khi bạn tạo người sử dụng như trên,
Linux sẽ tạo cho mỗi người một nhóm. Đọc tập tin /etc/passwd
ta thấy
[root@appserv oracle]# more /etc/passwd|grep foo
foo:x:1012:1013::/home/foo:/bin/bash
[root@appserv oracle]#
foo là user số 1012 và thuộc nhóm 1013.
Xem tập tin /etc/group ta thấy
[root@appserv oracle]# more /etc/group
root:x:0:root
……………….
users:x:100:
………………
foo:x:1013:
và ta có thể kết nạp foo vào nhóm users bằng cách thay số 1013
bằng 100, là group ID của users.
55
Hệ thống file EXT2
1. Giới thiệu hệ thống file ext2
Giới thiệu hệ thống file ext2 được giới thiệu vào đầu năm 1993
và được thiết kế riêng cho Linux. Nó có nhiều tính năng tăng
cường để khắc phục các hạn chế của các hệ thống file khác.
56
Bảng phân hoạch có thể chứa đến 4 partitions Để vượt qua giới
hạn này ta có thể định nghĩa một partition mở rộng với các
partition logic nằm trong partition mở rộng này.
Các loại 64 MB
partition
57
Command (m for help): m
n : tạo mới một partition
p : in ra partition table
q : thoát không thay đổi
t : đổi kiểu định dạng file ( DOS, FAT16, Fat 32, NTFS,…)
w : ghi những thay đổi vào đĩa và thoát
Ví dụ:
Command (m for help): p
Disk /dev/sda: 255 heads, 63 sectors, 4425
cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 8 4294 34435327+ 83 Linux
/dev/sda2 4295 4425 1052257+ 82 Linux swap
/dev/sda4 1 7 56196 fe LANstep
58
mkfs.ext3 : format đĩa thành ext3 file system
mkfs.msdos : format đĩa thành FAT 16
mkfs.vfat : format đĩa thành FAT 32
2.4 Cấu trúc inode
59
Hệ thống tập tin được OS Linux mount trong quá trình khởi động
tuân theo các thông số ghi trong tập tin /etc/fstab (một lần nữa,
nếu bạn nắm vững cú pháp của tập tin này, bạn có thể thay đổi nó
thông qua một chương trình soạn thảo văn bản text bất kỳ và có
một kiểu khởi động hệ thống tập tin như bạn muốn)
[root@blackboard root]# less /etc/fstab
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/sda2 swap swap defaults 0 0
/dev/sdb1 /export ext3 defaults 0 0
/dev/cdrom /mnt/cdrom iso9660
noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0
0
Cột 1 (fs_spec) : các trang thiết bị (device) cần mount
Cột 2 (fs_file) : điểm treo (mount point)
Cột 3 (fs_vfstype) : Kiểu của hệ thống tập tin,
Cột 4 (fs_mntops) : các options. Default = mount khi khởi động,
ro = read
only, user nếu cho phép user mount hệ thống tập tin này ...
Cột 5 (fs_freq) : hiện thị (dumped ) hay không hệ thống tập tin
Cột 6 (fs_passno) : có cần kiểm tra hay không bởi fsck
60
[root@blackboard root]# mount /dev/cdrom /mnt/cdrom
[root@blackboard root]# mount /dev/fd0 /mnt/floppy –t
msdos
Unmount một thư mục ta sử dụng lệnh umount ,lưu ý là umount
chứ không phải là unmount ( ở đây lệnh không có chữ n)
[root@blackboard root]# umount /mnt/cdrom
[root@blackboard root]# umount /mnt/floppy
Ngoài ra đối với cdrom ta có thể đóng mở hộc đựng cdrom ra
bằng lệnh eject mà không cần thông qua lệnh umount.
[root@blackboard root]# eject cdrom
Lấy cdrom ra khỏi ổ đĩa
[root@blackboard root]# eject -t
Đóng ổ cdrom lại
Lưu ý: khi có một user hay tiến trình nào đang tham chiếu đến
Cdrom thì ta không thể umount nó được . Hệ thống sẽ báo :
device busy !
4. Quản trị hệ thống file Ext2
Filesystem caching:
Nhằm tăng hiệu suất của toàn hệ thống file ext2, cache được
dùng để lưu giữ các dữ liệu được dùng thường xuyên. Thông tin
của filesystem được cache trong bộ nhớ, đôi khi được tham khảo
tới như là một bộ đệm đĩa, bởi vì việc truy cập vào bộ nhớ thì
nhanh hơn nhiều so với các đĩa vật lý. Cả hai quá trình đọc và ghi
đều được cache dữ liệu trên RAM. Hệ thống buffers đĩa càng lớn
thì filesystem đáp ứng càng nhanh cho các thao tác đọc ghi. Do
RAM là bộ nhớ tạm thời, buffer sẽ được ghi vào đĩa khi máy hoạt
động, hay khi filesystem được unmount.
61
Lệnh sync có thể dùng để ép kernel ghi tất cả các buffers vào các
file trên đĩa. Lệnh này có thể sử dụng không cần tham số.
Ví dụ: với lý do này có thể giải thích vì sao khi chép file vào đĩa
mềm ta thấy hệ thống chạy rất nhanh tuy nhiên lúc này thực sự
file chưa được ghi vào đĩa mềm. nếu để ý thì bạn sẽ thấy khoảng
5 giây sau đèn ổ mềm mới bắt đầu sáng. Nếu trước đó ta cứ
tưởng là đã chép xong file mà rút đĩa mềm ra thì sẽ không có file
nào được ghi vào đĩa cả.
63
myfile thay đối cuối cùng là 7/12 của năm hiện hành vào lúc
14:31.
Linux cho phép người sử dụng xác định các quyền đọc (read),
viết (write) và thực hiện (execute) cho từng đối tượng sở hữu
(the owner), nhóm (the group), và những người còn lại ("others"
hay everyone else).
Quyền đọc cho phép bạn đọc nội dung của tập tin. Đối với thư
mục quyền đọc cho phép bạn sử dụng lệnh ls để xem nội dung
của thư mục.
Quyền viết cho phép bạn thay đổi nội dung hay xóa tập tin. Đối
với thư mục, quyền viết cho phép bạn tạo ra, xóa hay thay đổi tên
các tập tin trong thư mục không phụ thuộc vào quyền cụ thể của
tập tin trong thư mục. Như vậy quyền viết của thư mục sẽ vô hiệu
hóa các quyền truy cập của tập tin trong thư mục và bạn đọc phải
để ý tính chất này.
Quyền thực hiện cho phép bạn gọi chương trình lên bộ nhớ bằng
cách nhập từ bàn phím tên của tập tin. Đối với thư mục, bạn chỉ
có thể "vào" thư mục bởi lệnh cd nếu bạn có quyền thực hiện với
thư mục .
Xem xét lại ví dụ trên :
-rw-r—r— 1 fido users 163 Dec 7 14:31 myfile
Ký tự đầu tiên của quyền là ký tự "–" ám chỉ rằng đó là một tập
tin bình thường. Nếu myfile là một thư mục, ta sẽ thấy vào dàó
ký tự d. Ngoài ra còn có c cho thiết bị ngoại vi dạng ký tự (như
bàn phím), b cho thiết bị ngoại vi dạng block (như ổ đĩa cứng).
Chín ký tự tiếp theo chia thành 3 nhóm, cho phép xác định quyền
của ba nhóm sở hữu (owner), nhóm (group) và còn lại (other).
Mỗi cặp ba này cho phép xác định quyền đọc, viết và thực hiện
theo thứ tự kể trên. Quyền đọc viết tắt là "r" ở vị trí đầu tiên,
quyền viết viết tắt bằng "w" ở vị trí thứ hai và vị trí thứ ba là
64
quyền thực hiện ký hiệu bằng chữ "x" . Nếu một quyền không
được cho, tại vị trí đó sẽ có ký tự "-" .
Trong trường hợp của tập tin myfile, sở hữu có quyền rw tức là
đọc và viết. Myfile không phải là một chương trình. Nhóm cùng
với còn lại chỉ có quyền đọc tập tin (read-only). Hình sau cho ta
thấy rõ hơn cách "đọc" quyền truy cập đối với tập tin.
Quyền truy cập cơ bản của tập tin
Song song với cách ký hiệu miêu tả bằng ký tự như ở trên, quyền
thao tác tập tin còn có thể cho dưới dạng 3 số . Đối với myfile,
quyền đó là 644. Điều quan trọng là phải hiểu cách ký hiệu bằng
số vì nó liên quan đến việc thay đổi các quyền sau này. Các số có
thể nhận tất cả các giá trị từ 0 đến 7. Số đầu tiên miêu tả quyền
của sở hữu, số thứ hai cho nhóm và số thứ ba cho còn lại.
Mỗi số là tổng của các quyền theo quy tắc sau :
read permission 4
Write permission 2
Execute permission 1
Vì vậy, một tập tin với quyền 751 có nghĩa là sở hữu có quyền
read, write, và execute bằng 4+2+1=7, Nhóm có quyền read và
execute bằng 4+1=5, và còn lại có quyền execute bằng 1.
65
Nếu chúng ta xem kỹ, chúng ta sẽ thấy mọi số từ 0 đến 7 đều
tương ứng với một tổ hợp duy nhất các quyền truy nhập tập tin.
0 or —-: No permissions at all
4 or r—: read-only
2 or -w-: write-only (rare)
1 or —x: execute
6 or rw-: read and write
5 or r-x: read and execute
3 or -wx: write and execute (rare)
7 or rwx: read, write, and execute
Nếu bạn quen với hệ nhị phân, hãy suy nghĩ bằng hệ thống nhị
phân. Khi đó, rwx sẽ như số nhị phân 3 bits. Nếu quyền được
cho, số nhị phân tương ứng sẽ bằng 1, ngược lại, nó sẽ bằng 0. Ví
dụ r-x sẽ là số nhị phân 101, và theo hệ thập phân sẽ là 4+0+1,
hay 5. —x sẽ tương ứng 001, hay 0+0+1 = 1 …
Chú ý: Người sử dụng có quyền đọc thì có quyền copy tập tin và
tập tin sao chép sẽ thuộc sở hữu người làm copy như minh họa
sau
tuanna@backup tuanna]$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1113 Oct 13 12:30 /etc/passwd
[tuanna@backup tuanna]$ cp /etc/passwd ./
[tuanna@backup tuanna]$ ls -l passwd
-rw-r--r-- 1 tuanna admin 1113 Oct 15 10:37 passwd
Các quyền mặc định khi tạo tập tin. Khi một tập tin hay thư
mục được tạo ra, permission mặc định sẽ được xác định bởi các
quyền trừ bớt bởi các quyền hiển thị bằng umask
[root@pascal tuanna]# su -l natuan
bash-2.05a$ umask
66
0022
bash-2.05a$ echo tao mot file > /tmp/aaa
bash-2.05a$ ls -la /tmp/
total 376
drwxrwxrwt 5 root root 40960 Dec 24 10:59 .
drwxr-xr-x 21 root root 4096 Dec 15 08:14 ..
-rw-r--r-- 1 natuan wheel 13 Dec 24 10:59 aaa
bash-2.05a$
Trong ví dụ trên, quyền mặc định lúc đầu xác định bởi
umask=002. Khi đó, tập tin tmp tạo ra sẽ có quyền là 664 và đó
chính là bù đến 6 của umask. Quyền thực hiện chương trình cần
được gán cố ý bởi người sử dụng hay các chương trình biên dịch.
Sau đó ta đổi giá trị của umask thành 022 và tập tin tạo ra có
quyền 644. Giá trị mặc định của các quyền thường được gán mỗi
khi người sử dụng login vào hệ thống thông qua các tập tin khởi
tạo biến môi trường như .profile, .bashrc. Đứng trên quan điểm
bảo mật hệ thống, giá trị 024 là tốt nhất, nó cho người cùng nhóm
có quyền đọc và không cho quyền nào với những người khác.
Lệnh chown, chgrp và chmod :
Đây là nhóm lệnh được sử dụng rất phổ biến, cho phép thay
quyền truy cập của tập tin hay thư mục. Chỉ có chủ sở hữu và
superuser mới có quyền thực hiện các lệnh này.
Cách dùng lệnh : chmod quyền_truy_cập_mới tên_file.
darkstar:~$ ls -l myfile
-rw-r—r— 1 fido users 114 Dec 7 14:31 myfile
darkstar:~$ chmod 345 myfile
darkstar:~$ ls -l myfile
—wxr—r-x 1 fido users 114 Dec 7 14:31 myfile
67
Ví dụ thay đổi và hiện thị cho thấy sự thay đổi quyền truy cập tập
tin myfile . Chú ý là ta có quyền cấp phát quyền thực hiện
(execute) mà không cần biết là tập tin có phải là một chương
trình hay không.
Phương pháp thay đổi tuyệt đối này có một số ưu điểm vì nó là
cách định quyền tuyệt đối, kết quả cuối cùng không phụ thuộc
vào quyền truy cập trước đó của tập tin. Đồng thời, dễ nói "thay
quyền tập tin thành bảy-năm-năm" thì dễ hơn là "thay quyền tập
tin thành đọc-viết-thực hiện, đọc-thực hiện, đọc-thực hiện"
Bạn cũng có thể thay đổi quyền truy nhập một cách tương đối và
dễ nhớ. Để chỉ ra nhóm quyền nào cần thay đổi, bạn có thể sử
dụng u (user), g (group), o (other), hay a (all). Tiếp theo đó là
dấu + để thêm quyền và – để bớt quyền. Cuối cùng là bản thân
các qyuyền viết tắt bởi r,w,x. Ví dụ như để bổ sung quyền thực
hiện cho nhóm và còn lại, ta nhập vào dòng lệnh
darkstar:~$ chmod go+x myfile
Đây là cách thay đổi tương đối vì kết quả cuối cùng phụ thuộc
vào quyền đã có trước đó mà lệnh này không liên quan đến. Trên
quan điểm bảo mật hệ thống, cách thay đổi tuyệt đối dẫn đến ít
sai sót hơn. Thay đổi quyền truy cập của một thư mục cũng được
thực hiện giống như đối với một tập tin. Chú ý là nếu bạn không
có quyền thực hiện (execute) đối với một thư mục, bạn không thể
thay đổi thư mục cd vào thư mục đó. Mọi người sử dụng có
quyền viết vào thư mục đều có quyền xóa tập tin trong thư mục
đó, không phụ thuộc vào quyền của người đó đối với tập tin. Vì
vậy, đa số các thư mục có quyền drwxr-xr-x. Như vậy chỉ có
người sở hữu của thư mục mới có quyền tạo và xóa tập tin trong
thư mục. Ngoài ra, thư mục còn có một quyền đặc biệt, đó là cho
phép mọi người đều có quyền tạo tập tin trong thư mục, mọi
người đều có quyền thay đổi nội dung tập tin trong thư mục,
nhưng chỉ có người tạo ra mới có quyền xóa tập tin. Đó là sticky
bit cho thư mục. Thư mục /tmp thường có sticky bit bật lên
68
drwxrwxrwt 7 root root 16384 Oct 21 15:33 tmp
Ta thấy chữ t cuối cùng trong nhóm các quyền, thể hiện cho
sticky bit của /tmp. Để có sticky bit, ta sử dụng lệnh chmod
1????????? tên_thư_mục.
Cách dùng lệnh chown:
chown tên_user tên_tập_tin
chown tên_user tên_thư_mục
chown -R tên_user tên_thư_mục
Dòng lệnh cuối cùng với tư chọn –R (recursive) cho phép thay
đổi người sở hữu của thư mục tên_thư_mục và tất cả các thư mục
con của nó. Điều này cũng đúng với lệnh chmod, chgrp.
Liên kết (link) tập tin: Trong Unix có 2 hình thức liên kết
hoàn toàn khác nhau, đó là hard link và soft link hay symbolic
link. Hard link cho phép tạo một tên mới cho tập tin. Các tên này
có vai trò hoàn toàn như nhau và tập tin chỉ bị hoàn toàn xóa bỏ
khi hard link cuối cùng của nó bị xóa. Lệnh ls –l cho phép hiển
thị số hard link đến tập tin. Symbolic link có chức năng giống
như shortcut của MS Windows. Khi ta đọc/ghi soft link, ta
đọc/ghi tập tin; khi ta xóa symbolic link, ta chỉ xóa symbolic link
và tập tin được giữ nguyên. Link được tạo bởi lệnh ln . Tự chọn
ln –s cho phép tạo symbolic link. Ví dụ
[tuanna@pascal tuanna]$ls -l
-rw------- 1 tuanna pkt 517 Oct 27 12:00 mbox
drwxr-xr-x 2 tuanna pkt 4096 Aug 31 17:50 security
[tuanna@pascal tuanna]$ln –s mbox mybox
[tuanna@pascal tuanna]$ln –s security securproj
[tuanna@pascal tuanna]$ln –l
-rw------- 1 tuanna pkt 517 Oct 27 12:00 mbox
lrwxrwxrwx 1 tuanna pkt 4 Oct 27 17:57 mymail ->
mbox
69
lrwxrwxrwx 1 tuanna pkt 8 Oct 27 17:57 secrproj ->
security
drwxr-xr-x 2 tuanna pkt 4096 Aug 31 17:50 security
[tuanna@pascal tuanna]$
Bạn đọc có thể thấy khá rõ kết quả của symbolic link qua thí dụ
trên.
Symbolic link rất có nhiều ứng dụng. Ví dụ như một tập tin XXX
của một chương trình YYY nằm trong thư mục /var/ZZZ. Nếu
phân mảnh của /var/ZZZ bị quá đầy, ta có thể "sơ tán" XXX qua
một thư mục khác thuộc phân mảnh khác và tạo một link thế vào
đó mà chương trình YYY vẫn không hề "hay biết" vì nó vẫn truy
cập đến /var/ZZZ/XXX như thường lệ.
7. Cây thư mục
Cây thư mục của Linux. Đối với hệ điều hành Linux, không có
khái niệm các ổ đĩa khác nhau. Sau quá trình khởi động, toàn bộ
các thư mục và tập tin được "gắn" lên (mount) và tạo thành một
hệ thống tập tin thống nhất, bắt đầu từ gốc ‘/’
Hình trên là cây thư mục của đa số các Unix. Với cây thư mục
trên ta không thể nào biết được số lượng ổ đĩa cứng, các phân
70
mảnh (partition) của mỗi đĩa và sự tương ứng giữa các phân
mảnh và thư mục như thế nào.
Chúng ta có thể chia đĩa cứng thành nhiều phân mảnh (partition).
Mỗi partition là một hệ thống tập tin (file system) độc lập. Sau
đó, các hệ thống tập tin này được ‘gắn ‘ (mount) vào hệ thống tập
tin thống nhất của toàn hệ thống. Chúng ta hoàn toàn có thể gắn
thêm một đĩa cứng mới, format rồi mount vào hệ thống tập tin
dưới tên một thư mục nào đó và tại một điểm (mount point) nào
đó. Đối với các chương trình chạy trên Unix, không hề có khái
niệm một thư mục nằm ở đĩa nào hay partition nào.
Hình sau đây cho thấy sự tương quan giữa vị trí vật lý trên đĩa và
vị trí logic trong cây tập tin.
Thư mục /usr/home là thư mục con của /usr trong cây thư mục,
nhưng trên đĩa vật lý, đây là hai phân mảnh (partition) cạnh nhau.
Thư mục /etc
Thư mục chứa các file cấu hình tất cả các dịch vụ và các tham số
hệ thống
Thư mục /dev
Thư mục chứa các thiết bị phần cứng. Có 2 dạng thiết bị là
character devices và block devices.
Ví dụ:
[root@starturn dev]# ll |grep ttyS
71
lrwxrwxrwx 1 root root 5 Dec 8 12:27 mouse -> ttyS1
crw-rw---- 1 root uucp 4, 64 Dec 8 21:24 ttyS0
crw-rw---- 1 root uucp 4, 65 Dec 8 21:27 ttyS1
crw-rw---- 1 root uucp 4, 66 Aug 30 19:31 ttyS2
crw-rw---- 1 root uucp 4, 67 Aug 30 19:31 ttyS3
crw-rw---- 1 root uucp 4, 68 Aug 30 19:31 ttyS4
brw-rw---- 1 root disk 3, 0 Aug 30 19:31 hda
brw-rw---- 1 root disk 3, 1 Aug 30 19:31 hda1
brw-rw---- 1 root disk 3, 2 Aug 30 19:31 hda2
brw-rw---- 1 root disk 3, 3 Aug 30 19:31 hda3
brw-rw---- 1 root disk 3, 64 Aug 30 19:31 hdb
brw-rw---- 1 root disk 3, 65 Aug 30 19:31 hdb1
Thư mục /bin, /sbin, /usr
Thư mục chứa các tập tin thực thi, các lệnh cấu hình và quản trị
hệ thống
[root@starturn bin]# ll
total 7072
-rwxr-xr-x 1 root root 4330 Aug 30 16:00 arch
-rwxr-xr-x 1 root root 10296 Aug 4 12:48 aumix-minimal
lrwxrwxrwx 1 root root 4 Dec 8 11:14 awk -> gawk
-rwxr-xr-x 1 root root 626188 Aug 23 16:01 bash
lrwxrwxrwx 1 root root 4 Dec 8 11:13 bash2 -> bash
lrwxrwxrwx 1 root root 3 Dec 8 11:15 bsh -> ash
-rwxr-xr-x 1 root root 19154 Jul 1 05:56 cat
-rwxr-xr-x 1 root root 18136 Sep 2 07:21 chgrp
-rwxr-xr-x 1 root root 18072 Sep 2 07:21 chmod
72
-rwxr-xr-x 1 root root 20120 Sep 2 07:21 chown
-rwxr-xr-x 1 root root 49548 Sep 2 07:21 cp
-rwxr-xr-x 2 root root 64706 Jun 23 10:37 cpio
-rwxr-xr-x 1 root root 21854 Jul 1 05:56 cut
-rwxr-xr-x 1 root root 40600 Aug 29 16:56 date
-rwxr-xr-x 1 root root 32044 Sep 2 07:21 dd
-rwxr-xr-x 1 root root 28972 Sep 2 07:21 df
-rwxr-xr-x 1 root root 6277 Aug 30 16:00 dmesg
lrwxrwxrwx 1 root root 8 Dec 8 11:13 dnsdomainname ->
hostname
lrwxrwxrwx 1 root root 8 Dec 8 11:13 domainname ->
hostname
73
lrwxrwxrwx 1 root root 10 Dec 8 11:12 mail ->
spool/mail
drwxr-xr-x 2 named named 4096 Dec 8 11:23 named
drwxr-xr-x 2 root root 4096 Feb 6 1996 nis
drwxr-xr-x 2 root root 4096 Apr 13 2000 opt
drwxr-xr-x 2 root root 4096 Feb 6 1996 preserve
drwxr-xr-x 9 root root 4096 Dec 8 21:26 run
drwxr-xr-x 16 root root 4096 Dec 8 12:25 spool
drwxrwxrwt 2 root root 4096 Dec 8 12:27 tmp
drwx------ 2 root root 4096 Jun 23 20:42 tux
drwxr-xr-x 7 root root 4096 Dec 8 12:24 www
drwxr-xr-x 3 root root 4096 Dec 8 12:21 yp
74
Giới thiệu SHELL, vi và Emacs
1. Giới thiệu
Shell là một chương trình dùng để thực hiện các lệnh của người
dùng. Shell cung cấp cho người dùng một giao diện cho Linux
Kernel và các phần cứng của nó. Shell vừa là một trình thông
dịch lệnh ( tương tự như COMMAND.COM trong DOS) và vừa
là một ngôn ngữ lập trình.
Lưu ý: Shell là case-sensitive, phân biệt chữ hoa chữ thường.
1.1 Lệnh ls :
Lệnh ls : liệt kê tất cả các file trong thư mục. ls có các
tham số sau:
75
Tham số Công dụng
76
2.1 Giới thiệu
Biến môi trường có giá trị chỉ cho shell hiện hành. Dùng lệnh set
để xem thông tin về các biến môi trường :
[root@blackboard ]# set
BASH=/bin/bash
BASH_ENV=/root/.bashrc
BASH_VERSION='2.05a.0(1)-release'
COLORS=/etc/DIR_COLORS
COLUMNS=111
DIRSTACK=()
EUID=0
GROUPS=()
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
HOSTNAME=blackboard
HOSTTYPE=i686
MACHTYPE=i686-pc-linux-gnu
MAIL=/var/spool/mail/root
77
MAILCHECK=60
OLDPWD=/root
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/
sbin:/usr/bin:/usr/X11R6/bin:/root/bin
PIPESTATUS=([0]="0")
PPID=20931
PS2='> '
PS4='+ '
PWD=/etc/xinetd.d
QTDIR=/usr/lib/qt3-gcc2.96
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:histexpand:monitor:his
tory:interactive-comments:emacs
SHLVL=1
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SSH_TTY=/dev/pts/0
SUPPORTED=en_US.iso885915:en_US:en
78
TERM=vt100
UID=0
USER=root
USERNAME=root
_=env
langfile=/root/.i18n
[root@blackboard xinetd.d]#
192.168.1.1:0.0
[root@blackboard root]#
79
3. Trình soạn thảo văn bản vi
3.1 Giới thiệu
Chương trình vi là một chương trình soạn thảo văn bản phổ biến
trên tất cả các hệ điều hành Unix. Đầu tiên, vi được thiết kế cho
mục đích lập trình. Dần dần do tính tiện dụng của nó, vi được
xem như là một trình soạn thảo văn bản mặc định cho Unix. Cách
phát âm vi đọc là "vi – ai" .
80
Khi chuyển đổi qua các chế độ ta dùng phím ESC . Các phím sau
kết hợp với ESC sẽ cho ta các chế độ soạn thảo khác nhau:
ESC - i Chế độ chèn (insert) và đặt text về phía bên trái
của con trỏ
ESC - a Chế độ chèn sau (append) và đặt text về phía bên
phải của con trỏ
ESC - I Chèn text ở đầu hàng.
ESC - A Chèn text ở cuối hàng.
3.4 Các mode khác
w Lưu file
q Thoát vi
! Làm không cần hỏi lại
/ Tìm kiếm
81
4. Chương trình Emacs
4.1 Giới thiệu
EMACS có tên đầy đủ là Editor MACros, là một chương trình
miễn phí được phân phối theo chuẩn GNU GPL. Emacs hầu như
được đi kèm trong hầu hết các phiên bản của Linux và đã được
chuyển sang hầu hết các hệ điều hành kể cả Windows.
Emacs không chỉ là một trình soạn thảo văn bản đơn thuần. Nó
còn có các tính năng khác :
Email client
Spell-checking
News Client
Syntax coloring : cho các ngôn ngữ lập trình trong Linux
( chỉ trên mode X-window)
82
4.2 Các lệnh emacs
Ctrl-x-f : Mở file
Ctrl-x-d : Open Directory
Ctrl-x-i : Chèn file
Ctrl-x-w : Ghi với tên khác
Ctrl-x-c : Thoát emacs
Ctrl-Shiftx- _ : Undo
Ctrl-w : Cut
83
Ctrl-y : Paste
Ctrl-k : Cut một hàng từ vị trí cursor
Ctrl-d : xoá ký tự tại vị trí con trỏ
Ctrl – G : Huỷ lệnh đang thực thi
4.3 Tìm kiếm và thay thế trong emacs
Tìm kiếm
Ctrl – s : Tìm từ trên xuống
Ctrl – R : Tìm từ dưới lên
Thay thế
Sử dụng menu: F10 Edit Search Replace
84
Quản trị hệ thống
1. Quản lý tiến trình trong Linux
1.1 Giới thiệu
Linux là một HDH đa người sử dụng, đa tiến trình. Linux thực
hiện tất cả các công việc của người sử dụng cũng như của hệ
thống bằng các tiến trình (process). Do đó, hiểu được cách điều
khiển các tiến trình đang hoạt động trên HDH Linux rất quan
trọng cho công việc quản trị hệ thống.
Định nghĩa : Tiến trình (process) là một chương trình đơn
chạy trên không gian địa chỉ ảo của nó . Cần phân biệt tiến trình
với lệnh vì một dòng lệnh trên shell có thể sinh ra nhiều tiến
trình. Dòng lệnh sau
nroff -man ps.1 | grep kill | more
sẽ sinh ra 3 tiến trình khác nhau.
Có 3 loại tiến trình chính trên Linux :
Tiến trình với đối thoại (Interactive processes) : là tiến
trình khởi động và quản lý bởi shell, kể cả tiến trình
forthground hoặc background.
Tiến trình batch (Batch processes) : Tiến trình không
gắn liền đến bàn điều khiển (terminal) và được nằm trong
hàng đợi để lần lượt thực hiện.
Tiến trình ẩn trên bộ nhớ (Daemon processes) : Là các
tiến trình chạy dưới nền (background). Các tiến trình này
thường được khởi động từ đầu. Đa số các chương trình
server cho các dịch vụ chạy theo phương thức này. Đây
là các chương trình sau khi được gọi lên bộ nhớ, đợi thụ
động các yêu cầu chương trình khách (client) để trả lời
sau các cổng xác định (cổng là khái niệm gắn liền với
85
giao thức TCP/IP BSD socket). Hầu hết các dịch vụ trên
Internet như mail, Web, Domain Name Service … chạy
theo nguyên tắc này. Các chương trình được gọi là các
chương trình daemon và tên của nó thường kết thúc bằng
ký tự "d" như named, inetd … Ký tự "d" cuối được phát
âm rời ra như "đê " trong tiếng việt. Ví dụ named được
phát âm là "nêm đê".
Cách đơn giản nhất để kiểm tra hệ thống tiến trình đang chạy là
sử dụng lệnh ps (process status). Lệnh ps có nhiều tùy chọn
(option) và phụ thuộc một cách mặc định vào người login vào hệ
thống. Ví dụ :
$ ps
PID TTY STAT TIME COMMAND
41 v01 S 0:00 -bash
134 v01 R 0:00 ps
cho phép hiển thị các tiến trình liên quan tới một người sử dụng
hệ thống.
Cột đầu tiên là PID (Process IDentification). Mỗi tiến trình của
Linux đều mang một số ID và các thao tác liên quan đến tiến
trình đều thông qua số PID này. Gạch nối – trước bash để thông
báo đó là shell khởi động khi người sử dụng login.
Để hiển thị tất cả các process, ta có thể sử dụng lệnh ps –a. Một
người sử dụng hệ thống bình thường có thể thấy tất cả các tiến
trình, nhưng chỉ có thể điều khiển dược các tiến trình của mình
tạo ra. Chỉ có superuser mới có quyền điều khiển tất cả các tiến
trình của hệ thống Linux và của người khác. Lệnh ps –ax cho
phép hiển thị tất cả các tiến trình, ngay cả những tiến trình không
gắn liền đến có bàn điều khiển (tty). Chúng ta có thể coi các tiến
trình đang chạy cùng với dòng lệnh đầy đủ để khởi động tiến
trình này bằng ps –axl. Lệnh man ps cho phép coi các tham số tự
chọn khác của lệnh ps .
86
1.2 Dừng một tiến trình
Lệnh kill : Trong nhiều trường hợp, một tiến trình có thể bị
treo, một bàn phím điều khiển không trả lời các lệnh từ bàn phím,
một chương trình server cần nhận cấu hình mới, card mạng cần
thay đổi địa chỉ IP …, khi đó chúng ta phải dừng (kill) tiến trình
đang có vấn đề . Linux có lệnh kill để thực hiện các công tác này.
Trước tiên bạn cần phải biết PID của tiến trình cần dừng thông
qua lệnh ps. Xin nhắc lại chỉ có super-user mới có quyền dừng tất
cả các tiến trình, còn người sử dụng chỉ được dừng các tiến trình
của mình. Sau đó, ta sử dụng lệnh
kill -9 PID_của_ tiến_trình
Tham số –9 là gửi tín hiệu dừng không điều kiện chương trình.
Chú ý nếu bạn logged vào hệ thống như root, nhập số PID chính
xác nếu không bạn có thể dừng một tiến trình khác. Không nên
dừng các tiến trình mà mình không biết vì có thể làm treo máy
hoặc dịch vụ.
Một tiến trình có thể sinh ra các tiến trình con trong quá trình
hoạt động của mình. Nếu bạn dừng tiến trình cha, các tiến trình
con cũng sẽ dừng theo, nhưng không tức thì . Vì vậy phải đợi một
khoảng thời gian và sau đó kiểm tra lại xem tất cả các tiến trình
con có dừng đúng hay không. Trong một số hãn hữu các trường
hợp, tiến trình có lỗi nặng không dừng được, phương pháp cuối
cùng là khởi động lại máy.
Lệnh at : Linux có các lệnh cho phép thực hiện các tiến trình ở
thời điểm mong muốn thông qua lệnh at. Thời điểm thực hiện
công việc được nhập vào như tham số của lệnh at.
$ at 1:23<Return>
lp /usr/sales/reports/*<Return>
<^D>
Dấu ^D có nghĩa là cần giữ phím <Ctrl>, sau đó nhấn phím D và
bỏ cả 2 phím cùng một lúc.
87
Sau khi bạn kết thúc lệnh at, dòng thông báo giống như sau sẽ
hiện ra màn hình
job 756001.a at Sat Dec 21 01:23:00 2000
Số 756001.a cho phép tham chiếu tới công tác (job) đó, để dùng
nếu bạn muốn xóa job đó bởi lệnh
at –r job_number
Lệnh này có thể khác với các phiên bản khác nhau. Ví dụ đối với
RedHat 6.2 lệnh xóa một job là atrm job_number . Trong mọi
trường hợp coi manpage để biết các lệnh và tham số cụ thể.
Bạn có thể dùng quy tắc chuyển hướng (redirect) để lập lịch trình
cho nhiều lệnh cùng một lúc
at 10:59 < tập_lệnh
trong đó, tập_lệnh là một tập tin dạng text có các lệnh. Để kiểm
tra các tiến trình mà bạn đã nhập vào, dùng lệnh at –l
Lệnh batch. Khác với lệnh at là tiến trình được thực hiện vào các
thời điểm do người sử dụng chọn, lệnh batch để cho hệ thống tự
quyết định khi nào tiến trình được thực hiện dựa trên mức độ tải
của hệ thống. Thường là các tiến trình batch được thi hành khi
máy bận dưới 20%. Các tiến trình in ấn, cập nhật dữ liệu lớn …
rất thích hợp với kiểu lệnh này. Cú pháp của batch như sau :
$ batch<Return>
lp /usr/sales/reports/*<Return>
<^D>
1.3 Crond
Các lệnh at và batch cho phép lập kế hoạch thực hiện tiến trình
một lần. Linux còn cho phép lập kế hoạch có tính chất chu kỳ
thông qua lệnh cron (viết tắt của chronograph) và các tập tin
crontabs. Chương trình daemon cron (crond) được kích hoạt
ngay từ đầu với khởi động của hệ thống. Khi khởi động, cron
88
xem có các tiến trình trong hàng đợi nhập vào bởi lệnh at, sau đó
xem xét các các tập tin crontabs xem có tiến trình cần phải thực
hiện hay không rồi "đi ngủ ":-) . Cron sẽ "thức dậy" mỗi phút để
kiểm tra xem có phải thực hiện tiến trình nào không. Super-user
và user đều có thể đặt hàng các tiến trình sẽ được cho phép thực
hiện bởi cron. Để làm điều này, bạn cần tạo một tập tin text theo
cú pháp của cron như sau.
Phút giờ ngày_của_tháng tháng_của_năm ngày_của_tuần
lệnh
0 8 * * 1 /u/sartin/bin/status_report
cho phép /u/sartin/bin/status_report được thực hiện vào 8giờ 00
phút các thứ hai.
Mỗi hàng chứa thời gian và lệnh. Lệnh sẽ được cron thực hiện tại
thời điểm ghi ở trước trên cùng dòng đó. Năm cột đầu liên quan
tới thời gian có thể thay thế bằng dấu sao "*" với ý nghĩa là "với
mọi". Các giá trị có thể cho các trường là :
minute (0-59)
hour (0-23)
day of month (1-31)
month of year (1-12)
day of week (0-6, 0 is Sunday)
Command (rest of line)
Sau đó dùng lệnh crontab để cài đặt tập tin lệnh vào thư mục
/usr/spool/cron/crontabs. Mỗi người sử dụng sẽ có một tập tin
crontab trùng tên mình (user name) để lưu tất cả các lệnh cần
thực hiện theo chu kỳ trong thư mục này. Cú pháp sử dụng
crontab:
crontab tên_tập_tin_lệnh
89
Lệnh top. Lệnh top cho phép hiển thị sự hoạt động của các tiến
trình, đặc biệt là các thông tin về tài nguyên hệ thống cũng như
việc sử dụng tài nguyên đó của từng tiến trình. Với lệnh đơn giản
top, ta sẽ có
10:08am up 4 days, 1:41, 1 user, load
average: 0.00, 0.01, 0.00
90
kswapd
Số % máy rảnh (idle) in đậm trên là rất quan trọng. Một máy rảnh
dưới 50% là một máy quá tải và cần được xem xét. Lệnh top còn
cho phép theo dõi xem có tiến trình nào chiếm dụng quá nhiều
thời gian CPU cũng như truy cập đĩa không.
Ngoài ra, một số lệnh khác như vmstat. mpstat, sar, iostat ...
cũng cho phép xem xét với các mục đích khác nhau hoạt động
của máy chủ
2. Quản trị phần mềm trong Linux
2.1 Redhat Package Manager - rpm
91
Việc quản lý các phần mềm đi kèm với Linux có thể là một việc
dễ dàng cũng như có thể trở nên vô cùng khó khăn phức tạp.
Redhat đã phát triển một hệ thống quản lý phần mềm cho Linux
có giao diện thân thiện và hiệu quả gọi là RPM. RPM là chương
trình quản lý các package nó tự động làm các quá trình như cài
đặt, nâng cấp, xoá và bảo trì phần mềm trong Linux. Do tính tiện
dụng của nó, RPM được hỗ trợ bởi hầu hết các Linux khác như
SuSe, Mandrake, Caldera, Corell. Ngày nay, RPM còn được dùng
trên các hệ Unix khác như:
OS/2
Solaris
SCO Unix
HP-UX
FreeBSD
NetBSD
Be OS
92
Một vài công cụ tiện ích khác cho rpm là dùng kết hợp với các
tham số -i , -l, --test .
-i : Information
-l : list
Ví dụ:
[root@starturn root]# rpm -qi telnet
Description :
93
[root@starturn root]#
/usr/bin/ftp
/usr/bin/pftp
/usr/share/man/man1/ftp.1.gz
/usr/share/man/man1/pftp.1.gz
/usr/share/man/man5/netrc.5.gz
[root@starturn root]#
95
Gọi vi chạy lên sau đó bấm Ctrl-Z để cho vi thành background
job.
[root@starturn proc]# ps –ef |grep vi
root 11663 1359 0 22:35 pts/2 00:00:00 vim
Sau đó vào /proc ta sẽ thấy ngay có một thư mục là PID của vi :
11663
[root@starturn proc]# ls |grep 11663
11663
Sau đó ta cd vào 11663 sẽ thấy các trạng thái của vi đang chạy.
Và khi ta kết thúc vi, thư mục 11663 không còn tồn tại trong
/proc nữa.
96
none 127724 0 127724 0% /dev/shm
[root@starturn root]#
3.3 Lệnh sudo
Lệnh Sudo: Super user do , cho phép quản trị hệ thống nâng cấp
quyền truy xuất đến một tập lệnh quản trị hệ thống cho một vài
users thường. Với sự trợ giúp của sudo, người dùng có thể làm
một số thao tác cấu hình hệ thống mà không cần phải có quyền
root.
Cấu hình sudo: /etc/sudoers
[root@starturn etc]# more sudoers
# sudoers file.
# Defaults specification
97
%tuanna ALL=(ALL) NOPASSWD: ALL
# Samples
Stopping httpd: [ OK ]
[tuanna@starturn tuanna]$
98
Dec 8 17:46:42 localhost kernel: Linux version
2.4.18-14
4.2 /var/log/secure
99
Lưu các thông tin thống kê login, logout và các ipaddress truy
cập vào hệ thống
Ví dụ:
[root@starturn log]# more secure
100
Dec 8 22:07:09 localhost useradd[1432]: new user:
name=tuanna, uid=500, gid=500, home=/home/tuanna,
shell=/bin/bash
[root@starturn log]#
4.3 /var/log/boot
Lưu các thông tin khi hệ thống mới khởi động
Dec 8 22:35:24 localhost network: Shutting down
interface eth0: succeeded
101
net.ipv4.conf.default.rp_filter = 1
102
Linux Networking
1. Routing tĩnh và bảng routing
1.1 Common Routing Configurations
Đầu tiên ,chúng ta phải phân biệt sự khác nhau giữa routing và
giao thức routing. Tất cả các hệ thống dẫn đường dữ liệu, nhưng
không phải tất cả các hệ thống đều chạy các giao thức routing.
Routing là một hành động chuyển các gói tin dựa trên thông tin
chứa trong bảng routing. giao thức routing là chương trình trao
đổi thông tin dùng để xây dựng bảng routing.
Một cấu hình routing của mạng không phải lúc nào cũng yêu cầu
một giao thức routing. Trong nhiều trường hợp khi thông tin
routing không thay đổi, người quản trị hệ thống thường xây dựng
bảng routing thủ công. Một vài mạng không có kết nối vào bất cứ
mạng TCP/IP nào khác và do đó không yêu cầu người quản trị hệ
thống đó xây dựng bảng routing nào cả. Có ba loại cấu hình
routing cơ bản là:
Minimal routing
Mạng hoàn toàn tách biệt với các mạng TCP/IP khác chỉ cần
minimal routing. Bảng minimal routing thường usually được xây
dựng bởi ifconfig khi card mạng được cấu hình. Nếu mạng của
bạn không có kết nối trực tiếp đến các mạng TCP/IP khác, và nếu
bạn không dùng subnet, thì chỉ cần có 1 bảng routing là đủ.
Routing tĩnh
Một mạng với một số lượng giới hạn các gateways đến các mạng
TCP/IP khác có thể được cấu hình với static routing. Khi một
mạng chỉ có một gateway, static route là lựa chọn tốt nhất. Bảng
routing tĩnh được xây dựng một cách thủ công bởi người quản trị
hệ thống dùng lệnh route. Bảng routing tĩnh không hiệu chỉnh khi
103
mạng thay đổi, do đó chúng chạy tốt nhất khi các con đường
không thay đổi .
Routing động
Một mạng với nhiều hơn một con đường kết nối đến cùng một
đích có thể sử dụng routing động. Bảng routing động được xây
dựng từ thông tin trao đổi bởi các giao thức routing. Các giao
thức được thiết kế để phân phối thông tin mà sẽ điều chỉnh một
cách động các các con đường để phản ánh sự thay đổi tình trạng
của mạng. Giao thức routing xử lý nhiều tình huống routing phức
tạp nhanh hơn và chính xác hơn người quản trị hệ thống có thể
làm. Giao thức routing được thiết kế không chỉ để chuyển đến các
con đường dự phòng khi đường chính bị tắt nghẽn mà chúng còn
được thiết kế để quyết định đường nào là tốt nhất để đến đích.
Trên bất kỳ mạng nào có nhiều đường đến cùng một đích, giao
thức routing động nên được dùng .
Các route được xây dựng một cách tự động bằng ifconfig, một
cách thủ công bởi quản trị hệ thống, hay động bởi giao thức
routing. Nhưng không cần biết bằng cách nào, cuối cùng chúng
cũng kết thúc tại bảng routing .
1.2 Bảng routing Minimal
Hãy xem nội dung của bảng routing được xây dựng bằng ifconfig
khi card mạng peanut's được cấu hình :
104
% netstat -rn
Bảng routing
Destination Gateway Flags Refcnt Use Interface
127.0.0.1 127.0.0.1 UH 1 132 lo0
172.16.12.0 172.16.12.2 U 26 49041 1e0
Dòng đầu tiên là loopback route đến to localhost được tạo khi lo0
được cấu hình. Các dòng khác là đường dẫn đến mạng
172.16.12.0 thông qua card le0. Địa chỉ 172.16.12.2 không phải
là địa chỉ remote gateway. Nó là địa chỉ gán cho card mạng le0
trên mạng peanut.
Hãy xem các trường cờ (Flags) trên mỗi hàng. Các hàng có U
(up) flag được thiết lập, chỉ ra rằng chúng sẵn sàng để dùng,
nhưng không hàng nào có cờ G (gateway) được thiết lập. Cờ G
chỉ ra một gateway ngoại được dùng . Cờ G không được thiết lập
bởi vì cả 2 đường là kết nối trực tiếp đế các card mạng cục bộ,
không thông qua gateways ngoại.
Mặc dù mỗi bảng có đường host-specific, hầu hết các con đường
dẫn đến các mạng. Một lý do mạng các con đường được dùng là
105
để giảm kích thước của bảng routing. Một tổ chức có thể chỉ có
một mạng nhưng hàng trăm hosts. Internet có hàng ngàn mạng
networks nhưng có hàng triệu hosts. Bảng routing với a route cho
mỗi host sẽ trở nên không thể quản lý nổi.
Để kiểm tra bảng routing trên peanut, đầu tiên ping host khác trên
mạng cục bộ :
% ping -s almond
PING almond.nuts.com: 56 data bytes
64 bytes từ almond.nuts.com (172.16.12.1):
icmp_seq=0. time=11. ms
64 bytes từ almond.nuts.com (172.16.12.1):
icmp_seq=1. time=10. ms
^C
----almond.nuts.com PING Thống kê ----
2 packets transmitted, 2 packets nhận được, 0%
packet loss
round-trip (ms) min/avg/max = 10/10/11
ping hiển thị một hàng output cho mỗi ICMP
ECHO_RESPONSE nhận được. Khi ping bị ngắt, nó hiển thị một
vài thống kê tóm tắt. Tất cả đều chỉ rằng giao tiếp thành công với
almond. Nhưng nếu ta kiểm tra host không trên nuts-net, ví dụ
như host tại O'Reilly chẳng hạn, kết quả sẽ khác hẳn.
% ping 207.25.98.2
sendto: Network is unreachable
Khi thông báo "sendto: Network is unreachable" chỉ ra rằng
peanut không biết làm sao để gửi data sang mạng có host
207.25.98.2 đang bật. Ở đây chỉ có 2 con đường trong bảng
routing peanut và không có cái nào dẫn đến 207.25.98.0.
106
Thậm chí subnets khác trên nuts-net không thể được chạm đến
khi dùng bảng routing này. Để minh hoạ, ping một host khác trên
subnet. Ví dụ :
% ping 172.16.1.2
sendto: network is unreachable
Các ping tests này cho thấy bảng routing được tạo bằng ifconfig
cho phép giao tiếp chỉ với các hosts khác trên cùng mạng cục bộ.
Nếu mạng của bạn không không yêu cầu truy xất đế các mạng
TCP/IP nào khác, điều này có thể là tất cả những gì bạn cần. Tuy
nhiên, nếu nó yêu cầu truy xuất đến các mạng khác, bạn phải
thêm nhiều con đường vào bảng routing .
1.3 Xây dựng bảng routing tĩnh
Như ta đã thấy, bảng routing minimal hoạt động tốt để chạm đến
các hosts chỉ trên cùng một mạng vật lý kết nối trực tiếp. Để
chạm đến các hosts ở xa, các con đường thông qua gateways
ngoại phải được cộng thêm vào bảng routing. Một cách để làm
điều này là xây dựng bảng routing tĩnh với lệnh route .
# route add 207.25.98.0 172.16.12.1 1
add net 207.25.98.0: gateway almond
107
% netstat -rn
Bảng routing s
Destination Gateway Flags Refcnt Use Interface
127.0.0.1 127.0.0.1 UH 1 132 lo0
default 172.16.12.1 UG 0 0 le0
172.16.12.0 172.16.12.2 U 26 49041 le0
108
khác, làm thế nào chúng quyết định được con đường nào là tốt
nhất, chính là những gì làm các giao thức routing trở nên khác
nhau.. Có nhiều nghi thức interior routing:
109
Open Shortest Path First (OSPF) thì khác với giao thức link-state
được phát triển cho TCP/IP. Nó thích hợp cho các mạng lớn và
cung cấp nhiều tính năng thông qua RIP.
1.5 Routing Information Protocol
Routing Information Protocol (RIP) được chạy bởi routing
daemon tên là routed (đọc là "route" "d"). Khi chúng khởi động,
nó phát sinh ra một yêu cầu cho việc cập nhật các con đường và
sau đó lắng nghe đáp ứng đối với các câu hỏi đó. Khi một hệ
thống system được cấu hình để cung cấp thông tin RIP nghe yêu
cầu, chúng trả lời với một gói dựa trên thông tin trong bảng
routing của nó. Gói cập nhật chứa địa chỉ đích từ bảng routing và
routing metric kết hợp với mỗi đích. Gói cập nhật được tạo thành
khi có yêu cầu, cũng như là được tạo theo chu kỳ để giữ cho
thông tin routing được chính xác.
Để xây dựng bảng routing, routed dùng thông tin trong update
packets. Nếu routing update chứa một con đường đến đích không
tồn tại trong bảng routing cục bộ, thì con đường mới được cộng
thêm vào. Nếu gói update mô tả một con đường đã có trong bảng
cục bộ, con đường mới được dùng chỉ khi nó có giá thấp hơn. Giá
của một con đường được xác định bằng việc cộng thêm giá của
việc chạm đến gateway gửi gói update đến tham số metric chứa
trong gói cập nhật RIP. Nếu tổng metric là nhỏ hơn metric của
con đường hiện tại thì, con đường mới được dùng .
RIP cũng xoá các con đường từ bảng routing. Nó hoàn tất trong 2
cách. Đầu tiên, nếu gateway đến đích nói rằng giá của các con
đường là lớn hơn 15, con đường sẽ bị xoá. Thứ hai, RIP giả sử
rằng một gateway gửi tín hiệu updates bị chết. Tất cả các con
đường thông qua gateway sẽ bị xoá nếu không có thông tin cập
nhật được nhận được từ gateway đó trong một khoảng chu kỳ
thời gian nhất định. Nói chung, RIP phát hành thông tin cập nhật
routing mỗi 30 giây. Trong nhiều hiện thực, nếu một gateway
110
không phát hành routing updates mỗi 180 gâiy, tất cả các con
đường thông qua gateway đó sẽ bị xoá khoải bảng routing.
1.6 Chạy RIP với routed
# routed
routed đọc /etc/gateways lúc khởi động và thêm các thông tin của
nó vào bảng routing. routed có thể xây dựng bảng thông tin
routing một cách đơn giản bằng cách dùng RIP updates nhận
được từ nhà cung cấp RIP.
Hầu hết dùng tập tin /etc/gateways để định nghĩa active default
route, do đó chúng ta dùng nó như là ví dụ. Ví dụ này là đủ bởi vì
tất cả chúng có cùng một định dạng cơ bản trong /etc/gateways.
Trên peanut, dòng sau đây chỉ định almond là default gateway:
net 0.0.0.0 gateway 172.16.12.1 metric 1 active
Dòng bắt đầu với từ khóa net. Tất cả các dòng bắt đầu với từ
khoá net hay từ khoá host để chỉ thị ra đâu là địa chỉ mạng hay
địa chỉ host. Địa chỉ đích 0.0.0.0 là địa chỉ dùng cho default
route. Trong lệnh route ta dùng từ khoá default để chỉ ra con
đường này, nhưng trong /etc/gateways default route được xác
định bởi địa chỉ mạng 0.0.0.0.
111
Mạng ví dụ
112
Mask:255.255.255.0
collisions:0 txqueuelen:100
collisions:0 txqueuelen:0
113
máy. Do đó, bạn có thể dùng một card để nối với nhiều mạng
logic khác nhau. Cú pháp của lệnh này là :
ifconfig eth0:0 208.148.45.58 netmask
255.255.255.248 broadcast 208.148.45.255 up
Các tập tin cấu hình của kết nối mạng là /etc/sysconfig/network-
scripts/ifcfg-ethX với X là 0,1 ... hay 0:0, 0:1 .... Bạn có thể thay
đổi cấu hình kết nối mạng bằng cách sửa đổi lại tập tin này bằng
một chương trình soạn thảo text như mc chẳng hạn, sau đó khởi
động lại kết nối mạng bằng
/etc/rc.d/init.d/network restart
[root@starturn ]# ifconfig
collisions:0 txqueuelen:100
114
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
collisions:0 txqueuelen:0
[root@starturn root]#
115
64 bytes from starturn (127.0.0.1): icmp_seq=4
ttl=64 time=0.067 ms
[root@starturn root]#
Nếu 2 máy có thể liên lạc được với nhau, chúng ta sẽ biết thêm
thời gian trả lời để cho biết sự thông thoáng về mạng giữa 2 máy.
Có thể nói, ping phải chạy trước tiên trước tất cả các hoạt động
mạng khác.
Chú ý: Nên sử dụng ping –n để tránh trục trặc do dịch vụ DNS
làm ảnh hưởng tới việc kết quả thử kết nối mạng.
2.4 Lệnh route
Lệnh route không có tùy chọn (option) cho phép hiển thị bảng
dẫn đường hiện tại của kernel (Lệnh netstat –r cũng có tác dụng
tương tự)
[root@starturn root]# route -n
116
Để chỉ ra rằng card mạng eth0 được nối với một mạng
208.148.45.56 ta dùng lệnh route như sau :
route add -net 208.148.45.56 eth0
Còn nếu chúng ta muốn sử dụng bí danh của card mạng để nối
vào một mạng logic khác, ta có thể sử dụng lệnh
route add -net 193.105.106.0 eth0:0
Công tác cuối cùng là phải chỉ ra các địa chỉ của gateway mặc
định.
route add default gw 193.105.106.1 metric 1
Biết sử dụng thành thạo cú pháp của 2 lệnh ifconfig và route rất
quan trọng, nó cho phép các cán bộ quản trị thay đổi cấu hình kết
nối mạng của một server một cách nhanh chóng và không phải
khởi động lại máy. Vì vậy, server luôn sẵn sàng. Bạn cũng có thể
sử dụng tiện ích netconfig để cấu hình liên kết mạng nếu chưa
thành thạo nhiều cú pháp của các lệnh trên.
2.5 Lệnh Traceroute
Đây cũng là lệnh cho phép chẩn đoán hoạt động của mạng. Cú
pháp của lệnh giống như lệnh ping nhưng kết quả không chỉ
dừng ở sự trả lời mà còn chỉ ra các thiết bị trung gian nằm giữa 2
máy.
[root@pascal root]# traceroute mail.yahoo.com
traceroute to login.yahoo.akadns.net
(66.163.171.128), 30 hops max, 38 byte packets
117
4 203.160.0.9 (203.160.0.9) 438.633 ms 323.406 ms
303.153 ms
8 i-3-1.sjc-core01.net.reach.com (202.84.143.161)
639.661 ms 570.107 ms 768.673 ms
9 i-13-0.paix-core01.net.reach.com (202.84.251.49)
480.421 ms 554.574 ms 378.577 ms
11 ge-1-2-0.msr1.sc5.yahoo.com (216.115.101.234)
636.987 ms * 719.662 ms
12 vl42.bas2-m.sc5.yahoo.com (66.163.160.218)
582.040 ms * 589.745 ms
[root@pascal root]#
Lệnh traceroute là một công cụ hiệu quả cho phép ta phát hiện
lỗi trong quá trình phân đường (IP routing). Ví dụ kết nối từ A ->
C có trục trặc và với traceroute tới C từ máy A, ta có thể phát
hiện ra máy A kết nối máy B, rồi máy B lại kết nối máy A ... do
cấu hình routing của A và B sai.
Chú ý là khi chúng ta thử kết nối với một máy ở xa trong
Internet, do nhiều mạng áp dụng các bức tường lửa (firewall) nên
118
nhiều khi lệnh ping và traceroute không chạy nhưng trên thực
chất là mạng vẫn thông.
119
Linux Kernel
1. Giới thiệu
Linux kernel cung cấp một giao diện giữa các ứng dụng người
dùng, hệ thống phần cứng và tài nguyên. Một vài chức năng của
Linux là:
Quản lý bộ nhớ
Quản lý hệ thống file
Xử lý các lỗi và ngắt
Thực hiện các dịch vụ I/O
Cấp phát tài nguyên hệ thống cho các người dùng
2. Kernel Modules
Trong những năm đầu của Linux, kernel Linux là một monolithic
kernel. Monolithic kernel là tất cả các dịch vụ của Kernel được
biên dịch hết vào trong nó và không có drivers ngoài nào được
gọi. Với monolithic kernel , kernel phải được biên dịch lại mỗi
khi có một thiết bị mới được gắn vào hệ thống.
Khi sự hỗ trợ phần cứng của Linux tăng lên thì kích thước của
Kernel tăng lên và cho thấy sự bất tiện của nó. thế là modular
Linux kernel ra đời.
Modular Linux kernel bao gồm một kernel tối tiểu và một tập các
modules có thể được thêm vào khi kernel đang chạy để hỗ trợ các
thiết bị và dịch vụ mới.
3. Lệnh lsmod
Cho biết danh sách các modules được nạp hiện hành
[root@starturn root]# lsmod
120
Module Size Used by Not tainted
8139too 17704 1
ext3 70368 1
121
4.2 Các bước compile kernel
Cấu hình kernel
make config: Cấu hình kernel module từng dòng một tại console
make menuconfig: Cấu hình Kernel Modules theo giao diện
Menu
122
make modules_install
make xconfig
Cấu hình LILO
Sau khi complie lại kernel, ta cấu hình LILO để hệ thống boot lại
dùng kernel mới (edit tập tin /etc/lilo.conf).
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
timeout=50
default=firewall
image=/boot/vmlinuz-2.2.14-5.0
label=ker2214
read-only
root=/dev/hda9
image=/boot/bzImage.myker.11feb2001
123
label=myker11feb
root=/dev/hda9
read-only
image=/boot/bzImage.myker-firewall.16mar2001
label=firewall
root=/dev/hda9
read-only
124
Linux Servers
Inetd và các dịch vụ mạng
1. Inetd
Unix có hai cách để tổ chức các dịch vụ mạng: hoặc là khởi động
ngay từ đầu chương trình server dưới dạng daemon, hoặc là để
công tác khởi động chương trình dịch vụ theo yêu cầu (khi có yêu
cầu kết nối) với sự trợ giúp của một tiến trình daemon khác là
inetd (đọc là inét đê). Trong trường hợp đầu, ta cần cho mỗi dịch
vụ ít nhất một daemon và tài nguyên của hệ thống bị sử dụng
ngay cả khi không có yêu cầu kết nối. Còn trong trường hợp sau
ta cần một daemon cho tất cả các dịch vụ. Tài nguyên hệ thống
chỉ thực sự bị chiếm dụng khi có yêu cầu kết nối. Vì vậy, chương
trình server dạng daemon thường trực được dùng cho các dịch vụ
có yêu cầu kết nối thường xuyên như DNS, mail, Web ; còn sơ đồ
qua inetd dành cho các dịch vụ với tần số sử dụng thưa như ftp,
telnet, secure shell …
Chương trình inetd, còn gọi là super-server, được sử dụng để
khởi động các daemon phục vụ các dịch vụ mạng. inetd đợi các
nối mạng sau một số cổng được quy định bởi tập tin cấu hình
/etc/inetd.conf. inetd của RedHat Linux 7.1 sử dụng tập tin
/etc/xinetd.conf và các tập tin trong thư mục /etc/xinet.d. Khi có
yêu cầu kết nối, inetd sẽ gọi chương trình server tương ứng để
thiết lập các kết nối và phục vụ khách hàng. Thông thường, inetd
được khởi động ngay từ đầu bởi các script dùng cho khởi động
máy. inetd sẽ đọc file cấu hình /etc/inetd.conf khi được gọi lên bộ
nhớ. Sau đây là một vài dòng của tập tin /etc/inetd.conf
# <service_name> <sock_type> <proto> <flags> <user>
<server_path> <args>
125
# To re-read this file after changes, just do a
'killall -HUP inetd'
Bên cạnh tập tin cấu hình /etc/inetd.conf, tập tin /etc/services
cũng được inetd sử dụng để biết các cổng (port) của các chương
trình server. Ví dụ một đoạn của tập tin /etc/services
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
# 24 - private
# 26 - unassigned
126
time 37/tcp timserver
127
Cột <user> quy định quyền của tiến trình khi nó được chạy trên
bộ nhớ. Trong trường hợp có nghi ngờ về tính bảo mật của một
dịch vụ, ta có thể giảm quyền của nó bằng cách thay đổi nội dung
của cột này.
Qua ví dụ trên ta thấy dịch vụ ftp sẽ được inetd gọi lên thông qua
dòng lệnh /usr/sbin/tcpd in.ftpd -l –a khi có một chương trình
khách hàng dùng giao thức TCP gọi qua cổng 21.
Đọc thêm. Tiến trình được sinh ra như thế nào? Trên một máy
chủ Unix, thường có hàng chục tiến trình đang đồng thời hoạt
động. Trên những máy chủ lớn và bận bịu, có thể có hàng ngàn
tiến trình cùng lúc.
Vậy tiến trình được hình thành như thế nào ?
Nếu con người được sinh ra bởi con người thì tiến trình cũng sinh
ra bởi tiến trình. Chỉ có một điều khác là phải cần 2 người làm
cha mẹ mới có trẻ em (trừ những dự định clone người hiện nay),
còn tiến trình thì chỉ có một tiến trình cha. Khi hệ thống khởi
động, tiến trình đầu tiên là init. Sau đó, init sẽ sinh ra các tiến
trình khác cần thiết cho sự hoạt động của hệ thống. Ví dụ mỗi khi
ta đăng nhập hệ thống, tiến trình login sau khi kiểm tra mật khẩu
sẽ sinh ra một tiến trình shell để người sử dụng có thể làm việc
thông qua các dòng lệnh của shell. Có 2 lệnh liên quan tới việc
hình thành các tiến trình là lệnh fork và execve. Lệnh fork cho
phép hình thành một tiến trình con giống hệt tiến trình cha và cả
hai sau đó cùng được song song hoạt động và được HĐH đối xử
như nhau. Hai tiến trình này chỉ khác nhau về PID và người ta có
thể biết rằng hiện đang ở tiến trình bằng cách xem giá trị trở về
của lệnh fork: nếu bằng 0, ta đang ở tiến trình cha, nếu khác 0 thì
đó là PID của tiến trình con. Lệnh execve thì thay thế một tiến
trình bằng một tiến trình khác. Như vậy, nếu ta đang có một tiến
trình A, tiến trình B có thể sinh ra từ A bằng cách A fork ra A’
rồi trong A’ ta dùng lệnh execve để thay thế A’ bằng B.
Đoạn chương trình sau cho phép hiểu rõ hơn các miêu tả trên
128
if (fork() == 0) {
else {
Các biến tấu của execve tạo thành một họ các hàm exec (exec
family). Linux có thêm clone để tạo các threads (tiểu tiến trình).
Trong trường hợp hệ thống quá tải, lệnh fork sẽ không thành
công do tài nguyên hệ thống đã bị vét cạn. Khi đó ta sẽ có thông
báo lỗi trên màn hình gắn trực tiếp với máy chủ và máy chủ cần
được xem xét sửa chữa hoặc nâng cấp.
2. FTP
# default: on
service ftp
disable = no
socket_type = stream
wait = no
129
user = root
server = /usr/sbin/in.ftpd
server_args = -l -a
log_on_success += DURATION
nice = 10
3. POP 3
# default: off
service pop3s
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
130
4. IMAP
# default: off
# Communicator.
service imap
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_failure += USERID
131
Domain Name Server
1. Nền tảng
Trong những năm cuối thập kỷ 60, Ban dự án nghiên cứu của bộ
quốc phòng Mỹ, ARPA (DARPA về sau), bắt đầu tài trợ một
mạng máy tính thí nghiệm trên diện rộng, những tổ chức nghiên
cứu được nối cho quan trọng trong nước Mỹ , gọi Mạng quản lý
đề án nghiên cứu ARPANET. Mục tiêu nguyên thủy của đề án
ARPANET là cho phép những người đấu thầu chính phủ chia sẻ
những chi phí hoặc khan hiếm tài nguyên.
Ngay từ lúc bắt đầu, những người dùng của mạng ARPANET sử
dụng mạng cho sự cộng tác. Sự hợp tác này bắt đầu từ những tập
tin dùng chung, phần mềm và trao đổi thư tín điện tử - tới sự phát
triển và nghiên cứu chung sử dụng những máy tính từ xa dùng
chung.
TCP/IP Bộ nghi thức phát triển vào đầu những năm 1980, và
nhanh chóng trở thành là nghi thức nối mạng chủ nhà chuẩn trên
mạng ARPANET. Sự bao gồm protocol trong hệ điều hành BSD
UNIX ở trường đại học California dùng làm phương tiện trong
việc dân chủ hóa sự truyền thông trong mạng. BSD UNIX là
hoàn toàn miễn phí đối với các trường đại học. Điều này có nghĩa
là sự truyền thông trong mạng - và kết nối ARPANET - trở nên rẻ
và tổ chức hơn được kết nối vào ARPANET.
Nhiều máy tính được nối tới ARPANET, cũng được nối tới
những mạng cục bộ , và không lâu nữa những máy tính khác trên
những mạng cục bộ đều truyền thông qua ARPANET. Mạng
ARPANET nguyên bản trở thành là xương sống của một liên
minh các mạng cục bộ và những mạng dùng TCP/IP, gọi là
Internet.
Vào năm 1988, DARPA quyết định sự thí nghiệm đã kết thúc. Bộ
quốc phòng bắt đầu giải tán mạng ARPANET. Một mạng khác,
132
được tài trợ bởi hội Khoa học Cơ Bản Quốc gia và gọi là
NSFNET, thay thế mạng ARPANET như là xương sống của
Internet.
Gần đây hơn , mùa xuân 1995, Internet đã làm một sự chuyển
tiếp từ việc tài trợ công khai NSFNET như một xương sống.
Ngày nay, đã có hàng triệu kết nối Internet của nhiều máy tính
trên thế giới kết nối vào Internet. Thật ra, một tỉ lệ quan trọng
những máy tính không-PC trên thế giới được nối tới Internet.
Từ Internet , và "internets" nói chung, là theo thứ tự. Trong cách
viết, sự khác nhau giữa chúng có vẻ như rất ít: cái thứ nhất luôn
được viết hoa, cái kia thì không . Sự khác biệt giữa chúng có ý
nghĩa riêng. Internet, với chữ I hoa để cập đến mạng mà cuộc
sống của nó khởi nguồn từ ARPAnet và tiếp tục đến ngày nay, nó
là sự liên minh của các mạng TCP/IP kết nối trực tiếp hay gián
tiếp vào xương sống thương mại của Mỹ.
Xét kỹ hơn, nó thường chỉ gồm nhiều mạng khác nhau -
commercial TCP/IP backbones, regional TCP/IP networks, mạng
TCP/IP của chính phủ Mỹ networks, và mạng TCP/IP của các
quốc gia khác trên thế giới kết nối với nhau thông qua mạch số
tốc độ cao.
Từ internet viết thường, nói cách khác , chỉ đơn giản là bất cứ
mạng nào được xây dựng lên từ nhiều mạng nhỏ hơn sử dụng
cùng một giao thức kết nối mạng. Từ internet (chữ "i" nhỏ) là
không cần thiết kết nối vào Internet (chữ "I" lớn), hay cũng
không nhất thiết phải dùng giao thức TCP/IP như là một chuẩn
kết nối chung.
Thuật ngữ "intranet" chỉ là một thành ngữ tiếp thị cho những
mạng internet (i nhỏ) dựa trên TCP/IP , dùng để nhấn mạnh công
dụng của công nghệ được phát triển và giới thiệu trên Internet
trong nội bộ các mạng hợp tác của các công ty. . Từ "extranet,"
nói cách khác, là internet có kết nối đến các công ty thành viên
hay các công ty con của nó, các nhà cung cấp và khách hàng.
133
2. Lịch sử của Domain Name System
Suốt những năm 70, mạng ARPAnet còn rất nhỏ , một cộng đồng
thân thiện của vài trăm máy tính. Với một file duy nhất
HOSTS.TXT, chứa đựng tất cả các thông tin bạn cần biết về
những máy khác: nó chứa ánh xạ tên địa chỉ cho tất cả các
máy được kết nối vào ARPAnet. Tương tự như tập tin host trên
Unix , /etc/hosts, được biên dịch từ HOSTS.TXT .
HOSTS.TXT được bảo trì bởi tổ chức SRI (Network Information
Center) và được phân phối từ một máy đơn, SRI-NIC[1]. Các nhà
quản trị ARPAnet thường gửi thư điện tử đến NIC, tuần tự ftp
đến SRI-NIC và gắn vào tập tin HOSTS.TXT hiện hành. Các sự
thay đổi của chúng được biên dịch vào file HOSTS.TXT mới một
hoặc 2 lần trong tuần. Cùng với sự phát triển của ARPAnet, mô
hình này trở nên không thích hợp. Kích thước của file
HOSTS.TXT tăng lên theo sự phát triển của các máy kết nối vào
ARPAnet . Hơn thế nữa , lưu lượng được sinh ra bởi quá trình
cập nhật tăng lên nhanh hơn: mỗi máy thêm vào không chỉ là một
kết nối khác được thêm vào host mà còn là những xu hướng cập
nhật từ các máy khác từ SRI-NIC.
[1] SRI là Stanford Research Institute trong Menlo Park,
California. SRI kết hợp nhiều lãnh vực nghiên cứu khác nhau bao
gồm cả mạng máy tính.
Và khi ARPAnet chuyển sang dùng TCP/IP protocols,
dân số của mạng bùng nổ. Bây giờ một vấn đề nảy sinh
với tập tin HOSTS.TXT:
Lưu lượng và tải
SRI-NIC, thuật ngữ của lưu lượng và tải
của bộ xử lý xoay quanh việc phân phối
file đã trở nên không thể chấp nhận được,
was becoming unbearable.
Đụng độ tên
134
Không thể có 2 hosts trong tập tin HOSTS.TXT được phép có
cùng tên. Tuy nhiên , trong khi NIC có thể gán địa chỉ theo cách
đảm bảo tính duy nhất, nó không có quyền thông qua các tên
hosts đó. Không có cách nào ngăn cản một ai đó thêm vào một
host với tên đụng độ và phá vỡ toàn bộ cơ chế. Một ai đó thêm
vào một host với tên trùng với server mail chính của hệ thống
chẳng hạn, có thể sẽ làm sụp đổ toàn bộ hệ thống mail của
ARPAnet.
Tính toàn vẹn
Bảo trì tính toàn vẹn của tập tin trên mạng đang mở rộng trở nên
ngày càng khó khăn. Cùng lúc đó một tập tin HOSTS.TXT mới có
thể trở nên lớn hơn cùng với sự tăng trưởng của ARPAnet.
Các thành viên điều hành của ARPAnet mở cuộc nghiên cứu cho
một hậu bối của file HOSTS.TXT. Mục tiêu của họ là tạo ra một
hệ thống có thể giải quyết các vấn đề kế thừa từ một hệ thống
bảng các tên host thống nhất . Hệ thống mới phải cho phép quản
trị cục bộ dữ liệu , và cho phép dữ liệu đó trở nên có hiệu lực trên
toàn cục.
Sự giảm tập trung của việc quản trị sẽ giảm thiểu vấn đề cổ chai
cho 1 máy đơn và giải phóng vấn đề lưu lượng. Sự quản lý cục bộ
sẽ làm cho tác vụ giữ cho dữ liệu luông được cập nhật trở nên dễ
hơn nhiều. Nó phải dùng không gian tên kế thừa cho các tên máy.
Điều này sẽ đảm bảo tính duy nhất của các tên.
Paul Mockapetris, khi đó dùng USC's Information Sciences
Institute, chịu trách nhiệm cho việc thiết kế kiến trúc của hệ
thống mới. Năm 1984, ông công bố RFCs 882 và 883, mô tả
Domain Name System. Các RFCs được hoàn chỉnh bởi RFCs
1034 và 1035, mô tả chi tiết hiện tại cho Domain Name
System.[2] RFCs 1034 và 1035 có nhiều tranh cãi hiện nay bởi
nhiều RFCs khác về vấn đề an toàn bảo mật DNS, vấn đề hiện
thực , vấn đề quản trị , cơ chế cho việc cập nhật động các name
servers và cho việc an toàn dữ liệu tên miền.
135
[2] RFCs có nghĩa là Request for Comments , là một phần của
quá trình thông tin cho việc giới thiệu một kỹ thuật mới trên
Internet. RFCs là được phân phối miễn phí và chứa khá nhiều mô
tả kỹ thuật cho công nghệ mà nó giới thiệu do đó nó thường phục
cho đối tượng là các nhà hiện thực
4. Domain Names
Mỗi node trong cây có một nhãn (tối đa 63 ký tự). Tên domain
name đầy đủ của một node trong cây là một chuỗi các nhãn đi từ
node đến root.
136
Trong DNS, những node ngang hàng với nhau có cùng một node
cha phải có tên khác nhau.
Domains:
Domain chỉ là một nhánh con của domain name
space.
Domain name của một domain tương tự như
domain name của một node ở vị trí cao nhất của
domain đó, xem hình vẽ:
137
Figure 1.3 The /usr directory
Một domain name có thể nằm trong nhiều nhánh, và cũng có thể
trong nhiều domain, ví dụ, domain name pa.ca.us là một phần
của ca.us domain và cũng là một phần của domain us, Figure 1.4
139
Figure 1.5: The edu domain broken into zones
140
này tránh cho slave thực hiện việc zone transfer trong khi dữ liệu
vẫn không thay đổi.
Resolvers
Resolver là những client truy xuất name server. Những chương
trình trên máy cần những thông tin về domain name đều dùng
resolver.
Resolver đảm trách việc:
Hỏi name server (Querying a name server).
Phân giải kết quả (Interpreting responses).
Trả kết quả về cho chương trình đã yêu
cầu.(Returning the information to the programs
that requested it).
Resolution (Phân giải)
Name server không những chỉ cung cấp cho ta những dữ liệu về
những zones mà nó được ủy quyền, nó còn có thể đi tìm thông
qua domain name space mà không được ủy quyền để lấy dữ liệu,
quá trình này gọi là name resolution hoặc resolution.
Root Name Servers:
Root name servers có vai trò rất quan trọng trong việc phân giải.
Quá trình phân giải được bắt đầu từ những root name servers,
điều này làm cho root name server quyết định quá trình hoạt động
của DNS, vì vậy nếu tất cả các Internet root name server đều bị
hư thì quá trình phân giải trong Internet sẽ bị đình trệ, do đó để
tránh tình trạng này người ta thiết lập đến 13 root name server
phân bố trên những vùng khác nhau. 2 ở MILNET (the U.S.
military's portion of the Internet), 1 ở SPAN (NASA’s internet), 2
ở châu Âu, và 1 ở Nhật Bản.
141
Figure 1.6: Resolution of girigiri.gbrmpa.gov.au on the
Internet
Local name server hỏi root name server về địa chỉ của
girigiri.gbrmpa.gob.au và được chỉ đến au name servers. Sau đó
local name server đến hỏi au name server với cùng câu hỏi trên
và được chỉ đến gov.au name server, gov.au name server chỉ
local name server đến gbrmpa.gov.au name server. cuối cùng
local name server hỏi gbrmpa.gov.au name server về địa chỉ trên
và nhận được câu trả lời.
Mapping Addresses to Names
142
Những nodes trong domain in-addr.arpa được gán sau những số ở
dạng dotted-octet cũa địa chỉ IP và có thể có tối đa 256
subdomain.
Theo hình dưới đây nếu địa chỉ IP của winnie.corp.hp.com là
15.16.192.152 thì subdomain in-addr.arpa tương ứng là
152.192.16.15.in-addr.arpa.
Caching
Name server có thể lưu lại những kết quả đã hỏi trước đó để dùng
khi được hỏi lần sau (caching), giúp tăng tốc độ trả lời cho những
lần truy vấn sau, hơn nửa caching cũng có thể giúp ta tránh việc
hỏi root name server lần nữa.
143
Figure 1.8: Resolving baobab.cs.berkeley.edu
Time to Live:
Những dữ liệu được cache lại trong Name server không thể tồn
tại vinh viễn, vì dữ liệu đó có thể được thay đổi bởi name server
phụ trách cho dữ liệu đó. Việc này được thực hiện bởi người quản
trị của zone đó trong việc khai báo Time to Live (TTL) cho dữ
liệu đó, TTL là thời gian mà các name server khác có thể cache
dữ liệu trong bao lâu. Sau thời gian đó name server đó phải hủy
tất cả các cache đó và đi lấy dữ liệu mới.
7. Setup BIND
7.1 Setting up DNS Data:
Ta cấu hình nhiều file cơ sở dữ liệu (database files) trong đó một
file ánh xạ tất cả host name vào địa chỉ, và file khác ánh xạ từ địa
chỉ vào host name (phân giải ngược). và file /etc/named.conf.
The database file:
144
Tất cả các entries trong database file được gọi là NDS resource
records. Không phân biệt in hoa.Ta có các loại resource records
trong database sau:
SOA record :Indicates authority for this zone data
NS record :Lists a name server for this zone
Other records :Data about hosts in this zone
A :Name-to-address mapping
PTR :Address-to-name mapping
CNAME :Canonical name (for aliases)
SOA Records:
Entry đầu tiên trong file là SOA (start of authority) resource
record. SOA record xác định name server này là nguồi thông tin
tốt nhất của zone này.
vnuhcm.edu.vn. IN SOA vnuserv.vnuhcm.edu.vn.
root.vnuhcm.edu.vn. (
1 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
Tên miền vnuhcm.edu.vn. phải ở vị trí cột đầu
tiên và kết thúc bằng dấu chấm.
IN là Internet.
vnuserv.vnuhcm.edu.vn là tên của primary master
name server của dữ liệu này.
145
root.vnuhcm.edu.vn là địa chỉ mail của người phụ
trách dữ liệu này. Lưu ý là địa chỉ mail thay thế
dấu @ bằng dấu chấm sau root
Dấu ( ) cho phép ta mở rộng ra viết thành nhiều
dòng. Tất cả các tham số trong dấu ( ) được dùng
cho các slave name servers
Serial : Khi một slave name server kết nối với
master server để lấy dữ liệu, trước tiên nó sẽ kiểm
tra số serial, nếu số serial của master lớn hơn tức
là dữ liệu đã hết hạn sử dụng và nó sẽ load lại dữ
liệu mới. vì vậy khi ta cập nhật dữ liệu trên name
server ta nên tăng số serial.
refres : Khoảng Thời gian (giây) mà slave biết
phải kiểm tra lại dữ liệu có còn sử dụng được
không.
retry : Nếu slave không thể kết nối với master
name server sau một khoảng thời gian refresh thì
nó sẽ cố gắng kết nối lại sau retry giây.
expire: Nếu slave không thể kết nối với master
server sau khoảng thời gian expire giây, thì slave
sẽ không trả lời cho vùng dữ liệu đó khi được truy
vấn, vì nó cho rằng dữ liệu này đã quá củ.
TTL : Time To Live, giá trị này được dùng cho
tất cả các resource record trong file cơ sở dữ liệu.
giá trị này cho phép những server khác cache lại
dữ liệu trong 1 khoảng thời gian xác đĩnh TTL.
NS Records:
Những entry tiếp theo là NS (name server) resource record.
vnuhcm.edu.vn.IN NSvnuserv.vnuhcm.edu.vn.
Record này xác định name server của zone vnuhcm.edu.vn
146
Address and Alias Records
Tiếp theo ta tạo ánh xạ name-to-address (từ tên vào địa chỉ).
;
; Host addresses
;
localhost.vnuhcm.edu.vn. IN A 127.0.0.1
vnuserv.vnuhcm.edu.vn. IN A 172.16.1.2
server.vnuhcm.edu.vn. IN A 172.16.1.4
wwwINCNAME vnuserv.vnuhcm.edu.vn.
Khi một name server tìm kiếm một tên và tìm thấy CNAME
record thì nó sẽ thay thế tên đó bằng canonical name và tiếp tục
tìm với tên mới. ví dụ. khi name server tìm www.vnuhcm.edu.vn,
nó phát hiện một CNAME record trỏ đến
vnuserv.vnuhcm.edu.vn, sau đó vnuserv.vnuhcm.edu.vn sẽ được
tìm và kết quả trả về là cả 2.
MX Records
Khai báo cho mail, tất cả các mail sẽ được chuyển đi dự vào MX
record này.
vnuhcm.edu.vnINMX0vnuserv.vnuhcm.edu.vn
vnuhcm.edu.vnINMX5server.vnuhcm.edu.vn
Các giá trị 0, 5 xác định độ ưu tiên của mail server. Giá trị càng
nhỏ độ ưu tiên càng cao. 2 dòng trên có nghĩ sau: mail của miền
vnuhcm.edu.vn sẽ được nhận bởi máy vnuserv.vnuhcm.edu.vn và
server.vnuhcm.edu.vn trong đó máy vnuserv.vnuhcm.edu.vn sẽ
có độ ưu tiên hơn. Có nghĩa là mail sẽ được đưa về máy
vnuserv.vnuhcm.edu.vn, chỉ đưa về máy server.vnuhcm.edu.vn
khi vnuserv.vnuhcm.edu.vn quá bận hay bị down.
PTR Records
147
Tiếp theo ta tạo ánh xạ address-to-name (từ địa chỉ vào tên) trong
tập tin db.172.16.1
2.1.16.172.in-
addr.arpa.INPTRvnuserv.vnuhcm.edu.vn.
4.1.16.172.in-
addr.arpa.INPTRserver.vnuhcm.edu.vn.
Loopback Address
Name server cũng cần một cơ sở dữ liệu khác để lấy thông tin
bên trong máy, như sau:
0.0.127.in-addr.arpa. IN SOA
vnuserv.vnuhcm.edu.vn. root.vnuhcm.edu.vn. (
1 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
0.0.127.in-addr.arpa.INNS
vnuserv.vnuhcm.edu.vn.
1.0.0.127.in-addr.arpa.INPTRlocalhost.
The Root Cache Data:
Bên cạnh những thông tin cục bộ, name server cũng cần biết vị trí
của các root domain name server. Ta có file named.root như sau:
; formerly NS.INTERNIC.NET
. 3600000 IN NS A.ROOT-SERVERS.NET.
148
; formerly NS1.ISI.EDU
. 3600000 NS B.ROOT-SERVERS.NET.
; formerly C.PSI.NET
. 3600000 NS C.ROOT-SERVERS.NET.
; formerly TERP.UMD.EDU
. 3600000 NS D.ROOT-SERVERS.NET.
; formerly NS.NASA.GOV
. 3600000 NS E.ROOT-SERVERS.NET.
; formerly NS.ISC.ORG
149
;
. 3600000 NS F.ROOT-SERVERS.NET.
; formerly NS.NIC.DDN.MIL
. 3600000 NS G.ROOT-SERVERS.NET.
; formerly AOS.ARL.ARMY.MIL
. 3600000 NS H.ROOT-SERVERS.NET.
; formerly NIC.NORDU.NET
. 3600000 NS I.ROOT-SERVERS.NET.
150
. 3600000 NS J.ROOT-SERVERS.NET.
. 3600000 NS K.ROOT-SERVERS.NET.
. 3600000 NS L.ROOT-SERVERS.NET.
. 3600000 NS M.ROOT-SERVERS.NET.
; End of File
151
Sau khi tạo xong file cơ sở dữ liệu, name server cần phải được
hướng dẫn để đọc file dữ liệu đó bằng cách cấu hình file
/etc/named.conf như sau:
options {
directory "/var/named";
// Place additional options here.
forwarders {
172.16.1.2;
};
};
directory "/var/named" : Khai báo vị trí lưu
các file cơ sở dữ liệu.
forwarders 172.16.1.2 : Local name server
sẽ đi hỏi name server có IP address là
172.16.1.2 khi Local name server không
giải được.
zone "vnuhcm.edu.vn" in {
type master;
file "db.vnuhcm.edu.vn";
};
type : loại name server
otype masternếu là primary
name server.
otype slavenếu là secondary
name server.
file "db.vnuhcm.edu.vn" : tên file cơ sở dữ
liệu.
152
zone "." in {
type hint;
file "db.cache";
};
Dòng cấu hình để name server dùng cache.
Như vậy cấu hình hoàn chỉ của file /etc/named.conf
là:
options {
directory "/var/named";
forwarders {
172.16.1.2;
};
};
zone "." in {
type hint;
file "db.cache";
};
zone "vnuhcm.edu.vn" in {
type master;
file "db.vnuhcm.edu.vn";
};
zone "0.0.127.in-addr.arpa" in {
153
type master;
file "db.127.0.0";
};
zone "1.16.172.in-addr.arpa" in {
type master;
file "db.172.16.1";
};
zone "hcmut.edu.vn" in {
type slave;
file "db.hcmut.edu.vn";
masters {
172.28.2.2;
};
};
zone "28.172.in-addr.arpa" in {
type slave;
file "db.172.16.1";
masters {
172.28.2.2;
};
};
154
Một số quy ước:
Field thứ 2 trong khai báo zone của file /etc/named (zone
"vnuhcm.edu.vn" và zone "1.16.172.in-addr.arpa")có thể giúp ta
một số khai báo nhanh chóng trong file cơ sở dữ liệu sau:
vnuserv.vnuhcm.edu.vn. INA172.16.1.2
có thể viết:
vnuservINA172.16.1.2
2.1.16.172.in-addr.arpa.IN PTR
vnuserv.vnuhcm.edu.vn.
có thể viết
2INPTRvnuserv.vnuhcm.edu.vn.
@ IN SOA terminator.movie.edu.
al.robocop.movie.edu. (
1 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
tương đương với:
vnuhcm.edu.vn. IN SOA terminator.movie.edu.
al.robocop.movie.edu. (
1 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day
Nếu field đầu của một entry trong file cơ sở dữ liệu là các khoảng
trắng hay spacebar thì nó sẽ lấy resource record ngay dòng trên
của nó. Ví dụ:
155
server1INA172.16.1.4
INA172.16.1.5
Tương đương với:
server1INA172.16.1.4
server1INA172.16.1.5
Address: 172.16.1.2
> www.vnuhcm.edu.vn
Server: vnuserv.vnuhcm.edu.vn
Address: 172.16.1.2
Name: server.vnuhcm.edu.vn
156
Address: 172.16.1.4
Aliases: www.vnuhcm.edu.vn
Ví dụ:
> set type=mx
> vnuhcm.edu.vn
Server: vnuserv.vnuhcm.edu.vn
Address: 172.16.1.2
vnuhcm.edu.vn nameserver =
vnuserv.vnuhcm.edu.vn
157
Bảo mật Linux
1. Tại sao cần phải bảo mật hệ thống ?
Trong thế giới thay đổi từng ngày trong việc truyền thông dữ liệu
toàn cầu, những kết nối Internet rẻ tiền và tốc độ ngày một nhanh
hơn thì việc bảo mật hệ thống là một vấn đề hết sức hữu ích. Bảo
mật là một đòi hỏi thiết yếu bởi vì những máy tính mang tính
toàn cầu đang ngày càng trở nên kém an toàn. Thử tưởng tượng
một gói dữ liệu khi di chuyển từ điểm A sang điểm B, gói dữ liệu
này có thể đi qua nhiều điểm trên mạng và nếu như tại một máy
nào đó người sử dụng có thể lấy thông tin trên gói dữ liệu này và
biết các thông tin chi tiết của máy gửi, họ có thể sử dụng các kỹ
thuật cao để truy nhập bất hợp pháp vào máy gửi và có thể phá
hỏng máy này hoặc toàn bộ hệ thống tùy theo mức độ thao tác.
Những thao tác mà các người sử dụng bất hợp pháp này có thể
làm trên hệ thống là ăn cắp thông tin hệ thống, từ chối các dịch
vụ sử dụng trên hệ thống.
Mục đích của việc bảo mật là thông báo cho người sử dụng,
phòng ban trong hệ thống biết các vấn đề về việc bảo vệ thông tin
và kỹ thuật của họ. Các luật bảo mật cũng chỉ dẫn cho họ biết
thông tin về các máy mà họ có thể gặp trong đường mạng.
2. Bảo mật là gì ?
Trước hết phải nhận ra một điều là không có một hệ thống nào là
hoàn toàn bảo mật tuyệt đối. Tất cả những gì mà nhà quản trị có
thể làm là tăng thêm sự khó khăn cho người dùng khi họ có ý
định thâm nhập hệ thống. Nhà quản trị hệ thống cần phải quyết
định sự cân bằng giữa các mục đích, ý định sử dụng của hệ thống.
Cần phải quyết định mức độ bảo mật cần thiết cho hệ thống của
mình.
Đối với các nhà cung cấp sản phẩm thì mục tiêu của họ là cung
cấp càng nhiều các dịch vụ càng tốt, đơn giản hóa các việc sử
158
dụng dịch vụ trong hệ thống, và nói chung là tất cả những gì mà
họ có thể làm để cho sản phẩm có thể tiêu thụ nhiều. Việc này vô
hình chung đã làm cho nhà quản trị hệ thống trở nên phức tạp
hơn. Bởi vì các dịch vụ đa dạng má các nhà cung cấp phát triển
có thể trở thành cổng sau cho các cracker có thể thâm nhập hệ
thống.
Như vậy, có thể mô tả sự tác động của việc này đối với các nhà
quản trị như sau :
+ Các dịch vụ chống lại các vấn đề bảo mật : như đã nói ở trên thì
các dịch vụ mà các nhà cung cấp sản phẩm phát triển có thể cho
phép người dùng sở hữu các nguồn tài nguyên trên hệ thống và dĩ
nhiên là điều này hoàn toàn không đòi hỏi một chứng thực nào
cả. Đây là một việc hết sức nguy hiểm cho hệ thống và nhiệm vụ
của nhà quản trị là cần phải quyết định hạn chế các dịch vụ cần
thiết trong hệ thống hơn là bảo mật cho các dịch vụ này.
+ Dễ dàng trong sử dụng thì khó khăn trong bảo mật : một hệ
thống mà dễ dàng cho phép sự thâm nhập của người dùng là một
điều hết sức nguy hiểm cho việc bảo mật hệ thống. Nên có cơ chế
chứng thực cho mỗi sử dụng, điều này có thể gây rắc rối trong
việc sử dụng nhưng nó làm cho hệ thống trở nên an toàn hơn, đặc
biệt nếu có thể thì nên áp dụng cơ chế chứng thực thường xuyên
để tăng thêm phần bảo mật cho hệ thống.
+ Kết quả của sự bảo mật chính là giảm sự mất mát thông tin :
việc thiết lập các cơ chế bảo mật như sử dụng firewall, cơ chế
chứng thực, nghiêm ngặt trong vấn đề sử dụng tương ứng sẽ làm
giảm bớt sự mất mát thông tin, mất mát dịch vụ, … Điều này
tương ứng với cái giá phải trả cho các nhà quản trị.
3. Cần phải bảo vệ những gì trong hệ
thống
Trước khi quyết định việc bảo mật hệ thống thì nhà quản trị cần
phải biết xem mình cần phải bảo vệ những gì trong hệ thống đó.
159
Những thông tin sau có thể giúp cho nhà quản trị có thể biết thêm
thông tin về những vấn đề cần bảo vệ trong hệ thống :
+ Sự liều lĩnh trong bảo mật : có thể khiến cho một người thâm
nhập không hợp pháp có thể thành công trong việc thâm nhập.
Liệu người này có thể thực thi các chương trình trong hệ thống,
hay truy cập các tập tin hệ thống cũng như làm hại đến hệ thống.
Những hoạt động này có thể khiến cho hệ thống ngừng hoạt động
không, họ có thể khiến cho hệ thống trở nên rối tung, …
+ Luồng : thông thường khi một người sử dụng thâm nhập vào hệ
thống không có chứng thực thì thread chính là cách thông thường
mà họ được cung cấp. Nhà quản trị cần phải quyết định xem
những người nào được phép truy cập vào hệ thống thông qua
mạng và những phân luồng nào mà họ được phép sử dụng. Có rất
nhiều người thâm nhập qua hệ thống thông qua phân luồng này,
nhà quản trị cần phải xem xét họ là một trong những kiểu người
thâm nhập nào dưới đây :
Curious : loại thâm nhập vào hệ thống và chỉ muốn xem
hệ thống thuộc loại nào cũng như những dữ liệu của hệ
thống.
Malicious : loại này thường làm chết hệ thống mà họ xâm
nhập, thay đổi website hệ thống, hoặc là khiến cho nhà
quản trị phải tốn nhiều thời gian trong việc khôi phục lại
những gì mà họ phá hoại.
Hight-Profile Intrunder : loại xâm nhập này thường cố
gắng sử dụng hệ thống mà họ đang thâm nhập để truy cập
ra bên ngoài, hoặc có thể là để quảng cáo cho tài năng của
chính mình.
Competition : loại này thì thích thú với các thông tin dữ
liệu trong hệ thống. Họ có thể là một người nào đó mà có
thể nghĩ rằng hệ thống của nhà quản trị có gì đó hấp dẫn
đối với họ.
160
Borrower : loại này thích thong dong trong hệ thống của
nhà quản trị, sử dụng các dịch vụ server như irc, DNS, …
Leapfrogger : loại này thích sử dụng hệ thống của nhà
quản trị để kết nối với các hệ thống khác, nếu như hệ
thống của nhà quản trị có chức năng hoạt động như một
gateway thì họ thường cố gắng làm cho hệ thống trở nên
không tin tưởng đối với các hệ thống khác.
161
+ quyết định các phân luồng, xem xét các tiến trình đang
tiếp diễn và tìm xem tiến trình nào làm suy yếu hệ thống
để tối ưu hệ thống.
Một trong những lý do quan trọng để thiết lập các quy tắc bảo
mật là phải chắc chắn rằng nó có tác động đáng giá cho việc phát
triển các việc bảo mật này. Chẳn hạn như cần phải biết các tài sản
trong hệ thống bao gồm những gì, có thể ví dụ một hệ thống
thông thường bao gồm những tài nguyên sau :
+ phần cứng : CPU, bảng mạch chính, bàn phím, màn
hình, máy trạm, máy cá nhân, máy in, ổ đĩa, các đường
truyền thông, router, …
+ phần mềm : nguồn của các chương trình, các chương
trình object, các util, nhìn chung là các chương trình hữu
ích cho hệ thống.
+ dữ liệu : đang thực thi, lưu trữ trên mạng, backup, nhật
ký hằng ngày,
+ nhân lực : người dùng, những người cần thiết hoạt động
trên hệ thống.
+ tài liệu : trong chương trình, phần cứng, hệ thống, các
hàm cục bộ quản trị.
+ tài nguyên cung cấp : giấy, mẫu in, các phương tiện hổ
trợ hệ thống khác.
Có một số vấn đề cần nhận rõ khi phát triển một quy tắc bảo mật
mà nhà quản trị không thể bỏ qua được liệt kê dưới đây là :
+ ai là người được phép sử dụng tài nguyên
+ các mục đích của việc sử dụng tài nguyên
+ ai là người được chứng thực cho việc sử dụng các kết
nối và sử dụng trên
+ ai có thể là người có thể quản trị hệ thống
162
+ quyền lợi và nhiệm vụ của người dùng trong hệ thống là
gì
+ quyền lợi và nhiệm vụ của nhà quản trị ngược lại đối
với các người dùng trong hệ thống.
+ cần phải làm gì với các thông tin nhạy cảm
Chúng ta sẽ thảo luận rõ hơn trong phần sau đây các thông tin nói
trên :
+ ai là người được phép sử dụng tài nguyên : một bước cơ
bản là nhà quản trị phải quyết định ai là người được phép
sử dụng tài nguyên và dịch vụ trong hệ thống. Quy tắc
này nhất thiết phải chỉ định rõ ràng ai là người được
chứng thực sử dụng các dịch vụ này.
+ mục đích của việc sử dụng các tài nguyên : sau khi
quyết định được ai là người được phép sử dụng tài nguyên
trên hệ thống thì một điều cần thiết là cung cấp các hướng
dẫn cho những việc sử dụng tài nguyên hệ thống được
chấp nhận. Nhất thiết nhà quản trị cần phải có những
hướng dẫn khác nhau cho nhiều loại người dùng khác
nhau. Quy tắc cần phải chỉ định những sử dụng cho phép
cũng như những sử dụng không cho phép. Cũng cần thiết
là chỉ định những loại người dùng bị ngăn cấm. Nên chỉ
định một cách hạn chế các người dùng và chứng thực.
Những điểm trình bày dưới đây nên được kiểm tra trước
khi phát triển một bảo mật sử dụng chấp nhận được :
có cho phép phá vỡ các account
có cho phép phá vỡ các mật mã
việc ngắt các dịch vụ trong hệ thống có cho phép
không
một người dùng có cần một chứng thực để đọc
các thông tin trong một tập tin có thể đọc không
163
có cho phép người dùng có thể hiệu chỉnh các tập
tin không thuộc sở hữu của họ thậm chí ngay cả
khi họ được quyền thay đổi tập tin
người dùng có nên chia xẻ account không
đa số câu trả lời cho các câu hỏi trên là ‘không’.
+ ai là người được chứng thực sử dụng các kết nối và các
quyền lợi : quy tắc bảo mật của hệ thống nên hiển thị ai là
người được chứng thực cho phép sử dụng các dịch vụ.
Sau đó là quyết định các kiểu kết nối mà họ được phép
truy cập. Nếu như nhà quản trị không điều khiển được
người nào được phép sử dụng các kết nối đến hệ thống thì
dĩ nhiên họ cũng không thể điều khiển được người dùng
nào hiện diện trên hệ thống. Việc điều khiển được người
dùng nào được phép truy cập vào hệ thống còn có thể
giúp cho nhà quản trị có thể phát hiện ai đang sử dụng hệ
thống khi có vấn đề xảy ra đối với hệ thống. Cũng xuất
phát từ vấn đề bảo mật thì nhà quản trị cần phải xem xét
cơ chế mà họ tạo các tài khoản. Trong trường hợp lõng
lẻo nhất, một người sử dụng có chứng thực chấp nhận
được kết nối vào hệ thống sẽ có thể trực tiếp truy cập vào
hệ thống và tạo tài khoản thủ công thông qua các cơ chế
tạo tài khoản của nhà cung cấp sản phẩm. Tổng quát thì
cơ chế này cung cấp một sự tin tưởng tuyệt đối đối với
người đang vận hành chúng, và dĩ nhiên là người dùng
này có một số lượng lớn những đặc quyền trong hệ thống.
Nếu đây là lựa chọn của nhà quản trị thì họ nên lựa chọn
một số người tin tưởng để trình bày tác vụ này. Một lựa
chọn khác là sử dụng một hệ thống thêm để các người
dùng chứng thực có tài khoản chạy.
+ ai là người có đặc quyền quản trị hệ thống : một điều
hết sức là cần thiết trong vấn đề bảo mật là hết sức cẩn
thận trong việc quyết định ai là người có đặc quyền quản
trị hệ thống. Việc hạn chế các đặc quyền này là hết sức
164
cần thiết. Mặc khác chỉ nên cung cấp đầy đủ các đặc
quyền để họ có thể thao tác được các dịch vụ mong muốn.
Một điều nữa là các người dùng nắm giữ các đặc quyền
nên khai báo tài khoản của mình đến trung tâm bảo mật
của hệ thống. Nếu người dùng được nhà quản trị cung cấp
các đặc quyền này không có tài khoản thì có thể họ sẽ là
một sự nguy hiểm cho hệ thống.
+ quyền lợi và nghĩa vụ của người dùng : người dùng nên
biết rõ quyền lợi và nghĩa vụ của mình đối với hệ thống
nhằm đáp ứng đầy đủ các yêu cầu của nhà quản trị.
Những chủ đề dưới đây là một số những điều mà nhà
quản trị cần phải hiểu rõ trong các lĩnh vực này :
những chỉ dẫn mà nhà quản trị cung cấp ( nơi mà
người dùng bị ngăn cấm, và hơn nữa là những
ngăn cấm này là gì )
nơi mà người dùng có thể chia sẽ tài khoản của
mình hoặc cho phép người khác sử dụng tài khoản
của họ.
có thể bảo mật đến cỡ nào khi người dùng sử
dụng password
người dùng thường thay đổi mật mã như thế nào
và những mật mã nào bị chặn hoặc cho phép.
nơi mà nhà quản trị có thể cung cấp các người
dùng backup
ẩn giấu các thông tin mà có thể hữu ích cho người
khác
các quy tắc đối với việc truyền thông điện tư
+ nên làm gì đối với các thông tin nhạy cảm : trước khi
cho phép người dùng sử dụng các dịch vụ trong hệ thống,
nhà quản trị phải quyết định mức độ mà nhà quản trị cung
cấp các chế độ bảo mật. Để quyết định điều này thì cần
165
phải quyết định mức độ nhạy cảm của dữ liệu mà người
dùng lưu trữ trên hệ thống. Dĩ nhiên là nhà quản trị không
muốn người dùng lưu trữ thông tin nhạy cảm trên hệ
thống mà họ không bảo mật tốt. Nhà quản trị nên cung
cấp các thông tin này cho người dùng để họ lưu trữ bằng
những cách khác.
6. Ý nghĩa của việc bảo mật hệ thống
Việc bảo vệ một site là hết sức có ý nghĩa bởi vì nhà quản trị có
thể bảo vệ các tài nguyên của hệ thống mà thường xuyên được sử
dụng như : máy tính cục bộ, dữ liệu của hệ thống, người dùng, hệ
thống mạng, … Thử tưởng tượng điều gì sẽ xảy ra nếu một người
phá hoại có thể sẽ xóa bỏ các dữ liệu của các người dùng, thay
đổi các website hệ thống, hoặc là công bố những kế hoạch tuyệt
mật của hệ thống ra bên ngoài. Nếu như có ý định thiết lập một
hệ thống mạng thì nhà quản trị sẽ phải quyết định những tài
khoản nào sẽ được thiết lập trước khi thiết lập máy cục bộ của
nhà quản trị.
Nếu như một nhà quản trị nào đó nghĩ rằng hệ thống của họ nhỏ
thì sẽ không có người nào có ý định phá hoại hệ thống của họ thì
đây sẽ là một sai lầm lớn bởi vì kẻ phá hoại vẫn có thể ghé thăm
hệ thống của họ. Bởi vì khi có thể thâm nhập vào hệ thống của
bạn thì họ có thể nhờ vào hệ thống của mình mà truy cập vào các
hệ thống khác một cách dễ dàng, …
Người phá hoại có rất nhiều thời gian để họ tìm hiểu về một hệ
thống trong mục đích của họ, và do đó thì việc bảo mật hệ thống
sẽ khiến họ có thể tốn nhiều thời gian để theo dõi những thay đổi
trong vấn đề bảo mật của hệ thống.
+ bảo mật các máy tính trong hệ thống : có lẽ là việc mà các nhà
quản trị thường làm để bảo mật cho hệ thống là dựa trên việc bảo
mật cho các máy tính. Và dĩ nhiên là họ cũng mong muốn các
người dùng cũng tuân thủ theo ý muốn này. Công việc này tương
đối không khó lắm đối với một người dùng bình thường chẳn hạn
166
như chọn một mật khẩu tốt ( khó bị đoán bởi người khác, thay đổi
mật khẩu thường xuyên, … ), bảo mật các dịch vụ mạng trong
máy cục bộ, nâng cấp thường xuyên các chương trình bảo mật hệ
thống mà từ đó có thể phát hiện nhiều lỗ hổng trong việc bảo mật
của hệ thống. Mặc dù điều này là hết sức cần thiết tuy nhiên đây
có thể là một thao tác cồng kềnh đối với một hệ thống mạng lớn.
+ bảo mật mạng cục bộ : việc bảo mật cho hệ thống mạng cục bộ
cũng cần thiết không kém gì việc bảo mật cho từng máy tính
trong hệ thống. Thử tưởng tượng một hệ thống mạng có tới hàng
trăm hoặc hàng ngàn máy tính thì việc bảo mật hệ thống dựa trên
từng máy tính là không thể. Đối với một hệ thống lớn thì cần phải
chắc chắn rằng chỉ có những người được chứng thực mới sử dụng
được hệ thống mạng, xây dựng một hệ thống bức tường lửa (
firewall ) ngăn chặn những xâm nhập bất hợp pháp, sử dụng
những giải thuật mã hoá mạnh mẽ, và cần phải chắc chắn rằng là
không có một máy tính kém an toàn nào nằm trong hệ thống của
nhà quản trị, đây chính là trách nhiệm của một nhà quản trị.
+ bảo mật theo kiểu ẩn giấu : điều này có nghĩa là nhà quản trị sẽ
di chuyển toàn bộ những tập tin cũng như các dịch vụ quan trọng
trong hệ thống tới một chổ khác an toàn mà kẻ phá hoại không
thể nghĩ tới ( điều này có nghĩa là chỗ di chuyển sẽ là một chổ
không theo chuẩn mặc địch của dịch vụ cài đặt ) và do đó thì họ
không thể phá hoại hệ thống được. Tuy nhiên kiểu bảo mật này
hoàn toàn chưa an toàn tuyệt đối bởi vì một kẻ phá hoại có thể
tìm ra nơi nhà quản trị cất giữ những tập tin cũng như dịch này.
7. An toàn vật lý
Tầng đầu tiên trong việc bảo mật chính là nhà quản trị cần phải
bảo vệ vật lý hệ thống máy tính của họ. Ai là người có thể sử
dụng máy tính của hệ thống, liệu nhà quản trị có thể bảo vệ hệ
thống khỏi những ý muốn riêng tư bất chợt của họ không.
Một câu hỏi đặt ra là liệu mức độ bảo vệ ở cấp độ vật lý này là
như thế nào ??? Nếu đây chỉ là một người dùng cá nhân tại nhà
167
thì rõ ràng việc bảo vệ này chỉ nhằm tránh bị những đứa trẻ trong
nhà vô tình tiếp cận, còn nếu đây là một hệ thống trong phòng thí
nghiệm thì có thể vẫn có những nhu cầu tiếp cận máy tính, trong
một số công ty thì việc rời khỏi máy tính mà không có sự tắt an
toàn là hết sức nguy hiểm.
Có thể liệt kê một số phương thức để bảo vệ hệ thống ở cấp độ
vật lý là : khoá cửa phòng, dây cáp, cabin, đây là một số phương
thức khá tốt cho nhà quản trị.
Khóa máy tính : nhiều case máy tính hiện đại có chức năng khóa
chống việc bị người khác mở hộp máy và lấy đi các phần cứng
trong máy tính. Điều này có thể còn giúp cho việc bảo vệ máy
tính khỏi bị người khác khởi động lại. Một vài case máy tính hiện
đại còn có các chức năng khác như không cho phép người khác
thay thế các bàn phím khác cũng như các thiết bị vật lý khác.
168
TÀI LIỆU THAM KHẢO
1. RedHat Linux Unleased
2. Linux Maximum Security
3. Building Internet Firewall
4. Internet
a. www.linux.org
b. www.linux.com
c. www.kernel.org
d. www.sendmail.org
e. www.oreilly.com
169