Giáo trình môn Hệ thống mạng Linux - ThS. Nguyễn Tấn Khôi

pdf 47 trang phuongnguyen 3560
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình môn Hệ thống mạng Linux - ThS. Nguyễn Tấn Khôi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_mon_he_thong_mang_linux_ths_nguyen_tan_khoi.pdf

Nội dung text: Giáo trình môn Hệ thống mạng Linux - ThS. Nguyễn Tấn Khôi

  1. - 1- TRѬӠNG ĈҤI HӐC BÁCH KHOA ĈÀ NҸNG KHOA CÔNG NGHӊ THÔNG TIN ¾¾Â¾¾ GIÁO TRÌNH MÔN HӐC HHӊӊ TTHHӔӔNNGG MMҤҤNNGG LLIINNUUXX Ths. NGUYӈN TҨN KHÔI (L˱u hành n͡i b͡) Ĉà Nҹng – 2004
  2. - 2- 0өc lөc Bài 1 ĈĂNG NHҰP Hӊ THӔNG LINUX 4 1.1. Truy cұp vào máy tính ÿã cài ÿһt hӋÿLӅu hành Linux 4 1.2. Sӱ dөng Telnet ÿӇ truy cұp vào máy Linux tӯ xa 4 1.3. Thoát khӓi hӋ thӕng 4 Bài 2 6Ӱ DӨNG E-Mail 5 2.1. Gӣi thѭ bҵng sendmail 5 2.2. Nhұn thѭ 5 2.3. Các thao tác hӛ trӧ 5 Bài 3 CÁC LӊNH TRÊN LINUX 7 3.1. Tә chӭc hӋ thӕng tұp tin trên Linux 7 3.2. Các lӋnh thao tác trên hӋ thӕng tұp tin 7 3.2.1. Tҥo mӟi thѭ mөc 7 3.2.2. Thay ÿәi thѭ mөc hiӋn hành 8 3.2.3. Xem thѭ mөc làm viӋc hiӋn hành 8 3.2.4. Xem thông tin vӅ tұp tin và thѭ mөc 8 3.2.5. Di chuyӇn mӝt hay nhiӅu tұp tin 8 3.2.6. Sao chép tұp tin 9 3.2.7. Tҥo liên kӃt vӟi tұp tin 9 3.2.8. Tìm kiӃm mӝt tұp tin 9 3.2.9. Xoá thѭ mөc rӛng 10 3.2.10. Xóa các tұp tin hoһc thѭ mөc 10 3.2.11. Xem hѭӟng dүn sӱ dөng lӋnh 10 3.2.12. HiӇn thӏ nӝi cӫa các tұp tin 10 3.2.13. Nӕi các tұp tin 10 3.2.14. Xuҩt nӝi dung thông báo 11 3.2.15. Nén và giҧi nén tұp tin 11 3.3. Các lӋnh hӋ thӕng 11 3.3.1. LӋnh at 11 3.3.2. LӋnh hostname 11 3.3.3. LӋnh ps 11 3.3.4. LӋnh clear 12 3.3.5. LӋnh date 12 3.3.6. LӋnh cal 12 3.3.7. LӋnh mount 12 3.3.8. TiӋn ích mc 12 3.3.9. TiӋn ích máy tính bc 13 Bài 4 QUҦN LÝ TÀI KHOҦN VÀ PHÂN QUYӄN SӰ DӨNG 14 4.1. Quҧn lý tài khoҧn cӫa hӋ thӕng 14 4.1.1. Tài khoҧn ngѭӡi dùng 14 4.1.2. Tài khoҧn nhóm ngѭӡi dùng 14 4.2. Phân quyӅn ngѭӡi dùng trên hӋ thӕng tұp tin 14 4.2.1. Các quyӅn truy xuҩt trên tұp tin 14 4.2.2. LӋnh chmod 15 4.2.3. Thay ÿәi ngѭӡi hoһc nhóm sӣ hӳu tұp tin 15 Bài 5 6Ӱ DӨNG TRÌNH SOҤN THҦO VI 18
  3. - 3- 5.1. Giӟi thiӋu 18 5.2. Khӣi ÿӝng vi 18 5.3. Soҥn thҧo văn bҧn 18 5.4. Thoát khӓi vi 19 5.4.1. Dùng vi vӟi danh sách các lӋnh ÿã chҥy cӫa Shell 19 Bài 6 /ҰP TRÌNH SHELL 22 6.1. Chѭѫng trình tính tәng 1-> n 22 6.2. Chѭѫng trình tính giai thӯa cӫa mӝt sӕ 22 6.3. Chѭѫng trình ÿӃm sӕ dòng cӫa mӝt tұp tin 22 6.4. Chѭѫng trình ÿӃm sӕ tӯ cӫa mӝt tұp tin 23 6.5. Chѭѫng trình tìm dòng có ÿӝ dài lӟn nhҩt trong mӝt tұp tin 23 6.6. Chѭѫng trình tìm mӝt xâu trong mӝt tұp tin 24 Bài 7 /ұp trình C & C++ 25 Bài 8 QUҦN LÝ TIӂN TRÌNH 27 8.1. Giӟi thiӋu 27 8.1.1. Tҥo mӝt tiӃn trình - lӋnh fork 27 8.1.2. Dӯng mӝt tiӃn trình 27 8.1.3. Giao tiӃp giӳa các tiӃn trình 28 8.1.4. Liên lҥc giӳa hai tiӃn trình 29 8.2. Lұp trình ÿa tiӃn trình 30 8.2.1. ӕng dүn liên lҥc 30 8.2.2. Thao tác vӟi "ӕng dүn liên lҥc" 31 8.2.3. Liên lҥc giӳa tiӃn trình cha và tiӃn trình con 31 Bài 9 /ұp trình mҥng TCP/IP 32 9.1. Lұp trình client /server theo giao thӭc TCP/IP 32 9.2. Lұp trình client /server theo giao thӭc UDP/IP 37 Bài 10 DÞch vô FTP 40 Bài 11 CÁC TҰP TIN CҨU HÌNH MҤNG 42 Bài 12 &ҨU HÌNH DӎCH VӨ DNS 44 12.1. Các tұp tin cҩu hình dӏch vө DNS 44 12.1.1. Tұp tin /etc/host.conf 44 12.1.2. Tұp tin /etc/resolv.conf 44 12.1.3. Tұp tin /etc/named.conf 44 12.1.4. Tұp tin /var/named/dng.vn.zone 44 12.1.5. Tұp tin /var/named/edu.vn.zone 45 12.1.6. Tұp tin /var/named/0.0.127.in-addr.arpa.zone 45 12.1.7. Tұp tin /var/named/localhost.zone 45 12.1.8. LӋnh khӣi ÿӝng dӏch vө DNS 45 12.2. Các lӋnh và tiӋn ích hӛ trӧ 46 12.2.1. LӋnh nslookup 46 12.2.2. LӋnh host 46 12.2.3. LӋnh dig 46 12.2.4. TiӋn ích redhat-config-bind 46
  4. - 4- Bài 1  ĈĂNG NHɩP Hʃ TH͐NG LINUX 1.1. Truy cұp vào máy tính ÿã cài ÿһt hӋÿLӅu hành Linux Khӣi ÿӝng máy ÿã cài ÿһt Linux, xuҩt hiӋn dҩu nhҳc khӣi ÿӝng hӋÿLӅu hành: Boot : linux Khi HĈH Linux khӣi ÿӝng, xuҩt hiӋn dҩu nhҳc truy cұp hӋ thӕng : login : password : Ngѭӡi dùng nhұp vào username và password tѭѫng ӭng, trên màn hình xuҩt hiӋn Gҩu nhҳc cӫa hӋ thӕng nhѭ sau : [user12@linux user12]$ 1.2. Sӱ dөng Telnet ÿӇ truy cұp vào máy Linux tӯ xa Truy cұp vào Server LINUX tӯ máy Windows. Yêu cҫu máy Windows ÿã cài ÿһt Pҥng. ĈӇ kiӇm tra hӋ thӕng mҥng, tӯ dҩu nhҳc cӱa lӋnh trên Windows, gõ lӋnh : C:\>ping 200.201.202.180 1Ӄu trên màn hình xuҩt hiӋn : Reply from 200.201.202.180 thì nghƭa là máy tính có khҧ năng truy cұp vào Server LINUX, ngѭӧc lҥi, nӃu có thông báo nào khác thông báo nhѭ trên thì nên kiӇm tra lҥi cҩu hình mҥng trên máy. TiӃp theo, ta gõ lӋnh : telnet 200.201.202.180 Sau mӝt khoҧng thӡi gian thiӃt lұp liên kӃt, trên cӱa sә telnet xuҩt hiӋn : login : password : - Ngѭӡi dùng nhұp vào username và password tѭѫng ӭng. Ví dͭ : Ĉăng nhұp vào vӟi tài khoҧn user12, trên màn hình xuҩt hiӋn nhѭ sau : login: user12 Password: Last login: Wed Apr 7 08:35:50 from 131.16.16.21 [user12@linux user12]$ 1.3. Thoát khӓi hӋ thӕng Thoát khӓi phiên làm viӋc : #exit hoһc #logout Chҩm dӭt hoҥt ÿӝng cӫa hӋ thӕng : #shutdown ±h now
  5. - 5- Bài 2 6Ӱ DӨNG E-Mail ThѭÿLӋn tӱ hiӋn nay ÿang trӣ thành phѭѫng tiӋn chính ÿӇ liên lҥc trên mҥng. Thѭ ÿLӋn tӱ dӉ sӱ dөng, tiӋn lӧi và nhanh chóng. Trong phҫn này ta sӱ dөng dӏch vө sendmail cӫa hӋ thӕng Linux. 2.1. Gӣi thѭ bҵng sendmail Cú pháp : mail . . . $mail user01 root § TiӃp theo, trên màn hình xuҩt hiӋn Subject : § %ҥn gõ vào chӫÿӅ bӭc thѭ. Nhҩn Enter, bҳt ÿҫu nhұp vào nӝi dung thѭ. § Sau khi nhұp vào nӝi dung thѭ, nhҩn CTRL-D ÿӇ gӣi thѭÿi. § Trên màn hình xuҩt hiӋn : CC : § Nhұp vào tên nhӳng ngѭӡi cùng nhұn thѭ hoһc nhҩn Enter ÿӇ bӓ qua. 2.2. Nhұn thѭ § Khi có thѭÿӃn, trên màn hình xuҩt hiӋn thông báo : You have mail § ĈӇÿӑc thѭ, gõ vào lӋnh : $mail § Trên màn hình sӁ liӋt kê các bӭc thѭ theo thӭ tӵ 1, 2, 3 ĈӇÿӑc nӝi dung thѭ nào, gõ vào sӕ thӭ tӵ cӫa bӭc thѭÿó. § 'ҩu & nhҳc rҵng bҥn ÿang ӣ chѭѫng trình ÿӑc thѭ. § ĈӇ xóa thѭÿang ÿӑc, tҥi dҩu nhҳc bҥn gõ : &d § ĈӇ thoát chѭѫng trình ÿӑc thѭ, tҥi dҩu nhҳc bҥn gõ : &q Ví dө Mӝt phiên gӣi mail cӫa user12 : [user12@linux user12]$ mail user15 root Subject: Chao ban Thuc hanh LINUX Cc: [user12@linux user12]$ 2.3. Các thao tác hӛ trӧ - ĈӇ hӫy bӓ thѭ trѭӟc khi gӣi, bҥn nhҩn CTRL-C hai lҫn. - Ĉӑc nӝi dung mӝt tұp tin trên thѭ mөc hiӋn hành vào mail : ~r filename
  6. - 6- - Thay ÿәi chӫÿӅ cӫa thѭ : ~s - Xem tҩt cҧ các thѭ lѭu trong hӝp thѭ : $more mbox Các lӋnh thao tác trên sendmail t type messages n goto and type next message e edit messages f give head lines of messages d delete messages s file append messages to file u undelete messages R reply to message senders r reply to message senders and all recipients pre make messages go back to /usr/spool/mail p print message m mail to specific users q quit, saving unresolved messages in mbox x quit, do not remove system mailbox h print out active message headers ! shell escape cd [directory] chdir to directory or home if none given
  7. - 7- Bài 3 CÁC LʃNH TRÊN LINUX 3.1. Tә chӭc hӋ thӕng tұp tin trên Linux /etc &ҩu hình hӋ thӕng cөc bӝ theo máy /usr/bin Chӭa hҫu hӃt các lӋnh ngѭӡi dùng. /dev Các tұp tin thiӃt bӏ. /usr/man Chӭa các tài liӋu trӵc tuyӃn. /usr/include Chӭa các tұp tin include chuҭn cӫa C. /var/log Các tұp tin lѭu giӳ thông tin làm viӋc hiӋn hành cӫa ngѭӡi dùng. /home Chӭa các thѭ mөc con cӫa các user. /usr/lib Chӭa các tұp tin thѭ viӋn cӫa các chѭѫng trình ngѭӡi dùng. Khi truy cұp vào hӋ thӕng, thѭ mөc làm viӋc cӫa ngѭӡi dùng ÿѭӧc xem nhѭ là thѭ Pөc chӫ. Ví dө : Thѭ mөc chӫ cӫa user01 sӁ là /home/user01 1Ӄu ÿѭӡng dүn bҳt ÿҫu bҵng dҩu “/”, hӋ thӕng xem ÿó nhѭ là mӝt tên ÿѭӡng dүn ÿҫy ÿӫ bҳt ÿҫu tӯ thѭ mөc gӕc. 3.2. Các lӋnh thao tác trên hӋ thӕng tұp tin Các tham sӕ luôn bҳt ÿҫu bӣi dҩu “-“, và trong hҫu hӃt các trѭӡng hӧp nhiӅu tham Vӕ mӝt chӳ cái có thӇ kӃt hӧp dùng mӝt dҩu “-“. Ví dͭ: Thay vì dùng lӋnh ls -l -F, ta có thӇ dùng lӋnh tѭѫng ÿѭѫng ls -lF. Kí tӵ Chӭc năng *?[ ] Kí tӵÿҥi diӋn hay theo mүu & Chҥy ӭng dөng ӣ chӃÿӝ nӅn (background), trҧ lҥi dҩu nhҳc hӋ thӕng cho các tác vө khác . ; 'ҩu phân cách nhiӅu lӋnh trên mӝt dòng lӋnh. \ 7ҳt tác dөng cӫa nhӳng kí tӵÿһc biӋt nhѭ *, ?, [, ], &, ;, >, Ĉӏnh hѭӟng dӳ liӋu xuҩt ra file. > Ĉӏnh hѭӟng dӳ liӋu xuҩt ra cuӕi file nӃu file ÿã tӗn tҥi. | Ĉӏnh hѭӟng dӳ liӋu xuҩt là dӳ liӋu nhұp cho lӋnh tiӃp theo. $ 6ӱ dөng biӃn môi trѭӡng. 3.2.1. Tҥo mӟi thѭ mөc Cú pháp : mkdir . . . là tên các thѭ mөc cҫn tҥo. [user01@linux user01]$ mkdir baitap
  8. - 8- [user01@linux user01]$ mkdir document [user01@linux user01]$ mkdir baitap\ltc [user01@linux user01]$ ls [user01@linux user01]$ mkdir baitap/ltc [user01@linux user01]$ mkdir baitap/perl 3.2.2. Thay ÿәi thѭ mөc hiӋn hành Cú pháp : cd là thѭ mөc muӕn chuyӇn ÿӃn. . : yêu cҫu chuyӇn ÿӃn thѭ mөc hiӋn hành. : chuyӇn ÿӃn thѭ mөc cha. [user01@linux user01]$ cd baitap [user01@linux user01]$ cd /home [user01@linux user01]$ cd 3.2.3. Xem thѭ mөc làm viӋc hiӋn hành Cú pháp : pwd [user12@linux user12]$ pwd /home/user12 [user12@linux user12]$ 3.2.4. Xem thông tin vӅ tұp tin và thѭ mөc Cú pháp : ls . . . là danh sách tên tұp tin hay thѭ mөc. : -F : dùng ÿӇ hiӇn thӏ mӝt vài thông tin vӅ kiӇu cӫa tұp tin -l : (long) liӋt kê kích thѭӟc tұp tin, ngѭӡi tҥo ra, các quyӅn ngѭӡi sӱ dөng. [user12@linux user12]$ ls -lF total 75 drwxrwxr-x 2 user12 user12 1024 Apr 7 09:41 baitap/ drwxrwxr-x 2 user12 user12 1024 Apr 7 09:41 doc/ -rwxrwxr-x 1 user12 user12 71 Mar 31 10:39 hello* -rw-rw-r 1 user12 user12 126 Apr 7 09:26 baitho.txt -rw-rw-r 1 user12 user12 70 Apr 7 08:26 hello.c [user12@linux user12]$ ls ±lF ls *a* : hiӇn thӏ tҩt cҧ tұp tin hay thѭ mөc con có kí tӵ a ls F*E : hiӇn thӏ danh sách bҳt ÿҫu bҵng F và kӃt thúc bҵng E 3.2.5. Di chuyӇn mӝt hay nhiӅu tұp tin Cú pháp : mv
  9. - 9- . . . là danh sách tên tұp tin cҫn di chuyӇn là tұp tin hay thѭ mөc ÿích. /Ӌnh mv có thӇ dùng ÿӇÿәi tên tұp tin. · ChuyӇn nhiӅu tұp tin $ mv * directory · Di chuyӇn thѭ mөc [user01@linux user01]$ mkdir ctrinh [user01@linux user01]$ ls ±lF [user01@linux user01]$ mv ctrinh baitap Di chuyӇn thѭ mөc /home/user01/ctrinh vào thѭ mөc /home/user01/baitap 3.2.6. Sao chép tұp tin Cú pháp : cp [user01@linux user01]$ cd baitap [user01@linux baitap]$ vi tho.txt [user01@linux baitap]$ mv tho.txt baitho.doc [user01@linux baitap]$ ls baitho.doc ctrinh hello.c ltc perl [user01@linux baitap]$ cp baitho.doc ~/document · Sao chép tҩt cҧ các tұp tin vào mӝt danh mөc $ cp * directory 3.2.7. Tҥo liên kӃt vӟi tұp tin 7ҥo liên kӃt vӟi tұp tin là tҥo thêm cho tұp tin tên mӟi và ÿѭӡng dүn tѭѫng ӭng. Cú pháp : ln ls -l : xem sӕ liên kӃt cӫa tұp tin. Muӕn xóa mӝt tұp tin ta phҧi xoá tҩt cҧ các liên kӃt cӫa nó. [user01@linux user01]$ pwd [user01@linux user01]$ ls -l [user01@linux user01]$ ls -l baitap [user01@linux user01]$ ln baitap/file1 file.link [user01@linux user01]$ ls -l baitap [user01@linux user01]$ ls -l file.link 3.2.8. Tìm ki͇m m͡t t̵p tin /Ӌnh find cho phép tìm kiӃm mӝt hay nhiӅu tұp tin trong mӝt cây danh mөc. · Tìm theo tên: find -name · Tìm theo sӕ i-node cӫa tұp tin: find -inum · Tìm theo tên ngѭӡi sӣ hӳu : find -user
  10. - 10- ĈӇ tránh các thông báo lӛi ÿѭa ra màn hình, ta có thӇ ÿәi hѭӟng ÿҫu ra lӛi chuҭn (standard error) tӟi mӝt tұp tin rӛng (/dev/null ): $ find / -name filename - print 2>/dev/null Ví dө: $ pwd /home/user01 $ find / -name ttyc2d1 - print 2>/dev/null /dev/ttyc2d1 $ ls -i /unix 2810 - r- xr- - r- - 2 bin bin 508516 Mar 10 1989 /unix $find / -inum 2810 - print 2>/dev/null 3.2.9. Xoá thѭ mөc rӛng Cú pháp : rmdir là tên nhӳng thѭ mөc cҫn xóa. rmdir /home/baitap xóa thѭ mөc /home/baitap 3.2.10. Xóa các t̵p tin ho̿c th˱ mͭc Cú pháp : rm 3.2.11. Xem h˱ͣng d̳n s͵ dͭng l͏nh Cú pháp : man ho?c help /? Trong ÿó là tên cӫa mӝt cҫn xem hѭӟng dүn. [user12@linux user12]$ man ls [user12@linux user12]$ cp help [user12@linux user12]$ cp help >cp.txt 3.2.12. HiӇn thӏ nӝi cӫa các tұp tin Cú pháp : more là nhӳng tұp tin cҫn hiӇn thӏ. [user12@linux user12]$more baitho.txt // hiӇn thӏ tұp tin baitho.txt [user12@linux user12]$more mbox // Xem tҩt cҧ thѭ lѭu trong hӝp thѭ 3.2.13. Nӕi các tұp tin Cú pháp : cat [>filename] /Ӌnh dùng ÿӇ hiӇn thӏ toàn bӝ nӝi dung cӫa nhiӅu tұp tin cùng mӝt lúc. là nhӳng tұp tin cҫn hiӇn thӏ nӝi dung. Ví dө:
  11. - 11- HiӇn thӏ nӝi dung hai tұp tin baitho.txt và vanban.doc $cat baitho.txt vanban.doc .Ӄt nӕi nӝi dung hai tұp tin baitho.txt và vanban.doc vào tұp tin thop.doc $cat baitho.txt vanban.doc >thop.doc 3.2.14. Xuҩt nӝi dung thông báo Cú pháp : echo Trong ÿó là các ÿӕi sӕ dòng lӋnh. [user12@linux user12]$ echo ³Chao cac ban´ Chao cac ban sinh vien´ [user12@linux user12]$echo * ® HiӇn thӏ nӝi dung thѭ mөc 3.2.15. Nén và giҧi nén tұp tin Cú pháp : gzip Nén mӝt tұp tin. Tên tұp tin nén giӕng nhѭ tên ban ÿҫu, kèm theo ÿuôi .gz [user12@linux user12]$ gzip vanban.txt -> vanban.txt.gz Cú pháp : gunzip gzip -d /Ӌnh dùng ÿӇ giҧi nén tұp tin. [user12@linux user12]$gunzip vanban.txt.gz 3.3. Các lӋnh hӋ thӕng 3.3.1. LӋnh at Thӵc hiӋn lӋnh theo thӡi gian ÿӏnh trѭӟc [user12@linux user12]$ at 8:15am Feb 27 echo Happy birthday | mail emily [user12@linux user12]$atrm jobnumber xóa lӋnh trong hàng ÿӧi [user12@linux user12]$at -l hiӇn thӏ danh sách các lӋnh trong hàng ÿӧi 3.3.2. LӋnh hostname HiӇn thӏ tên máy tính ÿang làm viӋc. +Ӌ thӕng lѭu thông tin vӅ tên máy trong tұp tin /etc/hosts [user12@linux user12]$ hostname linux.edu.vn 3.3.3. LӋnh ps Xem danh sách các tiӃn trình ÿang hoҥt ÿӝng trên hӋ thӕng. [user12@linux user12]$ ps PID TTY STAT TIME COMMAND
  12. - 12- 4516 p4 S 0:00 -bash 4703 p4 S 0:00 /usr/bin/mc -P 4705 r0 S 0:00 bash -rcfile .bashrc 4727 r0 R 0:00 ps [user12@linux user12]$ kill 4703 //Hӫy bӓ tiӃn trình mc có sӕ hiӋu 4703 Terminated 3.3.4. /Ӌnh clear Xóa màn hình. 3.3.5. LӋnh date HiӇn thӏ ngày tháng hiӋn hành cӫa hӋ thӕng 3.3.6. LӋnh cal Xem lӏch tѭѫng ӭng vӟi tháng và năm chӍÿӏnh. 3.3.7. LӋnh mount Cú pháp : mount [-t ] - LӋnh dùng ÿӇ kӃt nӕi hӋÿLӅu hành vӟi các thiӃt bӏ khác trên hӋ thӕng. - LӋnh này ch͑ th͹c hi͏nÿѭӧc khi bҥn vào hӋ thӕng vӟi tѭ cách là root. type : KiӇu tұp tin device : Tұp tin ÿLӅu khiӇn thiӃt bӏ kӃt nӕi. mountpoint : Vӏ trí thѭ mөc trên hӋÿLӅu hành dùng ÿӇ kӃt nӕi vӟi file thiӃt bӏ. · 7ҥo kӃt nӕi vӟi ÿƭa logic 1 : #mount /dev/hda1 /mnt/hdisk · 7ҥo kӃt nӕi vӟi ÿƭa mӅm MS-DOS: #mount /dev/fd0 /mnt/floppy · 7ҥo kӃt nӕi vӟi ÿƭa mӅm LINUX : #mount -t ext2 /dev/fd0 /mnt/floppy · 7ҥo kӃt nӕi vӟi ÿƭa CDROM : #mount /dev/hda1 /mnt/cdrom · +ӫy kӃt nӕi vӟi ÿƭa mӅm : #umount /dev/fd0 Chú ý : +͏ th͙ng Linux xem các thi͇t b͓ k͇t n͙i nh˱ các m͡t t̵p tin ÿ̿c bi͏t. 3.3.8. TiӋn ích mc TiӋn ích mc trên Linux có giao diӋn làm viӋc giӕng nhѭ trình NC Command cӫa MS - DOS. ĈӇ khӣi ÿӝng mc gõ lӋnh nhѭ sau : #mc
  13. - 13- 3.3.9. Ti͏n ích máy tính bc Chѭѫng trình bc cung cҩp mӝt bӝ máy tính tay giúp ngѭӡi dùng có thӇ tính toán các biӇu thӭc, các hàm toán hӑc 3.3.9.1. Khͧi ÿ͡ng bc 7ӯ dҩu nhҳc hӋ thӕng, bҥn gõ : #bc ¿ xuҩt hiӋn dҩu nhҳc, bҥn có thӇ nhұp vào các biӇu thӭc tính toán : (4+5)*(12-10) ¿ 18 1000000000000*1000000000000¿ 1000000000000000000000000 ĈӇҩn ÿӏnh sӕ chӳ sӕ thұp phân, dùng lӋnh scale = n : scale=3¿ 1/6¿ .166 /ұp trình trong bc. define giaithua(n) { if (n Xem các hѭӟng dүn sӱ dөng bc.
  14. - 14- Bài 4 QUɟN LÝ TÀI KHOɟN VÀ PHÂN QUYɽN Sͬ DͤNG Mô tҧ cѫ chӃ bҧo vӋ tұp tin cӫa LINUX: ngѭӡi sӱ dөng, nhóm ngѭӡi sӱ dөng, các quyӅn truy xuҩt trên tұp tin. 4.1. Quҧn lý tài khoҧn cӫa hӋ thӕng 4.1.1. Tài khoҧn ngѭӡi dùng 0ӛi ngѭӡi sӱ dөng trên hӋ thӕng ÿѭӧc mô tҧ qua các thông tin sau: - username : tên ngѭӡi sӱ dөng - password : mұt khҭu (nӃu có) - uid : sӕ nhұn dҥng (user identify number ) - gid : sӕ cӫa nhóm (group identify number ) - comment : chú thích - Thѭ mөc chӫ cӫa tài khoҧn (home directory ) - Shell ÿăng nhұp (chѭѫng trình chҥy lúc bҳt ÿҫu phiên làm viӋc) Các thông tin trên ÿѭӧc chӭa trong tұp tin /etc/passwd 4.1.2. Tài khoҧn nhóm ngѭӡi dùng 0ӝt nhóm ngѭӡi sӱ dөng ÿѭӧc mô tҧ bҵng các thông tin sau: - groupname : tên cӫa nhóm - gid : sӕ cӫa nhóm (gid: group identify number) - danh sách các tài khoҧn thuӝc nhóm Các thông tin trên ÿѭӧc chӭa trong tұp tin /etc/group 4.2. Phân quyӅn ngѭӡi dùng trên hӋ thӕng tұp tin 4.2.1. Các quyӅn truy xuҩt trên tұp tin Khi tұp tin ÿѭӧc tҥo lұp, các thông tin sau ÿây ÿӗng thӡi ÿѭӧc ghi lҥi: - uid cӫa ngѭӡi tҥo tұp tin - gid cӫa ngѭӡi tҥo tұp tin - Các quyӅn thâm nhұp tұp tin khác . . . - Tұp tin ÿѭӧc bҧo vӋ bӣi mӝt tұp hӧp các bit ÿӏnh nghƭa quyӅn thâm nhұp r w x r w x r w x suid sgid owner group other Trong ÿó:
  15. - 15- r QuyӅn ÿӑc nӝi dung tұp tin, thѭ mөc w QuyӅn tҥo và xoá nӝi dung tұp tin, tҥo và xóa tұp tin trong thѭ mөc x QuyӅn thӵc thi tұp tin. QuyӅn truy xuҩt qua lҥi trên thѭ mөc. · Các quy͉n vͣi th˱ mͭc ch͑ có hi͉u l͹c ͧ m͡t mͱc nh̭t ÿ͓nh, th˱ mͭc con có th͋ ÿ˱ͫc b̫o v͏ trong khi th˱ mͭc cha thì không. · /͏nh ls -lF li͏t kê danh sách các t̵p tin và các thu͡c tính cͯa chúng trong m͡t danh mͭc, qua ÿó ta có th͋ xem các thông tin nh˱ lo̩i t̵p tin, quy͉n truy nh̵p, ng˱ͥi sͧ hͷu và kích th˱ͣc cͯa t̵p tin. . . 4.2.2. LӋnh chmod /Ӌnh chmod cho phép thay ÿәi quyӅn trên tұp tin cӫa ngѭӡi dùng. ChӍ nhӳng ngѭӡi sӣ hӳu tұp tin này mӟi có thӇ thay ÿәi ÿѭӧc mӭc ÿһc quyӅn ÿӕi vӟi tұp tin này. Có thӇ thӵc hiӋn lӋnh theo hai cách: 4.2.2.1. Dùng các ký hi͏u t˱ͫng tr˱ng: Cú pháp : chmod {a,u,g,o}{+,-,=}{r,w,x} Trong ÿó : u (user), g (group), o (other), a (all) Các toán tӱ : + thêm quyӅn. - bӟt quyӅn. = gán giá trӏ khác 4.2.2.2. Dùng thông s͙ tuy͏t ÿ͙i Cú pháp : chmod trong ÿó mode là mӝt sӕ cѫ sӕ 8 ( octal ) r w x r - x r - - 1 1 1 1 0 1 1 0 0 7 5 4 $chmod 754 filename $chmod g-w,o+r baitho.doc $chmod a+r baocao.txt $chmod +r baocao.txt $chmod og-x baocao.txt không cho thӵc thi $chmod u+rwx baocao.txt cho phép ngѭӡi sӣ hӳu có thӇÿӑc, viӃt và thӵc thi. $chmod o-rwx baocao.txt không cho truy nhұp tұp tin. $chmod 777 * Ĉһt các quyӅn cho tҩt cҧ các ÿӕi tѭӧng sӱ dөng . trên toàn bӝ tұp tin trong thѭ mөc hiӋn hành 4.2.3. Thay ÿәi ngѭӡi hoһc nhóm sӣ hӳu tұp tin - LӋnh chown cho phép thay ÿәi ngѭӡi sӣ hӳu, nhóm sӣ hӳu trên tұp tin. - LӋnh chgrp cho phép thay ÿәi nhóm sӣ hӳu trên tұp tin.
  16. - 16- THӴC HÀNH 1. Thay ÿәi quyӅn trên tұp tin #cat bai1.sh #ls -lF bai1.sh #chmod u+x,g+wx bai1.sh #ls -lF bai1.sh #chmod 644 bai1.sh #ls -lF bai1.sh #chmod 764 bai1.sh #ls -lF bai1.sh #chmod 777 bai1.sh #ls -lF bai1.sh 2. Tҥo tài khoҧn hӋ thӕng 7ҥo nhóm cntt2004 #groupadd cntt2004 Xem tұp tin /etc/group #cat /etc/group 7ҥo mӝt account user01 mӟi thuӝc nhóm cntt2004 #useradd - g cntt2004 -c ³Tai khoan user01´ user01 #passwd user01 Xem tұp tin /etc/passwd, /etc/shadow #cat /etc/passwd #cat /etc/shadow Thӱÿăng nhұp vào hӋ thӕng vӟi tài khoҧn là user01 7ҥo mӝt account user02 #useradd user02 #passwd user02 Ĉѭa user02 vào nhóm cntt2004 #usermod -g cntt2004 user02 Thӱÿăng nhұp vào hӋ thӕng vӟi tài khoҧn là user02 Xóa user02 #userdel user02 #cat /etc/passwd 3. Thay ÿәi quyӅn sӱ dөng cho các ÿӕi tѭӧng trên tұp tin a. Tҥo mӝt tұp tin mӟi /home/baocao.txt b. Ĉәi chӫ sӣ hӳu cӫa tұp tin /home/baocao.txt là user01
  17. - 17- #chown user01 /home/baocao.txt c. Phân quyӅn rwxr r cho các ÿӕi tѭӧng trên tұp tin /home/baocao.txt. #chmod 744 /home/baocao.txt d. Ĉăng nhұp vào hӋ thӕng vӟi tài khoҧn user01. Thӱ thay ÿәi nӝi dung tұp tin /home/baocao.txt. e. Ĉăng nhұp vào hӋ thӕng vӟi tài khoҧn khác. Thӱ thay ÿәi nӝi dung tұp tin /home/baocao.txt. Nhұn xét ? 4. Phân quyӅn sӱ dөng cho các ÿӕi tѭӧng a. Tҥo nhóm ngѭӡi sӱ dөng có tên cntt2004. b. Bә sung các user01, user02 vào nhóm cntt2004. #usermod -g cntt2004 user01 #usermod -g cntt2004 user02 c. Tҥo thѭ mөc /home/common #mkdir /home/common d. Ĉәi nhóm sӣ hӳu cӫa thѭ mөc /home/common là nhóm cntt2004. #chown :cntt2004 /home/common hoһc #chgrp cntt2004 /home/common e. Phân quyӅn rwx cho ÿӕi tѭӧng nhóm cntt2004 trên thѭ mөc /home/common #chmod g+rwx /home/common #ls -lF /home f. Ĉăng nhұp vào hӋ thӕng vӟi tài khoҧn user01. Tҥo thѭ mөc mӟi trong /home/common. g. Ĉăng nhұp vào hӋ thӕng vӟi mӝt tài khoҧn khác không thuӝc nhóm cntt2004. Thӱ tҥo thѭ mөc mӟi trong /home/common. Nhұn xét ?.
  18. - 18- Bài 5 6Ӱ DӨNG TRÌNH SOҤN THҦO VI Giӟi thiӋu trình soҥn thҧo vi, các thao tác soҥn thҧo tұp tin bҵng vi. 5.1. Giӟi thiӋu vi là chѭѫng trình soҥn thҧo các tұp tin văn bҧn trên các hӋ thӕng Unix : - Màn hình ÿѭӧc xem nhѭ mӝt cӱa sә mӣ trên tұp tin. - Có khҧ năng di chuyӇn con trӓÿӃn bҩt kǤ vӏ trí nào trên màn hình. - Cӱa sә có thӇ di chuyӇn tӵ do trên tұp tin. Phҫn lӟn các phím dùng ÿӝc lұp hoһc kӃt hӧp vӟi phím Shift và Ctrl ÿӇ tҥo ra các OӋnh cӫa vi. Các lӋnh cӫa vi có thӇÿѭӧc gӑi khi có dҩu " : " ӣ dòng cuӕi màn hình. Có 2 chӃÿӝ (mode) trong khi sӱ dөng vi: Append mode và Command mode NhÊn phÝm lÖnh ChÕ ®é lÖnh ChÕ ®é so¹n th¶o (Command mode) (Editor mode) NhÊn ESC + PhÝm lÖnh 5.2. Khӣi ÿӝng vi Ta có thӇ gӑi vi vӟi tên tұp tin văn bҧn : $ vi filename Ví dͭ : vi bai1.txt Màn hình soҥn thҧo hiӋn ra nhѭ sau (ͧÿây ÿang dùng Telnet ÿ͋ n͙i vào UNIX) : - Dҩu ngã (~) trѭӟc mӛi dòng cho biӃt dòng ÿó còn rӛng (trӕng) - Dòng dѭӟi cùng cho biӃt tên file ÿang mӣ, trҥng thái cӫa file: nӃu là file mӟi thì "[new file]", nӃu mӣ file cNJ thì sӁ hiӇn thӏ sӕ dòng, sӕ ký tӵ trong file (hình Gѭӟi). 5.3. Soҥn thҧo văn bҧn - Chèn ký tӵ trên mӝt dòng a - Sӱ dөng các phím soҥn thҧo văn bҧn.
  19. - 19- - Nhҩn phím ESC ÿӇ kӃt thúc chӃÿӝ chèn văn bҧn. 5.4. Thoát khӓi vi Muӕn ra khӓi vi và ghi lҥi nӝi dung tұp tin, bҥn nhҩn phím ESC và dùng mӝt trong các lӋnh nhѭ sau: :ZZ hoһc :wq hoһc :x Thoát khӓi vi và không ghi lҥi các thay ÿәi trѭӟc ÿó : q! Khi ӣ trong chӃÿӝ soҥn thҧo cӫa vi, muӕn chҥy chѭѫng trình shell, dùng lӋnh : : ! hoһc gӑi shell, sau ÿó chҥy các lӋnh cӫa ngѭӡi dùng, khi kӃt thúc bҩm Ctrl-D ÿӇ trӣ Oҥi vi: : ! sh $ $ Ctrl-D 5.4.1. Dùng vi vӟi danh sách các lӋnh ÿã chҥy cӫa Shell /Ӌnh fc (fix command) cho phép ta soҥn thҧo bҵng vi và chҥy lҥi các lӋnh ÿã chҥy Fӫa Shell. Cách dùng nhѭ sau: - Soҥn thҧo và cho chҥy lӋnh cuӕi cùng: $fc - Soҥn thҧo mӝt nhóm lӋnh và cho chҥy: $ fc m n - Xem danh sách 16 lӋnh cuӕi cùng: $ fc -l hoһc history $ fc -lr (danh sách theo thӭ tӵ ngѭӧc lҥi) - Tҥo mӝt tұp tin chӭa mӝt sӕ lӋnh ÿã chҥy (cӫa history): $fc -nl n1 n2 > cmd cmd là mӝt tұp tin chӭa các lӋnh cӫa history tӯ lӋnh n1ÿӃn lӋnh n2 %ҧng tóm tҳt các lӋnh cӫa vi Inserts text before cursor Enters text at start of line Inserts text after cursor Enters text at end of line Opens a new line below cursor Opens a new line above cursor Deletes word Deletes entire line
  20. - 20- Deletes to end of line Deletes character under cursor Changes word Changes line Changes to end of line Replaces character under cursor Joins lines together Moves to end of word Moves to next word Moves to end of line Moves one space right Moves one line up Moves one line down Moves one space left Moves cursor to first occurrence of x Moves cursor to last occurrence of x Repeats the last f/F command number Moves cursor to specified column number Moves cursor to top line on-screen (not top line of file) Moves cursor to bottom line on-screen Moves cursor to middle line on-screen Moves cursor to bottom line of file number Moves cursor to specified line number (same as :number) Moves to beginning of line x Marks current position with letter x Scrolls for ward one half of the screen Scrolls backward one half of the screen Scrolls for ward one screen Scrolls backward one screen Redraws the screen Shows the filename, current line, and column number Redraws the screen with current line in middle of screen Yanks entire line into buffer Puts contents of buffer below cursor Puts contents of buffer above cursor x“[number]” Yanks the indicated number of lines into the buffer named x (x can be any single character a–z)
  21. - 21- x Places the contents of buffer x after the cursor :w [file] Writes contents to disk as file :q Quits vi :q! Quits file without saving changes :wq Saves changes and quits vi :r file Reads specified file into editor :e file Edits file :!command Executes specified shell command :number Moves to specified line number :f Prints out current line and filename (same as ) /string Searches forward for string ?string Searches backward for string :x,ys/oldstring/newstring Replaces oldstring with newstring from line x to line y (entering y = $ will replace to end of file) Undoes last command Finds next occurrence of string. Repeats last command ~ Changes character to opposite case Switches to command mode THӴC HÀNH 1. Dùng chѭѫng trình vi ÿӇ soҥn thҧo tұp tin vanban.doc $vi vanban.doc 2. Sao chép văn bҧn 4dd Cҳt 4 dòng và ÿѭa vào vùng ÿӋm Ctrl+d ChuyӇn xuӕng cuӕi văn bҧn p Sao tӯ vùng ÿӋm vào sau dòng hiӋn hành 3. Ĉһt và bӓ chӃÿӝ hiӇn thӏ sӕ dòng : :set nu :set nonu 4. Lѭu nӝi dung tұp tin và thoát khӓi vi: :wq 5. Xem lai nӝi dung tұp tin vanban.doc.
  22. - 22- Bài 6 LҰP TRÌNH SHELL 6.1. Chѭѫng trình tính tәng 1-> n - Minh hӑa các cҩu trúc while do done, và cách sӱ dөng [], $(()). - Tұp tin tong1.sh #!/bin/sh echo ³Chuong trinh tinh tong 1- $1´ index=0 tong=0 while [ $index -lt $1 ] do index=$(($index + 1)) tong=$(($tong + $index)) done echo "Tong 1-$1= $tong" exit 0 - Chҥy chѭѫng trình : chmod a+x tong1.sh ./tong1 100 6.2. Chѭѫng trình tính giai thӯa cӫa mӝt sӕ - Minh hӑa các cҩu trúc while do done, và cách sӱ dөng [], $(()). - Tұp tin giaithua.sh #!/bin/sh echo ³Chuong trinh tinh $1!´ index=0 gt=1 while [ $index -lt $1 ] do index=$(($index + 1)) gt=$(($gt * $index)) done echo "$1!= $gt" exit 0 - Chҥy chѭѫng trình : chmod a+x giaithua.sh ./giaithua 5 6.3. Chѭѫng trình ÿӃm sӕ dòng cӫa mӝt tұp tin - Minh hӑa các cҩu trúc if then fi, while do done, và cách sӱ dөng [], $(()). - Tұp tin demdong.sh #!/bin/sh echo ³Chuong trinh dem so dong cua tap tin $1´ { n=0 while read line
  23. - 23- do n=$(($n + 1)) done echo ³So dong cua tap tin $1 la : $n´ }<$1 exit 0 - Chҥy chѭѫng trình : chmod a+x demdong.sh ./demdong bai1.txt 6.4. Chѭѫng trình ÿӃm sӕ tӯ cӫa mӝt tұp tin - Minh hӑa các cҩu trúc for do done, while do done. - Tұp tin demtu.sh #!/bin/sh echo ³Chuong trinh dem so tu cua tap tin $1´ { n=0 while read line do for wd in $line do n=$(($n + 1)) done done echo ³Tong so tu cua tap tin $1 la : $n´ }<$1 exit 0 - Chҥy chѭѫng trình : chmod a+x demtu.sh ./demtu bai1.txt 6.5. Chѭѫng trình tìm dòng có ÿӝ dài lӟn nhҩt trong mӝt tұp tin - Minh hӑa các cҩu trúc if then fi, while do done. - Tұp tin dongmax.sh #!/bin/sh echo ³Chuong trinh tim dong dai nhat trong tap tin $1´ { n=0 max=0 dong=´´ while read line do n=`expr length ³$line´` if [ $n ±gt $max ] then dong=´$line´
  24. - 24- max=$n fi done echo ³Dong trong tap tin $1 co do dai max = $max la : $dong´ }<$1 exit 0 - Chҥy chѭѫng trình : chmod a+x dongmax.sh ./dongmax bai1.txt 6.6. Chѭѫng trình tìm mӝt xâu trong mӝt tұp tin - Minh hӑa các cҩu trúc if then fi, while do done. - Tұp tin timxau.sh #!/bin/sh echo ³Chuong trinh tim xau $1 trong tap tin $2´ { wordlen=`expr length ³$1´` # Do dai tu can tim while read textline do textlen=`expr length ³$textline´` # Do dai cua dong vua doc end=$(($textlen ± wordlen + 1´ index=1 while [ $index ±le $end ] do temp=`expr substr ³$textline´ $index $wordlen if [ ³$temp´ = $1 ] then echo ³Tim thay $1 tai dong $textline´ break fi index=$(($index + 1)) done done }<$2 exit 0 - Chҥy chѭѫng trình : chmod a+x timxau.sh ./timxau abc bai1.txt
  25. - 25- Bài 7 Lұp trình C & C++ Trình biên dӏch GNU là công cө phát triӇn thông dөng nhҩt sҹn có trong hӋÿLӅu hành Linux, ÿѭӧc dùng ÿӇ biên dӏch các kernael cӫa hӋÿLӅu hành. Ngoài ra gcc cung Fҩp các thѭ viӋn và các tұp tin Header cҫn thiӃt ÿӇ biên dӏch và chҥy các chѭѫng trình Fӫa ngѭӡi dùng. Các chѭѫng trình C thѭӡng có phҫn tên mӣ rӝng là .c Các chѭѫng trình C++ thѭӡng có phҫn tên mӣ rӝng là .cc các hoһc .C ĈӇ biên dӏch và thӵc thi mӝt chѭѫng trình C bҥn làm nhѭ sau : 1. Soҥn thҧo chѭѫng trình. Lѭu tұp tin vӟi tên và phҫn mӣ rӝng thích hӧp. # vi example.c 2. Thoát vi, tӯ dҩu nhҳc hӋ thӕng bҥn gõ lӋnh : Cú pháp : gcc -o filedestination filesource #gcc -o hello hello.c 3. NӃu có lӛi, trình biên dӏch sӁ thông báo sӕ thӭ tӵ dòng lӋnh lӛi. NӃu biên dӏch thành công, ÿӇ chҥy chѭѫng trình gõ lӋnh : #./filedestination Ví dͭ #./hello /ѭu ý cách dùng ./ trѭӟc tên chѭѫng trình, nghƭa là máy sӁ chӍ tìm kiӃm chѭѫng trình khҧ thi tҥi thѭ mөc hiӋn hành. ĈӇ dӏch cùng mӝt lúc nhiӅu tұp tin chѭѫng trình trong thѭ mөc hiӋn hành, bҥn dùng lӋnh : make hoһc make all Sau ÿây là mӝt sӕ chѭѫng trình ví dө : 1. Chѭѫng trình hello.c #include #include main() { int i; double a; for(i=1;i<11;i++) { a=i*1.0; printf("%2d. %3d %4d %7.5f\n",i,i*i,i*i*i); } }
  26. - 26- 2. Chѭѫng trình sample.c #include void printnum ( int ); /* Khai b͏o hàm*/ void printchar ( char ); /* Khai b͏o hàm */ main () { double tmp; /* Khai b͏o bi?n toàn c?c */ tmp = 1.234; printf ("%f\n",tmp); /* In gi͏ tr? c?a bi?n toàn c?c tmp */ printnum (5); /* In gi͏ tr? s? 5 */ printf ("%f\n",tmp); /* In gi͏ tr? c?a bi?n toàn c?c tmp */ printchar ('k'); /* in ký t? k */ printf ("%f\n",tmp); /* In gi͏ tr? c?a bi?n toàn c?c tmp */ } /* é?nh nghia hàm dó khai b͏o ? tr͝n */ /* Khai b͏o cú t? kho͏ void nghia là hàm khͥng tr? v? m?t gi͏ tr? */ void printnum (int inputnum) { int tmp; tmp = inputnum; printf ("%d \n",tmp); } void printchar (char inputchar) { char tmp; tmp = inputchar; printf ("%c \n",tmp); }
  27. - 27- Bài 8 QUҦN LÝ TIӂN TRÌNH 8.1. Giӟi thiӋu TiӃn trình là mӝt môi trѭӡng thӵc hiӋn, bao gӗm mӝt phân ÿRҥn lӋnh và mӝt phân ÿRҥn dӳ liӋu. Cҫn phân biӋt vӟi khái niӋm chѭѫng trình chӍ gӗm tұp hӧp lӋnh. Trên hӋÿLӅu hành Linux, tiӃn trình ÿѭӧc nhұn biӃt thông qua sӕ hiӋu cӫa tiӃn trình, Jӑi là pid. CNJng nhѭÿӕi vӟi user, nó có thӇ nҵm trong nhóm. Vì thӃÿӇ phân biӋt ta nhұn biӃt qua sӕ hiӋu nhóm gӑi là pgrp. Mӝt sӕ hàm cӫa C cho phép lҩy ÿѭӧc nhӳng thông sӕ này: int getpid() /* trҧ vӅ giá trӏ int là pid cӫa tiӃn trình hiӋn tҥi*/ int getppid() /*trҧ vӅ giá trӏ int là pid cӫa tiӃn trình cha cӫa tiӃn trình hiӋn tҥi */ int getpgrp() /* trҧ vӅ giá trӏ int là sӕ hiӋu cӫa nhóm tiӃn trình*/ int setpgrp() /*trҧ vӅ giá trӏ int là sӕ hiӋu nhóm tiӃn trình mӟi tҥo ra*/ Ví dө: /Ӌnh : printf("Toi la tien trinh %d thuoc nhom %d",getpid(),getgrp()); .Ӄt quҧ sӁ là: Toi là tien trinh 235 thuoc nhom 231 8.1.1. Tҥo mӝt tiӃn trình - lӋnh fork int fork() tҥo ra mӝt tiӃn trình con. Giá trӏ trҧ lҥi là 0 cho tiӃn trình con và dҩu hiӋu pid cho tiӃn trình cha. Giá trӏ sӁ là -1 nӃu không tҥo ÿѭӧc tiӃn trình mӟi. Theo nguyên tҳc cѫ bҧn cӫa hӋ thӕng, tiӃn trình con và cha sӁ có cùng ÿRҥn mã. ĈRҥn dӳ liӋu cӫa tiӃn trình mӟi là mӝt bҧn sao chép chính xác ÿRҥn dӳ liӋu cӫa tiӃn trình cha. Tuy nhiên tiӃn trình con vүn khác tiӃn trình cha ӣ pid, thӡi gian xӱ lý, 8.1.2. Dӯng mӝt tiӃn trình /Ӌnh kill cӫa Shell có thӇ dùng ÿӇ chҩm dӭt hoҥt ÿӝng cӫa mӝt tiӃn trình. ví dө nhѭ khi muӕn dӯng tiӃn trình 234 ta dùng lӋnh: kill 234 C cNJng có lӋnh kill nhѭ sau: int kill(pid, sig); int pid; là dҩu hiӋu nhұn biӃt cӫa mӝt tiӃn trình. int sig; hҵng tín hiӋu giao tiӃp tiӃn trình.
  28. - 28- 8.1.3. Giao tiӃp giӳa các tiӃn trình ViӋc giao tiӃp giӳa các tiӃn trình ÿѭӧc thӵc hiӋn thông qua các tín hiӋu chuүn Fӫa hӋ thӕng. Tín hiӋu là mӝt sӵ ngҳt quãng logic ÿѭӧc gӱi ÿӃn các tiӃn trình bӣi hӋ thӕng ÿӇ thông báo cho chúng vӅ nhӳng sӵ viӋc không bình thѭӡng trong môi trѭӡng hoҥt ÿӝng cӫa chúng (nhѭ lӛi bӝ nhӟ, lӛi vào ra). Nó cNJng cho phép các tiӃn trình liên Oҥc vӟi nhau. Mӝt tín hiӋu (trӯ SIGKILL) có thӇÿѭӧc xem xét theo ba cách khác nhau: 1. TiӃn trình có thӇ ÿѭӧc bӓ qua: Ví dө chѭѫng trình có thӇ bӓ qua sӵ ngҳt quãng cӫa ngѭӡi sӱ dөng hӋ thӕng (ÿó là sӵ bӓ qua khi mӝt tiӃn trình ÿang ÿѭӧc sӱ dөng ӣ phҫn nӅn. 2. TiӃn trình có thӇÿѭӧc thӵc hiӋn: Trong trѭӡng hӧp này, khi nhұn ÿѭӧc 1 tina stiӋu, viӋc thӵc hiӋn 1 tiӃn trình ÿѭӧc chuyӇn vӅ mӝt quy trình do ngѭӡi sӱ Gөng xác ÿӏnh trѭӟc, sau ÿó trӣ lҥi nѫi nó bӏ ngҳt. 3. Lӛi có thӇÿѭӧc tiӃn trình trҧ vӅ sau khi nhұn ÿѭӧc tín hiӋu này. 'ѭӟi ÿây là mӝt sӕ tín hiӋu thѭӡng gһp: Tín hiӋu này ÿѭӧc phát ÿӃn các tiӃn trình vào lúc cuӕi khi mà nó tӵ ngҳt. SIGHUP Nó cNJng ÿѭӧc phát ÿӃn mӑi tiӃn trình có tiӃn trình chính tӵ ngҳt. SIGINT Tín hiӋu này ÿѭӧc phát ÿӃn các tiӃn trình khi ta ra lӋnh ngҳt. SIGQUIT 7ѭѫng tӵ nhѭ trên khi ta gõ vào ^D. /Ӌnh không hӧp lӋ, tín hiӋu ÿѭӧc phát ra khi phát hiӋn 1 lӋnh không ÿúng SIGILL ӣ cҩp ÿӝ vұt lý (ví dө nhѭ 1 tiӃn trình thӵc hiӋn mӝt lӋnh mà máy tính chông có lӋnh này). Tín hiӋu ÿѭӧc phát ra sau mӛi lӋnh trong trѭӡng hӧp tiӃn trình có sӱ dөng SIGTRAP OӋnh ptrace(). SIGIOT %үy ÿѭӧc phát khi có các vҩn ÿӅ vӅ vұt lý. SIGEMT %үy cӫa lӋnh phát, ÿѭӧc phát ra khi có lӛi vұt lý trong khi thӵc hiӋn. Ĉѭӧc phát ra khi có lӛi vӅ tính toán nhѭ mӝt sӕ có dҩu phҭy nӕi có ÿӏnh SIGFPE Gҥng không hӧp lý. Gҫn nhѭ luôn chӍ ra lӛi khi lұp trình. SIGKILL Trang bӏÿӇ kӃt thúc tiӃn trình. Không thӇ bӓ qua hoһc cҳt tín hiӋu này. SIGBUS Ĉѭӧc phát khi gһp lӛi trên bus. Ĉѭӧc phát ra khi gһp lӛi trên phân ÿRҥn sӵ truy cұp dӳ liӋu bên ngoài phân SYSGEGV ÿRҥn dӳ liӋu ÿѭӧc cҩp phát cho tiӃn trình.
  29. - 29- SIGSYS Ĉӕi sӕ không ÿúng cho hӋ thӕng gӑi. SIGPIPE ViӃt trên mӝt ӕng dүn không mӣÿӇÿӑc. Phát ra khi ÿӗng hӗ cӫa mӝt tiӃn trình ngӯng lҥi. Ĉӗng hӗÿѭӧc hoҥt ÿӝng SIGALRM Eҵng lӋnh alrm(). Ĉѭӧc phát ra khi mӝt tiӃn trình kӃt thúc bình thѭӡng. CNJng có thӇ dùng ÿӇ SIGTERM Gӯng 1 hӋ thӕng ÿӇ kӃt thúc tҩt cҧ các tiӃn trình hoҥt ÿӝng. 8.1.4. Liên lҥc giӳa hai tiӃn trình 7ӯ mӝt chѭѫng trình ÿѫn giҧn dѭӟi ÿây sӱ dөng các lӋnh phát và nhұn tín hiӋu, sau ÿó giúp liên lҥc giӳa hai tiӃn trình. 1ӝi dung cӫa ví dө là sӵ liên lҥc giӳa mӝt tiӃn trình cha và mӝt tiӃn trình con thông qua các tín hiӋu ÿã ÿѭӧc trình bày phҫn trѭӟc. #include #include void fils_atc() { printf(" Tien trinh bi loai bo !!!\n"); kill(getpid(), SIGINT); } / / void fils() { signal(SIGUSR1, fils_atc); printf(" Hinh thanh tien trinh moi. Nhung chuan bi loai bo tien trinh nay !!\n"); while(1); } / / main() { int ppid, pid; if ((pid = fork())==0) fils(); else { sleep(3); printf(" Chap nhan !! Tien trinh se bi loai bo.\n"); kill(pid, SIGUSR1); } } Trong ví dө trên, tiӃn trình con có sӱ dөng hàm signal(SIGUSR1, fils_atc). Hàm này có tác dөng mӛi khi tiӃn trình con nhұn ÿѭӧc tín hiӋu SIGUSR1 thì hàm fils_atc() VӁÿѭӧc thӵc thi.
  30. - 30- Nhѭ vұy ӣ ví dө trên mӝt tiӃn trình con ÿã ÿѭӧc tҥo ra nhѭng nó lҥi không muӕn tiӃp tөc tӗn tҥi. Do vұy sau khi tҥm dӯng lҥi sleep(3), tiӃn trình cha ÿã gӣi ÿӃn cho tiӃn trình con mӝt tín hiӋu là SIGUSR1 bҵng lӋnh: kill(pid, SIGUSR1); ӣ tiӃn trình con, tín hiӋu SIGUSR1 ÿã ÿѭӧc gán vӟi hàm fils_atc(). Hàm này ra mӝt thông báo báo hiӋu tiӃn trình này sҳp chӃt rӗi tӵ gӣi ÿӃn chính mình (tiӃn trình con) tín hiӋu SIGINT, tín hiӋu ngҳt tiӃn trình. Và tiӃn trình con ÿã chӃt. kill(getpid(), SIGINT); 0ӝt sӕ nhѭӧc ÿLӇm khi liên lҥc trӵc tiӃp bҵng tín hiӋu: - Mӝt tín hiӋu có thӇ bӏ bӓ qua, kӃt thúc mӝt tiӃn trình hoһc bӏ chһn lҥi. Ĉó là lý do chính ÿѭa ra các tín hiӋu không thích ӭng ÿѭӧc ÿӇ tiӃn hành liên lҥc giӳa các tiӃn trình. Mӝt thông ÿLӋp ÿLӋp dѭӟi hình thӭc tín hiӋu có thӇ sӁ bӏ mҩt nӃu nó ÿѭӧc nhұn lúc loҥi tín hiӋu này tҥm thӡi bӏ bӓ qua. - Mӝt vҩn ÿӅ khác là các tín hiӋu có quyӅn rҩt lӟn, khi ÿӃn chúng làm ngҳt quãng công viӋc hiӋn tҥi. Ví dө viӋc nhұn mӝt tín hiӋu trong khi tiӃn trình ÿang ÿӧi mӝt Vӵ kiӋn (mà có thӇÿӃn khi sӱ dөng các lӋnh open(), read(), ) làm cho viӋc thӵc thi hàm bӏ chӋch hѭӟng. Khi trӣ lҥi, lӋnh chính bӏ ngҳt gӣi lҥi mӝt thông ÿLӋp báo Oӛi mà hoàn toàn không xӱ lý ÿѭӧc. Ngoài viӋc liên lҥc trӵc tiӃp nhѭӣ ví dө trên, còn cho phép mӝt phѭѫng pháp liên Oҥc giӳa các tiӃn trình khác, ÿó là liên lҥc qua "ÿѭӡng ӕng". 8.2. Lұp trình ÿa tiӃn trình 8.2.1. ӕng dүn liên lҥc ӕng dүn là mӝt cѫ chӃ cѫ bҧn ÿӇ liên lҥc gián tiӃp giӳa các tiӃn trình. Ĉó là các file ÿһc biӋt (FIFO), ӣÿó các thông tin ÿѭӧc truyӅn ÿi 1 ÿҫu và thoát ra ӣ mӝt ÿҫu khác. 0ӝt sӕÿһc ÿLӇm cӫa "ӕng dүn": - Các ӕng dүn chӍ mang tính chҩt tҥm thӡi, chӍ tӗn tҥi trong thӡi gian thӵc hiӋn cӫa Pӝt tiӃn trình tҥo ra nó. - Muӕn tҥo ra mӝt ӕng dүn phҧi bҳt ÿҫu bҵng mӝt lӋnh ÿһc biӋt: pipe(). - NhiӅu tiӃn trình có thӇ viӃt và ÿӑc trên cùng mӝt ӕng dүn. Tuy nhiên, không có mӝt Fѫ chӃ nào ÿӇ phân biӋt thông tin cho các tiӃn trình ӣÿҫu ra. - Dung lѭӧng ӕng dүn bӏ hҥn chӃ (khoҧng 4KB). Do ÿó khi chúng ta cӕ gҳng viӃt khi ӕng dүn bӏÿҫy thì sӁ gһp phҧi trѭӡng hӧp tҳc nghӁn.
  31. - 31- - Các tiӃn trình liên lҥc qua ӕng dүn phҧi có mӕi quan hӋ hӑ hàng và các ӕng dүn nӕi phҧi ÿѭӧc mӣ trѭӟc khi tҥo ra các tiӃn trình con. - Không thӇ tӵ thay ÿәi vӏ trí thông tin trong ӕng. 8.2.2. Thao tác vӟi "ӕng dүn liên lҥc" 7ҥo mӝt ӕng dүn: int p_desc[2]; int pipe(p_desc); Giá trӏ trҧ vӅ là 0 nӃu thành công, -1 nӃu thҩt bҥi. p_desc[0] : chӭa các sӕ hiӋu mô tҧ nhӡÿó có thӇÿӑc trong ӕng dүn. p_desc[1] : chӭa các sӕ hiӋu mô tҧ nhӡÿó có thӇ viӃt trong ӕng dүn. Nhѭ vұy viӋc viӃt trong p_desc[1] là ÿӇ truyӅn dӳ liӋu trong ӕng và viӋc ÿӑc trong p_desc[0] ÿӇ nhұn chúng. Ví dө: #include #include main() { int i,ret, p_desc[2]; char c; pipe(p_desc); write(p_desc[1], "AB", 2); for (i=1; i #include void code_fils(int number) { int fd, nread; char texte[100];
  32. - 32- fd=number; printf(" So hieu mo ta la %d\n",fd); switch (nread=read(fd, texte, sizeof(texte))) { case -1: perror("Loi doc."); case 0: perror("EOF"); default: printf("Van ban nhan duoc co %d ky tu: %s\n",fd, texte); } } main() { int fd[2]; char chaine[10]; if (pipe(fd)==-1) { perror("Loi khoi tao pipe."); exit(1); } switch (fork()) { case -1: perror(" Loi khoi tao tien trinh."); break; case 0: if (close(fd[1])==-1) perror(" Error."); code_fils(fd[0]); exit(0); } close(fd[0]); if (write(fd[1]),"hello",6)==-1) perror("Loi truyen."); } .Ӄt quҧ chѭѫng trình: So hieu mo ta la: 5 Van ban nhan duoc co 6 ky tu: hello Chú ý rҵng, tiӃn trình con ÿӑc trong ӕng dүn mà không viӃt ӣÿó nên nó bҳt ÿҫu Eҵng cách ÿóng phҫn viӃt fd[1] ÿӇ tiӃt kiӋm các tín hiӋu mô tҧ cӫa tә hӧp. Tѭѫng tӵ, vì tiӃn trình cha chӍ sӱ dөng phҫn viӃt nên nó ÿóng phҫn ÿӑc lҥi (fd[0]). Sau ÿó tiӃn trình cha viӃt vào ӕng dүn 6 ký tӵ và tiӃn trình con ÿã ÿӑc chúng. Bài 9 /ұp trình mҥng TCP/IP 9.1. Lұp trình client /server theo giao thӭc TCP/IP · Ch˱˯ng trình tcpClient.c /* Chuong trinh tcpClient.c */
  33. - 33- /* Khai báo các file thɉ viʄn cɤn thiɼt ÿʀ g͍i hàm socket*/ #include #include #include /*gethostbyname*/ #include #include #include #include /* close */ #define SERVER_PORT 1500 #define MAX_MSG 100 int main (int argc, char *argv[]) { /* Kh͟i tɞo các biɼn dùng trong chɉɇng trình */ int sd, rc, i; struct sockaddr_in localAddr, servAddr; struct hostent *h; if(argc \n",argv[0]); exit(1); } /* Hàm gethostbyname() lɢy vɾÿʈa chʆ IP theo tên nhɪp vào trong tɪp tin /etc/hosts */ h = gethostbyname(argv[1]); if(h==NULL) { printf("%s: unknown host '%s'\n",argv[0],argv[1]); exit(1); } servAddr.sin_family = h->h_addrtype; memcpy((char *) &servAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); servAddr.sin_port = htons(SERVER_PORT); /* Gán các giá trʈ cho ÿ͑i tɉͣng socket. Tɞo socket cho máy Client. Lɉu lɞi s͑ mô tɠ socket */ sd = socket(AF_INET, SOCK_STREAM, 0); if(sd<0) { perror("cannot open socket "); exit(1); } /* Ĉɴt tên socket cho chɉɇng trình Client Gán ÿʈa chʆ kɼt n͑i cho socket theo giao thͩc Internet */ localAddr.sin_family = AF_INET; localAddr.sin_addr.s_addr = htonl(INADDR_ANY); localAddr.sin_port = htons(0); /* Hàm htons() dùng ÿʀ chuyʀn ÿ͕i trɪt tͱ byte cͧa s͑ nguyên trɉ͛c khi g͟i ÿi ± do hʄ th͑ng sͭ dͥng cɇ chɼ giao tiɼp TCP/IP */ /* Ràng bu͙c tên v͛i socket */
  34. - 34- rc = bind(sd, (struct sockaddr *) &localAddr, sizeof(localAddr)); if(rc #include #include #include #include #include #include /* close */ #define SUCCESS 0 #define ERROR 1 #define END_LINE 0x0 #define SERVER_PORT 1500 #define MAX_MSG 100 /* function readline */ int read_line();
  35. - 35- int main (int argc, char *argv[]) { int sd, newSd, cliLen; struct sockaddr_in cliAddr, servAddr; char line[MAX_MSG]; /* Gán các giá trʈ cho ÿ͑i tɉͣng socket. Tɞo socket cho máy Server. Lɉu lɞi s͑ mô tɠ socket */ sd = socket(AF_INET, SOCK_STREAM, 0); if(sd<0) { perror("cannot open socket "); return ERROR; } /* Ĉɴt tên socket cho chɉɇng trình Server Gán ÿʈa chʆ kɼt n͑i cho socket theo giao thͩc Internet */ servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(SERVER_PORT); if(bind(sd, (struct sockaddr *) &servAddr, sizeof(servAddr))<0) { perror("cannot bind port "); return ERROR; } /* 7ɞo hàng ÿͣi lɬng nghe kɼt n͑i cͧa client Cho phép hàng ÿͣi nhɪn t͑i ÿa 5 kɼt n͑i */ listen(sd,5); /* Lɴp liên tͥc ch͝ và lxy kɼt n͑i cͧa client */ while(1) { printf("%s: waiting for data on port TCP %u\n",argv[0],SERVER_PORT); cliLen = sizeof(cliAddr); /* Chɢp nhɪn kɼt n͑i */ newSd = accept(sd, (struct sockaddr *) &cliAddr, &cliLen); if(newSd<0) { perror("cannot accept connection "); return ERROR; } /* init line */ memset(line,0x0,MAX_MSG); /* Ĉ͍c dͯ liʄu do Client g͟i ÿɼn - xͭ lý dͯ liʄu nhɪn ÿɉͣc */ while(read_line(newSd,line)!=ERROR) { printf("%s: received from %s:TCP%d : %s\n", argv[0], inet_ntoa(cliAddr.sin_addr), ntohs(cliAddr.sin_port), line); /* init line */ memset(line,0x0,MAX_MSG);
  36. - 36- } /* while(read_line) */ } /* while (1) */ } /* WARNING */ /* this function is experimental. I don't know yet if it works */ /* correctly or not. Use Steven's readline() function to have something robust.*/ /* rcv_line is my function readline(). Data is read from the socket when */ /* needed, but not byte after bytes. All the received data is read. */ /* This means only one call to recv(), instead of one call for each received byte. */ /* You can set END_CHAR to whatever means endofline for you. (0x0A is \n)*/ /* read_lin returns the number of bytes returned in line_to_return */ /* Hàm có chͩc năng ÿ͍c dͯ liʄu tͫ socket*/ int read_line(int newSd, char *line_to_return) { static int rcv_ptr=0; static char rcv_msg[MAX_MSG]; static int n; int offset; offset=0; while(1) { if(rcv_ptr==0) { /* read data from socket */ memset(rcv_msg,0x0,MAX_MSG); /* init buffer */ n = recv(newSd, rcv_msg, MAX_MSG, 0); /* wait for data */ if (n return line */ if(rcv_ptr==n-1) { /* set last byte to END_LINE */ *(line_to_return+offset)=END_LINE; rcv_ptr=0; return ++offset; }
  37. - 37- /* end of line but still some data in buffer => return line */ if(rcv_ptr */ /* wait for more data to arrive on socket */ if(rcv_ptr == n) { rcv_ptr = 0; } } /* while */ }/*main*/ 9.2. Lұp trình client /server theo giao thӭc UDP/IP · Ch˱˯ng trình udpClient.c /* udpClient.c */ #include #include #include #include #include #include #include #include /* memset() */ #include /* select() */ #define REMOTE_SERVER_PORT 1500 #define MAX_MSG 100 int main(int argc, char *argv[]) { int sd, rc, i; struct sockaddr_in cliAddr, remoteServAddr; struct hostent *h; /* check command line args */ if(argc \n", argv[0]); exit(1); } /* get server IP address (no check if input is IP address or DNS name */ h = gethostbyname(argv[1]); if(h==NULL) { printf("%s: unknown host '%s' \n", argv[0], argv[1]); exit(1); }
  38. - 38- printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name, inet_ntoa(*(struct in_addr *)h->h_addr_list[0])); remoteServAddr.sin_family = h->h_addrtype; memcpy((char *) &remoteServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT); /* socket creation */ sd = socket(AF_INET,SOCK_DGRAM,0); if(sd #include #include #include #include #include #include /* close() */
  39. - 39- #include /* memset() */ #define LOCAL_SERVER_PORT 1500 #define MAX_MSG 100 int main(int argc, char *argv[]) { int sd, rc, n, cliLen; struct sockaddr_in cliAddr, servAddr; char msg[MAX_MSG]; /* Tɞo socket trên máy Server - Ĉɴt tên cho socket cͧa chɉɇng trình Server */ sd=socket(AF_INET, SOCK_DGRAM, 0); if(sd<0) { printf("%s: cannot open socket \n",argv[0]); exit(1); } /* bind local server port ± ràng bu͙c tên v͛i socket */ servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(LOCAL_SERVER_PORT); rc = bind (sd, (struct sockaddr *) &servAddr,sizeof(servAddr)); if(rc<0) { printf("%s: cannot bind port number %d \n", argv[0], LOCAL_SERVER_PORT); exit(1); } printf("%s: waiting for data on port UDP %u\n", argv[0],LOCAL_SERVER_PORT); /* Thͱc hiʄn vòng lɴp vô hɞn trên Server ÿʀ ch͝ và xͭ lý kɼt n͑i ÿɼn tͫ máy client */ while(1) { /* Kh͟i tɞo b͙ÿʄm */ memset(msg,0x0,MAX_MSG); /* Nhɪn dͯ liʄu g͟i ÿɼn tͫ client */ cliLen = sizeof(cliAddr); n = recvfrom(sd, msg, MAX_MSG, 0, (struct sockaddr *) &cliAddr, &cliLen); if(n<0) { printf("%s: cannot receive data \n",argv[0]); continue; } /* In dͯ liʄu nhɪn ÿɉͣc */ printf("%s: from %s:UDP%u : %s \n", argv[0],inet_ntoa(cliAddr.sin_addr), ntohs(cliAddr.sin_port),msg); }/*while*/ return 0; }
  40. - 40- Bài 10 DʇCH Vͤ TRUYɽN FILE FTP FTP (File Transfer Protocol) là dӏch vө cho phép truyӅn các tұp tin giӳa hai máy tính Client và Server, quҧn lý các thѭ mөc và truy cұp vào thѭ tín ÿLӋn tӱ. FTP không ÿѭӧc thiӃt lұp ÿӇ truy cұp vào mӝt máy khác và chҥy các chѭѫng trình ӣ máy ÿó, chӍ dùng cho viӋc truyӅn tұp tin. ĈӇ kӃt nӕi FTP, gõ lӋnh sau : ftp /Ӌnh ngѭӡi dùng FTP Mô tҧ ascii ChuyӇn sang chӃÿӝ truyӅn ascii bell âm thanh cӫa chѭѫng trình sau khi truyӅn mӛi tұp tin binary ChuyӇn sang chӃÿӝ truyӅn nhӏ phân cd directory ChuyӇn ÿәi thѭ mөc hiӋn hành trên server cdup Lùi thѭ mөc hiӋn hành vӅ mӝt cҩp trѭӟc ÿó close Huӹ kӃt nӕi delete filename Xoá mӝt tұp tin trên server dir directory HiӇn thӏ thѭ mөc directory cӫa server get filename TruyӅn tұp tin trên server vӅ máy cөc bӝ hash HiӇn thӏ/làm mҩt dҩu # cho mӛi khӕi các ký tӵÿã truyӅn ÿѭӧc help HiӇn thӏ các trӧ giúp lcd directory ChuyӇn ÿәi thѭ mөc hiӋn hành trên máy cөc bӝ ls directory Xem danh sách các tұp tin trong thѭ mөc directory trên Server mdelete files Xóa nhiӅu tұp tin trên máy Server mdir directories LiӋt kê các tұp tin trong nhiӅu thѭ mөc trên máy Server mget files 7ҧi nhiӅu tұp tin trên máy Server vӅ thѭ mөc hiӋn hành cӫa máy Fөc bӝ mkdir 7ҥo thѭ mөc trên máy Server mput files *ӱi mӝt sӕ tұp tin tӯ máy cөc bӝ lên máy Server open host .Ӄt nӕi vӟi Server host tӯ xa put filename TruyӅn tұp tin tӯ máy cөc bӝ lên máy Server pwd HiӇn thӏ thѭ mөc hiӋn hành trên server
  41. - 41- status HiӇn thӏ trҥng thái cӫa ftp rename file1 file2 Ĉәi tên file1 trên máy Server thành file2 quote Cung cҩp mӝt lӋnh FTP mӝt cách trӵc tiӃp quit Chҩm dӭt kӃt nӕi và thoát khӓi ftp ? HiӇn thӏ danh sách lӋnh Khi truy cұp vào hӋ thӕng, nӃu chѭa có account, ngѭӡi dùng có thӇ login vӟi account ÿһc biӋt là anonymous, không có mұt khҭu. Thӵc hành C:\>ftp ¿ Kh͟i ÿ͙ng ftp tͫ thɉ mͥc hiʄn hành C:\ (to) : 200.201.202.180 user : user01 Nhɪp vào tên user Password : Nhɪp vào mɪt khɦu tɉɇng ͩng ftp> dir Xem n͙i dung thɉ mͥc ftp> ? Xem n͙i dung các lʄnh cͧa ftp ftp>put autoexec.bat autoexec.dos Chuyʀn tɪp tin tͫ Client lên Server Y͛i tên m͛i là autoexec.dos ftp> ls Xem kɼt quɠ truyɾn file ftp>get autoexec.dos LINUX.TXT /ɢy tɪp tin autoexec.dos trên Server vɾ Client v͛i tên m͛i là LINUX.TXT ftp>mget autoexec.dos /ɢy tɪp tin autoexec.dos trên Server vɾ Client thɉ mͥc C:\ ftp>cd /home/user01 Chuyʀn ÿɼn thɉ mͥc hiʄn hành là user01 là thɉ mͥc có toàn quyɾn cͧa user user01 ftp>mdir document 7ɞo trong thɉ mͥc user01 thɉ mͥc m͛i có tên document ftp> help dir Xem hɉ͛ng dɨn sͭ dͥng lʄnh dir ftp>help get Xem hɉ͛ng dɨn sͭ dͥng lʄnh get ftp> quit .ɼt thúc phiên làm viʄc
  42. - 42- Bài 11 CÁC TɩP TIN CɡU HÌNH MɝNG 1. Tұp tin /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 200.201.202.1 linuxsvr.dng.vn linuxsvr 2. 7ұp tin /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4=false HOSTNAME=linuxsvr.edu.vn DOMAIN=edu.vn GATEWAY=200.201.202.1 3. 7ұp tin /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes USERCTL=no PEERDNS=no TYPE=Ethernet IPADDR=200.201.202.1 NETMASK=255.255.255.0 NETWORK=200.201.202.0 BROADCAST=200.201.202.255 4. Chҥy chѭѫng trình X- Windows hӛ trӧ cҩu hình hӋ thӕng : redhat-config-network 5. Khӣi ÿӝng lҥi dӏch vө mҥng [root@linuxsvr root]#/etc/init.d/network restart Shutting down interface eth0: [ OK ] Shutting down loopback interface: [ OK ] Setting network parameters: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] 6. KiӇm tra bҵng lӋnh : [root@linuxsvr root]#hostname linuxsvr.dng.vn
  43. - 43- 7. Xem thông tin vӅ cҩu hình thiӃt bӏ mҥng [root@linuxsvr root]#ifconfig eth0 Link encap:Ethernet HWaddr 00:06:7B:02:71:21 inet addr:200.201.202.1 Bcast:200.201.202.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2326 errors:0 dropped:0 overruns:0 frame:0 TX packets:70927 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:218392 (213.2 Kb) TX bytes:6939053 (6.6 Mb) Interrupt:9 Base address:0x4c00 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:933 errors:0 dropped:0 overruns:0 frame:0 TX packets:933 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:87261 (85.2 Kb) TX bytes:87261 (85.2 Kb) Hình 1. Cҩu hình dӏch vө mҥng bҵng tiӋn ích redhat-config-network.
  44. - 44- Bài 12 &ҨU HÌNH DӎCH VӨ DNS 12.1. Các tұp tin cҩu hình dӏch vө DNS 12.1.1. T̵p tin /etc/host.conf order hosts,bind 12.1.2. T̵p tin /etc/resolv.conf :search dng.vn nameserver 200.201.202.1 12.1.3. T̵p tin /etc/named.conf # named.conf - configuration for bind # Generated automatically by redhat-config-bind, alchemist et al. # Any changes not supported by redhat-config-bind should be put # in /etc/named.custom controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; include "/etc/named.custom"; include "/etc/rndc.key"; zone "0.0.127.in-addr.arpa" { type master; file "0.0.127.in-addr.arpa.zone"; }; zone "localhost" { type master; file "localhost.zone"; }; zone "dng.vn" { type master; file "dng.vn.zone"; }; zone "edu.vn" { type master; file "edu.vn.zone"; }; 12.1.4. T̵p tin /var/named/dng.vn.zone $TTL 86400 @ IN SOA dng. root.localhost ( 1 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl ) IN NS 200.201.202.1.
  45. - 45- www IN A 200.201.202.1 tankhoi01 IN A 200.201.202.1 tankhoi02 IN A 200.201.202.2 12.1.5. T̵p tin /var/named/edu.vn.zone $TTL 86400 @ IN SOA edu. root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl ) IN NS 200.201.202.1. www IN A 200.201.202.1 tankhoi01 IN A 200.201.202.1 tankhoi02 IN A 200.201.202.2 12.1.6. T̵p tin /var/named/0.0.127.in-addr.arpa.zone $TTL 86400 @ IN SOA localhost. root.linuxsvr.dng.vn ( 36 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) @ IN NS localhost. 1 IN PTR localhost. 1 IN PTR www. 1 IN PTR tankhoi01. 2 IN PTR tankhoi02. 1 IN PTR www. 1 IN PTR tankhoi01. 2 IN PTR tankhoi02. 12.1.7. T̵p tin /var/named/localhost.zone $TTL 86400 @ IN SOA @ root.localhost ( 1 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttl ) IN NS localhost. @ IN A 127.0.0.1 12.1.8. L͏nh khͧi ÿ͡ng d͓ch vͭ DNS /etc/init.d/named restart
  46. - 46- 12.2. Các lӋnh và tiӋn ích hӛ trӧ 12.2.1. L͏nh nslookup #nslookup Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. > www.dng.vn Server: 200.201.202.1 Address: 200.201.202.1#53 Name: www.dng.vn Address: 200.201.202.1 > tankhoi02.edu.vn Server: 200.201.202.1 Address: 200.201.202.1#53 Name: tankhoi02.edu.vn Address: 200.201.202.2 12.2.2. L͏nh host #host tankhoi01.dng.vn tankhoi01.dng.vn has address 200.201.202.1 12.2.3. L͏nh dig # dig dng.vn ; > DiG 9.2.1 > dng.vn ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58922 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;dng.vn. IN A ;; AUTHORITY SECTION: dng.vn. 86400 IN SOA dng. root.localhost.dng.vn. 1 28800 7200 604800 86400 ;; Query time: 28 msec ;; SERVER: 200.201.202.1#53(200.201.202.1) ;; WHEN: Mon Mar 22 09:14:13 2004 ;; MSG SIZE rcvd: 78 12.2.4. TiӋn ích redhat-config-bind #redhat-config-bind
  47. - 47- Hình 2. Cҩu hình dӏch vө BIND bҵng tiӋn ích redhat-config-bind. @2004, Nguy͍n Ṱn Khôi KHOA CÔNG NGHӊ THÔNG TIN - TRѬӠNG ĈҤI HӐC BÁCH KHOA ĈÀ NҸNG