Tài liệu Nhập môn hệ điều hành Linux

ÑAÏI HOÏC QUOÁC GIA THAØNH PHOÁ HOÀ CHÍ MINH  
NHAÄP MOÂN  
HEÄ ÑIEÀU HAØNH LINUX  
Taøi lieäu khoùa taäp huaán quaûn trò maïng theo taøi trôï cuûa döï  
aùn “Naâng cao chaát löôïng giaùo duïc vaø ñaøo taïo” töø voán vay  
cuûa Ngaân haøng theá giôùi  
--- Tieåu döï aùn “A” ---  
Thaønh phoá Hoà chí Minh 10/2001  
(Löu haønh noäi boä)  
MÔÛ ÑAÀU  
Vôùi söï phaùt trieån ngaøy caøng maïnh meõ cuûa maïng tin hoïc toaøn caàu Internet xuaát hieän  
ngaøy caøng nhieàu nhu caàu veà nguoàn nhaân löïc chuyeân nghieäp ñeå quaûn trò heä thoáng maïng  
duøng rieâng phöùc hôïp vôùi giao tieáp ra Internet.  
Laø moät ñôn vò chòu traùch nhieäm quaûn trò maïng tin hoïc cuûa Ñaïi hoïc quoác gia Tp HCM,  
chuùng toâi ñaõ coù nhieàu kinh nghieäm trong coâng taùc quaûn trò moät maïng Intranet roäng lôùn vôùi  
haøng ngaøn maùy tính keát noái vaø truy caäp Internet qua ñöôøng duøng rieâng (leased-line). Qua  
giaùo trình naøy, chuùng toâi muoán ñöa ñeán baïn ñoïc nhöõng kieán thöùc cô baûn nhaát, cho pheùp caøi  
ñaët vaø quaûn trò moät heä thoáng server Unix cuøng vôùi caùc dòch vuï Internet cô baûn. Caùc ví duï  
thöôøng ñöôïc döïa treân heä ñieàu haønh (HDH) Linux hay Sun OS, laø hai HDH ñang ñöôïc söû  
duïng roäng raõi trong maïng ÑHQG-HCM. Chuùng toâi cuõng seõ ñeà caäp ñeán giao thöùc TCP/IP  
vaø caùch trieån khai TCP/IP treân moät maùy chuû Unix.  
Vôùi phöông chaâm “chæ noùi veà nhöõng gì chuùng toâi ñaõ söû duïng trong thöïc teá” chuùng  
toâi hy voïng raèng giaùo trình raát ngaén goïn naøy seõ coù ích moät caùch thieát thöïc cho nhöõng baïn  
ñoïc muoán hoïc veà heä ñieàu haønh Unix vaø coâng ngheä maïng Internet, cuõng nhö caùc quaûn trò  
vieân maïng Internet treân cô sôû maùy chuû Unix.  
Do thôøi gian raát eo heïp cho coâng taùc chuaån bò, chuùng toâi chaéc raèng seõ coù nhöõng thieáu  
soùt, mong baïn ñoïc goùp yù vaø xin caûm ôn tröôùc caùc nhaän xeùt cuûa baïn ñoïc. Moïi yù kieán xin göûi  
veà :  
Trònh Ngoïc Minh  
3 Coâng tröôøng Quoác teá, Q.3 Thaønh phoá Hoà chí minh  
-1-  
I. Giôùi thieäu lòch söû phaùt trieån cuûa Unix vaø Linux:  
a. Vaøi doøng veà lòch söû UNIX:  
Giöõa naêm 1960, AT&T Bell Laboratories vaø moät soá trung taâm khaùc tham gia vaøo  
moät coá gaéng taïo ra moät heä ñieàu haønh môùi ñöôïc ñaët teân laø Multics (Multiplexed Information  
and Computing Service). Ñeán naêm 1969, chöông trình Multics bò baõi boû vì ñoù laø moät döï aùn  
quaù nhieàu tham voïng. Thaäm trí nhieàu yeâu caàu ñoái vôùi Multics thôøi ñoù ñeán nay vaãn chöùa coù  
ñöôïc treân caùc Unix môùi nhaát. Nhöng Ken Thompson, Dennis Ritchie, vaø moät soá ñoàng  
nghieäp cuûa Bell Labs ñaõ khoâng boû cuoäc. Thay vì xaây döïng moät HÑH laøm nhieàu vieäc moät  
luùc, hoï quyeát ñònh phaùt trieån moät HÑH ñôn giaûn chæ laøm toát moät vieäc laø chaïy chöông trình  
(run program). HÑH seõ coù raát nhieàu caùc coâng cuï (tool) nhoû, ñôn giaûn, goïn nheï (compact)  
vaø chæ laøm toát moät coâng vieäc. Baèng caùch keát hôïp nhieàu coâng cuï laïi vôùi nhau, hoï seõ coù moät  
chöông trình thöïc hieän moät coâng vieäc phöùc taïp. Ñoù cuõng laø caùch thöùc ngöôøi laäp trình vieát  
ra chöông trình. Peter Neumann ñaët teân Unix cho HÑH ñôn giaûn naøy. tieáp tuïc phaùt trieån  
theo moâ hình ban ñaàu vaø ñaët ra moät heä thoáng taäp tin maø sau naøy ñöôïc phaùt trieån thaønh heä  
thoáng taäp tin cuûa UNIX. Vaøo naêm 1973, söû duïng ngoân ngöõ C cuûa Ritchie, Thompson ñaõ  
vieát laïi toaøn boä HÑH Unix vaø ñaây laø moät thay ñoåi quan troïng cuûa Unix, vì nhôø ñoù Unix töø  
choã laø HÑH cho moät maùy PDP-xx trôû thaønh HÑH cuûa caùc maùy khaùc vôùi moät coá gaéng toái  
thieåu ñeå chuyeån ñoåi. Khoaûng 1977 baûn quyeàn cuûa UNIX ñöôïc giaûi phoùng vaø HDH UNIX  
trôû thaønh moät thöông phaåm.  
b. Hai doøng UNIX : System V cuûa AT&T , Novell vaø Berkeley Software Distribution  
(BSD) cuûa Ñaïi hoïc Berkeley.  
System V :  
Caùc phieân baûn UNIX cuoái cuøng do AT&T xuaát baûn laø System III vaø moät vaøi phaùt  
haønh (releases) cuûa System V. Hai baûn phaùt haønh gaàn ñaây cuûa System V laø Release 3  
(SVR3.2) vaø Release 4.2 (SVR4.2). Phieân baûn SYR 4.2 laø phoå bieán nhaát cho töø maùy PC  
cho tôùi maùy tính lôùn.  
BSD :  
Töø 1970 Computer Science Research Group cuûa University of California taïi  
Berkeley (UCB) xuaát baûn nhieàu phieân baûn UNIX, ñöôïc bieát ñeán döôùi teân Berkeley  
Software Distribution, hay BSD. Caûi bieán cuûa PDP-11 ñöôïc goïi laø 1BSD vaø 2BSD. Trôï  
giuùp cho caùc maùy tính cuûa Digital Equipment Corporation VAX ñöôïc ñöa vaøo trong 3BSD.  
Phaùt trieån cuûa VAX ñöôïc tieáp tuïc vôùi 4.0BSD, 4.1BSD, 4.2BSD, vaø 4.3BSD  
Tröôùc 1992, UNIX laø teân thuoäc sôû höõu cuûa AT&T. Töø 1992, khi AT&T baùn boä phaän Unix  
cho Novell, teân Unix thuoäc sôû höõu cuûa X/Open foundation. Taát caû caùc heä ñieàu haønh thoûa  
maõn moät soá yeâu caàu ñeàu coù theå goïi laø Unix. Ngoaøi ra, Institute of Electrical and Electronic  
Engineers (IEEE) ñaõ thieát laäp chuaån "An Industry-Recognized Operating Systems  
Interface Standard based on the UNIX Operating System." Keát quaû cho ra ñôøi POSIX.1  
(cho giao dieän C ) vaø POSIX.2 (cho heä thoáng leänh treân Unix)  
-2-  
Keát laïi, vaán ñeà chuaån hoùa UNIX vaãn coøn raát xa keát quaû cuoái cuøng. Nhöng ñaây laø quaù trình  
caàn thieát coù lôïi cho söï phaùt trieån cuûa ngaønh tin hoïc noùi chung vaø söï soáng coøn cuûa HDH  
UNIX noùi rieâng.  
Caùc phieân baûn cuûa Unix  
c. Lòch söû phaùt trieån cuûa Linux vaø giôùi thieäu caùc phaân phoái (distribution) Linux  
ngaøy nay  
Linux laø moät HDH daïng UNIX (Unix-like Operating System) chaïy treân maùy PC vôùi  
boä ñieàu khieån trung taâm (CPU) Intel 80386 hoaëc caùc theá heä sau ñoù, hay caùc boä vi xöû lyù  
trung taâm töông thích nhö AMD, Cyrix. Linux ngaøy nay coøn coù theå chaïy treân caùc maùy  
Macintosh hoaëc SUN Sparc . Linux thoûa maõn chuaån POSIX.1.  
Linux ñöôïc vieát laïi toaøn boä töø con soá khoâng, töùc laø khoâng söû duïng moät doøng leänh naøo cuûa  
Unix, ñeå traùnh vaán ñeà baûn quyeàn cuûa Unix, tuy nhieân hoaït ñoäng cuûa Linux hoaøn toaøn döïa  
treân nguyeân taéc cuûa heä ñieàu haønh Unix. Vì vaäy neáu moät ngöôøi naém ñöôïc Linux, thì seõ naém  
ñöôïc UNIX. Neân chuù yù raèng giöõa caùc Unix söï khaùc nhau cuõng khoâng keùm gì giöõa Unix vaø  
Linux.  
Naêm 1991 Linus Torvalds, sinh vieân cuûa ñaïi hoïc toång hôïp Helsinki, Phaàn lan, baét  
ñaàu xem xeùt Minix, moät phieân baûn cuûa Unix, laøm ra vôùi muïc ñích nghieân cöùu caùch taïo ra  
moät heä ñieàu haønh Unix chaïy treân maùy PC vôùi boä vi xöû lyù Intel 80386.  
Ngaøy 25/8/1991, Linus cho ra version 0.01 vaø thoâng baùo treân comp.os.minix cuûa  
Internet veà chöông trình cuûa mình.  
1/1992, Linus cho ra version 0.12 vôùi shell vaø C compiler. Linus khoâng caàn Minix  
nöõa ñeå recompile HDH cuûa mình. Linus ñaët teân HDH cuûa mình laø Linux.  
1994, phieân baûn chính thöùc 1.0 ñöôïc phaùt haønh.  
-3-  
Quaù trình phaùt trieån cuûa Linux ñöôïc taêng toác bôûi söï giuùp ñôõ cuûa chöông trình GNU (GNU’s  
Not Unix), ñoù laø chöông trình phaùt trieån caùc Unix coù khaû naêng chaïy treân nhieàu platform.  
Ñeán hoâm nay, cuoái 2001, phieân baûn môùi nhaát cuûa Linux kernel laø 2.4.2-2, coù khaû naêng  
ñieàu khieån caùc maùy ña boä vi xöû lyù vaø raát nhieàu caùc tính naêng khaùc.  
d. Vaán ñeà baûn quyeàn cuûa GNU project  
Caùc chöông trình tuaân theo GNU Copyleft or GPL (General Public License) coù baûn  
quyeàn nhö sau :  
1. Taùc giaû vaãn laø sôû höõu cuûa chöông trình cuûa mình.  
2. Ai cuõng ñöôïc quyeàn baùn copy cuûa chöông trình vôùi giaù baát kyø maø khoâng phaûi traû  
cho taùc giaû ban ñaàu.  
3. Ngöôøi sôû höõu chöông trình taïo ñieàu kieän cho ngöôøi khaùc sao cheùp chöông trình  
nguoàn ñeå phaùt trieån tieáp chöông trình.  
e. Taïi sao laïi söû duïng Linux ?  
Linux laø mieãn phí (free). Ñoái vôùi chuùng ta hoâm nay khoâng quan troïng vì ngay  
WindowsNT server cuõng “free”. Nhöng trong töông lai, khi chuùng ta muoán hoøa nhaäp vaøo  
theá giôùi, khi chuùng ta muoán coù moät thu nhaäp chính ñaùng cho ngöôøi laäp trình, hieän töôïng sao  
cheùp troäm phaàn meàm caàn phaûi chaám döùt. Khi ñoù, “free” laø moät thoâng soá raát quan troïng ñeå  
choïn Linux.  
Linux raát oån ñònh. Traùi vôùi suy nghó truyeàn thoáng “cuûa reû laø cuûa oâi “, Linux töø  
nhöõng phieân baûn ñaàu tieân caùch ñaây 5-6 naêm ñaõ raát oån ñònh. Ngay caû server Linux phuïc vuï  
nhöõng maïng lôùn (haøng traêm maùy traïm) cuõng hoaït ñoäng raát oån ñònh.  
Linux ñaày ñuû. Taát caû nhöõng gì baïn thaáy ôû IBM, SCO, Sun … ñeàu coù ôû Linux. C  
compiler, perl interpeter, shell , TCP/IP, proxy, firewall, taøi lieäu höôùng daãn ... ñeàu raát ñaày  
ñuû vaø coù chaát löôïng. Heä thoáng caùc chöông trình tieän ích cuõng raát ñaày ñuû .  
Linux laø HDH hoaøn toaøn 32-bit. Nhö caùc Unix khaùc, ngay töø ñaàu, Linux ñaõ laø moät  
HDH 32 bits. Hieän nay ñaõ coù nhöõng phieân baûn Linux 64 bits chaïy treân maùy Alpha Digital  
hay Ultra Sparc.  
Linux raát meàm deûo trong caáu hình. Linux cho ngöôøi söû duïng caáu hình raát linh  
ñoäng, ví duï nhö ñoä phaân daûi maøn hình Xwindow tuøy yù, deã daøng söûa ñoåi ngay caû kernel …  
Linux chaïy treân nhieàu maùy khaùc nhau töø PC 386, 486 töï laép cho ñeán SUN  
Sparc.  
Linux ñöôïc trôï giuùp. Ngaøy nay, vôùi caùc server Linux söû duïng döõ lieäu quan troïng,  
ngöôøi söû duïng hoaøn toaøn coù theå tìm ñöôïc söï trôï giuùp cho Linux töø caùc coâng ty lôùn. IBM ñaõ  
chính thöùc chaøo baùn IBM server chaïy treân Linux. Taøi lieäu giôùi thieäu Linux ngaøy caøng  
nhieàu, khoâng thua keùm baát cöù moät HDH naøo khaùc.  
Vôùi nguoàn taøi lieäu phong phuù, chöông trình töø kernel cho ñeán caùc tieän ích mieãn phí  
vaø boä maõ nguoàn môû, Linux laø ngöôøi baïn ñoàng haønh lyù töôûng cho nhöõng ai muoán ñi vaøo  
-4-  
HDH chuyeân nghieäp UNIX vaø coâng cuï toát nhaát cho coâng taùc ñaøo taïo CNTT trong caùc  
tröôøng ñaïi hoïc.  
Caùc phieân baûn cuûa Linux. Caùc phieân baûn cuûa HDH Linux ñöôïc xaùc ñònh bôûi heä  
thoáng soá daïng X.YY.ZZ. Neáu YY laø soá chaün => phieân baûn oån ñònh. YY laø soá leû => phieân  
baûn thöû nghieäm .  
Caùc phaân phoái (distribution) cuûa Linux quen bieát laø RedHat, Debian, SUSE,  
Slakware, Caldera …  
Chuù yù phaân bieät soá phieân baûn cuûa heä ñieàu haønh (Linux kernel) vôùi phieân baûn cuûa  
caùc phaân phoái (ví duï RedHat 6.0 vôùi kernel Linux 2.2.5-15).  
II. Heä thoáng tieán trình (process) cuûa Linux. Ñieàu khieån caùc tieán trình.:  
Linux laø moät HDH ña ngöôøi söû duïng, ña tieán trình. Linux thöïc hieän taát caû caùc coâng  
vieäc cuûa ngöôøi söû duïng cuõng nhö cuûa heä thoáng baèng caùc tieán trình (process). Do ñoù, hieåu  
ñöôïc caùch ñieàu khieån caùc tieán trình ñang hoaït ñoäng treân HDH Linux raát quan troïng, nhieàu  
khi coù tính chaát quyeát ñònh, cho vieäc quaûn trò heä thoáng.  
Ñònh nghóa : Tieán trình (process) laø moät chöông trình ñôn chaïy treân khoâng gian  
ñòa chæ aûo cuûa noù . Caàn phaân bieät tieán trình vôùi leänh vì moät doøng leänh treân shell coù theå sinh  
ra nhieàu tieán trình.  
Doøng leänh :  
nroff -man ps.1 | grep kill | more  
seõ sinh ra 3 tieán trình khaùc nhau.  
Coù 3 loaïi tieán trình chính treân Linux :  
Tieán trình vôùi ñoái thoaïi (Interactive processes) : laø tieán trình khôûi ñoäng vaø quaûn lyù  
bôûi shell, keå caû tieán trình forthground hoaëc background.  
Tieán trình batch (Batch processes) : Tieán trình khoâng gaén lieàn ñeán baøn ñieàu khieån  
(terminal) vaø ñöôïc naèm trong haøng ñôïi ñeå laàn löôït thöïc hieän.  
Tieán trình aån treân boä nhôù (Daemon processes) : Laø caùc tieán trình chaïy döôùi neàn  
(background). Caùc tieán trình naøy thöôøng ñöôïc khôûi ñoäng töø ñaàu. Ña soá caùc chöông  
trình server cho caùc dòch vuï chaïy theo phöông thöùc naøy. Ñaây laø caùc chöông trình  
sau khi ñöôïc goïi leân boä nhôù, ñôïi thuï ñoäng caùc yeâu caàu chöông trình khaùch (client)  
ñeå traû lôøi sau caùc coång xaùc ñònh (coång laø khaùi nieäm gaén lieàn vôùi giao thöùc TCP/IP  
BSD socket. Chuùng ta seõ giaûi thích roõ trong phaàn TCP/IP). Haàu heát caùc dòch vuï treân  
Internet nhö mail, Web, Domain Name Service … chaïy theo nguyeân taéc naøy. Caùc  
chöông trình ñöôïc goïi laø caùc chöông trình daemon vaø teân cuûa noù thöôøng keát thuùc  
baèng kyù töï “d” nhö named, inetd … Kyù töï “d” cuoái ñöôïc phaùt aâm rôøi ra nhö “ñeâ “  
trong tieáng vieät. Ví duï named ñöôïc phaùt aâm laø “neâm ñeâ”.  
-5-  
Caùch ñôn giaûn nhaát ñeå kieåm tra heä thoáng tieán trình ñang chaïy laø söû duïng leänh ps  
(process status). Leänh ps coù nhieàu tuøy choïn (option) vaø phuï thuoäc moät caùch maëc ñònh vaøo  
ngöôøi login vaøo heä thoáng. Ví duï :  
$ ps  
PID TTY STAT TIME COMMAND  
41 v01 S 0:00 -bash  
134 v01 R 0:00 ps  
cho pheùp hieån thò caùc tieán trình lieân quan tôùi moät ngöôøi söû duïng heä thoáng.  
Coät ñaàu tieân laø PID (Process IDentification). Moãi tieán trình cuûa Linux ñeàu mang moät  
soá ID vaø caùc thao taùc lieân quan ñeán tieán trình ñeàu thoâng qua soá PID naøy. Gaïch noái – tröôùc  
bash ñeå thoâng baùo ñoù laø shell khôûi ñoäng khi ngöôøi söû duïng login.  
Ñeå hieån thò taát caû caùc process, ta coù theå söû duïng leänh ps –a. Moät ngöôøi söû duïng heä  
thoáng bình thöôøng coù theå thaáy taát caû caùc tieán trình, nhöng chæ coù theå ñieàu khieån döôïc caùc  
tieán trình cuûa mình taïo ra. Chæ coù super-user môùi coù quyeàn ñieàu khieån taát caû caùc tieán trình  
cuûa heä thoáng Linux vaø cuûa ngöôøi khaùc. Leänh ps –ax cho pheùp hieån thò taát caû caùc tieán trình,  
ngay caû nhöõng tieán trình khoâng gaén lieàn ñeán coù baøn ñieàu khieån (tty). Chuùng ta coù theå coi  
caùc tieán trình ñang chaïy cuøng vôùi doøng leänh ñaày ñuû ñeå khôûi ñ oäng tieán trình naøy baèng ps  
–axl. Leänh man ps cho pheùp coi caùc tham soá töï choïn khaùc cuûa leänh ps .  
Döøng moät tieán trình, leänh kill : Trong nhieàu tröôøng hôïp, moät tieán trình coù theå bò  
treo, moät baøn phím ñieàu khieån khoâng traû lôøi caùc leänh töø baøn phím, moät chöông trình server  
caàn nhaän caáu hình môùi, card maïng caàn thay ñoåi ñòa chæ IP …, khi ñoù chuùng ta phaûi döøng  
(kill) tieán trình ñang coù vaán ñeà . Linux coù leänh kill ñeå thöïc hieän caùc coâng taùc naøy. Tröôùc  
tieân baïn caàn phaûi bieát PID cuûa tieán trình caàn döøng thoâng qua leänh ps. Xin nhaéc laïi chæ coù  
super-user môùi coù quyeàn döøng taát caû caùc tieán trình, coøn ngöôøi söû duïng chæ ñöôïc döøng caùc  
tieán trình cuûa mình. Sau ñoù, ta söû duïng leänh  
kill -9 PID_cuûa_ tieán_trình  
Tham soá –9 laø göûi tín hieäu döøng khoâng ñieàu kieän chöông trình. Chuù yù neáu baïn logged  
vaøo heä thoáng nhö root, nhaäp soá PID chính xaùc neáu khoâng baïn coù theå döøng moät tieán trình  
khaùc. Khoâng neân döøng caùc tieán trình maø mình khoâng bieát vì coù theå laøm treo maùy hoaëc dòch  
vuï.  
Moät tieán trình coù theå sinh ra caùc tieán trình con trong quaù trình hoaït ñoäng cuûa mình.  
Neáu baïn döøng tieán trình cha, caùc tieán trình con cuõng seõ döøng theo, nhöng khoâng töùc thì . Vì  
vaäy phaûi ñôïi moät khoaûng thôøi gian vaø sau ñoù kieåm tra laïi xem taát caû caùc tieán trình con coù  
döøng ñuùng hay khoâng. Trong moät soá haõn höõu caùc tröôøng hôïp, tieán trình coù loãi naëng khoâng  
döøng ñöôïc, phöông phaùp cuoái cuøng laø khôûi ñoäng laïi maùy.  
Khi doù tieán trình sau leänh nohup seõ khoâng bò döøng laïi khi baïn logout.  
-6-  
Leänh at : Beân caïnh ñoù, Linux coù caùc leänh cho pheùp thöïc hieän caùc tieán trình ôû caùc  
thôøi ñieåm mong muoán. Leänh at cho pheùp thöïc hieän moät tieán trình vaøo thôøi ñieåm nhaäp trong  
doøng leänh.  
$ at 1:23<Return>  
lp /usr/sales/reports/*<Return>  
echo “Files printed, BossÆ| mail boss@company.com<Return>  
<^D>  
Daáu ^D coù nghóa laø caàn giöõ phím <Ctrl>, sau ñoù nhaán phím D vaø boû caû 2 phím cuøng  
moät luùc.  
Sau khi baïn keát thuùc leänh at, doøng thoâng baùo gioáng nhö sau seõ hieän ra maøn hình  
job 756001.a at Sat Dec 21 01:23:00 2000  
Soá 756001.a cho pheùp tham chieáu tôùi coâng taùc (job) ñoù, ñeå duøng neáu baïn muoán xoùa  
job ñoù bôûi leänh  
at –r job_number  
Leänh naøy coù theå khaùc vôùi caùc phieân baûn khaùc nhau. Ví duï ñoái vôùi RedHat 6.2 leänh  
xoùa moät job laø atrm job_number . Trong moïi tröôøng hôïp coi manpage ñeå bieát caùc leänh vaø  
tham soá cuï theå.  
Baïn coù theå duøng quy taéc chuyeån höôùng (redirect) ñeå laäp lòch trình cho nhieàu laänh  
cuøng moät luùc  
at 10:59 < taäp_leänh  
trong ñoù, taäp_leänh laø moät taäp tin daïng text coù caùc leänh. Ñeå kieåm tra caùc tieán trình maø  
baïn ñaõ nhaäp vaøo, duøng leänh at –l  
Leänh batch : Khaùc vôùi leänh at laø tieán trình ñöôïc thöïc hieän vaøo caùc thôøi ñieåm do  
ngöôøi söû duïng choïn, leänh batch ñeå cho heä thoáng töï quyeát ñònh khi naøo tieán trình ñöôïc thöïc  
hieän döïa treân möùc ñoä taûi cuûa heä thoáng. Thöôøng laø caùc tieán trình batch ñöôïc thi haønh khi  
maùy baän döôùi 20%. Caùc tieán trình in aán, caäp nhaät döõ lieäu lôùn … raát thích hôïp vôùi kieåu leänh  
naøy. Cuù phaùp cuûa batch nhö sau :  
$ batch<Return>  
lp /usr/sales/reports/*<Return>  
echo “Files printed, BossÆ| mail boss@company.com<Return>  
<^D>  
Caùc leänh at vaø batch cho pheùp laäp keá hoaïch thöïc hieän tieán trình moät laàn. Linux coøn  
cho pheùp laäp keá hoaïch coù tính chaát chu kyø thoâng qua leänh cron (vieát taét cuûa chronograph)  
vaø caùc taäp tin crontabs. Chöông trình cron ñöôïc khôûi ñoäng ngay töø ñaàu vôùi khôûi ñoäng cuûa  
-7-  
heä thoáng. Khi khôûi ñoäng, cron xem coù caùc tieán trình trong haøng ñôïi nhaäp vaøo bôûi leänh at,  
sau ñoù xem xeùt caùc caùc taäp tin crontabs xem coù tieán trình caàn phaûi thöïc hieän hay khoâng roài  
“ñi nguû “:-) . Cron seõ “thöùc daäy” moãi phuùt ñeå kieåm tra xem coù phaûi thöïc hieän tieán trình  
naøo khoâng. Super-user vaø user ñeàu coù theå ñaët haøng caùc tieán trình seõ ñöôïc cho pheùp thöïc  
hieän bôûi cron. Ñeå laøm ñieàu naøy, baïn caàn taïo moät taäp tin text theo cuù phaùp cuûa cron nhö  
sau.  
Phuùt giôø ngaøy_cuûa_thaùng thaùng_cuûa_naêm ngaøy_cuûa_tuaàn leänh  
0
8
*
*
1
/u/sartin/bin/status_report  
cho pheùp /u/sartin/bin/status_report ñöôïc thöïc hieän vaøo 8giôø 00 phuùt caùc thöù hai.  
Moãi haøng chöùa thôøi gian vaø leänh. Leänh seõ ñöôïc cron thöïc hieän taïi thôøi ñieåm ghi ôû  
tröôùc treân cuøng doøng ñoù. Naêm coät ñaàu lieân quan tôùi thôøi gian coù theå thay theá baèng daáu sao  
“*” vôùi yù nghóa laø “vôùi moïi”. Caùc giaù trò coù theå cho caùc tröôøng laø :  
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 ñoù duøng leänh crontab ñeå caøi ñaët taäp tin leänh vaøo thö muïc  
/usr/spool/cron/crontabs. Moãi ngöôøi söû duïng seõ coù moät taäp tin crontab truøng teân mình (user  
name) ñeå löu taát caû caùc leänh caàn thöïc hieän theo chu kyø trong thö muïc naøy. Cuù phaùp söû  
duïng crontab:  
crontab teân_taäp_tin_leänh  
Sau khi hieåu roõ caáu truùc caùc taäp tin, ngöôøi söû duïng coù theå töï taïo caùc taäp tin crontab vaø  
ñaët vaøo thö muïc theo ñuùng quy ñònh cuûa cron maø khoâng caàn phaûi duøng crontab. Ñieàu naøy  
coøn ñuùng cho ñaïi ña soá caùc dòch vuï khaùc. Caùc chöông trình cuûa Unix thöôøng tuaân theo moät  
quy taéc laø coù caùc taäp tin caáu hình daïng text. Caùc taäp tin naøy hoaøn toaøn coù theå ñöôïc taïo ra  
baèng caùc phaàn meàm soaïn thaûo vaên baûn. Caùc chöông trình tieän ích chæ laø coâng cuï trôï giuùp  
neáu ngöôøi söû duïng muoán vaø khoâng mang tính chaát baét buoäc. Ñeå coù theå trôû thaønh moät ngöôøi  
quaûn trò Unix thöïc thuï, baïn ñoïc neân taäp daàn cung caùch caáu hình tröïc tieáp khoâng thoâng qua  
caùc tieän ích.  
Leänh top. Leänh top cho pheùp hieån thò söï hoaït ñoäng cuûa caùc tieán trình, ñaëc bieät laø caùc  
thoâng tin veà taøi nguyeân heä thoáng cuõng nhö vieäc söû duïng taøi nguyeân ñoù cuûa töøng tieán trình.  
Vôùi leänh ñôn giaûn top, ta seõ coù  
11:09am up 46 days, 17:44, 2 users, load average: 0.08, 0.03, 0.01  
63 processes: 61 sleeping, 2 running, 0 zombie, 0 stopped  
CPU states: 0.1% user, 0.0% system, 0.0% nice, 99.8% idle  
Mem:  
126644K av, 121568K used, 5076K free, 0K shrd,  
25404K buff  
Swap: 136544K av, 9836K used, 126708K free 36040K cached  
-8-  
PID USER  
27568 tnminh  
1 root  
PRI NI SIZE RSS SHARE STAT %CPU %MEM  
TIME COMMAND  
0:00 top  
11  
0
0
0
0
1052 1052  
836 R  
68 S  
0 SW  
0.1 0.8  
0.0 0.0  
0.0 0.0  
124  
0
72  
0
0:25 init  
2 root  
8
0:00 kevent  
Soá % maùy raûnh (idle) in ñaäm treân laø raát quan troïng. Moät maùy raûnh döôùi 50% laø moät  
maùy quaù taûi vaø caàn ñöôïc xem xeùt. Leänh top coøn cho pheùp theo doõi xem coù tieán trình naøo  
chieám duïng quaù nhieàu thôøi gian CPU cuõng nhö truy caäp ñóa khoâng.  
Ngoaøi ra, moät soá leänh khaùc nhö vmstat. Mpstat, sar, iostat ... cuõng cho pheùp xem xeùt  
vôùi caùc muïc ñích khaùc nhau hoaït ñoäng cuûa maùy chuû.  
Inetd vaø caùc dòch vuï maïng :  
Unix coù hai caùch ñeå toå chöùc caùc dòch vuï maïng: hoaëc laø khôûi ñoäng ngay töø ñaàu chöông  
trình server döôùi daïng daemon, hoaëc laø ñeå coâng taùc khôûi ñoäng chöông trình dòch vuï theo  
yeâu caàu (khi coù yeâu caàu keát noái) vôùi söï trôï giuùp cuûa moät tieán trình daemon khaùc laø inetd  
(ñoïc laø ineùt ñeâ). Trong tröôøng hôïp ñaàu, ta caàn cho moãi dòch vuï ít nhaát moät daemon vaø taøi  
nguyeân cuûa heä thoáng bò söû duïng ngay caû khi khoâng coù yeâu caàu keát noái. Coøn trong tröôøng  
hôïp sau ta caàn moät daemon cho taát caû caùc dòch vuï. Taøi nguyeân heä thoáng chæ thöïc söï bò  
chieám duïng khi coù yeâu caàu keát noái. Vì vaäy, chöông trình server daïng daemon thöôøng tröïc  
ñöôïc duøng cho caùc dòch vuï coù yeâu caàu keát noái thöôøng xuyeân nhö DNS, mail, Web ; coøn sô  
ñoà qua inetd daønh cho caùc dòch vuï vôùi taàn soá thöa nhö ftp, telnet, secure shell …  
Chöông trình inetd, coøn goïi laø super-server, ñöôïc söû duïng ñeå khôûi ñoäng caùc daemon  
phuïc vuï caùc dòch vuï maïng. inetd ñôïi caùc noái maïng sau moät soá coång ñöôïc quy ñònh bôûi taäp  
tion caáu hình /etc/inetd.conf. RedHat Linux 7.1 söû duïng taäp tin /etc/xinetd.conf vaø caùc taäp  
tin trong thö muïc /etc/xinet.d. Khi coù yeâu caàu keát noái, inetd seõ goïi chöông trình server  
töông öùng ñeå thieát laäp caùc keát noái vaø phuïc vuï khaùch haøng. Thoâng thöôøng, inetd ñöôïc khôûi  
ñoäng ngay töø ñaàu bôûi caùc script duøng cho khôûi ñoäng maùy. inetd seõ ñoïc file caáu hình  
/etc/inetd.conf khi ñöôïc goïi leân boä nhôù . Sau ñaây laø moät vaøi doøng cuûa taäp tin /etc/inetd.conf  
#
<service_name> <sock_type> <proto> <flags> <user> <server_path>  
<args>  
# Echo, discard, daytime, and chargen are used primarily for testing.  
# To re-read this file after changes, just do a 'killall -HUP inetd'  
#time  
#time  
#
stream tcp  
dgram udp  
nowait root  
wait root  
internal  
internal  
# These are standard services.  
#
ftp  
stream tcp  
nowait root  
nowait root  
/usr/sbin/tcpd in.ftpd -l -a  
/usr/sbin/tcpd in.telnetd  
telnet stream tcp  
-9-  
Beân caïnh taäp tin caáu hình /etc/inetd.conf, taäp tin /etc/services cuõng ñöôïc inetd söû  
duïng ñeå bieát caùc coång (port) cuûa caùc chöông trình server. Ví duï moät ñoaïn cuûa taäp tin  
/etc/services  
ftp-data  
20/tcp  
21/tcp  
21/udp  
22/tcp  
22/udp  
23/tcp  
ftp  
fsp  
fspd  
# SSH Remote Login Protocol  
# SSH Remote Login Protocol  
ssh  
ssh  
telnet  
# 24 - private  
smtp  
25/tcp  
mail  
# 26 - unassigned  
time  
37/tcp  
37/udp  
39/udp  
timserver  
timserver  
time  
rlp  
resource  
name  
nicname  
# resource location  
# IEN 116  
nameserver  
whois  
42/tcp  
43/tcp  
50/tcp  
re-mail-ck  
re-mail-ck  
domain  
domain  
# Remote Mail Checking Protocol  
# Remote Mail Checking Protocol  
50/udp  
53/tcp  
53/udp  
nameserver  
nameserver  
# name-domain server  
Hai taäp tin /etc/inetd.conf vaø /etc/services quan heä maät thieát vôùi nhau. Coät ñaàu tieân  
bao goàm teân caùc dòch vuï maïng vaø caàn phaûi gioáng nhau. Moät dòch vuï muoán ñöôïc hoaït  
ñoäng nhôø inetd phaûi khai baùo coång maø noù ñôïi khaùch haøng thoâng qua /etc/services vaø doøng  
leänh khôûi ñoäng noù trong /etc/inetd.conf. Muoán taét moät dòch vuï, ta chæ caàn ñaët daáu chuù thích  
# tröôùc doøng mieâu taû dòch vuï vaø khi ñoù, inetd seõ khoâng bieát vaø khoâng goïi dòch vuï ñoù nöõa.  
Nhö caùc baïn ñoïc nhaän thaáy noäi dung cuûa coät <server_path> <args> cho caùc dòch vuï laø  
/usr/sbin/tcpd in.telnetd. Chöông trình tcpd ñöôïc inetd goïi leân tröôùc ñeå laøm moät soá coâng  
taùc kieåm tra vaø ghi log tröôùc khi chöông trình dòch vuï thöïc ñöôïc goïi leân. Cuï theå laø tcpd seõ  
söû duïng  
Coät <flags> cho bieát chöông trình inetd coù phaûi ñôïi (wait) hay khoâng (nowait) keát noái  
keát thuùc tröôùc khi “tieáp” moät keát noái khaùc. Ví duï treân vôùi telnet cho thaáy nhieàu chöông  
trình khaùch coù theå ñöôïc phuïc vuï moät luùc qua cuøng moät coång telnet 23. Taát nhieân chöông  
trình server telnet cuõng phaûi ñöôïc thieát keá thích hôïp vôùi kieåu laøm vieäc ña khaùch haøng naøy.  
Coät <user> quy ñònh quyeàn cuûa tieán trình khi noù ñöôïc chaïy treân boä nhôù. Trong  
tröôøng hôïp coù nghi ngôø veà tính baûo maät cuûa moät dòch vuï, ta coù theå giaûm quyeàn cuûa noù  
baèng caùch thay ñoåi noäi dung cuûa coät naøy.  
-10-  
Qua ví duï treân ta thaáy dòch vuï ftp seõ ñöôïc inetd goïi leân thoâng qua doøng leänh  
/usr/sbin/tcpd in.ftpd -l –a khi coù moät chöông trình khaùch haøng duøng giao  
thöùc TCP goïi qua coång 21.  
Ñoïc theâm. Tieán trình ñöôïc sinh ra nhö theá naøo? Treân moät maùy chuû Unix, thöôøng  
coù haøng chuïc tieán trình ñang ñoàng thôøi hoaït ñoäng. Treân nhöõng maùy chuû lôùn vaø baän  
bòu, coù theå coù haøng ngaøn tieán trình cuøng luùc. Vaäy tieán trình ñöôïc hình thaønh nhö theá  
naøo ?  
Neáu con ngöôøi ñöôïc sinh ra bôûi con ngöôøi thì tieán trình cuõng sinh ra bôûi tieán trình.  
Chæ coù moät ñieàu khaùc laø phaûi caàn 2 ngöôøi laøm cha meï môùi coù treû em (tröø nhöõng döï  
ñònh clone ngöôøi hieän nay), coøn tieán trình thì chæ coù moät tieán trình cha. Khi heä thoáng  
khôûi ñoäng, tieán trình ñaàu tieân laø init. Sau ñoù, init seõ sinh ra caùc tieán trình khaùc caàn  
thieát cho söï hoaït ñoäng cuûa heä thoáng. Ví duï moãi khi ta ñaêng nhaäp heä thoáng, tieán  
trình login sau khi kieåm tra maät khaåu seõ sinh ra moät tieán trình shell ñeå ngöôøi söû  
duïng coù theå laøm vieäc thoâng qua caùc doøng leänh cuûa shell. Coù 2 leänh lieân quan tôùi  
vieäc hình thaønh caùc tieán trình laø leänh fork vaø execve. Leänh fork cho pheùp hình  
thaønh moät tieán trình con gioáng heät tieán trình cha vaø caû hai sau ñoù cuøng ñöôïc song  
song hoaït ñoäng vaø ñöôïc HÑH ñoái xöû nhö nhau. Hai tieán trình naøy chæ khaùc nhau veà  
PID vaø ngöôøi ta coù theå bieát raèng hieän ñang ôû tieán trình baèng caùch xem giaù trò trôû veà  
cuûa leänh fork: neáu baèng 0, ta ñang ôû tieán trình cha, neáu khaùc 0 thì ñoù laø PID cuûa  
tieán trình con. Leänh execve thì thay theá moät tieán trình baèng moät tieán trình khaùc.  
Nhö vaäy, neáu ta ñang coù moät tieán trình A, tieán trình B coù theå sinh ra töø A baèng caùch  
A fork ra A’ roài trong A’ ta duøng leänh execve ñeå thay theá A’ baèng B.  
Ñoaïn chöông trình sau cho pheùp hieåu roõ hôn caùc mieâu taû treân  
if (fork() == 0) {  
/* I am the child, I will become ls /usr/bin */  
execl(“/bin/ls”,”ls”,”/usr/bin”, (char *) 0);  
}
else {  
/* I’m parent, do whatever perent’s sopposed to do*/  
}
Caùc bieán taáu cuûa execve taïo thaønh moät hoï caùc haøm exec (exec family). Linux coù  
theâm clone ñeå taïo caùc threads (tieåu tieán trình). Trong tröôøng hôïp heä thoáng quaù taûi,  
leänh fork seõ khoâng thaønh coâng do taøi nguyeân ñaõ bò veùt caïn. Khi ñoù ta seõ coù thoâng  
baùo loãi treân maøn hình gaén tröïc tieáp vôùi maùy chuû vaø maùy chuû caàn ñöôïc xem xeùt söûa  
chöõa hoaëc naâng caáp.  
-11-  
III. Heä thoáng taäp tin cuûa Linux :  
III.1 Caây thö muïc cuûa Linux. Ñoái vôùi heä ñieàu haønh Linux, khoâng coù khaùi nieäm caùc oå  
ñóa khaùc nhau. Sau quaù trình khôûi ñoäng, toaøn boä caùc thö muïc vaø taäp tin ñöôïc “gaén” leân  
(mount) vaø taïo thaønh moät heä thoáng taäp tin thoáng nhaát, baét ñaàu töø goác ‘/’  
/-----+  
!-------/bin  
!-------/sbin  
!-------/usr------/usr/bin  
!
!
!
!
!------/usr/sbin  
!------/usr/local  
!------/usr/doc  
!-------/etc  
!-------/lib  
!-------/var-------/var/adm  
!-------/var/log  
!-------/var/spool  
Hình treân laø caây thö muïc cuûa ña soá caùc Unix. Vôùi caây thö muïc treân ta khoâng theå naøo  
bieát ñöôïc soá löôïng oå ñóa cöùng, caùc phaân maûnh (partition) cuûa moãi ñóa vaø söï töông öùng giöõa  
caùc phaân maûnh vaø thö muïc nhö theá naøo.  
Chuùng ta coù theå chia ñóa cöùng thaønh nhieàu phaân maûnh (partition). Moãi partition laø  
moät heä thoáng taäp tin (file system) ñoäc laäp. Sau ñoù, caùc heä thoáng taäp tin naøy ñöôïc ‘gaén ‘  
(mount) vaøo heä thoáng taäp tin thoáng nhaát cuûa toaøn heä thoáng. Chuùng ta hoaøn toaøn coù theå gaén  
theâm moät ñóa cöùng môùi, format roài mount vaøo heä thoáng taäp tin döôùi teân moät thö muïc naøo  
ñoù vaø taïi moät ñieåm (mount point) naøo ñoù. Ñoái vôùi caùc chöông trình chaïy treân Unix, khoâng  
heà coù khaùi nieäm moät thö muïc naèm ôû ñóa naøo hay partition naøo.  
-12-  
Hình sau ñaây cho thaáy söï töông quan giöõa vò trí vaät lyù treân ñóa vaø vò trí logic trong caây  
taäp tin.  
!-----------------------------------!  
!
!
/
!
!
!
!
!
!
/
|
------------------!  
!
-------------  
< == >  
|
|
|
|
!
/usr  
!
/usr  
/squid  
!-  
----------------------------------!  
|
!
!
!
/usr/home  
!
/usr/home  
!-----------------------------------!  
/squid  
!-----------------------------------!  
!
!
Thö muïc /usr/home laø thö muïc con cuûa /usr trong caây thö muïc, nhöng treân ñóa vaät lyù,  
ñaây laø hai phaân maûnh (partition) caïnh nhau.  
Heä thoáng taäp tin ñöôïc OS Linux mount trong quaù trình khôûi ñoäng tuaân theo caùc thoâng  
soá ghi trong taäp tin /etc/fstab (moät laàn nöõa, neáu baïn naém vöõng cuù phaùp cuûa taäp tin naøy,  
baïn coù theå thay ñoåi noù thoâng qua moät chöông trình soaïn thaûo vaên baûn text baát kyø vaø coù moät  
kieåu khôûi ñoäng heä thoáng taäp tin nhö baïn muoán)  
[tnminh@pasteur tnminh]$ more /etc/fstab  
/dev/hda2  
/dev/hda3  
/dev/fd0  
/dev/cdrom  
none  
/
ext2  
swap  
defaults  
defaults  
noauto  
1 1  
0 0  
0 0  
0 0  
0 0  
0 0  
swap  
/mnt/floppy ext2  
/mnt/cdrom iso9660  
noauto,ro  
defaults  
mode=0622  
/proc  
proc  
none  
/dev/pts  
devpts  
Coät 1 (fs_spec) : caùc trang thieát bò (device) caàn mount  
-
-
-
2 (fs_file) : ñieåm treo (mount point)  
3 (fs_vfstype) : Kieåu cuûa heä thoáng taäp tin,  
4 (fs_mntops) : caùc options. Default = mount khi khôûi ñoäng, ro = read only,  
user neáu cho pheùp user mount heä thoáng taäp tin naøy ...  
-
-
5 (fs_freq) : hieän thò (dumped ) hay khoâng heä thoáng taäp tin  
6 (fs_passno) : coù caàn kieåm tra hay khoâng bôûi fsck  
-13-  
Taäp tin /etc/fstab ñöôïc söû duïng bôûi chöông trình mount trong quaù trình khôûi ñoäng  
cuûa Linux. Doøng  
/dev/cdrom  
/mnt/cdrom iso9660  
noauto,ro  
0 0  
cho pheùp oå CDROM coù theå mount theo yù muoán cuûa ngöôøi duøng (khoâng mount  
automatic) vaø gaén vaøo /mnt/crdom vôùi kieåu heä thoáng taäp tin iso9660 vôùi muïc ñích chæ ñoïc.  
Neáu khoâng coù töø khoùa user thì chæ coù root môùi ñöôïc quyeàn mount oå CDROM. Vôùi taäp tin  
/etc/fstab nhö treân thì leänh mount/unmount oå CDROM seõ laø :  
mount /dev/cdrom hay umount /dev/cdrom  
Mount khoâng coù thoâng soá cho pheùp hieån noäi dung taäp tin /etc/mtab = nhöõng heä thoáng  
taäp tin ñaõ ñöôïc mounted.  
[root@pasteur tnminh]# mount  
/dev/hda2 on / type ext2 (rw)  
none on /proc type proc (rw)  
none on /dev/pts type devpts (rw,mode=0622)  
/dev/hda1 on /home/tnminh/minh type vfat (rw)  
So saùnh vôùi  
[root@pasteur tnminh]# more /etc/mtab  
/dev/hda2 / ext2 rw 0 0  
none /proc proc rw 0 0  
none /dev/pts devpts rw,mode=0622 0 0  
/dev/hda1  
/home/tnminh/minh  
vfat  
rw  
0
0
ÔÛ ñaây chuùng ta thaáy 2 doøng ñaëc bieät :  
none /proc proc rw 0 0  
none /dev/pts devpts rw,mode=0622 0 0  
/dev chöùa nhöõng taäp tin ñaëc bieät : taäp tin thieát bò ngoaïi vi. Heä thoáng Linux söû duïng  
caùc taäp tin naøy ñeå truy xuaát döõ lieäu ñeán caùc thieát bò ngoaïi vi. Nhö vaäy, Linux giao tieáp ñeán  
caùc thieát bò ngoaïi vi gioáng nhö vôùi caùc taäp tin. Ví duï /dev/psaux ñöôïc duøng ñeå giao tieáp vôùi  
chuoät, /dev/hda1 ñeå giao tieáp vôùi phaân maûnh 1 cuûa ñóa cöùng master cuûa controler soá 0...  
brw-rw----  
crw-rw-r--  
crw-------  
crw-------  
crw-------  
crw-------  
1 root  
1 root  
1 root  
1 root  
1 root  
1 root  
disk  
root  
tty  
3,  
1 May  
1 May  
6
6
1998 hda1  
10,  
1998 psaux  
4, 64 Oct 3 15:55 ttyS0  
tty  
4, 65 May  
4, 66 May  
4, 67 May  
6
6
6
1998 ttyS1  
1998 ttyS2  
1998 ttyS3  
tty  
tty  
-14-  
Kyù töï coät ñaàu tieân ‘b’ ñeå thoâng baùo kieåu giao tieáp block (cho thieát bò nhö oå ñóa), ‘c’  
– giao tieáp kieåu kyù töï (cho thieát bò nhö baøn phím, chuoät …).  
Toùm laïi, ta nhaän thaáy caây thö muïc cuûa Unix cuõng gioáng nhö caây thö muïc cuûa MS  
DOS hay Windows.  
/proc laø heä thoáng taäp tin aûo cho pheùp ñoïc caùc thoâng tin cuûa caùc process treân boä nhôù. Ñeå  
thöïc taäp , ta coù theå duøng ps ñeå coi caùc tieán trình vaø thaáy caùc taäp tin töông öùng trong /proc  
nhö ví duï sau :  
[oracle@appserv]$ ps ax|grep 582  
582 ?  
S
S
0:17 nmbd -D  
8724 pts/5  
0:00 grep 582  
[oracle@appserv]$ cd /proc/582  
[oracle@appserv 582]$ ls -l  
ls: exe: Permission denied  
ls: root: Permission denied  
ls: cwd: Permission denied  
total 0  
-r--r--r--  
lrwx------  
-r--------  
lrwx------  
dr-x------  
pr--r--r--  
-rw-------  
lrwx------  
-r--r--r--  
-r--r--r--  
-r--r--r--  
1 root  
1 root  
1 root  
1 root  
2 root  
1 root  
1 root  
1 root  
1 root  
1 root  
1 root  
root  
root  
root  
root  
root  
root  
root  
root  
root  
root  
root  
0 Oct 12 17:39 cmdline  
0 Oct 12 17:39 cwd  
0 Oct 12 17:39 environ  
0 Oct 12 17:39 exe  
0 Oct 12 17:39 fd  
0 Oct 12 17:39 maps  
0 Oct 12 17:39 mem  
0 Oct 12 17:39 root  
0 Oct 12 17:39 stat  
0 Oct 12 17:39 statm  
0 Oct 12 17:39 status  
[oracle@appserv 582]$ more cmdline  
nmbd-D  
[oracle@appserv 582]$  
Caùc kyù töï in ñaäm trong ví duï treân cho pheùp thaáy ñöôïc moái lieân heä giöõa /proc vaø tieán  
trình ñang chaïy. Caùc thao taùc treân coù theå thöïc hieän bôûi moät user baát kyø.  
III.2 Quyeàn truy caäp, sôû höõu taäp tin vaø thö muïc cuûa Linux (directory and file  
permission and ownership) :  
Do Linux laø moät heä ñieàu haønh multitasking vaø multiuser, nhieàu ngöôøi cuøng coù theå söû  
duïng moät maùy Linux vaø moät ngöôøi coù theå cho chaïy nhieàu chöông trình khaùc nhau. Coù hai  
vaán ñeà lôùn ñöôïc ñaët ra : quyeàn sôû höõu caùc döõ lieäu treân ñóa vaø phaân chia taøi nguyeân heä  
-15-  
thoáng nhö CPU, RAM ... giöõa caùc process. Chuùng ta seõ baøn veà sôû höõu caùc taäp tin vaø caùc  
quyeàn truy xuaát taäp tin.  
Taát caû caùc taäp tin vaø thö muïc cuûa Linux ñeàu coù ngöôøi sôû höõu vaø quyeàn truy nhaäp.  
Baïn coù theå ñoåi caùc tính chaát naøy cho pheùp nhieàu hay ít quyeàn truy nhaäp hôn ñoái vôùi moät  
taäp tin hay thö muïc. Quyeàn cuûa taäp tin coøn cho pheùp xaùc ñònh taäp tin coù laø moät chöông  
trình (application) hay khoâng (khaùc vôùi MSDOS vaø MSWindows xaùc ñònh tính chaát naøy  
qua phaàn môû roäng cuûa teân taäp tin) .Ví duï vôùi leänh ls –l chuùng ta coù theå thaáy  
-rw-r—r— 1 fido users 163 Dec 7 14:31 myfile  
Coät ñaàu chæ ra quyeàn truy caäp taäp tin  
Coät 2 chæ soá lieân keát (link) ñoái vôùi taäp tin hay thö muïc  
Coät 3, 4 chæ chuû sôû höõu vaø nhoùm sôû höõu  
Coät 5 chæ ñoä daøi cuûa taäp tin  
Coät 6 chæ thôøi gian thay ñoåi cuoái cuøng  
Coät 7 laø teân taäp tin hay thö muïc  
Trong ví duï treân, caùc kyù töï -rw-r—r— bieåu thò quyeàn truy caäp cuûa taäp tin myfile. Sôû  
höõu cuûa myfile laø fido vaø nhoùm sôû höõu myfile laø users . Fido ñöôïc quyeàn ñoïc vaø ghi vaøo  
myfile, coøn nhöõng ngöôøi söû duïng cuûa nhoùm users vaø nhöõng ngöôøi khaùc chæ ñöôïc quyeàn  
ñoïc myfile.  
Linux cho pheùp ngöôøi söû duïng xaùc ñònh caùc quyeàn ñoïc (read), vieát (write) vaø thöïc  
hieän (execute) cho töøng ñoái töôïng trong nhoùm sau : sôû höõu (the owner), nhoùm (the group),  
vaø nhöõng ngöôøi coøn laïi ("others" (everyone else)).  
Quyeàn ñoïc cho pheùp baïn ñoïc noäi dung cuûa taäp tin. Ñoái thö muïc quyeàn ñoïc cho pheùp  
baïn söû duïng leänh ls ñeå xem noäi dung cuûa thö muïc.  
Quyeàn vieát cho pheùp baïn thay ñoåi noäi dung hay xoùa taäp tin. Ñoái vôùi thö muïc, quyeàn  
vieát cho pheùp baïn taïo ra, xoùa hay thay ñoåi teân trong thö muïc.  
Quyeàn thöïc hieän cho pheùp baïn goïi chöông trình leân boä nhôù baèng caùch nhaäp töø baøn  
phím teân cuûa taäp tin. Ñoái vôùi thö muïc, baïn chæ coù theå vaøo thö muïc bôûi leänh cd neáu baïn coù  
quyeàn thöïc hieän vôùi thö muïc .  
Xem xeùt laïi ví duï treân :  
-rw-r—r— 1 fido users 163 Dec 7 14:31 myfile  
Kyù töï ñaàu tieân cuûa quyeàn laø kyù töï “–“ aùm chæ raèng ñoù laø moät taäp tin bìnht thöôøng.  
Neáu myfile laø moät thö muïc, ta seõ thaáy vaøo dàoù kyù töï d. Ngoaøi ra coøn coù c cho thieát bò ngoaïi  
vi daïng kyù töï (nhö baøn phím), b cho thieát bò ngoaïi vi daïng block (nhö oå ñóa cöùng).  
-16-  
Chín kyù töï tieáp theo chia thaønh 3 nhoùm, cho pheùp xaùc ñònh quyeàn cuûa ba nhoùm sôû  
höõu (owner), nhoùm (group) vaø coøn laïi (other). Moãi caëp ba naøy cho pheùp xaùc ñònh quyeàn  
ñoïc, vieát vaø thöïc hieän theo thöù töï keå treân. Quyeàn ñoïc vieát taét laø “r” ôû vò trí ñaàu tieân, quyeàn  
vieát vieát taét baèng “w” ôû vò trí thöù hai vaø vò trí thöù ba laø quyeàn thöïc hieän kyù hieäu baèng chöõ  
x” . Neáu moät quyeàn khoâng ñöôïc cho, taïi vò trí ñoù seõ coù kyù töï “-“ .  
Trong tröôøng hôïp cuûa taäp tin myfile, sôû höõu coù quyeàn rw töùc laø ñoïc vaø vieát. Myfile  
khoâng phaûi laø moät chöông trình. Nhoùm cuøng vôùi coøn laïi chæ coù quyeàn ñoïc taäp tin (read-  
only). Hình sau cho ta thaáy roõ hôn caùch “ñoïc” quyeàn truy caäp ñoái vôùi taäp tin.  
Quyeàn truy caäp cô baûn cuûa taäp tin  
Song song vôùi caùch kyù hieäu mieâu taû baèng kyù töï nhö ôû treân, quyeàn thao taùc taäp tin coøn  
coù theå cho döôùi daïng 3 soá . Ñoái vôùi myfile, quyeàn ñoù laø 644. Ñieàu quan troïng laø phaûi hieåu  
caùch kyù hieäu baèng soá vì noù lieân quan ñeán vieäc thay ñoåi caùc quyeàn sau naøy. Caùc soá coù theå  
nhaän taát caû caùc giaù trò töø 0 ñeán 7. Soá ñaàu tieân mieâu taû quyeàn cuûa sôû höõu, soá thöù hai cho  
nhoùm vaø soá thöù ba cho coøn laïi.  
Moãi soá laø toång cuûa caùc quyeàn theo quy taéc sau :  
read permission  
4
2
1
Write permission  
Execute permission  
Vì vaäy, moät taäp tin vôùi quyeàn 751 coù nghóa laø sôû höõu coù quyeàn read, write, vaø  
execute baèng 4+2+1=7, Nhoùm coù quyeàn read vaø execute baèng 4+1=5, vaø coøn laïi coù quyeàn  
execute baèng 1.  
Neáu chuùng ta xem kyõ, chuùng ta seõ thaáy moïi soá töø 0 ñeán 7 ñeàu töông öùng vôùi moät toå  
hôïp duy nhaát caùc quyeàn truy nhaäp taäp tin.  
0 or —-: No permissions at all  
4 or r—: read-only  
2 or -w-: write-only (rare)  
1 or —x: execute  
-17-  
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  
Neáu baïn quen vôùi heä nhò phaân, haõy suy nghó baèng heä thoáng nhò phaân. Khi ñoù, rwx  
seõ nhö soá nhò phaân 3 bits. Neáu quyeàn ñöôïc cho, soá nhò phaân töông öùng seõ baèng 1,  
ngöôïc laïi, noù seõ baèng 0. Ví duï r-x seõ laø soá nhò phaân 101, vaø theo heä thaäp phaân seõ laø  
4+0+1, hay 5. —x seõ töông öùng 001, hay 0+0+1 = 1 …  
Chuù yù: Ngöôøi söû duïng coù quyeàn ñoïc thì coù quyeàn copy taäp tin vaø taäp tin sao  
cheùp seõ thuoäc sôû höõu ngöôøi laøm copy nhö minh hoïa sau  
[tnminh@backup tnminh]$ ls -l /etc/passwd  
-rw-r--r--  
1 root  
root  
1113 Oct 13 12:30 /etc/passwd  
[tnminh@backup tnminh]$ cp /etc/passwd ./  
[tnminh@backup tnminh]$ ls -l passwd  
-rw-r--r--  
1 tnminh  
admin  
1113 Oct 15 10:37 passwd  
Caùc quyeàn d9ònh khi taïo taäp tin. Khi moät taäp tin hay thö muïc ñöôïc taïo ra, permission  
maëc ñònh seõ ñöôïc xaùc ñònh bôûi caùc quyeàn tröø bôùt bôûi caùc quyeàn hieån thò baèng umask  
[tnminh@pasteur tnminh]$ umask  
002  
[tnminh@pasteur tnminh]$ echo tao mot file > tmp  
[tnminh@pasteur tnminh]$ ls -l  
total 5472  
-rw-rw-r--  
1 tnminh  
tnminh  
13 Oct 3 21:55 tmp  
[tnminh@pasteur /etc]$ umask 022  
[tnminh@pasteur tnminh]$ echo tao mot file khac >tmp1  
[tnminh@pasteur tnminh]$ ls -l  
-rw-rw-r--  
-rw-r--r--  
1 tnminh  
1 tnminh  
tnminh  
tnminh  
13 Oct 3 21:55 tmp  
18 Oct 3 21:59 tmp1  
Trong ví duï treân, quyeàn maëc ñònh luùc ñaàu xaùc ñònh bôûi umask=002. Khi ñoù, taäp tin  
tmp taïo ra seõ coù quyeàn laø 664 vaø ñoù chính laø buø ñeán 6 cuûa umask. Quyeàn thöïc hieän chöông  
trình caàn ñöôïc gaùn coá yù bôûi ngöôøi söû duïng hay caùc chöông trình bieân dòch. Sau ñoù ta ñoåi  
giaù trò cuûa umask thaønh 022 vaø taäp tin taïo ra coù quyeàn 644. Giaù trò maëc ñònh cuûa caùc quyeàn  
thöôøng ñöôïc gaùn moãi khi ngöôøi söû duïng login vaøo heä thoáng thoâng qua caùc taäp tin khôûi taïo  
bieán moâi tröôøng nhö .profile, .bashrc. Ñöùng treân quan ñieåm baûo maät heä thoáng, giaù trò 024  
laø toát nhaát, noù cho ngöôøi cuøng nhoùm coù quyeàn ñoïc vaø khoâng cho quyeàn naøo vôùi nhöõng  
ngöôøi khaùc.  
- Leänh chown, chgrp vaø chmod :  
Ñaây laø nhoùm leänh ñöôïc söû duïng raát phoå bieán, cho pheùp thay quyeàn truy caäp cuûa taäp  
tin hay thö muïc. Chæ coù chuû sôû höõu vaø superuser môùi coù quyeàn thöïc hieän caùc leänh naøy.  
-18-  
Caùch duøng leänh : chmod quyeàn_truy_caäp_môùi teâ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  
darkstar:~$ chmod 701 myfile  
darkstar:~$ ls -l myfile  
-rwx——x 1 root users 114 Dec 7 14:31 myfile  
Ví duï thay ñoåi vaø hieän thò cho thaáy söï thgay ñoåi quyeàn truy caäp taäp tin myfile . Chuù yù  
laø ta coù quyeàn caáp phaùt quyeàn thöïc hieän (execute) maø khoâng caàn bieát laø taäp tin coù phaûi laø  
moät chöông trình hay khoâng.  
Phöông phaùp thay ñoåi tuyeät ñoái naøy coù moät soá öu ñieåm vì noù laø caùch ñònh quyeàn  
tuyeät ñoái, keát quaû cuoái cuøng khoâng phuï thuoäc vaøo quyeàn truy caäp tröôùc ñoù cuûa taäp tin.  
Ñoàng thôøi, deã noùi “thay quyeàn taäp tin thaønh baûy-naêm-naêm” thì deã hôn laø “thay quyeàn taäp  
tin thaønh ñoïc-vieát-thöïc hieän, ñoïc-thöïc hieän, ñoïc-thöïc hieän”  
Baïn cuõng coù theå thay ñoåi quyeàn truy nhaäp moät caùch töông ñoái vaø deã nhôù. Ñeå chæ ra  
nhoùm quyeàn naøo caàn thay ñoåi, baïn coù theå söû duïng u (user), g (group), o (other), hay a  
(all). Tieáp theo ñoù laø daáu + ñeå theâm quyeàn vaø – ñeå bôùt quyeàn. Cuoái cuøng laø baûn thaân caùc  
qyuyeàn vieát taét bôûi r,w,x. Ví duï nhö ñeå boå sung quyeàn thöïc hieän cho nhoùm vaø coøn laïi, ta  
nhaäp vaøo doøng leänh  
darkstar:~$ chmod go+x myfile  
Ñaây laø caùch thay ñoåi töông ñoái vì keát quaû cuoái cuøng phuï thuoäc vaøo quyeàn ñaõ coù tröôùc  
ñoù maø leänh naøy khoâng lieân quan ñeán. Treân quan ñieåm baûo maõt heä thoáng, caùch thay ñoåi  
tuyeät ñoái daãn ñeán ít sai soùt hôn. Thay ñoåi quyeàn truy caäp cuûa moät thö muïc cuõng ñöôïc thöïc  
hieän gioáng nhö ñoái vôùi moät taäp tin. Chuù yù laø neáu baïn khoâng coù quyeàn thöïc hieän (execute)  
ñoái vôùi moät thö muïc, baïn khoâng theå thay ñoåi thö muïc cd vaøo thö muïc ñoù. Moïi ngöôøi söû  
duïng coù quyeàn vieát vaøo thö muïc ñeàu coù quyeàn xoùa taäp tin trong thö muïc ñoù, khoâng phuï  
thuoäc vaøo quyeàn cuûa ngöôøi ñoù ñoái vôùi taäp tin. Vì vaäy, ña soá caùc thö muïc coù quyeàn drwxr-  
xr-x. Nhö vaäy chæ coù ngöôøi sôû höõu cuûa thö muïc môùi coù quyeàn taïo vaø xoùa taäp tin trong thö  
muïc. Ngoaøi ra, thö muïc coøn coù moät quyeàn ñaëc bieät, ñoù laø cho pheùp moïi ngöôøi ñeàu coù  
quyeàn taïo taäp tin trong thö muïc, moïi ngöôøi ñeàu coù quyeàn thay ñoåi noäi dung taäp tin trong thö  
muïc, nhöng chæ coù ngöôøi taïo ra môùi coù quyeàn xoùa taäp tin. Ñoù laø sticky bit cho thö muïc. Thö  
muïc /tmp thöôøng coù sticky bit baät leân  
drwxrwxrwt 7 root root  
16384 Oct 21 15:33 tmp  
Ta thaáy chöõ t cuoái cuøng trong nhoùm caùc quyeàn, theå hieän cho sticky bit cuûa /tmp  
-19-  
Tải về để xem bản đầy đủ
doc 38 trang baolam 09/05/2022 5160
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Nhập môn hệ điều hành Linux", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • doctai_lieu_nhap_mon_he_dieu_hanh_linux.doc