Tài Liệu: Quản Trị Mạng Linux

Mục tiêu:

  • Cài đặt và sử dụng LINUX (RedHat), thao tác tập tin, thư mục, quản lý người dùng, cấp quyền hạn sử dụng tài nguyên, soạn thảo văn bản, chia sẻ tài nguyên thông qua Samba, đặt hạn ngạch sử dụng tài nguyên đĩa cứng.
  • Cấu hình các dịch vụ mạng trên hệ thống Linux như: DNS, FTP, WEB, MAIL, PROXY.
  • Thiết lập cơ chế bảo mật hệ thống Linux thông qua các công cụ như: iptables, tcp_wrappers,…
  • Tổ chức hệ thống cho phép người dùng có thể làm việc từ xa qua Web, SSH, Telnet, SFTP sử dụng các công cụ như: Webmin, Usermin, OpenSSH, Telnet.

Bài 1: Giới thiệu về hệ điều hành Linux

Mục tiêu: Bài học này giới thiệu sơ lược về lịch sử phát triển, kiến trúc của Linux, ưu và nhược điểm của Linux so với các hệ điều hành khác.

I. Vài dòng lịch sử:

  • Giữa năm 1960, AT&T Bell Laboratories và một số trung tâm khác cố gắng tạo ra hệ đều hành mới được đặt tên là Multics (Multiplexed Information and Computing Service). Đến năm 1969, chương trình Multics bị bãi bỏ vì dự án quá tham vọng và không khả thi.
  • Năm 1973, sử dụng ngôn ngữ C của Richie. Thompson đã viết lại toàn bộ HĐH Unix. Do đó, Unix từ chỗ là một HĐH cho máy PDP-xx trở thành HĐH của các máy khác với cố gắng tối thiểu để chuyển đổi.
  • Hai dòng UNIX: System V của AT&T, Novell và Berkeley Software Distributiong (BSD) của Đại học Berkeley.

II. Lịch sử phát triển Linux

  • Năm 1991, Linus Torvalds, sinh viên của ĐH Tổng hợp Helsinki Phần Lan bắt đầu xem xet Minix, một phiên bản của Unix là ra với mục đích nghiên cứu cách tạo ra một HĐH Unix chạy trên máy PC với bộ vi xử lý Intel 80386.
  • Ngày 25/8/1991, Linus cho ra version 0.01 và thông báo trên comp.os.minix về dự định của mình về Linux.
  • 1/1992, Linus cho ra version 0.02 với shell và trình biên dịch C. Linux không cần Minix nữa để biên dịch lại HĐH của mình. Linus đặt tên HĐH của mình là Linux.
  • 1994, phiên bản chính thức 1.0 được phát hành.
  • Linux là một HĐH dạng Unix chạy trên máy PC. Linux được viết lại toàn bộ từ con số 0, tức là không sử dụng một dòng lệnh nào của Unix để tránh vấn đề bản quyền của Unix. Tuy nhiên hoạt động của Linux hoàn toàn dựa trên nguyên tắc của HĐH Unix. Nắm được Linux sẽ nắm được Unix.
  • Linux là HĐH miễn phí và có hiệu năng cao, phát triển trên Internet, tựa Unix và được sử dụng trên máy tính cá nhân (PCs).
  • Quá trình phát triển của Linux được tăng tốc bởi sự giúp đỡ của chương trình GNU (GNU’s Not Unix).

III. Ưu điểm của Linux

  • Linux là HĐH miễn phí được sử dụng rộng rãi nhất. Là HĐH đa nhiệm (multitasking), đa người dùng (multiuser) lập sẵn.
  • Linux có sẵn giao thức TCP/IP giúp bạn dễ dàng kết nối Internet, có sẵn Xfree86 cũng cấp giao diện đồ họa GUI.
  • 1 Khả năng tương thích với các hệ mở.
  • 2 Hỗ trợ ứng dụng đa dạng của nhiều nhà phát triển.
  • 3 Lợi ích cho giới chuyên nghiệp điện toán với các công cụ biên dịch như C, C++,..

IV. Khuyết điểm của Linux

  • 1 Thiếu hỗ trợ kỹ thuật từ một công ty chịu trách nhiệm.
  • 2 Không đảm bảo cho tất cả các phần cứng của mọi người dùng trên Internet.

V. Kiến trúc của HĐH Linux

V.1 Hạt nhân (Kernel)

  • Là trung tâm điều khiển của HĐH Linux, chứa các mã nguồn điều khiển hoạt động của toàn bộ hệ thống. Thường có 2 phiên bản, 1 đang phát triển và 1 bản ổn định mới nhất. HĐH sử dụng không gian đĩa hoán đổi (swap space) để lưu trữ dữ liệu xử lý của chương trình. Bên cạnh Linux còn hỗ trợ các tính năng sau:
  • Bảo vệ vùng nhớ giữa các tiến trình, điều này không cho phép một tiến trình làm tắt toàn bộ hệ thống.
  • Chỉ tải các chương trình khi có yêu cầu.

V.2 Shell

  • Shell cung cấp tập lệnh cho người dùng thao tác với kernel để thực hiện công việc.
  • Có nhiều loại Shell được dùng trong Linux. Ví dụ C shell sử dụng các lệnh tương tự ngôn ngữ C, Bourne Shell thì dùng ngôn ngữ khác.
  • Shell sử dụng chính trong Linux là GNU Bourne Again Shell (bash). Shell này là shell phát triển từ Bourne Shell, là shell sử dụng chính trong các hệ thống Unix, với tính năng như: điều khiển các tiến trình, các lệnh history, tên tập tin dài,…

V.3 Các tiện ích

Hầu hết các tiện ích trong Linux là sản phẩm của GNU. Một số tiện ích được xem là chuẩn trong hệ thống Linux như passwd, ls, ps, vi,…

V.4 Chương trình ứng dụng

Là các chương trình có độ phức tạp lớn và được các nhà sản xuất viết ra.

VI. Các đặc tính cơ bản của Linux

Linux cung cấp môi trường phát triển một cách đầy đủ bao gồm thư viện chuẩn, các công cụ lập trình, trình biên dịch, debug,..

VI.1 Đa tiến trình

Là đặc tính cho phép người dùng thực hiện nhiều tiến trình đồng thời. Tuy nhiên thực chất tại một thời điểm CPU chỉ xử lý một lệnh, và thực hiện xen kẽ và chuyển đổi trong thời gian nhanh nên có cảm giác thực hiện đồng thời.

VI.2 Tốc độ cao

HĐH Linux được biết đến như một HĐH có tốc độ xử lý cao, do thao tác rất hiệu quả đến tài nguyên như bộ nhớ, đĩa,…

VI.3 Bộ nhớ ảo

Khi sử dụng quá nhiều chương trình lớn dẫn đến không đủ bộ nhớ chính, Linux sẽ dùng bộ nhớ từ đĩa là partition swap. Hệ thống sẽ đưa các chương trình và dữ liệu nào chưa có yêu cầu truy xuất xuống vùng swap này.

VI.4 Sử dụng chung thư viện

Linux có nhiều thư viện dùng chung cho nhiều ứng dụng giúp tiết kiệm tài nguyên và thời gian xử lý.

VI.5 Sử dụng các chương trình xử lý văn bản

Chương trình xử lý văn bản rất cần thiết cho người dùng, Linux cung cấp nhiều chương trình cho phép người dùng thao tác với văn bản như vi, emacs, nroff,…

VI.6 Sử dụng gia diện cửa sổ

Giao diện cửa sổ dùng Hệ thống X Window gọi tắt là X được phát triển bởi MIT, tạo ra môi trường làm việc không phụ thuộc phần cứng. X chạy dưới dạng client-server. Hệ thống X Window hoạt động qua 2 bộ phận:

  • Phần server còn gọi là X server
  • Phần client được gọi là X window manager hay desktop environment.

X server phổ biến trên các bản phân phối Linux là Xfree86. Client thường sử dụng KDE (K Desktop Environment) và GNOME (GNU Network Object Model Environment).

Samba xuất phát từ giao thức Server Message Block (SMB) mà Windows sử dụng và chia sẻ tập tin và máy in, samba sử dụng giao thức SMB chạy trên Linux. Sử dụng samba bạn có thể chia sẻ tập tin và máy in với các máy Windows.

VI.7. Network Information Service (NIS)

NIS cho phép chia sẻ tập tin password và group trên mạng. Là hệ thống cơ sở dữ liệu dạng client-server dùng để chứng thực người dùng. NIS xuất phát từ Sun Microsystems với tên là Yellow Pages.

VI.8. Lập lịch hoạt động chương trình, ứng dụng

Chương trình lập lịch trong Linux xác định các ứng dụng, script thực thi theo sự sắp xếp của người dùng như: at, cron, batch.

VI.9. Các tiện ích sao lưu dữ liệu

Linux cung cấp các tiện ích như tar, cpio và dd để sao lưu và backup dữ liệu.

VI.10. Hỗ trợ nhiều ngôn ngữ lập trình

Linux cung cấp một môi trường lập trình Unix đầy đủ bao gồm thư viện chuẩn, công cụ lập trình, trình biên dịch, debug. Ngôn ngữ sử dụng trong các HĐH Unix là C và C++. Linux dùng trình biên dịch cho C và C++ là gcc, chương trình này rất mạnh hỗ trợ nhiều tính năng. Ngoài C còn có Pascal, Fortran, Java,…


Bài 2: Cài đặt HĐH Linux

Mục tiêu: Giới thiệu cho học viên cách cài đặt hệ điều hành Linux, cài đặt các thiết bị, tìm hiểu nguyên lý hoạt động, chương trình khởi động hệ điều hành Linux.

I. Yêu cầu phần cứng

Linux không đòi hỏi máy có cấu hình mạnh. Tuy nhiên nếu phần cứng có cấu hình thấp quá thì có thể không chạy được XWindow hay các ứng dụng có sẵn.

II. Đĩa cứng và phân vùng đĩa trong Linux

Đĩa cứng được phân ra nhiều vùng khác nhau gọi là Partiton. Mỗi một partition sử dụng một hệ thống tập tin và lưu trữ dữ liệu. Mỗi đĩa chỉ được tối đa 4 partition chính (primary). Giới hạn do Master Boot Record của đĩa chỉ ghi tối đa 4 chỉ mục tới 4 partition.
Để tạo nhiều partition lưu trữ dữ liệu (hơn 4) ta dùng dùng partiton mở rộng (Extended partition).

III. Quản lý ổ đĩa và partition trong Linux

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 fb cho ổ mềm, hd cho ổ cứng, sd 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.

Ký tự mô tả đĩaPhysical block devices (Các thiết bị lưu trữ)
HdaPrimary Master
HdbPrimary Slave
HdcSecondary Master
HddSecondary Slave
SdaFirst SCSI disk
SdbSecond SCSI disk

Ví dụ: Ổ cứng thứ nhất hda, ổ cứng thứ hai hdb,… Xác định partition trong ổ đĩa dùng các số 1-4 cho primary partition. Logical partition giá trị từ 5 trở lên.

Trong Linux phải có tối thiểu 2 partition sau:

  • Partition chính chứa thư mục gốc (/) và hạt nhân (gọi là Linux Native partition).
  • Partition swap dùng làm không gian hoán đổi dữ liệu khi vùng nhớ chính được sử dụng hết. Kích thước tùy thuộc hệ thống mình sử dụng, thông thường kích thước vùng swap bằng kích thước bộ nhớ chính.

IV. Khởi động chương trình cài đặt

IV.1. Boot từ CD-ROM

IV.2. Boot từ đĩa khởi động Windows

IV.3. Boot từ đĩa mềm khởi động Linux

V. Các bước cài đặt hệ điều hành Linux

V.1. Chọn phương thức cài đặt

  • CD-Rom: Có thể khởi động từ CD-ROM hoặc khởi động bằng đĩa mềm boot.
  • Đĩa cứng: Cần sử dụng đĩa mềm boot(dùng lệnh dd hoặc mkbootdisk để tạo đĩa mềm boot).
  • NFS image: Sử dụng đĩa khởi động mạng. Kết nối tới NFS sever.
  • FTP: Sử dụng đĩa khởi động mạng. Cài trực tiếp qua kết nối FTP.
  • HTTP: Sử dụng đĩa khởi động mạng. Cài trực tiếp qua kết nối HTTP.

V.2. Chọn chế độ cài đặt

  • Linux text: Chương Hệ Điều Hành Linux đặt dưới chế độ text(Text mode).
  • [Enter] : Chương Hệ Điều Hành Linux đặt dưới chế độ đồ họa(Graphical mode)

V.3. Chọn ngôn ngữ hiển thị trong quá trình cài đặt

V.4. Cấu hình bàn phím

V.5. Chọn cấu hình mouse

V.6. Lựa chọn loại màn hình

V.7. Lựa chọn loại cài đặt

Một số loại cài đặt thông dụng:

  • Workstation: Cài đặt hệ điều hành phục vụ cho công việc của một máy trạm.
  • Server: Cài đặt hệ điều hành phục vụ cho máy chủ.
  • Custom:có thể tích hợp các tùy chọn trên một cách tùy ý.

V.8. Chia Partition

  • Automatically partition.: cho phép hệ thống tự động phân vùng ổ đĩa hợp lý để cài hệ điều hành(thông thường theo cách này thì hệ thống sẽ tạo ra hai phân vùng: /boot, /, swap)
  • Manually partition with Disk Druid: Chia partition bằng tiện ích Disk Druid. Đây là cách chia partition dưới dạng đồ họa dễ dùng.
  • Nếu ta là người mới học cách cài đặt thì nên lựa chọn Automatically partition.

V.9. Lựa chọn Automatically partition

  • Remove all Linux partitions on this system: khi ta muốn loại bỏ tất cả các Linux partition có sẳn trong hệ thống.
  • Remove all partitions on this system: khi ta muốn loại bỏ tất cả các partition có sẳn trong hệ thống.
  • Keep all partitions and use existing free space: khi ta muốn giữ lại tất cả các partition có sẳn và chỉ sử dụng không gian trống còn lại để phân chia phân vùng.
  • Tùy theo từng yêu cầu riêng mà ta có thể lựa chọn các yêu cầu trên cho phù hợp, sau đó chọn Next

V.10. Chia Partition bằng Disk Druid

Trong bước 8 ta chọn Manually partition with Disk Druid để thực hiện phân chia phân vùng sử dụng tiện ích Disk Druid.
Disk Druid hiển thị các partition của đĩa dưới chế độ đồ họa ở phía trên. Bạn có thể chọn từng partition để thao tác.
Chi tiết các partition gồm kích thước, loại hệ thống tập tin, thư mục được mount vào được mô tả trong hình sau:

  • New: Tạo một partition mới, chỉ định tên phân vùng(mount point), loại filesystem(ext3) và kích thước(size) tính bằng MByte(tùy chọn).
  • Edit: Thay đổi lại các tham số của phân vùng được chọn.
  • Delete: Xóa phân vùng được chọn.
  • Reset: Phục hồi lại trạng thái đĩa như trước khi thao thác.
  • Make RAID: Sử dụng với RAID (Redundant Array of Independent Disks) khi ta có ít nhất 3 đĩa cứng.

V.11. Cài đặt chương trình Boot Loader

Boot Loader là chương trình cho phép bạn chọn các hệ điều hành để khởi động qua menu. Khi chúng ta chọn, thì chúng xác định các tập tin cần thiết để khởi động hệ điều hành và giao quyền điều khiển lại cho hệ điều hành. Boot Loader có thể được cài vào Master Boot record hoặc vào sector đầu tiên của partition.

Linux cho phép bạn sử dụng chương trình Boot Loader là GRUB hoặc LILO. Cả 2 Boot Loader
đều có thể hỗ trợ quản lý nhiều hệ điều hành trên một hệ thống.

  • Bạn chọn cài Boot Loader vào Master Boot Record (MBR) khi chưa có chương trình Boot Loader nào (Ví dụ như của Windows) được cài, hoặc bạn chắc chắn chương boot loader của bạn có thể khởi động được các hệ điều hành khác trong máy của mình. Khi cài lên MBR thì các chương trình Boot Loader trước đó sẽ bị thay thế bằng Boot Loader mới.
  • Chọn cài Boot loader vào sector đầu tiên của partition cài đặt khi bạn đã có chương trình Boot Loader tại MBR và không muốn thay thế nó. Trong trường hợp này, chương trình Boot Loader kia nắm quyền điều khiển trước và trỏ đến chương trình Boot Loader của Linux khi có yêu cầu khởi động hệ điều hành này.
  • Bạn không cài chương trình Boot loader, khi đó bạn phải sử dụng đĩa mềm boot để khởi động hệ điều hành.
  • Ta có thể đặt mật khẩu cho boot loader thông qua nút Change password.

V.12. Cấu hình mạng

Configure using DHCP: Bạn có thể chọn cấu hình TCP/IP động qua dịch vụ DHCP hoặc cấu hình cụ thể. Khi cấu hình cụ thể, bạn phải nhập những thông số cấu hình mạng trong mục chọn edit:

  • IP Address: Chỉ định địa chỉ IP của host cài đặt.
  • Netmask Address: subnet mask cho địa chỉ IP trên.

Active on boot: Card mạng được kích hoạt khi hệ điều hành khởi động.
Host name: Nếu bạn có tên dns đầy đủ thì khai báo tên đầy đủ. Trong trường hợp bạn không kết nối vào mạng, bạn cũng đặt tên cho máy thông qua mục manually. Nếu không tên nào được điền vào thì giá trị mặc nhiên sử dụng là localhost

Miscellaneous Settings: để chỉ định địa chỉ gateway và Primary DNS, và một số thông số khác.
Các trường không có giá trị thì các trường đó không được sử dụng trong hệ thống.

V.13. Cấu hình Firewall
Trong Linux có tích hợp Firewall để bảo vệ hệ thống chống lại một số truy xuất bất hợp pháp từ bên ngoài. Ta chọn Enable Firewall, sau đó chọn loại dịch vụ cần cho phép bên ngoài truy cập vào Firewall.

V.14. Chọn ngôn ngữ hỗ trợ trong Linux

Bạn có thể cài đặt và sử dụng nhiều ngôn ngữ trong Linux. Có thể chọn ngôn ngữ mặc định(English(USA)) và các ngôn ngữ khác để sử dụng.

V.15. Cấu hình khu vực địa lý của hệ thống
Các vị trí chia theo châu lục. Ở Việt Nam là Asia/Saigon, ta có thể chọn mục này một cách dễ dàng thông qua việc định vị chuột tại đúng vị trí trên bảng đồ.

V.16. Đặt mật khẩu cho người quản trị

Trên Linux người quản trị thường được gọi là người root. Mật khẩu của user root bắt buộc có chiều dài tối thiểu của password là 6 ký tự. Bạn nên đặt password gồm có ký tự, số và các ký tự đặc biệt để đảm bảo an toàn. Lưu ý password phân biệt chữ hoa và thường. Bạn phải đánh vào 2 lần, khi dòng chữ bên dưới xuất hiện “ Root password accepted” thì được.

V.17. Cấu hình chứng thực

Nếu bạn không sử dụng password mạng có thể bỏ qua cấu hình này nhưng vẫn sử chế độ chọn mặc nhiên (chọn Enable MD5 passwords và Enable shadow passwords)
Enable MD5 passwords: cho phép password sử dụng tới 256 ký tự thay vì chỉ tới 8 ký tự

Enable shadow passwords: cung cấp cơ chế lưu trữ password an toàn. Password được lưu trữ trong tập tin /etc/shadow và chỉ có root mới được đọc.
Enable NIS: cho phép một nhóm máy trong một NIS domain sử dụng chung tập tin passwd và group. Chọn các tham số sau :

  • NIS domain: Xác định NIS domain mà máy này tham gia
  • Use broadcast to find NIS server: Cho phép sử dụng thông điệp quảng bá để tìm NIS server.
  • NIS Server : Xác định NIS server.
  • Enable LDAP: Hệ thống của bạn sử dụng LDAP cho một vài hoặc tất cả các phép chứng thực.
  • LDAP Server : Xác định LDAP server (dùng địa chỉ IP)
  • LDAP Base DN: cho phép tìm kiếm thông tin người dùng dựa trên DN(Distinguished Name)
  • Use TLS (Transport Layer Security) lookups: tùy chọn này cho phép LDAP gởi tên người dùng và password mã hóa tới LDAP server trước khi chứng thực.

Enable Kerberos: là hệ thống cung cấp các dịch vụ chứng thực trên mạng. Các lựa chọn :

  • Realm: cho phép bạn truy xuất tới mạng sử dụng Kerberos.
  • KDC: cho phép bạn truy xuất tới Key Distribution Center (KDC).
  • Admin Server: cho phép bạn truy xuất tới server chạy kadmin
  • Enable SMB Authentication: Cài PAM để dùng một Samba server chứng thực cho các client.
  • SMB Server: Xác định samba server mà các máy trạm kết nối tới để chứng thực.
  • SMB Workgroup: Xác định workgroup mà samba server được cấu hình tham gia.

V.18. Chọn các chương trình và Package cài đặt

Bạn chọn các chương trình cần cài đặt, nếu ta chọn everything là cài tất cả các chương trình, chọn Minimal là chỉ cài một số chương trình hoặc phần mềm thông dụng.
Nếu bạn nắm rõ các package cần thiết cho các chương trình mình mong muốn thì chọn Select individual packages. Ta có thể chọn Details để chọn chi tiết các thành phần trong từng phần mềm hoặc nhóm các công cụ.

V.19. Định dạng filesystem và tiến hành cài đặt

V. Cấu hình thiết bị

V.1. RAM

Linux có thể nhận biết tất cả các loại RAM

V.2. Vị trí lưu trữ tài nguyên

Để cho phép thiết bị phần cứng trong máy tính có thể giao tiếp trực tiếp với tài nguyên hệ thống đặt biệt là CPU thì hệ thống sẽ định vị dưới dạng lines và channels cho mỗi thiết bị như: IRQ(Interrupt Request Lines), Input/Output Address và Direct Memory Access channels (DMA).

  • IRQ cho phép thiết bị yêu cầu CPU time, IRQ có giá trị 0->15.
  • IO Address chỉ đinh địa chỉ trong bộ nhớ, CPU sẽ giao tiếp với các thiết bị bằng cách đọc và ghi bộ nhớ trên địa chỉ này.
  • DMA cho phép thiết bị truy xuất bộ nhớ hệ thống như ghi và xử lý dữ liệu mà không cần truy xuất CPU.

Kernel lưu trữ thông tin tài nguyên này trong thư mục /proc, các tập tin ta cần quan tâm:

/proc/dma
/proc/interrupt
/proc/ioports
/proc/pci

Tuy nhiên có thể sử dụng các công cụ lspci, dmesg để xem thông tin IRQ, I/O, DMA…
Ta có thể cấu hình các thông tin trên bằng cách thay đổi thông tin trong tập tin /etc/modules.conf

V.3. Hỗ trợ USB

Hầu hết Linux có khả năng nhận biết USB. Thiết bị USB được Linux kernel nhận biết qua tập tin /dev/sda1

V.4 Network Card

Kernel của Linux hỗ trợ hầu hết các NIC, để xem thông tin card mạng dùng lệnh sau đây: dmesg, lspci, /proc/interrupts, /sbin/lsmod, /etc/modules.conf

V.5 Cài đặt modem

Các serial port được nhận biết trên Linux

DosLinux
COM1/dev/ttyS0
COM2/dev/ttys1
COM3/dev/ttyS2

Một số bước cài đặt serial modem:
B1. Dùng lệnh setserial để scan serial device.
B2. Dùng lệnh ls -s /dev/ttyS1 /dev/modem
B3. Cấu hình Dial profile thông qua công cụ wvdial cung cấp script wvdialconfig để ta scan những thông tin cần thiết cho modem và ghi vào file /etc/wvdial.conf.

VI. Sử dụng hệ thống

VI.1 Đăng nhập

Linux là HĐH đa người dùng, tại một thời điểm nhiều người có thể sử dụng hệ thống để làm việc. Để sử dụng hệ thống bạn phải đăng nhập bằng user và password.
Có 2 dạng dấu nhắc lệnh:

  • Dạng $ dùng cho người dùng thông thường.
  • Dạng # dùng cho người dùng quản trị (root).

Khi login vào dấu nhắc lệnh xuất hiện có dạng
[tên-đăng-nhập@tên-máy thư-mục-hiện-hành]dấu nhắc lệnh
ví dụ: root@server /var/www#
Cú pháp lệnh: Tên-lệnh [tùy-chọn][tham-số]

  • tùy-chọn có dạng: –
  • Nếu có nhiều tùy chọn thì ta dùng dấu khoảng trắng để làm dấu ngăn cách hoặc kết hợp nhiều tùy chọn.

Ví dụ: root@server /var/www#ls -a -l /etc hoặc root@server /var/www#ls -al /etc
Chuyển sang user khác mà không cầu logout ra. Ta dùng lệnh su.
$su [tên-user] nếu không có tên-user thì mặc định là root.
Khi chuyển sang user khác thì biến môi trường vẫn giữ theo user cũ. Để sử dụng biến môi trường mới ta dùng tham số – trong lệnh su.
Ví dụ: #su -[user]

VI.2 Một số lệnh cơ bản

Tên lệnhÝ nghĩa
dateHiển thị ngày giờ hệ thống
whoCho biết các người dùng đang đăng nhập vào hệ thống
ttyXác định tập tin tty mà mình đang login vào.
calLịch
fingerHiển thị các thông tin người dùng như họ tên, địa chỉ,…
chfnThay đổi thông tin của người dùng
headXem nội dung tập tin từ đầu tập tin
tailXem nội dung từ cuối tập tin
hostnameXem, đổi tên máy tính
passwdĐổi mật khẩu cho user

VI.3 Sử dụng trợ giúp man

$man [từ-khóa]
Ví dụ $man ls
Tìm kiếm các thông tin về lệnh ls
man phân dữ liệu thành những đoạn (session) khác nhau với các chủ đề khác nhau là

SessionTên chủ đềÝ nghĩa
1User commandCác lệnh thông thường của hệ điều hành
2System callCác thư viện kernel của hệ thống
3SubroutinesCác hàm thư viện lập trình
4DeviceCác hàm truy xuất tập tin và xử lý thiết bị
5File formatCác hàm định dạng tập tin
6GamesCác hàm liên quan đến trò chơi
7MiscellCác hàm khác
8Sys. adminCác hàm quản trị hệ thống

$man [session] [từ-khóa]
nếu không dùng session thì mặc định là 1.

VII. Khởi động hệ thống

  • B1. Khi máy tính bắt đầu khởi động, bộ vi xử lý sẽ tìm đến cuối vùng bộ nhớ hệ thống của BIOS và thực hiện các chỉ thị ở đó.
  • B2. BIOS sẽ kiểm tra hệ thống, tìm và kiểm tra các thiết bị, tìm kiếm đĩa chứa trình khởi động. Thứ tự việc kiểm tra ổ đĩa phụ thuộc vào cấu hình BIOS.
  • B3. Kiểm tra đĩa cứng BIOS sẽ tìm đến MBR và nạp vào vùng nhớ hoạt động chuyển quyền điều khiển cho nó.
  • B4. MBR chứ các chỉ dẫn cho biết cách nạp trình quản lý khởi động GRUB/LILO cho Linux hay NTLDR cho Windows NT/2000. MBR sau khi nạp trình quản lý khởi động, sẽ chuyển quyền điều khiển cho trình quản lý khởi động.
  • B5. Boot Loader tìm kiếm boot partition và đọc thông tin cấu hình trong file grub.conf hoặc lilo.conf và hiển thị Operating Systems kernel có sẵn trong hệ thống để chúng ta lựa chọn OS kernel boot.
  • B6. Sau khi chọn kernel boot trong file cấu hình của boot loader, hệ thống sẽ tự động load chương trình /sbin/init để kiểm tra hệ thống tập tin (file system check) sau đó độc file /etc/inittab để xác định mức hoạt động (runlevel). Các Linux runlevel
Mode/runlevelThư mục lưu script fileMô tả hoạt động
0/etc/rc.d/rc0.dLà mức shutdown hệ thống (halt)
1/etc/rc.d/rc1.dChỉ dành cho một người dùng, để sửa hệ thống tập tin. (single user mode)
2/etc/rc.d/rc2.dKhông sử dụng (user-definable)
3/etc/rc.d/rc3.dSử dụng cho nhiều người dùng nhưng chỉ giao tiếp dưới dạng text (Full multi-user mode no GUI interface)
4/etc/rc.d/rc4.d Không sử dụng (user-definable)
5/etc/rc.d/rc5.dSử dụng cho nhiều người dùng có thể cung cấp giao diện đồ họa. (Full multi-user mode)
6/etc/rc.d/rc6.dMức reboot hệ thống
  • B7. Sau khi xác định runlevel (thông qua biến initdefault), chương trình /sbin/init sẽ thực thi các file startup script được đặt trong các thư mục con của thư mục /etc/rc.d. Script sử dụng runlevel 0->6 để xác định thư mục chứa file script chỉ định cho từng runlevel như /etc/rc.d/rc0.d -> /etc/rc.d/rc6.d.
  • B8. Nếu như ở bước 4 runlevel 3 được lựa chọn thì hệ thống sẽ chạy chương trình login để yêu cầu đăng nhập cho từng user trước khi sử dụng hệ thống, nếu runlevel 5 được chọn lựa thì sẽ load X terminal GUI application để yêu cầu đăng nhập cho từng user.

VIII. Shutdown và Reboot hệ thống

Để shutdown hệ thống ta thực hiện một trong các bước sau:
[root@server root]# init 0
[root@server root]# shutdown -hy t (shutdown sau t phút)
[root@server root]# halt
[root@server root]# poweroff

Để reboot hệ thống ta có thể thực hiện một trong các cách sau:
[root@server root]# init 6
[root@server root]# reboot
[root@server root]# shutdown -ry 10 (reboot sau phút)

X. Sử dụng runlevel

Chuyển đổi runlevel: dùng lệnh #init runlevel_number

init 1

Dùng lệnh startx để chuyển sang runlevel 6 tương đương lệnh #init 5.
Đặt runlevel mặc định: dùng tiện ích mc để hiệu chỉnh thông số runlevel X(0->6)
id:X:initdefault:

XI. Khôi phục mật khẩu cho user quản trị

Để khôi phục mật khẩu root user có nhiều cách:

  • Dùng đĩa khởi động.
  • Dựa vào boot loader GRUB hoặc LILO (chỉ dùng được cách này khi có thể edit được boot loader khi khởi động, nếu không phải dùng cách trên.

Thực hiện cách 2 như sau:

  1. Khởi động máy.
  2. Khi GRUB screen hiển thị ta chọn phím e để edit boot loader (nếu có mật khẩu GRUB thì nhập vào).
  3. Chọn kernel/boot… Sau đó nhấn phím e để edit mục này và thêm từ khóa -s để vào runlevel 1 sau đó bấm enter.
  4. Bấm phím b để boot hệ thống vào runlevel 1 và thực hiện lệnh passwd để thay đổi mật khẩu của user root.
  5. Dùng lệnh init 6 để reboot lại hệ thống.

XII. Tìm hiểu về boot loader

A. GRUB boot loader

1.Tổng quan

GRUB là trình khởi động máy tính, nó có nhiệm vụ tải nhân và khởi động hệ thống Linux cũng như các hệ điều hành khác như FreeBSD, NetBSD, OpenBSD, GNU HURD, DOS, Windows,…
Năm 1995 Erich Boley thiết kế GRUB. Năm 1999, Gordon Matzigkeit và Yoshinori K. Okuji kế thừa GRUB thành gói phần mềm GNU chính thức.

  • GRUB hỗ trợ nhiều hệ điều hành bằng cách khởi động trực tiếp nhân HĐH hoặc bằng cách nạp chuỗi (chain-loading).
  • GRUB hỗ trợ nhiều hệ thống tập tin: BSD FFS, DOS FAT16, FAT32, Minix fs, Linux ext2fs và ext3fs, ReiserFS, JSF, XFS, và VSTa fs.
  • GRUB cung cấp giao diện dòng lệnh linh hoạt lẫn giao diện thực đơn, đồng thời cũng hộ trợ tập tin cấu hình.

2.Tập tin cấu hình

Đoạn thứ nhất mô tả chỉ thị tổng quát như:

  • HĐH mặc định (default)
  • Thời gian chờ người dùng trước khi thực hiện lệnh mặc định (timeout=10), tính bằng giây.
  • Ta cũng có thể chọn màu để hiển thị trình đơn (color green/black light-gray/blue)

Đoạn thứ hai: Cho biết các thông số để khởi động hệ Linux:

  • Tiêu đề trình đơn là Red Hat Linux (title)
  • HĐH này sẽ khởi động từ partition đầu tiên của đĩa thứ nhất – / (hda0,0). Và cần phải mount partition này trước.
  • Tập tin vmlinuz đang được chứa trong thư mục root và filesystem root đang nằm trên partition thứ 5 của đĩa cứng thứ nhất (/dev/hdc5
  • Dòng lệnh boot nhắc phải nạp ngay HĐH đã được khai báo ở trên.

Đoạn thứ ba: Cho biết thông số về HĐH thứ 2 đang được cài đặt trong hệ thống.

  • Tiêu đề là Windows
  • HĐH đang ở partition thứ nhất của ổ đĩa thứ hai (hda1,0). Có điều lệnh rootnoverify, GRUB không cần chú ý kiểm tra xem partition này có được mount hay không.
  • Câu lệnh chainloader + 1 đã sử dụng +1 làm tên tập tin cần khởi động như một mắc xích trong tiến trình: +1 có nghĩa là sector thứ nhất của partition đang xét.
  • Bạn có thể dùng lệnh man grub.conf để tìm hiểu thêm về tập tin cấu hình này.
  • Lưu ý: Từ GRUB muốn chuyển sang LILO thực hiện các bước sau:
  • Trong thư mục /etc có tập tin lilo.conf.anaconda. Từ tập tin này copy thành tập tin lilo.conf
  • Thực thi lệnh lilo

3.Bảo mật cho GRUB

Dùng tính năng mật khẩu của GRUB để chỉ cho phép người quản trị dùng các hoạt động tương tác (như biên tập đề mục thực đơn và giao diện dòng lệnh). Để sử dụng tính năng này cần chạy lệnh password trong tập tin cấu hình: password –md5 <PASSWORD>

Khi đó GRUB không cho phép điều khiển tương tác nào (<e> và <c>), cho đến khi gõ phím <p> và nhập đúng mật khẩu. Tùy chọn –md5 mật khẩu sẽ ở dụng MD5 nếu không GRUB sẽ hiểu rằng mật khẩu ở dạng văn bản thuần túy.

4.Khởi động GRUB từ ntldr

Cài GRUB lên sector khởi động của phân vùng (như /boot, ở /dev/hda2).
Chép sector khởi động đó lên đĩa mềm hoặc một hệ thống tập tin trên đĩa cứng, thí dụ cho đĩa mềm (sau khi mount /mnt/floppy):
dd if=/dev/hda2 of=/mnt/floppy/bootsect.lnx bs=512 cont=1
Tên của tập tin bootsect.lnx phải theo quy định 8.3 để ntldr có thể nhận diện được.
Khởi động lại Windows và chép tập tin bootsect.lnx vào thư mục gốc trên đĩa C:
Thay đổi thuộc tính chỉ-đọc và tập tin C:\boot.ini, nếu cần, bằng Windows Explorer hoặc bằng dòng lệnh (C:\attrib -s -r c:\boot.ini, và sau khi thực hiện xong C:\attrib +s +r c:\boot.ini). Mở tập tin boot.ini bằng một trình biên tập như Notepad, thêm dòng c:\bootsect.lnx=’Linux’ vào tập tin đó.

  • Cài GRUB lên sector khởi động của phân vùng (như /boot, ở /dev/hda2).
  • Chép sector khởi động đó lên đĩa mềm hoặc một hệ thống tập tin trên đĩa cứng, thí dụ cho đĩa mềm (sau khi mount /mnt/floppy):

dd if=/dev/hda2 of=/mnt/floppy/bootsect.lnx bs=512 cont=1

  • Tên của tập tin bootsect.lnx phải theo quy định 8.3 để ntldr có thể nhận diện được.
  • Khởi động lại Windows và chép tập tin bootsect.lnx vào thư mục gốc trên đĩa C:
  • Thay đổi thuộc tính chỉ-đọc và tập tin C:\boot.ini, nếu cần, bằng Windows Explorer hoặc bằng dòng lệnh (C:\attrib -s -r c:\boot.ini, và sau khi thực hiện xong C:\attrib +s +r c:\boot.ini). Mở tập tin boot.ini bằng một trình biên tập như Notepad, thêm dòng c:\bootsect.lnx=’Linux’ vào tập tin đó.

Mỗi khi thay đổi sector khởi động dùng để tạo bootsect.lnx, cần phải cập nhật bản mới nhất của tập tin này.

B. LILO boot loader

1.Thiết lập cấu hình LILO

LILO đọc thông tin chứa trong tập tin cấu hình /etc/lilo.conf để biết xem hệ thống có những HĐH nào, và các thông tin khởi động nằm ở đâu. LILO được lập cấu hình để khởi động một đoạn thông tin trong tập tin /etc/lilo.conf cho từng HĐH. Sau đây là một ví dụ về tập tin lilo.conf
Đoạn 1
Boot=/dev/hda
Map=/boot/map
Install=/boot/boot.b
Prompt
Timeout=50
Message=/boot/message
Lba32
Default=linux
Đoạn 2
Image=/boot/vmlinuz-2.4.0-0.43.6
Label=linux
Initrd=/boot/vmlinuz-2.4.0-0.43.6
Lebel=linux
Initrd=/boot/initrd-2.4.0-0.43.6.img
Read-only
Root=/dev/hda5
Đoạn 3
Other=/dev/hda1
Label=dos

Đoạn thứ nhất:

  • Cho biết LILO cần xem xét vào MBR (boot=/dev/hda1)
  • Kiểm tra tập tin map
  • Nó còn cho biết LILO có thể cài đặt một tập tin đặc biệt (/boot/boot.b) như là một sector khởi động mới.
  • Thời gian chờ trước khi nạp HĐH mặc định (default=xxx) timout=50 (5 giây).
  • Nạp thông tin trong quá trình khởi động từ tập tin /boot/message
  • Dòng LBA32 cho biết cấu hình của đĩa cứng: cho biết ổ cứng hỗ trợ LBA32, thông thường dòng này có giá trị là linear (để tìm hiểu ổ cứng có hỗ trợ LBA32 hay không bằng cách xem trong BIOS).

Đoạn thứ 2:

Cung cấp thông tin khởi động cho HĐH Linux
Dòng image báo cho LILO biết vị trí của kernel Linux
Dòng label có ở cả 2 đoạn cho biết tên của HĐH nào sẽ xuất hiện tại trình đơn khởi động của LILO.
Dòng root xác định vị trí root file system của Linux.

Đoạn thứ 3:

Dòng other cho biết partition của một HĐH nữa đang ở hda1 của ổ đĩa cứng.

Lưu ý: Từ LILO chuyển sang GRUB thực hiện cài đặt như sau:

#/sbin/grub-install [tên-ổ-đĩa] 

Ví dụ: #/sbin/grub-install /dev/hda1


Bài 3: Hệ thống tập tin

I. Cấu trúc hệ thống tập tin

  • Mỗi HĐH có cách tổ chức lưu trữ dữ liệu riêng. Ở mức vật lý địa được định dạng từ các thành phần sector, track, cylinder. Ở mức logic, mỗi 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 (file system).
  • Chẳng hạn như Windows sử dụng hệ thống tập tin FAT16, FAT32, WinNT sử dụng NTFS để tăng cường bảo mật hệ thống tập tin.
  • Hệ thống tập tin Linux bao gồm: đĩa mềm, CD-ROM, những partition của đĩa cứng. Những hệ thống tập tin thường được tạo trong quá trình cài đặt hệ điều hành. Nhưng bạn cũng có thể thay đổi cấu trúc hệ thống tập tin khi thêm thiết bị hay chỉnh sửa những partition đã tồn tại.
  • 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ự và kích thước tối đa là 4terabytes. MS-DOS dùng để truy cập trực tiếp những tập tin MS-DOS. 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ác thành phần của hệ thống tập tin:

+ Superblock

+ Inode

+ Storageblock

  • Super Block: là một cấu trúc được tạo tại vị trí bắt đầu hệ thống tập tin. Nó lưu trữ thông tin về hệ thống tập tin như: Thông tin về block-size, free block, thời gian gắn kết(mount) cuối cùng của tập tin.
  • Inode (256 byte): Lưu những thông tin về những tập tin và thư mục được tạo ra trong hệ thống tập tin. Nhưng chúng không lưu tên tập tin và thư mục thực sự. 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 truy cập tập tin

+ Người sở hữu tập tin.

+ Kích thước của tập tin và số hard link đến tập tin.

+ Ngày và thời gian chỉnh sửa tập tin lần cuối cùng.

+ Vị trí lưu nội dung tập tin trong hệ thống tập tin.

  • 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 Data Block. Dữ liệu lưu trữ vào đĩa trong các data block. Mỗi block thường chứa 1024 byte. Ngay khi tập tin chỉ có 1 ký tự thì cũng phải cấp phát 1 block để lưu nó. Không có ký tự kết thúc tập tin.

+ Data Block của tập tin thông 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 bao gồm inode number, tên của tập tin và những thư mục con.

I.1 Loại tập tin.

Trong linux tập tin dùng cho việc lưu trữ dữ liệu. Một tập tin dữ 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 như là một tập tin, các tập tin trong linux được chia ra làm 3 loại chính:

– Tập tin chứa dữ liệu bình thường

– Thư mục

– Tập tin thiết bị

Tập tin dữ liệu: Bạn có thể đưa 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 ra bởi người dùng.

Tập tin thư mục: Thư mục không chứa dữ liệu, mà chỉ chứa các 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.

Tập tin thiết bị :Hệ thống Unix và Linux xem các thiết bị như là các tập tin. Ra vào dữ liệu trên các tập tin này chính là ra vào dữ liệu cho thiết bị. Ví dụ khi chúng ta muốn chép dữ liệu ra ổ đĩa A: thì sẽ chép vào tập tin /dev/fd0 hoặc khi chúng ta thực hiện việc in thì dữ liệu vào máy in được đưa vào tập tin tương ứng cho máy in.

I.2 Liên kết tập tin.

Ví dụ, bạn có một tập tin /usr/lib/testfile và muốn có một tập tin giống như vậy trong thư mục /usr/tim, bạn không cần phải copy nó mà chỉ cần tạo một liên kết với lệnh sau:

#ln /usr/bill/testfile /usr/tim/testfile

Cú pháp của lệnh ln:

$ln <nguồn> <đích>

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.

Hard Link: là một liên kết trong cùng hệ thống tập tin với hai inode entry tương ứng trỏ đến cùng một nội dung vật lý (cùng inode number vì chúng trỏ đến cùng dữ liệu). Nếu bạn muốn thấy điều này, dùng lệnh sau:

$ ls -i testfile

14253 testfile

Sau đó tạo một liên kết có một tên khác và hiển thị thông tin của inode entry.

$ ln testfile test2

$ ls -i testfile test2

14253 testfile 14253 test2

Cả hai tập tin đều có inode number giống nhau

Symbolic Link: Là một liên kết khác mà không sử dụng inode entry cho việc liên kết. Bạn sử dụng liên kết này khi muốn tạo ra những driver thiết bị, như /dev/modem thay cho /dev/cua1. Tùy chọn –s của lệnh ln cho phép tạo ra một symbolic link.

Ví dụ:

$ ls -i bigfile

6253 bigfile

$ ln -s bigfile anotherfile

$ ls -i bigfile anotherfile

6253 bigfile 8358 anotherfile

Như bạn thấy, nội dung inode number của các tập tin khác nhau. Liệt kê một thư mục sẽ thấy

symbolic link:

lrwxrwxrwx 1 root root 6 Sep 16:35 anotherfile -> bigfile

-rw-rw-r– 1 root root 2 Sep 17:23 bigfile

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.

II. Cấu trúc cây thư mục.

Hệ thống tập tin Linux có cấu trúc như hình vẽ trên. 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.

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ứ 2… Những dữ liệu ghi vào thư mục /home sẽ ghi vào partition thứ 3. 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 partition 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ứ 2 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ứ 3 của đĩa cứng thứ 2 : /dev/hdb3.

Các thư mục cơ bản trên Linux

Thư mụcChức năng
/bin, /sbinChứ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.
/bootChứa linux kernel, file ảnh hỗ trợ load hệ điều hành
/libChứ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 kernel module.
/usr/localChứa các thư viện, các phần mềm để chia sẻ cho cácmáy khác trong mạng.
/tmpChứa các file tạm
/devChứa các tập tin thiết bị(như CDROM, floppy), và mộtsố file đặc biệt khác.
/etcChứa các tập tin cấu hình hệ thống
/homeChứa các thư mục lưu trữ home directory của ngườidùng
/rootLưu trữ home directory cho user root
/usrLưu trữ tập tin của các chương trình đã được cài đặttrong hệ thống.
/varLưu trữ log file, hàng đợi của các chương trình ứngdụng, mailbox của người dùng.
/mntChứa các mount point của các thiết bị được mountvào trong hệ thống.
/procLưu trữ thông tin về kernel

Các thư mục có thể sử dụng làm mount point cho các thiết bị riêng: như: /boot, /home, /root, /tmp, /usr, /usr/local, /opt, /var.

III. Các thao tác trên hệ thống tập tin và đĩa

III.1 Mount và umount một hệ thống tập tin

Muốn mount một hệ thống tập tin vào cây thư mục, bạn phải có một partition vật lý như CD-ROM, đĩa mềm…Và một điều kiện nữa là thư mục mà bạn muốn mount(mount point) vào phải là thư mục có thật. Nó phải có trước khi mount một hệ thống tập tin.

Lưu ý: muốn biết thư mục hiện hành đang ở hệ thống tập tin nào, bạn dùng lệnh df. Lệnh này sẽ hiển thị hệ thống tập tin và khoảng trống còn lại trên đĩa.

  1. Mount hệ thống tập tin có tính tương tác

Để mount một hệ thống tập tin, bạn dùng lệnh mount theo cú pháp sau:

#mount <tên-thiết-bị> <điểm-mount>

Trong đó: Tên-thiết-bị: là thiết bị vật lý như /dev/cdrom (CD-ROM), /dev/fd0 (đĩa mềm), /dev/hda1…điểm-mount: là vị trí thư mục, trong cây thư mục, mà bạn muốn mount vào

Một số tùy chọn của lệnh mount:

+ -f: làm cho tất cả mọi thứ đều hiện ra như thật, song nó chỉ gây ra động tác giả.

+ -v: chế độ chi tiết, cung cấp thêm thông tin về những gì mount định thực hiện.

+ -w: mount hệ thống tập tin với quyền đọc và ghi.

+ -r: mount hệ thống tập tin chỉ có quyền đọc mà thôi.

+ -t loại: xác định lại hệ thống tập tin đang được mount. Những loại hợp lệ là minux,

ext2, ext3, msdos, hpfs, proc, nfs, umsdos, iso9660, vfat.

+ -a: mount tất cả những hệ thống tập tin được khai báo trong /etc/fstab.

+ -o remount <fs> chỉ định việc mount lại 1 filesystem nào đó.

Ví dụ:

mount cdrom:

#mount /dev/cdrom

mount một hệ thống tập tin:

#mount /dev/hda6 /usr

remount filesystem.

#mount –o remount /home

  1. Mount một hệ thống tập tin khi khởi động

Một khi đã làm việc ổn định, thường thì Linux sử dụng một số hệ thống tập tin hay dùng và ít khi thay đổi. Do đó, bạn có thể xác định danh sách các hệ thống tập tin nào Linux cần phải mount khi khởi động và cần phải umount khi đóng tắt. Các hệ thống tập tin này được liệt kê trong tập tin cấu hình /etc/fstab.

Các fieldXác định thiết bị hoặc hệ thống tập tin cần mount
Hệ thống tập tinXác định thiết bị hoặc hệ thống tập tin cần mount
Mount pointXác định điểm mount cho hệ thống tập tin. Đối với các hệ thống tập tin đặc biệt như swap, bạn dùng chữ none, 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.
TypeChỉ ra loại hệ thống tập tin như msdos, vfat, iso9660, ext2…
Mount optionsDanh sách các tùy chọn được ngăn cách nhau bởi dấu phẩy
Dump frequencyXác định khoảng thời gian để lệnh dump sao chép (backup) 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.
Pass numberKhai báo cho lệnh fsck biết thứ tự kiểm tra các 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 nhất thống của hệ thống tập tin.

Tập tin /etc/fstab liệt kê các hệ thống tập tin cần được mount theo từng dòng, mỗi dòng một hệ thống tập tin. Những trường trong mỗi dòng phân cách nhau bằng khoảng trống hoặc khoảng tab.

Như vậy, khi muốn mount các hệ thống tập tin lúc khởi động, bạn nên sử dụng tập tin /etc/fstab thay vì dùng lệnh mount.

Sau đây là ví dụ về tập tin /etc/fstab:

3. Umount một hệ thống tập tin

Sau khi làm quen với việc gắn những hệ thống tập tin vào cây thư mục Linux. Kế đến, bạn có thể tháo một hệ thống tập bằng lệnh umount. Bạn cần umount một hệ thống tập tin vì nhiều lý do như: kiểm tra hay sửa chữa hệ thống tập tin với lệnh fsck; khi gặp vấn đề về mạng; umount đĩa mềm hay CD-ROM…Lệnh umount có 3 dạng:

+ #umount thiết-bị <điểm-mount>

+ #umount -a

+ #umount -t loại-fs

Lưu ý : lệnh umount không umount những hệ thống tập tin đang sử dụng.

Ví dụ:

#cd /mnt

#umount /mnt

Lúc này máy sẽ báo lỗi là hệ thống tập tin đang bận(busy). Do đó, muốn umount /mnt bạn phải di chuyển đến một thư mục khác và một hệ thống tập tin khác.

III.2 Định dạng filesystem

Dùng lệnh mkfs để định dạng cho mọi hệ thống tập tin(ext2, ext3,…)

Cú pháp lệnh:

#mkfs –t <fstype> <filesystem>

Ví dụ: mkfs –t ext2 /dev/hda1 (tương đương với lệnh mkfs.ext2 /dev/hda1)

III.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 nhiều cách khác nhau, thông thường ta dùng hai lệnh df và fdisk. Cú pháp lệnh:

df <option>, fdisk <option> <parameters>

Ví dụ:

Theo dõi các thông tin về file system được mount trong hệ thống.

Liệt kê file system trong hệ thống:

In theo dạng (MB,GB)

Liệt kê các partition trong hệ thống

Ta có thể tham khảo chi tiết thông tin về hai lệnh trên ta dùng lệnh man df

III.4 Duy trì hệ thống tập tin với lệnh fsck

Người 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. Để thực hiện những công việc trên, người quản trị dùng lệnh fsck(file system check), Cú pháp như sau:

#fsck [tùy-chọn] hệ-thống-tập-tin

Bảng sau đây mô tả các tùy chọn:

Tùy chọnMô tả
-ADuyệt khắp tập tin /etc/fstab và cố gắng kiểm tra tất cả các hệ thống tập tin chỉ trong một lần duyệt. Nếu đã chọn –A, bạn không cần chỉ ra hệ thống tập tin.
-VChế độ chi tiết. Cho biết lệnh fsck đang làm gì.
-t loai-fsXác định loại hệ thống tập tin cần kiểm tra
-aTự động sửa chữa những hỏng hóc trong hệ thống tập tin mà không cần hỏi
-lLiệt kê tất cả các tên tập tin trong hệ thống tập tin
-rHỏi trước khi sửa chữa hệ thống tập tin
-sLiệt kê các superblock trước khi kiểm tra hệ thống tập tin.

IV. Các thao tác trên tập tin và thư mục

IV.1 Thao tác trên thư mục

  1. Đường dẫn tương đối và tuyệt đối

Đường dẫn trong Linux sử dụng là dấu / thay cho dấu \ được sử dụng trong Windows.

Đường dẫn tuyệt đối là đường dẫn đầy đủ đi từ thư mục gốc (/) của cây thư mục. Ví dụ : /home/hv, /usr/local/vd.txt

Đường dẫn tương đối được tính từ thư mục hiện hành. Ví dụ chúng ta đang ở thư mục /home/hv khi gõ lệnh cat test.txt là chúng ta xem tập tin test.txt trong thư mục /home/hv.

Linux dùng ký hiệu “.” chỉ thư mục hiện hành và ký hiệu “..” chỉ thư mục cha của thư mục hiện hành. Ví dụ thư mục hiện hành là /usr/bin, đường dẫn ../local tương đương /usr/local

Chương trình thực thi trong Linux có 2 dạng chính là tập tin lệnh và tập tin binary. Tập tin lệnh là tập tin lưu các lệnh của shell tương tự tập tin bat trong DOS. Còn tập tin binary chứa mã máy tương tự tập tin .exe hoặc .com trong Windows. Trong Linux tên tập tin không có khái niệm mở rộng. Người ta thường sử dụng phần mở rộng để nói lên tính chất, ý nghĩa của tập tin chứ không để xác định chương trình thực thi tập tin. Ví dụ .txt chỉ tập tin dạng text, .conf chỉ tập tin cấu hình.

Tập tin muốn thực thi được thì phải gán quyền thực thi(x).

Khi thực thi chương trình phải xác định đường dẫn chính xác hoặc sử dụng đường dẫn trong biến môi trường PATH. Do vậy, muốn thực thi tập tin trong thư mục hiện hành phải dùng  ./tên-file

  1. Lệnh pwd

Lệnh pwd cho phép xác định vị trí thư mục hiện hành.

[natan@netcom bin]$ pwd

/usr/local/bin

  1. Lệnh cd

Lệnh cd cho phép thay đổi thư mục.

Cú pháp:

$cd [thư-mục]

thư-mục: là nơi cần di chuyển vào.

Ví dụ: $cd /etc

  1. Lệnh ls

Lệnh ls cho phép liệt kê nội dung thư mục.

Cú pháp: ls [tùy chọn] [thư mục]

ls –x hiển thị trên nhiều cột.

ls –l hiển thị chi tiết các thông tin của tập tin.

ls –a hiển thị tất cả các tập tin kể cả tập tin ẩn.

Ví dụ: $ ls –l /etc

-rw-r–r– 1 root root 920 Jun 25 2001 im_palette-small.pal

-rw-r–r– 1 root root 224 Jun 25 2001 im_palette-tiny.pal

-rw-r–r– 1 root root 5464 Jun 25 2001 imrc

-rw-r–r– 1 root root 10326 Apr 12 08:42 info-dir

lrwxrwxrwx 1 root root 11 Apr 12 07:52 init.d -> rc.d/init.d

Ý nghĩa các cột từ trái sang phải

+ Cột 1: ký tự đầu tiên : – chỉ tập tin bình thường, d chỉ thư mục, l chỉ link và phía sau có dấu -> chỉ tới tập tin thật.

+ Các ký tự còn lại chỉ quyền truy xuất

+ Cột thứ 2: Chỉ số liên kết đến tập tin này.

+ Cột thứ 3, 4 : Người sở hữu và nhóm sở hữu

+ Cột thứ 5 : Kích thước tập tin, thư mục

+ Cột thứ 6 : Chỉ ngày giờ sửa chữa cuối cùng

+ Cột thứ 7 : Tên tập tin, thư mục

Bạn muốn xem thông tin 1 hay nhiều tập tin có thể dùng

$ls -l tập-tin1 tập-tin2 …

  1. Lệnh mkdir

Lệnh mkdir cho phép tạo thư mục.

Cú pháp:

$mkdir [tùy-chọn] [thư-mục]

Ví dụ: $mkdir /home/web

  1. Lệnh rmdir

Lệnh cho phép xóa thư mục rỗng

Cú pháp:

$rmdir [tùy-chọn] [thư-mục]

Ví dụ: $rmdir /home/web

IV.2 Tập tin

  1. Lệnh cat

Lệnh cat dùng hiển thị nội dung của tập tin dạng văn bản. Để xem tập tin chúng ta chọn tên tập tin làm tham số.

Cú pháp:

$cat [tên-tập-tin]

Ví dụ: $cat myfile

Lệnh cat còn cho phép bạn xem nhiều tập tin cùng lúc

$cat file1 file2 …

Cat cũng được dùng để tạo và soạn thảo văn bản dạng text. Trong trường hợp này chúng ta sử dụng dấu > hay >> đi theo sau. Nếu tập tin cần tạo đã tồn tại, dấu > sẽ xóa nội dung của tập tin và ghi nội dung mới vào, dấu >> sẽ ghi nối nội dung mới vào sau nội dung cũ của tập tin.

$cat > <tên-tập-tin> [Enter]

> Các-dòng-dữ-liệu-của-tập tin

> …

[Ctrl-d :kết thúc}

  1. Lệnh more

Lệnh more cho phép xem nội dung tập tin theo từng trang màn hình.

Cú pháp:

$more [tên-tập-tin]

Ví dụ:

$more /etc/passwd

  1. Lệnh cp

Lệnh cp cho phép sao chép tập tin

Cú pháp:

$cp <tập-tin-nguồn> <tập-tin-đích>

Ví dụ: $cp /etc/passwd /root/passwd

  1. Lệnh mv

Lệnh mv cho phép thay đổi tên tập tin và di chuyển vị trí của tập tin

Cú pháp:

$mv <tên-tập-tin-cũ> < tên-tập-tin-mới>

Ví dụ: $cp /etc/passwd /root/pwd

  1. Lệnh rm

Lệnh rm cho phép xóa tập tin, thư mục.

Cú pháp:

$rm [tùy-chọn] [tên-tập-tin/thưmục]

Các tùy chọn hay dùng:

-r : xóa thư mục và tất cả các tập tin và thư mục con

-l : xác nhận lại trước khi xóa

  1. Lệnh find

Cho phép tìm kiếm tập tin thỏa mãn điều kiện.

Cú pháp:

#find [đường-dẫn] [biểu-thức-tìm-kiếm]

o đường-dẫn: là đường dẫn thư mục tìm kiếm

o biểu-thức-tìm-kiếm : tìm các tập tin hợp với điều kiện tìm.

Tìm 1 tập tin xác định :

#find [thư-mục] –name [tên-tập-tin] –print

Ngoài ra, bạn có thể sử dụng những kí hiệu sau:

“*” : viết tắt cho một nhóm ký tự

“?” : viết tắt cho một ký tự

Có thể sử dụng man để có các lựa chọn tìm kiếm đầy đủ hơn

  1. Lệnh grep

Lệnh grep cho phép tìm kiếm một chuỗi nào đó trong nội dung tập tin.

Cú pháp :

#grep [biểu-thức-tìm-kiếm] [tên-tập-tin]

Tìm trong tập tin có tên [tên-tập-tin] những dữ liệu thỏa mãn [biểu-thức-tìm-kiếm]

Ví dụ : grep “nva” /etc/passwd

Tìm kiếm trong tập tin /etc/passwd và hiển thị các dòng có xuất hiện chuỗi “nvan”.

  1. Lệnh touch

Là lệnh hỗ trợ việc tạo và thay đổi nội dung tập tin

Cú pháp : touch <option> file

Ví dụ: #touch file1.txt file2.txt (tạo hai tập tin file1.txt và file2.txt)

  1. Lệnh dd

Sao chép và chuyển đổi file.

Ví dụ:

dd if=/mnt/cdrom/images/boot.img of=/dev/fd0

(if là input file, of là output file)

IV.3 Các tập tin chuẩn trong Linux

Khi khởi động chương trình Linux, nó giao tiếp với người dùng qua việc hiển thị thông tin ra màn hình. Thông tin hiển thị màn hình có thể là dữ liệu của chương trình hay lỗi phát sinh khi có lỗi xảy ra. Người dùng giao tiếp với chương trình qua các kí tự gõ vào bàn phím. Luồng dữ liệu vào từ bàn phím gọi là nhập chuẩn. Luồng dữ liệu ra màn hình gọi là xuất chuẩn còn luồng dữ liệu thông báo lỗi là lỗi chuẩn.

Trong Linux, các luồng giao tiếp chuẩn được xem như các tập tin dữ liệu và được đánh số theo thứ tự: Tập tin nhập (file input) chuẩn là 0, tập tin xuất (file output) chuẩn là 1 và tập tin lỗi chuẩn là 2. Các số này được gọi là tập tin mô tả (file descriptor).

Sử dụng chương trình cat để soạn thảo, chúng ta gõ:

$ cat > filename

…<nhập nội dung cho tập tin>

<Ctrl-d>.

Tất cả các dữ liệu chúng ta đưa vào từ bàn phím được xem là tập tin nhập chuẩn. Dùng lệnh ls bạn sẽ nhận được dữ liệu ra màn hình, đó là tập tin xuất chuẩn chuẩn.

Một thông báo lỗi xuất hiện ở màn hình khi chúng ta gõ lệnh sai hoặc truy xuất vào các tập tin hay thư mục không có quyền chính là tập tin lỗi chuẩn. Ví dụ như bạn gõ lệnh listn thì sẽ xuất hiện lỗi invalid command.

IV.3.1 Chuyển hướng (redirection)

Chuyển tiếp là hình thức thay đổi luồng dữ liệu của các nhập, xuất và lỗi chuẩn. Khi sử dụng chuyển tiếp, nhập chuẩn có thể nhận dữ liệu từ tập tin thay vì bàn phím, xuất và lỗi chuẩn có thể xuất ra tập tin hay máy in…

Có 3 loại chuyển hướng:

+ Chuyển hướng nhập(Input redirection)

+ Chuyển hướng xuất(Output redirection)

+ chuyển hướng lỗi(Error redirection)

IV.3.2 Chuyển hướng nhập:

Theo qui ước thì các lệnh lấy dữ liệu từ thiết bị nhập chuẩn(bàn phím). Để lệnh lấy dữ liệu từ tập

tin chúng ta dùng ký hiệu < :

Cú pháp:

$lệnh < tập_tin

Dấu “<” chỉ hướng chuyển dữ liệu.

Ví dụ $cat < abc.txt hoặc $cat 0< abc.txt

IV.3.3 Chuyển hướng xuất:

Kết quả của các lệnh thông thường được hiển thị trên màn hình. Để xuất kết quả này ra tập tin bạn dùng dấu “>”

Cú pháp: $lệnh > tập-tin

Ví dụ: Liệt kê nội dung thư mục và chuyển kết quả ra tập tin

$ls –l > tm.txt

Để chèn thêm dữ liệu vào cuối tập tin đã tồn tại bạn dùng dấu “>>” thay cho dấu “>”

Cú pháp: $lệnh >> tập-tin

Ví dụ: $cat a.txt >> sum.txt

IV.4. Đường ống (Pipe)

Pipe là còn gọi là truyền thẳng. Nó là cách truyền dữ liệu sử dụng kết hợp 2 chuyển tiếp. Pipe sử dụng kết xuất của một chương trình làm dữ liệu nhập cho một chương trình khác.

Ví dụ: $ls –l | more

Kết quả của lệnh ls không xuất ra màn hình mà chuyển cho lệnh more xử lý như dữ liệu đầu vào.

IV.5. Lệnh tee

Hoạt động chuyển tiếp và đường ống là đặc điểm của hệ điều hành UNIX. Tuy nhiên bạn cũng có thể sử dụng 1 lệnh của Linux để làm việc này. Đó là lệnh tee, nó sẽ giảm bớt các kết quả gián tiếp của chuỗi đường ống.

Đầu tiên lệnh tee gửi nhập chuẩn của nó đến xuất chuẩn của nó, trong trường hợp này gửi xuất của sort đến nhập của lp. Thứ hai tee sao chép 1 bản nhập chuẩn vào tập tin baocaostt.

V. Lưu trữ tập tin/thư mục

V.1. Lệnh gzip/gunzip

gzip dùng để nén tập tin, còn gunzip dùng để giải nén các tập tin đã nén. Cú pháp của gzip và

gunzip như sau:

$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:

-cChuỵển các thông tin ra màn hình
-dGiải nén, gzip –d tương đương gunzip
-hHiển thị giúp đỡ.

Ví dụ:

#gzip /etc/passwd

#gunzip /etc/passwd.gz

V.2. Lệnh tar

Lệnh này dùng để gom và bung những tập tin/thư mục. Nó sẽ tạo ra một tập tin có phần mở rộng .tar

Cú pháp: #tar [tùy-chọn] [tập-tin-đích] [tập-tin-nguồn/thư-mục-nguồn …]

Trong đó:

+ –cvf : gom tập tin/ thư mục

+ –xvf : bung tập tin / thư mục

+ tập-tin-đích: tập tin .tar sẽ được tạo ra.

+ tập-tin-nguồn/thư-mục-nguồn: những tập tin và thư mục cần gom.

Ví dụ:

#tar –cvf /home/backup.tar /etc/passwd /etc/group

#tar –xvf /home/backup.tar

VI. Bảo mật hệ thống tập tin

VI.1. Quyền hạn

Do Linux là một hệ điều hành đa nhiệm (multitasking) và đa người dùng (multiuser), nhiều người có thể cùng sử dụng một máy Linux và một người có thể cho chạy nhiều chương trình khác nhau.

Có hai vấn đề lớn được đặt ra: quyền sở hữu các dữ liệu trên đĩa và phân chia tài nguyên hệ thống như CPU, RAM giữa các tiến trình (process).

Tất cả các tập tin và thư mục của Linux đều có người sở hữu và quyền truy cập. Bạn có thể thay đổi các tính chất này đối với tập tin hay thư mục. Quyền của tập tin còn cho phép xác định tập tin có phải là một chương trình (application) hay không (khác với MSDOS và MSWindows xác định tính chất này qua phần mở rộng của tên tập tin). Ví dụ với lệnh ls –l:

-rw-r—r— 1 fido users 163 Dec 7 14 : 31 myfile

Cột đầu chỉ ra quyền hạn truy cập của tập tin, ví dụ trên, các ký tự –rw-r—r— biểu thị quyền truy cập của tập tin myfile. Linux cho phép người sử dụng xác định các quyền đọc (read), viết (write) và thực thi (execute) cho từng đối tượng. Có 3 dạng đối tượng

+ Người sở hữu (the owner)

+ Nhóm sở hữu (the group owner)

+ Người khác (“other users” hay everyone else).

Quyền đọc cho phép bạn đọc nội dung của tập tin. Đối với thư mục, quyền đọc cho phép bạn di chuyển vào thư mục và xem nội dung của thư mục.

Quyền viết cho phép bạn thay đổi nội dung hay xoá tập tin. Đối với thư mục, quyền viết cho phép

bạn tạo ra, xóa hay thay đổi tên các tập tin trong thư mục không phụ thuộc vào quyền cụ thể của tập tin trong thư mục. Như vậy, quyền viết của thư mục sẽ vô hiệu hóa các quyền truy cập của tập tin trong thư mục và bạn đọc phải để ý tính chất này.

Quyền thực thi cho phép bạn gọi chương trình lên bộ nhớ bằng cách nhập từ bàn phím tên của tập tin. Đối với thư mục, bạn chỉ có thể vào thư mục bởi lệnh cd nếu bạn có quyền thực thi với thư mục.

-rw-r—r— 1 fido users 163 Dec 7 14 : 31 myfile

Ký tự đầu tiên của quyền là ký tự “-” cho biết đó là một tập tin bình thường. Nếu ký tự d thay thế cho dấu “-“ thì myfile là một thư mục. Ngoài ra còn có c cho thiết bị ngoại vi dạng ký tự (như bàn phím), b cho thiết bị ngoại vi dạng block (như ổ đĩa cứng).

Chín ký tự tiếp theo chia thành 3 nhóm, cho phép xác định quyền của 3 nhóm: người sở hữu (owner), nhóm sở hữu(group) và những người còn lại (other). Mỗi cặp ba này cho phép xác định quyền đọc, viết và thực thi theo thứ tự kể trên. Quyền đọc viết tắt là “r” ở vị trí đầu, quyền viết viết tắt bằng “w” ở vị trí thứ hai và vị trí thứ ba là quyền thực thi ký hiệu bằng chữ “x”. Nếu một quyền không được cho thì tại vị trí đó sẽ có ký tự “-”.

Ký tựrwxrwxrwx
Loạitập tinOwnergroup ownerother users

Trong trường hợp của tập tin myfile, người sở hữu có quyền rw tức là đọc và viết. Nhóm sở hữu và những người còn lại chỉ có quyền đọc tập tin (read-only). Bên cạnh đó, bạn còn biết myfile không phải là một chương trình.

Song song với cách ký hiệu miêu tả bằng ký tự ở trên, quyền hạn truy cập còn có thể biểu diễn dưới dạng 3 số. Quyền hạn cho từng loại người dùng sử dụng một số có 3 bit tương ứng cho 3 quyền read, write và excute. Theo đó nếu cấp quyền thì bit đó là 1, ngược lại là 0. Giá trị nhị phân của số 3 bit này xác định các quyền cho nhóm người đó.

Bit 2bit 1bit 0
readwriteexcute

Ví dụ:

chỉ có quyền đọc : 100 có giá trị là 4

có quyền đọc và thực thi : 101 có giá trị là 5

Theo cách tính số thập phân, bạn cũng có thể xác định số quyền hạn bằng cách tính tổng giá trị của các quyền. Theo quy định trên ta có giá trị tương ứng như sau:

QuyềnGiá trị
Read permission4
Write permission2
Execute permission1

Ví dụ: Nếu có quyền read và excute thì số của quyền là : 4+1 =5

read , write và excute : 4+2+1=7

Tổ hợp của 3 quyền trên có giá trị từ 0 đến 7.

+ 0 or —: Không có quyền

+ 1 or –x: execute

+ 2 or -w-: write-only (race)

+ 3 or -wr: write và execute

+ 4 or r–: read-only

+ 5 or r-x: read và execute

+ 6 or rw-: read và write

+ 7 or rwx: read, write và execute

Như vậy khi cấp quyền trên một tập tin/thư mục, bạn có thể dùng số thập phân gồm 3 con số. Số đầu tiên miêu tả quyền của sở hữu, số thứ hai cho nhóm và số thứ ba cho những người còn lại.

Ví dụ: Một tập tin với quyền 751 có nghĩa là sở hữu có quyền read, write và execute bằng 4+2+1=7. Nhóm có quyền read và execute bằng 4+1=5 và những người còn lại có quyền execute bằng 1.

Chú ý: Người sử dụng có quyền đọc thì có quyền copy tập tin. Khi đó, tập tin sao chép sẽ thuộc sở hữu người làm copy. Ví dụ minh họa sau:

$ ls -l /etc/passwd

-rw-r–r– 1 root root 1113 Oct 13 12 : 30 /etc/passwd

$ cp /etc/passwd ./

$ ls -l passwd

-rw-r–r– 1 ndhung admin 1113 Oct 15 10 : 37 passwd

VI.2. Lệnh chmd, chown, chgrp

VI.2.1 Lệnh chmod

Đây là lệnh được sử dụng rất phổ biến, dùng cấp phép quyền hạn truy cập của tập tin hay thư mục. Chỉ có chủ sở hữu và superuser mới có quyền thực hiện các lệnh này.

Cú pháp của lệnh: $chmod [nhóm-người-dùng] [thao-tác] [quyền-hạn] [tên-tập-tin].

Nhóm-người-dùngThao tácQuyền
u – user+ : thêm quyềnr – read
g – group– : xóa quyềnw – write
o – others= : gán ngang quyềnx – excute
a – all

Một số ví dụ : gán quyền trên tập tin myfile

Gán thêm quyền write cho group : $ chmod g+w myfile

Xóa quyền read trên group và others : $ chmod go-w myfile

Cấp quyền x cho mọi người:

$ chmod ugo+x myfile hoặc

$chmod a+x myfile hoặc

$ chmod +x myfile

Đây là cách thay đổi tương đối vì kết quả cuối cùng phụ thuộc vào quyền đã có trước đó mà lệnh này không liên quan đến. Trên quan điểm bảo mật hệ thống, cách thay đổi tuyệt đối dẫn đến ít sai sót hơn. Thay đổi quyền truy cập của một thư mục cũng được thực hiện giống như đối với một tập tin. Chú ý là nếu bạn không có quyền thực hiện (execute) đối với một thư mục, bạn không thể cd vào thư mục đó. Mọi người sử dụng có quyền viết vào thư mục đều có quyền xóa tập tin trong thư mục đó, không phụ thuộc vào quyền của người đó đối với các tập tin trong thư mục. Vì vậy, đa số các thư mục có quyền drwxr-xr-x. Như vậy chỉ có người sở hữu của thư mục mới có quyền tạo và xóa tập tin trong thư mục. Ngoài ra, thư mục còn có một quyền đặc biệt, đó là cho phép mọi người đều có quyền tạo tập tin trong thư mục, mọi người đều có quyền thay đổi nội dung tập tin trong thư mục, nhưng chỉ có người tạo ra mới có quyền xóa tập tin. Đó là dùng sticky bit cho thư mục. Thư mục /tmp thường có sticky bit bật lên.

drwxrwxrwt 7 root root 16384 Oct 21 15:33 tmp

Ta thấy chữ t, cuối cùng trong nhóm các quyền, thể hiện cho sticky bit của /tmp. Để có sticky bit, ta sử dụng lệnh: chmod 1????????? tên_thư_mục.

Ngoài cách gán quyền trên, chúng ta cũng có thể gán quyền trực tiếp thông qua 3 chữ số xác định quyền như sau : $chmod [giá-trị-quyền] [tên-tập-tin]

Ví dụ: Cấp quyền cho tập tin myfile

QuyềnLệnh
-wrxr-xr-x$chmod 755 myfile
-r-xr–r —$chmod 522 myfile
-rwxrwxrwx$chmod 777 myfile

Phương pháp thay đổi tuyệt đối này có một số ưu điểm vì nó là cách định quyền tuyệt đối, kết quả cuối cùng không phụ thuộc vào quyền truy cập trước đó của tập tin. Đồng thời, dễ nói “thay quyền tập tin thành 755” thì dễ hơn là “thay quyền tập tin thành read-write-excute, read-excute, read-excute”

VI.2.2 Lệnh chown

Lệnh chown dùng để thay đổi người sở hữu trên tập tin, thư mục

Cú pháp: $chown [tên-user:tên-nhóm] [tên-tập-tin/thư-mục]

$chown –R [tên-user:tên-nhóm] [thư-mục]

Dòng lệnh cuối cùng với tùy chọn –R (recursive) cho phép thay đổi người sở hữu của thư mục <tên_thư_mục> và tất cả các thư mục con của nó. Điều này cũng đúng với lệnh chmod, chgrp.

VI.2.3 Lệnh chgrp

Lệnh chgrp dùng để thay đổi nhóm sở hữu của một tập tin, thư mục

Cú pháp: $chgrp [nhóm-sở-hữu] [tên-tập-tin/thư-mục]


Bài 4: Cài Đặt Phần Mềm

I. Chương trình RPM

RedHat Package Manager (RPM) là hệ thống quản lý package (gói phần mềm) được Linux hỗ trợ cho người dùng. Nó cung cấp cho người dùng nhiều tính năng để duy trì hệ thống của mình. Người dùng có thể cài đặt, xóa hoặc nâng cấp các package trực tiếp bằng lệnh. RPM có một cơ sở dữ liệu chứa các thông tin của các package đã cài và các tập tin của chúng, nhờ vậy RPM cho phép bạn truy vấn các thông tin, cũng như xác thực các package trong hệ thống. Nếu bạn sử dụng XWindow, có thể dùng chương trình KDE-PRM hoặc Gnome-RPM thay thay cho việc sử dụng lệnh.

II. Đặc tính của RPM

– Khả năng nâng cấp phần mềm:RPM cho phép nâng cấp hệ thống một cách tự động, thông minh. Các tập tin cấu hình được gìn giữ cẩn thận qua các lần nâng cấp, vì thế bạn không sợ thay đổi các tùy chọn sẵn có của hệ thống được nâng cấp.

– Truy vấn thông tin hiệu quả: RPM cũng được thiết kế cho mục đích truy vấn các thông tin về các package trong hệ thống. Bạn cũng có thể hỏi tập tin cụ thể thuộc về package nào và nó ở đâu.

– Thẩm tra hệ thống (System Verification): Một đặc tính rất mạnh của RPM là cho phép bạn thẩm tra lại các package. Nếu bạn nghi ngờ một tập tin nào bị xóa hay bị thay thế trong package, bạn có thể kiểm tra lại rất dễ dàng. Bạn cần phải chú ý đến các dấu hiệu bất bình thường của hệ thống, nên kiểm tra và cài lại nếu cần thiết.

III. Lệnh RPM

Lưu ý rằng bạn phải thực hiện rpm với người dùng quản trị (root). RPM có 5 chế độ thực hiện là cài đặt (installing), xóa (uninstalling), nâng cấp (upgrading), truy vấn (querying) và thẩm tra (verifying).

III.1. Cài đặt phần mềm bằng RPM

Package RPM thường chứa các tập tin giống như foo-1.0-1.i386.rpm Tên tập tin này bao gồm tên package (foo), phiên bản (1.0), số hiệu phiên bản (1), kiến trúc sử dụng (i386). Lệnh cài đặt:

# rpm –ivh tên-tập-tinRPM

Ví dụ:

#rmp –ivh foo-1.0-1.i386.rpm

foo #################################

Ví dụ: package đã được cài đặt trước

# rpm -ivh foo-1.0-1.i386.rpm

foo package foo-1.0-1 is already installed

Nếu bạn muốn cài chồng lên package đã cài rồi dùng lệnh thêm tham số –replacepkgs

#rpm –ivh -–replacepkgs tên-tập-tin-package

Ví dụ:

# rpm -ivh –replacepkgs foo-1.0-1.i386.rpm

Ví dụ: xung đột với tập tin cũ đã tồn tại

# rpm -ivh foo-1.0-1.i386.rpm

foo /usr/bin/foo conflicts with file from bar-1.0-1

Để bỏ qua lỗi này, bạn có thể cài đè lên bằng cách sử dụng tùy chọn –replacefiles.

# rpm -ivh –replacefiles foo-1.0-1.i386.rpm

Ví dụ: Package phụ thuộc vào package khác

# rpm -ivh foo-1.0-1.i386.rpm

failed dependencies:

bar is needed by foo-1.0-1

Giải quyết trường hợp này bạn phải cài các package được yêu cầu. Nếu bạn muốn tiếp tục cài mà không cài các package khác thì dùng tùy chọn –nodeps. Tuy nhiên lúc này có thể package của bạn cài có thể chạy không tốt.

III.2. Loại bỏ phần mềm đã cài đặt trong hệ thống

Xóa package thì đơn giản hơn cài. Lệnh xóa.

# rpm -e tên-package

Lưu ý là khi xóa chúng ta dùng tên-package chứ không dùng tên tập tin RPM.

Ví dụ:

# rpm -e foo

removing these packages would break dependencies:

foo is needed by bar-1.0-1

III.3. Nâng cấp phần mềm

Upgrade cũng tương tự như cài đặt mới.

# rpm –Uvh tên-tập-tinRPM

Ví dụ:

# rpm -Uvh foo-2.0-1.i386.rpm

foo ####################################

Khi RPM tự động nâng cấp với tập tin cấu hình, bạn thấy chúng thường xuất hiện một thông báo như sau : saving /etc/foo.conf as /etc/foo.conf.rpmsave. Điều này có nghĩa là khi tập tin cấu hình của phiên bản cũ không tương thích với phiên bản mới thì chúng lưu lại và tạo tập tin cấu hình mới. Nâng cấp thực sự là sự kết hợp giữa Uninstall và Install. Vì thế khi upgrade cũng thường xảy ra các lỗi như khi Install và Uninstall và thêm một lỗi nữa là khi bạn upgrade với phiên bản cũ hơn.

# rpm -Uvh foo-1.0-1.i386.rpm

foo package foo-2.0-1 (which is newer) is already installed

Trong trường hợp này bạn thêm tham số –oldpackage

# rpm -Uvh –oldpackage foo-1.0-1.i386.rpm

foo ####################################

III.4. Truy vấn các phần mềm

Để truy vấn thông tin từ cơ sở dữ liệu của những package đã cài đăt bạn dùng.

# rpm -q tên-package

Ví dụ:

# rpm -q foo

foo-2.0-1 //kết quả truy vấn

Thay vì xác định tên package, bạn có thể sử dụng thêm một số tham số khác kết hợp với -q để xác định package mà bạn muốn truy vấn, chúng được gọi là Package Specification Options

+ -a : Truy vấn tất cả các package.

+ -f <tập-tin>: Truy vấn những package chứa tập-tin. Khi xác định tập tin bạn phải chỉ rõ đường dẫn (ví dụ : /usr/bin/ls)

+ -p <tên-tập-tin-package> : Truy vấn package tên-tập-tin-package

Có một số cách xác định những thông tin hiển thị về package. Sau đây là các tùy chọn sử dụng để xác định loại thông tin cần tìm kiếm. Chúng được gọi là Information Selection Options

+ -i : xác định các thông tin về package bao gồm : tên, mô tả, phiên bản, kích thước,

ngày tạo, ngày cài đặt, nhà sản xuất …

+ -l : Hiển thị những tập tin trong package.

+ -s : Hiển thị trạng thái của các tập tin trong package.

+ -d : hiển thị danh sách tập tin tài liệu cho package ( ví dụ man, README, info file …)

+ –c : hiển thị danh sách tập tin cấu hình.

III.5. Kiểm tra các tập tin đã cài đặt

Kiểm tra xem tập tin đã cài đặt với các tập tin gốc của package. Các thông tin dùng kiểm tra là : kích thước, MD5 checksum, quyền hạn, loại tập tin, người sở hữu, nhóm sở hữu tập tin.

+ rpm –V tên-package :Kiểm tra tất cả các tập tin trong package.

+ rpm –vf tên-file : Kiểm tra tập tin tên-file

+ rpm –Va :Kiểm tra tất cả các package đã cài.

+ rpm –Vp tên-tập-tin-RPM :Kiểm tra một package với tập tin package xác định, thường sử dụng trong trường hợp cơ sở dữ liệu của RPM bị hỏng.

Khi kiểm tra nếu không có lỗi thì không có hiển thị, nếu không thì sẽ thông báo ra.Định dạng của dòng thông báo gồm 8 ký tự và tên tập tin.

Những ký tự đại diện cho các lỗi kiểm tra.

+ 5 – MD5 checksum

+ S – kích thước tập tin

+ L – liên kết mềm

+ T – thời gian cập nhật tập tin

+ D – thiết bị

+ U – người sở hữu

+ G – nhóm sở hữu

+ M – quyền truy xuất và loại tập tin.

+ ? – không tìm thấy tập tin

III.6. Cài đặt phần mềm file nguồn *.tar, *.tgz

Ngoài các phần mềm được đóng gói dạng file nhị phân(file *.rpm) còn có các phần mềm được cung cấp dạng file source code như: *.tar hoặc *.tgz. Thông thường để cài đặt phần mềm này ta cần phải dựa vào trợ giúp của file giúp đỡ trong từng chương trình hoặc phần mềm, các file(README or INSTALL,) này nằm trong các thư mục con của thư mục sau khi ta dùng lệnh tar để giải nén source. Để thực hiện việc cài đặt này ta thường làm các bước sau:

Bước 1: Giải nén file tar.

Ví dụ:

[root@bigboy tmp]# tar -xvzf linux-software-1.3.1.tar.gz

linux-software-1.3.1/

linux-software-1.3.1/plugins-scripts/

linux-software-1.3.1/linux-software-plugins.spec

[root@bigboy tmp]#

Tạo các thư mục con chứa các file cài đặt

[root@bigboy tmp]# ls

linux-software-1.3.1 linux-software-1.3.1.tar.gz

[root@bigboy tmp]#

Bước 2: Chuyển vào thư mục con và tham khảo các file INSTALL, README.

Ví dụ:

[root@bigboy tmp]# cd linux-software-1.3.1

[root@bigboy linux-software-1.3.1]# ls

COPYING install-sh missing plugins

depcomp LEGAL mkinstalldirs plugins-scripts

FAQ lib linux-software.spec README

Helper.pm Makefile.am linux-software.spec.in REQUIREMENTS

INSTALL Makefile.in NEWS subst.in

[root@bigboy linux-software-1.3.1]#

Bước 3: Sau đó ta dựa vào chỉ dẫn trong file (INSTALL, README) để cài đặt phần mềm.


Bài 5: Giới Thiệu Các Trình Tiện Ích

I. Trình soạn thảo vi

Vim là chương trình soạn thảo chuẩn trên các hệ điều hành Unix.

Nó là chương trình soạn thảo

trực quan, hoạt động dưới 2 chế độ : Chế độ lệnh (command mode) và chế độ soạn thảo (input mode). Để soạn thảo tập tin mới hoặc xem hay sửa chữa tập tin cũ bạn dùng lệnh:

$vi [tên-tập-tin]

Khi thực hiện, vi sẽ hiện lên màn hình soạn thảo ở chế độ lệnh.

I.1. Một số hàm lệnh của vi

– vi tập tin –> bắt đầu dòng 1

– vi +n tập tin –> bắt đầu ở dòng n

– vi +/pattern –> bắt đầu ở pattern

– vi -r tập tin –> phục hồi tập tin sau khi hệ thống treo

I.2. Chuyển chế độ lệnh sang chế độ soạn thảo

– i trước dấu con trỏ

– I trước ký tự đầu tiên trên dòng

– a sau dấu con trỏ

– A sau ký tự đầu tiên trên dòng

– o dưới dòng hiện tại

– O trên dòng hiện tại

– r thay thế 1 ký tự hiện hành

– R thay thế cho đến khi nhấn <ESC>

I.3. Chuyển chế độ soạn thảo sang chế độ lệnh

Dùng phím ESC (escape), sau đó sử dụng các nhóm lệnh thích hợp sau:

I.3.1 Nhóm lệnh di chuyển con trỏ

– h sang trái một khoảng trắng

– e sang phải một khoảng trắng

– <space> – nt –

– w sang phải 1 từ

– b sang trái 1 từ

– k lên một dòng

– j xuống một dòng

– <return> – nt –

– ) cuối câu

– ( đầu câu

– } đầu đoạn văn

– { cuối đoạn văn

– ^-w đến ký tự đầu tiên chèn vào

– ^-u cuốn lên 1/2 màn hình

– ^-d kéo xuống 1/2 màn hình

– ^-z kéo xuống 1 màn hình

– ^-b kéo lên 1 màn hình

Lưu ý: dấu “^” viết tắt cho phím Ctrl

I.3.2 Nhóm lệnh xóa

– Dw 1 từ

– do đến đầu dòng

– d$ cuối dòng

– 3dw 3 từ

– dd dòng hiện hành

– 5dd 5 dòng

– x xóa 1 ký tự

I.3.3 Nhóm lệnh thay thế

– cw Thay thế 1 từ

– 3cw Thay thế 3 từ

– cc Dòng hiện hành

– 5cc 5 dòng

I.3.4 Nhóm lệnh tìm kiếm

– */and Từ kế tiếp của and

– *?and Từ kết thúc là and

– */nThe Tìm dòng kế bắt đầu bằng The

– n Lặp lại lần dò tìm sau cùng

I.3.5 Nhóm lệnh tìm kiếm và thay thế

– :s/text1/text2/g Thay text1 thành text2

– :1,$s/tập tin/thư mục Thay tập tin bằng thư mục từ hàng 1 đến cuối.

– :g/one/s//1/g Thay thế one bằng 1

I.3.6 Copy and paste

– Để copy ta dùng lệnh y và để paste dùng lệnh p

– y$ : copy từ vị trí hiện tại của cursor đến cuối dòng.

– yy : copy toàn bộ dòng tại vị trí cursor.

– 3yy : copy ba dòng liên tiếp

I.3.7 Undo

Thao tác undo cho phép chúng ta hủy thao tác hiện tại và quay về thao tác trước đó, trong vi thực hiện bằng phím u.

I.3.8 Thao tác trên tập tin

– :w ghi vào tập tin

– 😡 lưu và thoát khỏi chế độ soạn thảo

– :wq lưu và thoát khỏi chế độ soạn thảo

– : w <filename> lưu vào tập tin mới

– :q thoát nếu không có thay đổi nội dung tập tin

– :q! thoát không lưu nếu có thay đổi tập tin

– :r mở tập tin đọc .

II. Trình tiện tích mail

Trình tiện ích này do Linux cung cấp để hỗ trợ cho việc gửi và nhận mail.

$mail

Lệnh này sẽ hiển thị nội dung các mail trong mailbox theo thứ tự vào trước ra sau. Sau khi hiển thị mỗi mail sẽ hiện lên dấu “?” để chờ lệnh của người sử dụng. các thao tác cơ bản sau:

– newline Hiển thị mail kế, nếu không còn thì thoát khỏi lệnh.

– + giống như newline

– p In thông báo

– s [tập tin] lưu mail vào tập tin khác hoặc mailbox

– w [tập tin] giống như s nhưng không lưu đầu thông báo

– d xóa mail

– q thoát khỏi tiện ích

– x thoát khỏi tiện ích mà không thay đổi mail

– ! [lệnh] thực hiện [lệnh] Unix

Gởi mail: Đưa vào lệnh mail với địa chỉ của người sử dụng. Ví dụ :

$ mail dung@fibi.hcm.vn

<nội dung>

^-D

Mail sẽ được gửi cho người sử dụng có tên là dung ở công ty fibi vùng hcm.vn. Có thể cùng một lúc gửi một thông báo cho nhiều người

$ mail dung@fibi.hcm.vn trung@fibi.hanoi.vn

Nhận mail : Khi login vào hệ thống nếu có thư hệ thống sẽ thông báo “ You have mail” khi đó có thể đánh $mail để nhận mail. Tương tự ta có thể dùng các tiện ích như: sendmail, pine thông qua trợ giúp man.

III. Tiện ích tạo đĩa mềm boot

IV. Trình tiện ích setup

Là trình tiện ích hỗ trợ cài đặt thiết bị, filesystem, thiết lập cấu hình mạng, dịch vụ hệ thống, từ dấu nhắc lệnh ta enter vào lệnh setup, dialog chọn công cụ sẽ được hiển thị.

V. Trình tiện ích fdisk

Là trình tiện ích cho phép quản lý ổ đĩa cứng như: tạo mới, xem thông tin và xóa các partition trong hệ thống. Cú pháp lệnh:

#fdisk <device_name>

Trong đó <device_name> có thể là /dev/hda hoặc /dev/sda. Sau đây là một số lệnh fdisk cơ bản.

LệnhGiải thích
PLiệt kê danh sách các partition table
NTạo mới 1 parttition
DXóa parttition
QThoát khỏi trình tiện ích
WTạo mới parttition
AThiết lập boot parttition
TThay đổi system parttition ID
LLiệt kê loại partition (bao gồm ID)

Sau đây là một số bước để tạo mới một parttition với dung lượng 384M

# fdisk /dev/hdb

Khởi tạo tiện ích fdisk để thao tác lên Partition /dev/hdb

Command (m for help): p

Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders

Units = cylinders of 4032 * 512 bytes

Liệt kê danh sách các partition trong hệ thống.

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-621, default 1):<RETURN>

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M

Tạo mới một primary partition với kích thước 384MB

Command (m for help): p

Device Boot Start End Blocks Id System

/dev/hdb1 1 196 395104 83 Linux

Xem thông tin partition mới vừa tạo

Lưu ý: Sau khi ta dùng fdisk để tạo một partition mới thì ta phải reboot lại hệ thống và dùng lệnh mkfs –t ext3 <filesystem> để định dạng lại partition đó trước khi sử dụng.

VI. Trình tiện ích iptraf

Là trình tiện ích hỗ trợ việc theo dõi và giám sát các traffic trên mạng, lưu ý rằng ta phải cài chương trình này từ đĩa CDROM bằng lệnh rpm –ivh iptraf…rpm

VII. Trình tiện ích lynx

Lynx là một trong những trình duyệt Web có giao diện text. Lynx cho phép người dùng có thể sử dụng để truy xuất Web qua giao diện text thay vì sử dụng giao diện đồ họa của XWindows. Lynx có thể sử dụng trong console, terminal hoặc xterm. Cú pháp lệnh lynx:

#lynx <URL>

VIII. Trình tiện ích mc

GNU Midnight Commander là chương trình quản lý và thao tác trên file và thư mục được sử dụng trên Unix/Linux, để sử dụng ta phải cài package mc, sau đó dùng lệnh mc để kích hoạt chương trình, mc có khả năng cung cấp tính năng truyền file thông qua ftp và ssh.


Bài 6: Quản Trị Người Dùng Và Nhóm

I. Superuser

Trong hệ thống Linux, tài khoản root có quyền cao nhất được sử dụng bởi người quản trị, chúng ta chỉ sử dụng tài khoản này vào các mục đích cấu hình, bảo trì hệ thống chứ không nên sử dụng vào mục đích hằng ngày. Chúng ta sử dụng tài khoản root phải cẩn thận, không sử dụng bừa bãi trên qua telnet hay kết nối từ xa mà không có công cụ kết nối an toàn.

Trong Linux, chúng ta có thể tạo tài khoản có tên khác nhưng có quyền của root, bằng cách tạo user có UserID bằng 0. Cần phân biệt bạn đang login như root hay người sử dụng thường thông qua dấu nhắc của shell.

login: natan

Password:****

[natan@NetGroup natan]$ su –

Password: ****

[root@NetGroup /root]#

Dòng thứ tư với dấu $ cho thấy bạn đang kết nối như một người sử dụng thường (natan). Dòng cuối cùng với dấu # cho thấy bạn đang thực hiện các lệnh với root.

II. Thông tin của User

Việc tạo và quản lý tài khoản là vấn đề quan trọng mà người quản trị phải thực hiện. Trừ tài khoản root, các tài khoản khác do người quản trị tạo ra. 

Tập tin /etc/passwd là tập tin chứa các thông tin về tài khoản người dùng của hệ thống.

II.1. Tập tin /etc/passwd

Tập tin /etc/passwd đóng vai trò sống còn đối với một hệ thống Unix/Linux. Mọi người đều có thể đọc được tập tin này nhưng chỉ có root mới có quyền thay đổi nó.

Chúng ta thử xem qua nội dung của tập tin passwd:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:

news:x:9:13:news:/var/spool/news:

ftp:x:14:50:FTP User:/var/ftp:

nobody:x:99:99:Nobody:/:

nscd:x:28:28:NSCD Daemon:/:/bin/false

mailnull:x:47:47::/var/spool/mqueue:/dev/null

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/bin/false

xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false

nthung:x:525:526:nguyen tien hung:/home/nthung:/bin/bash

natan:x:526:527::/home/natan:/bin/bash

Mỗi tài khoản được lưu trong một dòng gồm 7 cột:

– Cột 1 : Tên người sử dụng.

– Cột 2 : Mã liên quan đến mật khẩu của tài khoản và “x” đối với Linux. Linux lưu mã này trong một tập tin khác /etc/shadow mà chỉ có root mới có quyền đọc.

– Cột 3:4 : Mã định danh tài khoản (user ID) và mã định danh nhóm (group ID).

– Cột 5 : Tên đầy đủ của người sử dụng. Một số phần mềm phá password sử dụng dữ liệu của cột này để thử đoán password.

– Cột 6 : thư mục cá nhân. (Home Directory)

– Cột 7 : Chương trình sẽ chạy đầu tiên sau khi người dùng đăng nhập vào hệ thống.

Dòng đầu tiên của tập tin /etc/passwd mô tả thông tin cho user root (chú ý là tất cả những tài khoản có user_ID = 0 đều là root), tiếp theo là các tài khoản khác của hệ thống (đây là các tài khoản không có thật và không thể login vào hệ thống), cuối cùng là các tài khoản người dùng thường.

II.2. Username và UserID

Tên người dùng là chuỗi ký tự xác định duy nhất một người dùng, người dùng sử dụng tên này khi đăng nhập cũng như truy xuất tài nguyên, trong Linux tên người dùng có sự phân biệt giữa chữ hoa và thường. Thông thường, tên người dùng thường sử dụng chữ thường. Để dễ dàng trong việc quản lý người dùng, ngoài tên người dùng Linux còn sử dụng khái niệm định danh người dùng (user _ID). Mỗi người dùng có một con số định danh riêng.

Linux sử dụng số định danh để kiểm soát hoạt động của người dùng. Theo qui định chung,

những người dùng có định danh là 0 là người dùng quản trị (root). Các số định danh từ 1- 99 sử dụng cho các tài khoản hệ thống, định danh của người dùng bình thường sử dụng giá trị bắt đầu từ 100.

II.3. Mật khẩu người dùng

Mỗi người dùng có một mật khẩu riêng để sử dụng tài khoản của mình. Mọi người đều có quyền đổi mật khẩu của chính mình. Người quản trị thì có thể đổi mật khẩu của những người khác.

Unix truyền thống lưu các thông tin liên quan tới mật khẩu người dùng trong tập tin /etc/passwd.

Tuy nhiên, mọi người dùng đều đọc được tập tin này do một số yêu cầu cho hoạt động bình

thường của hệ thống (như chuyển User ID thành tên khi hiển thị trong lệnh ls chẳng hạn) và nhìn chung các người dùng đặt mật khẩu “yếu” do đó hầu hết các phiên bản Unix mới đều lưu mật khẩu(được mã hóa) thực sự trong một tập tin khác /etc/shadow và chỉ có root được quyền đọc tập tin này.

Chú ý: Theo cách xây dựng mã hóa mật khẩu, chỉ có 2 cách phá mật khẩu là vét cạn (brute force) và đoán. Phương pháp vét cạn, theo tính toán chặt chẽ, là không thể thực hiện nổi vì đòi hỏi thời gian tính toán quá lớn, còn đoán thì chỉ tìm ra những mật khẩu ngắn, hoặc “yếu”, ví dụ như những từ tìm thấy trong từ điển như god, darling …

II.4. Group ID

Khái niệm Group ID để định danh nhóm của người dùng, thông qua Group ID này giúp ta có thể xác định người dùng đó thuộc nhóm nào, thông thường trên Linux GID được mặc định tạo ra khi ta tạo một user và có giá trị >= 500.

II.5. Home directory

Khi người dùng login vào hệ thống được đặt làm việc tại thư mục cá nhân của mình. Thường thì mỗi người có một thư mục cá nhân riêng, người dùng có toàn quyền trên đó, nó dùng để chứa dữ liệu cá nhân và các thông tin hệ thống cho hoạt động của người dùng như biến môi trường, script khởi động, profile khi sử dụng X window … Home directory của người dùng thường là /home; cho root là /root. Tuy nhiên chúng ta cũng có thể đặt vào vị trí khác thông qua lệnh useradd hoặc usermod.

III. Quản lý người dùng

III.1. Tạo tài khoản người dùng

Để tạo một tài khoản, bạn có thể sử dụng lệnh useradd, cú pháp lệnh useradd như sau:

#useradd [-c lời_mô_tả_về_người_dùng] [-d thư_mục_cá_nhân] [-m] [-g nhóm_của_người_dùng] [tên_tài_khoản]

Lưu ý: Tham số –m được sử dụng để tạo thư mục cá nhân nếu nó chưa tồn tại. Và chỉ có root được phép sử dụng lệnh này.

Ví dụ:

# useradd –c “Nguyen van B “ nvb

Dùng lệnh passwd <username> để để đặt mật khẩu cho tài khoản.

# passwd nvb

Changing password for user nvb

New UNIX password: ****

Retype new UNIX password: ****

passwd: all authentication tokens updated successfully

Trong ví dụ trên, bạn tạo tài khoản người dùng và không quan tâm gì đến nhóm (group) của người dùng. Sẽ thuận lợi nếu bạn nhóm nhiều người dùng có cùng một chức năng và cùng chia sẻ nhau dữ liệu vào chung một nhóm. Mặc định khi bạn tạo một tài khoản, Linux sẽ tạo cho mỗi tài khoản một nhóm, tên nhóm trùng với tên tài khoản. Đọc tập tin /etc/passwd ta thấy:

nvb:x:1012:1013::/home/nvb:/bin/bash

nvb có user_ID 1012 và thuộc nhóm 1013.

Xem tập tin /etc/group ta thấy:

# more /etc/group

root:x:0:root

…………

users:x:100:

…………

nvb:x:1013:

Bạn có thể kết nạp tài khoản nvb vào nhóm users bằng cách thay số 1013 bằng 100, là group_ID của nhóm users. Ta có thể dùng lệnh useradd –D để xem các thông số mặc định khi ta tạo tài khoản người dùng (các thông tin này được lưu trong thư mục /etc/default/useradd):

# useradd -D

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

III.2. Thay đổi thông tin của tài khoản

Bạn có thể thay đổi lại thông tin tài khoản từ tập tin /etc/passwd hoặc dùng lệnh usermod. Cú pháp của lệnh usermod:

#usermod [-c mô_tả_thông_tin_người_dùng] [-d thư_mục_cá_nhân] [-m] [-g nhóm_của_người_dùng] [tên_tài_khoản].

Ví dụ: Cho tài khoản nvb vào nhóm admin

#usermod –g admin nvb

III.3. Tạm khóa tài khoản người dùng

Để tạm thời khóa tài khoản trong hệ thống ta có thể dùng nhiều cách:

Khóa (locking) Mở khóa (unlock)

passwd –l <username> passwd –u

usermod –L <username> usermod –U

Ta có tạm khóa tài khoản bằng cách chỉnh sửa tập tin /etc/shadow và thay thể từ khóa x bằng từ khóa * hoặc có gán /bin/false vào shell mặc định của user trong file /etc/passwd

III.4. Hủy tài khoản

Lệnh userdel dùng để xóa một tài khoản. Ngoài ra, bạn cũng có thể xóa một tài khoản bằng cách xóa đi dòng dữ liệu tương ứng với tài khoản đó trong tập tin /etc/passwd. Cú pháp của lệnh:

#userdel <option> [username]

Ví dụ xóa tài khoản nvb (dùng tùy chọn –r để xóa toàn bộ thông tin liên quan tới user đó) : #userdel –r nvb

IV. Nhóm người dùng

Thiết lập những người dùng có chung một số đặc điểm nào đó hay có chung quyền hạn trên tài nguyên vào chung một nhóm. Mỗi nhóm có một tên riêng và một định danh nhóm, một nhóm có thể có nhiều người dùng và người dùng có thể là thành viên của nhiều nhóm khác nhau. Tuy nhiên tại một thời điểm, một người dùng chỉ có thể là thành viên của một nhóm duy nhất.

Thông tin về nhóm lưu tại tập tin /etc/group. Mỗi dòng định nghĩa một nhóm, các trường trên dòng cách nhau bằng dấu :

<tên-nhóm>:<password-của-nhóm>:<định-danh-nhóm:các-user-thuộc-nhóm>

IV.1. Tạo nhóm

Chúng ta có thể chỉnh sửa trực tiếp trong tập tin /etc/group hoặc dùng lệnh groupadd. Cú pháp của lệnh:

#groupadd [tên-nhóm]

IV.2. Thêm người dùng vào nhóm

Chúng ta có thể sửa từ tập tin /etc/group, các tên tài khoản người dùng cách nhau bằng dấu “;”. Một cách khác là cho từng người dùng vào nhóm bằng lệnh:

#usermod –g [tên-nhóm tên-tài-khoản]

Hay sửa thông tin tài khoản trực tiếp trong tập tin /etc/passwd thông qua việc chỉnh sửa lại định danh nhóm trong dòng khai báo tài khoản người dùng.

IV.3. Hủy nhóm

Ta có thể xóa trực tiếp nhóm trong tập tin /etc/group hay dùng lệnh:

#groupdel [ tên-nhóm]

IV.4. Xem thông tin về user và group

Ta có thể dùng lệnh groups hoặc id để xem thông tin về một tài khoản hay một nhóm nào đó trong hệ thống, cú pháp lệnh:

#id <option> <username>

Ví dụ: Ta muốn xem groupID của một user tdnhon ta dùng lệnh:

#id –g tdnhon

Ta có thể xem tên nhóm của một user nào đó ta dùng lệnh groups <username>

Ví dụ:

[root@server root]# groups root

root : root bin daemon sys adm disk wheel


BÀI 7: Quản Lý Tài Nguyên Đĩa Cứng

I. Giới thiệu QUOTA

Quota được dùng để hiển thị việc

sử dụng và giới hạn đĩa cứng đối với người dùng. Không phải áp dụng quota cho tất cả những hệ thống tập tin. Chỉ có những hệ thống tập tin nào cần thiết chúng ta mới dùng quota (ví dụ như /home – /home phải là một partition). Khi được gọi, quota sẽ đọc tập tin /etc/fstab và kiểm tra những tập tin hệ thống trong tập tin này. Để giúp cho việc giới hạn có hiệu quả, trước khi cấu hình bạn cần hiểu những khái niệm sau:

– Giới hạn cứng(Hard Limit): Định nghĩa dung lượng đĩa cứng tối đa mà người dùng có thể sử dụng. Nếu người dùng cố tình lưu những thông tin vào thì những thông tin trước đó có thể bị xóa và đẩy lên dần. Việc giới hạn này thật mạnh mẽ và cần thiết đối với một số người dùng.

– Giới hạn mềm(Soft Limit): Định nghĩa dung lượng đĩa cứng tối đa mà người dùng có thể sử dụng. Tuy nhiên, không giống như giới hạn cứng, giới hạn mềm cho phép người dùng sử dụng vượt quá dung lượng cho phép trong một khoảng thời gian nào đó. Thời gian này được xác định trước và gọi là thời gian gia hạn (grace period). Khi người dùng vượt quá dung lượng cho phép, họ sẽ nhận một lời cảnh báo trước. Một ý kiến hay là bạn cấu hình giới hạn mềm nhỏ hơn giới hạn cứng, và cấu hình khi người dùng vượt quá dung lượng cho phép hệ thống sẽ gửi một lời cảnh báo trước khi cho phép người dùng lưu dữ liệu.

– Thời gian gia hạn(Grace Period): Là thời gian cho phép người dùng vượt quá dung lượng đĩa cứng được cấp phép trong giới hạn mềm.

II. Thiết lập Quota

Quá trình thiết lập quota sẽ trải qua những bước sau:

– Chỉnh sửa tập tin /etc/fstab.

– Thực hiện quotacheck.

– Phân bổ quota.

II.1. Chỉnh sửa tập tin /etc/fstab

Mở tập tin /etc/fstab để thêm một số thông số giới hạn usrquota (cho người dùng), grpquota(cho nhóm). Ví dụ file /etc/fstab:

/dev/md0/ext3defaults1 1
LABEL=/boot/bootext3defaults1 2
none/dev/ptsdevptsgid=5,mode=6200 0
LABEL=/home/homeext3defaults,usrquota,grpquota1 2
none /procprocdefaults0 0
none/dev/shmtmpfsdefaults0 0
/dev/md1swapswapdefaults0 0

Trong ví dụ trên, ta đặt cấu hình hạn ngạch trên hệ thống tập tin /home cho cả người dùng và nhóm bằng cách thêm các tùy chọn usrquota,grpquota (Trong đó usrquota để đặt hạn ngạch cho user và grpquota sử dụng cho nhóm).

Sau đó ta tạo các tập tin lưu trữ thông tin cấu hình cho user(aquota.user), cho nhóm(aquota.group) trong thư mục /home và đặt quyền hạn lên hai tập tin này.

#touch aquota.user

#chmod 600 aquota.user

#touch aquota.group

#chmod 600 aquota.group

Sau đó ta phải reboot lại hệ thống để remount lại file system /home thông qua lệnh init 6.

II.2. Thực hiện quotacheck

Sau khi đã cấp phép quota và gắn kết lại hệ thống tập tin, hệ thống bây giờ có khả năng làm việc quota. Tuy nhiên, những hệ thống tập tin này cũng chưa thực sự sẵn sàng, cho nên chúng ta cần dùng quotacheck. Lệnh quotacheck sẽ kiểm tra những hệ thống tập tin được cấu hình quota và xây dựng lại bảng sử dụng đĩa hiện hành.

#quotacheck –avug

Những tùy chọn:

+ -a : kiểm tra tất cả những hệ thống tập tin cấu hình quota.

+ -v : Hiển thị thông tin trạng thái khi kiểm tra.

+ -u : kiểm tra quota của người dùng.

+ -g : kiểm tra quota của nhóm.

II.3. Phân bổ quota

Người quản trị hệ thống sẽ thiết lập quota cho người dùng trong tập tin có tên aquota.user nằm trong hệ thống tập tin mà chúng ta muốn cấu hình quota. Tương tự, chúng ta cũng sẽ thiết lập quota cho nhóm trong tập tin aquota.group.

#edquota <option> <username>

Bạn có thể điều khiển lệnh quota một cách hiệu quả với những tùy chọn sau:

+ -g chỉnh sửa quota cho nhóm

+ -p sao chép quota của một người dùng cho một người dùng khác

+ -u chỉnh sửa quota cho người dùng(mặc định của lệnh)

+ -t chỉnh sửa thời gian của giới hạn mềm.

Ví dụ: #edquota –u hv

Disk quotas for user mp3user (uid 503):

Filesystem blocks soft hard inodes soft hard

/dev/hda3 24 0 0 7 0 0

– Blocks: Dung lượng(block) user đang sử dụng

– Inodes: Số lượng file user đang sử dụng.

– Soft Limit: Dung lượng giới hạn mềm (blocks/inodes), thông thường kích thước này phải <= kích thước giới hạn cứng. Nếu user sử dụng quá dung lượng này thì quota sẽ cấp một khoảng thời gian(grace periods). Khi Soft Limit bằng 0 có nghĩa giới hạn này không sử dụng.

– Hard Limit: Dung lượng giới hạn cứng (blocks/inodes)

– Sau đó ta chọn phím i để edit các thông số trên cho phù hợp, sau đó chọn phím Esc và chọn 😡

Sau khi thiết lập quota, bạn phải khởi động quota lên bằng lệnh quotaon /dev/hda3

– Với tùy chọn –a của lệnh quotaon sẽ kiểm tra tất cả những hệ thống tập tin.

– Lệnh quotaoff thì có tính năng ngược lại, tạm ngưng quota trên hệ thống tập tin.

III. Kiểm tra và thống kê hạn nghạch

Người dùng có thể dùng lệnh quota –v để xem hạn nghạch, cú pháp của lệnh:

#quota [tùy_chọn] [người_dùng] [nhóm]

Những tùy chọn của lệnh quota.

+ -g hiển thị quota của nhóm mà người dùng này là một thành viên.

+ -q chỉ hiển thị những hệ thống tập tin có thiết lập quota.

+ -u hiển thị quota của người dùng.

Ngoài ra ta có thể sử dụng quotastats, repquota để xem một số thông tin thống kê về hạn ngạch….

Ví dụ:

# repquota /home

*** Report for user quotas on device /dev/hda3

Block grace time: 7days; Inode grace time: 7days

Block limits File limits

User used soft hard grace used soft hard grace

——————————————————

root 52696 0 0 1015 0 0

mp3user 24 0 0 7 0 0

IV. Thay đổi Grace Periods

Ta có thể dùng lệnh edquota –t để thay đổi grace periods cho filesystem, đơn vị thời gian này có thể seconds, minutes, hours, days, weeks, and months. Để thay đổi thông số này sau khi ta dùng lệnh edquota –t ta dùng i để nhập giá trị (7days nếu ta muốn đặt 7 ngày) grace periods và dùng 😡 để lưu.

Ví dụ:

# edquota –t

Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds

Filesystem Block grace period Inode grace period

/dev/hda3 7days 7days


BÀI 08: Cấu Hình Mạng

I. Đặt tên máy

Lệnh hostname dùng để xem và cấu hình tên máy tính. Khi ta dùng lệnh hostname không kèm theo tham số, điều này có nghĩa là ta muốn xem tên máy của hệ thống.

Tuy nhiên ta cũng có thể dùng lệnh hostname <hostname> để đặt tên máy cho hệ thống nội bộ, tên máy sẽ được thay đổi một khi user logoff và logon trở lại. lệnh hostname chỉ đặt tên máy tạm thời, khi hệ thống reboot lại thì tên máy sẽ trở về tên cũ trước đó. Thông tin về tên máy tính được lưu trong tập tin /etc/hosts bao gồm các thông tin sau:

Địa chỉ ip <tên máy>

Nếu ta muốn thay đổi tên máy cố định và sẽ được lưu lại sau khi hệ thống reboot, ta sẽ thay đổi thông số HOSTNAME=<hostname> trong tập tin /etc/sysconfig/network mô tả thông tin về đường mạng:

NETWORKING=yes

HOSTNAME=Server

II. Cấu hình địa chỉ IP cho NIC

II.1. Xem địa chỉ IP

Xem thông tin địa chỉ IP của PC ta dùng lệnh ifconfig, lệnh này được sử dụng trên Unix/Linux.

eth0 là tên của card mạng trong, lo là tên của loopback interface. Ví dụ sau ta dùng lệnh ifconfig –a để xem thông tin cấu hình mạng trên card mạng.

# 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)

II.2. 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ụ :

[root@bigboy tmp]# ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up

Chú ý: Khi dùng lệnh này thay đổi địa chỉ IP thì hệ thống lưu trữ tạm thời thông tin cấu hình này trong bộ nhớ và sẽ bị mất khi hệ thống reboot lại, để cho thông tin này có thể được lưu giữ lại sau khi reboot hệ thống thì ta phải thêm lệnh trên vào tập tin /etc/rc.local.

– 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/networks-cripts/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 )

# Advanced Micro Devices [AMD]|79c970 [PCnet32

LANCE]

DEVICE=eth0

BOOTPROTO=static

BROADCAST=172.29.14.159

HWADDR=00:0C:29:6D:F0:3D

IPADDR=172.29.14.150

NETMASK=255.255.255.224

NETWORK=172.29.14.128

ONBOOT=yes

TYPE=Ethernet

Gán địa chỉ IP động(tham khảo file ifcfg-eth0)

DEVICE=eth0

BOOTPROTO=dhcp

ONBOOT=yes

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 Ích)

II.3. Tạo nhiều địa chỉ IP trên card mạng

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à chỉ số của interface thứ cấp

(subinterface number). Để tạo Alias IP ta dùng hai cách sau:

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:

# 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/networkscripts/ifcfg-eth0 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

# ifup eth0:0

# ifdown eth0:0

Hoặc dùng lệnh /etc/init.d/network restart

– Bước 4: Kiểm tra thông tin cấu hình alias interface dùng lệnh ifconfig:

# ifconfig

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/ifcfgeth0 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

II.4. Lệnh netstat

Để kiểm tra trạng thái của tất cả các card mạng ta dùng lệnh:

#netstat –in

Ví dụ:

0

Ngoài ra ta còn có thể dùng lệnh netstat –rn để xem bảng routing table của router (nếu trong trường hợp hệ thống của ta đống vai trò là router mềm)

Ví dụ:

III. 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:

# route add default gw 172.29.14.150

Ta có thể dùng lệnh route add để chỉ định nhiều default gateway:

# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254 eth0

hoặc ta có thể dùng option –host để chỉ định cho host:

# route add -host 10.0.0.1 gw 192.168.1.254 eth0

III.1 Mô tả đường đi (route) thông qua script file

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ư 1 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 của file này như sau:

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.

III.2. Xóa route trong bảng định tuyến

Để xóa đường đi(route) trong bảng định tuyến ta dùng lệnh route del

# route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.254 eth0

IV. Truy cập từ xa

Khi cấu hình hệ thống kết nối vào mạng, máy chủ sẽ cung cấp một số dịch vụ Internet. Thông

thường mỗi dịch vụ Internet gắn liền với một daemon và thực hiện trong chế độ background.

Những daemon này hoạt động bằng cách liên kết đến một cổng nào đó và sau đó đợi những yêu cầu kết nối được gởi đến từ chương trình client. Khi một kết nối xảy ra nó sẽ tạo ra một tiến trình con đảm nhiệm kết nối này và tiếp tục lắng nghe những yêu cầu kết nối khác. Nếu như hệ thống có quá nhiều daemon sẽ làm tăng xử lý của CPU. Để khắc phục điều này, Linux tạo ra một superserver gọi là Xinetd.

IV.1. xinetd

Mỗi dịch vụ Internet đều gắn liền với một cổng chẳng hạn như: smtp – 25, pop3 – 110, dns – 53…Việc phân bổ này do một tổ chức quy định.

Xinetd là một Internet server daemon. Xinetd quản lý tập trung tất cả các dịch vụ Internet. Xinetd quản lý mỗi dịch vụ tương ứng với một cổng(port). Xinetd lắng nghe và khi nhận được một yêu cầu kết nối từ các chương trình client, nó sẽ đưa yêu cầu đến dịch vụ tương ứng xử lý. Và sau đó, Xinetd vẫn tiếp tục lắng nghe những yêu cầu kết nối khác. Khi hệ điều hành được khởi động, Xinetd được khởi tạo ngay lúc này bởi script /etc/rc.d/init.d/xinetd. Khi Xinetd được khởi tạo, nó sẽ đọc thông tin từ tập tin cấu hình /etc/xinetd.conf và sẽ dẫn đến thư mục /etc/xinetd – nơi lưu tất cả những dịch vụ mà Xinetd quản lý. Trong thư mục /etc/xinetd, thông tin cấu hình của mỗi địch vụ được lưu trong một tập tin có tên trùng với tên dịch vụ đó. Nội dung tập tin của dịch vụ telnet cụ thể như sau:

service telnet

{

disable = yes

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

}

Những thuộc tính trong tập tin bao gồm :

TênÝ nghĩa
DisableTạm đình chỉ dịch vụ này. Có 2 giá trị: yes, no
Flags
Socket_typeLoại socket. Trong trường hợp này là stream,
stream là một loại socket cho những kết nối
connection-oriented chẳng hạn như TCP
WaitThường chỉ liên quan đến những kết nối có
loại socket là datagram. Giá trị của nó có thể
là nowait, điều này có nghĩa là xinetd sẽ tiếp
tục nhận và xử lý những yêu cầu khác trong
lúc xử lý kết nối này. Hoặc có thể là wait
nghĩa là tại một thởi điểm xinetd chỉ có thể xử
lý một kết nối tại một cổng chỉ định.
UserChỉ ra user chạy dịch vụ này. Thông thường
là root.
ServerChỉ ra đường dẫn đầy đủ đến nơi quản lý dịch vụ

IV.2. Tập tin /etc/services

Khi xinetd được khởi tạo nó sẽ truy cập đến tập tin /etc/services để tìm cổng tương ứng với từng dịch vụ. Nội dung của tập tin này như sau:

echo 7/tcp

echo 7/udp

discard 9/tcp sink null

discard 9/udp sink null

systat 11/tcp users

systat 11/udp users

daytime 13/tcp

daytime 13/udp

qotd 17/tcp quote

qotd 17/udp quote

msp 18/tcp# message send protocol

msp 18/udp# message send protocol

chargen 19/tcp ttytst source

chargen 19/udp ttytst source

ftp-data 20/tcp

ftp-data 20/udp

# 21 is registered to ftp, but also used by fsp

ftp 21/tcp

ftp 21/udp fsp fspd

ssh 22/tcp # SSH Remote Login Protocol

ssh 22/udp # SSH Remote Login Protocol

telnet 23/tcp

telnet 23/udp

# 24 – private mail system

smtp 25/tcp mail

smtp 25/udp mail

time 37/tcp timserver

time 37/udp timserver

rlp 39/tcp resource # resource location

rlp 39/udp resource # resource location

nameserver 42/tcp name # IEN 116

nameserver 42/udp name # IEN 116

Mỗi dòng trong tập tin mô tả cho một dịch vụ, bao gồm những cột sau:

– Cột 1: tên của dịch vụ.

– Cột 2: số cổng và giao thức mà dịch vụ này hoạt động.

– Cột 3: danh sách những tên gọi khác của dịch vụ này.

IV.3. Khởi động xinetd

Sau khi chỉnh sửa tập tin cấu hình của từng dịch vụ trong thư mục /etc/xinetd, ta thực hiện lệnh sau để đọc lại nội dung của tập tin cấu hình:

/etc/rc.d/init.d/xinetd restart

V. Telnet

V.1. Khái niệm telnet

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. 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ếp tại máy Linux.

V.2. 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ài bạn có thể cài

telnet server từ packet bằng dòng lệnh sau:

rpm –i telnet-server-0.17-20.i386.rpm

V.3. Cấu hình

Có nhiều cách cấu hình telnet server, sau đây là hai cách cấu hình cơ bản nhất:

– 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

{

disable = yes

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

}

Nếu disable là no thì TELNET server được khởi động, ngược lại nếu disable là yes thì TELNET server không được khởi động. Sau khi chỉnh sửa tập tin cấu hình trên ta start, stop bằng lệnh :

/etc/rc.d/init.d/xinetd restart

Hoặc dùng lệnh:

# service xinetd restart

– Cách 2: Cấu hình telnet Server bằng dòng lệnh: 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

Dừng telnet server:

# chkconfig telnet off

V.4. Bảo mật dịch vụ telnet

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.

# Local services

stelnet 7777/tcp # “secure” telnet

– Bước 2. Chép file telnet thành file stelnet.

# cp /etc/xinetd.d/telnet /etc/xinetd.d/stelnet

– Bước 3. Thay đổi một số thông tin trong file file /etc/xinetd.d/stelnet

service stelnet

{

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:

# telnet 192.168.1.100 7777

2 .Cho phép một số địa chỉ truy xuất telnet.

Ta hiệu chỉnh một số thông số sau::

service telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

disable = no

only_from = 192.168.1.100 127.0.0.1 192.168.1.200

}

VI. Secure Remote Access – SSH (Secure Shell)

Có rất nhiều người muốn biết mật khẩu của người dùng root để xâm nhập vào hệ thống nhằm mục đích phá hoại hệ thống hay tìm kiếm những thông tin nào đó. Chương trình telnet trong Linux cho phép người dùng đăng nhập vào hệ thống Linux từ xa, như nó có khuyết điểm của chương trình này là tên người dùng và mật khẩu gởi qua mạng không được mã hóa. Do đó, nó rất dễ bị những người khác nắm giữ và sẽ là mối nguy hiểm cho hệ thống. Phần mềm Secure Remote Access là một sự hỗ trợ mới của Linux nhằm khắc phục nhược điểm của telnet. Nó cho phép bạn đăng nhập vào hệ thống Linux từ xa và mật khẩu sẽ được mã hóa. Vì thế, SSH an toàn hơn nhiều so với telnet.

VI.1. Cài đặt SSH Server trên Server Linux

Dùng lệnh rpm để cài package openssh-server. *.rpm

rpm –ivh openssh-server.*.rpm

Tập tin cấu hình /etc/ssh/sshd_config và /etc/ssh/ssh_config. Để start hay stop server dùng lệnh sau:

/etc/init.d/sshd start/stop/restart

VI.2. 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 của lệnh:

$ssh [tùy_chọn] [tên/IP_máy] [tùy_chọn] [lệnh]

Ví dụ: $ssh [–l ] <tên_user> <ssh_address>

VI.3. Quản trị hệ thống Linux thông qua SSH client for Windows:

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 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”

VII. Dynamic Host Configuration Protocol

DHCP là một dịch vụ hữu ích trong việc quản trị những mạng lớn hay mạng có những người

dùng di động. DHCP Server là máy cấp phát địa chỉ IP cho những máy tính khác trong mạng,

DHCP client là các máy nhận địa chỉ IP và những thông tin về mạng khác từ DHCP Server.

VII.1. Một số đặc điểm cần lưu ý trên DHCP Server

– Phải có một địa chỉ IP tĩnh.

– Không phải là một DHCP client.

– Cấp phát địa chỉ IP cho những máy tính trong một khoảng địa chỉ IP mà người quản trị đã

định nghĩa.

– Có thể cung cấp địa chỉ default gateway, DNS server, tên domain và NetBIOS name server

cho máy tính.

– Không có hai máy nhận cùng địa chỉ IP.

– Địa chỉ IP cấp cho DHCP client sẽ được làm mới khi máy tính khởi động lại.

VII.2. Ưu điểm của việc sử dụng DHCP

Người quản trị không cần đặt địa chỉ IP cho từng máy tính trong mạng

Người quản trị không cần cung cấp thông tin cho từng máy điều này tiết kiệm được thời gian và một số chi phí khác.

VII.3. Cấu hình DHCP Server

Để cấu hình DHCP server bạn cần phải cài package dhcpd.*.rpm này trong đĩa CD Linux.

Cài đặt DHCP bằng lệnh: #rpm –ivh dhcpd.*.rpm

Để hoàn thành việc cấu hình DHCP bạn cần phải tạo ra tập tin cấu hình /etc/dhcpd.conf và chỉnh sửa tập tin này. Ví dụ về nội dung cấu hình chính của tập tin dhcpd.conf

ddns-update-style interim;

default-lease-time 600;

max-lease-time 7200;

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.1.255;

option routers 192.168.1.254;

option domain-name-servers 192.168.1.1,

192.168.1.2;

option domain-name “example.com”;

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.10 192.168.1.100;

}

Tập tin /var/lib/dhcp/dhcpd.leases. Tập tin này được sử dụng bởi daemon dhcpd để lưu những thông tin về các địa chỉ IP đã được cấp phát

VII.4. Khởi động dịch vụ DHCP:

Sau khi thiết lập những tập tin cấu hình, ta cần khởi động dịch vụ bằng lệnh sau:

#/etc/init.d/dhcpd start


Bài 13: Domain Name System

I. Giới thiệu về DNS

Mỗi máy tính trong mạng muốn liên lạc hay trao đổi thông tin, dữ liệu cho nhau cần phải biết rõ địa chỉ IP của nhau. Nếu số lượng máy tính nhiều thì việc nhớ những địa chỉ IP này rất là khó khăn. Vì thế, người ta nghĩ ra cách làm sao ánh xạ địa chỉ IP thành tên máy tính. Ban đầu do quy mô mạng ARPAnet (tiền thân của mạng Internet) còn nhỏ chỉ vài trăm máy, nên chỉ có một tập tin đơn HOSTS.TXT lưu thông tin về ánh xạ tên máy thành địa chỉ IP. Việc sử dụng tập
tin HOSTS.TXT có các nhược điểm như sau:

  • Lưu lượng mạng và máy chủ duy trì tập tin HOSTS.TXT bị quá tải do hiệu ứng “cổ chai”.
  • Xung đột tên: Không thể có 2 máy tính có cùng tên trong tập tin HOSTS.TXT. Tuy nhiên do tên máy không phân cấp và không có gì đảm bảo để ngăn chặn việc tạo 2 tên trùng nhau vì không có cơ chế uỷ quyền quản lý tập tin nên có nguy cơ bị xung đột tên.
  • Không đảm bảo sự toàn vẹn: việc duy trì 1 tập tin trên mạng lớn rất khó khăn. Ví dụ như khi tập tin HOSTS.TXT vừa cập nhật chưa kịp chuyển đến máy chủ ở xa thì đã có sự thay đổi địa chỉ trên mạng rồi.

Tóm lại việc dùng tập tin HOSTS.TXT không phù hợp cho mạng lớn vì thiếu cơ chế phân tán và mở rộng. Do đó, dịch vụ DNS ra đời nhằm khắc phục các nhược điểm này.

Dịch vụ DNS hoạt động theo mô hình Client – Server: phần Server gọi là máy chủ phục vụ tên nameserver, còn phần Client là trình phân giải tên resolver.

DNS là 1 CSDL phân tán. Điều này cho phép người quản trị cục bộ quản lý phần dữ liệu nội bộ thuộc phạm vi của họ, đồng thời dữ liệu này cũng dễ dàng truy cập được trên toàn bộ hệ thống mạng theo mô hình Client – Server. Hiệu suất sử dụng dịch vụ được tăng cường thông qua cơ chế nhân bản (replication) và lưu tạm (caching). Một hostname trong domain là sự kết hợp giữa những từ phân cách nhau bởi dấu chấm. Ví dụ hostname là server.t3h.com, trong đó server là hostname và t3h.com là domain name. Domain name phân bổ theo cớ chế phân cấp tương tự như sự phân cấp của hệ thống tập tin Unix/Linux.

Cơ sở dữ liệu(CSDL) của DNS là một cây đảo ngược. Mỗi nút trên cây cũng lại là gốc của 1 cây con. Mỗi cây con là 1 phân vùng con trong toàn bộ CSDL DNS gọi là 1 miền (domain). Mỗi domain có thể phân chia thành các phân vùng con nhỏ hơn gọi là các miền con (subdomain).

Tên miềnMô tả
.comCác tổ chức, công ty thương mại
.orgCác tổ chức phi lợi nhuận
.netCác trung tâm hỗ trợ về mạng
.eduCác tổ chức giáo dục
.govCác tổ chức thuộc chính phủ
.milCác tổ chức quân sự
.intCác tổ chức được thành lập bởi các hiệp ước quốc tế

II. Cách phân bổ dữ liệu quản lý domain name

Những root name server (.) quản lý những top-level domain trên Internet.

Tên máy và địa chỉ IP của những name server này được công bố cho mọi người biết và chúng được liệt kê trong bảng sau.

Tên máy tínhĐịa chỉ IP
H.ROOT-SERVERS.NET128.63.2.53
B.ROOT-SERVERS.NET128.9.0.107
C.ROOT-SERVERS.NET192.33.4.12
D.ROOT-SERVERS.NET128.8.10.90
E.ROOT-SERVERS.NET192.203.230.10
I.ROOT-SERVERS.NET192.36.148.17
F.ROOT-SERVERS.NET192.5.5.241
F.ROOT-SERVERS.NET39.13.229.241
G.ROOT-SERVERS.NET192.112.88.4
A.ROOT-SERVERS.NET198.41.0.4

III. Cơ chế phân giải tên

III.1 Phân giải tên thành IP

Root name server : Là máy chủ quản lý các nameserver ở mức top-level domain. Khi có truy vấn về một tên miền nào đó thì Root Name Server phải cung cấp tên và địa chỉ IP của name server quản lý top-level domain (Thực tế là hầu hết các root server cũng chính là máy chủ quản lý toplevel domain) và đến lượt các name server của top-level domain cung cấp danh sách các name server có quyền trên các second-level domain mà tên miền này thuộc vào. Cứ như thế đến khi nào tìm được máy quản lý tên miền cần truy vấn.

III.2 Phân giải IP thành tên máy tính

Để có thể phân giải tên máy tính của một địa chỉ IP, trong không gian tên miền người ta bổ sung thêm một nhánh tên miền mà được lập chỉ mục theo địa chỉ IP. Phần không gian này có tên miền là in-addr.arpa.

Mỗi nút trong miền in-addr.arpa có một tên nhãn là chỉ số thập phân của địa chỉ IP. Ví dụ miền inaddr. arpa có thể có 256 subdomain, tương ứng với 256 giá trị từ 0 đến 255 của byte đầu tiên trong địa chỉ IP. Trong mỗi subdomain lại có 256 subdomain con nữa ứng với byte thứ hai. Cứ như thế và đến byte thứ tư có các bản ghi cho biết tên miền đầy đủ của các máy tính hoặc các mạng có địa chỉ IP tương ứng.

Lưu ý khi đọc tên miền địa chỉ IP sẽ xuất hiện theo thứ tự ngược. Ví dụ nếu địa chỉ IP của máy winnie.corp.hp.com là 15.16.192.152, khi ánh xạ vào miền in-addr.arpa sẽ là 152.192.16.15.in-addr.arpa.

IV. Sự khác nhau giữa domain name và zone

Những miền và miền con mà DNS Server được quyền quản lý gọi là zone.

V. Fully Qualified Domain Name (FQDN)

Mỗi nút trên cây có một tên gọi(không chứa dấu chấm) dài tối đa 63 ký tự. Tên rỗng dành riêng cho gốc (root) cao nhất và biểu diễn bởi dấu chấm. Một tên miền đầy đủ của một nút chính là chuỗi tuần tự các tên gọi của nút hiện tại đi ngược lên nút gốc, mỗi tên gọi cách nhau bởi dấu chấm. Tên miền có xuất hiện dấu chấm sau cùng được gọi là tên tuyệt đối (absolute) khác với tên tương đối là tên không kết thúc bằng dấu chấm. Tên tuyệt đối cũng được xem là tên miền đầy đủ đã được chứng nhận (fully qualified domain name – FQDN).

VI. Phân loại Domain Name Server

VI.1 Primary Name Server

Mỗi miền phải có một Primary Name Server. Server này được đăng kí trên Internet để quản lý miền. Mọi người trên Internet đều biết tên máy tính và địa chỉ IP của server này. Người quản trị DNS sẽ tổ chức những tập tin CSDL trên Primary Name Server. Server này có nhiệm vụ phân giải tất cả các máy trong miền hay zone.

VI.2 Secondary Name Server

Mỗi miền có một Primary Name Server để quản lý CSDL của miền. Nếu như server này tạm ngưng hoạt động vì một lý do nào đó thì việc phân giải tên máy tính thành địa chỉ IP và ngược lại xem như bị gián đoạn. Việc gián đoạn này làm ảnh hưởng rất lớn đến những tổ chức có nhu cầu trao đổi thông tin ra ngoài Internet cao. Nhằm khắc phục nhược điểm này, những nhà thiết kế đã đưa ra một Server dự phòng gọi là Secondary(hay Slave) Name Server.

VI.3. Caching Name Server

Caching Name Server có chức năng phân giải tên máy trên những mạng ở xa thông qua những Name Server khác. Nó lưu giữ lại những tên máy đã được phân giải trước đó và được sử dụng lại những thông tin này nhằm mục đích:

  • Làm tăng tốc độ phân giải bằng cách sử dụng cache.
  • Giảm bớt gánh nặng phân giải tên máy cho các Name Server.
  • Giảm việc lưu thông trên những mạng lớn.

VII. Sự ủy quyền(Delegating Subdomains)

Một trong các mục tiêu khi thiết kế hệ thống DNS là khả năng quản lý phân tán thông qua cơ chế uỷ quyền (delegation). Trong một miền có thể tổ chức thành nhiều miền con, mỗi miền con có thể được uỷ quyền cho một tổ chức khác và tổ chức đó chịu trách nhiệm duy trì thông tin trong miền con này.

Ví dụ miền hcmuns.edu.vn của Trường ĐHKHTN
chia một số miền con như csc.hcmuns.edu.vn (Trung Tâm Tin Học), fit.hcmuns.edu.vn (Khoa CNTT) hay math.hcmuns.edu.vn (Khoa Toán), nhưng các máy chủ phục vụ cho toàn trường thì vẫn thuộc vào miền hcmuns.edu.vn.

VIII. Resource Record (RR)

VIII.1. SOA(Start of Authority)

Trong mỗi tập tin CSDL phải có một và chỉ một record SOA (start of authority). Record SOA chỉ ra rằng máy chủ Name Server là nơi cung cấp thông tin tin cậy từ dữ liệu có trong zone. Cú pháp của record SOA:
[tên-miền] IN SOA [tên-server-dns] [địa-chỉ-email] (
serial number;
refresh number;
retry number;
experi number;
Time-to-live number)

Ví dụ: Khai báo record SOA:

t3h.com. IN SOA dnsserver.t3h.com. root.t3h.com. (
2005040401 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day

Tên miền t3h.com. nằm ở cột đầu tiên. Từ khoá IN chỉ ra lớp (class) dữ liệu là Internet. Có một số lớp dữ liệu khác ngoài Internet nhưng mặc định là IN. Tên xuất hiện sau từ khoá SOA (dnsserver.t3h.com.) là tên của primary name server (primary master name server) cho zone này. Tên thứ hai (root.t3h.com.) là địa chỉ e-mail của người có trách nhiệm quản lý dữ liệu trong zone (dấu “.” đầu tiên được thay thế cho dấu “@”). Dấu ngoặc cho phép record SOA trải rộng trên nhiều dòng. Các dữ liệu trong phần này chủ yếu dùng cho các máy Secondary Name Server.

  • Serial : Áp dụng cho mọi dữ liệu trong zone và là 1 số nguyên. Trong ví dụ, giá trị này bắt đầu từ 1 nhưng thông thường người ta sử dụng theo định dạng thời gian như 1997102301. Định dạng này theo kiều YYYYMMDDNN, trong đó YYYY là năm, MM là tháng, DD là ngày và NN số lần sửa đổi dữ liệu zone trong ngày. Bất kể là theo định dạng nào, luôn luôn phải tăng số này lên mỗi lần sửa đổi dữ liệu zone. Khi máy chủ Secondary liên lạc với máy chủ
    Primary, trước tiên nó sẽ hỏi số serial. Nếu số serial của máy Secondary nhỏ hơn số serial của máy Primary tức là dữ liệu zone trên Secondary đã cũ và sau đó máy Secondary sẽ sao chép dữ liệu mới từ máy Primary thay cho dữ liệu đang có hiện hành.
  • Refresh: Chỉ ra khoảng thời gian máy chủ Secondary kiểm tra dữ liệu zone trên máy Primary để cập nhật nếu cần. Trong ví dụ trên thì cứ mỗi 3 giờ máy chủ Secondary sẽ liên lạc với máy chủ Primary để cập nhật dữ liệu nếu có. Giá trị này thay đổi tuỳ theo tần suất thay đổi dữ liệu trong zone.
  • Retry: nếu máy chủ Secondary không kết nối được với máy chủ Primary theo thời hạn mô tả trong refresh (ví dụ máy chủ Primary bị shutdown vào lúc đó thì máy chủ Secondary phải tìm cách kết nối lại với máy chủ Primary theo một chu kỳ thời gian mô tả trong retry. Thông thường giá trị này nhỏ hơn giá trị refresh.
  • Expire: Nếu sau khoảng thời gian này mà máy chủ Secondary không kết nối được với máy chủ Primary thì dữ liệu zone trên máy Secondary sẽ bị quá hạn. Một khi dữ liệu trên Secondary bị quá hạn thì máy chủ này sẽ không trả lời mọi truy vấn về zone này nữa. Giá trị expire này phải lớn hơn giá trị refresh và giá trị retry.
  • TTL: Viết tắt của time to live. Giá trị này áp dụng cho mọi record trong zone và được đính kèm trong thông tin trả lời một truy vấn. Mục đích của nó là chỉ ra thời gian mà các máy chủ name server khác cache lại thông tin trả lời. Việc cache thông tin trả lời giúp giảm lưu lượng truy vấn DNS trên mạng.

VIII.2. NS (Name Server)

Record tiếp theo cần có trong zone là NS (name server) record. Mỗi name server cho zone sẽ có một NS record. Cú pháp khai báo:
[tên-domain] IN NS [DNS-Server_name]

Ví dụ: Record NS sau:
t3h.com. IN NS dnsserver.t3h.com.
t3h.com. IN NS server.t3h.com.
Ví dụ trên chỉ ra 2 nameserver quản lý cơ sở dữ liệu cho miền t3h.com

VIII.3. A (Address) và CNAME (Canonical Name)

Record A (Address) ánh xạ tên máy(hostname) vào địa chỉ IP. Record CNAME (canonical name) tạo tên bí danh alias trỏ vào một tên canonical. Tên canonical là tên host trong record A hoặc lại trỏ vào 1 tên canonical khác.

Record A (Address) ánh xạ tên máy(hostname) vào địa chỉ IP. Record CNAME (canonical name) tạo tên bí danh alias trỏ vào một tên canonical. Tên canonical là tên host trong record A hoặc lại trỏ vào 1 tên canonical khác.
Cú pháp record A:
[tên-máy-tính] IN A [địa-chỉ-IP]
Ví dụ: Số record A trong tập tin db.t3h
// Hostname ánh xạ vào địa chỉ IP tương ứng
localhost.t3h.com. IN A 127.0.0.1
dnsserver.t3h.com. IN A 172.29.14.2
//Một hostname ánh xạ cho nhiều địa chỉ IP
server.t3h.com. IN A 172.29.14.1
server.t3h.com. IN A 192.253.253.1
// Chỉ định server.t3h.com. ánh xạ về www.t3h.com.
server.t3h.com. IN CNAME www.t3h.com.

VIII.4. MX (Mail Exchange)

Khi nhận được mail, trình chuyển mail (mailer) sẽ dựa vào record MX để quyết định đường đi của mail. Record MX chỉ ra một mail exchanger cho một miền – mail exchanger là một máy chủ xử lý (chuyển mail đến mailbox cục bộ hay làm gateway chuyển sang một giao thức chuyển mail khác như UUCP) hoặc chuyển tiếp mail đến một mail exchanger khác (trung gian) gần với mình nhất để đến tới máy chủ đích cuối cùng hơn dùng giao thức SMTP (Simple Mail Transfer Protocol).

Để tránh việc gửi mail bị lặp lại, record MX có thêm 1 giá trị bổ sung ngoài tên miền của mail exchanger là 1 số thứ tự tham chiếu. Đây là giá trị nguyên không dấu 16-bit (0-65535) chỉ ra thứ tự ưu tiên của các mail exchanger. Cú pháp record MX:
[tên-domain] IN MX [độ-ưu-tiên] [tên-Mail-Server]

Ví dụ:
t3h.com. IN MX 10 mailserver.t3h.com.
Chỉ ra máy chủ mailserver.t3h.com là một mail exchanger cho miền t3h.com với số thứ tự tham chiếu 10.
Chú ý: Các giá trị này chỉ có ý nghĩa so sánh với nhau:

Ví dụ: khai báo miền t3h.com có hai mail server quản lý là listo.t3h.com và hep.t3h.com quản lý.
– t3h.com. IN MX 1 listo.t3h.com.
– t3h.com. IN MX 2 hep.t3h.com.

Trình chuyển thư mailer sẽ thử phân phát thư đến mail exchanger có số thứ tự tham chiếu nhỏ nhất trước. Nếu không chuyển thư được thì mail exchanger với giá trị kế sau sẽ được chọn. Trong trường hợp có nhiều mail exchanger có cùng số tham chiếu thì mailer sẽ chọn ngẫu nhiên giữa chúng.

VIII.5. PTR (Pointer)

Record PTR (pointer) dùng để ánh xạ địa chỉ IP thành hostname. Cú pháp khai báo:
[địa-chỉ-IP] IN PTR [tên-máy-tính]
Ví dụ các record PTR cho các host trong mạng 192.249.249:
1.14.29.172.in-addr.arpa. IN PTR server.t3h.com.
2.14.29.172.in-addr.arpa. IN PTR dnsserver.t3h.com.
3.14.29.172.in-addr.arpa. IN PTR mailserver.t3h.com.
4.14.29.172.in-addr.arpa. IN PTR diehard.t3h.com.

IX. Hoạt động của Name Server trong Linux

DNS name server khi hoạt động sẽ phát sinh ra một một daemon có tên là named. Trong quá trình khởi động, named đọc các tập tin dữ liệu rồi chờ các yêu cầu phân giải qua cổng xác định trong tập tin /etc/services. Khi nhận được một yêu cầu từ resolver, đầu tiên Named dùng giao thức UDP để truy vấn. Nếu dùng giao thức UDP phân giải không có kết quả, sau đó named sẽ dùng giao thức TCP. Một số đặt điểm cần ghi nhớ trong quá trình truy vấn giữa Client và Server.

  • Truy vấn từ Client đến Server sử dụng cổng nguồn là 1023, cổng đích là 53.
  • Server trả lời truy vấn về cho sử dụng cổng nguồn là 53, cổng đích là lớn hơn 1023.
  • Truy vấn và trả lời giữa các server sử dụng giao thức UDP cổng nguồn và đích đều là 53, với TCP truy vấn của server sẽ sử dụng cổng > 1023.

X. Cài đặt BIND

X.1. Một số file cấu hình quan trọng

RedHat/Fedora BIND hoạt động trong hệ thống dưới dạng tiến trình named do user có tên named làm chủ sở hữu, Để tăng tính năng bảo mật trong hệ thống Fedora, BIND cung cấp thêm package bind-chroot-9.2.3-13.i386.rpm để giới hạn việc truy xuất vào các file cấu hình của named, khi ta cài chroot package thì named xem thư mục /var/named/chroot là thư mục gốc, các file /var/named/chroot/etc/named.conf là tập tin khai báo zone, /var/named/chroot/var/named/ là thư mục lưu trữ file cơ sở dữ liệu. Khi ta dùng chroot thì tất cả các file cấu hình named đều được đưa vào thư mục /var/named/chroot. Nếu ta không sử dụng package này nghĩa là ta loại bỏ bindchroot- 9.2.3-13.i386.rpm thì các file mô tả thông tin cấu hình DNS được lưu tại:

  • /etc/named.conf
  • /var/named/
  • /etc/rndc.key, /etc/rndc.conf là các file hỗ trợ cho vấn đề chứng thực trong named.

X.2. Cấu hình
Trước khi cấu hình những Name Server chúng ta cần phải trải qua những bước sau:

  • Tạo hoặc mở tập tin /etc/named.conf
  • Cấu hình zone file (forward zone file, reverse zone file)
  • Cấu hình DNS client

X.2.1 Cấu hình tập tin /etc/named.conf

Tập tin này chứa những thông tin quan trọng được sử dụng bởi daemon named khi daemon này khởi động. Nội dung của tập tin này như sau:

options { ; Chỉ định các tùy chọn
directory “/var/named”; Thư mục lưu trữ file cơ sở dữ liệu của zone
forwarders {172.29.2.2;}; Chỉ định truy vấn đệ quy lên server khi truy vấn ra ngoài
};
// Khai báo caching zone name
zone “.” {
type hint;
file “named.ca”;
};
// Khai báo zone thuận cục bộ localhost
zone “localhost” {
type master;
file “localhost.zone”;
allow-update { none; };

};
// Khai báo zone nghịch cục bộ localhost
zone “0.0.127.in-addr.arpa” {
type master;
file “named.local”;
allow-update { none; };
};
//khai báo zone thuận cục bộ t3h.com
zone “t3h.com” {
type master;
file “named.hosts”;
allow-query { any; };
};
//khai báo zone nghịch cho zone t3h.com
zone “14.29.172.in-addr.arpa” {
type master;
file “named.rev”;
allow-query { any; };
};

  • Directory: Thư mục làm việc của Server. Bất kỳ những đường dẫn không tuyệt đối nào đều ánh xạ đến thư mục này. Cú pháp: directory “[tên-thư-mục]”
  • forwarders: chỉ ra những địa chỉ IP của các name server mà nó sẽ gửi yêu cầu truy vấn khi có nhu cầu. Cú pháp: forwarders {[địa-chỉ-IP;]…}; Nameserver cục bộ sẽ truy vấn Name Server có địa chỉ IP 172.29.2.2 khi có một yêu cầu không phân giải được.

Ví dụ:
options {
directory “/var/named”;
forwarders {172.29.2.2;};
};

  • zone: định nghĩa một zone để quản lý CSDL cho miền hay miền con. Cú pháp khai báo:
    zone [ten-mien] IN {
    type master/slave/hint/stub;
    [ masters [ port ip_port ] { ip_addr [key key_id]; [ … ] }; ]
    file path_name;
    };
  • type: chỉ ra loại name server:
  • master: server có bản copy chính cơ sở dữ liệu.
  • Slave: server lưu một bản sao CSDL từ master. Nếu một tập tin được chỉ ra nó sẽ sao chép toàn bộ zone master về.
  • Stub: tương tự như slave nhưng chỉ sao chép record NS từ Master chứ không phải toàn bộ dữ liệu.
  • Hint: zone chỉ ra những root name server
  • masters: chỉ ra địa chỉ IP của master name server (sử dụng trong khai báo secondary zone)
  • file: tập tin định nghĩa CSDL.

X.2.2 Cấu hình zone file

  • Tạo tập tin CSDL phân giải tên máy tính thành địa chỉ IP
  • Tạo tập tin CSDL phân giải tên địa chỉ IP thành tên máy tính
    Sau đây là tuần tự những bước:

Bước 1: Tạo tập tin cơ sở dữ liệu chuyển đổi tên máy tính thành địa chỉ IP, Tập tin này lưu danh sách tất cả những máy tính trong miền. Nó được dùng để phân giải tên máy (hostname) thành địa chỉ IP. Những record khác như: CNAME, MX cũng được định nghĩa trong tập tin này.

Ví dụ:
@ IN SOA dnsserver.t3h.com. root.t3h.com. (
2001112800;
10800;
1800;
36000;
86400)
IN NS dnsserver.t3h.com.
IN MX 0 mailserver.t3h.com.
dnsserver IN A 172.29.14.2
server IN A 172.29.14.1
mailserver IN A 172.29.14.3
www IN CNAME server.t3h.com.

Bước 2: Tạo tập tin cơ sở dữ liệu chuyển đổi địa chỉ IP thành tên máy tính. Tập tin này được sử dụng để phân giải địa chỉ IP thành tên máy.

Ví dụ:
@ IN SOA dnsserver.t3h.com. root.t3h.com. (
2001112800;
10800;
1800;
3600000;
86400 )
IN NS dnsserver.t3h.com.
IN MX 0 mailserver.t3h.com.
2 IN PTR dnsserver.t3h.com.
1 IN PTR server.t3h.com.

X.2.3 Cấu hình DNS Client

Cấu hình DNS Client nhằm sử dụng công cụ nslookup kiểm tra những Name Server vừa cấu hình. Trong Linux, những thông số cấu hình DNS client được lưu trong tập tin /etc/resolv.conf. Tập tin /etc/resolv.conf dùng để quyết định DNS Server cụ thể cần phải truy vấn và cách bổ sung phần tên miền cho phần tên của máy. Nội dung của tập tin có dạng sau:
nameserver [địa-chỉ-IP-của-Name-Server]
domain [tên-miền]
Trong đó:

  • nameserver: dùng để định nghĩa máy chủ DNS mà resolver sẽ gửi yêu cầu phân giải tên hoặc địa chỉ IP khi có nhu cầu. Sau từ khoá Name Server là địa chỉ IP của Name Server.
  • domain: sẽ được nối thêm vào sau tên máy tính khi resolver gửi yêu cầu đến server.
    Ví dụ: Về nội dung tập tin /etc/resolver
    nameserver 172.29.14.2
    domain t3h.com

XI. Kiểm tra hoạt động của DNS

Một công cụ đắc lực giúp kiểm tra cấu hình dns là nslookup, hoặc lệnh host.

Lệnh nslookup:

#nslookup

Default Server: dnsserver.t3h.com

Address: 172.29.14.2

>www.t3h.com

Server: dnsserver.t3h.com
Address: 172.29.14.2
Name: WebServer.t3h.com
Address: 172.29.14.41
Aliases: www.t3h.com
Kiểm tra các record SOA, NS,MX của miền bằng lệnh:

>Set type=any

>domain_name

Ví dụ:

>set type=mx

>t3h.com

server: dnsserver.t3h.com
address: 172.29.14.2
dnsserver.t3h.com preference=0, mail exchanger=mailserver.t3h.com
t3h.com nameserver=dnsserver.t3h.com
dnsserver.t3h.com internet address=172.29.14.2

Lệnh host

#host www.linuxhomenetworking.com

www.linuxhomenetworking.com has address 65.115.71.34

#host 65.115.71.34

34.71.115.65.in-addr.arpa domain name pointer 65-115-71-34.myisp.net.

XII. Cấu hình Secondary Name Server

Cấu hình Secondary Name Server tương tự như cấu hình Primary Name Server nhưng có một
số điểm khác sau:

  • Không tạo các tập tin CSDL cho zone. Những tập tin này sẽ tự động được sao chép từ Primary Name Server về lưu tại máy một bản.
  • Trong tập tin /etc/named.conf thay thế thuộc tính type là master thành slave.
  • Cung cấp địa chỉ IP của Primary Name Server.
  • Ví dụ:

zone “netlab.vnedu.net”{
type slave;
file “sec/netlab.vnedu.net”;
masters{
172.29.9.199;
};
zone “29.29.192.in-addr.arpa”{
type slave;
file “named.rev”;
masters {192.29.29.1;};
};

XIII. Một số quy ước

Cột thứ 2 trong khai báo zone của tập tin /etc/named (zone “t3h.com” hay zone “14.29.172.inaddr.arpa”) có thể giúp ta một số khai báo nhanh chóng trong tập tin cơ sở dữ liệu như sau :

dnsserver.t3h.com. IN A 172.29.14.2
Có thể viết là :
dnsserver IN A 172.29.14.2
Khai báo
2.14.29.172.in-addr.arpa. IN PTR dnsserver.t3h.com.
Có thể viết là :
2 IN PTR dnsserver.t3h.com.
Khai báo
@ IN SOA dnsserver.t3h.com. root.t3h.com. (
1; serial
10800 ; refresh after 3 hours
36000; retry after 1 hour
604800; expire after 1 week
86400) ; minimum TTL of 1 day
tương đương với :
net.hcmuns.edu.vn. IN SOA …

Nếu cột đầu tiên của một entry trong tập tin cơ sở dữ liệu là các khoảng trắng hay spacebar thì nó sẽ lấy giá trị cột tương ứng của resource record ngay dòng trên của nó.

Ví dụ :
webserver IN A 172.29.14.41
webserver IN A 172.29.14.42
Có thể viết là :
webserver IN A 172.29.14.41
IN A 172.29.14.42

XIV. Cấu hình sự ủy quyền cho các miền con

Thông thường miền cha cung cấp các domain con cho miền con dưới hình thức ủy quyền cho miền con tự quản lý và tổ chức cơ sở dữ liệu cho miền con(thuật ngữ này thường được gọi là delegation domain), hoặc miền cha tạo hosting domain cho miền con (theo cách này thì miền cha phải tổ chức và quản lý cơ sở dữ liệu cho miền con ). Dựa vào sơ đồ trên ta thực hiện các thao tác cơ bản sau để thực hiện công việc cung cấp subdomain qua cơ chế ủy quyền cho các nameserver quản lý cơ sở dữ liệu của miền con. Tại nameserver quản lý cơ sở dữ liệu cho miền com.vn ta mô các thông tin sau để thực hiện cơ chế ủy quyền cho hai miền con vinamilk.com.vn và honda.com.vn cho hai server vinamilkserv, hondaserv quản lý:

vinamilkserv IN A <ipaddress1>

vinamilk IN NS vinamilkserv.com.vn.

Trong đó ipaddress1 là địa chỉ IP của nameserver quản lý cơ sở dữ liệu cho miền vinamilk.com.vn. Sau đó ta cần mô tả RR PTR cho vinamilkserv trong file mô tả cơ sở dữ liệu cho zone nghịch.

<host_id> IN PTR vinamilkserv.com.vn

Tương tự ta có thể ủy quyền miền honda.com.vn cho hondaserv.

hondaserv IN A <ipaddress2>

honda IN NS hondaserv.com.vn.

Trong đó ipaddress2 là địa chỉ IP của nameserver quản lý cơ sở dữ liệu cho miền honda.com.vn. Sau đó ta cần mô tả RR PTR cho hondaserv trong file mô tả cơ sở dữ liệu cho zone nghịch.

<host_id> IN PTR hondaserv.com.vn

Lưu ý: Ở miền con ta cần mô tả forwarders{ipaddress;…} lên miền cha để miền con nhờ nameserver của miền cha phân giải tên miền bên ngoài cho miền con.


BÀI 15: MAIL SERVER

Mục tiêu: Bài học giới thiệu cơ chế tổ chức và quản trị hệ thống Mail. Cung cấp cho người dùng hệ thống có thể sử dụng E-mail thông qua Mail POP Client và Webmail.

I. Những giao thức mail

Hệ thống mail được xây dựng dựa trên một số giao thức sau: Simple Mail Transfer Protocol (SMTP), Post Office Protocol (POP), Multipurpose Internet Mail Extensions (MIME) và Interactive Mail Access Protocol (IMAP ), được định trong RFC 1176 là một giao thức quan trọng được thiết kế để thay thế POP, nó cung cấp nhiều cơ chế tìm kiếm văn bản, phân tích message từ xa mà ta không tìm thấy trong POP. Trong phần này ta chỉ qua tâm tới ba giao thức SMTP, POP, MIME trong hệ thống mail.

I.1. SMTP(Simple Mail Transfer Protocol)

SMTP là giao thức tin cậy chịu trách nhiệm phân phát mail. Nó chuyển mail từ hệ thống mạng này sang hệ thống mạng khác, chuyển mail trong hệ thống mạng nội bộ. Giao thức SMTP được định nghĩa trong RFC 821, SMTP là một dịch vụ tin cậy, hướng kết nối( connection-oriented) được cung cấp bởi giao thức TCP(Transmission Control Protocol ), nó sử dụng số hiệu cổng (well-known port) 25. Sau đây là danh sách các tập lệnh trong giao thức SMTP.


ĐH KHTN-TPCHM 4/2006