Giáo trình Dịch vụ mạng Linux gồm các chương sau: Chương 1: Cài đặt CentOS, Chương 2: Dịch vụ Telnet, SSH, Chương 3: Dịch vụ DHCP, DNS, Chương 4: Dịch vụ Web, Chương 5: Dịch vụ FTP, Chương 6: Dịch vụ Mail.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG
GIÁO TRÌNH
DỊCH VỤ MẠNG LINUX
Trang 2LỜI NÓI ĐẦU
Giáo trình Dịch vụ mạng Linux sử dụng cho sinh viên ngành Công nghệ thông
tin Giáo trình này giúp sinh viên có những kiến thức tổng quan về các dịch vụ mạng
và hướng dẫn sinh viên có thể thiết lập, cài đặt các dịch này trên hệ điều hành Linux
Trang 3MỤC LỤC
Lời nói đầu
Chương 1: Cài đặt CentOS 1
1.1 Cài đặt 1
1.2 Cấu hình mạng 12
1.3 File hệ thống 17
1.4 Các chế độ hoạt động 26
Chương 2: Dịch vụ Telnet, SSH 33
2.1 Dịch vụ Telnet, cài đặt và cấu hình 33
2.2 Dịch vụ SSH, cài đặt và cấu hình 35
Chương 3: Dịch vụ DHCP, DNS 37
3.1 Dịch vụ DHCP, cài đặt và cấu hình 37
3.2 Dịch vụ DNS, cài đặt và cấu hình 38
Chương 4: Dịch vụ Web 53
4.1 Dịch vụ Web 53
4.2 Cấu hình Apache Web Server 58
Chương 5: Dịch vụ FTP 65
5.1 Dịch vụ FTP 65
5.2 Một số phần mềm làm FTP Server 67
5.3 Chương trình FTP Client 67
5.4 Giới thiệu VsFTP 69
5.5 Cấu hình Virtual FTP Server 72
Chương 6: Dịch vụ Mail 74
6.1 Dịch vụ Mail 74
6.2 Hệ thống Mail 75
Trang 46.3 Một số khái niệm 78 6.4 Một số file cấu hình cần thiết 81
Trang 5số yêu cầu về phần cứng và phần mềm:
Phần mềm cài đặt: Ta có thể lựa chọn một trong các nhà phân phối như RedHat Linux, Fedora, Ubuntu, Mandrak…
Phần cứng:
- CPU 386 trở lên, BUS ISA,PCI,EISA
- Keyboard:US English 105 key Hoặc các loại khác
- Mouse type
- Hard disk size: Nên có tối thiểu 1.8 GB song khuyến cáo nên có 3,5 GB
- RAM –tối thiểu 64M (RedHat 7.2) chọn Dùng thêm SWAP file nhờ một bộ nhớ ảo (Gấp đôi RAM value)
- Tuy vậy đối với những Kernel mới (2.6x) trở lên ta nên sử dụng cấu hình mạnh hơn như HDD tối thiểu 5GB, RAM 256 M
- Lưu ý dung lượng SWAP ( không gian hoán đổi bộ nhớ) cần hai lần lớn hơn dung lượng RAM
1.1.2 Phân vùng đĩa
Đĩa cứng được phân ra nhiều vùng khác nhau gọi là Partition Mỗi partition sử dụng một hệ thống tập tin và lưu trữ dữ liệu Mỗi đĩa chỉ chi tối đa 4 partition chính (primary) Giới hạn như vậy là do Master Boot Record của đĩa ghi tối đa 4 chỉ mục partition
Để tạo nhiều partition lưu trữ dữ liệu (hơn 4) người ta dùng partition mở rộng (extended partition) Thực ra partition mở rộng cũng là primary partition nhưng cho phép tạo các partition con được gọi là logical partition Linux sử dụng cơ chế truy xuất
ổ đĩa thông qua tập tin Mỗi ổ đĩa được gán với một tập tin trong thư mục /dev Ký hiệu fd cho đĩa mềm, hd cho ổ cứng, sd dành cho ổ SCSI Ký tự a,b,c,… gắn thêm vào
để xác định các ổ đĩa khác nhau cùng loại
Bảng 1.1: Mô tả ổ đĩa trong Linux
Ký tự mô tả ổ đĩa Physical block devices (các thiết bị lưu trữ vật lý)
Trang 62
Theo ví dụ trên đĩa cứng thứ nhất hda: có hai loại partition chính ký hiệu là hda1, hda2 Một partition mở rộng hda3 Trong partition mở rộng hda3 có hai partition logic có ký hiệu là hda6 và hda5 Hai phân vùng cần thiết cho Linux
- Phân vùng / là phân vùng chính chứa các thư mục gốc của hệ thống
- Phân vùng /boot chứa các boot loader, boot image của hệ điều hành
- Phân vùng swap được dùng làm không gian hoán đổi dữ liệu khi phân vùng nhớ chính được sử dụng hết Kích thước của phân vùng swap sử dụng tùy thuộc
hệ thống mình sử dụng ít hay nhiều ứng dụng Kích thước vùng swap được khuyến khích lớn hơn hay bằng dung lượng RAM
- Giao diện KDE 3.5.8 cùng với các tính năng multimedia, đọc DVD đa dạng
- Cung cấp giao diện quản lý mạng NetworkManager 0.7 hỗ trợ tính năng quản
lý và thiết bị mạng không dây
- Cấp chương trình PulseAudio là một chương trình quản lý sound card hiệu quả và có thể tương thích với hầu hết các hệ thống sound mới Cùng với chương trình giải mã CodecBuddy có thể hỗ trợ thêm cho các chương trình nghe nhạc
- Cung cấo ứng dụng văn phòng OpenOffice.org 3 với nhiều tính năng mới
- Tích hợp thêm bộ nhận dạng cho các thiết bị Bluetooth
- Hỗ trợ cho laptop bộ xử lý theo kiến trúc x86 và x86-64
- CentOS sử dụng kernel phiên bản 2.6.25
Khởi tạo cài đặt: chương trình hướng dẫn cài đặt trực tiếp từ CDROM, sau đó chọn menu cài đặt:
Trang 73
Hình 1.1: Chương trình hướng dẫn cài đặt trực tiếp từ CDROM
Chọn Skip trong hộp thoại Disk Found, để không kiểm đĩa CDROM trước khi cài đặt, sau đó hệ thống sẽ nạp chương trình anaconda để vào chết độ đồ họa
Hình 1.2: Hộp thoại Disk Found
Chọn Next để qua bước kế tiếp Chọn ngôn ngữ English làm ngôn ngữ hiển thị trong quá trình cài đặt, có thể chọn ngôn ngữ tiếng việt, chọn Next để tiếp tục bước kế tiếp:
Hình 1.3: Hộp thoại chọn ngôn ngữ
Nhấn Next
Trang 8Hình 1.6: Hộp thoại chọn phương thức tổ chức Partition
Chọn New để tạo phân vùng mới, ta cần tạo bốn phân vùng, phân vùng /, phân vùng /boot, phân vùng swap, phân vùng /home
Trang 95
Hình1.7: Hộp thoại tổ chức Partion 1
Tạo phân vùng /boot với kích thước là 100MB, chọn Mount Point /boot để tạo phân vùng boot, chọn File System Type là ext3, chọn size (MB) là 100, chọn OK để hoàn tất Làm tương tự để tạo các phân vùng /, home với kích thước khoảng 8GB, 1GB để chứa dữ liệu hệ thống và dữ liệu người dùng Để tạo phân vùng swap ta chọn File System Type: swap với Size khoảng 512 MB (gấp đôi RAM)
Hình 1.8: Hộp thoại tổ chức Partion 2
Giải thích thêm về Partition:
Để dễ quản lý HDD, ta chia nó ra thành nhiều vùng khác nhau.Mỗi vùng như thế
ta gọi là một partition – Số lượng partition được giới hạn trên một ổ cứng Trên Linux
ta có thể chia tối đa là 4 primary partition.Có duy nhất một active partition
Để chia nhiều hơn bốn partitions, ta cần tạo một extended partition (gọi là primary), và trong extended partition này, ta sẽ tạo các partitions gọi là logical partition Số lượng logical partition là không giới hạn Nhưng nên nhớ rằng logical partition không thể là một active partition được
Vấn đề phân chia partition cần được quan tâm trước khi cài đặt, đặc biệt khi cài đặt chung với HĐH Windows.Ta có thể dùng nhiều phần mềm quản lý partition ví dụ như “Partition magic” để phân chia HDD thành nhiều partitions khác nhau và theo sơ
đồ sau để cài chung Linux, Windows trên đó:
Partition label Kiểu Size Status log/pri hda
- hda1 Windows FAT32 > 4GB active primary
Trang 106
- hda2 /boot ext3 >=100MB primary
- hda3 extended xxx primary
- hda4 Setup FAT32 xxx logical
- hda5 /(root) ext3 > 3GB logical
- hda6 swap sizeof RAM hoặc 2 * sizeof(RAM)
Mỗi HĐH sẽ cài đặt trên một (hoặc nhiều) phân vùng riêng biệt Hình 1.2 dưới đây mô tả việc phân vùng trên HDD
Hình 1.10: Hộp thoại chọn chế độ quản lý boot loader
Chọn Edit để đặt tên máy và địa chỉ Ipv4 hoặc Ipv6, gateway cho hệ thống, chọn Next để tiếp tục quá trình cài đặt
Trang 117
Hình 1.11: Hộp thoại cài đặt thông số mạng 1
Hình 1.12: Hộp thoại cài đặt thông số mạng 2
Chọn Time Zone cho hệ thống dựa vào bản đồ, chọn Next để tiếp tục
Hình 1.13: Hộp thoại chọn Time Zone
Trang 128
Đặt mật khẩu cho người dùng quản trị root, mật khẩu này ít nhất là 6 ký tự, chọn Next để tiếp tục
Hình 1.14: Hộp thoại đặt mật khẩu quản trị
Chỉ định cài đặt phần mềm cần thiết hay thêm các phần mềm khác Sau đó chọn Next để tiếp tục quá trình cài đặt
Hình 1.15: Hộp thoại lựa chọn phần cài đặt thêm 1
Hình 1.16: Họp thoại lựa chọn phần cài đặt thêm 2
Trang 139
Hình 1.17: Hộp thoại lựa chọn phần cài đặt thêm 3
Chọn phần mềm cài đặt cần thiết, ta có thể họn phần mềm theo nhóm ở cửa sổ bên phải, và chọn phần mềm cụ thể ở cửa sổ bên trái, tùy chọn Optional packages chỉ định cụ thể các gói, các thư viện hỗ trợ thêm cho phần mềm được lựa chọn cụ thể bên phải Chọn Next để hệ thống bắt đầu kiểm tra phần mềm đã chọn có phù hợp với dung lượng đĩa hay không, nếu phù hợp thì tiếp tục chọn Next
Hình 1.18: Hệ thống kiểm tra sự phù hợp của phần đã chọn
Hệ thống định dạng filesystem và cài đặt hệ thống Chờ quá trình cài đặt trong vài phút Sau khi hệ thống cài đặt xong, Reboot để khởi động lại
Màn hình khởi động ban đầu của CentOS
Trang 1410
Hình 1.19: Màn hình khởi động CentOS
Khởi tạo thông tin ban đầu cho hệ thống trước khi sử dụng, trong giai đoạn này ta phải đặt một số thông số về Firewall, Licese, Date and Time, Hareware, Create User Sau đây là một số bước chính:
Chỉ định Firewall cho một số dịch vụ hệ thống Đặt các dịch vụ được phép truy xuất vào Linux, các dịch vụ khác bị cấm
Hình 1.20: Màn hình chỉ định Firewall
Thiết lập SELinux để tăng tính năng bảo mật hệ thống
Trang 1511
Hình 1.21: Màn hình mục SELinux
Cấu hình Date and Time cho hệ thống
Hình 1.22: Màn hình thiết lập Date and Time
Tạo tài khoản đăng nhập hệ thống và sử dụng, đây là tài khoản người dùng thường, không phải tài khoản có chức năng quản trị hệ thống, mật khẩu đã được thiết lập trong quá trình cài đặt, Chọn Finish để hoàn tất cấu hình
Trang 1612
Hình 1.23: Màn hình thiết lập tài khoản đăng nhập
Nhập tên người dùng và mật khẩu tương ứng để đăng nhập vào hệ thống, trong hộp thoại này ta cũng chọn được ngôn ngữ hiển thị, giao diện sử dụng (session) là KDE hay GNOME, mặc định hệ thống chọn giao diện GNOME
Hình 1.24: Màn hình đăng nhập hệ điều hành
Giao diện sử dụng của hệ thống CentOS
Hình 1.25: Giao diện sử dụng hệ điều hành CentOS
Trang 1713
<Địa chỉ ip><hostname ><domainname của hostname>
Khi muốn tên máy được đặt cố định một tên nào đó và tên này sẽ không thay đổi khi ta khởi động lại hệ thống thì ta thay đổi thông số HOSTNAME trong file /etc/sysconfig/network
• Ví dụ:# ifconfig –a
eth0 Link encap:Ethernet HWaddr 00:0C:29:6D:F0:3D
inet addr:172.29.14.150 Bcast:172.29.14.159 Mask:255.255.255.224
inet6 addr: fe80:20c:29ff:fe6d:f03d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6622 errors:0 dropped:0 overruns:0 frame:0
TX packets:1425 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:793321 (774.7 Kb) TX bytes:240320 (234.6 Kb)
Interrupt:10 Base address:0x1080
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:76 errors:0 dropped:0 overruns:0 frame:0
TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8974 (8.7 Kb) TX bytes:8974 (8.7 Kb)
1.2.3 Thay đổi địa chỉ IP
Ta có nhiều cách thay đổi địa chỉ IP của PC trên Linux, sau đây là ba cách cơ bản nhất
Cách 1: Dùng lệnh ifconfig <interface_name><IP_address> netmask
<netmask_address> up
• Ví dụ:# ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
Trang 1814
Cách 2: Ta có thể thay đổi thông tin cấu hình mạng trực tiếp trong file /etc/sysconfig/network-scripts/ifcfg-eth0 (ta có thể dùng chương trình mc để edit file này) Gán địa chỉ IP tĩnh (tham khảo file ifcfg-eth0 )
Sau đó ta dùng lệnh: ifdown eth0, ifup eth0
Cách 3: Ta dùng trình tiện ích setup để cấu hình (tham khảo trình tiện ích setup trong bài học trình tiện ich)
1.2.4 Tạo nhiều địa chỉ IP
Thông thường phương thức tạo nhiều địa chỉ IP trên card mạng được gọi là IP alias Alias này phải có tên dạng parent-interface-name:X, trong đó X là subinterface number Một số cách để tạo Alias IP
Cách 1
- Bước 1: Đảm bảo rằng tên interface thật phải tồn tại, và kiểm tra các IP Alias trong hệ thống có tồn tại hay không
- Bước 2: Tạo Virtual interface dùng lệnh ifconfig
o # ifconfig ifcfg-eth0:0 192.168.1.99 netmask 255.255.255.0 up
- Hoặc tạo một tên file /etc/sysconfig/network-scripts/ifcfg-eth0:0 từ file /etc/sysconfig/network-scripts/ifcfgeth0 sau đó ta thay đổi thông tin địa chỉ trong file này
- Bước 3: Bật và tắt alias interface thông qua lệnh ifconfig
o # ifup eth0:0
o # ifdown eth0:0
- Bước 4: Kiểm tra thông tin cấu hình alias interface dùng lệnh ifconfig:
# ifconfig
Trang 1915
eth0 Link encap:Ethernet HWaddr 00:0C:29:6D:F0:3D inet addr:172.29.14.150 Bcast:172.29.14.159 Mask:255.255.255.224 inet6 addr: fe80:20c:29ff:fe6d:f03d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7137 errors:0 dropped:0 overruns:0 frame:0
TX packets:1641 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:848367 (828.4 Kb) TX bytes:265688 (259.4 Kb) Interrupt:10 Base address:0x1080
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:6D:F0:3D inet addr:172.29.15.150 Bcast:172.29.15.159 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7137 errors:0 dropped:0 overruns:0 frame:0
TX packets:1641 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:848367 (828.4 Kb) TX bytes:265688 (259.4 Kb) Interrupt:10 Base address:0x1080
Cách 2
- Tạo tập tin parent-interface-name:X bằng cách copy file /etc/sysconfig/network-scripts/ifcfg-eth0 thành file /etc/sysconfig/network-scripts/ifcfg-eth0:X (trong đó X là số thứ tự của subinterface)
- Thay đổi thông tin cấu hình mạng trong file ifcfg-eth0:X (các thông tin in đậm
là thông tin bắt buộc ta phải thay đổi)
DEVICE=eth0:0 ONBOOT=yes BOOTPROTO=static IPADDR=172.29.14.151 NETMASK=255.255.255.224 GATEWAY=172.29.129
- Dùng lệnh service network restart
1.2.5 Xem bảng định tuyến mạng
Lệnh netstat –rn để xem bảng routing table của router
• Ví dụ: # netstat –rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.29.15.128 0.0.0.0 255.255.255.224 U 0 0 0 eth0
Trang 201.2.6 Thay đổi default gateway
Việc chỉ định địa chỉ default gateway cho hệ thống là công việc rất quan trọng vì default gateway chính là cầu nối quan trọng giúp cho hệ thống nội bộ có thể giao tiếp với hệ thống bên ngoài và ngược lại, việc đặt địa chỉ này tùy thuộc vào từng hệ thống
cụ thể mà ta có địa chỉ default gateway thích hợp, để đặt địa chỉ default gateway trên Linux ta có thể dùng lệnh route Thông qua lệnh này ta cũng có thể mô tả, cập nhật các con đường đi hỗ trợ việc xây dựng bảng định tuyến trên router Ta chỉ định địa chỉ 172.29.14.150 là default gateway cho hệ thống nội bộ, ta có thể dùng lệnh sau:
• Ví dụ:#route add default gw 172.29.14.150
Ta có thể dùng lệnh route add để chỉ định nhiều default gateway:
• Ví dụ: #route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254 eth0
1.2.7 Mô tả định tuyến mạng
Thông thường khi ta mô tả các route cho bảng routing table cho hệ thống khi ta muốn triển khai hệ thống nội bộ như một router mềm thì ta dùng file /etc/sysconfig/static-routes hoặc có thể dùng lệnh các route add trong file /etc/rc.d/rc.local, tuy nhiên ta có thể làm cách khác bằng cách dùng tạo script file sau: /etc/sysconfig/network-scripts/route-*interface_name, trong đó interfacename chính là tên outgoing interface
• Cú pháp:
Destination/prefix_mask via gateway
Trong ví dụ sau ta thêm đường mạng 10.0.0.0 và bảng định tuyến
• Ví dụ: [root@server tmp]# netstat –nr
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 [root@bigboy tmp]#./ifup-routes eth0 (->thực thi interface ) [root@bigboy tmp]# netstat -nr
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Trang 2117
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 10.0.0.0 192.168.1.254 255.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
1.2.8 Xóa thông tin trong bảng định tuyến
Để xóa đường đi trong bảng định tuyến ta dùng lệnh #route del
• Ví dụ:#route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254 eth0
1.3 File hệ thống
1.3.1 Tập tin
Ở mức vật lý, đĩa cứng được định dạng từ các thành phần sector, track, cylinder
Ở mức logic hệ thống sử dụng cấu trúc riêng, có thể dùng chỉ mục hay phân cấp để có thể xác định được dữ liệu từ mức logic tới mức vật lý Cách tổ chức như vậy gọi là hệ thống tập tin (còn gọi là filesystem)
Linux hỗ trợ rất nhiều loại hệ thống tập tin như: ext2, ext3, MS-DOS, proc Hệ thống tập tin cơ bản của Linux là ext2 và ext3 (hiện tại là ext3) Hệ thống tập tin này cho phép đặt tên tập tin tối đa 256 ký tự Bên cạnh đó, Linux còn hỗ trợ vfat cho phép đặt tên tập tin dài đối với những tập tin MS-DOS và những partition FAT32 Proc là một hệ thống tập tin ảo (/proc) nghĩa là không dành dung lượng đĩa phân phối cho nó Ngoài ra còn có những hệ thống tập tin khác như iso9660, UMSDOS, Network File System (NFS)
Đặc điểm của ext3
- Được công bố vào tháng 11 năm 2001
- Số nhận diện partition là 0x83
- Kích thước tối đa đạt 16GB – 2TB
- Chiều dài tên file đạt 256 ký tự
- Kích thước tối đa của partition từ 2TB đến 32 TB
Trang 2218
• Kích thước và cấu trúc filesystem
• Thời gian cập nhật filesystem cuối cùng
• Thông tin trạng thái
Inode (256 byte) lưu những thông tin về tập tin và thư mục được tạo trong
filesystem Mỗi tập tin tạo ra sẽ được phân bổ một inode lưu thông tin sau:
• Loại tập tin và quyền hạn tập tin
• Người sở hữu tập tin
• Kích thước và số hard link đến tập tin
• Ngày và giờ chỉnh sửa tập tin lần cuối cùng
• Vị trí lưu nội dung tập tin trong filesystem
Storageblock là vùng lưu dữ liệu thực sự của tập tin và thư mục Nó chia thành
những datablock Mỗi block chứa 1024 ký tự Ngay khi tập tin chỉ có 1KB thì cũng phải cấp 1 block để lưu trữ nó Không có ký tự kết thúc tập tin
• Data Block của tập tin thường lưu inode của tập tin và nội dung của tập tin
• Data block của thư mục lưu danh sách những entry gồm inode number, tên tập tin và những thư mục con
1.3.1.2 Loại tập tin
Trong linux tập tin dùng lưu dữ liệu, bao gồm thư mục và thiết bị lưu trữ Một tập tin đữ liệu, hay một thư mục đều được xem là tập tin Khái niệm tập tin còn mở rộng dùng cho các thiết bị như máy in, đĩa cứng… ngay cả bộ nhớ chính cũng được coi là một tập tin
Tập tin trong Linux được chia làm 3 loại chính:
§ Tập tin dữ liệu: là dữ liệu lưu trữ trên các thiết bị như đĩa cứng
§ Thư mục: chứa thông tin những tập tin và thư mục con trong nó
§ Tập tin thiết bị: hệ thống Linux xem các thiết bị như các tập tin Ra và
dữ liệu trên các tập tin chính là ra vào cho thiết bị
§ Tập tin liên kết:
Tập tin dữ liệu
Đây là tập tin theo định nghĩa truyền thống, nó là dữ liệu lưu trữ trên thiết
bị lưu trữ như đĩa cứng, CDROM, chúng ta có thể lưu bất cứ dữ liệu nào vào tập tin này như đoạn source chương trình, tập tin văn bản hay tập tin thực thi dạng mã máy, các lệnh của Linux cũng như tất cả các tập tin được tạo bởi người dùng
Tập tin thư mục
Trang 2319
Thư mục không chứa dữ liệu, mà chỉ chứa thông tin của những tập tin và thư mục con trong nó Thư mục chứa hai trường của một tập tin là tên tập tin và inode number
Hình 1.26: Thông tin tập tin
Tập tin thiết bị
Hệ thống Unix hoặc Linux xem các thiết bị như là các tập tin, việc xuất nhập dữ liệu cho các thiết bị tương tự với việc xuất nhập dữ liệu trên file, tất cả các file thiết bị được hệ thống Linux đặt trong thư mục /dev
Ví dụ: file thiết bị đĩa mềm là /dev/fd0, của đĩa cứng là /dev/sda, /dev/had,…
Tập tin liên kết
Link (liên kết) là cách thức tạo ra một tên tập tin thứ hai cho một tập tin Đơn giản là file tạm trỏ tới một file hoặc thư mục nào đó vì thế người dùng có thể truy xuất đến các file hoặc thư mục này thông qua các file liên kết giống như đang truy xuất trực tiếp đến file và thư mục đó
§ Cú pháp: #ln [-s] <nguồn><đích>
§ Ví dụ:#ln /usr/bill/testfile1 /usr/tim/testfile2
Lý do cơ bản của việc tạo liên kết là nhân tập tin lên nhiều lần Trong ví dụ trên, cả hai tập tin chính là một Do đó, nếu có bất kỳ sự thay đổi nào trên một tập tin
sẽ ảnh hưởng ngay đến tập tin còn lại
Trên Linux có hai dạng liên kết:
• Hard link file: là hình thức tạo một hay nhiều file tạm có cùng nội dung
với file nguồn, các file này đều trỏ về cùng một địa chỉ lưu trữ nội dung hay nói cách khác chúng có cùng inodes number Khi thay đổi trên bất kỳ file nào thì nội dung trên những file còn lại sẽ thay đổi theo Khi tạo hard link thì chỉ liên hệ kết nối file cũng sẽ tăng lên, do đó khi ta lỡ xóa một file nào đó thì dữ liệu vẫn còn trên những file còn lại Để tạo hard link file ta dùng lệnh theo cú pháp sau:
• Cú pháp:
#ln <file nguồn> <file liên kết>
• Ví dụ:Tạo file hard link
#touch test
#echo “test noi dung”> $HOME/test
Trang 24• Symbolic link file: là hình thức tạo liên kết tạm dùng để trỏ về file
nguồn, sysbolic link giúp người quản trị có thể đơn giản hóa các thao tác truy cập file hệ thống, bằng cách tạo ra liên kết file trỏ về file hệ thống, bằng cách tạo ta liên kết file trỏ về file hệ thống Khi đó, thay vì truy cập file hệ thống thì người dùng trên file liên kết tương ứng với việc thay đổi nội dung của file nguồn Để tạo liên kết symbolic link ta dùng lệnh ln -s:
• Cú pháp:
$ln -s <file nguồn> <file liên kết>
Ví dụ: Liệt kê số lượng tập tin trong bigfile
lrwxrwxrwx 1 root root 6 Sep 16:35 anotherfile -> bigfile -rw-rw-r 1 root root 2 Sep 17:23 bigfile
Điểm khác biệt giữa hard link và symmbolic link là khi xóa file nguồn thì file liên kết theo kiểu symbolic link không còn tác dụng, nhưng file liên kết theo kiểu hard link vẫn còn ý nghĩa và nội dung vẫn như cũ, chỉ có chỉ số liên kết hard link giảm đi một đơn vị
Trang 2521
àLưu ý: khi xóa tập tin gốc, nội dung của tập tin hard link không bị ảnh hưởng
nhưng nội dung tập tin symbolic link không xem được
Cấu trúc thư mục hệ thống
Hình 1.27: Cấu trúc thư mục hệ thống
Trong Linux không có khái niệm ổ đĩa như trong windows, tất cả các tập tin thư mục bắt đầu từ thư mục gốc (/) Linux sử dụng dấu “ ” Chỉ thư mục hiện hành và dấu “ ” chỉ thư mục cha của thư mục hiện hành Khi muốn truy cập thư mục con ta truy cập theo cấu trúc <gốc>/<thư mục con> /<thư mục cần truy cập> Để truy cập vào thư mục src ta dùng lệnh $cd/usr/src
• mounting filesystem
Hình 1.28: Mounting filesystem
Trang 2622
Như hình vẽ trên thư mục gốc được mount vào partition thứ nhất, /usr được
mount vào partition thứ hai Những dữ liệu ghi vào thư mục /home sẽ ghi vào
partition thứ ba Tương tự, dữ liệu của thư mục /usr/local ghi vô partition 4, dữ liệu
của thư mục /usr không phải thư mục con /usr/local thì ghi vào partion 2 Linux sử
dụng các tập tin chỉ đến các partition trên ổ đĩa vật lý Những tập tin này là những tập
tin thiết bị, nằm trong thư mục /dev Tập các tập tin này có dạng đầu tin là ký tự xác
định loại ổ đĩa như: đĩa mềm là fd, đĩa cứng là hd, đĩa scsi là sd … tiếp theo là số thứ
tự ổ đĩa: Ổ đĩa thứ nhất dùng ký hiệu a, thứ hai ký hiệu là b … và sau cùng là số thứ tự
Partition
Ví dụ:Tập tin chỉ đến các thiết bị:
• Ổ mềm thứ nhất: /dev/fd0
• Partition thứ nhất của ổ đĩa cứng đầu tin: /dev/hda1
• Partition thứ ba của đĩa cứng thứ hai: /dev/hdb3
Cấu trúc logic của hệ thống file được tạo từ việc ánh xạ các cấu trúc vật lý
được tạo ra khi ta cài đặt hệ thống, các thư mục nào không được tạo ra trong quá tình
cài đặt thì hệ thống sẽ tự động tạo ra Các thư mục cơ bản của Linux gồm:
Bảng 1.2: Các thư mục cơ bản trong Linux
/bin, /sbin Chứa các tập tin nhị phân hỗ trợ cho việc boot và thực thi các lệnh cần thiết
/boot Chứa linux kernel, file ảnh hỗ trợ load hệ điều hành
/lib Chứa các thư viện chia sẻ cho các tập tin nhị phân trong thư mục /bin và /sbin, chứa
/home Chứa các thư mục lưu trữ home directory của người dùng
/root Lưu trữ home directory của root
/usr Lưu trữ tập tin của các chương trình đã được cài đặt trong hệ thống
/var Lưu trữ log file, hàng đợi của các chương trình ứng dụng, mailbox của người dùng /mnt Chứa các mount point của các thiết bị được trong hệ thống
/proc Còn gọi là system file, lưu trữ thông tin về kernel
Trang 2723
1.3.2 Các thao tác trên file hệ thống
1.3.2.1 Mount và unmount filesystem
Mount là hình thức gắn kết thiết bị vào một thư mục trong filesystem của Linux, còn gọi là mount point, sau khi mount hoàn tất việc sao chép dữ liệu giữa hệ thống và mount point, tương tự như sao chép dữ liệu giữa hệ thống và thiết bị Ta có thể mount vào hệ thống các loại thiết bị sau: hda, sda, CDROM, đĩa mềm, usb
- Điểm mount là vị trí thư mục, trong cây thư mục, mà muốn mount vào
Bảng 1.3: Tùy chọn của Mount:
-v : cho biết chi tiết
-w : mount hệ thống tập tin với quyền đọc và ghi
-r :mount hệ thống tập tin với quyền đọc
-tloại –fs : xác định hệ thống tập tin đang mount: ext2, ext3,…
-a : mount tất cả hệ thống tập tin khai báo trong /etc/fstab -oremount <fs> : chỉ định việc mount lại 1 filesystem nào đó
Ví dụ: Mount thiết bị ngoại vi
- Gắn kết cdrom: #mount /dev/cdrom /mnt/cdrom
- Gắn kết một hệ thống tập tin: #mount /dev/hda6 /mnt/source
- Remount filesystem: #mount –o remount /home
Mount tự động
Tập tin /etc/fstab liệt kê các hệ thống cần được mount tự động Mỗi dòng một hệ thống tập tin tương ứng với một gắn kết Các cột trong mỗi dòng phân cách nhau bằng khoảng trắng hoặc khoảng tab
Trang 2824
Hình 1.28: Tập tin /etc/fstab
− Cột 1: chỉ ra thiết bị hoặc hệ thống tập tin cần mount
− Cột 2: xác định mount point cho hệ thống tập tin Đối với các hệ thống tập tin đặc biệt như swap, chúng ta dùng chữ node, có tác dụng làm cho tập tin swap hoạt động như nhìn vào cây thư mục không thấy
− Cột 3: chỉ ra loại filesystem như: vfat, ext2, ext3,…
− Cột 4: các tùy chọn phân cách nhau bởi dấu phẩy
− Cột 5: xác định thời gian để lệnh dump sao chép hệ thống tập tin Nếu trường này trống, dump sẽ giả định rằng hệ thống tập tin này không cần backup
− Cột 6: khai báo lệnh fsck biết thứ tự kiểm tra các file hệ thống tập tin khi khởi động hệ thống Hệ thống tập tin gốc (/) phải có giá trị 1 Tất cả hệ thống tập tin khác phải có giá trị 2 Nếu không khai báo, khi khởi động máy sẽ không kiểm tra tính thống nhất của tập tin
- #umount <thiết bị><điểm mount>: loại bỏ cụ thể một filesystem
- #umount -a: loại bỏ tất cả các filesystem đang mount
àLưu ý: lệnh umount không loại khỏi những hệ thống tin đang trong trạng
- #mkfs ext2 :định dạng partition theo loại ext2
- #mkfs ext3 :định dạng partition theo loại ext3
Trang 291.3.2.3 Quản lý dung lượng đĩa
Để quản lý và theo dõi dung lượng đĩa ta có thể sử dụng các cách khác nhau, thông thường ta dùng hai lệnh df và fdisk
• Cú pháp:
#df <option>hoặc #fdisk <option><parameters>
• Ví dụ: ví dụ về lệnh df
Hình 1.29: ví dụ lệnh df
1.3.2.4 Kiểm tra filesystem với fsck
Quản trị hệ thống chịu trách nhiệm duy trì tính nhất quán của các hệ thống tập tin Công việc thường làm là thỉnh thoảng kiểm tra xem có tập tin nào hỏng không Linux sẽ tự động kiểm tra hệ thống tập tin lúc khởi động nếu chúng có giá trị lớn hơn 0 và được xác định trong trường pass number của tập tin /etc/fstab
-V Chế độ chi tiết Cho biết lệnh fsck đang làm gì
Trang 3026
-t loại –fs Xác định loại hệ thốgn tập tin đang cần kiểm tra
-a Tự động sửa chữa hệ thống tập tin mà không cần hỏi
-l Liệt kê tất cả các tên tâp tin trong hệ thống tập tin
-r Hỏi trước khi sửa chửa hệ thống tập tin
-s Liệt kê các superblock trước khi kiểm tra hệ thống tập tin
1.3.3 Lưu trữ tập tin và thư mục
Lệnh gzip và gunzip
Gzip dùng để nén tập tin, còn guzip dùng để giải nén các tập tin đã nén
§ Cú pháp:
$gzip [tùy chọn]<tên tập tin>
$gunzip [tùy chọn]<tên tập tin>
Gzip tạo tập tin nén với phần mở rộng.gz
§ Các tùy chọn dùng cho gunzip và gzip:
-c : Chuyển các thông tin ra màn hình -d : Giải nén, gzip –d tương đương gunzip -h :Hiển thị giúp đỡ
Tập tin nguồn|thư mục nguồn: những tập tin hoặc thư mục cần gom
§ Ví dụ:Ví dụ gom nhóm 2 tập tin passwd và group thành tập tin backup #tar -cvf /home/backup tar /etc/passwd /etc/group
#tar -xvf /home/backup tar
1.4 Các chế độ hoạt động
1.4.1 Các msức thực thi (Runlevels)
Trang 3127
Không giống với các hệđiều hành non-UNIX chỉ có hai chếđộ cơ bản (on và off) Các hệđiều hành UNIX, bao gồm cả Linux có nhiều mức thực thi khác nhau ví dụ như mức “duy trì” (maitainance) hoặc mức “đa người dùng” (multi-user), Các mức thực thi được đánh số từ 0 đến 6
Danh sách các mức thực thi Linux
Runlevel 0 tắt máy an toàn, Runlevel 6 khởi động lại máy an toàn
Runlevel 1 là chếđộđơn người dùng
Runlevel 2 là chếđộđa người dùng, nhưng không khởi động NFS
Runlevel 3 là chếđộđa người dùng đầy đủ
Runlevel 4 không được định nghĩa và thường không sử dụng
Runlevel 5 giống với runlevel 3 nhưng chạy trình Quản lý hiển thịđồ họa
Cảinit và telinitđểđược dùng để chuyển đổi từ một chếđộ thực thi này sang chếđộ thực thi khác Nên nhớ rằng, init là chương trình khởi tạo đầu tiên được thực hiện sau khi nhân hệđiều hành được khởi tạo tại thời điểm khởi động PID đối với init
luôn luôn bằng 1
Danh sách PID đối với init luôn bằng 1
[root@nasaspc /proc]# ps uax |grep init
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 1368 592 ? S 20:17 0:04 init [3]
Tại mỗi mức thực thi, hệ thống sẽ dừng hoặc khởi động một tập các dịch vụ nhất
định Các file quản lý những dịch vụ này được lưu giữ trong /etc/rc/d/init.d Thư mục
này chứa gần như tất cả các file quản lý dịch vụ mà hệ thống có thể chạy Các dịch vụ
khi chạy có thểđược gọi là daemon (dịch vụ nền)
Danh sách các dịch vụ chính trong /etc/rc.d/init.d/
ls /etc/rc.d/init.d/
arpwatch functions ipchains keytable ldap netfs pcmcia rhnsd squid
Trang 3228
Chú ý: Cũng có thể dừng hoặc khởi động bằng tay các dịch vụ daemon trong /etc/rc.d/init.d bằng cách đưa ra các tham số tương ứng Ví dụ, nếu muốn khởi động lại dịch vụ web mặc định, gõ:
Khi làm việc với các mức thực thi, sẽ cung cấp một tập các chương trình được đinh nghĩa trước nhất định để dừng chạy Nếu muốn ở mức thực thi 2 (runlevel 2), gõ:
Đến lượt nó sẽ bắt initđọc file cấu hình /etc/inittabđể tìm ra điều gì sẽ xảy ra ở
mức thực thi này
Trong trường hợp này (giả sử chúng ta đang chuyển đổi sang mức thực thi 2) các
dòng sau trong file inittab sẽđược thực hiện:
Nhưđã đề cập trên, xem file /etc/inittab
File sẽ có cấu trúc như sau:
id : runlevel : action : command
Trang 33Trường id có thể là bất kỳ Nếu một mức thực thiđược xác định thì câu lệnh và
hành độngđược yêu cầu sẽ chỉđược thực hiện ở mức thực thi này mà thôi Nếu không
có số nào được xác định thì các dòng lệnh sẽđược thực hiện ở bất cứ mức thực thi nào
File /etc/inittab:
Mức thực thi mặc định: mức này được thiết lập tại điểm bắt đầu của file với id
và công việc initdefault Chú ý, không có lệnh nào được đưa ra Câu lệnh này đơn giản chỉ cho init biết mức thực thi mặc định là gì
Chương trình đầu tiên được gọi bởi init: /etc/rc.d/rc.sysinit Script này sẽ thiết
lập các mặc đinh của hệ thống như tham số PATH, xác định nếu mạng được cho phép, tên máy chủ,
Trang 3430
Các dịch vụ mức thực thi mặc định: Nếu mức thực thi mặc định là 3 thì chỉ có
dòng “l3” sẽđược thực hiện Công việc (action) sẽ là “chờ”, không có chương trình nào được thực thi cho đến khi tất cả các dịch vụ trong mức thực thi 3 được chạy
Getty terminals: các dòng lệnh với id từ 1đến 6 thực thi các thiết bịảo (virtual
terminal) Đây là nơi có thể thay đổi số lượng các thiết bịảo
Mức thực thi 5: Dòng cuối cùng trong inittab thực thi trình quản lý Xwindow
nếu mức thực thi 5 được gán
1.4.3 GRUB – GRand Unified Bootloader
Là chương trình mồi thế hệ mới với nhiều tính năng mạnh, GRUB hiện nay đã là tùy chọn mặc định trong nhiều bản phân phối Linux
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition This means that
# all kernel and initrd paths are relative to /boot/, eg
Trang 3531
(hd0,0) kernel /vmlinuz-2.6.15-1.1833_FC4smp ro root=/dev/VolGroup01/LogVol00 initrd /initrd-2.6.15- 1.1833_FC4smp.img title Fedora Core (2.6.11-1.1369_FC4smp) root (hd0,0) kernel /vmlinuz-2.6.11-1.1369_FC4smp ro root=/dev/VolGroup01/LogVol00 initrd /initrd-2.6.11- 1.1369_FC4smp.img title Fedora Core-up (2.6.11-1.1369_FC4)
root (hd0,0) kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/VolGroup01/LogVol00 initrd /initrd-2.6.11-1.1369_FC4.img
Với GRUB, việc cập nhật các tham số khởi động không quá phức tạp như LILO
Chỉ cần sửa lại file /boot/grub/grub.conf và chép các file cần thiết vào /boot là
lập tức có hiệu quả trong lần khởi động sau File cấu hình của GRUB cũng có nhiều lựa chọn hơn, cho phép người dùng có thể sử dụng nhiều kịch bản khởi động khác nhau
Cũng như LILO, GRUB cho phép lựa chọn nhiều kịch bản khi khởi động, cũng như cho phép người dùng chỉnh sửa các tham số khởi động ngay trước khi khởi động
Có thể sử dụng mật khẩu ngăn chặn việc này thông qua khai báo password trong file cấu hình Lệnh grub-md5-crypt cung cấp hàm mã hóa md5 cho phép che dấu mật
khẩu khi sử dụng
Các khai báo khác có thể tham khảo chi tiết thông qua lệnh info grub
Trong quá trình khởi động, tất cả các thông báo nhân hệ thống được mặc định ghi
lại trong /var/log/dmesg File này có thểđọc và in ra stdout với tiện ích /bin/dmesg
1.4.4 Khởi động đến bash
Bây giờ chúng ta sẽ xem xét các bước trong quá trình khởi động hệ thống Linux Ramdisk được khởi tạo và nạp vào bộ nhớ thật để tải các module cần thiết Nhân hệ thống được tải từđĩa cứng (hoặc CD…) xác định trong cấu hình của GRUB Trong quá trình tải này thì nhân sẽđược giải nén
Nhân hệ thống sẽ gắn (mount) phân vùng root (/) theo dạng chỉđọc
Lúc này các chương trình cần thiết trong /bin và /sbinđã sẵn sàng được truy cập Sau đó nhân hệ thống sẽ tải init - tiến trình đầu tiên
init sẽđọc file /etc/inittab và thực hiện theo các nội dung của nó Cụ thể là rc.sysinitđược chạy
Sau đó, tất cả các khai báo trong /etc/fstab được ánh xạ (mount) và kiểm tra (fsck)
Trang 3733
Chương 2: Dịch vụ Telnet, SSH
2.1 Dịch vụ Telnet, cài đặt và cấu hình
Vì một lý do nào đó người dùng không thể ngồi trực tiếp trên máy Linux làm việc mà phải ngồi ở các vị trí khác nhau, dịch vụ telnet hỗ trợ cho người dùng trong vấn đề làm việc từ xa Nhưng để đảm bảo tính bảo mật cho hệ thống, một điều cảnh báo là chúng ta không nên làm việc từ xa bằng telnet mà nên làm việc trực tiếptại máy Linux
2.1.1 Cài đặt
Thông thường khi cài đặt Linux, dịch vụ telnet đã được cài sẵn Nếu chưa càicó thể cài telnet server từ package bằng dòng lệnh sau:rpm –i telnet-server-0.17-20.i386.rpm
2.1.2 Cấu hình
Cách 1: Dựa vào tập tin cấu hình Khi cài đặt xong trong thư mục /etc/xinetd.d sẽ xuất hiện tập tin telnet Tập tin này lưu những thông tin cấu hình về dịch vụ telnet service telnet
# service xinetd start
# service xinetd stop
# service xinetd restart
Cách 2: Cấu hình telnet Server bằng dòng lệnh
Dùng lệnh chkconfig để active telnet:
Trang 3834
# chkconfig telnet on
Kiểm tra telnet thông qua lệnh:
#netstat -a|grep telnet
tcp 0 0 *:telnet *:* LISTEN Kiểm tra telnet có được đặt như dịch vụ hệ thống:
# chkconfig list | grep telnet
telnet: on
tạm ngưng hoạt động telnet server dùng lệnh
# chkconfig telnet off
2.1.3 Bảo mật dịch vụ Telnet
2.1.3.1 Cho phép telnet server hoạt động trên tcp port khác
Như ta đã biết telnet traffic không được mã hóa do đó nếu ta cho telnet server hoạt động trên tcp port 23 thì không được an toàn vì thế ta có thể đặt telnet server hoạt động trên tcp port khác 23 để làm điều này ta thực hiện các bước sau:
- Bước 1 Mở tập tin /etc/services và thêm dòng
flags = REUSE socket_type = stream wait = no
user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no
port = 7777 }
- Bước 4 Kích hoạt stelnet thông qua lệnh chkconfig
# chkconfig stelnet on
- Bước 5 Kiểm tra hoạt động stelnet thông qua lệnh netstat
# netstat -an | grep 777 tcp 0 0 0.0.0.0:7777 0.0.0.0:* LISTEN
Ta có thể logon vào stelnet server thông qua lệnh:
Trang 3935
# telnet 192.168.1.100 7777
2.1.3.2 Cho phép một số địa chỉ truy xuất telnet
Ta hiệu chỉnh thông số only_from để cho phép một số host hoặc network truy xuất vào TELNET Server
2.2.1 Cài đặt
Cài đặt SSH Server ta dùng lệnh:
rpm –ivh openssh-server.version.rpm
Tập tin cấu hình /etc/ssh/sshd_config và /etc/ssh/ssh_config
Khởi tạo SSH server dùng cú pháp:
/etc/init.d/sshd start/stop/restart
2.2.2 Sử dụng
2.2.2.1 Sử dụng SSH client trên Linux
Trên client(Linux hoặc Unix) dùng lệnh ssh để login vào server Cú pháp:
$ssh [tùy_chọn] [tên/IP_máy] [tùy_chọn] [lệnh]
Ví dụ: $ssh –l root 10.8.1.1
2.2.2.2 Quản trị hệ thống Linux qua SSH Client
SSH client for Windows được thiết kế để cho phép người dùng có thể sử dụng/quản trị Unix/Linux từ hệ điều hành Windows Ta có thể download phần mềm
này từ site: http://www.ssh.com/support/downloads/ Phần mềm này hỗ trợ cho người
Trang 4036 dùng có thể làm việc từ xa, cung cấp dịch vụsftp Màn hình “SSH Client for Windows”