GIÁO TRÌNH QUẢN TRỊ HỆ THỐNG LINUX BẬC CAO ĐẲNG ...

180
ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH GIÁO TRÌNH QUẢN TRỊ HỆ THỐNG LINUX BẬC CAO ĐẲNG LƯU HÀNH NỘI BỘ Tp. Hồ Chí Minh – 2018

Transcript of GIÁO TRÌNH QUẢN TRỊ HỆ THỐNG LINUX BẬC CAO ĐẲNG ...

ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH

GIÁO TRÌNH

QUẢN TRỊ HỆ THỐNG LINUX

BẬC

CAO ĐẲNG

LƯU HÀNH NỘI BỘ

Tp. Hồ Chí Minh – 2018

ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG CAO ĐẲNG KINH TẾ - KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH

GIÁO TRÌNH

QUẢN TRỊ HỆ THỐNG LINUX

THÔNG TIN NGƯỜI BIÊN SOẠN

Chủ biên: DƯƠNG ĐÌNH DŨNG

Học vị: Thạc sĩ

Thành viên tham dự

Học vị:

TRƯỞNG KHOA TỔ TRƯỞNG CHỦ NHIỆM

BỘ MÔN ĐỀ TÀI

Dương Đình Dũng

HIỆU TRƯỞNG

DUYỆT

Trang 1

LỜI NÓI ĐẦU

Linux là hệ điều hành nguồn mở, nó được phát triển dựa trên nền tảng

Unix, trong nhiều năm qua Linux nổi lên như một đối thủ của Microsoft

Windows - Một hệ điều hành phổ biến trên thế giới - Với những ưu điểm nổi

bật như: hệ điều hành nguồn mở, chạy trên đa nền tảng, đa người dùng và

đặc biệt nó cho phép tuỳ biến thành những kiểu hệ điều hành riêng. Ngay từ

khi xuất hiện, nó đã được lan rộng một cách nhanh chóng và biết tới như một

hệ điều hành Unix – với mã nguồn mở. Thật ngạc nhiên, sự thành công của

Linux có được nhờ sự làm lại một trong những hệ điều hành lâu đời nhất và

hiện đang được sử dụng rộng rãi – hệ điều hành Unix. Linux bao gồm cả các

công nghệ cũ và mới.

Xét trên góc độ kỹ thuật, Linux chỉ là một nhân hệ điều hành, nó hỗ trợ

đầy đủ các chức năng cũng như dịch vụ cơ bản trong một hệ điều hành như:

quản lý tiến trình, bộ nhớ ảo, quản lý file và vào ra thiết bị. Nói cách khác,

bản thân Linux là phần thấp nhất của hệ điều hành.

Ngày nay, Linux được phát triển hoàn chỉnh như một hệ điều hành máy

tính thực thụ với đầy đủ chức năng và hỗ trợ nhiều ứng dụng có thể phục vụ

cho tất cả các lĩnh vực trong đời sống như kinh tế, thương mại, khoa học kỹ

thuật, giáo dục,…

Điều làm cho Linux trở nên khác biệt là việc viết mã tự do của Unix. Việc

này do một nhóm phát triển tự nguyện trên mạng Internet, họ trao đổi mã

nguồn, phát hiện và sửa lỗi trong một môi trường mở.

Mọi người có thể được cài đặt trên một máy tính cá nhân và trở thành

một trạm làm việc với đầy đủ sức mạnh của Unix. Linux cũng có thể được sử

dụng với mục đích thương mại trên một mạng máy tính như một môi trường

tính toán và truyền tin. Trong các trường đại học, Linux được sử dụng để

giảng dạy về hệ điều hành và lập trình hệ điều hành. Và tất nhiên, Linux cũng

có thể được sử dụng trên các máy tính cá nhân như các hệ điều hành khác..

Trang 2

MỤC LỤC

CHƯƠNG 1. LÝ THUYẾT CHUNG VỀ HỆ ĐIỀU HÀNH UNIX VÀ

LINUX .................................................................................................. 8

Bài 1.1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ UNIX .......................... 9

1.1.1. Hệ điều hành ................................................................................ 9

1.1.2. Hệ điều hành Unix ..................................................................... 11

1.1.3. Giới thiệu về Kernel ................................................................... 16

1.1.4. Các ứng dụng trên linux ............................................................. 18

1.1.5. Câu hỏi củng cố ......................................................................... 19

Bài 1.2. CÀI ĐẶT HỆ ĐIỀU HÀNH LINUX .......................................... 20

1.2.1. Chuẩn bị cài đặt ......................................................................... 20

1.2.2. Phân chia ổ đĩa ........................................................................... 21

1.2.3. Thao tác cài đặt .......................................................................... 22

1.2.4. Bài tập: ...................................................................................... 44

* Tóm lược chương: ............................................................................ 44

CHƯƠNG 2. SỬ DỤNG HỆ ĐIỀU HÀNH LINUX ................................... 46

Bài 2.1. CÁC LỆNH CƠ BẢN ................................................................. 47

2.1.1. Qui ước lệnh .............................................................................. 47

2.1.2. Các tập lệnh: .............................................................................. 48

2.1.3. Chuyển hướng input, output ....................................................... 55

2.1.4. Trợ giúp lệnh ............................................................................. 58

2.1.5. Sử dụng các ký hiệu thay thế ..................................................... 60

2.1.6. Biến trong linux ......................................................................... 62

2.1.7. Cài đặt phần mềm ...................................................................... 63

2.1.8. Bài tập ....................................................................................... 72

Bài 2.2. LÀM VIỆC VỚI HỆ THỐNG THƯ MỤC VÀ QUẢN TRỊ

NGƯỜI DÙNG-NHÓM ................................................................................... 74

2.2.1. Làm việc với hệ thống tập tin ..................................................... 74

2.2.2. Quản trị người dùng và nhóm .................................................... 89

Trang 3

2.2.3. Bài tập: .................................................................................... 103

Bài 2.3. QUYỀN TRUY CẬP TIN TẬP VÀ THƯ MỤC ...................... 107

2.3.1. Giới thiệu: ................................................................................ 107

2.3.2. Nhóm lệnh chuyển quyền và chuyển quyền sở hữu .................. 111

2.3.3. Bài tập: .................................................................................... 113

Bài 2.4. TRÌNH SOẠN THẢO VÀ TRÌNH TIỆN ÍCH TRONG LINUX ....

................................................................................................. 116

2.4.1. Trình soạn thảo vi: ................................................................... 116

2.4.2. Một số trình soạn thào khác ..................................................... 120

2.4.3. Trình tiện ích ........................................................................... 122

2.4.4. Quản trị tiến trình và lập lịch ................................................... 126

2.4.5. Quản trị hệ thống Linux ........................................................... 138

2.4.6. Bài tập ..................................................................................... 139

* Tóm lược chương: .......................................................................... 141

CHƯƠNG 3. CẤU HÌNH MẠNG VÀ CHIA SẺ TÀI NGUYÊN TRÊN

LINUX .............................................................................................. 142

Bài 3.1. CẤU HÌNH MẠNG VÀ QUẢN TRỊ HỆ THỐNG ................... 143

3.1.1. Cấu hình mạng ......................................................................... 143

3.1.2. Các tiện ích trong mạng ........................................................... 153

3.1.3. Bài tập ..................................................................................... 156

Bài 3.2. CHIA SẺ TÀI NGUYÊN .......................................................... 158

3.2.1. Cấu hình Network File System (NFS) ...................................... 158

3.2.2. Dịch vụ samba ......................................................................... 164

* Tóm lược chương: .......................................................................... 176

3.2.3. Câu hỏi cũng cố phần lý thuyết: ............................................... 176

Trang 4

DANH MỤC HÌNH ẢNH

Hình 1.1.1-Linus Torvalds, “cha đẻ” của Linux .................................... 12

Hình 1.1.2.Slackware, hệ điều hành đầu tiên được ra mắt dựa trên nền tảng

Linux ...................................................................................................... 13

Hình 1.1.3. Android, một trong những hệ điều hành thành công nhất phát

triển trên nền tảng Linux ........................................................................ 13

Hình 1.1.4. Linux và Windows được xem là 2 đối thủ “không đội trời

chung” .................................................................................................... 14

Hình 1.1.5. Lịch sử phát triển Unix ....................................................... 15

Hình 1.1.6. Biểu tượng quen thuộc của GNU ....................................... 16

Hình 1.1.7. Cấu trúc Kernel của Linux .................................................. 18

Hình 1.2.1. Centos boot menu ............................................................... 22

Hình 1.2.2. Kiểm tra các đĩa cài đặt ....................................................... 23

Hình 1.2.3. Wellcome to Centos-4 i386 ................................................. 23

Hình 1.2.4. Language Selection: chọn ngôn ngữ (có tiếng Việt, không nên

chọn) ...................................................................................................... 24

Hình 1.2.5. Các kiểu cài đặt .................................................................. 24

Hình 1.2.6. Lựa chọn 2 kiểu để phân chia ổ cứng .................................. 25

Hình 1.2.7. Phân vùng thủ công với Disk Druid- Bước 1 ...................... 26

Hình 1.2.8. Phân vùng thủ công với Disk Druid- Bước 2 ...................... 26

Hình 1.2.9. Phân vùng thủ công với Disk Druid- Bước 3 ...................... 27

Hình 1.2.10. Phân vùng thủ công với Disk Druid- Bước 4 .................... 28

Hình 1.2.11. Phân vùng thủ công với Disk Druid- Bước 5 .................... 28

Hình 1.2.12. Phân vùng thủ công với Disk Druid- Bước 6 .................... 29

Hình 1.2.13. Cầu hình trình nap khởi động (boot loader)....................... 29

Hình 1.2.14. Cấu hình mạng (Network Configuration) - Bước 1 ........... 30

Hình 1.2.15. Cấu hình mạng (Network Configuration) - Bước 2 ........... 31

Hình 1.2.16. Cấu hình tường lửa (Firewall Configuration) .................... 31

Trang 5

Hình 1.2.17. Cảnh báo không có tường lửa (Warning – No Firewall) .... 32

Hình 1.2.18. Thêm ngôn ngữ hỗ trợ (Additional Language Support) ..... 32

Hình 1.2.19. Chọn múi giờ (Time Zone Selection) ................................ 33

Hình 1.2.20. Thiết lập mật khẩu Roor (Set Root Password) ................... 33

Hình 1.2.21. Lực chọn các gói phần mềm (Package Group Selecttion) . 34

Hình 1.2.22. Chi tiết các gói phần mềm trong nhóm (“Legacy Network

Server” ) ................................................................................................. 35

Hình 1.2.23. Tóm lược cài đặt (About to Install) ................................... 35

Hình 1.2.24. Yêu càu các đĩa cài đặt (Required Install Media) .............. 36

Hình 1.2.25. Quá trình cài các gói (Installing Package) ......................... 36

Hình 1.2.26. Hoàn tất quá trình cài đặt (Installation Complete) ............. 37

Hình 1.2.27. Cáu hình Grub cho menu chọn hệ điều hành ..................... 38

Hình 1.2.28. Wellcome: Chào mừng đến với Centos ............................. 40

Hình 1.2.29. Thoả thuận bảng quyền (License Agreement) ................... 40

Hình 1.2.30. Cấu hình ngày giờ (Date and Time) .................................. 41

Hình 1.2.31.Cấu hình màn hình (Display) ............................................. 41

Hình 1.2.32. Người dùng hệ thống (System User) ................................. 41

Hình 1.2.33. Cài thêm từ đĩa CD (Additional CDs) ................................ 42

Hình 1.2.34. Hoàn tất quá trình cài đặt .................................................. 42

Hình 1.2.35. Đăng nhập Centos (Centos Login) .................................... 42

Hình 1.2.36. Màn hình làm việc với Centos 4 (đăng nhập root) ............. 43

Hình 1.2.37. Shutdown hệ thống bằng lệnh trên Terminal ..................... 43

Hình 1.2.38. Màn hình chọn phương án ngưng làm việc ....................... 44

Hình 2.1.1.Các loại Shell trong Unix/Linux .......................................... 47

Hình 2.1.2-Luồng dữ liệu trong Unix/Linux ........................................... 56

Hình 2.1.3. Xem phiên bản (version) lệnh yum ..................................... 69

Hình 2.2.1.Cấu trúc cây thư mục trên hệ thống Unix ............................. 75

Hình 2.2.2.Cây thư mục theo ví dụ ........................................................ 80

Trang 6

Hình 2.2.3. Sử dụng lệnh Tree để xem cây thư mục .............................. 82

Hình 2.3.1. Quyền truy cập thư mục .................................................... 109

Hình 2.4.1. Hai loại phân vùng đĩa ...................................................... 123

Hình 2.4.2. Định danh tên phân vùng đĩa ............................................ 124

Hình 3.4.3. Cấu trúc lệnh Cron ............................................................ 134

Hình 3.1.1. Setup-Chọn công cụ thao tác (Network Configuration)..... 146

Hình 3.1.2. Thiết lập IP và Default Gateway ....................................... 146

Hình 3.1.3. Chọn dòng eth0 –card muốn đánh IP ................................ 146

Hình 3.1.4. Cấu hình IP và Gateway cho thiết bị ................................. 147

Hình 3.1.5. Màn hình chọn thiết bị sau khi gán xong IP, Gateway ...... 147

Hình 3.1.6. Chọn công cụ cấu hình DNS ............................................. 148

Hình 3.1.7. Gán hostname, DNS cho card mạng.................................. 148

Hình 3.1.8. Hoàn thành quá trình gán IP, DNS, Gateway .................... 148

Trang 7

DANH MỤC BẢNG

Bảng 2.1.1. Các tuỳ chọn của lện pr. ...................................................... 51

Bảng 2.1.2. Mô tả tuỳ chọn lệnh mail ..................................................... 54

Bảng 2.1.2. Mô tả tuỳ chọn lệnh man 5 pass .......................................... 60

Bảng 2.1.3. Các ký tự đại diện trong Linux ............................................ 60

Bảng 2.1.4. Ý nghĩa các ký tự đại diện ................................................... 61

Bảng 2.2.1. Mô tả các thư mục ............................................................... 75

Bảng 2.2.2. Giá trị trả về của lệnh groupdel ........................................... 98

Bảng 2.3.1. Giá trị các quyền biểu diễn bằng số ................................... 109

Bảng 2.3.2. Kết hợp các quyền truy cập ............................................... 110

Bảng 2.4.1. Các loại phân vùng đĩa ...................................................... 124

Bảng 3.4.2. Mẫu định dạng cấu hình cron phổ biến .............................. 134

Chương 1: Lý thuyết chung về hệ điều hành Unix và Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 8

Chương 1. LÝ THUYẾT CHUNG VỀ HỆ ĐIỀU HÀNH UNIX VÀ

LINUX

Giới thiệu chương

Trong chương này sẽ trình bày phần lý thuyết chung về hệ điều hành Unix và

Linux. Các khái niệm về hệ điều hành cũng được đề cấp đến giúp người học phân loại

được các hệ điều hành và vị trí sử dụng nó. Ngoài ra, Linux là một hệ điều hành mới,

trẻ trung và có đặc điểm nổi bật hiện nay là nó có nguồn mở giúp dễ dàng triển khai trên

các nền tảng công nghệ hiện có.

Chương đầu tiên này cũng hướng dẫn người học cài đặt một kiểu hệ thống tiêu

biểu trên nền tảng Intel PC.

Mục tiêu: học xong chương này, sinh viên có thể

- Trình bày được khái niệm về hệ điều hành và phân loại được các hệ điều hành

dành cho môi trường máy bàn và môi trường mạng

- Nêu được khái niệm về hệ điều hành nguồn mở và phân biệt được Unix với

Linux.

- Sơ lược được lịch sử phát triển các dòng linux

- Trình bày được qui trình cài đặt một hệ điều hành nguồn mở trên PC.

- Vẽ được sơ đồ phát triển các dòng linux và dẫn xuất của các dòng linux

- Minh hoạ được sơ đồ hạt nhân của hệ điều hành Unix/Linux

- Xây dựng được quy trình cài đặt hệ điều hành nguồn mở (Ubuntu, Centos)

trên máy PC một hệ điều hành và máy PC có sẵn Windows.

- Cẩn thận trong các khâu cài đặt.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 9

Bài 1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ UNIX

Bài 1.1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ UNIX

1.1.1. Hệ điều hành

Định nghĩa

Các máy tính ban đầu không có hệ điều hành. Người điều hành sẽ tải và chạy

chương trình một cách thủ công. Khi chương trình được thiết kế để tải và chạy chương

trình khác, nó đã thay thế công việc của con người.

Thuật ngữ “hệ điều hành” được dùng gần đây chỉ tới một phần mềm cần thiết để

người dùng quản lý hệ thống và chạy các phần mềm ứng dụng khác trên hệ thống. Nó

không chỉ có nghĩa là "phần lõi" tương tác trực tiếp với phần cứng mà còn cả các thư

viện cần thiết để các chương trình quản lý và điều chỉnh hệ thống.

Không có sự phân biệt rõ ràng giữa phần mềm ứng dụng và hệ điều hành. Tuy

nhiên, đôi khi vấn đề này cũng được tranh cãi. Thí dụ trường hợp Bộ Tư pháp Mỹ và

Microsoft tranh cãi Internet Explorer có phải là một phần của Windows không.

Cấp thấp nhất của hệ điều hành là phần lõi (còn gọi là nhân), lớp phần mềm đầu

tiên được tải vào hệ thống khi khởi động. Các phần mềm được tải tiếp theo phụ thuộc

vào nó sẽ cung cấp các dịch vụ cốt lõi cho hệ thống. Những dịch vụ phổ biến là truy

xuất đĩa, quản lý bộ nhớ, định thời, và truy xuất tới thiết bị phần cứng. Có nhiều tranh

cãi về những thành phần nào tạo nên phần lõi, như hệ thống tập tin có được đưa vào

phần lõi không.

1.1.1.1. Hệ điều hành đơn nhiệm một người dùng

Trong hệ điều hành đơn chương trình, toàn bộ hệ thống máy tính phục vụ một

chương trình từ lúc bắt đầu khi chương trình đó được đưa vào bộ nhớ trong cho đến thời

điểm kết thúc chương trình đó. Khi một chương trình người dùng đã được đưa vào bộ

nhớ thì nó chiếm giữ mọi tài nguyên của hệ thống và vi vậy chương trình của người

dùng khác không thể được đưa vào bộ nhớ trong.

Trong hệ điều hành loại này, mỗi lần chỉ cho phép một người đăng nhập vào hệ

thống và các chương trình phải được thực hiện lần lượt. Hệ điều hành này không đòi hỏi

bộ vi xử lý mạnh. Một ví dụ điển hình là hệ điều hành MS-DOS

1.1.1.2. Hệ điều hành đa chương (Multiprogramming System)

Hệ điều hành đa chương (Multiprogramming System): Đây là hệ cho phép nhiều

công việc cùng chạy một lúc. Cùng chia sẻ quyền sử dụng CPU theo một thuật toán nào

đó. Ví dụ như Windows 3.1, Windows 9x…

* Đa chương một người dùng:

Với hệ điều hành loại này chỉ cho phép một người được đăng kí vào hệ thống

nhưng có thể kích hoạt cho hệ thống thực hiện đồng thời nhiều chương trình. Vì tính đa

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 10

nhiệm và chạy nhiều chương trình nên hệ điều hành loại này đòi hỏi bộ vi xử lý mạnh.

Ví dụ: Hệ điều hành Windows 3.1, Windows 95, Windows 98,...

* Đa chương nhiều người dùng:

Hệ điều hành loại này cho phép nhiều người được đăng ký vào hệ thống. Hệ thống

có thể thực hiện đồng thời nhiều chương trình. Đòi hỏi bộ vi xử lý mạnh, bộ nhớ trong

lớn, thiết bị ngoại vi phong phú. Ví dụ: Windows 2000, Windows Server, Win XP,

Unix/Linux...

1.1.1.3. Hệ điều hành mạng - NOS (Network Operating System)

Cùng với sự nghiên cứu và phát triển mạng máy tính, hệ điều hành mạng đã được

nhiều công ty đầu tư nghiên cứu và đã công bố nhiều phần mềm quản lý và điều hành

mạng có hiệu quả như: NetWare của công ty NOVELL, LAN Manager của Microsoft

dùng cho các máy server chạy hệ điều hành OS/2, LAN server của IBM (gần như đồng

nhất với LAN Manager), Vines của Banyan Systems là hệ điều hành mạng dùng cho

server chạy hệ điều hành UNIX, Promise LAN của Mises Computer chạy trên card điều

hợp mạng độc quyền, Widows for Workgroups của Microsoft, LANtastic của Artisoft,

NetWare Lite của Novell,…. Hệ điều hành mạng cung cấp các phục vụ về mạng như

dùng chung file, máy in, quản lý tài khoản người dùng .... Nếu máy trạm dựa vào các

dịch vụ được cung cấp bởi máy chủ, một NOS được thiết kế tốt sẽ cung cấp cơ chế bảo

vệ cũng như khả năng đa nhiệm điều này giúp tránh được các lỗi đáng tiếc xảy ra. Xét

về mặt kỹ thuật thì sự khác nhau giữa máy trạm và máy chủ phụ thuộc vào phần mềm

được cài đặt trên đó. Ví dụ hệ điều hành mạng như Windows NT, Linux, NetWare,…

1.1.1.4. Vai trò và cấu trúc của hệ điều hành

Theo nguyên tắc, hệ điều hành cần thỏa mãn hai chức năng chính yếu sau:

1.1.1.4.1. Quản lý chia sẻ tài nguyên

Tài nguyên của hệ thống (CPU, bộ nhớ, thiết bị ngoại vi,...) vốn rất giới hạn, nhưng

trong các hệ thống đa nhiệm, nhiều người sử dụng có thể đồng thời yêu cầu nhiều tài

nguyên. Để thỏa mãn yêu cầu sử dụng chỉ với tài nguyên hữu hạn và nâng cao hiệu quả

sử dụng tài nguyên, hệ điều hành cần phải có cơ chế và chiến lược thích hợp để quản lý

việc phân phối tài nguyên.

Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phí, người sử dụng còn cần

phải chia sẻ thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều hành cần đảm bảo

việc truy xuất đến các tài nguyên này là hợp lệ, không xảy ra tranh chấp, mất đồng

nhất,...

1.1.1.4.2. Giả lập một máy tính mở rộng

Hệ điều hành làm ẩn đi các chi tiết phần cứng, người sử dụng được cung cấp một

giao diện đơn giản, dễ hiểu, dễ sử dụng và không phụ thuộc vào thiết bị phần cứng cụ

thể.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 11

Thực tế, ta có thể xem Hệ điều hành như là một hệ thống bao gồm nhiều máy tính

trừu tượng xếp thành nhiều lớp chồng lên nhau, máy tính mức dưới phục vụ cho máy

tính mức trên. Lớp trên cùng là giao diện trực quan nhất để chúng ta điều khiển.

Ngoài ra có thể chia chức năng của Hệ điều hành theo bốn chức năng sau:

- Quản lý quá trình (process management)

- Quản lý bộ nhớ (memory management)

- Quản lý hệ thống lưu trữ (storage management)

- Giao tiếp với người dùng (user interaction)

1.1.1.4.3. Nhiệm vụ của hệ điều hành

- Điều khiển và quản lý trực tiếp các phần cứng như bo mạch chủ, bo mạch đồ

họa và bo mạch âm thanh,...

- Thực hiện một số thao tác cơ bản trong máy tính như các thao tác đọc, viết

tập tin, quản lý hệ thống tập tin (file system) và các kho dữ liệu.

- Cung ứng một hệ thống giao diện sơ khai cho các ứng dụng thường là thông

qua một hệ thống thư viện các hàm chuẩn để điều hành các phần cứng mà từ

đó các ứng dụng có thể gọi tới.

- Cung ứng một hệ thống lệnh cơ bản để điều hành máy. Các lệnh này gọi là

lệnh hệ thống (system command).

- Ngoài ra hệ điều hành, trong vài trường hợp, cũng cung cấp các dịch vụ cơ

bản cho các phần mềm ứng dụng thông thường như chương trình duyệt

Web, chương trình soạn thảo văn bản....

1.1.2. Hệ điều hành Unix

1.1.2.1. Lịch sử Unix

Giữa năm 1960, AT&T Bell Laboratories và một số trung tâm khác tham gia vào

một cố gắng nhằm tạo ra một hệ điề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ì

đó là một dự án quá nhiều tham vọng và do đó không khả thi. Thậm trí nhiều yêu cầu

đối với Multics thời đó đến nay vẫn chưa có được trên các Unix mới nhất. Nhưng Ken

Thompson, Dennis Ritchie, và một số đồng nghiệp của Bell Labs đã không bỏ cuộc.

Thay vì xây dựng một hệ điều hành làm nhiều việc một lúc như Multics, họ quyết định

phát triển một hệ điều hành đơn giản chỉ làm tốt một việc là chạy chương trình (run

program). hệ điều hành sẽ có rất nhiều các công cụ (tool) nhỏ, đơn giản, gọn nhẹ

(compact) và chỉ làm tốt một công việc. Bằng cách kết hợp nhiều công cụ lại với nhau,

họ sẽ có một chương trình thực hiện một công việc phức tạp. Đó cũng là cách thức người

lập trình viết ra chương trình. Peter Neumann đặt tên Unix cho hệ điều hành "đơn giản"

này. Vào năm 1973, sử dụng ngôn ngữ C của Ritchie, Thompson đã viết lại toàn bộ hệ

điều hành Unix và đây là một thay đổi quan trọng của Unix, vì nhờ đó Unix từ chỗ là hệ

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 12

điều hành cho một máy PDP-xx trở thành hệ điều hành của các máy khác với một cố

gắng tối thiểu để chuyển đổi. Khoảng 1977 bản quyền của UNIX được giải phóng và hệ

điều hành UNIX trở thành một thương phẩm.

1.1.2.2. Sơ lược lịch sử Linux

Lịch sử của Linux đã bắt đầu vào năm 1991 với sự bắt đầu của một dự án cá nhân

của sinh viên Phần Lan Linus Torvalds để tạo ra một hạt nhân hệ điều hành miễn phí

mới. Kể từ đó, các kết quả của nhân Linux đã được tăng trưởng liên tục trong suốt lịch

sử của nó. Kể từ khi phát hành mã nguồn của nó lần đầu vào năm 1991, nó đã phát triển

từ một số nhỏ các tập tin viết bằng C theo một giấy phép cấm phân phối thương mại đến

các phiên bản 3.10 vào năm 2013 với hơn 16 triệu dòng mã nguồn dưới Giấy phép Công

cộng GNU.

Những cột mốc đáng chú ý trong quá trình phát triển Linux

- Ngày 5/4/1991, Linus Torvalds, chàng sinh viên 21 tuổi của trường Đại học

Helsinki, Phần Lan đã bắt tay vào viết những dòng lệnh đầu tiên của Linux.

Hình 1.1.1-Linus Torvalds, “cha đẻ” của Linux

- Tháng 8/1991, Torvalds gửi đi thông điệp đã trở thành nổi tiếng sau này về

sự ra đời của Linux: “Tôi đang làm một hệ điều hành miễn phí (chỉ làm theo

sở thích, và sẽ không lớn và chuyên nghiệp)”. Ngay chính Torvalds cũng

không ngờ đến sự thành công của Linux như ngày hôm nay.

- Tháng 9/1991, phiên bản Linux 0.01, phiên bản Linux đầu tiên được Torvalds

công bố, với 10.239 dòng lệnh. Phiên bản 0.02 được ra mắt 1 tháng sau đó.

- Năm 1992, Torvals đã có một quyết định được cho là đúng đắn khi phát hành

Linux dưới dạng mã nguồn mở của giấy phép GPL, cho phép tất cả mọi người

có quyền download về để xem mã nguồn để cung chung tay phát triển. Đây

được xem là quyết định đã giúp Linux có được sự phổ biến như ngày nay.

- Năm 1993, Slackware, hệ điều hành đầu tiên phát triển dựa trên mã nguồn

Linux được ra đời. Slackware là một trong những hệ điều hành Linux đầu tiên

và có tuổi đời lâu nhất hiện nay. Phiên bản mới nhất của Slackware được công

bố vào tháng 5/2010.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 13

Hình 1.1.2.Slackware, hệ điều hành đầu tiên được ra mắt dựa trên nền tảng Linux

- Ngày 14/3/1994, sau 3 năm làm việc miệt mài, Torvalds cho ra mắt phiên bản

hoàn thiện đầu tiên, Linux 1.0 với 176.250 dòng lệnh. 1 năm sau đó, phiên

bản 1.2 ra mắt với 310.950 dòng lệnh.

- Ngày 3/11/1994, Red Hat Linux, phiên bản 1.0 được giới thiệu. Đây là một

trong những hệ điều hành được thương mại hóa đầu tiên dựa trên Linux.

- Năm 1996, Linus Torvalds ghé thăm công viên hải dương học, tại đây, ông

đã quyết định sử dụng hình ảnh chú chim cánh cụt để làm biểu tượng chính

thức của Linux.

- Năm 1998, Linux bắt đầu được các “ông lớn” công nghệ quan tâm và đầu tư

để phát triển. Nổi bật trong số đó là IBM. Công ty này đã đầu tư hàng tỉ USD

để phát triển các dịch vụ và phần mềm trên nền tảng Linux, với đội ngũ nhân

viên phát triển hơn 300 người. Ngoài IBM, Compaq và Oracle cũng bắt đầu

đầu tư và phát triển Linux.

- Năm 2005, Linus Torvalds được xuất hiện trên trang bìa của tạp chí về kinh

tế BusinessWeek, với câu chuyện về sự thành công của hệ điều hành Linux.

- Năm 2007, hàng loạt hãng sản xuất máy tính lớn như HP, ASUS, Dell,

Lenovo bắt đầu bán ra các sản phẩm laptop được cài đặt sẵn Linux.

- Tính đến thời điểm hiện tại, Linux đã có rất nhiều biến thể và phiên bản khác

nhau, được xây dựng và phát triển riêng biệt bởi các công ty phần mềm và

các cá nhân. Nổi bật trong số đó chính là hệ điều hành di động Android của

Google, hiện là một trong những hệ điều hành thông dụng nhất hiện nay.

Hình 1.1.3. Android, một trong những hệ điều hành thành công nhất phát triển trên nền tảng Linux

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 14

- Đến tháng 1/2009, số người dùng Linux trên toàn cầu đạt mốc 10 triệu người.

- Hiện nay, sau 20 năm tồn tại và phát triển, Linux được sử dụng rộng rãi trên

toàn thế giới, trên các máy tính cá nhân, các máy chủ, đến các thiết bị di động,

máy nghe nhạc, máy tính bảng, các máy ATM và thậm chí trên cả các siêu

máy tính…

- Từ phiên bản đầu tiên với hơn 10 ngàn dòng lệnh, ngày 14/3/2011, sau 20

năm tồn tại và phát triển, nền tảng Linux 2.6.38 được phát hành, với

14.294.493 dòng lệnh, đánh dấu một chặng đường tồn tại và phát triển lâu dài

của Linux.

- Ngày nay, Linux được xem là biểu tượng của sự chia sẻ cộng đồng, được phát

triển bởi cộng đồng và được ủng hộ vì hoàn toàn miễn phí. Linux được xem

là sự đối địch của Windows (Microsoft), bởi nhiều người cho rằng, với

Microsoft tất cả chỉ có lợi nhuận.

Hình 1.1.4. Linux và Windows được xem là 2 đối thủ “không đội trời chung”

1.1.2.3. Các dòng sản phẩm chính xuất phát từ Unix

System V của AT&T, Novell và Berkeley Software Distribution (BSD) của Đại

học Berkeley.

System V:

Các phiên bản UNIX cuối cùng do AT&T xuất bản là System III và một vài phát

hành (releases) của System V. Hai bản phát hành gần đây của System V là Release 3

(SVR3.2) và Release 4.2 (SVR4.2). Phiên bản SYR 4.2 là phổ biến nhất cho từ máy PC

cho tới máy tính lớn.

BSD:

Từ 1970 Computer Science Research Group của University of California tại

Berkeley (UCB) xuất bản nhiều phiên bản UNIX, được biết đến dưới tên Berkeley

Software Distribution, hay BSD. Cải biến của PDP-11 được gọi là 1BSD và 2BSD. Trợ

giúp cho các máy tính của Digital Equipment Corporation VAX được đưa vào trong

3BSD. Phát triển của VAX được tiếp tục với 4.0BSD, 4.1BSD, 4.2BSD, và 4.3BSD

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 15

Trước 1992, UNIX là tên thuộc sở hữu của AT&T. Từ 1992, khi AT&T bán bộ

phận Unix cho Novell, tên Unix thuộc sở hữu của X/Open foundation. Tất cả các hệ

điều hành thỏa mãn một số yêu cầu đều có thể gọi là Unix. Ngoài ra, Institute of

Electrical and Electronic Engineers (IEEE) đã thiết lập chuẩn "An Industry-Recognized

Operating Systems Interface Standard based on the UNIX Operating System." Kết quả

cho ra đời POSIX.1 (cho giao diện C ) và POSIX.2 (cho hệ thống lệnh trên Unix)

Kết lại, vấn đề chuẩn hóa UNIX vẫn còn rất xa kết quả cuối cùng. Nhưng đây là

quá trình cần thiết có lợi cho sự phát triển của ngành tin học nói chung và sự sống còn

của hệ điều hành UNIX nói riêng.

Hình 1.1.5. Lịch sử phát triển Unix

1.1.2.4. Đặc điểm chung của Unix

Hệ điều hành UNIX có một số đặc điểm sau:

- Đa chương

- Nhiều người sử dụng

- Bảo mật

- Độc lập phần cứng

- Hệ mở

- Dùng chung thiết bị

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 16

- Tổ chức tập tin phân cấp

1.1.2.5. Vấn đề bản quyền của GNU project

Trong dòng chảy của sự phát triển của Unix, năm 1983 đã diễn ra một sự kiện quan

trọng, là tiền đề cho những biến động lớn sau này.

Tháng 9 năm 1983, Richard Stallman thông báo về sự ra đời của dự

án GNU (GNU là viết tắt của từ GNU’s not Unix =)))

Hình 1.1.6. Biểu tượng quen thuộc của GNU

Mục tiêu của dự án GNU là tạo ra được một hệ điều hành miễn phí, giống Unix,

nơi mà mọi người có quyền tự do copy, phát triển, chỉnh sửa và phân phối phần mềm,

và việc tái phân phối là không bị giới hạn. (Nên nhớ, Unix và các phiên bản rẽ nhánh từ

Unix ban đầu đều là close source và bị ràng buộc bản quyền)

Năm 1985, Richard thành lập tổ chức Free Software Foundation (FSF) đây là

một tổ chức phi lợi nhuận muốn thúc đẩy sự tự do trong trong phát triển phần mềm.

Project GNU đã tạo ra được rất nhiều sản phẩm quan trọng như GNU Compiler

Collection (gcc), GNU Debugger, GNU Emacs text editor (Emacs), GNU build

automator (make) … Ngoài ra còn phải kể đến giấy phép nổi tiếng được sử dụng rộng

rãi nhất hiện nay: GNU General Public License (GPL)

GNU Project đã đạt được nhiều thành tựu lớn, tạo ra được nhiều công cụ tương tự

như những gì có trên Unix. Tuy nhiên, GNU vẫn thiếu một thành phần quan trọng,

mảnh ghép cuối cùng để nó trở thành một hệ điều hành hoàn chỉnh. Đó chính

là Kernel, phần thực hiện công việc điều khiển, giao tiếp với các thiết bị phần cứng

(CPU, RAM, Devices …).

1.1.3. Giới thiệu về Kernel

1.1.3.1. Kernel của Linux

Tính đến thời hiểm hiện tại (7/1/2017), thì phiên bản Linux Stable mới nhất là 4.9.

Bạn có thể check danh sách các bản release Linux kernel ở trang chủ của dự án

tại https://www.kernel.org/

Ngoài ra, để kiểm tra version Kernel trên Distro mà bạn đang sử dụng, bạn có thể

dùng lệnh uname -r. Ví dụ

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 17

1

2

$ uname -r

4.8.6-x86_64 // HDH của tôi đang sử dụng nhân Linux

4.8.6 dành cho máy tính x86_64, tức máy tính sử dụng

vi xử lý Intel

Sử dụng lệnh uname -a sẽ in ra toàn bộ thông tin về hệ thống, hay uname -o sẽ in

ra thông tin về tên hệ điều hành. Và khi đó bạn sẽ nhận được kết quả là tên hệ điều hành

là GNU/Linux đấy, chứ không phải chỉ là Linux đâu.

Unix-like

Ở phần đầu, tôi đã nhắc đến việc MacOS là một trong số ít các hệ điều hành được

chứng nhận của Single UNIX Specification (SUS), và được coi là một hệ điều

hành Unix-like.

Hiện thương hiệu UNIX thuộc bản quyền của tổ chức The Open Group (chú ý là

các chữ cái trong tên thương hiệu UNIX đều được viết hoa, trong khi để chỉ hệ điều

thành thì ta có thể viết Unix hoặc UNIX).

Khái niệm “Unix-like” vốn được dùng để chỉ những hệ điều hành có được chứng

nhận SUS, và có thể sử dụng thương hiệu UNIX.

Một câu hỏi đặt ra là: Vậy theo định nghĩa ở trên thì Linux có phải là một hệ điều

hành “Unix-like” hay không? Đáng tiếc câu trả lời là Không.

Đã từng có dự án giúp Linux đạt được SUS, nhưng cuối cùng không đi đến đâu cả,

và hiện tại các Distro Linux cũng không được phép sử dụng trademark UNIX.

Bên cạnh cách hiểu “Unix-like” như là một phần gắn kèm với SUS, còn có những

ý kiến cho rằng nên dùng từ Unix-like theo nghĩa rộng hơn. Cụ thể, có thể chia ra làm 3

loại Unix-like:

- Genetic UNIX: Chỉ những hệ điều hành có liên quan trực tiếp đến codebase

của phiên bản Unix của Bell Labs.

- Trademark UNIX: Những hệ điều hành thoản mãn yêu cầu SUS và có thể sử

dụng thương hiệu UNIX.

- Functional UNIX: Những hệ điều hành “hoạt động giống Unix”, và Linux có

thể được xếp vào loại này.

Chú ý phân biệt số phiên bản của hệ điều hành (Linux kernel) với phiên bản của

các phân phối (ví dụ RedHat 7.1 với kernel Linux 2.4.2-14).

1.1.3.2. Các chức năng chính của Kernel

Linux kernel cung cấp một giao diện giữa các ứng dụng người dùng, hệ thống phần

cứng và tài nguyên. Một vài chức năng của Linux là:

- Quản lý bộ nhớ

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 18

- Quản lý hệ thống file

- Xử lý các lỗi và ngắt

- Thực hiện các dịch vụ I/O

- Cấp phát tài nguyên hệ thống cho các người dùng

Hình 1.1.7. Cấu trúc Kernel của Linux

1.1.3.3. Các chế độ thực hiện của Linux:

Trong những năm đầu của Linux, kernel Linux là một monolithic kernel.

Monolithic kernel là tất cả các dịch vụ của Kernel được biên dịch hết vào trong nó và

không có drivers ngoài nào được gọi. Với monolithic kernel , kernel phải được biên dịch

lại mỗi khi có một thiết bị mới được gắn vào hệ thống.

Khi sự hỗ trợ phần cứng của Linux tăng lên thì kích thước của Kernel tăng lên và

cho thấy sự bất tiện của nó. thế là modular Linux kernel ra đời.

Modular Linux kernel bao gồm một kernel tối tiểu và một tập các modules có thể

được thêm vào khi kernel đang chạy để hỗ trợ các thiết bị và dịch vụ mới.

1.1.4. Các ứng dụng trên linux

1.1.4.1. Các ứng dụng văn phòng & multimedia

Cùng với thời gian, hệ điều hành Linux ngày càng được hoàn thiện, nhiều hãng

sản xuất cùng với các lập trình viên đã xây dựng được một kho thư viện phần mềm

khổng lồ đáp ứng phần lớn nhu cầu của người dùng.

Nếu như trong Windows có bộ Microsoft Office thì trong Linux có những bộ

Office khác như KOffice hoặc bộ Start Office của hãng Sun Microsystem được phân

phối miễn phí.

1.1.4.2. Các ứng dụng giải trí

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 19

Ngoài các ứng dụng văn phòng ra, Linux cũng có khá nhiều games phục vụ nhu

cầu thư giãn và giải trí của người dùng.

1.1.4.3. Hệ điều hành mạng và các ứng dụng mạng

Có thể nói các ứng dụng mạng là tập hợp những ứng dụng nổi bật nhất của hệ điều

hành Linux. Những khả năng mà các ứng dụng mạng trên Linux có thể thực hiện được

làm cho hệ điều hành này trở nên vượt trội hơn so với Windows.

Linux cho phép người dùng có thể cấu hình 1 server với đầy đủ các ứng dụng cơ

bản nhất của Internet: Domain Name Service (DNS), Web Server, Web Proxy Server,

Routing, SMTP Server, Pop3 Server, Firewall

1.1.4.4. Các ứng dụng Web

Với sự bùng nổ các ứng dụng trên Internet, hệ điều hành Linux hỗ trợ một môi

trường lý tưởng cho các server ứng dụng.

Các hãng phần mềm nổi tiếng đều nghiên cứu để làm sao có thể cài các ứng dụng

của họ lên Linux. Tiêu biểu là các ứng dụng sau: Oracle Internet Application Server 9i,

IBM WebSphere

1.1.4.5. Các ứng dụng cơ sở dữ liệu

Linux hỗ trợ khá mạnh các hệ quản trị cơ sở dữ liệu từ miễn phí đến các hệ chuyên

nghiệp như: Postgres SQL, MySQL, Oracle Database Server 9i, IBM DB2

1.1.4.6. Các ngôn ngữ lập trình

Có nhiều ngôn ngữ lập trình khác cũng được hỗ trợ bởi Linux được liệt kê dưới

đây:

Ada, C, C++, Forth, Fortran, Icon, Java, Lisp, Modular 2, Modular

3,Oberon,Objective C, Pascal, Perl, Prolog, Python, Smalltalk, SQL, Tck/Tl, Shell

1.1.5. Câu hỏi củng cố

1. Hệ điều hành là gì? Vai trò của hệ điều hành đối với máy tính?

2. Phân biệt các loại hệ điều hành? Hệ điều hành đa nhiệm – đa người dùng có vai trò

quan trọng như thế nào đối với người sử dụng hiện nay?

3. Kernel trong Linux có vai trò như thế nào? Cấu trúc của các lớp Kernel Linux? Phân

biệt sự khác nhau giữa Kernel Version và Linux Distro Version? Vẽ hình cấu trúc hạt

nhân trong Linux?

4. Bàn phân phối trong Linux là gì? Vẽ hình các dòng linux và dẫn xuất của chúng?

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 20

Bài 2. CÀI ĐẶT HỆ ĐIỀU HÀNH LINUX

Bài 1.2. CÀI ĐẶT HỆ ĐIỀU HÀNH LINUX

1.2.1. Chuẩn bị cài đặt

Centos được phát triển dựa trên các gói phần mềm của bản Redhat. Khác với

Redhat, Centos hoàn toàn miễn phí.

Phiên bản hiện thời là phiên bản 4.6. Centos 4 có thể chạy trên các kiến trúc i386,

x86-64, s390, s390x, Alpha, ppc32, sparc. Centos 4 cũng phân phối bản dành riêng cho

server (01 đĩa CD), bản Live CD.

Bộ đĩa cài đặt Centos gồm 4 đĩa CD hoặc 01 đĩa DVD (khoảng 2.8GB)

Code: http://isoredirect.centos.org/centos/4/isos/

1.2.1.1. Trực tiếp từ CD-ROM hoặc từ USB

Các phiên bản Linux có rất nhiều và con số này có thể lên đến hàng trăm bản, nó

dao động từ những bản thân thiện với người dùng như Centos, Redhat, Fedora, Unbutu,

Linux Mint đến Arch Linux vô cùng mạnh. Nhưng chúng đều có một điểm chung chính

là bạn cần tải file ISO, sau đó tạo bản cài Linux trên USB hoặc DVD. Sau đây là những

cách tốt nhất để có thể tạo bản cài đặt Linux trên máy tính.

1.2.1.1.1. Cài đặt Linux bằng CD/DVD

Rất nhiều hệ thống cũ không hỗ trợ việc tạo bản cài đặt bằng USB. Song đây không

phải là vấn đề lớn, chúng ta vẫn có thể tạo ra bản cài Linux bằng CD hoặc DVD.

Đối với những người đang dùng Windows 7, Windows 8.1 hay Windows 10 thì có

thể dễ dàng thực hiện điều này chỉ bằng cách: Chọn phải chuột vào file ISO >> sau đó

click vào “Burn disc Image”.

Nếu cách trên không thực hiện được thì người dùng vẫn có một lựa chọn khác là

dùng phần mềm tạo bản cài đặt Linux từ CD hoăc DVD. Một trong số những phầm mềm

được nhiều người dùng đó là InfraRecoder, phần mềm này không chỉ tạo một bản cài

Linux từ CD/DVD mà còn có thể tạo ra bản Portable.

Cách sử dụng thì vô cùng dễ và đơn giản. Sau khi đã cài đặt phần mềm hoàn tât,

tại giao diện chính phần mềm thì bạn chỉ cần click vào “Write Image”.

Ngoài ra, người ta cũng có thể sử dụng phần mềm UltraISO để thực hiện việc ghi

ISO ra đĩa trắng khá dễ dàng. (Xem phụ lục II)

1.2.1.1.2. Cài đặt Linux bằng USB

Việc sử dụng đĩa quang có một hạn chế chính là không sự ổn định và khi sử dụng

USB để tạo bộ cài đặt hệ điều hành thì nó không chỉ khắc phục được nhược điểm trên

chính là nhanh chóng hơn, thuận tiện hơn.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 21

Ngày nay, có khá nhiều công cụ cho phép bạn thực hiện việc tạo ra USB cài đặt

Windows và đó là những công cụ nào thì mời các bạn cùng tham khảo danh sách dưới

đây nhé.

Một số phần mềm có thể tạo đĩa USB cài Linux (Xem phụ lục II)

- Phần mềm Unetbootin: Unetbootin có lẽ là công cụ tạo bản cài đặt Linux trên

USB thuận tiện nhất và Unetbootin rất dễ sử dụng và vô cùng đơn giản.

- Phần mềm Rufus: Khác với Unetbootin, Rufus không những có thể tạo USB

từ file ISO của Linux mà Windows cũng thực hiện được.

- Phần mềm Yumi: Yumi cho phép chúng ta có thể tạo nhiều bản cài đặt Linux

khác nhau với các môi trường khác nhau trên cùng một USB. Nó bao gồm:

các bản Linux khác nhau, công cụ chống virus, công cụ chuẩn đoán, ứng dụng

phân vùng, sao chép đĩa,….

1.2.1.2. Cài qua mạng

Dùng một server FTP trên mạng nội bộ để lưu trữ toàn bộ đĩa Source cài Linux.

Quá trình khởi động để vào cài đặt bằng một đĩa mồi (đĩa mềm, usb) với một file iso có

sẵn của nhà phân phối, công dụng của đĩa mồi này là khởi động quá trình xác lập mạng

và chỉ ra địa chỉ chứa source cài đặt Linux.

Phương pháp cài đặt Linux qua mạng mới nhất ngày nay còn có thêm một phương

pháp mới đó là cobbler. Cobbler là server cài đặt linux cho phép ta cài đặt hệ điều hành

linux lên các máy trạm thông qua môi trường mạng. Bản thân nó hỗ trợ cài đặt qua mạng

sử dụng PXE và cài đặt lại hệ điều hành sử dụng 1 phần mềm nhỏ hỗ trợ (koan). (Xem

phụ lục I)

1.2.2. Phân chia ổ đĩa

Hệ điều hành Linux có thể cài được trên Primary Partition và Logical Partition.

Linux cần ít nhất là 2 phân vùng để cài đặt hệ điều hành:

1) Phân vùng gốc chứa hạt nhân và hệ thống File gọi là root partition (Linux Native

partition). Linux sử dụng ký tự / để gán cho phân vùng gốc nơi Linux được cài đặt và

lưu trữ file.

2) Phân vùng Swap (gọi là Swap partition) dùng làm bộ nhớ ảo, dùng để chuyển

đổi khi bộ nhớ vật lý (như RAM ) bị đầy.

Hạt Nhân Linux chính là trái tim của hệ điều hành, nó xem tất cả các loại đĩa và

thiết bị đều ở dạng tập tin. Hệ thống File của Linux có rất nhiều thư mục, đứng đầu là

thư mục gốc (root directory ký hiệu là dấu /).

Linux sử dụng lệnh mount để gán tên của 1 phân vùng vào tên của 1 thư mục bất

kỳ. Đừng nhẫm lẫn với root directory của người dùng (trong thư mục gốc “/” có chứa 1

thư mục là root, đây là thư mục của tài khoản root).

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 22

1.2.3. Thao tác cài đặt

Khởi động máy tính từ đĩa CD 1 hoặc đĩa DVD cài đặt Centos.

Hình 1.2.1. Centos boot menu

Các lựa chọn khi boot của đĩa cài đặt Centos. Cần chú ý một số lựa chọn sau:

- Ấn phím Enter (hoặc đợi khoảng 30 giây) để thực hiện việc cài đặt hoặc nâng

cấp Centos trong mode đồ hoạ.

- Gõ lệnh linux text để thực hiện cài đặt hoặc nâng cấp Centos trong mode text.

- Dùng phím F2 để có thêm các lựa chọn khi cài đặt, ví dụ cài đặt thông qua

ftp server, nfs server (xem mục 3).

- Dùng phím F5 để Rescue hệ điều hành Centos đã được cài đặt.

Chú ý: Với các bản Linux dựa trên redhat trước đây, việc cài đặt được thực hiện

trên mode text. Các phiên bản sau như Fedora, Centos, Redhat đều có 2 lựa chọn là cài

đặt với mode đồ hoạ hoặc mode text. Trong trường hợp việc cài đặt ở mode đồ hoạ gặp

lỗi, có thể chọn mode text để thử cài đặt lại.

Trong hướng dẫn này, gõ phím Enter để thực hiện việc cài đặt ở mode đồ hoạ.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 23

Hình 1.2.2. Kiểm tra các đĩa cài đặt

Hình 1.8 cho phép thực hiện việc kiểm tra đĩa cài đặt CD (hoặc DVD) xem có thể

thực hiện được cài đặt hay không. Bước này chọn Skip để bỏ qua việc kiểm tra đĩa.

Hình 1.2.3. Wellcome to Centos-4 i386

Hình 1.9 là màn hình Wellcome của Centos. Trên đó có hướng dẫn sử dụng các

phím trong quá trình cài đặt (trường hợp không dùng chuột), ví dụ như phím Tab để

dịch chuyển các lựa chọn, phím Space, Enter để lựa chọn các mục,....Bước này chọn

Next để tiếp tục.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 24

Hình 1.2.4. Language Selection: chọn ngôn ngữ (có tiếng Việt, không nên chọn)

Bước này chọn English, sau đó nhắp nút Next để tiếp tục.

Hình 1.2.5. Các kiểu cài đặt

Bước này cho phép lựa chọn các kiểu khi cài đặt. Có các lựa chọn sau:

• Personal Desktop: lựa chọn dành cho cài các máy tính để bàn, máy laptop.

Với lựa chọn này, chắc chắn giao diện đồ hoạ sẽ được cài đặt (giao diện

GNOME).

• Workstation: lựa chọn này cho phép cài đặt môi trường đồ hoạ với các công

cụ dành cho việc phát triển phần mềm và quản trị hệ thống.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 25

• Server: lựa chọn này cho phép cài đặt một số dịch vụ như chia sẻ file, chia sẻ

máy in, dịch vụ web,…. Lựa chọn này ngầm địch không sử dụng giao diện đồ

hoạ. Tuy nhiên chương trình cài đặt sẽ cho phép lựa chọn thêm các gói phần

mềm.

• Custom: lựa chọn này cho phép lựa chọn từng gói phần mềm.

Việc đưa ra các lựa chọn trên nhằm đơn giản quá trình cài đặt. Như đã biết Linux

nói chung bao gồm rất nhiều gói phần mềm. Các lựa chọn trên sẽ tương ứng với một tập

hợp các gói phần mềm mà người thiết kế nghĩ là phù hợp với từng nhóm đối tượng sử

dụng. Đối với người mới sử dụng, có thể lựa chọn Personal Desktop hoặc

Workstation. Sau một thời gian, có thể chọn Custom để chọn các gói phần mềm theo

mục đích của mình.

Ở bước này, chọn Custom, sau đó nhắp Next để tiếp tục cài đặt.

Hình 1.2.6. Lựa chọn 2 kiểu để phân chia ổ cứng

- Automatically partition: lựa chọn này khi thực hiện cài đặt trên một ổ cứng

mới. Chương trình sẽ xoá hết các partition (tất cả các partition hoặc chỉ các

partition linux) và ngầm định sẽ tạo các partition mới để cài đặt Centos.

- Manual partition with Disk Druid: Disk Druid là một chương trình phân chia

ổ cứng, có giao diện đồ hoạ. Lựa chọn này khi trên ổ cứng đã tồn tại các

partition và ta muốn cài đặt Linux cùng các partition đó (ví dụ cài cùng

Windows). Hoặc cũng có thể lựa chọn mục này khi muốn tự phân chia ổ cứng

theo mục đích riêng của mình.

Ở bước này, chọn Manual partition with Disk Druid, sau đó nhắp nút Next để

tiếp tục cài đặt.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 26

Hình 1.2.7. Phân vùng thủ công với Disk Druid- Bước 1

Khi chọn Manual partition with Disk Druid, xuất hiện hộp thoại Warning cảnh

báo rằng partition tab của ổ cứng (thiết bị sda - ổ cứng SCSI) không đọc được. Nếu tạo

các partition mới có thể mất dữ liệu,… Do trường hợp này ta thực hiện cài đặt trên ổ

cứng mới nên chọn Yes.

Chú ý: Đối với các cài đặt trên ổ cứng đã có dữ liệu (ví dụ đã cài đặt Windows),

cần chú ý các cảnh báo do chương trình cài đặt đưa ra để tránh mất dữ liệu do lựa chọn

sai.

Hình 1.2.8. Phân vùng thủ công với Disk Druid- Bước 2

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 27

Thể hiện thông tin các ổ cứng có thể cài đặt được Centos. Với ví dụ này, /dev/sda

có dung lượng 8GB (8192 MB) và còn trống hoàn toàn. Để cài đặt một hệ điều hành

Centos, cần có ít nhất 2 partition là root (/) và swap. Swap nên chọn khoảng gấp 2 lần

RAM của hệ thống, root (/) tuỳ thuộc vào từng bản Linux và các gói mà bạn muốn chọn.

Nếu chỉ cài Linux, có thể chọn khoảng 8GB, nếu cài thêm các chương trình khác như

Oracle, nên chọn khoảng 12-20GB.

Trong ví dụ này sẽ hướng dẫn cách thức tạo 3 partition là /boot (100MB); swap

(768MB bằng 2 lần RAM 384 MB) và phần còn lại sẽ dành cho root (/).

Chọn vào ổ đĩa muốn tạo partition, sau đó nhắp nút New.

Hình 1.2.9. Phân vùng thủ công với Disk Druid- Bước 3

Xác định thông tin để tạo một partition mới. Gõ /boot vào ô Mount Point – có thể

nhắp vào mũi tên trỏ xuống để xem các Mount Point ngầm định. Chọn kiểu hệ thống

file là ext3 (File System). Gõ vào ô Size (MB) số 100 – tương ứng với 100 MB cho

vùng /boot. Sau đó nhắp OK để xác nhận việc tạo một partition mới.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 28

Hình 1.2.10. Phân vùng thủ công với Disk Druid- Bước 4

Sau khi tạo /boot - 100MB, chọn vào vùng ổ đĩa còn trống, sau đó chọn nút New.

Chọn vào mũi tên trỏ xuống ở ô File System Type. Trong các lựa chọn trên menu trỏ

xuống, chọn swap. Khác với Windows, sử dụng pagefile.sys để làm vùng tráo đổi, Linux

dùng một partition có kiểu hệ thống file là swap. Sau đó gõ số 768 MB vào ô Size (MB)

và nhắp nút OK để xác nhận việc tạo mới.

Hình 1.2.11. Phân vùng thủ công với Disk Druid- Bước 5

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 29

Sau khi tạo partition swap, chọn vào vùng đĩa còn trống, sau đó nhắp nút Edit.

Trong hộp thoại Add Partition, gõ “/” ở ô Mount Point, chọn File System Type là ext3.

Sau đó nhắp OK để xác nhận.

Hình 1.2.12. Phân vùng thủ công với Disk Druid- Bước 6

Chi tiết về các partition mà ta đã tạo trên ổ cứng. Kiểm tra lại các thông tin này

trước khi nhắp Next để tiếp tục cài đặt.

Hình 1.2.13. Cầu hình trình nap khởi động (boot loader)

Centos sử dụng GRUB – một chương trình quản lý boot và GRUB được cài vào

/dev/sda.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 30

Trong trường hợp cài trên máy đã có Windows, GRUB sẽ đưa ra trong danh sách.

Chú ý đến mục Default. Hệ điều hành nào được chọn sẽ ngầm định được GRUB gọi để

boot.

Bước này chọn Next để tiếp tục.

Hình 1.2.14. Cấu hình mạng (Network Configuration) - Bước 1

Chương trình cài Centos sẽ tự detect card mạng và đưa ra trong danh sách Network

Devices. Trên Centos sẽ để tên các card mạng kiểu eth0, eth1,… Theo ngầm định, các

card mạng được cấu hình sử dụng DHCP. Để thay đổi, lựa chọn vào card mạng và nhắp

nút Edit.

Trong hộp thoại Edit Interface, bỏ chọn Configure using DHCP và nhập địa chỉ

IP, Netmask vào các ô tương ứng, sau đó nhắp nút OK để xác nhận.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 31

Hình 1.2.15. Cấu hình mạng (Network Configuration) - Bước 2

Sau khi nhập địa chỉ IP, Netmask như hình trên, trình cài đặt sẽ quay trở về màn

hình Network Configuration. Nhập tên máy (hostname) vào ô Host name Manual,

nhập các địa chỉ Gateway, DNS vào các ô tương ứng, sau đó nhắp nút Next để tiếp tục

cài đặt.

Hình 1.2.16. Cấu hình tường lửa (Firewall Configuration)

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 32

Giai đoạn cấu hình tường lửa cho Centos. Để có thể thử các dịch vụ được thuận

tiện, chọn No firewall và disable SELinux.

Chú ý: Firewall và SELinux có thể cấu hình sau khi cài đặt Linux.

Hình 1.2.17. Cảnh báo không có tường lửa (Warning – No Firewall)

Khi lựa chọnNo firewall, sẽ xuất hiện hộp thoại cảnh báo, nhắp Proceed để xác

nhận.

Hình 1.2.18. Thêm ngôn ngữ hỗ trợ (Additional Language Support)

Hình này cho phép lựa chọn thêm ngôn ngữ hỗ trợ. Bước này chọn Next để tiếp

tục.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 33

Hình 1.2.19. Chọn múi giờ (Time Zone Selection)

Hãy chọn múi giờ - nơi bạn đang ở. Nếu ở Việt Nam chọn Location là Asia/Saigon

(phiên bản mới Asia/HoChiMinh).

Hình 1.2.20. Thiết lập mật khẩu Roor (Set Root Password)

Đặt mật khẩu của tài khoản root (tài khoản cao nhất). Nhắp Next để tiếp tục.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 34

Hình 1.2.21. Lực chọn các gói phần mềm (Package Group Selecttion)

Hãy lựa chọn các gói ứng dụng cho Centos tương ứng với công việc. Các gói ứng

dụng được chia thanh các nhóm. Với lựa chọn kiểu cài đặt Custom như trên, ta để

nguyên các lựa chọn ngầm định và chọn thêm một số thành phần sau:

Mục Server

1- Server Configuration Tools

2- FTP Server

3- Legacy Server: chọn thêm rsh-server, telnet-server

Mục Development

1- Development Tools

2- X Software Development

3- Gnome Software Development

4- Legacy Software Development

Mục System

1- Administration Tools

2- System Tools: chọn thêm gói mc

Với các lựa chọn nói trên, cần khoảng 2.6 GB để cài đặt.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 35

Chú ý: Các lựa chọn này là khuyến nghị, bạn có thể nhắp chữ Details ở từng mục

để xem cụ thể các gói bên trong. Ví dụ khi chọn Legacy Server, nhắp nút Details tương

ứng, sẽ xuất hiện danh sách các package của mục đó (xem Hình 22).

Hình 1.2.22. Chi tiết các gói phần mềm trong nhóm (“Legacy Network Server” )

Theo hình trên, người cài chọn thêm các package là rsh-server và telnet-server.

Hình 1.2.23. Tóm lược cài đặt (About to Install)

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 36

Nếu nhắp nút Next, việc cài đặt Centos sẽ bắt đầu. Các thông tin về cài đặt sẽ được

lưu trong file /root/install.log. Để thoát khỏi cài đặt, có thể bấm nút reset trên máy tính

hoặc dùng tổ hợp phím Ctrl+Alt+Del.

Hình 1.2.24. Yêu càu các đĩa cài đặt (Required Install Media)

Xuất hiện thông báo về số đĩa cài Centos với các lựa chọn gói ở trên. Trong ví dụ

này, cần 3 đĩa cài Centos: đĩa 1, đĩa 2, đĩa 3 (mặc dù bộ cài đặt có 4 đĩa).

Sau bước này, chương trình cài đặt Centos tiến hành phân chi ổ cứng, format theo

định dạng (ext3) đã chọn và thực hiện cài đặt.

Hình 1.2.25. Quá trình cài các gói (Installing Package)

Khi kết thúc đĩa 1, sẽ được yêu cầu đưa đĩa 2 vào ổ CD,…

Chú ý: Với trường hợp cài đặt bằng đĩa DVD hoặc cài đặt qua mạng sử dụng ftp-

server hoặc nfs-server, sẽ không có yêu cầu đó.

Quá trình cài đặt trong khoảng 20 – 40 phút với các máy hiện nay.

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 37

Hình 1.2.26. Hoàn tất quá trình cài đặt (Installation Complete)

Sau khi cài đặt hoàn tất, sẽ có thông báo như trên và đĩa CD cuối bị đẩy ra khỏi ổ

CD. Bỏ đĩa CD/DVD và nhắp nút Finish, máy tính sẽ khởi động lại.

1.2.3.1. Bàn thêm về trình nạp Grub

Một số chương trình chiếm giữ MBR gọi là chương trình Boot Manager hay Boot

Loader. Chúng hiển thị menu cho phép người dùng chọn hệ điều hành. Khi người dùng

chọn 1 hệ điều hành trong danh sách, chương trình Boot Loader sẽ nạp Boot Sector

tương ứng với phân vùng chứa hệ điều hành được chọn. Sử dụng Boot Loader, ta không

cần đặt cờ Boot cho mỗi phân vùng chính.

Xét trường hợp cài Win và cài 2 distro là Ubuntu và Mint

Phương án đưa ra là : chia 5 phân vùng.

- Win cần 1 phân vùng chính.

- Nhóm còn lại nhét vào 4 phân vùng Logic trong 1 phân vùng mở rộng. Ubuntu

và Mint, mỗi distro cần 1 phân vùng để cài /, 1 phân vùng để làm thư mục

/home chung cho Ubuntu và Mint (dung lượng cần lớn 1 chút, nếu có cài lại

Ubuntu và Mint thì khỏi phải config lại), còn 1 phân vùng được làm Swap

chung.

Tuy nhiên, Linux xem ổ cứng là 1 tập tin sda hoặc là hda, mount nó vào thư mục

/dev, kí hiệu là /dev/sda (nếu ổ đĩa theo chuẩn SCSI) hoặc /dev/hda chẳng hạn. Đã chia

một phân vùng NTFS trong ổ cứng, kí hiệu là ổ C. (Đây là phân vùng cài Win, kí hiệu

trong Linux là /dev/sda1)

-Ta cài Distro Ubuntu trên /dev/sda2 (là phân vùng thứ 2 của ổ cứng)

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 38

Thực hiện : Nên cài hệ điều hành nào trước ? Nên cài Win trước, sau đó thì cài U

và Mint sau (cái nào cũng trước cũng được vì cả 2 đều xài Grub,rất dễ cấu hình và lựa

chọn) Quá trình cài Win thì các bạn tự tìm hiểu nha. Cài win rồi thì … tiếp theo là cài 2

OS còn lại. Sau đó giả sử cài U trước Mint : Các tài liệu hướng dẫn cài đặt thì trên mạng

có đầy, tui không nhắc lại, Chỉ đề cập 1 số vấn đề rất nhỏ.

Bỏ qua các bước ban đầu, chú ý tới bước phân vùng đĩa để cài đặt, nên chọn chế

độ chỉnh Manual.

Cài thư mục / và thư mục /home ở 2 phân vùng khác nhau.

Trong quá trình cài đặt, ở phần Advanced (Nâng Cao), ta nên bỏ qua bước này vì

mặc định Grub sẽ được cài đặt vào MBR và lưu thông tin trên phân vùng gốc được cài

Ubuntu. Cần chú ý mục Install boot loader.

GRUB có một giao diện trình đơn để từ đó người dùng có thể chọn một mục (một

hệ điều hành) bằng các phím mũi tên rồi nhấn <Enter> để khởi động. Để dùng được

trình đơn đó, bạn cần một tập tin cấu hình ‘menu.lst’ nằm trong thư mục khởi

động /boot.

Thông thường tập tin này được tạo ra khi cài đặt.

Ví dụ: khi trình khởi động nạp Grub sẽ có 2 mục chọn Red Hat Enterprise Linux

và mục thứ 2 là Windows

default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz # section to load Linux nằm ở phân vùng sda2 title Red Hat Enterprise Linux (2.4.21-1.ent) root (hd0,0) kernel /vmlinuz-2.4.21-1 ro root=/dev/sda2 initrd /initrd-2.4.21-1.img # section to load Windows title Windows rootnoverify (hd0,0) chainloader +1

Hình 1.2.27. Cáu hình Grub cho menu chọn hệ điều hành

Giải thích: Các dòng bắt đầu bằng kí tự # là những dòng chú thích. Có thể thêm,

bớt tùy ý mà không lo ảnh hưởng đến công việc của chương trình. Ngoài ra grub cũng

bỏ qua các dòng trống.

kernel [--type=loại] [--no-mem-option] tập_tin ...

Nạp hình ảnh khởi động (Multiboot a.out hoặc ELF, Linux zImage hoặc bzImage,

FreeBSD a.out, NetBSD a.out, v.v...) từ tập_tin. Phần còn lại của dòng được chuyển

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 39

nguyên văn như dòng lệnh nhân. Bất cứ mô-đun nào cũng có thể được nạp sau khi dùng

lệnh này. Lệnh này cũng chấp nhận tuỳ chọn --type để chỉ định cụ thể loại nhân của

tập_tin. Đối số loại phải là một trong các thứ sau: netbsd, freebsd, openbsd, linux,

biglinux, và multiboot. Tuy nhiên, chỉ cần xác định loại nhân khi nạp nhân NetBSD ELF

vì GRUB có thể tự động xác định loạ i nhân trong các trường hợp khác một cách khá an

toàn. Tuỳ chọn --no-mem-option chỉ hiệu quả trên Linux. Nếu chỉ định tuỳ chọn này,

GRUB không chuyển tuỳ chọn mem= đến nhân.

chainloader [--force] tập_tin

Nạp chuỗi tập_tin. Nếu chỉ định tuỳ chọn --force, nó sẽ cưỡng bức nạp tập_tin,

cho dù nó có chữ kí đúng hay không. Điều này giúp nạp một trình nạp khởi động khiếm

khuyết.

map ổ_đĩa_nguồn ổ_đĩa_đích

Ánh xạ ổ đĩa ổ_đĩa_nguồn đến ổ đĩa ổ_đĩa_đích. Điều này cần thiết khi nạp chuỗi

một số hệ điều hành, thí dụ như DOS, nếu hệ điều hành đó nằm ở ổ đĩa không phải là ổ

đĩa thứ nhất.

Ví dụ:

grub> map (hd0) (hd1)

grub> map (hd1) (hd0)

mục đích: chuyển đổi trật tự giữa ổ cúng thứ nhất và ổ

cứng thứ hai.

rootnoverify thiết_bị [hdbias]

Tương tự như root, nhưng không gán (mount) phân vùng. Điều này hữu ích khi hệ

điều hành nằm ngoài khu vực trên đĩa mà GRUB có thể đọc, nhưng vẫn muốn thiết lập

thiết bị root đúng. Lưu ý rằng các mục đề cập ở phần lệnh root bên trên có được do gán

sẽ không làm việc chính xác.

makeactive

Thiết lập phân vùng chủ động (active) trên đĩa root cho thiết bị root của GRUB.

Lệnh này chỉ giới hạn (do chỉ có ý nghĩa) cho các phân vùng PC sơ cấp trên đĩa cứng.

Ngoài ra còn một số lệnh như cmp, configfile, displayapm, displaymem,find,

savedefault ... bạn có thể tìm hiểu thêm.

2.3.2. Cấu hình sơ bộ

Sau khi máy tính khởi động, sẽ chạy vào môi trường Centos và đưa ra các cấu hình

cho người dùng đầu tiên. Các bước bao gồm: Wellcome, License Agreement, Date and

Time, Display, System User, Additional CDs, Finish Setup. Việc hướng dẫn các bước

này có lẽ không cần thiết, có thể tham khảo các hình ảnh dưới (từ hình 27 đến hình 33)

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 40

Hình 1.2.28. Wellcome: Chào mừng đến với Centos

Hình 1.2.29. Thoả thuận bảng quyền (License Agreement)

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 41

Hình 1.2.30. Cấu hình ngày giờ (Date and Time)

Hình 1.2.31.Cấu hình màn hình (Display)

Hình 1.2.32. Người dùng hệ thống (System User)

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 42

Hình 1.2.33. Cài thêm từ đĩa CD (Additional CDs)

Hình 1.2.34. Hoàn tất quá trình cài đặt

Sau bước này, việc cài đặt Centos hoàn tất, màn hình đăng nhập Centos.

Hình 1.2.35. Đăng nhập Centos (Centos Login)

Đăng nhập Centos với tài khoản root, giao diện của Centos .

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 43

Hình 1.2.36. Màn hình làm việc với Centos 4 (đăng nhập root)

1.2.3.3. Thoát khỏi Linux

* Shutdown hệ thống bằng 2 cách:

1. Khởi động terminal:

Tại dấu nhắc gõ vào lệnh: init 0

Tại dấu nhắc, gõ vào lệnh: shutdown –h now

Hình 1.2.37. Shutdown hệ thống bằng lệnh trên Terminal

2. Dùng menu lệnh:

Actions logout

Hoặc

System Logout

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 44

Hình 1.2.38. Màn hình chọn phương án ngưng làm việc

1.2.4. Bài tập:

1.2.4.1. Củng cố lý thuyết

1. Cài đặt hệ điều hành Linux cần tối thiểu bào nhiêu phân vùng?

2. Nêu ưu nhược điểm của việc cài đặt hệ điều hành linux chọn 2 phần vùng, chọn nhiều

phân vùng?

3. Liệt kê các phương pháp shutdown hệ thống trong linux?

1.2.4.2. Phần thực hành

1. Cài đặt hệ điều hành linux Centos theo yêu cầu sau:

- Máy ảo Centos: RAM 1GB; HDD: 60GB (IDE)

- Phân vùng: có 2 vùng chuẩn: swap: 2GB; root (/): 58GB

- Ngôn ngữ, bàn phím: Mỹ

- Password root: 123456

- Cấu hình mạng: tự động nhận IP

- Cài đặt các dịch vụ cơ bản samba, nfs, ftp

- Cấu hình Centos cho khởi động mode 3 (terminal)

- Tạo sẵn 2 user cen01 và cen02

2. Thực hiện tương tự yêu cầu trên, chỉ cài bản core

3. Sử dụng cấu hình tương tự như trên nhưng chọn hệ điều hành Ubuntu. Cài đặt hệ điều

hành Ubuntu Server

4. Mở máy ảo Windows 7, hãy cài thêm hệ điều hành Ubuntu/Centos vào phân vùng D:,

và cấu hình Grub cho người dùng chọn 1 trong 2 hệ điều hành đang có.

* Tóm lược chương:

Chương 1: Tổng quan về hệ điều hành Linux và Unix

KHOA CÔNG NGHỆ THÔNG TIN Trang 45

Trong chương này trình bày hai bài học mở đầu cho môn học:

- Phần nhập môn: trình bày sơ lược về hệ điều hành và lịch sử phát triển linux. Bên

cạnh đó bài đầu tiên cũng nói cấu trúc và các phân nhánh phát triển linux

- Bài thứ hai trong chương bàn về vấn đề cài đặt và phương pháp cài đặt một hệ

thống linux tiêu biểu trong họ Red Hat là Centos.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 46

Chương 2. SỬ DỤNG HỆ ĐIỀU HÀNH LINUX

Giới thiệu chương

Khi nói đến hệ điều hành Unix/Linux thì một đặc trưng không thể bỏ qua là cơ chế

dòng lệnh, chính yếu tố này giúp cho hệ điều hành Linux trở nên dễ dùng và thao tác

nhanh hơn trên Treminal nhờ cấu trúc lệnh rõ ràng hoạt động trên hệ thống tinh gọn (chỉ

cần core là đủ). Trong chương này cũng nhấn mạnh đến một khía cạnh đặc biệt của hệ

điều hành-đó là tính đa người dùng, để vận hành được tính năng này người quản trị cần

có kiến thức về quản trị người dùng, nhóm và phân quyền truy cập tài nguyên trên hệ

thống.

Mục tiêu: học xong chương này, sinh viên có thể

- Trình bày được cơ chế dòng lệnh trên hệ điều hành Linux

- Phân biệt được các nhóm lệnh và tuỳ cấu trúc lệnh trên Linux

- Trình bày được các khái niệm liên quan đến cấu trúc lưu trữ gồm tập tin và

thư mục

- Trình bày được các khái niệm người dùng và nhóm, lên kế hoạch tổ chức

người dùng và nhóm trong linux

- Trình bày được các quyền truy cập và quyền sở hữu áp dụng trên tài nguyên

thư mục

- Thao tác được với cây thư mục: Tạo/sửa/xoá/di chuyển/sao chép.

- Làm việc được với tập tin: tạo, sao chép, di chuyển, xoá, thay đổi nội dung,

ghép nội dung,...

- Xây dựng được quy trình và ghi ra được cú pháp tạo/xóa, sửa thông tin

user/group trên linux.

- Xác định được vai trò của nhóm, người dùng trong nhóm

- Thiết lập các quyền truy cập và quyền sở hữu đối với người dùng bằng công

cụ dòng lệnh

- Xác định đúng đối tượng sử dụng để cấp quyền, chuyển sở hữu chính xác.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 47

Bài 1. CÁC LỆNH CƠ BẢN

Bài 2.1. CÁC LỆNH CƠ BẢN

2.1.1. Qui ước lệnh

2.1.1.1. Giới thiệu

Linux cung cấp giao tiếp với kernel thông qua trình diễn dịch trung gian gọi là

shell. Shell có chức năng giống "command.com" (DOS) trong window.

- Các loại shell trong Linux

Hình 2.1.1.Các loại Shell trong Unix/Linux

2.1.1.2. Cú pháp lệnh

Để xem cú pháp của một lệnh bất kỳ trong Linux ta dùng lệnh man hay info.

Một lệnh trong linux có cấu trúc như sau:

<tên lệnh> [tuỳ chọn] [tham số lệnh] [dẫn xuất] [lệnh nhận]

- <tên lệnh>: bắt buộc phải có, là từ khoá duy nhất trên hệ thống, mỗi bộ shell

có lệnh khác nhau.

- [tuỳ chọn]: là những ký hiệu để quy định thực hiện lệnh theo một quy tắc nào

đó, thường các tuỳ chọn bắt đầu bằng dấu trừ.

- [tham số lệnh]: là những yếu tố đưa vào để thực hiện lệnh, tuỳ vào từng lệnh

mà không có, có một, hay hơn một tham số.

- [dẫn xuất]: thường là các chuyển hướng lệnh để chuyển kết quả qua một câu

lệnh khác thực hiện bước tiếp theo

- [lệnh nhận]: là lệnh sẽ tiếp nhận kết quả lệnh trước để thực hiện bước tiếp

theo

Ví dụ:

#cat /data/dulieu/os/linux/danhmuchethong.txt | grep 64bit

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 48

Lệnh trên xem tập tin danhmuchethong.txt thay vì hiển thị trên màn hình, dấu | sẽ

đưa kết quả này qua bộ lọc grep và thực hiện chọn các dòng có mã “64bit”.

2.1.2. Các tập lệnh:

Hệ điều hành Linux chứa rất nhiều lệnh, cung cấp cho người dùng đủ các công cụ

để quản lý hệ thống cũng như làm việc trên nó. Sau đây là các nhóm lệnh

2.1.2.1. Các lệnh kiểm tra performance

- cat /proc/cpuinfo hiển thị thông tin CPU

- cat /proc/meminfo hiển thị thông tin về RAM đang sử dụng

- cat /proc/version hiển thị phiên bản của kernel

- cat /proc/ioports xem thông tin I/O port

- cat /proc/interrupts xem thông tin interrupt

- cat /proc/dma xem thông tin về DMA

- cat /etc/redhat-release hiển thị phiên bản Centos

- uname -a hiển thị các thông tin về kernel

- free -m hiển thị lượng RAM còn trống

- df -h hiển thị thông tin những file hệ thống nơi mỗi file thường trú hoặc tất

cả những file mặc định và lệnh này có thể xem được dung lượng ổ cứng đã

sử dụng và còn trống bao nhiêu.

- du -sh xem dung lượng của thư mục hiện tại

- du -ah xem chi tiết dung lượng của các thư mục con, và cả các file

- du -h –max-depth=1 xem dung lượng các thư mục con ở cấp 1 (ngay trong

thư mục hiện tại)

- df kiểm tra dung lượng đĩa cứng, các phân vùng đĩa

- top hiển thị sự hoạt động của các tiến trình, đặc biệt là thông tin về tài

nguyên hệ thống và việc sử dụng các tài nguyên đó của từng tiến trình.

2.1.2.2. Các lệnh hệ thống

- exit thoát khỏi cửa sổ dòng lệnh.

- logout tương tự exit.

- reboot / init 6 / shutdow -r khởi động lại hệ thống.

- halt / shutdow -h now / init 0 / poweroff tắt máy

- hostname xem tên máy tính

- startx khởi động chế độ xwindows từ cửa sổ terminal.

- clear xoá trắng cửa sổ dòng lệnh.

- hwclock Fix lịch của bios

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 49

- cal xem lịch hệ thống.

- yum update –y Update Linux (CentOS)

- date xem ngày, giờ hệ thống.

- date –s “27 SEP 2011 14:26:00” Đặt ngày giờ hệ thống theo string

- date +%Y%m%d -s “20130318″ đặt ngày hệ thống (không thay đổi giờ)

- date +%T -s “00:29:00″ đặt giờ hệ thống, không thay đổi ngày

2.1.2.3. Lệnh thao tác với tập tin text

- wc đếm số dòng, số kí tự… trong tập tin

- touch tạo một tập tin.

- cat xem nội dung tập tin.

- more xem nội dung tập tin theo trang.

- less xem nội dung tập tin theo dòng.

- tail xem nội dung tập tin (mặc định xem 10 dòng cuối).

- head xem nội dung tập tin (mặc định xem 10 dòng đầu).

- vi khởi động trình soạn thảo văn bản vi.

- man Xem hướng dẫn thực hiện các lệnh

2.1.2.4. Lệnh quản lí ứng dụng và tiến trình

- rpm kiểm tra, gỡ bỏ hoặc cài đặt 1 gói .rpm

- ps kiểm tra hệ thống tiến trình đang chạy.

- kill dừng tiến trình khi tiến trình bị treo.

- pstree hiển thị tất cả các tiến trình dưới dạng cây.

- sleep cho hệ thống ngừng hoạt động trong một khoảng thời gian.

- yum Cài đặt các ứng dụng đóng gói (giống rpm)

- wget Tải các ứng dụng từ một website về

- sh Chạy một ứng dụng có đuôi .sh

2.1.2.5. Lệnh quản lý user

- useradd tạo một người dùng mới.

- userdel xoá người dùng đã tạo.

- usermod thay đổi thông tin user.

- passwd đặt và thay đổi password cho người dùng.

- groupadd tạo một nhóm người dùng mới.

- groupdel xoá nhóm người dùng đã tạo.

- gpasswd thay đổi password của một nhóm người dùng.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 50

- su cho phép đăng nhập với tư cách người dùng khác.

- groups hiển thị nhóm của user hiện tại.

- who / w cho biết ai đang đăng nhập hệ thống.

- skill -9 –t pst/0 để gỡ bỏ session pst/0

- xem danh sách user: #vi /etc/passwd

- xem danh sách nhóm: #vi /etc/group

- chmod <permission> [tên file] thay đổi quyền cho file/thư mục (chỉ user sở

hữu file mới thực hiện được)

- chown user [tên file] thay đổi chủ sở hữu file/thư mục

- chown user:group [tên file] thay đổi chủ sở hữu file/thư mục, đồng thời thay

đổi nhóm sở hữu

- chgrp group [file/thu_muc] thay đổi group sở hữu file/thư mục

2.1.2.6. Lệnh quản lý service

- service –status-all Kiểm tra tất cả các service và tình trạng của nó.

- service httpd start khởi động dịch vụ httpd.

- whereis mysql hiển thị nơi các file dịch vụ được cài đặt.

- service –status-all | grep abc, xem tình trạng của tiến trình abc

- service <tên_dịch_vụ> start | stop | restart

- /etc/init.d/<tên_dịch_vụ> start | stop | restart

Ví dụ:

#service mysql stop

#/etc/init.d/mysqld start

2.1.2.7. Các lệnh quản lý file và thư mục

- ls xem danh sách các file và thư mục con trong thư mục hiện thời

- ls -l như trên, nhưng liệt kê cả kích thước file, ngày cập nhật…

- ls -a liệt kê tất cả các file ẩn

- rm xóa file

- rmdir xóa thư mục rổng

- rm -rf xóa thư mục không rỗng.

- mv đổi tên / di chuyển thư mục hoặc file từ nơi này sang nơi khác

- cp copy file hoặc thư mục

- mkdir tạo thư mục

- cd chuyển thư mục

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 51

- pwd xem thư mục hiện hành

- find tìm kiếm file

- find /etc -name inittab : tìm file có tên inittab trong thư mục /etc

2.1.2.8. Lệnh nén và giải nén

- tar -cvf nén file/thư mục sang định dạng .tar

- tar -xvf giải nén file .tar

- gzip chuyển file .tar sang .tar.gz

- gunzip chuyển file .tar.gz về .tar

- tar -xzf giải nén file .tar.gz

- tar -zxvf giải nén file .tar.bz2

- tar -jxvf giải nén file .tar.gz2

2.1.2.9. In các file trong Unix/Linux

2.1.2.9.1. Lệnh pr trong Unix/Linux

Lệnh pr phản ánh quá trình định dạng file trên màn hình terminal hoặc cho một

máy in. Ví dụ, nếu bạn có một danh sách tên dài của một file, bạn có thể định dạng nó

trên màn hình vào hai hay nhiều cột.

Dưới đây là cú pháp lệnh pr:

#pr option(s) filename(s)

Lệnh pr thay đổi định dạng của file chỉ trên màn hình hoặc trên bản in, nó không

chỉnh sửa file ban đầu. Bảng dưới đây liệt kê một vài tùy chọn của lệnh pr:

Bảng 2.1.1. Các tuỳ chọn của lện pr.

Chức năng Miêu tả

-k Tạo ra k cột đầu ra.

-d Khoảng trống kép ở đầu ra (không phải trên tất cả phiên bản pr).

-h "header" Làm cho mục mới trở thành như một đầu đề của bản báo cáo.

-t Khử lề khi in đầu đề và các lề trên/dưới.

-l PAGE_LENGTH Thiết lập độ dài trang tới PAGE_LENGTH (66) dòng. Số từ mặc

định của các dòng là 56.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 52

Chức năng Miêu tả

-o MARGIN In ôpxet mỗi dòng với khoảng cách lề là 0.

-w PAGE_WIDTH Thiết lập độ rộng tới PAGE_WIDTH (72) ký tự chỉ cho đầu ra

dạng nhiều cột.

Trước khi sử dụng pr, dưới đây là các nội dung của một file mẫu: food.

$cat food

Sweet Tooth

Bangkok Wok

Mandalay

Afghani Cuisine

Isle of Java

Big Apple Deli

Sushi and Sashimi

Tio Pepe's Peppers

........

$

Bây giờ chúng ta sử dụng lệnh pr để tạo một bản báo cáo có 2 cột với đầu đề là

Restaurents:

$pr -2 -h "Restaurants" food

Nov 7 9:58 1997 Restaurants Page 1

Sweet Tooth Isle of Java

Bangkok Wok Big Apple Deli

Mandalay Sushi and Sashimi

Afghani Cuisine Tio Pepe's Peppers

........

$

2.1.2.9.2. Các lệnh Ip và Ipr trong Unix/Linux

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 53

Lệnh Ip hoặc Ipr in một file trên giấy từ màn hình hiển thị. Một khi bạn đã định

dạng file sử dụng lệnh pr và sẵn sàng để in, bạn có thể sử dụng bất cứ lệnh nào trong 2

lệnh này để in file của bạn trên máy in kết nối được với máy tính của bạn.

Quản lý hệ thống có thể đã thiết lập máy in mặc định tại site của bạn. Để in một

file có tên là food trên máy in mặc định, bạn sử dụng lệnh lp hoặc lpr như trong ví dụ

sau:

$lp food

request id is laserp-525 (1 file)

$

Lệnh Ip chỉ một ID mà bạn có thể sử dụng để dừng công việc in hoặc kiểm tra

trạng thái của nó.

- Nếu bạn sử dụng lệnh Ip, bạn có thể sử dụng chức năng -nNum để in số lượng

bản sao là Num. Cùng với lệnh Ipr, bạn có thể sử dụng tùy chọn -Num để

thực hiện việc tương tự.

- Nếu có nhiều máy in kết nối với máy tính của bạn, thì khi đó bạn có thể chọn

một máy in bằng cách sử dụng tùy chọn –dprinter với lệnh Ip và sử dụng tùy

chọn -Pprinter với lệnh Ipr cho mục đích tương tự. Tại đây, printer là tên

máy in.

2.1.2.9.3. Các lệnh Ipstat và Ipq trong Unix/Linux

Lệnh Ipstat chỉ những gì trong hàng máy in: ID yêu cầu, cỡ file, khi các công việc

được gửi cho mục đích in, và các trạng thái của các yêu cầu.

Sử dụng Ipstat -o nếu bạn muốn quan sát toàn bộ các yêu cầu đầu ra chứ không

phải chỉ các yêu cầu của riêng bạn. Các yêu cầu được trình bày theo thứ tự chúng được

in:

$lpstat -o

laserp-573 john 128865 Nov 7 11:27 on laserp

laserp-574 grace 82744 Nov 7 11:28

laserp-575 john 23347 Nov 7 11:35

$

Lệnh Ipq cung cấp thông tin hơi khác với lệnh Ipstat -o:

$lpq

laserp is ready and printing

Rank Owner Job Files Total Size

active john 573 report.ps 128865 bytes

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 54

1st grace 574 ch03.ps ch04.ps 82744 bytes

2nd john 575 standard input 23347 bytes

$

Ở đây dòng đầu tiên hiển thị trạng thái máy in. Nếu máy in không hoạt động hoặc

đang hết giấy, bạn có thể quan sát các thông tin khác trên dòng đầu tiên.

2.1.2.9.4. Các lệnh cancel và Iprm trong Unix/Linux

Lệnh cancel kết thúc yêu cầu in từ lệnh Ip. Lệnh Iprm kết thúc các yêu cầu của

Ipr. Bạn có thể xác định hoặc ID của yêu cầu (hiển thị bởi lệnh Ip hoặc Ipq) hoặc tên

của máy in.

$cancel laserp-575

request "laserp-575" cancelled

$

Để dừng các yêu cầu hiện tại đang in, bất chấp ID của nó, đơn giản bạn nhấn cancel

và tên máy in:

$cancel laserp

request "laserp-573" cancelled

$

Lệnh Iprm sẽ dừng công việc đang thực hiện nếu lệnh đó do bạn đề ra. Nếu không

thì, bạn có thể cung cấp các tên công việc như là tham số hoặc sử dụng một dấu gạch

ngang (-) để gỡ bỏ tất cả công việc của bạn:

$lprm 575

dfA575diamond dequeued

cfA575diamond dequeued

$

Lệnh Iprm nói cho bạn về các tên file thực sự bị dỡ bỏ từ hàng in.

2.1.2.10. Gửi Email trong Unix/Linux

Bạn sử dụng lệnh mail để gửi và nhận mail. Dưới đây là cú pháp để gửi một Email:

$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

Bảng dưới liệt kê các chức năng quan trọng liên quan đến lệnh mail:

Bảng 2.1.2. Mô tả tuỳ chọn lệnh mail

Chức năng Miêu tả

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 55

-s Xác định subject trên dòng lệnh.

-c Gởi các bản sao carbon tới danh sách của các người sử dụng. Danh sách có

thể là một bản danh sách tên phân biệt bằng dấu phảy.

-b Gởi các bản sao blind carbon tới danh sách. Danh sách có thể là một bản

danh sách tên phân biệt bằng dấu phảy.

Ví dụ để gửi một nội dung “Test message” tới địa chỉ [email protected] người

dùng sử dụng lệnh:

$mail -s "Test Message" [email protected]

Bạn sau đó được mong đợi để gõ văn bản vào thông báo của bạn, theo sau bởi một

control-D tại phần bắt đầu của một dòng. Để dừng việc gõ văn bản này, đơn giản bạn

gõ dấu chấm (.) như sau:

Hi,

This is a test

.

Cc:

Bạn có thể gửi một file đầy đủ bằng cách sử dụng một toán tử điều hướng lại <

như sau:

$mail -s "Report 05/06/07" [email protected] < demo.txt

Để kiểm tra các thư đến trong hệ thống Unix của mình, bạn gõ lệnh email như sau:

$mail

no email

2.1.3. Chuyển hướng input, output

2.1.3.1. Khái quát

Trong Linux, các thao tác chủ yếu và thường xuyên của người sử dụng là việc gõ

các dòng lệnh trên một cửa sổ Terminal. Mỗi câu lệnh của Linux thường sẽ bao gồm

đầu vào (Input) và đầu ra (Output), ngoài ra phần lớn câu lệnh cũng có kèm theo các

thông báo lỗi (Error Message).

Nguyên lý thiết kế của các chương trình trong Linux là chỉ làm một nhiệm vụ và

làm nhiệm vụ đó tốt nhất có thể. Tuy nhiên các công việc của người sử dụng lại không

chỉ đơn giản là sử dụng một câu lệnh duy nhất, mà cần nhiều chương trình phối hợp để

cùng thực hiện. Điều này thể hiện ở việc đầu ra của chương trình này lại là đầu vào của

chương trình khác. Và như vậy theo cách thông thường ta sẽ cần chạy từng câu lệnh

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 56

riêng biệt, và lấy đầu ra của câu lệnh này làm đầu vào của câu lệnh kia, việc này sẽ làm

mất rất nhiều công sức do đầu ra của các chương trình thường sẽ dài và phức tạp.

Trong Linux, có một tính năng giúp người sử dụng có thể giảm tải lượng công việc

mất quá nhiều công sức này, đó là Piping - tính năng giúp chuyển hướng dòng thực thi

của câu lệnh.

2.1.3.2. Cơ bản về Piping

Về cơ bản piping là một dạng chuyển hướng được sử dụng trong các dòng hệ điều

hành Linux dùng để chuyển đầu ra của chương trình này cho chương trình khác dùng

làm đầu vào để xử lý tiếp.

Theo ý nghĩa, piping là một đường ống, tức là nó sẽ làm cho các câu lệnh trở

thành một dòng xử lý nối tiếp nhau và liên tục, kết nối trực tiếp và tạm thời hai hoặc

nhiều chương trình đơn giản thành một nhóm các chương trình phức tạp. Chính nhờ vậy

mà một số nhiệm vụ có thể hoàn thành với hiệu suất cao mà không một chương trình

riêng rẽ nào có thể thực hiện một mình được.

Việc kết nối chương trình thông qua piping giúp cho các chương trình có thể hoạt

động liên tục chứ không cần phải chờ dữ liệu từ các nơi lưu trữ tạm thời như tệp tin hoặc

màn hình hiển thị, cũng không phải chờ cho chương trình trước đó hoàn thành mà có

thể hoạt động ngay khi chương trình trước nó bắt đầu tạo dữ liệu đầu ra.

2.1.3.3. Luồng dữ liệu

Các chương trình trong Linux sẽ tự động được kết nối với 3 luồng dữ liệu khi

chúng được thực thi:

- stdin (standard input): đây là luồng sẽ đưa dữ liệu vào chương trình để xử

lý.

- stdout (standard output): luồng này dùng để xuất dữ liệu ra màn hình hiển

thị sau khi quá trình thực thi hoàn tất mà không gặp lỗi.

- stderr (standard error): luồng này có chức năng tương tự stdout, tuy nhiên

nó chỉ dùng để in các thông báo lỗi và đồng thời khi đó tín hiệu lỗi cũng được

gửi tới hệ điều hành.

Hình 2.1.2-Luồng dữ liệu trong Unix/Linux

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 57

Ngoài ra, tùy theo chương trình mà luồng stdout sẽ được thay thế bằng tệp tin

hoặc máy in ....

Việc liên kết các chương trình sẽ là việc đưa dữ liệu đầu ra của chương trình trước

đến thẳng đầu vào của chương trình sau mà không để dữ liệu được in ra màn hình hiển

thị hoặc file.

2.1.3.4. Các dạng chuyển hướng

2.1.3.4.1. Chuyển hướng tới file

- Là một trong 2 cách chuyển hướng đơn giản nhất, với cách này, dữ liệu đầu

ra sẽ được lưu vào file thay vì in ra màn hình hiển thị.

- Để chuyển hướng 1 câu lệnh tới file, Linux cung cấp cho người sử dụng 2 cú

pháp: < (ghi nội dung ra file từ điểm bắt đầu, nếu file đã có nội dung thì ghi

đè) và << (tương tự < nhưng thay vì ghi đè lên nội dung cũ thì sẽ ghi từ điểm

kết thúc của nội dung cũ)

Một vài VD:

- Ghi nội dung ra file, nếu file không tồn tại thì một file mới sẽ được tạo (

#ls -l /data/dulieu/os/linux/danhmuchethong.txt >>

update.txt

#echo “He Thong Moi Them” >> update.txt

- Ghi đè nội dung file cũ

#echo “Noi dung moi thay” > upgrade.txt

#ls -l /data/dulieu/os/linux/danhmuchethong.txt >

upgrade.txt

2.1.3.4.2. Chuyển hướng từ file

- Là cách chuyển hướng đơn giản còn lại, đi cùng với Chuyển hướng tới file,

cách này giống với việc đọc dữ liệu từ file và sử dụng dữ liệu đó làm đầu vào

cho chương trình.

- Chỉ có một ký hiệu duy nhất cho cách này là <

VD: Trong VD này, nội dung của file được dùng làm đầu vào của câu lệnh wc, có

thể thấy rõ được sự khác biệt của 2 lần thực thi là lần 1 thì đầu vào là 1 file, lần 2 thì đầu

vào chỉ là nội dung của file (output của wc không còn tên file nữa)

#wc old_file //thống kê tập tin

2 5 32 old_file

#wc < old_file

2 5 32

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 58

2.1.3.4.3. Chuyển hướng tới stderr

- Thông thường, khi một câu lệnh gặp lỗi, thông tin lỗi sẽ hiển thị luôn lên màn

hình cùng với các dữ liệu đầu ra

- Linux cung cấp ký hiệu 2> để đưa nội dung thông báo lỗi ra file thay vì màn

hình hiển thị.

VD: Cũng tương tự như chuyển hướng tới file, nhưng ở đây chỉ có thông báo lỗi

được đưa vào file

#cat /data/dulieu/os 2> /data/dulieu/ghinhanloi.txt

Nội dung trong tập tin ghinhanloi.txt sẽ là thông báo “os không phải là tập tin”

2.1.3.4.4. Chuyển hướng tới câu lệnh khác

- Sự chuyển hướng đặc biệt nhất, đưa đầu ra của một câu lệnh tới câu lệnh khác

như đầu vào

- Sử dụng ký hiệu | để chuyển hướng

Một vài VD:

1. Trong thư mục /data/dulieu có tập tin dansachgiaovien.txt trong đó có lưu trữ

stt, hoten, ngay sinh,… của giáo viên. Hãy hiển thị các giáo viên họ “Nguyen”

#cat /data/dulieu/danhsachgiaovien.txt | grep Nguyen

2. Lấy địa chỉ MAC của card mạng eth0 lưu vào file MAC-eth0.txt trong /data

#ifconfig eth0 | grep HWaddr > /data/MAC-eth0.txt

Kết quả tập tin MAC-eth0.txt sẽ chứa dòng sau:

eth0 Link encap:Ethernet HWaddr 00:C0:26:21:96:99

Tóm lại

- Linux thật là tuyệt vời, các công việc cần xử lý bằng các dòng lệnh vốn đã

nhanh, với sự trợ giúp của tính năng piping còn giúp công việc được nhanh

chóng hơn.

- Tính năng này cũng giúp cho việc gõ đi gõ lại các câu lệnh bớt đi sự nhàm

chán, và đồng thời cũng làm tăng hiệu suất công việc.

- Chỉ với các ký hiệu đơn giản (>, >>, <, 2> và |) nhưng lại có thể giảm công

sức đi rất nhiều.

2.1.4. Trợ giúp lệnh

Để tìm thông tin trợ giúp về một câu lệnh, một hàm chức năng, hay xem giải nghĩa

của một file cấu hình… trong Linux thì làm thế nào? Lệnh man là câu trả lời cho vấn

đề đó. Mời bạn đón đọc bài viết sau đây để hiểu rõ hơn ý nghĩa và cách sử dụng lệnh

man này.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 59

Man Page (viết tắt của Manual Page) là tài liệu chứa 1 trong các thông tin như:

- Cách sử dụng câu lệnh cơ bản. Ví dụ, lệnh tar, whereis…

- Giải thích cấu trúc của file. Ví dụ, file /etc/passwd, /etc/fstab…

- Cách sử dùng các hàm thư viện, system call. Ví dụ, hàm mã hóa crypt()

- Các lệnh về quản trị hệ thống. Ví du, lệnh ifconfig để xem thông tin hoặc cấu

hình cho các giao tiếp mạng.

Nhiều Manpage có sẵn khi bạn cài xong Linux hoặc khi các gói phần mềm mới

cài cũng chứa các Manpage đi kèm với phần mềm đó.

Lệnh man được sử dụng để định dạng và hiển thị các Manpage này. Gõ lệnh sau

để xem hướng dẫn chi tiết cách sử dụng lệnh man

$ man man

Một manpage có thể được chia thành 8 phần (section) được đánh số và mô tả như

sau:

+ 1: Các lệnh dành cho người dùng thông thường.

+ 2: Các lời gọi hệ thống (System call).

+ 3: Các hàm thư viện C.

+ 4: Các file thiết bị nằm trong thư mục /dev, hay thông tin về driver

+ 5: Cấu trúc của 1 file nào đó.

+ 6: Games và screensavers

+ 7: Những thứ linh tinh khác…

+ 8: Các dịch vụ trên hệ thống và các công cụ dành cho việc quản trị Linux.

VD: Nếu muốn xem hướng dẫn sử dụng lệnh passwd dùng để đổi mật khẩu cho

người dùng thì gõ: (hiển thị cả 8 section)

$ man 8 passwd

(hoặc gõ man passwd thì tự động lệnh man sẽ hiển thị section 8)

Nhưng muốn xem định dạng của file passwd – là file dạng văn bản chứa thông tin

về các tài khoản trên hệ thống bạn phải gõ:

$ man 5 passwd

Kết quả trả về sau khi tìm kiếm trợ giúp sẽ được định dạng và hiển thị trong cửa

sổ Terminal với các mục như:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 60

Bảng 2.1.3. Mô tả tuỳ chọn lệnh man 5 pass

CỘT NỘI DUNG DIỄN ĐẠT NAME Tên của lệnh, file, hàm, deamon,… và 1 dòng ngắn cho

biết chức năng của nó

SYNOPSIS Đối với lệnh: cho biết cú pháp lệnh thường dùng.

Đối với hàm: liệt kê các tham số, file header cần dùng

DESCRIPTION Mô tả các chức năng mà hàm, lệnh cung cấp

EXAMPLES 1 số ví dụ thường hay sử dụng.

SEE ALSO Danh sách các lệnh, hàm liên quan.

Ngoài ra còn có các phần khác như: OPTIONS, EXIT STATUS,

ENVIRONMENT, KNOWN BUGS, FILES, AUTHOR, REPORTING BUGS,

HISTORY và COPYRIGHT.

2.1.5. Sử dụng các ký hiệu thay thế

2.1.5.1. Ký tự đại diện

Khi bạn sử dụng các câu lệnh về file và thư mục, bạn có thể sử dụng các ký tự đặc

biệt được gọi là các ký tự đại diện để xác định tên file, tên thư mục. Ví dụ, để đưa ra

danh sách tất cả các file có tên kết thúc bằng .c, bạn sử dụng câu lệnh sau:

#ls *.c

Kí tự * là một ký tự đại diện, khi shell thông dịch, nó sẽ thay * bằng tất cả cac tên

file có kết thúc bằng .c. Bảng bên dưới chỉ ra một số các ký tự đại diện thường được sử

dụng:

Bảng 2.1.4. Các ký tự đại diện trong Linux

* Tương ứng với thứ tự bất kỳ của một hay nhiều ký tự

? Tương ứng với một ký tự bất kỳ

[] Tương ứng với một trong những ký tự trong ngoặc hoặc giới hạn

Ví dụ:

Jo* : Các file bắt đầu với Jo

Jo*y : Các file bắt đầu với Jo và kết thúc với y

Ut*l*s.c : Các file bắt đầu với Ut, chứa một ký tự l và kết thúc với s.c

?.h : Các file bắt đầu với một ký tự đơn, theo sau bởi .h

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 61

Doc[0-9].txt : Các file có tên Doc0.txt, Doc1.txt ….Doc9.txt

Doc0[A-Z].txt : Các file có tên Doc0A.txt, Doc0B.txt …Doc0Z.txt

2.1.5.2. Cơ bản về các biểu thức chính quy

Các biểu thức chính quy được sử dụng bởi phần lớn các câu lệnh. Chúng cung cấp

một cách thuận tiện và đồng nhất để xác định các mẫu phù hợp . Chúng tương tự với

các ký tự đại diện, nhưng chúng mạnh hơn rất nhiều. Chúng cung cấp một phạm vi rộng

các mẫu lựa chọn. các ký tự đặc biệt được đưa ra ở dưới đây là các biểu thức chính quy

thường được sử dụng:

Bảng 2.1.5. Ý nghĩa các ký tự đại diện

Ký tự Ý nghĩa

. Tương ứng với một ký tự đơn bất kỳ ngoại trừ dòng mới

* Tương ứng với không hoặc nhiều hơn các ký tự đứng trước

^ Tương ứng với bắt đầu của một dòng

$ Tương ứng với kết thúc một dòng

\< Tương ứng với bắt đầu một từ

\> Tương ứng với kết thúc một từ

[] Tương ứng với một trong các ký tự bên trong hoặc một dãy các ký tự

[^] Tương ứng với các ký tự bất kỳ không nằm trong ngoặc

\ Lấy ký hiệu theo sau dấu gạch ngược

Trước tiên, trong một biểu thức chính quy, một ký tự bất kỳ không có ý nghĩa riêng

cho chính nó. Ví dụ để tìm kiếm các dòng chứa chữ “foo” trong file data.txt sử dụng câu

lệnh sau:

#grep foo data.txt

Để tìm kiếm các dòng bắt đầu bằng từ “foo”, ta sử dụng câu lệnh:

#grep ‘^foo’ data.txt

Việc sử dụng dấu trích dẫn đơn nói cho shell để nguyên các ký tự và bỏ qua chúng

trong chương trình. Việc sử dụng dấu trích dẫn đơn là cần thiết khi sử dụng các ký tự

đặc biệt.

#grep ‘hello$’ data.txt

Các dòng bất kỳ kết thúc với chuỗi “hello” được trả lại. Để tìm kiếm một mẫu bắt

đầu bằng một từ, sử dụng \<. Ví dụ:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 62

#grep ‘\<ki’ data.txt

biểu thức ở bên trên sẽ cho phép tìm kiếm các từ bắt đầu bằng ‘ki’ trong file

data.txt. Để tìm kiếm mẫu ‘wee’ kết thúc của một từ, sử dụng:

#grep ‘wee\>’ data.txt

Ở bảng bên trên, chú ý rằng dấu chấm sẽ phù hợp với một ký tự bất kỳ trừ dòng

mới. Điều này có thể được thao tác, nếu chúng ta tìm kiếm tất cả các dòng chứa ký tự

‘C’ được theo sau bởi hai ký tự và kết thức bởi ký tự ‘s’, biểu thức chính quy có thể là:

#grep ‘C..s’ data.txt

Biểu thức này có thể có các mẫu phù hợp như ‘Cats’, ‘Cars’ và ‘Cris’ nếu chúng

được chứa trong file data.txt. Nếu bạn muốn xác định một dãy các ký tự, sử dụng một

dấu gạch nối phân biệt ký tự bắt đầu và ký tự kết thúc của dãy. Khi bạn xác định một

dãy, thứ tự phải giống như mã ASCII. Ví dụ, để tìm kiếm tất cả các dòng chứa một ký

tự “B” theo sau bởi một ký tự thường sử dụng:

#grep ‘B[a-z]’ data.txt

Cũng có thể xác định nhiều giới hạn trong cùng một mẫu:

#grep ‘B[A-Z,a-z]’ data.txt //tìm kiếm BA, BC, BC,… hay

Ba, Bb, Bc,…

2.1.6. Biến trong linux

2.1.6.1. Biến môi trường

Đây là các biến được sử dụng chung cho cả hệ điều hành và các ứng dụng. Nó

được tạo ra để dùng chung, chia sẻ giữa hệ thống và các ứng dụng. Để có được danh

sách đầy đủ các biến này bạn sử dụng lệnh "env".

$env # hay dùng lệnh "set"

$set # lệnh này hiển thị cả biến cục bộ

Một số biến đáng chú ý là:

SHELL: cho biết shell nào đang được thực thi.

$echo $SHELL # thường là /bin/bash

HOME: chỉ ra thư mục Home của bạn

PATH: cho biết đường dẫn đến các thư mục chứa các tệp tin thực thi. Đây chính

là nơi bạn gọi các lệnh trên shell mà không cần chỉ ra đường dẫn đầy đủ.

Ví dụ: PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'

Phân cách các thư mục bằng dấu (:) chứ không phải là dấu chấm phẩy (;) như trong

Windows.

2.1.6.2. Biến do người dùng định nghĩa

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 63

Đây là biến cục bộ. Bạn hãy gõ:

$TODAY=Saturday

$echo $TODAY # sẽ hiện ra Saturday

$env | grep TODAY= # bạn chẳng thấy nó đâu, có nghĩa là lệnh env không thấy

nó.

Để giúp biến này có thể sử dụng như là một biến môi trường thì bạn hãy "export"

nó:

$export TODAY

$export TODAY=Saturday # nếu bạn chưa định nghĩa TODAY

$env | grep TODAY= #bây giờ thì biến TODAY đã hiện ra

Nhưng nếu bạn muốn định nghĩa một biến ngay lúc khởi động mà không cần phải

gõ đi gõ lại một lệnh nhàm chán. Thế thì hãy thêm hai dòng sau:

TODAY="Saturday"

export TODAY

vào cuối tệp tin ~/.bashrc

2.1.7. Cài đặt phần mềm

2.1.7.1. Lệnh rpm

2.1.7.1.1. Giới thiệu

Hầu hết các hệ điều hành Linux đều có công cụ quản lý, cài đặt, gỡ bỏ phần mềm

như Add or Remove Programs trong Windows. Ví dụ, trong Ubuntu, nếu server của có

nối mạng thì bạn có thể download và cài đặt ứng dụng tự động thông qua công cụ

Synaptic Package Manager (giao diện GUI) hoặc sử dụng dòng lệnh apt-get trong

Terminal… File cài đặt cho ứng dụng trên Linux thường có phần mở rộng như .deb,

.rpm, .bin, .tar, tar.gz, .sh …. Mỗi loại file cài đặt này có 1 cách thức thực thi cài đặt

riêng.

Các phần mềm trên Linux không tự đóng gói sẵn vì 2 vấn đề sau: vấn đề thứ 1 là

các phần mềm viết trên Linux không hẳn chỉ có thể chạy trên Linux mà có thể chạy trên

nhìều hệ thống khác nhau trong họ Unix như Solaris, AIX, HP-UX…thậm chí các phần

mềm đó có thể chạy trên rất nhiều vi xử lý khác nhau như Intel, Motorola, PPC… Có

được sự đa năng đó là nhờ vào tính đa nền (portable) của ngôn ngữ C/C++ nhưng đòi

hỏi chúng ta phải biên dịch lại phần mềm từ mã nguồn cho hệ thống mà chúng vận hành.

Vấn đề thứ 2 nằm ở các dòng linux khác nhau phải có kiểu đóng gói khác nhau như Red

hat dùng rpm, trong khi Debian (ubuntu) dùng .deb.

Vì các phần mềm này là phần mềm mã nguồn mở và các nhà phát triển không có

cách gì hơn là để lại phần biên dịch cho chúng ta. Tuy nhiên cũng có một số nhà phát

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 64

triển biên dịch sẵn cho chúng ta ra các gói có dạng rpm (deb) và cùng với sự hỗ trợ của

công ty Red Hat chúng ta cũng đã có những chương trình quản lý các phần mềm hiệu

quả không kém gì trên Windows như RPM (Redhat Package Manager). Mặc dù là thế

nhưng không phải lúc nào các gói mới nhất từ các nhà phát triển gốc đều có phiên bản

biên dịch sẵn mà thường là một khỏang thời gian sau các phiên bản đó mới có được dưới

dạng biên dịch sẵn. Bên cạnh đó còn có rất nhiều nhà phát triển không hề biên dịch sẵn

sản phầm của mình mà đòi hòi người dung phải biên dịch, điển hình là trình chơi phim

và nhạc xine. Các gói biên dịch sẵn các bạn có từ xine đa số là từ các nhà phát triển

khác. Do đó nếu bạn không biết cách cài đặt các gói từ nguồn là một trở ngại rất lớn cho

việc hiểu và quản trị hệ thống của riêng mình.

2.1.7.1.2.Cài đặt phần mềm từ RPM

Cấu trúc file rpm

Các phiên bản Red Hat như CentOS có gói cài đặt chuyên biệt là các file .rpm

(RedHat Packet Manager)

Cấu trúc file RPM như sau:

<tên gói>-<phiên bản>-<bản phân phối>.<nhóm linux>.<linux distro>.<kiến

trúc>.rpm

Với:

<bản phân phối – release> : Số hiệu bản vá lỗi của phần mềm

<kiến trúc> : nền tảng phần cứng mà gói được thiết kế để chạy trên đó. Nếu <kiến

trúc> là “noarch” nghĩa là nó không phụ thuộc vào nền tảng phần cứng, còn “src” nghĩa

là mã nguồn cho người sử dụng có thể chỉnh sửa, i386 đây là kiến trúc 32 bit, x86_64 là

kiến trúc 64 bit

Vd: httpd-2.2.3-91.el5.centos.x86_64.rpm

<tên> httpd

<phiên bản> 2.2.3

<bản phân phối> 91

<nhóm linux> el5 tức thuộc các dòng linux Redhat, CentOS, Fedora phiên bản 5,

el6 là phiên bản 6

<linux distro> CentOS

<kiến trúc> x86_64, kiến trúc 64 bit

Một số tham số với lệnh rpm

-i <gói> cài đặt,

-e <tên phần mềm> gỡ bỏ (erase),

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 65

-U <gói> cập nhật gói (gỡ gói cũ và cài gói mới),

-q <tên phần mềm> in ra tên, phiên bản, release, nếu đã được cài,

-qi <tên phần mềm> in ra thông tin của phần mềm nếu đã được cài

-V <tên gói> kiểm tra tính toàn vẹn

–nodeps không kiểm tra các gói phụ thuộc khi cài đặt và cập nhật cũng như

gỡ bỏ

–force cài đặt, cập nhật và bỏ cũ

–import <PUBKEY> Nhập GPG Key (/etc/pki/rpm-gpg/RPM-GPG-KEY-

CENTOS-<version>)

–replacefiles giải quyết khi có đụng độ trong việc ghi files cho gói cài đặt

Ví dụ:

Gõ rpm –ivh <gói cài đặt>

rpm –e –nodeps <tên phần mềm> Gỡ bỏ không thương tiếc.

c. Cài đặt phần mềm bằng lệnh rpm

Cài đặt httpd-2.2.3-91.el5.centos.x86_64.rpm bằng lệnh rpm

#rpm –ivh httpd-2.2.3-91.el5.centos.x86_64.rpm

Cài đặt bằng lệnh rpm có những điểm bất lợi là những gói phụ thuộc, có nghĩa là

muốn cài gói này thì trước hêt phải cài những gói phụ thuộc của nó gây khó khăn cho

người mới bắt đầu làm quen với Linux. Ví dụ khi cài gói httpd thì trước hết phải cài

những gói phụ thuộc như apr, apr-util. Tuy nhiên lệnh rpm kèm với những tham số có

những công dụng rất hữu ích giúp ta quản trị và thao tác một cách nhanh chống.

Một số lệnh rpm cơ bản

rpm –ivh: lệnh cài đặt phần mềm có phần mở rộng là rpm. Khi cài đặt bằng rpm

có thể bị vấn đề gói phụ thuộc. Nếu bỏ qua gói phụ thuộc thì chỉ cần thêm tham số –

nodeps

rpm –qa: truy vấn tất cả các phần mềm rpm được cài đặt trong hệ thống. Nếu

muốn truy vấn một phần mềm cụ thể nào đó có cài đặt trong hệ thống hay không thì

dùng lệnh “rpm qa:grep tenphanmem” với a là all (tất cả), q là query (truy vấn)

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 66

rpm –qf: Nếu có một danh sách tập tin, muốn biết tập tin đó thuộc phần mềm rpm

nào thì dùng lệnh “rpm –qf duongdantaptin”. Ví dụ: “rpm –qf /etc/httpd/conf/httpd.conf”

[root@test ~]# rpm -qf /etc/httpd/conf/httpd.conf

httpd-2.2.3-91.el5.centos

rpm –qi: xem thông tin phần mềm rpm đã được cài đặt

[root@test ~]# rpm -qi httpd

Name : httpd Relocations: (not relocatable)

Version : 2.2.3 Vendor: CentOS

Release : 91.el5.centos Build Date: Tue 16 Sep 2014 10:09:48 PM ICT

Install Date: Tue 31 Mar 2015 09:47:38 AM ICT Build Host: builder17.centos.org

Group : System Environment/Daemons Source RPM: httpd-2.2.3-

91.el5.centos.src.rpm

Size : 3325176 License: Apache Software License

Signature : DSA/SHA1, Fri 19 Sep 2014 06:48:33 PM ICT, Key ID

a8a447dce8562897

URL : http://httpd.apache.org/

Summary : Apache HTTP Server

Description :

The Apache HTTP Server is a powerful, efficient, and extensible

web server.

rpm –qip: xem thông tin phần mềm chưa được cài đặt, vừa mới tải về

[root@test CentOS]# rpm -qip samba-3.0.33-3.40.el5_10.x86_64.rpm

Name : samba Relocations: (not relocatable)

Version : 3.0.33 Vendor: CentOS

Release : 3.40.el5_10 Build Date: Tue 18 Mar 2014 01:38:31 AM ICT

Install Date: (not installed) Build Host: builder10.centos.org

Group : System Environment/Daemons Source RPM: samba-3.0.33-

3.40.el5_10.src.rpm

Size : 31674253 License: GNU GPL Version 2

Signature : DSA/SHA1, Tue 18 Mar 2014 02:05:21 AM ICT, Key ID

a8a447dce8562897

URL : http://www.samba.org/

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 67

Summary : The Samba SMB server.

Description :

Samba is the suite of programs by which a lot of PC-related machines

share files, printers, and other information (such as lists of

available files and printers). The Windows NT, OS/2, and Linux

operating systems support this natively, and add-on packages can

enable the same thing for DOS, Windows, VMS, UNIX of all kinds, MVS,

and more. This package provides an SMB server that can be used to

provide network services to SMB (sometimes called “Lan Manager”)

clients. Samba uses NetBIOS over TCP/IP (NetBT) protocols and does NOT

need the NetBEUI (Microsoft Raw NetBIOS frame) protocol.

rpm –qlp: liệt kê nội dung của gói phần mềm xem có những gì

[root@test CentOS]# rpm -qlp samba-3.0.33-3.40.el5_10.x86_64.rpm |more

/etc/logrotate.d/samba

/etc/pam.d/samba

/etc/rc.d/init.d/smb

/etc/samba/smbusers

rpm –qRp: kiểm tra các gói phụ thuộc của gói phần mềm cần cài đặt

[root@test CentOS]# rpm -qRp samba-3.0.33-3.40.el5_10.x86_64.rpm |more

/bin/bash

/bin/mktemp

/bin/sh

/bin/sh

rpm –Uvh: Khi thực hiện lệnh này, hệ thống kiểm tra xem phần mềm có được cài

đặt hay chưa. Nếu chưa cài đặt thì hệ thống sẽ cài, còn nếu đã cài đặt rồi thì kiểm tra

xem đã cũ chưa, nếu cũ thì cập nhật mới.

rpm –qc: xem các tập tin cấu hình của phầm mềm. Ví dụ muốn xem các tập tin

cấu hình của httpd thi dùng lệnh “rpm –qc httpd”

[root@test CentOS]# rpm -qc httpd

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 68

/etc/httpd/conf.d/proxy_ajp.conf

/etc/httpd/conf.d/welcome.conf

/etc/httpd/conf/httpd.conf

/etc/httpd/conf/magic

/etc/logrotate.d/httpd

/etc/rc.d/init.d/httpd

/etc/sysconfig/httpd

rpm –qd: xem các tập tin hướng dẫn của phần mềm. Ví dụ xem các tập tin hướng

dẫn của phần mềm httpd dùng lệnh “rpm –qd httpd”

[root@test CentOS]# rpm -qd httpd

/usr/share/doc/httpd-2.2.3/ABOUT_APACHE

/usr/share/doc/httpd-2.2.3/CHANGES

/usr/share/doc/httpd-2.2.3/LICENSE

2.1.7.2. Lệnh yum

2.1.7.2.1. Cơ bản về lệnh yum

YUM là một công cụ quản lý và cài đặt phần mềm rất tiện dụng cho các hệ thống

Red Hat Linux. Nó có thể cài đặt các gói mới hoặc cập nhật các gói đã tồn tại trên hệ

thống một cách tự động và tiện lợi thông qua vài dòng lệnh đơn giản. YUM được viết

tắt từ “Yellow dog Update, Modified” được phát triển bởi Duke University. Lệnh này

được hỗ trợ trên Red Hat Enterprise Linux (RHEL) và các bản phân phối của nó bao

gồm: Red Hat Enterprise Linux, Fedora, CentOS

Thông thường khi bạn cài hệ điều hành CentOS thì YUM đã được tích hợp sẵn.

Để kiểm tra xem máy chủ có YUM hay chưa ta dùng lệnh yum –version. Nếu kết quả

như bên dưới thì máy chủ có tích hợp YUM.

#yum --version

3.2.19

Installed: yum-metadata-parser-1.1.2-2.el5.i386 at 2010-

01-19 09:40

Built : [] at 2008-05-24 19:53

Committed: James Antill <[email protected]> at 2008-

01-18 22:00

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 69

Installed: rpm-4.4.2.3-9.el5.i386 at 2010-01-19 09:39

Built : [] at 2009-01-21 08:05

Committed: Panu Matilainen <[email protected]> at 2008-

12-02 22:00

Installed: yum-3.2.19-18.el5.centos.noarch at 2010-01-19

09:47

Built : [] at 2009-01-22 10:53

Committed: Karanbir Singh <[email protected]> at 2009-01-

22 22:00

Hình 2.1.3. Xem phiên bản (version) lệnh yum

Cài đặt bằng lệnh yum có hai dạng: yum từ internet và yum từ local hoặc dvd. Đối

với yum từ internet đòi hỏi máy chủ phải kết nối internet và thực hiện lệnh:

Dùng lệnh yum để cài gói httpd-2.2.3-91.el5.centos.x86_64.rpm

yum –y install httpd

Sau khi thực hiện lệnh trên, máy chủ tự động tìm đến những nơi lưu trữ ở ngoài

internet cụ thể là các Repository để download gói httpd về và cài đặt. Những nơi lưu trữ

được cấu hình trong các tập tin ở đường dẫn “/etc/yum.repos.d”, đó là những tập tin có

dạng *.repo. Tham số -y có nghĩa là yes để thiết lập cho lệnh yum tự động cài đặt gói

sau khi tải về mà không cần hỏi có cài hay không.

Còn yum từ dvd thì trước hết phải cấu hình đường dẫn để yum. Dùng lệnh mount

để mount đĩa dvd

mount /dev/cdrom /media/

Sau đó tạo tập tin dvd.repo trong đường dẫn “/etc/yum.repos.d” có nội dung như

sau

[dvd]

name=Local Repository

baseurl=file:///media

gpgcheck=0

enabled=1

Kế tiếp dùng lệnh yum –y install httpd như trên để cài dịch vụ apache web server.

Cài đặt bằng lệnh yum rất thuận lợi, không bị vấn đề về gói phụ thuộc. Hệ thống

tự động phân tích tìm và cài luôn những gói phụ thuộc, thuận lợi cho những người mới

bắt đầu làm quen với Linux. Ví dụ khi cài gói httpd thì hê thống tự động cài luôn các

gói phụ thuộc và gói httpd

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 70

2.1.7.2.2. Một số lệnh YUM cơ bản

yum check-update và yum list update

Hai lệnh này có chức năng như nhau, dùng để kiểm tra xem trong hệ thống có bao

nhiêu gói có bản cập nhật mới

yum list all và yum list

Hai lệnh này dùng để liệt kê tất cả các gói phần mềm có thể được cài đặt bằng lệnh

yum và những gói đã được cài đặt

yum list installed

Dùng để liệt kê tất cả các gói phần mềm đã được cài đặt

- yum list available: dùng để liệt kê tất cả các phần mềm có thể cài đặt bằng

lệnh yum

- yum info: là lệnh dùng để kiểm tra thông tin của phần mềm chưa được cài đặt

và đã được cài đặt.

- yum search: là lệnh tìm kiếm phần mềm được hỗ trợ cài đặt bằng yum. Ví dụ:

“yum search httpd” là lệnh tìm kiếm phần mềm httpd, tất cả phần mềm có tên

hoặc thông tin chứa httpd sẽ được liệt kê

[root@test ~]# yum search httpd

Loaded plugins: fastestmirror, security

Loading mirror speeds from cached hostfile

* base: mirrors.viethosting.vn

* extras: mirrors.viethosting.vn

* updates: mirrors.viethosting.vn

============== Matched: httpd ===============

mod_ssl.x86_64 : SSL/TLS module for the Apache HTTP server

system-config-httpd.noarch : Apache configuration tool

centos-ds.x86_64 : CentOS Directory, Administration, and

Console Suite

httpd.x86_64 : Apache HTTP Server

httpd-devel.i386 : Development tools for the Apache HTTP

server.

httpd-devel.x86_64 : Development tools for the Apache HTTP

server.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 71

httpd-manual.x86_64 : Documentation for the Apache HTTP

server.

mod_dav_svn.x86_64 : Apache server module for Subversion

server.

yum update: là lệnh dùng để kiểm tra và cập nhật phiên bản mới nhất của gói phần

mềm. Nếu bạn sử dụng lệnh “yum update” thì nó sẽ cập nhật phiên bản mới nhất cho tất

cả các gói phần mềm đã được cài đặt trên server. Còn nếu bạn muốn chỉ kiểm tra và cập

nhật phiên bản mới nhất cho httpd thì sử dụng lệnh “yum update httpd”. Nếu bạn muốn

cập nhật cho nhiều gói phần mềm khác nhau thì sử dụng lệnh sau “yum update ten-goi-

phan-mem-01 ten-goi-phan-mem-02″. Ví dụ muốn cập nhật httpd và php thì sử dụng

lệnh sau “yum update httpd php”

yum remove: là lệnh dùng để gỡ bỏ và xoá gói phần mềm do bạn chỉ định. Ví dụ,

để gỡ bỏ httpd ra khỏi hệ thống, bạn sử dụng lệnh sau “yum remove httpd”. Có thể thêm

tham số -y để hệ thống tự động xóa mà ko cần hỏi yes hay no.

yum clean all: Thông thường yum sẽ tạo và sử dụng cache cho các lần truy vấn,

để xoá hết cache của yum thì dùng lênh “yum clean all”

yum provides: là lệnh dùng để tìm kiếm tên của phần mềm mà những tập tin có

phụ thuộc. Ví dụ, để biết tên của phần mềm mà có file cấu hình ở đường dẫn

“/etc/httpd/conf/httpd.conf “ thì dùng lệnh “yum provides /etc/httpd/conf/httpd.conf”

[root@test ~]# yum provides /etc/httpd/conf/httpd.conf

Loaded plugins: fastestmirror, security

Loading mirror speeds from cached hostfile

* base: mirrors.digipower.vn

* extras: mirrors.digipower.vn

* updates: mirror.digistar.vn

httpd-2.2.3-91.el5.centos.x86_64 : Apache HTTP Server

Repo : base

Matched from:

Filename : /etc/httpd/conf/httpd.conf

httpd-2.2.3-91.el5.centos.x86_64 : Apache HTTP Server

Repo : installed

Matched from:

Other : Provides-match: /etc/httpd/conf/httpd.conf

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 72

yum grouplist: Trong Linux, một số phần mềm được gôm thành một nhóm. Thay

vì cài từng phần mềm riêng lẻ thông qua yum, để cho tiện chúng ta chỉ cần cài nhóm mà

phần mềm đó phụ thuộc. Để liệt kê tên của một số nhóm dùng lệnh “yum grouplist”

[root@test ~]# yum grouplist

yum groupinstall: là lệnh dùng để cài một nhóm phần mềm. Ví dụ, để cài nhóm

phần mềm Windows File Server ta dùng lệnh yum –y groupinstall ‘Windows File

Server’

yum groupupdate: là lệnh dùng để cập nhật một nhóm phần mềm. Ví dụ, cập nhật

nhóm phần mềm Windows File Server thì dùng lệnh yum groupupdate ‘Windows File

Server’

yum groupremove: xóa một nhóm phần mềm, ví dụ xóa nhóm Windows File

Server dùng lệnh yum groupremove ‘Windows File Server’

yum repolist all: xem trạng thái của các repositories

Ngoài ra còn có một số lệnh yum như: yum –enablerepo=repo_name install

package_name, yum shell, yum history

2.1.8. Bài tập

2.1.8.1. Củng cố lý thuyết

1. Cấu trúc câu lệnh yum trong Linux? Muốn thực hiện lệnh yum cần điều kiện gì? Một

số phiên bản linux cũ hiện nay khi cài lệnh yum thường thất bại! Hãy giải thích tại sao?

2. Tại sao cần phải thiết lập biến môi trường trong Linux? Liệt kê các loại biến môi

trường trong Linux? Tại sao người dùng phải thiết lập biến môi trường của riêng mình?

3. So sánh sự khác biệt về tính chất của hai lệnh yum và rpm? Thực chất của lệnh yum

là gì? Quy trình thiết lập yum offline với source trên DVD cài hệ điều hành Centos.

2.1.8.2. Phần thực hành

1. Xem hướng dẫn lệnh yum bằng lệnh man, kết quả ghi vào file yumman.txt trong thư

mục home của root.

2. Thực hiện cài đặt dịch vụ httpd bằng lệnh yum, những thông báo kết quả lưu lại vào

tập tin yumhttpd.txt trong thư mục home của root

3. Thiết lập chức năng cài đặt phần mềm bằng yum thông qua dvd

4. Kiểm chứng: hãy cài đặt các phần mềm vsftp, samba (smb), dns (bind), nfs bằng lệnh

yum.

5. Cấu hình các biến sau: thay đổi đường dẫn cho hệ thống

6. Dùng lệnh rpm kiểm tra phần mềm gftp, sshd, iptables, httpd, smb có cài đặt trên máy

chưa? Phần mềm chưa có thì tiến hành cài đặt.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 73

7. Tiến hành cài đặt gftp, iptables và sshd bằng lệnh rpm.

8. Dùng lệnh cat, tail, head để xem nội dung vào /etc/passwd và lọc ra các dòng sau:

root, hall, sendmail, 3 dòng cuối, 5 dòng đầu của tập tin lần lượt vào các tập tin sau

u01.txt, u02.txt, u03.txt, u04.tut, u05.tut lưu vào thư mục home của user

9. Dùng lệnh ls -l xem các tập tin .txt và .tut lưu vào tập tin u06.doc và u07.vba cũng

trong home của user

10. Liệt kê các tập tin từ u01 đến u06 bằng các sử dụng ký tự đại diện.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 74

Bài 2. LÀM VIỆC VỚI HỆ THỐNG THƯ MỤC VÀ QUẢN TRỊ NGƯỜI

DÙNG-NHÓM

Bài 2.2. LÀM VIỆC VỚI HỆ THỐNG THƯ MỤC VÀ QUẢN TRỊ NGƯỜI

DÙNG-NHÓM

2.2.1. Làm việc với hệ thống tập tin

2.2.1.1. File: qui ước đặt tên, phân loại theo nội dung

Trong linux tập tin được tổ chức thành các thư mục, theo mô hình phân cấp. Tham

chiếu đến một tập tin bằng tên và đường dẫn. Các câu lệnh thao tác tập tin cho phép dịch

chuyển, sao chép một tập tin hay toàn bộ thư mục cùng với các thư mục con chứa trong

nó…

Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để đặt tên

tập tin. Không được bắt đầu một tên tập tin bằng dấu chấm hay chữ số. Những ký tự

khác như ‘/’, ‘?’, ‘*’, là ký tự đặc biệt được dành riêng cho hệ thống. Chiều dài của tên

tập tin có thể tới 256 ký tự.

Trong UNIX không có khái niệm phần tên mở rộng (file extensions) theo kiểu như

của Windows. Do đó có thể đặt tên tập tin tuỳ ý, kể cả tên chứa nhiều dấu chấm “.”

Tập tin có tên bắt đầu bằng dấu chấm là tập tin ẩn.

UNIX/Linux nhậy cảm với chữ HOA, chữ thường (case sensitive). Để tiện lợi,

nhiều người thường dùng chữ thường (lower case). Ta cũng nên theo cách này.

Tất cả các tập tin trong linux có chung cấu trúc vật lý là chuỗi các byte (byte

stream). Cấu trúc thống nhất này cho phép linux áp dụng khái niệm tập tin cho mọi thành

phần dữ liệu trong hệ thống. Thư mục cũng như các thiết bị được xem như tập tin. Chính

việc xem mọi thứ như các tập tin cho phép linux quản lý và chuyển đổi dữ liệu một cách

dễ dàng. Một thư mục chứa các thông tin về thư mục, được tổ chức theo một định dạng

đặc biệt. Các thành phần được xem như các tập tin, chúng được phân biệt dựa trên kiểu

tập tin: tập tin thông thường (ordinary file), thư mục (directory) , thiết bị kiểu kí tự

(character device file), và thiêt bị kiểu khối dữ liệu (block device file).

2.2.1.2. Thưc mục

Các thư mục hệ thống

Thư mục root, là gốc của hệ thống tệp của Linux, chứa một vài thư mục hệ thống.

Thư mục hệ thống chứa tệp và chương trình sử dụng để chạy và duy trì hệ thống. Cấu

trúc cây thư mục như sau:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 75

Hình 2.2.1.Cấu trúc cây thư mục trên hệ thống Unix

Giải thích ý nghĩa các thư mục:

Bảng 2.2.1. Mô tả các thư mục

Thư mục

Mô tả nội dung

/ bắt đầu cấu trúc tệp, gọi là thư mục gốc (root)

/home chứa các thư mục nhà (home) của mọi tài khoản người dùng

/bin lưu trữ tất cả các câu lệnh chuẩn và các chương trình tiện ích

/usr chứa các tệp, câu lệnh được hệ thống sử dụng, thư mục này được chia thành các thư mục con khác

/usr/bin chứa các câu lệnh hướng người dùng và các chương trình tiện ích

/usr/sbin chứa các câu lệnh quản trị hệ thống

/usr/lib chứa thư viện cho các ngôn ngữ lập trình

/usr/doc chứa tài liệu của linux

/usr/man chứa các tệp hướng dẫn sử dụng cho các câu lệnh (man)

/sbin chứa các tệp hệ thống để khởi động hệ thống

/dev chứa giao diện cho các thiết bị như đầu cuối và máy in

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 76

/etc chứa tệp cấu hình hệ thống và các tệp hệ thống khác

2.2.1.3. Thư mục cá nhân (thư mục chủ)

Mỗi tài khoản người sử dụng có một thư mục của mình gọi là thư mục chủ hay thư

mục nhà. Sau khi đăng nhập hệ thống, người dùng sẽ đứng ở thư mục nhà của mình.

Tên của thư mục này giống với tên tài khoản đăng nhập hệ thống. Các tệp được tạo khi

người dùng đăng nhập được tổ chức trong thư mục chủ.

Theo mặc định, tất cả các thư mục nhà của người sử dụng nằm trong thư mục

/home của hệ thống.

2.2.1.4. Đường dẫn tương đối, tuyệt đối

Đường dẫn là một dãy liên tục các thư mục có liên hệ với nhau, cách nhau bằng

dấu / đi từ một vị trí cao đến vị trí thấp. Có hai loại đường dẫn:

- Đường dẫn tuyệt đối được tính từ "/" ( root )

- Đường dẫn tương đối được tính từ vị trí hiện tại

Các thư mục mặc định:

.: thư mục hiện tại

..: thư mục cha

~: thư mục chủ (home) của từng cá nhân

/: thư mục gốc, không thể tạo, không thể xoá. Trong linux, thư mục này rất quan

trọng, nó dùng để kết nối các thiết bị và các thư mục khác trong hệ thống.

2.2.1.5. Các lệnh làm việc với file và thư mục

2.2.1.5.1. Lệnh cat

Cú pháp: cat file [>|>] [destination file]

Lệnh cat sẽ hiển thị nội dung của một file ra thiết bị ra chuẩn. Nó thường hữu ích

để kiểm tra nội dung của một file bằng sử dụng câu lệnh cat. Đối số mà bạn đưa vào

lệnh cat là file bạn muốn xem. Để xem toàn bộ nội dung của một file:

cat name

Lệnh cat cũng có thể trộn nhiều file đang tồn tại vào một file:

cat name1 name2 name3 > allnames

Ví dụ này sẽ kết hợp các file : name1, name2 và name3 cho file cuối cùng allnames.

Thứ tự của việc trộn được thiết lập bởi thứ tự của các file được đưa vào trên dòng lệnh.

Sử dụng lệnh cat, chúng ta có thể bổ sung một file vào một file khác đang tồn tại. Trong

trường hợp bạn quên thêm name4 vào câu lệnh trước, chúng ta vẫn có thể nhận được kết

quả mong muốn bằng cách thực hiện lệnh:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 77

cat name4 > allnames

Lệnh này sẽ bổ sung nội dung của file name4 vào allnames

2.2.1.5.2. Lệnh xoá màn hình clear

Xoá màn hình, trả lại dấu chắc dòng lệnh ở phía trên của màn hình

clear

2.2.1.5.3. lệnh so sánh cmp (compare)

Cú pháp: cmp [ -ls ] file1 file2

Lệnh này so sánh nội dung của hai file. Nếu không có sự khác nhau nào, lệnh cmp

sẽ kết thúc một cách yên lặng, tuỳ chọn –l sẽ n ra số byte và các giá trị khác nhau giữa

hai file. Tuỳ chọn –s không hiển thị cài gì cả, nó chỉ trả lại trạng thái chỉ ra rằng sự tương

đương giữa hai file. Giá trị 0 được trả lại nếu các file giống hệt nhau, giá trị bằng 1 nếu

hai file khác nhau và lớn hơn 1 nếu lỗi xuất hiện khi thực hiện câu lệnh.

2.2.1.5.4. Lệnh sao chép cp (copy)

Cú pháp: cp [ -R ] file_hoặc_thư_mục file_hoặc_thư_mục

Lệnh cp sẽ sao chép một file từ thư mục nguồn đến thư mục đích được đưa vào.

Để sao chép toàn bộ các file và các thư mục con bên trong thư mục mong muốn, bạn sử

dụng câu lệnh cp với tuỳ chọn –R

2.2.1.5.5. Lệnh du (disk use)

Lệnh này tổng kết việc sử dụng đĩa. Nếu bạn xác định một thư mục, lệnh du sẽ báo

cáo việc sử dụng đĩa cho chính các thư mục đó.

Cú pháp: du [ -ask ] tên_file

Tuỳ chọn

- –a sẽ đưa ra màn hình kích thước của mỗi thư mục và file

- –s sẽ chỉ in ra tổng cộng

- –k sẽ in ra tất cả các kích thước file theo kilobytes

2.2.1.5.6. Lệnh file

Cú pháp: file filename

Câu lệnh xác định kiểu của file. Nếu file không phải là file thông thường, kiểu của

file được xác định.

2.2.1.5.7. Lệnh tìm kiếm find

Câu lệnh find tìm các file và các thư mục.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 78

Cú pháp : find [path] [-type fd] [-name mẫu] [-atime [+-] số_ngày] [-exec câu_lệnh

{} \;] [-empty].

Ví dụ:

#find . –type d

Câu lệnh trả lại tất cả các thư mục con trong thư mục hiện tại. Tuỳ chọn –type xác

định kiểu, d cho các thư mục, f cho các file hay l cho các lien kết.

#find . –type f –name “*.txt”

Lệnh này sẽ tìm tất cả các file văn bản có phần mở rộng “.txt” trong thư mục hiện

tại và cả trong các thư mục con.

#find . –type f –name “*.txt” –exec grep –l ‘magic’ {} \;

Câu lệnh này sẽ tìm kiếm tất cả các file văn bản (kết thúc với phần mở rộng .txt)

trong thư mục hiện tại và các thư mục con có chứa từ “magic”.

#find . –type f empty

Hiển thị tất cả các file rỗng trong thư mục hiện tại.

2.2.1.5.8. Lệnh grep

Cú pháp: grep [–viw] mẫu file

Lệnh grep cho phép bạn tìm kiếm một hoặc nhiều file có các mẫu ký tự đặc biệt.

Mỗi dòng của mỗi file chứa các mẫu được hiển thị trên màn hình. Câu lệnh grep hữu ích

khi bạn có nhiều file và bạn muốn tìm ra file chứa từ hoặc câu xác định. Sử dụng tuỳ

chọn -v, bạn có thể hiển thị các file không chứa một mẫu. Ví dụ, để chọn các dòng trong

data.txt không chứa từ “the” ta thực hiện:

#grep -vw ‘the’ data.txt

Nếu tuỳ chọn -w không được xác định thì bất kỳ các từ chứa “the” đều phù hợp

như “together”. Tuỳ chọn -w được xác định buộc mẫu phải là toàn bộ một từ. Cuối cùng,

tuỳ chọn -i bỏ qua sự khác nhau giữa các ký tự chữ hoa và ký tự chữ thường khi tìm

kiếm mẫu.

2.2.1.5.9. Lệnh head

Cú pháp: head [-count | -n number] filename

Câu lệnh này sẽ hiển thị n dòng đầu tiên của filename. Nếu không ghi chỉ số n thì

lệnh sẽ hiển thị 10 dòng đầu của một filename. Tuy nhiên, bạn có thể sử dụng các tuỳ

chọn để xác định số dòng hiển thị. Ví dụ:

#head -2 doc.txt

sẽ hiển thị hai dòng đầu tiên.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 79

2.2.1.5.17. Lệnh tail

Cú pháp: tail [-n | -fr] tên_file

Câu lệnh tail hiển thị phần cuối của một file, mặc định nó sẽ hiển thị 10 dòng cuối

cùng của file nếu giá trị n không được chỉ ra. Để hiển thị 50 dòng cuối cùng của file

doc.txt, bạn có thể sử dụng câu lệnh:

#tail -50 doc.txt

Tuỳ chọn –r sẽ thực hiện công việc ngược lại, mặc định nó sẽ hiển thị tất cả các

dòng trừ 10 dòng cuối cùng. Tuỳ chọn –f hữu ích khi bạn đang giám sát một file. Với

tuỳ chọn này, tail sẽ chờ cho dữ liệu mới được ghi vào file. Khi dữ liệu mới được thêm

vào file, tail sẽ hiển thị dữ liệu lên màn hình. Để dừng lệnh tail khi đang giám sát file,

chọn tổ hợp phím Ctrl + C bởi vì lệnh tail không tự dừng được.

2.2.1.5.11. Lệnh locate

Cú pháp : locate từ_khoá

Câu lệnh locate tìm đường dẫn đến một file đặc biệt hay một câu lệnh. Lệnh locate

sẽ tìm kiếm chính xác hay một phần của chuỗi phù hợp. Ví dụ:

#locate foo

Kết quả tìm kiếm sẽ đưa ra các file có tên chứa từ khoá ‘foo’ theo đường dẫn tuyệt

đối hoặc sẽ không đưa ra kết quả nếu không có tên file như vậy.

2.2.1.5.12. Lệnh ls

Lệnh ls cho phép bạn đưa ra danh sách các file và các thư mục con.

Cú pháp : ls [-1aRl] file_hoặc_thư_mục

Khi sử dụng tuỳ chọn -1 , nó chỉ hiển thị tên file và tên thư mục con của thư mục

hiện tại. Khi chọn tuỳ chọn –l, một danh sách các file và thư mục con của thư mục hiện

tại được hiển thị với đầy đủ các thông tin về file và thư mục. Tuỳ chọn –a cho phép bạn

hiển thị tất cả các file và thư mục (kể cả các file ẩn, tên file bắt đầu bằng dấu chấm)

trong thư mục hiện tại. Tuỳ chọn –R sẽ hiển thị tất cả các file và các thư mục con bên

trong nó nếu có.

2.2.1.5.13. Các lệnh liên quan đến thư mục:

2.2.1.5.13.1. Lệnh mkdir

Cú pháp: mkdir [-p] [<path>/]thư_mục

Để tạo một thư mục, sử dụng câu lệnh mkdir. Chỉ có 2 giới hạn khi chọn tên thư

mục, đó là tên của thư mục có thể lên tới 255 ký tự và tên thư mục có thể chứa bất kỳ

ký tự nào trừ ký tự ‘/’.

Ví dụ: #mkdir dir1 dir2 dir3

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 80

Lệnh trên tạo ra ba thư mục, nằm bên trong thư mục hiện tại.

Tuỳ chọn -p cho phép tạo một dãy thư mục

Ví dụ: #mkdir -p /abc/def/ghi/jkl/mnp

Hình 2.2.2.Cây thư mục theo ví dụ

Sử dụng lệnh mkdir với cú pháp sau để tạo thư mục như trên

[root@srv ~] mkdir /data

[root@srv ~] mkdir -p /data/os/unix/AIX

[root@srv ~] mkdir /data/os/unix/{Solaris, FreeBSD}

[root@srv ~] mkdir -p /data/os/linux/{Fedora, Redhat,

Ubuntu}

[root@srv ~] mkdir /data/os/windows

[root@srv ~] cd /data/os/windows

[root@srv windows] mkdir winxp win7 win2k8

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 81

[root@srv windows] mkdir ../../dulieu

[root@srv windows] mkdir ../../dulieu/{“ke toan”,“kinh

doanh”}

2.2.1.5.13.2. Chuyển đổi thư mục làm việc

Cú pháp: cd [<path>/]thư_mục

Là lệnh cho phép đổi vị trí hiện hành của dấu nhắc. Khi người dùng mới đăng nhập

vào hệ thống dấu nhắc sẽ hiển thị tại thư mục home của user (dấu ~). Việc truy cập đến

các thư mục khác có đường dẫn quá xa và phức tạp, vì thế lệnh cd giúp chuyển đến thư

mục hiện hành làm việc tiện cho việc truy cập

Một số lệnh cd đặc biệt:

#cd .. chuyển lên thư mục cha 1 cấp

#cd ~ chuyển về thư mục home của user

#cd / chuyển về thư mục gốc

[root@srv windows]# cd win2k8

[root@srv win2k8]# cd cd ../../

[root@srv os]# cd ../dulieu/ketoan

[root@srv ketoan]# cd ../kinhdoanh

[root@srv kinhdoanh]#

- Lệnh 1: chuyển vào thư mục win2k8 con của thư mục hiện hành (windows)

- Lệnh 2: từ win2k8 chuyển lên 2 cấp cha của windows (os)

- Lệnh 3: chuyển lên cấp cha os, chuyển vào ke toan

- Lệnh 4: chuyển sang kinh doanh ngang cấp ke toán

2.2.1.5.13.3. Lệnh tree - xem cây thư mục

Lệnh tree không có sẵn trong hệ thống vì vậy cần phải cài đặt lệnh tree: yum install

tree. Một số hệ thống linux như Centos, Ubuntu có sẵn lệnh tree khi cài đặt.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 82

Hình 2.2.3. Sử dụng lệnh Tree để xem cây thư mục

Lệnh tree đơn thuần là vẽ ra cây thư mục từ vị trí hiện hành. Nếu trong thư mục

chứa tập tin, lệnh tree sẽ thể hiện tất cả tập tin và thư mục nên có thể rất dài và khó xem.

Người ta dùng lệnh tree kết hợp với lệnh more để dừng lại từng màn hình.

#tree /data | more

2.2.1.5.13.4. Lệnh du - xem thông tin thư mục

[root@srv data]# du /bin/

7276 /bin/

[root@srv data]# du -sh /etc/

33M /etc/

[root@srv data]# du -sh /usr/

2.5M /usr/

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 83

2.2.1.5.13.5. Lệnh rmdir - xóa thư mục rỗng

Dùng để xoá thư mục rỗng, trên cây thư mục ta phải xoá tuần tự từ trong ra ngoài

Ví dụ: Xoá nhanh thư mục linux

#rmdir /data/os/linux/Fedora

#rmdir /data/os/linux/Redhat

#rmdir /data/os/linux/Ubuntu

#rmdir /data/os/linux

2.1.5.14. Lệnh mv

Cú pháp : mv [-if] file_nguồn file_đích

Sử dụng lệnh mv để dịch chuyển hay đổi tên các file hay các thư mục. Câu lệnh

thực hiện việc dịch chuyển hay đổi tên phụ thuộc vào file_đích có là một thư mục hay

không. Để minh hoạ, chúng ta sẽ đổi tên một thư mục foo thành foobar:

#mv foo foobar

Bởi vì foobar chưa tồn tại, foo sẽ được đổi tên thành foobar. Nếu câu lệnh sau được

thực hiện:

#mv doc.txt foobar

và foobar đã tồn tại, việc dịch chuyển file sẽ được thực hiện sau đó. Tuỳ chọn –f

sẽ xoá các file đích đang tồn tại và không bao giờ nhắc người sử dụng. Tuỳ chọn –i sẽ

nhắc người sử dụng có ghi đè hay không nếu file_đích đã tồn tại.

Ví dụ: Đổi tên thư mục os -> hệ điều hành

#mv /data/os /data/hdh

Ví dụ: Di chuyển thư mục Solaris trong unix đến thư mục linux và đổi tên thành

Xubuntu

#mv /data/hdh/unix/Solaris /data/hdh/linux/Xubuntu

2.1.5.15. Lệnh pwd

Cú pháp: pwd

Câu lệnh này hiển thị tên thư mục hiện tại bao gồm cả đường dẫn tuyệt đối. Ví dụ:

thư mục hiện hành là kinhdoanh

[root@srv kinhdoanh]#pwd

/data/dulieu/kinhdoanh

[root@srv kinhdoanh]#cd ~

[root@srv ~]# pwd

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 84

/root

[root@srv ~]# cd /data/os/unix/Solaris

[root@srv Solaris]# pwd

/data/os/unix/Solaris

[root@srv Solaris]#

2.2.1.5.16. Lệnh rm

Cú pháp: rm [-rif] thư_mục/file

Để xoá thư mục hoặc file, sử dụng câu lệnh rm. bạn có thể xoá nhiều file sử dụng

ký tự đại diện hoặc gõ vào tên các file. Ví dụ:

#rm -f doc1.txt doc2.txt doc3.txt //xoá 3 tập tin bằng 1

lệnh

Tương ứng với:

#rm -f doc[1-3].txt //lệnh này xoá doc1.txt, doc2.txt,

doc3.txt

rm là câu lệnh rất mạnh, hãy cẩn thận khi sử dụng lệnh này vì bạn có thể nhầm và

xoá đi các file quan trọng. Nếu chưa chắc chắn, bạn có thể sử dụng tuỳ chọn –i, hệ thống

sẽ nhắc lại cho bạn xác thực mỗi lần xoá một file. Nếu như đã chắc chắn file cần xoá,

bạn có thể chọn tuỳ chọn –f để không phải nhận các thông tin nhắc bạn xác thực. Tuỳ

chọn –r sẽ cho phép bạn xoá toàn bộ các thư mục con.

Ví dụ: dùng lệnh rm với tuỳ chọn –n để xoá thư mục linux

#rm -r /data/os/linux

Lệnh này không cần phải xoá từ trong ra và tất cả tập tin thư mục con chứa trong

thư mục muốn xoá sẽ bị xoá sạch.

2.2.1.5.17. Lệnh ln

Cú pháp: ln [-s] file_nguồn đích

Lệnh ln tạo các liên kết cứng và mềm. Các liên kết cứng được tạo sử dụng lệnh ln

không có tuỳ chọn –s. Ví dụ:

#ln ./www ./public_html

Một liên kết cứng có hạn chế, nó không thể tạo liên kết đến một thư mục khác, và

một liên kết cứng không thể liên kết đến một file trên một hệ thống file khác. Sử dụng

tuỳ chọn -s bạn có thể tạo một liên kết mềm, loại bỏ các giới hạn này.

#ln –s /dev/fs02/jack/www /dev/fs01/foo/public_html

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 85

Ở đây chúng ta đã tạo một liên kết mềm giữa thư mục www trên hệ thống file 2 và

một file mới được tạo trên hệ thống file 1.

2.2.1.5.18. Lệnh compress

Cú pháp: compress [ -v ] file

Câu lệnh compress sẽ cố gắng giảm kích thước của một file sử dụng. Các file được

nén sẽ được thay thế bởi một file có phần mở rộng .Z. Tùy chọn –v sẽ hiển thị phần trăm

dung lượng giảm của một file được nén và sẽ nói cho bạn têncủa file mới:

#compress –v inbox

Trên màn hình sẽ hiển thị

inbox: Compression: 37.20% - replaced with inbox.Z

2.1.5.19. Lệnh gunzip

Cú pháp: gunzip [-v] files

Để giải nén các file về dạng nguyên bản , sử dụng lệnh gunzip, sẽ cố gắng giải nén

các file có phần mở rộng: .gz, -gz, .z, -z, _z, .Z, hoặc tgz. Tùy chọn –v sẽ hiển thị kết

quả đẹp khi giải nén các file. Ví dụ:

#gunzip –v README.txt.gz

2.2.1.5.20. Lệnh gzip

Cú pháp: gzip [-rv9] file

Lệnh gzip là một chương trình nén khác. Nó được biết đến là chương trình nén có

tỉ lệ nén tốt nhất. các file được nén bởi lệnh gzip sẽ được thay thế bởi các file có phần

mở rộng .gz. Tùy chọn –9 có tốc độ nén tổt nhất. Tùy chọn –v cho phép hiển thị đẹp trên

màn hình. Kích thước, tổng số và tỉ lệ nén được đưa ra danh sách cho mỗi file. Tùy chọn

–r sẽ nén tất cả các file trong mỗi thư mục theo cùng một cách.

2.2.1.5.21. Lệnh tar

Cú pháp: tar [c] [x] [v] [z] [f tên_file] tên_file_hoặc_thư_mục

Lệnh tar cho phép bạn nén nhiều file và thư mục vào một file .tar. Nó cũng cho

phép bạn giải nén các file và các thư mục từ một file nén. Ví dụ:

#tar cf source.tar *.c

Câu lệnh này sẽ tạo một file source.tar, chứa tất cả các file C (có phần mở rộng .c)

trong thư mục hiện tại.

#tar cvf source.tar *.c

Tùy chọn –v ở đây cho phép bạn xem các file đã được nén

#tar cvzf backup.tar.gz important_dir

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 86

Ở đây, tất cả các file và các thư mục con của thư mục important_dir được nén trong

một file được gọi là backup.tar.gz. Chú ý rằng file này cũng được nén do có tùy chọn z

, và do đó kết quả là file có phần mở rộng là .gz. Thông thường phần mở rộng .tar.gz

được viết ngắn thành .tgz. Để giải nén các file , ví dụ như backup.tar , bạn sử dụng câu

lệnh:

#tar xf backup.tar

Để giải nén một file có phần mở rộng .tgz hay .tar.gz, bạn thực hiện câu lệnh sau:

#tar xzf backup.tgz

2.2.1.5.22. Lệnh uncompress

Cú pháp: uncompress [ -v ] file

Khi một file được nén sử dụng câu lệnh compress, để giải nén bạn sử dụng câu

lệnh uncompress. Lệnh uncompress giải nén các file có phần mở rộng .Z, vì vậy cú pháp

của nó tương tự như lệnh compress

#uncompress –v inbox.Z

2.2.1.5.23. Lệnh unzip

Cú pháp: unzip file

Lệnh này sẽ giải nén các file có phần mở rộng .zip. Các file này có thể được nén

với lệnh zip.

2.2.1.5.24. Lệnh zip

Cú pháp : zip [-ACDe9] file

Đây là chương trình nén file theo định dạng nổi tiếng tương thích với nhiều hệ điều

hành. Các file được nén với lệnh zip có phần mở rộng .zip.

2.2.1.5.25. Lệnh mount

Cú pháp: mount –a [-t fstype] [-o option] device directory

Lệnh mount được sử dụng để gán các thiết bị với hệ thống, các tùy chọn thông

thường thường có trong file /etc/fstab. Ví dụ:

/dev/hda6 /intranet ext2 defaults 1 2

Nếu dòng bên trên được tìm thấy trong /etc/fstab, bạn có thể gắn hệ thống file được

lưu trong phân vùng /dev/hda6 như sau:

mount /intranet

Cùng một hệ thống file, câu lệnh sau đây là tương tự:

#mount –t ext2 /dev/hda6 /intranet

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 87

Tùy chọn –t được sử dụng để xác định kiểu file hệ thống. Để gắn tất cả các hệ

thống file có trong /etc/fstab sử dụng tùy chọn –a. Ví dụ:

#mount –a –t ext2

Thông thường người sử dụng chọn tùy chọn –o là ro (chỉ đọc) hoặc rw (đọc ghi).

Ví dụ:

#mount –t ext2 –o ro /dev/hda6 /secured

2.2.1.5.26. Lệnh umount

Cú pháp : umount –a [-t fstype]

Lệnh umount ngược lại với lệnh mount. Ví dụ

#umount /cdrom

2.2.1.6. Các thư mục quan trọng trong Linux

Nếu như một người dùng đã sử dụng quen trên môi trường Window, thì khi chuyển

sang môi trường Linux sẽ phân vân và khó hiểu về cấu trúc file system của nó. Ở bài

này mình sẽ phân biệt và hiểu vai trò của các thư mục ở cấp độ cao trong linux. Hình

bên dưới cung cấp cho ta cái nhìn tổng quan:

2.2.1.6.1. / – Root

- Mỗi một file và thư mục điều bắt đầu từ root directory

- Chỉ có user root có quyền trên các thư mục ở cấp bên dưới

- Còn /root là home directory của user root

2.2.1.6.2. /bin – User Binaries

- Chứa file thực thi dạng binary

- Các lệnh sử dụng thông thường trong linux được sử dụng single-user mode được

đặt dưới cấu trúc thư mục này

- Các câu lệnh được sử dụng bởi tất cả các user trong hệ thống sẽ được đặt trong

đây. Ví dụ một số lệnh như ps, ls, ping, grep, cp

2.2.1.6.3. /sbin – System Binaries

- Giống như /bin, bên trong /sbin cũng chứa đựng các file thực thi dạng binary.

Các lệnh bên trong /sbin thường được sử dụng bởi system administrator và dùng cho

các mục đích là duy trì quản trị hệ thống.

- Một số lệnh trong thư mục này gồm có iptables, reboot, ifconfig...

2.2.1.6.4. /etc – Configuration Files

- Thông thường /etc sẽ chứa file cấu hình cho các chương trình hoạt động

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 88

- Trong /etc cũng thường chứa các scripts dùng để start, stop, kiểm tra status cho

các chương trình.

- Ví dụ /etc/resolv.conf (cấu hình dns-server ), hay /etc/network dùng để quản lý

dịch vụ network

2.2.1.6.5. /dev – Device Files

- Chứa các file device để đại diện các hardware

- Ví dụ /dev/tty1 hay /dev/sda

2.2.1.6.6. /proc – Process Information

- Chứa đựng thông tin về quá trình xử lý của hệ thống

- Đây là một pseudo filesystem chứa đựng các thông tin về các process đang chạy

- Đây là một virtual filesystem chứa đựng các thông tin tài nguyên hệ thống. Ví

dụ: /proc/cpuinfo cung cấp cho ta thông số kỹ thuật của CPU

2.2.1.6.7. /var – Variable Files

- Chứa đựng các file có sự thay đổi trong quá trình hoạt động của hệ điều hành

- Ví dụ system log sẽ được đặt tại vị trí này

+ System log file /var/log

+ database file /var/lib

+ email /var/mail

+ Các print queue /var/spool

+ lock file /var/lock

+ Các file tạm thời cần cho quá trình reboot /var/tmp

2.2.1.6.8. /tmp – Temporary Files

- Thư mục này chứa các file được tạo ra bởi hệ thống và user

- Các file bên dưới thư mục này được xóa đi khi hệ thống reboot

2.2.1.6.9. /usr – User Programs

- Chứa các file binary, library, tài liệu, source-code cho các chương trình

- /usr/bin chứa file binary cho các chương trình của user. Nếu như một user trong

quá trình thực thi một lệnh ban đầu sẽ tìm kiếm trong /bin, nếu như không có thì sẽ tiếp

tục nhìn vào /usr/bin. Ví dụ một số lệnh như at. awk, cc...

- /usr/sbin chứa các file binary cho system administrator. Nếu như ta không tìm

thấy các file system binary bên dưới /sbin thì ta có thể tìm ở trong /usr/sbin. Ví dụ một

số lệnh như cron, sshd, useradd, userdel

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 89

- /usr/lib chứa các file libraries cho /usr/bin và /usr/sbin

- /usr/local dùng để chứa chương trình của các user, các chương trình này được cài

đặt từ source. Ví dụ khi ta install apache từ source thì nó sẽ nằm ở vị trí là

/usr/local/apache2

2.2.1.6.10. /home – Home Directories

- Home directory được chứa đựng thông tin cá nhân của các user

- Ví dụ /home/athena , /home/student

2.2.1.6.11. /boot – Boot Loader Files

- Chứa đưng boot loader và các file cần cho quá trình boot tùy theo các phiên bản

của kernel

- Các file Kernel initrd, vmlinux, grub được đặt bên dưới /boot

- Ví dụ initrd.img-2.6.32-24-generic, vmlinuz-2.6.32-24-generic

2.2.1.6.12. /lib – System Libraries

- Chứa các file library hỗ trợ cho các file thực binary nằm bên dưới /bin và /sbin

- Tên của các file library thường là ld* or lib*.so.* . Ví dụ như ld-2.12.2.1.so,

libncurses.so.5.7

2.2.1.6.13. /opt – Optional add-on Applications

- opt đại diện cho optional

- Chứa đựng các chương trình thêm vào của các hãng khác

2.2.1.6.14. /mnt – Mount Directory

- Chứa các thư mục dùng để system admin thực hiện quá trình mount

2.2.1.6.15. /media – Removable Media Devices

- Chứa thư mục dùng để mount cho các thiết bị removable. Ví dụ như CDROM,

Floppy...

2.2.1.6.16. /srv – Service Data

- srv đại diện cho service

- Chứa đựng các dịch vụ cho server, nó liên quan đến dữ liệu. Ví dụ /srv/cvs

chứa đựng CVS

2.2.2. Quản trị người dùng và nhóm

2.2.2.1. Khái quát

Người dùng – users

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 90

Mọi truy nhập vào hệ thống đều thông qua một tài khoản của người sử dụng. Mỗi

tài khoản được thiết lập bởi người quản trị hệ thống ngoại trừ tài khoản root (và một số

tài khoản hệ thống). Mặc dù một số hệ Linux chỉ có một người dùng nhưng cũng không

nên dùng tài khoản root cho các hoạt động thường ngày. Hầu hết các hệ thống cho phép

nhiều người truy nhập vào. Vậy việc quản lý các tài khoản, các thư mục liên quan là một

khía cạnh quan trọng trong việc quản trị hệ thống Linux

* Tài khoản của người quản trị (supper user: root)

Trong quá trình cài đặt Linux chúng ta khởi tạo người sử dụng root cho hệ thống.

Đây là superuser, tức là người sử dụng đặc biệt có quyền không giới hạn. Sử dụng quyền

root chúng ta rất thấy thoải mái vì chúng ta có thể làm được thao tác mà không phải lo

lắng gì đết xét quyền truy cập này hay khác. Tuy nhiên, khi hệ thống bị sự cố do một lỗi

lầm nào đó, chúng ta mới thấy sự nguy hiểm khi làm việc như root.

Hãy chỉ dùng quyền root khi bạn không có cách nào khác.

Một điều quan trọng là không phải tài khoản superuser nào cũng gọi là root, mặc

dù nó được tạo mặc định là root khi cài đặt Linux. Nó có thể có tên bất kỳ nhưng thường

được dùng nhất dưới tên root. Tài khoản này được định nghĩa là tài khoản có UserID là

0, các userID được định nghĩa trong file /etc/passwd

Cần phân biệt bạn đang login như root hay người sử dụng thường thông qua dấu

nhắc của shell.

1 login: root

2 Password:

3 Last login: Sat Oct 28 14:30:15 from 172.16.10.199

4 [root@Cen01 ~]#su sv01

5 Password:

6 [sv01@Cen01 ~]$

Dòng thứ 6 với dấu $ cho thấy ta đang kết nối như một người sử dụng thường

(sv01). Dòng thứ tư với dấu # cho thấy bạn đang thực hiện các lệnh như root. Lệnh su

user_name cho phép bạn thay đổi login dưới một user khác (user_name) mà không phải

logout rồi login lại. Muốn thoát khỏi user thường (sv01) ta dùng lệnh exit để trở về user

root (#)

Bạn cần tạo các tài khoản (account) cho người sử dụng thường sớm nhất có thể

được (đầu tiên là cho bản thân bạn). Với những server quan trọng và có nhiều dịch vụ

khác nhau, thậm trí bạn có thể tạo ra các superuser thích hợp cho từng dịch vụ để tránh

dùng root cho các công tác này. Ví dụ như superuser cho công tác backup chỉ cần chức

năng đọc (read-only) mà không cần chức năng ghi.

Nhóm - groups

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 91

Mọi người dùng trong các hệ unix hay Linux đều thuộc về một nhóm. Nhóm dùng

để gom nhóm các users có chung một quyền hoặc chính sách riêng đối với hệ thống

nhằm tạo thuận lợi trong việc quản trị hệ thống Linux. Ví dụ như trong một cơ quan, có

nhiều phòng ban, mỗi phòng ban có các users và các users của các phòng ban khác nhau

sẽ có các chính sách bảo mật khác nhau. Các users thường chỉ được sử dụng tài nguyên

hệ thống một cách có hệ thống. Chẳng hạn các users của văn phòng và các phòng nghiên

cứu được sử dụng các tài nguyên sau:

- Truy cập Web

- Sử dụng e-mail để trao đổi thông tin

- Sử dụng các chương trình chat, icq để trao đổi tin tức

- Truy cập đến các file server trong công ty

- Không được login vào các máy chủ, không được chạy chương trình trên máy

chủ

- Tuy nhiên các users của phòng quản trị hệ thống có thể có các quyền ưu tiên

hơn:

- Bao gồm các quyền của người dùng bình thường trên

- Có quyền thực thi một số lệnh đặc biệt dành cho quản trị hệ thống

- Có thể login vào server.

Các nhóm được đặt quyền để các thành viên của nó có thể truy nhập đến các thiết

bị, file, hệ thống file hoặc toàn bộ máy tính mà những người khác nhóm có thể bị hạn

chế.

Các thông tin về nhóm được lưu trong file /etc/groups

suse:~ # more /etc/group

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:

sys:x:3:

kmem:x:9:

wheel:x:10:

mail:x:12:cyrus

news:x:13:news

uucp:x:14:uucp,fax,root,fnet,tuanna

suse:~ #

Các dòng có dạng như sau:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 92

- group name:group password:group ID:users

- group name: Tên duy nhất xác định một nhóm, thường dài tối đa 8 ký tự

- group password:Trường mật khẩu đã được mã hoá, thường để trắng hoặc là

dấu *. Cũng có thể là mật khẩu mà user muốn gia nhập nhóm phải nhập vào.

Tuy nhiên không phải phiên bản nào của Unix đều sử dụng trường này do đó

nó được để trống để tương thích với nhau.

- group ID: Số duy nhất cho mỗi nhóm, được sử dụng bởi hệ điều hành

- users: Chứa danh sách mọi tên người dùng thuộc nhóm đó, phân cách bởi dấu

",". Danh sách này không kể những người dùng thuộc nhóm đó theo số hiệu

nhóm đã được ghi trong file /etc/passwd của người đó (tức là những thành

viên mặc định của nhóm).

Mọi hệ Linux đều có một số các nhóm mặc định thuộc hệ điều hành. Các nhóm

này thường là bin,mail,uucp,sys,… Do vậy không nên cho một người sử dụng thuộc vào

nhóm này vì chúng sẽ có quyền tương đương như root. Chỉ có các đăng nhập hệ thống

mới cho phép truy nhập đến các nhóm của hệ điều hành.

Các nhóm mặc định của hệ thống:

- 1 root/wheel/system: thường dùng để cho phép người dùng sử dụng lệnh su

để chuyển lên quyền root.

- 2 deamon: dùng để chỉ những người làm chủ thư mục spool (mail, squid,

lpd,…)

- 3 kmem: dùng cho các chương trình truy cập đến kernel, bộ nhớ trực tiếp (ps)

- 4 tty: làm chủ tất cả các file đặc biệt dùng làm việc với terminal

Thêm nhóm

#groupadd hoặc addgroup

Xoá nhóm

#groupdel hoặc delgroup

Thông tin của user

Mọi người muốn đăng nhập và sử dụng hệ thống linux đều cần có một tài khoản.

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.

Mỗi tài khoản người dùng phải có một tên sử dụng (username) và mật khẩu

(password) riêng. Tập tin /etc/passwd là tập tin chứa thông tin về tài khoản người dùng

của hệ thống.

Tập tin /etc/passwd đóng vai trò sống còn đối với một hệ thống Linux. Mọi người

đều có thể đọc tập tin này nhưng chỉ có root mới có quyền thay đổi. Tập tin /etc/passwd

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 93

được lưu dưới dạng văn bản như hầu hết các tập tin cấu hình khác của Linux.

Nội dung của tập tin /etc/ passwd:

[root@srv ~] cat /etc/passwd

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

bin:x:1:1:bin:/bin:/sbin/nologin

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

adm:x:3:4:adm:/var/adm:/sbin/nologin

Mỗi tài khoản được lưu trong một dòng gồm 7 cột mỗi cột được cách bởi dấu “:”:

- Cột 1 Username: Tên người sử dụng (root, bin, halt, mail,…)

- Cột 2 Password: Mã liên quan đến mật khẩu của tài khoản là “x” đối với

Linux. Linux lưu mã này trong một tập tin là /etc/shadow mà chỉ có root mới

có quyền đọc.

- Cột 3 User ID: Mã định danh tài khoản (User ID). Hệ thống sử dụng UID

(User ID) để phân biệt người này với người khác.

- Cột 4 Group ID: Mã định danh nhóm (Group ID). Đây là primary group của

user này.

- Cột 5 Comment: Mô tả về tài khoản.

- Cột 6 Home Directory: Thư mục home của từng user, thường sẽ nằm trong

/home/”tên_tài_khoản”

- Cột 7 Shell: Tên chương trình sẽ thực thi ngay sau khi đăng nhập. Nếu không

có shell sẽ không thể đăng nhập. Mặc định trên Linux sẽ dùng bash shell.

Dòng đầu tiên của tập tin /etc/passwd mô tả thông tin cho user root (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, cuối

cùng là các tài khoản người dùng thường.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 94

Username và User ID

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 khoả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ác 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 User ID để kiểm soát hoạt động của người dùng. Theo quy định

chung, những nguời dùng có định danh là 0 là người dùng quản trị (root). Các User ID

từ 1-99 sử dụng cho các tài khoản hệ thống, User ID của người dùng thường sử dụng

giá trị bắt đầu từ 100.

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ị có thể đổi mật khẩu của

những người khác.

Tập tin /etc/shadow: Chứa chuỗi password đã mã hóa bằng hàm băm cũng như

lưu trữ một số thông tin khác như tên đăng nhập của người dùng, các thông tin về thời

gian hết hạn của mật khẩu …

Xem nội dung tập tin bằng lệnh head xem 5 dòng đầu của /etc/shadow

root@localhost ~] # head -5 /etc/shadow

root:$1$JbKmS/2R$bzm0ePoy1zYWdPNWLzDtL1:14628:0:99999:7:::

bin:*:14628:0:99999:7:::

daemon:*:14628:0:99999:7:::

adm:*:14628:0:99999:7:::

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 95

lp:*:14628:0:99999:7:::

Lần này cũng vậy, từng dòng tương ứng với một tài khoản và các vùng phân cách

nhau bởi dâu”:

- Cột 1 : Tên của tài khoản

- Cột 2 : Mật khẩu của tài khoản đã được mã hóa . Trường hợp những tài khoản

nào có mật khẩu là !! tức là tài khoản này tạm thời đang bị khóa còn”*” tài

khoản bị disable.

- Cột 3 : Số ngày kể từ khi mật khẩu được thay đổi lần cuối cùng thay đổi mật

khẩu lần cuối cùng tính từ kỷ nguyên 1-1-1970

- Cột 4 : Số ngày tối thiểu giữa các lần thay đổi mật khẩu , 0 là có thể thay đổi

bất cứ lúc nào

- Cột 5 : Số ngày sau đó mật khẩu phải được thay đổi

- Cột 6 : Số ngày cảnh báo người dùng phải thay đổi mật khẩu trước khi mật

khẩu hết hạn

- Cột 7 : Số ngày sau khi mật khẩu hết hạn, tài khoản bị disable

- Cột 8 : Số ngày kể từ ngày 1 -1-1970 tài khoản bị vô hiệu

- Cột 9 : Một lĩnh vực dùng riêng có thể sử dụng trong tương lai

Ký tự “$” trước mật khẩu đã được mã hóa của người dùng cho biết mật khẩu này

được tạo sử dụng một thuật toán mã hóa. Ví dụ :

$1$ MD5

$5$ SHA 256

$6$ SHA 512

Unix truyền thống lưu các thông tin liên quan tới mật khẩu để đăng nhập (login) ở

trong /etc/passwd. Tuy nhhiên, do đây là tập tin phải đọc được bởi tất cả mọi người 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 user đặt mật khẩu "yếu", do đó

hầu hết các Unix phiên bản mới đều lưu mật khẩu trong một tập tin khác /etc/shadow và

chỉ co root được quyền đọc tập tin này.

Chú ý: Theo cách xây dựng mã hóa mật khẩu, chỉ có 2 cách phá mật khẩu là vét

cạn (brute force) và đoán. Phương pháp vét cạn, theo tính toán chặt chẽ, là không thể

thực hiện nổi vì đòi hỏi thời gian tính toán quá lớn, còn đoán thì chỉ tìm ra những mật

khẩu ngắn, hoặc "yếu", ví dụ như những từ tìm thấy trong từ điển như god, darling...

Group ID

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 96

Khái niệm Group ID để định danh nhóm của người dùng, thông qua Group ID này

cỏ thể xác định người dùng đó thuộc nhóm nào, thông thường trên Linux, GID (Group

ID) được mặc định tạo ra khi tạo một tài khoản và có giá trị >=500.

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 khi 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 ta cũng

có thể đặt vào vị trí khác nhau thông qua lệnh useradd hoặc usermod.

2.2.2.2. Các lệnh quản trị nhóm

2.2.2.2.1. Nhóm (group)

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 (GID), 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.

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 “:” và dấu “,” ngăn cách danh sách các thành viên.

[tên_nhóm]:[password_của_nhóm]:[định_danh_nhóm]:[các_user_

thuộc_nhóm]

Mặc định khi tạo 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:

thm2:x:504:504::/home/thumuctest:/bin/bash

Xem tập tin text chứa các nhóm (file group) nằm trong thư mục /etc

[root@localhost ~] # cat /etc/group

root:x:0:

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

sys:x:3:bin,adm

adm:x:4:adm,daemon,netdata

2.2.2.2.2. 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ú pháp: #groupadd [-g gid] [-r] [-p <password>] <groupname>

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 97

-g <gid>:là mã số nhóm theo qui ước >=500

-r: nhóm hệ thống gid < 500

-p <Passwd>: đặt password cho group

Ví dụ:

#groupadd hocvien

#groupadd 550 hocvien

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

Chúng ta có thể sửa từ tập tin /etc/group. Một cách khác là cho từng người dùng

vào nhóm lệnh:

usermod [-g gid/tên nhóm] -G [GID/tên_nhóm] [tên_tài_khoản]

-g đưa user vào nhóm chính hoặc đổi nhóm chính của user

-G đưa user vào nhóm phụ, có thể 1 hoặc nhiều nhóm

Ví dụ: cho user test123 vào nhóm phụ thm1 và nhóm chính là hocvien

[root@localhost ~]# usermod –g hocvien -G thm1 test123

Ví dụ: cho user thm2 vào nhóm phụ thm1

[root@localhost ~]# usermod -G thm1 thm2

Sau đó gõ lệnh cat /etc/group | grep “thm1” để kiểm tra:

[root@localhost ~] # cat /etc/group | grep “thm1”

thm1:x:503:test123,thm2

2.2.2.2.4. Thay đổi thông tin nhóm

Để thay đổi thông tin nhóm ta dùng lệnh:

groupmod [-g <new-gid>] [-n <new-lgname] [-p <password>] [tên_nhóm]

-g <gid>: là mã số nhóm mới

-n <tên nhóm mới>: sửa tên nhóm, đổi tên cũ thành tên mới

-p <Passwd>: đặt password cho group

Ví dụ: đổi mã số nhóm hocvien thành 2000 và tên nhóm mới là hv

#groupmod –g 2000 -n hv hocvien

Xem nhóm có trong hệ thống:

#cat /etc/groups

Ví dụ: Đổi tên nhóm thm2 thành thm3 ta

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 98

[root@localhost ~]# groupmod -n thm3 thm2

2.2.2.2.5. Hủy nhóm

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

groupdel [tên_nhóm]

Bảng 2.2.2. Giá trị trả về của lệnh groupdel

Mã Ý nghĩa

0 success. (thành công)

2 invalid command syntax! (sai lệnh linux)

6 specified group doesn't exist. (group không tồn tại)

8 can't remove user's primary group. (không thể xoá user

trong nhóm chính)

10 can't update group file. (không thể cập nhật tập tin nhóm)

Ví dụ: xoá nhóm hocvien

[root@localhost ~]# groupdel hocvien

2.2.2.2.6. 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 [tùy_chọn] [tên_tài_khoản]

Ví dụ: Ta muốn xem groupID của một tài khoản thm1 ta dùng lệnh:

[root@localhost ~]# id -g thm1

[root@localhost ~]# id thm1

uid=503 (thm1) gid=503 (thm1) group=503 (thm1)

Ta có thể xem tên nhóm của một tài khoản nào đó ta dùng lệnh:

groups [tên_tài_khoản]

[root@localhost ~]# groups thm2

thm2 : thm2 thm1

2.2.2.3. Người dùng (User)

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 99

2.2.2.3.1. Tạo tài khoản

Để tạo một một account, bạn có thể sử dụng lệnh adduser (hoặc useradd tùy vào

phiên bản). Tất nhiên là bạn phải làm thao tác này dưới quyền root (dấu nhắc #)

Cú pháp: useradd [-c comment] [-d home_dir] [-e expire_date] [-g initial_group] [-

G group[,...]] [-p passwd] [-s shell] [-u uid [ -o]] [-n] [-r] login

Trong đó các tham số:

- c comment: Lời chú thích, thường là tên đầy đủ của người dùng

- d home_dir: thư mục gốc của người dùng, Mặc định khi ta tạo một người dùng

thi sẽ được tạo trong thư mục /home/tên_tài_khoản

- e expire_date: ngày hết hiệu lực của account

- g initial_group: nhóm khởi tạo

- G group: nhóm mà người dùng thuộc vào

- p passwd: password của người dùng, password này phải được mã hoá trước

- s shell: shell mặc định của user

- u uid: user identification

- u: Mặc định sẽ lấy số ID tiếp theo để gán cho user. (User ID)

- m: Tạo thư mục home của người dùng nếu không có

- M: Không tạo thư mục home của người dùng

- e: Ngảy hết hạn của tài khoản

- login: tên username.

Ví dụ, để thêm mới người dùng được gọi là 'tecmint', sử dụng lệnh sau đây.

root@Cen01 ~] # useradd –c “Thuc hanh mang 1” thm1

Đặt Password cho tài khoản mới tạo

root@Cen01 ~]# passwd thm1

Changing password for user thm1.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated

successfully.

Khi một người dùng mới được tạo ra, nó được nhập tự động vào file '/etc/passwd'.

Đây là tập tin được sử dụng để lưu trữ thông tin người dùng trên hệ thống.

thm1:x:504:504:thm1:/home/thm1:/bin/bash

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 100

Tạo tài khoản người dùng với tên thm2 và chỉ định thư mục chủ tại

/home/thumuctest

[root@localhost ~]# useradd -d /home/thumuctest -m thm2

[root@localhost ~]# passwd thm2

Changing password for user thm2.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

Vì vấn đề an ninh của máy Unix này và kéo theo sự an toàn của toàn hệ thống

mạng của bạn, rất quan trọng chọn đúng password. Một password gọi là đúng nếu:

- Có độ dài tối thiểu 6 ký tự.

- Phối hợp giữa chữ thường, chữ hoa, số và các ký tự đặc biệt

- Không liên quan đến tên tuổi, ngày sinh … của bạn và người thân

- Không có trong từ điển

Ví dụ: tạo nhanh một user foo

[root@appserv oracle]# useradd foo

Trong ví dụ trên, bạn khởi tạo người dùng và không quan tâm gì đến nhóm (group)

của người dùng. Lúc này Linux sẽ tự tạo ra một user foo và kèm theo nhóm cùng tên

foot. Việc tập hợp nhiều người dùng vào chung một nhóm có cùng một chức năng và

cùng chia sẻ nhau dữ liệu mang lại rất nhiều lợi ích cho nhà quản trị. Khi bạn tạo người

sử dụng như trên, Linux sẽ tạo cho mỗi người một nhóm. Đọc tập tin /etc/passwd ta

thấy

[root@appserv oracle]# more /etc/passwd|grep foo

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

[root@appserv oracle]#

foo là user số 1012 và thuộc nhóm 1013.

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

[root@appserv oracle]# more /etc/group

root:x:0:root

……………….

users:x:100:

………………

foo:x:1013:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 101

và ta có thể kết nạp foo vào nhóm users bằng cách thay số 1013 bằng 100, là group

ID của users.

Sau các bước trước ta vào tập tin /etc/passwd để kiểm tra:

[root@localhost ~]# cat /etc/passwd | grep thm2

thm2:x:504:504: :/home/thumuctest:/bin/bash

2.2.2.3.2. Thay đổi thông tin 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:

Cú pháp: usermod [-c comment] [-d home_dir [-m]] [-e expire_date]

[-f inactive_time] [-g initial_group] [-G group [,...]] [-l login_name]

[-p passwd] [-s shell] [-u uid [-o]] [-L|-U] login_name

Lệnh này đổi thông tin tài khoản cho user chỉ định. Các tuỳ chọn:

-c: đổi câu ghi chú, mô tả cho user

-d: đổi home_dir của user

-e: ngày tháng năm hết hạn dùng

-g đổi nhóm chính của user

-G: đổi nhóm phụ của user

-L: khoá tài khoản người dùng

-U: Mở khoá tài khoản người dùng

-l: đổi username dùng đăng nhập của user

-p: đổi password của user

-u: đổi mã số user

-s: đổi shell cho user, ngoài ra ta còn có lệnh chsh

Ví dụ: Thay đổi mô tả thông tin người dùng

[root@localhost ~]# usermod -c “Tu Hoc Mang 2” thm2

Ví dụ: đổi thư mục home của user thm2 hướng về thư mục /user/thuchanhmang2

(thư mục thuchanhmang2 chưa có)

[root@localhost ~]# usermod -d /user/thuchanhmang2 -m

thm2

Sau lệnh này, thư mục “nhà” của thm2 hướng về thư mục mới, mọi thông tin lưu

trữ liên quan đến cá nhân thm2 đều lưu trong thư mục này.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 102

Ví dụ: đổi thông tin user anhung thành hunga có mã số mới 2001, có nhóm mới

là gv, home dir mới nằm trong /users.

#usermod -u 2001 -g gv -d /users/hunga -m -l hunga

anhung

Ví dụ: Đặt ngày hết hạn cho những tài khoản tạm thời, định dạng ngày theo kiểm

yyyy-mm-dd

# usermod –e 2018-12-20 henry

Ví dụ: Khóa những tài khoản lâu không dùng đến:

# usermod –f 5 thm3

Change passwords known by someone who leaves. If they know the root password,

change ALL password

Lệnh usermod cũng tương tự như useradd nhưng có 1 vài tuỳ chọn khác biệt. Các

bạn gõ usermod hoặc man usermod để biết thêm thông tin về lệnh.

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

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

usermod là một cách, ngoài ra còn dùng lệnh passwd để Khoá hay Mở khoá tài khoản.

Khóa:

passwd -l [tên_tài_khoản]

usermod -L [tên_tài_khoản]

Mở khóa:

passwd -u [tên_tài_khoản]

usermod -U [tên_tài_khoản]

Ta có thể tạm khóa 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 gán /sbin/nologin (/bin/false nếu là ubuntu) vào shell mặc

định của user trong file /etc/passwd.

2.2.2.3.4. Hủy (xoá) 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 lệnh:

userdel [-r] [tên_tài_khoản]

-r: xoá tất cả thông tin liên quan đến user (home, mailbox, log,..)

Ví dụ: Xóa tài khoản thm2

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 103

[root@localhost ~]# userdel thm2

userdel –r thm2

Nếu sử dụng tùy chọn -r thì sẽ xóa luôn thư mục home directory của tài khoản

thm2.

Lệnh userdel dùng để xóa một user. Bạn cũng có thể xóa một user bằng cách xóa

đi dòng dữ liệu tương ứng trong tập tin /etc/passwd.

Quá trình xoá bằng tay:

1. Xoá điểm nhập tương ứng với người dùng trong /etc/passwd và trong /etc/group.

2. Xoá các file mail và mail alias của người dùng

3. Xoá mọi cron và at

4. Xoá thư mục cá nhân của user đó

2.2.2.3.5. Lệnh đổi shell đăng nhập của người dùng

Cú pháp: chsh [ -s shell ] [ -l ] [ -u ] [ -v ] [ username ]

Tuỳ chọn:

o -s, --shell: chỉ định shell dùng đăng nhập.

o -l, --list-shells: in danh sách shell có trong file /etc/shells and thoát

o -u, --help: In hướng dẫn và thoát.

o -v, --version: in thông tin phiên bản và thoát.

Một số shell thường dùng trong linux: /bin/sh, /bin/csh, /bin/ksh,

/usr/local/bin/tcsh, /usr/local/bin/bash

2.2.2.3.6. Tập tin /etc/default/useradd

Chứa các lựa chọn mặc định khi sử dụng lệnh useradd mà không có tùy chọn.

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

Chúng ta có thể dùng lệnh useradd -D để liệt kê các tùy chọn mặc định.

2.2.3. Bài tập:

2.2.3.1. Củng cố lý thuyết

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 104

1. Thư mục /home có phải là thư mục chủ (thư mục cá nhân) của mọi người dùng hay

không? Vì sao thư mục /home không nhất thiết phải nằm cùng phân vùng với các thư

mục khác?

2. Đường dẫn tương đối và đường dẫn tuyệt đối khi nào cả hai bằng nhau? “Cách chỉ

đường dẫn tương đối trong linux dùng phương pháp chỉ thư mục cha (..) giống trong

Windows Command line” đúng hay sai? Tại sao?

3. Hai phát biểu sau đây “các thư mục thành phần trong linux đều gắn kết vào thư mục

gốc” và “các thư mục thành phần trong linux đều nằm tron (con) thư mục gốc”. Hai phát

biểu trên đúng hay sai? Tại sao?

4. Theo mặc định (hệ thống mới cài đặt) thư khi tạo user thì thư mục chủ nằm trong

/home. Tuy nhiên nhà điều hành muốn đổi hướng cho các home của từng user tạo ra

trong thư mục /users. Là một nhà quản trị, bạn phải làm sao?

2.2.3.2. Phần thực hành

2.2.3.2.1. Thực hành thao tác tập tin-thư mục

1. Sinh viên tạo cây thư mục sau: aaa tạo chữ thường (dùng lệnh xem cây thư mục sau khi tạo xong)

2. Tạo tập tin dethi.txt trong thư mục t1 (nội dung tuỳ ý)

3. Tạo tập tin giaotrinh1.txt trong thư mục giaovien (nội dung tuỳ ý)

4. Tạo tập tin giaotrinh2.txt trong thư mục hocsinh (nội dung tuỳ ý)

5. Tạo tập tin doc1.doc, doc2.doc, doc3.doc, doc4.doc, doc5.doc, doc6.doc trong thư mục aaa (nội dung tuỳ ý), liệt kê các file trong thư mục aaa

6. Nối hai tập tin giaotrinh1.txt và giaotrinh2.txt thành tập tin giaotrinh_chung.doc lưu trong thư mục aaa.

7. Dùng lệnh liệt kê để hiển thị lên màn hình các file trong thư mục aaa có kiểu .doc

8. Copy doc1.doc và doc2.doc vào thư mục t1, copy doc3.doc vào t2, copy doc4.doc và doc5.doc vào thư mục học sinh

9. Sao chép giaotrinh1.txt thành gt1.txt giữ nguyên tại thư mục cũ

10. Kết nối nội dung file doc1.doc trong aaa vào file giaotrinh1.txt

11. Xem dung lượng đĩa còn trống trong máy, xem dung lượng thư mục aaa

12. Sao chép các tập tin kiểu .conf trong /etc sang thư mục giaovien

13. Sao chép /etc/passwd sang hocsinh đổi tên thành matkhau.hs

14. Sao chép cây thư mục hocsinh sang thư mục giaovien

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 105

15. Tìm kiếm tập tin có chữ tab trong thư mục /etc

16. Ứng dụng lệnh grep

a. Dùng lệnh rpm –qa để kiểm tra gói phần mềm sau đây: smb, ftp, ssh, dhcp có cài trên máy chưa?

b. Tìm các file trong thư mục root có từ dhcp trong phần tên cho hiển thị ra màn hình và lưu vào file timfile.dhcp trong thư mục aaa. #rpm –qa | grep dhcp > /aaa/timfile.dhcp

17. Liệt kê ra màn hình các file trong thư mục giaovien, họcsinh, aaa

18. Dùng lệnh tar nén tập tin giaotrinh_chung.doc thành giaotrinh_chung.tar cho kết quả tỉ lệ nén vào tập tin ketqua.nen lưu trong thư mục aaa

19. Dùng lệnh tar nén các file và thư mục trong thư mục giaovien thành thanh gv.tar

20. Liệt kê thư mục và kiểm tra file gv.tar

21. Xoá các file doc3, doc4, doc5 (.doc) trong thư mục aaa

22. Xoá thư mục hocsinh trong giaovien

2.2.3.2.2. Thực hành quản trị user và group:

1. Tạo các nhóm sau: gt01 (5000), gt02 (6000), gt03 (7000), gt04 (8000)

2. Trong gt01 (5000), tạo các user sau: u01 (5001), u02 (5002), u03 (5003), u04 (5004), u05 (5005). Tất cả có thư mục home dir của từng user trong thư mục /home, cùng tên với tên user. Password: 123abc

3. Trong gt02 (6000), tạo các user sau: x01 (6001), x02 (6002), x03 (6003). Tất cả có thư mục homedir của từng user trong thư mục /home, cùng tên với tên user. Password: 1234ab

4. Trong gt03 (7000), tạo các user sau: giamdoc (7001), thuky (7002), vanthu (7003), pgiamdoc (7004). Tất cả có thư mục home dir của từng user trong thư mục /home, cùng tên với tên user. Password: 12abcd

5. Trong gt04 (8000), tạo các user sau: banhang (8001), tiepthi (8002), tpkdoanh (8003), ppkdoanh (8004), thungan (8005). Tất cả có thư mục homedir của từng user trong thư mục /home, cùng tên với tên user. Password: abc123

6. Mỗi nhóm sinh viên thử đăng nhập bằng một user đầu tiên vào hệ thống và tạo trong home dir của mỗi thành viên một tập tin (lệnh cat) với nội dung ghi họ và tên sinh viên, mã số sinh viên.

7. Đổi tên các user cho gt01 như sau: u01, u02 và u03 đổi thành nv01, nv02, nv03 với homedir tương ứng. u04, u05 đổi thành ketoan và thuquy

8. Đổi tên các user trong gt02: x01 thành totruong, x02 thành topho, x03 thành nhtruong, thư mục homedir thay đổi tương ứng.

9. Bổ sung group phụ cho các user gt03 như sau: giamdoc thêm nhóm gt01, gt04

10. Bổ sung group phụ cho các user gt04 như sau: banhang, tiepthi thêm nhóm gt02, các user còn lại thêm gt01

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 106

11. Hiển thị danh sách các user giamdoc, banhang, tiepthi nằm trong những nhóm nào?

12. Đọc tập tin /etc/passwd xem thông tin các use: ketoan, thuquy, giamdoc. Đọc thông tin mã số nhóm, mã số user, homedir và shell. Xuất ra file “tên user.txt”trong homedir của user đó. Ví dụ: giamdoc \home\giamdoc\giamdoc.txt

13. Thay đổi shell dòng lệnh cho user giamdoc, thungan thành tcsh (tr 56, 57), đăng nhập vào hệ thống bằng user vừa đổi shell, chạy terminal xem kết quả.

14. Xóa các user nv01, nv02 kèm theo xóa cả thư mục homedir của user đó. Dùng lệnh ls để kiểm chứng thư mục /home còn các homedir của user này không?

15. Khoá các user ketoan, thuquy, thungan. Không cho phép sử dụng.

16. Đổi tên nhóm gt01 thành nhóm sanxuat, gt02 thành nhóm quanly. Xem lại user giamdoc thuộc những nhóm nào?

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 107

Bài 3. QUYỀN TRUY CẬP TIN TẬP VÀ THƯ MỤC

Bài 2.3. QUYỀN TRUY CẬP TẬP TIN VÀ THƯ MỤC

2.3.1. Giới thiệu:

2.3.1.1. Các quyền trên file – umask

Do Linux là một hệ điều hành multitasking và multiuser, nhiều người cùng có thể

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 process. Chúng ta sẽ bàn về sở hữu các tập tin và

các quyền truy xuất tập tin.

2.3.1.2. Các quyền mặc định khi tạo tập tin.

Khi một tập tin hay thư mục được tạo ra, permission mặc định sẽ được xác định

bởi các quyền trừ bớt bởi các quyền hiển thị bằng umask

[root@pascal qtv]# su -l qtv

bash-2.05a$ umask

0022

bash-2.05a$ echo tao mot file > /tmp/aaa

bash-2.05a$ ls -la /tmp/

total 376

drwxrwxrwt 5 root root 40960 Dec 24 10:59.

drwxr-xr-x 21 root root 4096 Dec 15 08:14..

-rw-r--r-- 1 qtv wheel 13 Dec 24 10:59 aaa

bash-2.05a$

Trong ví dụ trên, quyền mặc định lúc đầu xác định bởi umask=002. Khi đó, tập tin

tmp tạo ra sẽ có quyền là 664 và đó chính là bù đến 6 của umask. Quyền thực hiện

chương trình cần được gán cố ý bởi người sử dụng hay các chương trình biên dịch. Sau

đó ta đổi giá trị của umask thành 022 và tập tin tạo ra có quyền 644. Giá trị mặc định

của các quyền thường được gán mỗi khi người sử dụng login vào hệ thống thông qua

các tập tin khởi tạo biến môi trường như.profile,.bashrc. Đứng trên quan điểm bảo mật

hệ thống, giá trị 024 là tốt nhất, nó cho người cùng nhóm có quyền đọc và không cho

quyền nào với những người khác.

2.3.1.3. Xem và xác định quyền trên tập tin.

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 nhập.

Bạn có thể đổi các tính chất này cho phép nhiều hay ít quyền truy nhập hơn đối với một

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ó là một chương

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 108

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 chúng ta có thể thấy

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

- Cột đầu chỉ ra quyền truy cập tập tin

- Cột 2 chỉ số liên kết (link) đối với tập tin hay thư mục

- Cột 3, 4 chỉ chủ sở hữu và nhóm sở hữu

- Cột 5 chỉ độ dài của tập tin

- Cột 6 chỉ thời gian thay đổi cuối cùng

- Cột 7 là tên tập tin hay thư mục

Trong 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.

Sở hữu của myfile là fido và nhóm sở hữu myfile là users. Độ dài của myfile là 163

bytes. Thời điểm myfile thay đối cuối cùng là 7/12 của năm hiện hành vào lúc 14:31.

2.3.1.4. Nhóm đối tượng sở hữu trên tập tin và giá trị sở hữu

Linux cho phép người sử dụng xác định các quyền đọc (read), viết (write) và thực

hiện (execute) cho từng:

- Đối tượng sở hữu (the owner)

- Đối tượng nhóm (the group)

- và những người còn lại ("others" hay everyone else).

Mỗi đối tượng luôn có 3 quyền: read, write, execute

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

phép bạn sử dụng lệnh ls để xem nội dung của thư mục.

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

viết cho phép bạn tạo ra, xóa hay thay đổi tên các tập tin trong thư mục không phụ thuộc

vào quyền cụ thể của tập tin trong thư mục. Như vậy quyền viết của thư mục sẽ vô hiệu

hóa các quyền truy cập của tập tin trong thư mục và bạn đọc phải để ý tính chất này.

Quyền thực hiện cho phép bạn gọi chương trình lên bộ nhớ bằng cách nhập từ bàn

phím tên của tập tin. Đối với thư mục, bạn chỉ có thể "vào" thư mục bởi lệnh cd nếu bạn

có quyền thực hiện với thư mục.

Xem xét lại ví dụ trên:

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

Ký tự đầu tiên của quyền là ký tự "–" ám chỉ rằng đó là một tập tin bình thường.

Nếu myfile là một thư mục, ta sẽ thấy vào dàó ký tự d. Ngoài ra còn có c cho thiết bị

ngoại vi dạng ký tự (như bàn phím), b cho thiết bị ngoại vi dạng block (như ổ đĩa cứng).

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 109

Chín ký tự tiếp theo chia thành 3 nhóm, cho phép xác định quyền của ba nhóm sở

hữu (owner), nhóm (group) và còn lại (other). Mỗi cặp ba này cho phép xác định quyền

đọc, viết và thực hiện theo thứ tự kể trên. Quyền đọc viết tắt là "r" ở vị trí đầu tiên,

quyền viết viết tắt bằng "w" ở vị trí thứ hai và vị trí thứ ba là quyền thực hiện ký hiệu

bằng chữ "x". Nếu một quyền không được cho, tại vị trí đó sẽ có ký tự "-".

Trong trường hợp của tập tin myfile, sở hữu có quyền rw tức là đọc và viết. Myfile

không phải là một chương trình. Nhóm cùng với còn lại chỉ có quyền đọc tập tin (read-

only). Hình sau cho ta thấy rõ hơn cách "đọc" quyền truy cập đối với tập tin.

Quyền truy cập cơ bản của tập tin

Hình 2.3.1. Quyền truy cập thư mục

Song song với cách ký hiệu miêu tả bằng ký tự như ở trên, quyền thao tác tập tin

còn có thể cho dưới dạng 3 số. Đối với myfile, quyền đó là 644. Điều quan trọng là phải

hiểu cách ký hiệu bằng số vì nó liên quan đến việc thay đổi các quyền sau này. Các số

có thể nhận tất cả các giá trị từ 0 đến 7. Số đầu tiên miêu tả quyền của sở hữu, số thứ hai

cho nhóm và số thứ ba cho còn lại.

Mỗi số là tổng của các quyền theo quy tắc sau:

Bảng 2.3.1. Giá trị các quyền biểu diễn bằng số

read permission 4

Write permission 2

Execute permission 1

Vì vậy, một tập tin với quyền 751 có nghĩa là sở hữu có quyền read, write, và

execute bằng 4+2+1=7, Nhóm có quyền read và execute bằng 4+1=5, và còn lại có

quyền execute bằng 1.

Nếu chúng ta xem kỹ, chúng ta sẽ thấy mọi số từ 0 đến 7 đều tương ứng với một

tổ hợp duy nhất các quyền truy nhập tập tin.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 110

Bảng 2.3.2. Kết hợp các quyền truy cập

Mode Ý nghĩa

111 =7 rwx read, write, and execute

110=6 rw- read and write

101=5 r-x read and execute

100=4 r-- read-only

011=3 -wx write and execute (rare)

010=2 -w- write-only (rare)

001=1 --x execute

000=0 --- No permissions at all

Nếu bạn quen với hệ nhị phân, hãy suy nghĩ bằng hệ thống nhị phân. Khi đó, rwx

sẽ như số nhị phân 3 bits. Nếu quyền được cho, số nhị phân tương ứng sẽ bằng 1, ngược

lại, nó sẽ bằng 0. Ví dụ r-x sẽ là số nhị phân 101, và theo hệ thập phân sẽ là 4+0+1, hay

5. —x sẽ tương ứng 001, hay 0+0+1 = 1 …

Chú ý: Người sử dụng có quyền đọc thì có quyền copy tập tin và tập tin sao chép

sẽ thuộc sở hữu người làm copy như minh họa sau

[vadmin@backup vadmin]$ ls -l /etc/passwd

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

[vadmin@backup vadmin]$ cp /etc/passwd./

[vadmin@backup vadmin]$ ls -l passwd

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

Dưới đây là một số lệnh chmod thường dùng:

chmod 777 filename: Cấp quyền truy cập đầy đủ cho mọi đối tượng người dùng.

chmod 775 filename: Cấp quyền truy cập đầy đủ cho chủ hệ thống và nhóm quản trị,

đối tượng người dùng chỉ có quyền đọc (read) và chạy (execute) file.

chmod 755 dirname: Cấp quyền truy cập đầy đủ cho chủ hệ thống, chỉ cho phép nhóm

quản trị và đối tượng người dùng đọc và chạy các file trong thư mục.

chmod 700 filename: Chỉ cấp quyền truy cập đầy đủ cho chủ hệ thống và chặn truy cập

với mọi đối tượng khác.

chmod 500 dirname: Không cho phép nhóm quản trị và người dùng truy cập vào file

trong thư mục, đồng thời giới hạn quyền chủ hệ thống chỉ đọc và chạy để tránh xóa và

thay đổi các file trong thư mục này.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 111

chmod 660 filename: Cho phép chủ hệ thống và nhóm quản trị đọc, sửa, xóa và ghi dữ

liệu vào file, nhưng không phân quyền truy cập cho những người dùng khác.

2.3.2. Nhóm lệnh chuyển quyền và chuyển quyền sở hữu

2.3.2.1. Lệnh chuyển quyền chmod:

Cú pháp 1: chmod [-R] <permission-mode> <file hoặc thư mục>

<permission-mode> là một con số được kết hợp bằng 3 nhóm đối tượng

-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 chown, chgrp.

Lệnh chmod dùng để thay đổi quyền truy cập file hoặc thư mục. Ví dụ:

chmod myscript.pl

Để thay đổi quyền của một thư mục và tất cả các file, các thư mục con của thư mục

đó sử dụng câu lệnh:

[vadmin@backup ~]$ chmod –R 744

/data/users/u01/public_html

Cách dùng lệnh: chmod quyền_truy_cập_mới tên_file.

[vadmin@backup ~]$ ls -l /data/users/u01/

-rw-r--r-- 1 fido users 114 Dec 7 14:31 public_html

[vadmin@backup ~]$ chmod 345 myfile

[vadmin@backup ~]$ ls -l myfile

—wxr—r-x 1 fido users 114 Dec 7 14:31 myfile

Ví dụ thay đổi và hiện thị cho thấy sự thay đổi quyền truy cập tập tin myfile. Chú

ý là ta có quyền cấp phát quyền thực hiện (execute) mà không cần biết là tập tin có phải

là một chương trình hay không.

Phương pháp thay đổi tuyệt đối này có một số ưu điểm vì nó là cách định quyền

tuyệt đối, kết quả cuối cùng không phụ thuộc vào quyền truy cập trước đó của tập tin.

Đồng thời, dễ nói "thay quyền tập tin thành bảy-năm-năm" thì dễ hơn là "thay quyền tập

tin thành đọc-viết-thực hiện, đọc-thực hiện, đọc-thực hiện"

Cú pháp 2: chmod [-R] [đối tượng] [+/-] <quyền> <file hoặc thư mục>

[đối tượng] u | g | o

+ Thêm vào

- Loại bỏ

[quyền] r/w/x

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 112

Bạn cũng có thể thay đổi quyền truy nhập một cách tương đối và dễ nhớ. Để chỉ ra

nhóm quyền nào cần thay đổi, bạn có thể sử dụng u (user), g (group), o (other), hay a

(all). Tiếp theo đó là dấu + để thêm quyền và – để bớt quyền. Cuối cùng là bản thân các

qyuyền viết tắt bởi r,w,x.

Ví dụ như để bổ sung quyền thực hiện cho nhóm và other, ta nhập vào dòng lệnh

[vadmin@backup ~]$ chmod go+x myfile

Đây là cách thay đổi tương đối vì kết quả cuối cùng phụ thuộc vào quyền đã có

trước đó mà lệnh này không liên quan đến. Trên quan điểm bảo mật hệ thống, cách thay

đổi tuyệt đối dẫn đến ít sai sót hơn. Thay đổi quyền truy cập của một thư mục cũng được

thực hiện giống như đối với một tập tin. Chú ý là nếu bạn không có quyền thực hiện

(execute) đối với một thư mục, bạn không thể thay đổi thư mục cd vào thư mục đó. Mọi

người sử dụng có quyền viết vào thư mục đều có quyền xóa tập tin trong thư mục đó,

không phụ thuộc vào quyền của người đó đối với tập tin. Vì vậy, đa số các thư mục có

quyền drwxr-xr-x. Như vậy chỉ có người sở hữu của thư mục mới có quyền tạo và xóa

tập tin trong thư mục. Ngoài ra, thư mục còn có một quyền đặc biệt, đó là cho phép mọi

người đều có quyền tạo tập tin trong thư mục, mọi người đều có quyền thay đổi nội dung

tập tin trong thư mục, nhưng chỉ có người tạo ra mới có quyền xóa tập tin. Đó là sticky

bit cho thư mục. Thư mục /tmp thường có sticky bit bật lên

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.

2.3.2.2. Lệnh chuyển quyền sở hữu:

2.3.2.2.1. Lệnh chown

Cú pháp: chown [ -fhR ] Owner [ :Group ] { file …| thư mục… }

Lệnh chown thay đổi quyền sở hữu file hay thư mục. Giá trị của khai báo Group

có thể la một ID của nhóm người sử dụng hoặc tên của nhóm người sử dụng được tìm

thấy trong file /etc/group. Chỉ người sử dụng root mới có quyền thay đổi quyền sở hữu

đối với file. Chi tiết về các tuỳ chọn được chỉ ra ở bên dưới:

- -f : ngăn chặn tất cả các thong báo lỗi trừ các thong báo sử dụng

- -h: thay đổi quyền sở hữu của lien kết tượng trưng nhưng không thay đổi

quyền sở hữu của file mà được chỉ đến bởi lien kết tượng trưng đó.

- -R: thay đổi quyền sở hữu của thư mục, các file và các thư mục con bên trong

thư mục hiện tại được chỉ ra

2.3.2.2.2. Lệnh chgrp

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 113

Cú pháp: chgrp [Group] { file …| thư mục… }

Lệnh chgrp thay đổi nhóm sở hữu file hay thư mục. Giá trị của khai báo Group có

thể la một ID của nhóm người sử dụng hoặc tên của nhóm người sử dụng được tìm thấy

trong file /etc/group. Chỉ người sử dụng root mới có quyền thay đổi quyền sở hữu đối

với file.

Vd: đổi quyền sở hữu tập tin hello.kitty trong thư mục /etc cho nhóm ketoan

#chgrp ketoan /etc/hello.kitty

2.3.2.3. Tạo liên kết

Liên kết (link) tập tin: Trong Unix có 2 hình thức liên kết hoàn toàn khác nhau, đó

là hard link và soft link hay symbolic link. Hard link cho phép tạo một tên mới cho tập

tin. Các tên này có vai trò hoàn toàn như nhau và tập tin chỉ bị hoàn toàn xóa bỏ khi hard

link cuối cùng của nó bị xóa. Lệnh ls –l cho phép hiển thị số hard link đến tập tin.

Symbolic link có chức năng giống như shortcut của MS Windows. Khi ta đọc/ghi soft

link, ta đọc/ghi tập tin; khi ta xóa symbolic link, ta chỉ xóa symbolic link và tập tin được

giữ nguyên. Link được tạo bởi lệnh ln. Tự chọn ln –s cho phép tạo symbolic link. Ví dụ

[sv01@pascal sv01]$ls -l

-rw------- 1 sv01 pkt 517 Oct 27 12:00 mbox

drwxr-xr-x 2 sv01 pkt 4096 Aug 31 17:50 security

[sv01@pascal sv01]$ln –s mbox mybox

[sv01@pascal sv01]$ln –s security securproj

[sv01@pascal sv01]$ln –l

-rw------- 1 sv01 pkt 517 Oct 27 12:00 mbox

lrwxrwxrwx 1 sv01 pkt 4 Oct 27 17:57 mymail -> mbox

lrwxrwxrwx 1 sv01 pkt 8 Oct 27 17:57 secrproj -> security

drwxr-xr-x 2 sv01 pkt 4096 Aug 31 17:50 security

[sv01@Cen01 sv01]$

Bạn có thể thấy khá rõ kết quả của symbolic link qua thí dụ trên.

Symbolic link rất có nhiều ứng dụng. Ví dụ như một tập tin XXX của một chương

trình YYY nằm trong thư mục /var/ZZZ. Nếu phân mảnh của /var/ZZZ bị quá đầy, ta

có thể “sơ tán” XXX qua một thư mục khác thuộc phân mảnh khác và tạo một link thế

vào đó mà chương trình YYY vẫn không hề “hay biết” vì nó vẫn truy cập đến

/var/ZZZ/XXX như thường lệ.

2.3.3. Bài tập:

2.3.3.1. Củng cố lý thuyết

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 114

1. Xác định umask có công dụng gì? Khi bạn đăng nhập bằng root và tạo một tập tin cho

người dùng hv01 thì quyền sở hữu cá nhân là của hv01 và nhóm sở hữu là nhóm của

hv01 đúng hay sai?

2. Cách xem quyền sở hữu trên một tập tin như thế nào? Phân tích các ký hiệu trên một

tập tin sau khi dùng lệnh xem quyền sở hữu?

3. Với một thư mục cá nhân thì quyền sở hữu gồm những thành phần nào? Tại sao khi

tạo user thì các quyền đó cũng gán cho thư mục cá nhân của user.

4. Lệnh chuyển quyền sở hữu có thể chuyển cho user và group. Khi nào 2 lệnh này tương

đương nhau? Lệnh chuyển quyền sở hữu có 2 dạng. Dạng nào không cần quan tâm đến

cấu hình trước đó của đối tượng?

2.3.3.2. Phần thực hành

1. Tạo user và group sau: tất cả user dùng password 123abc

a. Group: nhanvien, ketoan, quanly

b. User 1: nv01, nv02, nv03, nv04 thuộc nhóm nhanvien

c. User 2: kt01. kt02, kt03, ktt thuộc nhóm ketoan, nhóm phụ nhanvien

d. User 3: gd, pgd, tp, pp thuộc nhóm quanly và nhóm phụ là nhanvien, ketoan

2. Tạo câu thư mục sau:

3. Phân quyền cho nhánh thư mục quanly như sau (chuyển quyền sở hữu và phân quyền):

– gd chuyển quyền sở hữu cho user gd,

user được toàn quyền trên thư mục của mình. Các

nhóm và user khác không có quyền nào trên thư

mục của gd.

– pgd chuyển quyền sở hữu cho user pgd,

user được quyền đọc và ghi trên thư mục của

mình. Thành viên trong nhóm và người dùng

khác có quyền đọc và thi hành trên thư mục pgd

– tp (pp) chuyển quyền sở hữu cho user

tp (pp) và nhóm quanly, user tp (pp) được toàn

quyền trên thư mục của mình, thành viên nhóm

được quyền đọc, ghi và thực thi, người dùng khác

không có quyền gì cả.

* Đăng nhập vào từng user và kiểm thử

bằng cách dùng lệnh ls và cat > kiemtra.txt

(nhâp nội dung tuỳ ý, lưu bài Ctrl - D)

4. Phân quyền cho nhánh thư mục ketoan như sau (chuyển quyền sở hữu và phân quyền):

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 115

- ktt: chuyển quyền sở hữu cho ktt và nhóm ketoan, ktt toàn quyền trên thư mục

của mình, các thành viên nhóm được quyền đọc trên ktt, ngoài ra người khác được

quyền thực thi. – kt01 (kt02) chuyển quyền sử dụng cho kt01 (kt02). User kt01 (kt02)

được toàn quyền trên thư mục của mình, các thành viên nhóm được quyền đọc. ngoài ra

nhóm khác không có quyền gì cả.

- ketoan chuyển quyền sở hữu cho nhóm ketoan. Phân quyền toàn quyền cho

user, nhóm sở hữu có quyền đọc, thành viên khác không quyền gì cả.

* Đăng nhập vào từng user và kiểm thử bằng cách dùng lệnh ls và cat >

kiemtra.txt (nhâp nội dung tuỳ ý, lưu bài Ctrl - D)

5. Phân quyền cho nhánh thư mục nhansu như sau (chuyển quyền sở hữu và phân quyền): - nhansu: chuyển quyền sở hữu cho nhóm nhanvien.

- nv01: chuyển quyền sở hữu cho user nv01, user này được toàn quyền trên thư

mục nv01 (thực hiện tương tự cho nv02)

* Kiểm thử bằng cách đăng nhập vào từng user thực hiện tạo tập tin, duyệt thư

mục.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 116

Bài 4. TRÌNH SOẠN THẢO VÀ TRÌNH TIỆN ÍCH TRONG LINUX

Bài 2.4. TRÌNH SOẠN THẢO VÀ TRÌNH TIỆN ÍCH TRONG LINUX

2.4.1. Trình soạn thảo vi:

2.4.1.1. Giới thiệu :

Trình soạn thảo vi (video interactif) là chương trình sọan thảo văn bản theo trang

màn hình :

– Màn hình được xem như một cửa sổ mở trên tập tin .

– Có khả năng di chuyển con trỏ đến bất kì vị trí nào trên màn hình .

– Cửa sổ có thể di chuyển tự do trên tập tin .

Phần lớn các phím dùng độc lập hoặc kết hợp với phím Shift và Ctrl để tạo ra các

lệnh của vi . Khi một lệnh bị gõ sai, vi báo hiệu bằng cách nháy màn hình, kêu còi hay

thông báo lỗi .

Chương trình vi được xây dựng từ chương trình soạn thảo dòng ex .Các lệnh của

ex có thể được gọi khi có dấu “:” ở dòng cuối màn hình .

2.4.1.2. Khởi động vi :

Ta có thể gọi vi với tên tập tin văn bản :

$vi tên_tập tin

Cửa sổ soạn thảo sẽ được mở tại đầu tập tin . Nếu tập tin chưa tồn tại,nó sẽ được

tạo bởi lệnh ghi . Dòng cuối cùng trên màn hình được dùng cho những công việc sau :

– Vào các lệnh .

– Thống kê .

– Báo lỗi .

Khi ta chỉ muốn xem nội dung một tập tin đã có trên đĩa , dùng lệnh :

$view tên_tập tin

Để thóat trình xem, nhấn phím ESC gõ :q! nhấn phím Enter

2.4.1.3.Thoát khỏi vi :

– Muốn ra khỏi vi và ghi lại nội dung tập tin, bạn nhấn phím ESC và dùng một

trong các lệnh như sau : :ZZ hoặc :wq hoặc :x

– Thoát khỏi vi và không ghi lại các thay đổi trước đó :q!

Khi ở trong chế độ soạn thảo của vi , muốn làm việc với các lệnh SHELL, ta có

thể làm như sau :

– Chạy một lệnh SHELL

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 117

:! Lệnh

– Hoặc gọi SHELL , sau đó chạy các lệnh của người dùng, khi kết thúc bấm Ctrl-

D để trở lại vi :

:! sh

$ lệnh

$ Ctrl-D

2.4.1.4. Soạn thảo văn bản :

2.4.1.4.1. Chèn văn bản :

– Chèn ký tự trên một dòng :

a <text> <ESC>

– Chèn ký tự vào sau vị trí con trỏ. Lệnh không được hiển thị trên màn hình. Nhấn

phím ESC để kết thúc chế độ chèn văn bản .

i <ESC> Xen ký tự vào sau con trỏ .

A <ESC> Xen ký tự vào cuối dòng .

i <ESC> Xen ký tự vào cuối dòng .

– Chèn dòng :

o <ESC> Xen một dòng vào trước dòng chứa con trỏ .

o <ESC> Xen một dòng vào sau dòng chứa con trỏ .

2.4.1.4.2. Di chuyển con trỏ trong tập tin :

– Theo ký tự :

Sang trái : dùng phím trượt trái hoặc h hoặc backspace

Xuống dòng : dùng phím trượt xuống hoặc j hoặc linefeed

Sang trái : dùng phím trượt phải hoặc i hoặc espace

Lên dòng : dùng phím trượt lên hoặc k hoặc

– Theo dòng :

^ về đầu dòng

$ cuối dòng

Enter đầu dòng kế tiếp

– Đầu dòng trên

0(null) về đầu dòng vật lý (dòng bắt dầu bằng dấu cách hoặc Tab)

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 118

– Theo màn hình

H về đầu màn hình (Home)

M về giữa màn hình (Midle)

L về cuối màn hình (Last)

– Theo từ (word) :

w W về đầu từ tiếp

b B đầu từ hiện tại

e E cuối từ hiện tại – Theo câu :

( về đầu câu

) về cuối câu

Lưu ý kết thúc một câu là dấu .! hoặc ?

– Theo cửa sổ (window):

z dòng hiện tại ở giữa cửa sổ .

z<Enter> dòng hiện tại ở đầu cửa sổ

^D dòng hiện tại ở cuối cửa sổ

^U xuống nữa cửa sổ

^F xuống một cửa sổ (-2 dòng)

^B lên một cửa sổ (-2 dòng)

Lưu ý :^là ký hiệu phím CTRL . -Theo số thứ tự dòng :

Để hiển thị số thứ tự các dòng soạn thảo :

: set nu

Xóa bỏ hiển thị trên :

: set nonu

:n<Enter> hoặc nG Chuyển con trỏ đến dòng thứ n

:s hoặc G Đến cuối dòng văn bản

:se list hiển thị các kí tự ẩn

– Tìm theo dãy kí tự :

/ kí hiệu chiều tìn xuôi

? kí hiêụ chiều tìm ngược

/string chuyển con trỏ đến dòng chứa dãy kí tự theo chiều

xuôi

?string chuyển con trỏ đến dòng chứa dãy kí tự theo chiêu ngược

// lặp lại tìm xuôi

?? lặp lại tìm ngược

2.4.1.4.3. Xóa văn bản :

– Xóa kí tự :

x xóa kí tự taịo vị trí con trỏ

– Xóa dòng văn bản :

dd hoặc :d<CR> xóa dòng chứa con trỏ

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 119

3x xóa 3 kí tự

x xóa kí tự trước vị trí con trỏ

3dd xóa 3 dòng bắt đầu từ vị trí văn bản

d$ hoặc D xóa đến cuối dòng

dw xóa từ chứa con trỏ

3dw xóa 3 từ

d/string xóa đến khi hết dãy kí tự

2.4.1.4.4. Thay thế văn bản :

-Thay thế kí tự :

rc thay thế kí tự đại diện bằng kí tự c

R <ESC> thay thế số kí tự bằng dãy

‘text”

– Thay thế dòng :

S <ESC> xóa dòng hiện tại và thay thế

nó bằng “text”

– Thay thế từ :

cw <ESC> thay thế một từ bằng “text”.

Từ được thay thế tính từ vị trí con trỏ

đến kí tự $

c2w<ESC> thay 2 từ

c hoặc c$ thay thế đến cuối dòng

c/string thay thế đến hết chuỗi

2.4.1.4.5. Xóa hoặc lặp lại tập lệnh :

– Xóa lệnh

u xóa tác dụng của lệnh cuối cùng

U xóa tất cả các thay đổi đã làm trên dòng hiện tại

– Lặp lại lệnh

. lặp lại lệnh thay dổi văn bản

2.4.1.4.6. Xem trạng thái văn bản đang soạn thảo :

^G Hiển thị tên , trạng thái ,số dòng , vị trí cursor và phần văn bản tính

từ vị trí con trỏ đến cuối dòng văn bản .

Sao chép , di chuyển văn bản :

+ Di chuyển văn bản

Mỗi lần thực hiện một lệnh xóa (x hoặc d ) , vi đều ghi lại phần văn bản bị xóa vào

vùng đệm riêngcho đến lần xóa sau . Lệnh p hoặc P cho phép lấy lại phần văn bản từ

vùng đệm đó . Trước khi thực hiện lệnh này, dấu nháy phải được đặt vào vị trí cùng kiểu

với phần văn bản có trong vùng đệm :

– kí tự

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 120

– từ

– dòng

– cuối dòng

p sao phần văn bản xóa lần cuối vào sau đối tượng cùng kiểu

P sao phần văn bản xóa lần cuối vào trước đối tượng cùng kiểu

* cách khác để chuyển dòng :

:5, 10m 20 chuyển các dòng từ 5 đến 10 tới sau dòng 20

+ Sao chép văn bản

Lệnh y (yank) cho phép sao chép phần văn bản ta muốn vào vùng

đệm . Muốn sao phần văn bản từ vùng đệm ra, ta phải chuyển cursor đến nơi

cần sao , sau đó dùng P hoặc p

Y3w sao 3 từ vào vùng đệm

Y hoặc yy sao dòng hiện tại vào vùng đệm

5yy sao 5 dòng vào vùng đệm

Cách khác dùng để sao chép dòng :

:5, 8 t 25 sao chép các dòng từ 5 tới 8 tới sau dòng 25

2.4.2. Một số trình soạn thào khác

2.4.2.1. Nano

Nano là một trình soạn thảo khá đơn giản và rất dễ sử dụng, được tích hợp sẵn

trong Ubuntu, cho phép bạn soạn thảo với các tính năng cơ bản như mở file, lưu file…

Cú pháp: nano file-name

Một số phím tắt thông dụng được áp dụng:

- Ctrl-O: lưu file

- Ctrl-G: gọi trợ giúp

- Ctrl-R: mở file

- Ctrl-X: đóng file

Các phím này bạn có thể thấy được dưới chân màn hình soạn thảo khi bạn mở một

tập tin bất kỳ bằng trình nano.

2.4.2.2. Vim

Vim – Vi iMprove là bản cải thiện của Vim, là một trình soạn thảo phổ biến trên

Unix. Vim có tính cấu hình rất cao được xây dựng cho phép chỉnh sửa văn bản hiệu

quả. Thông thường, Vim được nhiều lập trình viên sử dụng vì nó hỗ trợ rất nhiều trong

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 121

việc lập trình. Không những thế, Vim có thể được nhúng vào trong IDE mạnh mẽ như

Visual Studio hay Qt Creator, Eclipse…Tuy nhiên, để có thể thao tác trực tiếp trên giao

diện đồ họa, bạn cần cài đặt gói gVim bằng lệnh sudo apt-get install gvim.

Mặc định trong Ubuntu, Vim không được cài đặt sẵn, để cài đặt Vim, từ Terminal

bạn gõ lệnh:

sudo apt-get install vim

Cú pháp: vim file-name

Vim làm việc theo 3 chế độ: chế độ câu lệnh, chế độ nhập liệu và chế độ trực

quan.

- Chế độ câu lệnh: Ở chế độ này, bạn có thể thực hiện các thao tác như lưu

tập tin, di chuyển con trỏ đến các vị trí khác nhau trong tập tin, chỉnh sửa,

sắp xếp, xóa bỏ, thay thế, tìm kiếm đoạn văn bản hay thoát khỏi Vim. Để

chuyển sang chế độ lệnh, bạn nhấp ESC.

- Chế độ nhập liệu: Ở chế độ này, bạn có thể thực hiện các thao tác như một

trình soạn thảo đơn thuần như chỉnh sửa, xóa bỏ…nội dung văn bản. Để

chuyển sang chế độ này, bạn chỉ cần nhấp ký tự i hoặc phím Insert trên bàn

phím giống như trình soạn thảo Vi.

- Chế độ trực quan: Chế độ này là một mở rộng của Vim, bạn có thể chọn / bôi

đen văn bản (dùng để copy nhiều dòng).

Chú ý: Trong Vim có phân biệt chữ hoa và chữ thường. Một số lệnh cơ bản thao tác trên Vim:

- :w – lưu file

- :q – thoát khỏi Vim, lệnh sẽ vô hiệu nếu file chưa được lưu

- :q! – thoát khỏi Vim để cả file chưa được lưu

- :wq – lưu lại và thoát

2.4.2.3. Gedit

Gedit là một trình soạn thảo khá phổ biến trong Linux, trong một số phiên bản nó

được cài đặt sẵn (tuy nhiên nếu hệ thống chưa có thì bạn chạy lệnh sudo apt-get install

gedit để cài đặt). Ngoài việc hỗ trợ người dùng thao tác chỉnh sửa trên các file văn bản

chữ thì gedit còn hỗ trợ trong việc biên tập các chương trình đối với lập trình viên.

Cú pháp: gedit file-name

Gedit hỗ trợ cho bạn các thao tác khá dễ dàng trên giao diện đồ họa như mở file,

lưu file, xóa file, thoát khỏi trình soạn thảo…

Nếu bạn là một lập trình viên thì việc sử dụng gedit là một lựa chọn sáng suốt vì

nó tích hợp nhiều công cụ rất mạnh và hữu ích. Tuy nhiên, để có thể phát huy được hết

những tính năng của nó thì việc cài đặt thêm những plugin là một điều nên làm. Một

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 122

số plugin phổ biến và hữu dụng như Bracket Completion (tự động đóng Bracket),

Charmap (chèn ký tự từ bản đồ ký tự), Code Comment (đánh dấu ghi chú bằng phím

tắt), Join lines / Split lines (nối, cắt dòng với Control+J hoặc Shift+Control+J), Session

Saver (lưu lại một phiên bản làm việc), Smart Spaces (tự động sắp xếp bằng phím

tắt)…

Ngoài những trình soạn thảo thường sử dụng được nêu trên còn rất nhiều trình

soạn thảo khác khá phổ biến như Emacs, Kate, Geany, Kwrite, Nedit, Scribes, SciTE,

Medit, Gtkedit…Tuy nhiên, mỗi trình soạn thảo hỗ trợ những chức năng khác nhau, do

vậy tùy theo yêu cầu thực tế mà việc bạn nên lựa chọn một trình soạn thảo nào phù

hợp với nhu cầu cho mình để sử dụng.

2.4.3. Trình tiện ích

2.4.3.1. Mail

Trong Linux dòng lệnh cũng có thể được sử dụng rất hữu dụng khi bạn biết cách

sử dụng nó. Bạn có thể phân tách dữ liệu, kiểm tra các quá trình và thực hiện rất nhiều

công việc hữu dụng khác qua nó. Công cụ dòng lệnh cũng có thể được sử dụng để tạo

một báo cáo và mail nó đến một địa chỉ nào đó. Trong bài này chúng tôi sẽ giới thiệu

cho các bạn cách sử dụng lệnh trong Linux để gửi mail bằng một kịch bản. Bổ sung

thêm vào đó là việc gửi theo các đính kèm từ dòng lệnh.

Trước khi chạy một kiểm tra nhanh chóng để bảo đảm rằng ứng dụng “sendmail”đã

được cài đặt và làm việc đúng cách. Bạn hãy thực thi lệnh dưới đây, thay thế

[email protected]” bằng địa chỉ email của bạn.

# mail -s “Hello world” [email protected]

Nhấn phím Enter/return, khi đó bạn sẽ được đưa tới một dòng mới. Nhập vào đoạn

văn bản “This is a test from my server”. Sau khi nhập xong đoạn văn bản đó bạn hãy

nhấn phím return lại lần nữa. Sau đó nhấn kết hợp các phím Control+D để tiếp tục.

Nhắc lệnh sẽ hỏi bạn xem bạn có muốn đánh dấu một bản copy của mail đến một địa

chỉ nào khác không, nhấnControl+D lần nữa. Kiểm tra mailbox của bạn. Lệnh này sẽ

gửi đi một mail đến một email ID đã được đề cập với subject “Hello world”.

Để add thêm nội dung vào phần body của mail trong khi vẫn chạy lệnh, bạn có thể

sử dụng các tùy chọn dưới đây. Nếu bạn muốn bổ sung thêm đoạn văn bản của chính

bạn:

# echo “This will go into the body of the mail.” | mail -s

“Hello world” [email protected]

Và nếu bạn muốn mail để đọc nội dung từ một file:

# mail -s “Hello world” [email protected] <

/home/calvin/application.log

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 123

Một số tùy chọn hữu dụng khác trong lệnh mail này là:

-s subject (subject của mail)

-c email-address (Đánh dấu một copy cho địa chỉ “email-address” này hoặc CC)

-b email-address (Đánh dấu BCC)

Đây là cách bạn có thể sử dụng các tùy chọn này:

# echo “Welcome to the world of Calvin n Hobbes” | mail -s

“Hello world” [email protected] -c [email protected] -b

[email protected]

2.4.3.2. Quản trị đĩa

2.4.3.2.1. Phân hoạch và định dạng đĩa

Ký hiệu các loại đĩa và phân vùng trong linux

– Số lượng phân vùng: đối với mỗi ổ đĩa cứng, có hai loại phân vùng là: Primary

(phân vùng chính) và Extended (phân vùng mở rộng). Primary là phân vùng có khả năng

khởi động. Về mặt vật lý, ổ đĩa cứng chỉ có thể chia làm bốn phân vùng, tức là chỉ cài

được tối đa bốn hệ điều hành trên một đĩa cứng mà thôi.

Hình 2.4.1. Hai loại phân vùng đĩa

Tên phân vùng: Hạt nhân Linux/ Unix xây dựng cơ chế truy xuất tất cả các loại đĩa

và thiết bị đều ở dạng tập tin. “Chú chim cánh cụt” đặt tên cho bé ổ đĩa mềm là fd (floppy

disk), ổ đĩa mềm thứ nhất là fd0, ổ đĩa mềm thứ hai là fd1 (hết rồi, chỉ có tối đa hai ổ

đĩa mềm thôi). Tiếp đến là ổ đĩa cứng, nếu là ổ đĩa IDE thì có tên hd (hard disk), còn

nếu là ổ đĩa SCSI thì có tên là sd (SCSI disk). Bây giờ bàn về ổ đĩa cứng IDE thôi nhé

(ổ SCSI cũng tương tự). Ổ đĩa cứng vật lý thứ nhất với tên hda, thứ hai là hdb, thứ ba là

hdc, nếu còn nữa thì tiếp tục. Trên từng ổ đĩa cứng, mỗi phân vùng cũng có tên riêng,

điển hình là bốn phân vùng chính (Primary) chiếm lấy các tên từ hda1 đến hda4. Phân

cùng mở rộng (Extended) có số từ 5 trở lên (như hda5, hda6…). Điều này khác với DOS/

Windows, vì trên DOS/Windows thì Extended không có tên, nhưng trên Linux thì

Extended có tên hẳn hoi. Dù bạn không chia đủ 4 phân vùng primary thì các phân vùng

Logical cũng vẫn đi từ 5 trở lên.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 124

Hình 2.4.2. Định danh tên phân vùng đĩa

Phân vùng tráo đổi SWAP (bộ nhớ ảo): Nếu Windows sử dụng tập tin tráo đổi

SWAP/pfile để lưu tạm bộ nhớ thì Linux dùng ngay cả một phân vùng SWAP hẳn hoi

để làm việc này, phân vùng SWAP phải nằm trên Extended tức là Logical, và phải có

kích thước gấp 1,5 đến hai lần kích thước bộ nhớ RAM hiện có trên máy. Tuy vậy, đối

với những máy có dung lượng bộ nhớ RAM từ 32MB trở lên thì Linux khuyến khích

đặt kích thước phân vùng SWAP bằng với dung lượng RAM. Dù thế, bạn vẫn được toàn

quyền đặt kích thước phân vùng SWAP mà.

Giải phân mảnh (Defragment): Khi dùng Windows, bạn phải thường xuyên làm

công việc “dồn đĩa” giải phân mảnh để tăng tốc hệ thống. Thế nhưng ở Linux, ta không

cần vì kiểu phân vùng EXT2 (hoặc EXT3) đã có đoạn chương trình tự động chống phân

mảnh trong khi làm việc. Đây là một đặc tính rất hay của Linux, nhưng bạn phải trả cho

Linux với giá 10% dung lượng phân vùng. Thật ra, đây là cái giá không cao, và bạn

hưởng được tính ổn định và hiệu năng tối ưu.

Phân hoạch đĩa cứng

Như hầu hết các hệ điều hành khác, Linux yêu cầu đĩa phải được phân hoạch. Việc

phân hoạch đĩa cứng làm cho ta có thể chia nhỏ một đĩa cứng lớn thành nhiều đĩa logic

nhỏ dễ quản lý.

Các phân đoạn đĩa cứng được chứa trong bản phân hoạch đĩa được lưu trong boot

record tại sector bắt đầu của đĩa cứng.

Bảng phân hoạch có thể chứa đến 4 partitions Để vượt qua giới hạn này ta có thể

định nghĩa một partition mở rộng với các partition logic nằm trong partition mở rộng

này.

Bảng 2.4.1. Các loại phân vùng đĩa

Các loại partition 64 MB

Primary Phần Logic của đĩa ở mức cao nhất. Ở đây chỉ có thể có 4

partition.

Extended Không chứa dữ liệu. Partition này chỉ dùng để chứa bảng

phân hoạch đĩa của chính nó

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 125

Logical

Được tạo trong partition mở rộng. Không có giới hạn số

lượng logic partition. Tuy nhiên trên thực tế ta nên chọn số

lượng partition không quá 12 cho 1 đĩa.

Lệnh fdisk

Lệnh fdisk dùng để tạo partition. Có các tính năng sau:

[root@blackboard root]# fdisk /dev/sda

The number of cylinders for this disk is set to 4425. There is nothing wrong with

that, but this is larger than 1024, and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): m

- n: tạo mới một partition

- p: in ra partition table

- q: thoát không thay đổi

- t: đổi kiểu định dạng file ( DOS, FAT16, Fat 32, NTFS,…)

- w: ghi những thay đổi vào đĩa và thoát

Ví dụ: Command (m for help): p

Disk /dev/sda: 255 heads, 63 sectors, 4425 cylinders

Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System

/dev/sda1 * 8 4294 34435327+ 83 Linux

/dev/sda2 4295 4425 1052257+ 82 Linux swap

/dev/sda4 1 7 56196 fe LANstep

Định dạng đĩa

Định dạng đĩa là áp dụng một hệ thống file vào đĩa, khi đó cho phép ta có thể ghi

thông tin vào đĩa. Sau khi đĩa được phân hoạch, nó phải được format mới có thể dùng

được.

Lệnh mkfs: Make File System

Cú pháp: mkfs /dev/hdaX (trong đó X có thể là 1,2,3,4,5,6,…). Có các loại lệnh

mkfs khác nhau:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 126

- mkfs: format đĩa với file system mặc định của Linux

- mkfs.ext2: format đĩa thành ext2 file system

- mkfs.minix: format đĩa thành minix file system

- mkfs.ext3: format đĩa thành ext3 file system

- mkfs.msdos: format đĩa thành FAT 16

- mkfs.vfat: format đĩa thành FAT 32

2.4.3.2.2. Sữa lỗi đĩa

Lệnh fsck

Linux đòi hỏi cần được dừng theo đúng quy trình, tức là phải shutdown máy trước

khi tắt điện bằng công tắc. Mỗi khi máy Linux bị tắt đột ngột, hệ thống tập tin bị hư hại

và cần được sửa chữa qua dịch vụ fsck (file system check). Thông thường, fsck sửa chữa

thành công một cách tự động hệ thống tập tin và Linux khởi động lại dễ dàng. Tuy nhiên,

nếu hư hỏng quá nặng, Linux sẽ chuyển qua chế độ single mode để sửa chữa. Khi đó,

chúng ta chỉ có thể làm việc với máy trực tiếp trên bàn phím của nó. Ta sẽ phải sử dụng

lệnh

fsck <thiết_bị_đĩa_cứng_bị_hư>

để sửa chữa. Ví dụ fsck /dev/hda1 sẽ sửa phân đoạn đầu của ổ đĩa master của

controller IDE số 0.

Sự phân mảnh của hệ thống file ( fragmentation)

Hệ thống ext2 được thiết kế nhằm hạn chế tối thiểu sự phân mảnh nên ta không

cần phải defragment hệ thống file ext2.

Nguyên nhân gây ra sự phân mảnh của file system là việc ghi file nhiều lần trên ổ

đĩa. Trong đó các file làm bộ nhớ mở rộng của hệ thống trên đĩa là có nguy cơ bị phân

mảnh nhiều nhất.

Đối với các hệ điều hành MS Windows, hệ thống bộ nhớ mở rộng này nằm trên

cùng một partition chính của hệ thống thông qua file pagefile.sys còn trong Linux thì hệ

thống bộ nhớ mở rộng này được cho ra một partition riêng nên hạn chế rất nhiều sự phân

mảnh.

2.4.4. Quản trị tiến trình và lập lịch

2.4.4.1. Quản lý tiến trình trong Linux

2.4.4.1.1. Giới thiệu

Linux là một HDH đa người sử dụng, đa tiến trình. Linux thực hiện tất cả các công

việc của người sử dụng cũng như của hệ thống bằng các tiến trình (process). Do đó, hiểu

được cách điều khiển các tiến trình đang hoạt động trên HDH Linux rất quan trọng cho

công việc quản trị hệ thống.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 127

Định nghĩa: Tiến trình (process) là một chương trình đơn chạy trên không gian

địa chỉ ảo của nó. Cần phân biệt tiến trình với lệnh vì một dòng lệnh trên shell có thể

sinh ra nhiều tiến trình. Dòng lệnh sau

nroff -man ps.1 | grep kill | more

sẽ sinh ra 3 tiến trình khác nhau.

Có 3 loại tiến trình chính trên Linux:

- Tiến trình với đối thoại (Interactive processes): là tiến trình khởi động và

quản lý bởi shell, kể cả tiến trình forthground hoặc background.

- Tiến trình batch (Batch processes): Tiến trình không gắn liền đến bàn điều

khiển (terminal) và được nằm trong hàng đợi để lần lượt thực hiện.

- Tiến trình ẩn trên bộ nhớ (Daemon processes): Là các tiến trình chạy dưới

nền (background). Các tiến trình này thường được khởi động từ đầu. Đa số

các chương trình server cho các dịch vụ chạy theo phương thức này. Đây là

các chương trình sau khi được gọi lên bộ nhớ, đợi thụ động các yêu cầu

chương trình khách (client) để trả lời sau các cổng xác định (cổng là khái niệm

gắn liền với giao thức TCP/IP BSD socket). Hầu hết các dịch vụ trên Internet

như mail, Web, Domain Name Service … chạy theo nguyên tắc này. Các

chương trình được gọi là các chương trình daemon và tên của nó thường kết

thúc bằng ký tự "d" như named, inetd … Ký tự "d" cuối được phát âm rời ra

như "đê " trong tiếng việt. Ví dụ named được phát âm là "nêm đê".

Cách đơn giản nhất để kiểm tra hệ thống tiến trình đang chạy là sử dụng lệnh ps

(process status). Lệnh ps có nhiều tùy chọn (option) và phụ thuộc một cách mặc định

vào người login vào hệ thống. Ví dụ:

$ ps

PID TTY STAT TIME COMMAND

41 v01 S 0:00 -bash

134 v01 R 0:00 ps

cho phép hiển thị các tiến trình liên quan tới một người sử dụng hệ thống.

Cột đầu tiên là PID (Process IDentification). Mỗi tiến trình của Linux đều mang

một số ID và các thao tác liên quan đến tiến trình đều thông qua số PID này. Gạch nối

– trước bash để thông báo đó là shell khởi động khi người sử dụng login.

Để hiển thị tất cả các process, ta có thể sử dụng lệnh ps –a. Một người sử dụng hệ

thống bình thường có thể thấy tất cả các tiến trình, nhưng chỉ có thể điều khiển dược các

tiến trình của mình tạo ra. Chỉ có superuser mới có quyền điều khiển tất cả các tiến trình

của hệ thống Linux và của người khác. Lệnh ps –ax cho phép hiển thị tất cả các tiến

trình, ngay cả những tiến trình không gắn liền đến có bàn điều khiển (tty). Chúng ta có

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 128

thể coi các tiến trình đang chạy cùng với dòng lệnh đầy đủ để khởi động tiến trình này

bằng ps –axl. Lệnh man ps cho phép coi các tham số tự chọn khác của lệnh ps.

2.4.4.1.2. Dừng một tiến trình

Lệnh kill: Trong nhiều trường hợp, một tiến trình có thể bị treo, một bàn phím

điều khiển không trả lời các lệnh từ bàn phím, một chương trình server cần nhận cấu

hình mới, card mạng cần thay đổi địa chỉ IP …, khi đó chúng ta phải dừng (kill) tiến

trình đang có vấn đề. Linux có lệnh kill để thực hiện các công tác này. Trước tiên bạn

cần phải biết PID của tiến trình cần dừng thông qua lệnh ps. Xin nhắc lại chỉ có super-

user mới có quyền dừng tất cả các tiến trình, còn người sử dụng chỉ được dừng các tiến

trình của mình. Sau đó, ta sử dụng lệnh

kill -9 PID_của_ tiến_trình

Tham số –9 là gửi tín hiệu dừng không điều kiện chương trình. Chú ý nếu bạn

logged vào hệ thống user root, nhập số PID chính xác nếu không bạn có thể dừng một

tiến trình khác. Không nên dừng các tiến trình mà mình không biết vì có thể làm treo

máy hoặc dịch vụ.

Một tiến trình có thể sinh ra các tiến trình con trong quá trình hoạt động của mình.

Nếu bạn dừng tiến trình cha, các tiến trình con cũng sẽ dừng theo, nhưng không tức thì.

Vì vậy phải đợi một khoảng thời gian và sau đó kiểm tra lại xem tất cả các tiến trình con

có dừng đúng hay không. Trong một số hãn hữu các trường hợp, tiến trình có lỗi nặng

không dừng được, phương pháp cuối cùng là khởi động lại máy.

2.4.4.4.4. Đặt lịch bằng lệnh at

Lệnh at: Linux có các lệnh cho phép thực hiện các tiến trình ở thời điểm mong

muốn thông qua lệnh at. Thời điểm thực hiện công việc được nhập vào như tham số của

lệnh at.

$ at 1:23<Return>

2.4.4.4.4.1. Thiết lập lịch thực thi chương trình

Cấu trúc lệnh

1

2

# at time date

at>

Vd 1: thiết lập lịch vào thời điểm ngày 20/5 lúc 11 giờ sáng.

1

2

# at 11 am may 20

at>

Vd 2: thiết lập thời gian vào lúc 4 giờ chiều sau ngày hôm nay 3 ngày.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 129

1

2

# at 4pm + 3 days

at>

– Sau khi bạn thiết lập thời gian sẽ được chuyển vào giao diện console khác để chỉ

định các danh sách chương trình lệnh thực thi.

– Để thoát khỏi console “at” bạn bấm nút CTRL+D, chương trình lệnh sẽ được

thêm vào hàng đợi.

– Output của chương trình thực thi trong hàng đợi “at” sẽ được gửi mail đến bạn,

mặc định là gửi mail local.

2.4.4.4.4.2. Thiết lập lịch với thời gian tương đối

– Bạn có thể thiết lập thời gian với việc cộng thêm thời gian với thời điểm hiện tại.

Cấu trúc lệnh

1 # at now + COUNT UNIT

Vd : thiết lập lịch sẽ thực thi 5 phút sau thời điểm hiện tại

1 # at now + 5 min

– Các “UNIT” bạn có thể sử dụng gồm : min, hour, day

– Nếu bạn sử dụng sai cấu trúc lệnh sẽ gặp thông báo lỗi sau :

1

2

3

# at now + 5 seconds

syntax error. Last token seen: s

Garbled time

2.4.4.4.4.3. Một số mẫu thời gian sử dụng trong at

– Một số mẫu thời gian thường sử dụng khi thiết lập thời gian cho chương trình

“at” thực thi lệnh.

1

2

3

4

5

# at 10 am tomorrow

# at 11:00 next month

# at 22:00 today

# at now + 1 week

# at noon

– Một số từ ngữ thời gian thông dụng và diễn giải. Một số thời gian 10:00 phía

dưới ví dụ là do tính từ thời điểm hiện tại đang cấu hình thời gian “at” là 10:00 AM.

1 midnight = 12:00 AM

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 130

2

3

4

5

6

noon = 12:00 PM

teatime = 4:00 PM

tomorrow = 10:00 AM hôm sau

1430 = 2:30 PM

next week = 10:00 AM tuần sau

2.4.4.4.4.4. Xem dánh sách các công việc nằm trong hàng đợi thực thi của chương

trình “at”

– Ta sẽ sử dụng chương trình lệnh “atq” hoặc “at -l” để hiển thị tất cả các nội dung

chương trình lệnh đang được sắp lịch hoặc đang thực thi. Thực chất “atq” chỉ là alias

của “at -l“.

1

2

3

# at -l

2 2016-03-27 14:19 a root

1 2016-03-27 14:15 a root

1

2

3

# atq

2 2016-03-27 14:19 a root

1 2016-03-27 14:15 a root

– Với nội dung danh sách chương trình thực thi trên thì cấu trúc để hiểu danh sách

đó như sau. Từ trái qua phải : số thứ tự nhiệm vụ, thời gian sẽ thực thi (ngày/tháng/năm

& thời gian), hàng đợi do chương trình “at” tạo (nếu là “b” thì do chương trình “batch”

tạo) và tên user sẽ thực thi chương trình.

Lưu ý:

– atq chỉ có thể liệt kê danh sách chương trình thực thi bởi “at” của user chạy lệnh

“atq”, không thể liệt kê các chương trình lệnh sẽ chạy khác của các user khác, ngoài trừ

user tối cao root.

2.4.4.4.4.5. Xoá bỏ 1 nội dung chương trình nằm trong danh sách thời gian thực

thi của “at”

- Bạn có thể dùng chương trình lệnh “atrm” hoặc “at -d” để làm cùng 1 nhiệm

vụ đó là xoá bỏ 1 nhiệm vụ thực thi khỏi danh sách hàng đợi của “at”.

- Giả sử để xoá bỏ nhiệm vụ thực thi số 2, thì sẽ làm theo cú pháp sau.

1 # atrm 4

hoặc

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 131

1 # at -d 4

2.4.4.4.4.6. Thực thi các chương trình lệnh nằm trong 1 file list

- Chúng ta hoàn toàn có thể tạo 1 file text trong đó chứa các chương trình lệnh

hoặc nội dung một shell script nào đấy mà bạn muốn chúng sẽ được thực thi

chạy nền bằng chương trình “at“.

- Bằng cách sử dụng option hỗ trợ “-f” , ta sẽ yêu cầu “at” sử dụng thông tin

chương trình thực thi được lấy từ 1 file text thay vì stdin.

1

2

3

# cat /root/chuongtrinh.txt

/home/cuongqc/testing.sh

/bin/date -I

1

2

# at -f /root/chuongtrinh.txt now + 1 hour

at

2.4.4.4.4.7. Kiểm soát user nào được quyền sử dụng chương trình “at”

- Người quản trị viên có thể kiểm soát user nào có thể đặt lịch thực thi chương

trình bằng “at” hoặc không được phép.

- Đầu tiên, chương trình sẽ kiểm tra file “/etc/at.allow” . Nếu

file /etc/at.allow tồn tại, thì chỉ có user được liệt kê trong file này mới được

phép sử dụng chương trình “at”.

- Kế đến nếu file “/etc/at.allow” không tồn tại, chương trình sẽ kiểm tra

file /etc/at.deny . Nếu file này tồn tại, user nào được liệt kê trong file này sẽ

không có quyền thực thi chương trình “at”.

- Mặc định một số hệ thống thường sử dụng chương trình sử dụng

file /etc/at.deny để ngăn 1 số user không được phép xài “at” như user : www-

data, guest, backup,…

2.4.4.4.4.8. Các file và thư mục được sử dụng bởi chương trình “at”

– Các file được chương trình “at” sử dụng tương tác trong quá trình hoạt động.

1

2

3

4

/var/spool/at

/var/spool/at/spool

/proc/loadavg

/var/run/utmp

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 132

5

6

/etc/at.allow

/etc/at.deny

2.4.4.1.4. Đặt lịch bằng lệnh batch

Lệnh batch. Khác với lệnh at là tiến trình được thực hiện vào các thời điểm do

người sử dụng chọn, lệnh batch để cho hệ thống tự quyết định khi nào tiến trình được

thực hiện dựa trên mức độ tải của hệ thống. Thường là các tiến trình batch được thi hành

khi máy bận dưới 20%. Các tiến trình in ấn, cập nhật dữ liệu lớn … rất thích hợp với

kiểu lệnh này. Cú pháp của batch như sau:

$ batch<Return>

lp /usr/sales/reports/*<Return>

<^D>

2.4.4.1.5. Đặt lịch bằng lệnh Crond

2.4.4.1.5.1. Cron là gì? Cron là một tiện ích cho phép thực hiện các tác vụ trên hệ thống một cách tự động

theo định kỳ, ở chế độ nền của hệ thống. Chức năng này khá phong phú cho phép thiết

lập tác vụ dưới dạng command đơn hoặc dùng script theo thời gian định ký được thiết

lập sẵn. Tiện ích này trong nhiều trường hợp tỏ ra khá hữu dụng với người dùng và

người quản trị. Đơn cử như vấn đề backup Mysql một cách tự động hàng ngày vào một

thư mục cố định mà chúng ta quy định chẳng hạn.

Các lệnh at và batch cho phép lập kế hoạch thực hiện tiến trình một lần. Linux

còn cho phép lập kế hoạch có tính chất chu kỳ thông qua lệnh cron (viết tắt của

chronograph) và các tập tin crontabs. Chương trình daemon cron (crond) được kích

hoạt ngay từ đầu với khởi động của hệ thống. Khi khởi động, cron xem có các tiến trình

trong hàng đợi nhập vào bởi lệnh at, sau đó xem xét các các tập tin crontabs xem có tiến

trình cần phải thực hiện hay không rồi "đi ngủ ":-). Cron sẽ "thức dậy" mỗi phút để kiểm

tra xem có phải thực hiện tiến trình nào không. Super-user và user đều có thể đặt hàng

các tiến trình sẽ được cho phép thực hiện bởi cron.

Có tất cả là hai dạng được sử dụng trong cấu hình Cron:

1. Crontab cho hệ thống Linux/Unix: Thông thường được sử dụng bởi các dịch

vụ hệ thống hoặc các công việc quan trong đòi hỏi các đặc quyền cấp cao như root.

Đặc biệt còn có thể quy định tác vụ sẽ được thực thi dưới danh nghĩa của một người

dùng xác định trong hệ thống.

2. Crontab cho người dùng hệ thống: Tất cả người dùng trong hệ thống đều có

quyền tạo ra các tác vụ định kỳ cho bản thân người dùng đó. Và mặc định các tác vụ do

người dùng tạo ra sẽ hoạt động dưới danh nghĩa người dùng đó và không thể thay đổi.

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 133

2.4.4.1.5.2. Cron làm việc thế nào?

Một cron schedule đơn giản là một tập tin ASCII. Mỗi người dùng có một Cron

riêng, thông thường nằm ở /var/spool/cron . Các Cron không cho phép người dùng tạo

hoặc chỉnh sửa trực tiếp với bất kỳ trình biên tập tập tin nào, trừ phi họ dùng lệnh crontab.

Cú pháp lệnh Cron:

Để thêm hay cập nhật một công việc trong crontab ta dùng câu lệnh sau:

crontab -e

Linux sẽ mở tập tin crontab trong một màn hình soạn thảo cho phép người dùng

có thể thêm hay cập nhật. Mặc định nó sẽ mở tập tin crontab trong không gian làm việc

của user hiện hành. Tuy nhiên, để mở crontab của user khác ta dùng lệnh sau:

crontab -u username -e

Thay đổi biến môi trường soạn thảo (EDITOR environment variable) để thiết lập

màn hình soạn thảo mặc định.

Một số lệnh thường dùng:

crontab -e: tạo hoặc chỉnh sửa file crontab

crontab -l: liệt kê crontab của user hiện hành

crontab -u username -l: liệt kê crontab của user khác

crontab -r: xóa file crontab

2.4.4.1.5.3. Cấu trúc của crontab

Một crontab file có 6 phân đoạn trong đó 5 phân đoạn đầu xác định thời gian, và

đoạn cuối cùng là lệnh sẽ được chạy định kỳ mà chúng ta mong muốn. Mỗi phân đoạn

của cú pháp crontab cách nhau bằng một dấu khoảng trắng nhưng đoạn cuối cùng có

thể tồn tại trong nó nhiều khoảng trắng và điều chú ý là thời gian tham chiếu là từ máy

local.

Một chú ý nhỏ là nếu một máy tính đang chạy Crontab gặp sự cố thì hiển nhiên

tiến trình được lập lịch trong thời điểm xảy ra sự cố sẽ không hoạt động. Và ngay cả

khi máy tính hoạt động lại bình thường thì tiến trình bị bỏ lỡ đó cũng không tự động

thực hiện mà chỉ có thể đợi chu kỳ kế tiếp.

Chúng ta có cấu trúc lệnh như sau:

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 134

Hình 3.4.3. Cấu trúc lệnh Cron

Nếu một cột được gán ký tự *, tương ứng là tác vụ sẽ được chạy ở mọi giá trị cho

cột đó. Ngoài ra còn một ký tự đặc biệt được sử dụng trong cú pháp lệnh là dấu “,” dấu

này dùng để xác định tứng giá trị riêng lẻ trong một đoạn

Ví dụ như chúng ta muốn lập lịch chi tiết là phut thứ 5 và 35 của mỗi giờ mỗi

ngày mỗi tháng và mỗi ngày trong tuần sẽ làm tác vụ <A>

5,35 * * * * tác vụ <A>

Ngoài ra còn một ký tự khác là dấu “-“ đại diện cho một dãy giá trị thay vì dấu “,”

là một giá trị tách rời.

Đặc biệt để hỗ trợ đơn giản trong cấu hình cron người ta còn kiến tạo ra 8 chuỗi

ký tự đặc biệt có ý nghĩa xác định như sau:

Bảng 3.4.2. Mẫu định dạng cấu hình cron phổ biến

Chuỗi đặc biệt ý nghĩa

@reboot chạy một lần khi khởi động

@yearly chạy một lần trong năm “0 0 1 1”

@annually giống @yearly

@monthly chạy một lần trong tháng “0 0 * * 0”

@weekly chạy một lần trong tuần “0 0 * * 0”

@daily chạy một lần trong ngày “0 0 * * *”

@midnight giống daily

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 135

@hourly chạy một lần trong giờ “0 * * * *”

ví dụ:

Chạy ntpdate mỗi giờ: @hourly /path/to/ntpdate

Chạy backup script mỗi ngày: @daily /path/to/backup/script.sh

Tính năng email

Mặc định khi tới định kỳ kích hoạt một tác vụ thì nội dung out put của tác vụ đó

mặc định sẽ được gửi vào mail cho tài khoản email local của người dùng. Đê ngừng

nhận các thông tin đó qua email chúng ta cần thêm vào sau thiết lập tác vụ đó cú pháp

>/dev/null 2>&1

vi dụ: 0 3 * * * /root/backup.sh >/dev/null 2>&1

Thay vào đó để thiết lập cụ thể lại tính năng mail sẽ gửi mail cho một tài khoản

mail xác định chúng ta cần thiết lập một biến MAILTO như sau trong khi thiết lập cron:

Ví dụ:

MAILTO=”[email protected]

0 3 * * * /root/backup.sh >/dev/null 2>&1

d. Các ví dụ cụ thể

Giả sử tôi viết một đoạn script backup bookmarks trong Firefox như sau:

Code:

#!/bin/bash

date=`date +%F`

cp

~/.mozilla/firefox/13kee53o.default/bookmarks.html/mnt/dat

a/BACKUP/bookmarks-$date.html

sau đó tôi cho script này chạy định kỳ vào 15h thứ Hai và thứ Năm hàng tuần bằng

cách tạo một file crontab như sau:

$ crontab -e

0 15 * * 1,4 sh /mnt/data/linux/code/backupbookmarks.sh

Cuối cùng, nhớ khởi động lại cron daemon:

/etc/init.d/crond restart

Chú ý: Để muốn “test” ngay xem crontab nó có hoạt động không, bạn có thể sửa

lại đoạn script trên một chút:

#!/bin/bash

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 136

date=`date +%F-%H-%M-%S`

cp

~/.mozilla/firefox/13kee53o.default/bookmarks.html/mnt/dat

a/BACKUP/bookmarks-$date.html

và file crontab bạn sẽ cho backup liên tục theo từng phút như sau:

0-59 * * * * sh /mnt/data/linux/code/backupbookmarks.sh

Bạn có thể chỉnh sửa file crontab trong Linux luôn bằng cách xài Software GNU

Midnight Commander.

Ngoài ra bạn cũng có thể tạo File crontab (không có đuôi) trên máy Windows

(cách này thường dùng trong trường hợp máy chủ là Linux máy con là Windows) bằng

chương trình NOTEPAD rồi dùng Software WinSCP chuyển qua máy Linux.

Lưu ý sau khi chuyển qua máy Linux phải chạy lênh “dos2unix ‘pathfile’” để

chuyển sang loại file Linux đọc được.

Thực hiện nhiều nhiệm vụ

Nếu như ta thực hiện cùng lúc 1 gói các lệnh thì ta nên tạo ra một

shellfile_crontab.sh để thực hiện cùng nhiều lệnh (tương đương với file.bat trong

windows)

Ví dụ:

Bước 1: Ta tiến hành tạo một file file_crontab.sh có nội dung như sau bằng lệnh

vi (vim)

mkdir -p/root/test

cp/tmb/* /root/test

cd/root/test

taz -cvf test.tar/root/test/*

cp/root/test/test.tar/home/someuser/tmp

Bước 2: Tiến hành thiết lập cấu hình cho file crontab the trình tự các bước ở phần

trên rồi khởi động lại.

– Thêm dòng này vào file crontab

00 20 * * * root sh/path/file_crontab.sh

– Restart lại dịch vụ crontab

Một số lưu ý

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 137

– Khi thực hiện khai báo lệnh này ta lên chú ý về thời gian thực hiện, tránh thực

hiện những lệnh backup dữ liệu hay restart lại service trong thời gian nhạy cảm của hệ

thống (thời gian có nhiều tiến trình đang hoạt động, có nhiều kết nối từ bên ngoài vào).

Một số ví dụ về crontab nâng cao

0 0 * * * – chạy script mỗi 0:00 AM

0 * * * * – chạy script mỗi giờ (vào phút đầu tiên của

giờ)

*/15 * * * * – chạy script mỗi 15 ph

5 8 * * * – chạy script mỗi ngày vào 8h5ph sáng

5 8 15 * * – chạy script mỗi 8h5ph sang ngày 15 hằng tháng

5 8 * * 1 – chạy script mỗi thứ hai hàng tuần, 8h5ph

30 0 1 1,6,12 * chạy script vào 0h30ph sang ngày 1 của

tháng 1, tháng 6 và tháng 12.

0 20 * 10 1-5 8h tối mỗi ngày trong tuần(thứ 2 tới thứ 6)

của tháng 10

0 0 1,10,15 * * nửa đêm của ngày 1, 10 và 15 hằng tháng.

5,10 0 10 * 1 vào 12h5, 12h10 mỗi thứ hai và vào ngày 10

hằng tháng

1,21,41 * * * * echo “My crontab even run!”

Tóm lại:

Trong khi “cron” được sử dụng để thiết lập các nhiệm vụ thực thi định kì trên hệ

thống. Thì chương trình “at” chỉ sử dụng để lên lịch cho 1 hoặc nhiều chương trình lệnh

khác thực thi vào 1 thời điểm cụ thể 1 lần duy nhất, như một nội dung nhắc nhở đơn

giản hoặc một script phức tạp.

Còn “batch” dùng để lên lịch thực thi nhiệm vụ khi mà hệ load hệ thống rớt xuống

dưới 0.8, như vậy “batch” cũng hoạt động giống “at” nhưng có điều kiện kích hoạt là

load hệ thống dưới mức quy định.

Để sử dụng được “at” và “batch“, thì 2 phần mềm này cần được cài đặt trên hệ

thống. Sau đó phải đảm bảo dịch vụ “atd” phải được chạy. Nếu không chương trình sẽ

không chạy theo lịch, tức danh sách lịch thực thi đã có nhưng không có dịch vụ atd kiểm

tra thời gian để thực thi.

1

2

3

# rpm -q at

at-3.1.10-48.el6.x86_64

# service atd start

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 138

4 Starting atd: [ OK ]

2.4.4.1.6. Lệnh top.

Lệnh top cho phép hiển thị sự hoạt động của các tiến trình, đặc biệt là các thông

tin về tài nguyên hệ thống cũng như việc sử dụng tài nguyên đó của từng tiến trình. Với

lệnh đơn giản top, ta sẽ có:

Số % máy rảnh (idle) in đậm trên là rất quan trọng. Một máy rảnh dưới 50% là một

máy quá tải và cần được xem xét. Lệnh top còn cho phép theo dõi xem có tiến trình nào

chiếm dụng quá nhiều thời gian CPU cũng như truy cập đĩa không.

Ngoài ra, một số lệnh khác như vmstat. mpstat, sar, iostat... cũng cho phép xem

xét với các mục đích khác nhau hoạt động của máy chủ

2.4.5. Quản trị hệ thống Linux

2.4.5.1. Hệ thống /proc

Thư mục /proc là một thư mục rất quan trọng và đóng vai trò sống còn đối với hệ

thống Linux. Thư mục này là một thư mục ảo. Nói cách khác là thông tin chứa trong thư

mục này được tạo ra một cách động dựa trên các quá trình startup và shutdown của hệ

thống. Hơn thế nữa, filesystem còn thay đổi theo thời gian thực. Thông tin của hệ thống,

các tiến trình, các tham số của hệ thống đều thể hiện trong thư mục này.

Ta hãy làm một thử nghiệm sau:

Gọi vi chạy lên sau đó bấm Ctrl-Z để cho vi thành background job.

[root@starturn proc]# ps –ef |grep vi

root 11663 1359 0 22:35 pts/2 00:00:00 vim

Sau đó vào /proc ta sẽ thấy ngay có một thư mục là PID của vi: 11663

[root@starturn proc]# ls |grep 11663

11663

Sau đó ta cd vào 11663 sẽ thấy các trạng thái của vi đang chạy.

Và khi ta kết thúc vi, thư mục 11663 không còn tồn tại trong /proc nữa.

2.4.5.2. Các lệnh bảo trì khác

Lệnh free: hiển thị tổng dung lượng bộ nhớ chính và swap đang được dùng và còn

trống trong hệ thống cũng như shared memory và buffers được dùng bởi kernel.

[root@starturn 11663]# free

total used free shared buffers cached

Mem: 255452 247904 7548 0 8220 111312

-/+ buffers/cache: 128372 127080

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 139

Swap: 530136 0 530136

[root@starturn 11663]#

Lệnh df: hiển thị dung lượng đĩa còn trống trên hệ thống file. Đơn vị hiển thị là

1K block, với 512 byte cho 1 block

[root@starturn root]# df -k

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda1 10325748 2247448 7553780 23% /

none 127724 0 127724 0% /dev/shm

[root@starturn root]#

2.4.5.3. Lệnh sudo

Lệnh Sudo: Super user do, cho phép quản trị hệ thống nâng cấp quyền truy xuất

đến một tập lệnh quản trị hệ thống cho một vài users thường. Với sự trợ giúp của sudo,

người dùng có thể làm một số thao tác cấu hình hệ thống mà không cần phải có quyền

root.

Cấu hình sudo: /etc/sudoers

2.4.5.4. Hệ thống log file

/var/log/message

Cho biết các sự kiện diễn ra trong hệ thống bao gồm các hành động start, stop các

tiến trình, users login logout, các lỗi hệ thống,…

/var/log/secure

Lưu các thông tin thống kê login, logout và các ipaddress truy cập vào hệ thống

/var/log/boot

Lưu các thông tin khi hệ thống mới khởi động

2.4.6. Bài tập

2.4.6.1. Củng cố lý thuyết

1. So sánh sự khác biệt giữa các lệnh cron, at? Lệnh cron này 5,10 0 10 * 1 có ý nghĩa

như thế nào?

2. Công cụ quản lý tiến trình trong linux ps gồm những chức năng nào tương đương với

task manager trong windows?

3. Thiết lập một cấu hình boot menu grub cho một hệ thống có 4 hệ điều hành Centos,

Ubuntu, Suse, Fedora?

4. Một sinh viên phát biểu như sau: “một đĩa cứng được chi thành 5 phân vùng có tên

lần lượt là had, hdb, hdc, hdd, hde” phát biểu này đúng hay sai? Tại sao?

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 140

5. Một sinh viên phát biểu như sau: “một đĩa cứng do linux quản lý muốn cài bao nhiêu

hệ điều hành lên các phân vùng primary cũng được”. Phát biểu này sai ở điểm nào? Tại

sao?

2.4.6.2. Phần thực hành

4.4.6.1. Soạn thảo văn bản và tiện ích

1. Cài dhcp và mở tập tin dhcpd.conf.sample bằng vi

2. Hãy sửa thông tin như sau:

- Thay domain.org thành hotec.vn

- Thay thế đường mạng 192.168.0. thành 172.16.112.

- Thay thế 192.168.1.1 thành 172.16.112.1,8.8.8.8

- Sửa IP bắt đầu (128) thành 101 và IP kết thúc (254) thành 160

- Lưu tập tin với tên dhcpconfig.conf vào thư mục /tmp

- Kiểm tra thư mục /tmp xem có tập tin mới lưu không?

4.4.6.2. Dùng cron lập lịch

1. Thực hiện sao lưu cơ sở dữ liệu (database backup) vào 2 AM mỗi ngày:

0 2 * * * /bin/sh backup.sh

2. Đặt lịch thực thi tập tin script.sh hai lần mỗi ngày vào lúc 5 AM và 5PM (có thể

thêm nhiều mốc thời gian cho lịch thực thi)

0 5,17 * * * /scripts/script.sh

3. Đặt lịch thực thi tập tin script.sh mỗi phút (rất ít khi yêu cầu cron này, tuy nhiên

một số trường hợp đặc biệt cần cấu hình như vậy)

* * * * * /scripts/script.sh

4. Đặt lịch thực thi tập tin script.sh vào mỗi tuần vào 5 PM chủ nhật.

0 17 * * sun /scripts/script.sh

5. Đặt lịch thực thi tập tin monitor.sh mỗi 10 phút. (cron này có ích trong việc giám

sát)

*/10 * * * * /scripts/monitor.sh

6. Đặt lịch thực thi tập tin script.sh trong một số tháng được chỉ định (tháng 1, 5,

8).

* * * jan,may,aug * /script/script.sh

7. Đặt lịch thực thi tập tin script.sh trong một số ngày được chọn (ví dụ chủ nhật,

thứ sáu lúc 5 PM)

Chương 2: Sử dụng hệ điều hành Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 141

0 17 * * sun,fri /script/script.sh

8. Đặt lịch thực thi tập tin script.sh vào chủ nhật đầu tiên mỗi tháng.

0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh

9. Đặt lịch thực thi tập tin script.sh theo chu kỳ 4 giờ mỗi ngày.

0 */4 * * * /scripts/script.sh

10. Đặt lịch thực thi tập tin script.sh 2 lần mỗi ngày trong ngày chủ nhật và thứ

hai.

0 4,17 * * sun,mon /scripts/script.sh

* Tóm lược chương:

Trong chương này trình bày những vấn đề liên quan đến:

- Hệ thống tập tin gồm những vấn đề về quản lý hệ thống tập tin trong linux, cấu

trúc hệ thống tập tin

- Quản trị người dùng: tạo tài khoản người dùng, nhóm người dùng, các thao tác

điều chỉnh, xoá người dùng, quản lý người dùng và nhóm thông qua các tập tin text

trong thư mục /etc

- Làm việc với thư mục và tập tin: trình bày cấu trúc cây thư mục của linux, các

lệnh về thư mục, tập tin như tạo, xoá, sửa, copy, đi chuyển,… bên cạnh đó còn đề cập

đến các lệnh nén, giải nén, kết nối (mount) lên hệ thống tập tin.

- Các vấn đề khác: như trình soạn thảo văn bản, quản trị hệ thống, lập lịch, quản lý

tiến trình, cấu hình khởi động đa hệ điều hành, quản lý đĩa cứng và tự động hoá công

việc bằng cách lập lịch.

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 142

Chương 3. CẤU HÌNH MẠNG VÀ CHIA SẺ TÀI NGUYÊN TRÊN

LINUX

Giới thiệu chương

Trong môi trường cộng tác ngày nay, mạng là một phần rất quan trọng trong các

hoạt động hàng ngày. Máy tính nối mạng là một chức năng không thể thiếu và không

còn xa lạ đối với mỗi người dùng máy tính để làm việc trong mọi lĩnh vực. Trong chương

này tác giả trình bày hai phần cơ bản của máy tính trên mạng. Kết nối mạng bằng địa

chỉ IP và chia sẻ tập tin cho các máy trong môi trường Linux và mạng hỗn hợp .

Mục tiêu: học xong chương này, sinh viên có thể

- Trình bày được các phương cấu hình mạng cho một máy tính

- Thực hiện được việc cấu hình (hostname, IP, firewall) trên máy tính linux.

- Trình bày được vai trò và nguyên lý của NFS trong mạng linux

- Trình bày được vai trò của SAMBA trong việc chia sẻ thư mục giữa linux và

windows

- Cài đặt và cấu hình nfs trên một máy server linux. Kiểm thử được các quyền

truy xuất trên client linux.

- Cài đặt và cấu hình samba trên một máy server linux. Kiểm thử được các

quyền truy xuất trên client windows.

- Cẩn thận và chính xác trong việc thiết lập cấu hình mạng cho máy tính linux.

- Cẩn thận trong việc phân quyền và chia sẻ thư mục qua nfs.

- Cẩn thận trong việc phân quyền và chia sẻ thư mục qua samba..

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 143

Bài 1. CẤU HÌNH MẠNG VÀ QUẢN TRỊ HỆ THỐNG

Bài 3.1. TỔNG QUAN VỀ HỆ ĐIỀU HÀNH VÀ UNIX

3.1.1. Cấu hình mạng

3.1.1.1. Lệnh ifconfig

Lệnh ifconfig được sử dụng trong quá trình boot hệ thống để cấu hình các trang

thiết bị mạng. Sau đó, trong quá trình vận hành, ifconfig được sử dụng cho debug, hoặc

để cho người quản trị hệ thống thay đổi cấu hình khi cần thiết.

Lệnh ifconfig không có tùy chọn dùng để hiển thị cấu hình hiện tại của máy.

[root@starturn root]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:C0:26:21:96:99

inet addr:192.168.10.10 Bcast:192.168.10.255

Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:9171 errors:0 dropped:0 overruns:0 frame:0

TX packets:8889 errors:0 dropped:0 overruns:0

carrier:0

collisions:0 txqueuelen:100

RX bytes:2471145 (2.3 Mb) TX bytes:1869592 (1.7 Mb)

Interrupt:12 Base address:0x6000

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:92 errors:0 dropped:0 overruns:0 frame:0

TX packets:92 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:6608 (6.4 Kb) TX bytes:6608 (6.4 Kb)

Ví dụ: Để gán địa chỉ IP 193.105.106.10 cho card mạng Ethernet đầu tiên ta dùng

lệnh ifconfig như sau:

[root@Cen01]#ifconfig eth0 193.105.106.10 netmask

255.255.255.0 broadcast 192.105.106.255

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 144

Lệnh ifconfig chỉ đổi IP tạm thời trong phiên làm việc:

Nếu bạn muốn, bạn có thể thay đổi địa chỉ IP của các giao diện card mạng nào

bằng cách sử dụng lệnh ifconfig

Cú pháp:

ifconfig <interface> <ip_address> netmask <subnet mask> [up/down]

Trong đó:

- interface: là card mạng có tên lưu trữ trong dev theo quy định của linux, ví

dụ: eth0, eth1, eth2,…

- ip_address: là địa chỉ IP cụ thể, nằm trên đường mạng mà máy tính kết nối

vào

- subnet mask: là địa chỉ mask của đường mạng

Ví dụ: đặt địa chỉ ip 10.0.0.1/255.255.255.0 cho card mạng eth0

[root@Cen01]# ifconfig eth0 10.0.0.1 netmask 255.255.255.0

up

Các bạn để ý, ”up” ở cuối câu lệnh ở đây nhằm kích hoạt giao diện mạng. Để thực

hiện điều này thường xuyên mỗi khi bạn khởi động sẽ cần thêm lệnh này trong file

/etc/rc.local của bạn. Nó sẽ giúp bạn kích hoạt giao diện NIC mỗi khi bạn khởi động hệ

thống.

Tuy nhiên, khi muốn đánh lại IP động cho card mạng ta dùng lệnh:

o #ifdown <interface> để xóa ip cũ đang thiết lập

o #ifup <interface> xin cấp lại IP động từ máy chủ cấp IP hoặc trong câu

lệnh đánh IP

Thiết lập một alias cho card mạng

Linux cho phép bạn sử dụng bí danh (alias) cho card mạng, tức là cho phép bạn có

nhiều địa chỉ IP cho cùng một card vật lý. Kết quả nhận được gần giống như bạn có gắn

nhiều card vật lý lên máy. Do đó, bạn có thể dùng một card để nối với nhiều mạng logic

khác nhau. Cú pháp của lệnh này là:

[root@Cen01]# ifconfig eth0:0 208.148.45.58 netmask

255.255.255.248 broadcast 208.148.45.255 up

Các tập tin cấu hình của kết nối mạng là /etc/sysconfig/network-scripts/ifcfg-

ethX với X là 0,1... hay 0:0, 0:1.... Bạn có thể thay đổi cấu hình kết nối mạng bằng cách

sửa đổi lại tập tin này bằng một chương trình soạn thảo text như mc chẳng hạn, sau đó

khởi động lại kết nối mạng bằng

/etc/rc.d/init.d/network restart

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 145

[root@starturn ]# ifconfig eth0:0 172.16.10.100

netmask 255.255.255.0

[root@starturn ]# ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:C0:26:21:96:99

inet addr:192.168.10.10 Bcast:192.168.10.255

Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:10345 errors:0 dropped:0 overruns:0 frame:0

TX packets:9994 errors:0 dropped:0 overruns:0

carrier:0

collisions:0 txqueuelen:100

RX bytes:2606998 (2.4 Mb) TX bytes:2256640 (2.1 Mb)

Interrupt:12 Base address:0x6000

eth0:0 Link encap:Ethernet HWaddr 00:C0:26:21:96:99

inet addr:172.16.10.100 Bcast:172.16.255.255

Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Interrupt:12 Base address:0x6000

[root@starturn root]#

b) Start và Stop 1 card mạng:

[root@Cen01]# ifup eth0

[root@Cen01]# ifdown eth0

3.1.1.2. Sử dụng setup

Phương pháp này chỉ tồn tại trong một số distro linux với tên gọi khác nhau,

trong Centos lệnh cấu hình mạng theo quy trình là setup

#setup

Xuất hiện giao diện như hình bên dưới Chọn dòng “Network Configuration”

(enter)

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 146

Hình 3.1.1. Setup-Chọn công cụ thao tác (Network Configuration)

Cửa sổ con hiện ra có 2 công cụ set IP cho card mạng, Chọn dòng “Edit a device

params” để đánh IP và GW (enter)

Hình 3.1.2. Thiết lập IP và Default Gateway

Nếu máy tính có 1 card mạng thì kết quả như giao diện bên dưới (trường hợp có

1 card mạng nhưng có 2 dòng thì không cấu hình dòng có chữ .bak)

Hình 3.1.3. Chọn dòng eth0 –card muốn đánh IP

Giao diện gán IP và default gateway cho card mạng như sau

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 147

Hình 3.1.4. Cấu hình IP và Gateway cho thiết bị

Tiến trình đánh IP cho card mạng lần lượt như sau:

Bỏ dấu * trong [ ] bằng cách di chuyển dấu chớp xuống ô [*] gõ thanh dài

Dời xuống dòng Static IP đánh IP cho máy

Xuống dòng netmask đánh vào mask của đường mạng.

Xuống Def GW: đánh GW nếu có yêu cầu.

Bấm tab xuống OK, enter

Trở về màn hình chọn thiết bị

Hình 3.1.5. Màn hình chọn thiết bị sau khi gán xong IP, Gateway

Bấm tab xuống nút save, enter. Lên một cấp về màn hình chọn hoạt động, dời xuống “Edit DNS configuration”

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 148

Hình 3.1.6. Chọn công cụ cấu hình DNS

Hình 3.1.7. Gán hostname, DNS cho card mạng

Kết thúc quá trình gán IP, DNS, Gateway. Bấm Tab Xuống Save&Quit

Hình 3.1.8. Hoàn thành quá trình gán IP, DNS, Gateway

Chọn Quit trong màn hình tiếp theo.

* Sau khi gán IP, Gateway, DNS xong tiến hành khởi động dịch vụ mạng

#service network restart

Kiểm thử: Dùng lệnh ifconfig để kiểm tra địa chỉ vừa đánh cho card mạng

- Cho vào hostname, Primary

DNS (trùng với IP)

- Đánh Secondary DNS nếu

cần.

- Bấm Tab xuống Ok, enter

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 149

#ifconfig eth0

3.1.1.3. Cấu hình card mạng bằng các tập tin

1.1.3.1. Cấu hình IP tĩnh cho Ubuntu Server

File cấu hình IP cho các card mạng của Ubuntu Server nằm tại

/etc/network/interfaces.

Nội dung ban đầu sẽ như sau

1

2

3 4 5 6 7 8 9

10

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet dhcp

Để kiểm tra địa chỉ IP được gán cho card mạng có 2 cách:

- Trên Dashboard

- Sử dụng câu lệnh trên linux (ip a hoặc ifconfig)

Ví dụ ta muốn cấu hình địa chỉ IP tĩnh cho cả 2 card mạng, ta thực hiện sửa file

cấu hình như sau:

1 # This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface 2 auto lo 3 iface lo inet loopback

4 auto eth0 5 iface eth0 inet static 6 address 10.5.55.136 7 netmask 255.255.255.0 8 9 auto eth1 10 iface eth1 inet static 11 address 103.56.158.174 12 netmask 255.255.255.0 13 gateway 103.56.158.1

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 150

14 dns-nameservers 8.8.8.8 Giải thích file cấu hình:

Phần này là cấu hình cho card loopback. Mặc định với tất cả các server:

1 #The loopback network interface

2 auto lo

3 iface lo inet loopback

Phần cấu hình IP tĩnh cho interface eth0:

1 auto eth0

2 iface eth0 inet static

3 address 10.5.55.136 4 netmask 255.255.255.0

Dòng 1: auto eth0 sẽ cấu hình cho interface eth0 khởi động cùng hệ thống

Dòng 2: iface eth0 inet static tạo 1 đoạn cấu hình tĩnh với tên là eth0 trên card

Ethernet của chúng ta. Các dòng tiếp theo là phần cấu hình IP cho interface:

address: địa chỉ chúng ta muốn đặt cho server

netmask: subnet mask của dải mạng chúng ta sử dụng

Phần cấu hình IP tĩnh cho interface eth1:

1

2

3

4

5

6

auto eth1

iface eth1 inet static

address 103.56.158.174

netmask 255.255.255.0

gateway 103.56.158.1

dns-nameservers 8.8.8.8

Các khai báo giống eth0, ngoài ra:

gateway: default gateway cho server

dns-nameserver: DNS server sẽ dùng cho server để phân giải internet. Ở đây chọn

DNS server của google.

Sau khi sử file cài đặt ta lưu lại thiết lập và sử dụng câu lệnh sau để khởi động lại

card mạng ta vừa thiết lập:

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 151

sudo ifdown <interface> && sudo ifup <interface>

Với ví dụ trên ta sẽ chạy lệnh

sudo ifdown eth1 && sudo ifup eth1

sudo ifdown eth0 && sudo ifup eth0

hoặc

sudo ifdown -a && sudo ifup -a

Và kiểm tra lại bằng lệnh ip a

3.1.1.3.2. Cấu hình IP tĩnh cho CentOS

Đối với các hệ điều hành CentOS thì các file cấu hình các card mạng được tách ra

mỗi một card mạng một file. Nằm tại foler /etc/sysconfig/network-scripts/

Tên của file cấu hình sẽ có cú pháp ifcfg-interface với interface là tên của card

mạng, Ví dụ file cấu hình cho card eth0 là ifcfg-eth0

Ví dụ ta có file cấu hình cho card eth0 ban đầu như sau

1

2

3

4

5

TYPE="Ethernet"

DEVICE="eth0"

ONBOOT="yes"

BOOTPROTO="dhcp"

NM_CONTROLLED="no"

Để đặt địa chỉ IP 10.20.0.13 subnetmask 255.255.255.0 cho card mạng eth0 ta sửa

file ifcfg-eth0 như sau

1 TYPE="Ethernet"

2 DEVICE="eth0" # Tên của interface

3 ONBOOT="yes" # Khởi động interface cùng server

4 BOOTPROTO="static" # Phương thức này là cấu hình IP tĩnh

5 NM_CONTROLLED="no"

6 IPADDR="10.20.0.13" # IP tĩnh chúng ta muốn đặt cho server

7 NETMASK="255.255.255.0" #Subnetmask của dải mạng chúng sử dụng

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 152

Sau đó ta lưu lại và khởi động lại card mạng eth0

ifdown eth0 && ifup eth0

hoặc khởi động lại network service

service network restart

Lưu ý: Đối với CentOS 7 ta sử dụng lệnh systemctl restart network.service

Nếu ta cấu hình trên card mạng ra internet (eth1) ta cần phải đặt gateway cho card

mạng bằng cách thêm dòng sau vào trong file cấu hình

GATEWAY=<IP_gateway>

Với IP_gateway là địa chỉ IP của gateway

Nếu ta muốn đặt DNS Server tĩnh trên card mạng thì thêm dòng sau:

DNS1=<IP_DNS_Server>

Hoặc DNS Server thứ 2

DNS2=<IP_DNS_Server>

Với IP_DNS_Server là địa chỉ IP của DNS Server.

Ví dụ

DNS1=8.8.8.8

Hoặc

1

2

DNS1=8.8.8.8

DNS2=8.8.4.4

3.1.1.4. Lệnh thay đổi một số thông số mạng:

3.1.1.4.1. Thay đổi default gateway:

[root@Cen01]# route add default gw 10.30.0.1 eth0

[root@Cen01]# route delete default gw 10.30.0.1 eth0

Nếu muốn save lại default gw cho eth0 thì cần cập nhật nội dung của 1 trong 2

file hoặc cả 2:

[root@Cen01]# vi /etc/sysconfig/network

Hoặc:

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 153

[root@Cen01]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Với nội dung sau:

NETWORK=yes

HOSTNAME=localhost.localdomain

GATEWAYE=10.30.0.1

3.1.1.4.2. Thêm mạng con:

[root@Cen01]# route add -net 10.30.1.0 netmask

255.255.255.0 eth0

IP gán cho gateway là lớp A, nhưng do dùng subnet 24 bit nên

3.1.1.4.3. Tạo một alias (bí danh) cho eth0:

[root@Cen01]# ifconfig eth0:0 192.168.1.100

Lệnh này đánh ip tạm thời cho card eth0 với bí danh eth0:0

3.1.1.4.4. Xem thông tin mạng:

[root@Cen01]# ifconfig -a

[root@Cen01]# arp -a

[root@Cen01]# netstat -nr (hoặc -i hoặc -an)

- Ví dụ: Tìm ra số lượng các Connection được thiết lập:

[root@Cen01]# netstat -an|grep tcp|egrep -i

'established|timewait' | wc -l

[root@Cen01]# route

[root@Cen01]# ip addr show

[root@Cen01]# ip route show 0/0

[root@Cen01]# ipvsadm -L -n #Nếu đã cài ipvsadm (yum

install ipvsadm)

3.1.2. Các tiện ích trong mạng

3.1.2.3. Lệnh ping

Ứng dụng của lệnh này là để thử xem 2 máy có kết nối được với nhau chưa. Cú

pháp cơ bản của lệnh rất đơn giản là ping địa_chỉ_IP_máy_đích. Ví dụ như

[root@starturn root]# ping starturn

PING starturn (127.0.0.1) from 127.0.0.1: 56(84) bytes of

data.

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 154

64 bytes from starturn (127.0.0.1): icmp_seq=1 ttl=64

time=0.162 ms

64 bytes from starturn (127.0.0.1): icmp_seq=2 ttl=64

time=0.072 ms

64 bytes from starturn (127.0.0.1): icmp_seq=3 ttl=64

time=0.068 ms

64 bytes from starturn (127.0.0.1): icmp_seq=4 ttl=64

time=0.067 ms

--- starturn ping statistics ---

4 packets transmitted, 4 received, 0% loss, time 3000ms

rtt min/avg/max/mdev = 0.067/0.092/0.162/0.040 ms

[root@starturn root]#

Nếu 2 máy có thể liên lạc được với nhau, chúng ta sẽ biết thêm thời gian trả lời để

cho biết sự thông thoáng về mạng giữa 2 máy. Có thể nói, ping phải chạy trước tiên

trước tất cả các hoạt động mạng khác.

Chú ý: Nên sử dụng ping –n để tránh trục trặc do dịch vụ DNS làm ảnh hưởng tới

việc kết quả thử kết nối mạng.

3.1.2.4. Lệnh route

Lệnh route không có tùy chọn (option) cho phép hiển thị bảng dẫn đường hiện tại

của kernel (Lệnh netstat –r cũng có tác dụng tương tự)

[root@starturn root]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use

Iface

192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo

0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0

Để chỉ ra rằng card mạng eth0 được nối với một mạng 208.148.45.56 ta dùng lệnh

route như sau:

[root@Cen01]# route add -net 208.148.45.56 eth0

Còn nếu chúng ta muốn sử dụng bí danh của card mạng để nối vào một mạng logic

khác, ta có thể sử dụng lệnh

[root@Cen01]# route add -net 193.105.106.0 eth0:0

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 155

Công tác cuối cùng là phải chỉ ra các địa chỉ của gateway mặc định.

[root@Cen01]# route add default gw 193.105.106.1 metric 1

Biết sử dụng thành thạo cú pháp của 2 lệnh ifconfig và route rất quan trọng, nó

cho phép các cán bộ quản trị thay đổi cấu hình kết nối mạng của một server một cách

nhanh chóng và không phải khởi động lại máy. Vì vậy, server luôn sẵn sàng. Bạn cũng

có thể sử dụng tiện ích netconfig để cấu hình liên kết mạng nếu chưa thành thạo nhiều

cú pháp của các lệnh trên.

3.1.2.5. Lệnh Traceroute

Đây cũng là lệnh cho phép chẩn đoán hoạt động của mạng. Cú pháp của lệnh giống

như lệnh ping nhưng kết quả không chỉ dừng ở sự trả lời mà còn chỉ ra các thiết bị trung

gian nằm giữa 2 máy.

[root@Cen01 root]# traceroute mail.yahoo.com

traceroute to login.yahoo.akadns.net (66.163.171.128),

30 hops max, 38 byte packets

1 ldap.citd.edu.vn (172.16.10.3) 0.279 ms 0.217 ms

0.149 ms

2 172.16.8.1 (172.16.8.1) 3.454 ms 3.198 ms 3.922 ms

3 172.16.2.1 (172.16.2.1) 3.620 ms 3.720 ms 3.675 ms

4 203.160.0.9 (203.160.0.9) 438.633 ms 323.406 ms

303.153 ms

5 203.162.3.134 (203.162.3.134) 249.784 ms 367.909 ms

473.109 ms

6 207.176.97.105 (207.176.97.105) 333.936 ms 340.832 ms

434.777 ms

7 207.176.96.65 (207.176.96.65) 500.847 ms 490.106 ms

390.566 ms

8 i-3-1.sjc-core01.net.reach.com (202.84.143.161)

639.661 ms 570.107 ms 768.673 ms

9 i-13-0.paix-core01.net.reach.com (202.84.251.49)

480.421 ms 554.574 ms 378.577 ms

[root@Cen01 root]#

Lệnh traceroute là một công cụ hiệu quả cho phép ta phát hiện lỗi trong quá trình

phân đường (IP routing). Ví dụ kết nối từ A -> C có trục trặc và với traceroute tới C từ

máy A, ta có thể phát hiện ra máy A kết nối máy B, rồi máy B lại kết nối máy A... do

cấu hình routing của A và B sai.

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 156

3.1.2.6. Lệnh curl

Curl là một công cụ để truy cập web page thông qua command line. Curl support

những protocal khác nhau như FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP,

LDAP, POP3, RTSP, SMTP…

Mặc định thì Curl chưa có sẵn trong Linux. Để cài đặt Curl từ ubuntu repository

chúng ta sử dụng lệnh

[root@Cen01]# sudo apt-get install curl

Và tiến hành cài đặt những lib có liên quan

[root@Cen01]# sudo apt-get install libc6 libcurl3 zlib1g

Và chúng ta có thể curl với những lệnh thường xuyên sử dụng dưới đây

[root@Cen01]# curl http://www.google.com

Lấy về nội dung của website www.google.com

3.1.3. Bài tập

3.1.3.1. Củng cố lý thuyết

1. Phát biểu như sau: “lệnh ifconfig trong linux tương đương với lệnh ipconfig trong

Windows”? Em hãy nêu quan điểm của mình và chứng minh cho luận điểm đó?

2. Lệnh ping trong linux khác lệnh ping trong windows ở điểm nào? Muốn cho lệnh

ping www.zing.vn dừng lại ở với số lượng gói tin kiểm thử là 10 ta dùng lệnh ping

www.zing.vn -10, lệnh này chạy như thế nào? Tạo sao?

3. Muốn thêm default gateway cho card mạng etho ta dùng lệnh gì? Lệnh này có chung

đặc điển với lệnh gán ip bằng ifconfig hay không? Giải thích.

3.1.3.2. Phần thực hành

Xây dựng mô hình mạng như sau:

CEN1NFS Server

CEN2CEN3

.1.2

.3

Giá trị của x là số máy + 100 (trong bài dùng máy 1 nên x=101)

1. Thiết lập IP cho máy Cen01 bằng lệnh ifconfig với IP cho card mạng eth0 là 192.168.101.1/24

2. Thêm alias cho card mạng thứ 2 (eth0:0) là 172.16.101.1/24

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 157

3. Điều chỉnh GW cho card mạng eth0 hướng về 192.168.101.254. Kiểm tra lại IP vừa mới gán cho 2 card mạng

4. Trên máy Cen02 đánh IP bằng lệnh Setup với thông tin như sau:

a. IP: 192.168.101.2/24

b. GW: 192.168.101.254

c. DNS: 192.168.101.99

5. Khởi động lại dịch vụ mạng và kiểm tra IP vừa mới gán

6. Từ máy 2: thực hiện ping để tìm đến 2 host Cen01 và Cen03

7. Tại máy Cen03 hãy thực hiện

a. Mở file cấu hình IP ifcfg-eth0 để cấu hình IP cho eth0: 192.168.101.3/24; GW: 192.168.101.254;

b. Mở file cấu hình DNS (resolv) 192.168.101.99

c. Mở file cấu hình mạng (network) để thiết lập Ipv4 tĩnh

8. Khởi động lại dịch vụ mạng, ping qua máy Cen01 và Cen02 để kiểm tra.

9. Sao chép tập tin ifcfg-eth0 thành ifcfg-eth0:0, dùng trình soạn thảo cấu hình để tạo ra alias cho card mạng eth0 với IP 172.16.101.3/24

10. Khởi động dịch vụ và tiến hành ping qua 172.16.101.1 để kiểm tra.

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 158

Bài 2. CHIA SẺ TÀI NGUYÊN

Bài 3.2. CHIA SẺ TÀI NGUYÊN

3.2.1. Cấu hình Network File System (NFS)

3.2.1.1. Giới thiệu

NFS là giao thức chia sẻ file phổ biến trên UNIX. Nó cho phép mount một thư

mục trên một máy tính từ xa vào một thư mục cục bộ. Ví dụ trong các hệ thống cluster,

thư mục /home thường được đặt trên một NFS server và tất cả các node mount thư mục

này về /home cục bộ. Điều đó cho phép chúng ta có một cái nhìn nhất quán về thư mục

chủ, mọi người dùng khi log-in vào bất cứ node nào cũng truy cập được vào thư mục

chình của mình.

Trong bài này sẽ trình bày cách cấu hình NFS server và NFS client. Chú ý: các

lệnh trong bài viết này được thực hiện với tài khoản root (hoặc dùng sudo)

3.2.1.2. NFS server Một số điểm quan trọng:

- NFS sử dụng RPC của Sun, do đó nó sử dụng portmap trên cổng 111

- NFS server được xây dựng thành hai thành phần chính là

rpc.nfsd: tiến trình NFS server

rpc.mountd: tiến trình quản lý các yêu cầu mount

Để NFS server có thể hoạt động được, ta cần khởi động hai tiến trình kể trên và

tiến trình portmap. NFS server sử dụng file cấu hình /etc/exports để lưu thông tin về

các thư mục chia sẻ và máy có quyền truy cập tới các thư mục đó. Ví dụ ta muốn chia

sẻ thư mục chủ /home cho máy node1, ta thêm dòng sau vào /etc/exports

/home node1(rw,no_root_squash)

Ở phần tên của host, ta có thể sử dụng địa chỉ IP hoặc sử dụng tên host đầy đủ.

Ngoài ra, ta cũng có thể sử dụng dạng rút gọn cho nhiều host trên cùng một dòng như

các ví dụ sau đây: *.site.com hay 172.16.0.0/12 hoặc 172.16.0.0/255.240.0.0.

Các tùy chọn phổ biến:

ro; chỉ đọc; rw: đọc và ghi

Theo mặc định, no_root_squash, thì root tại máy client cũng là root tại máy server,

root_squash cho phép máy chủ chạy NFS server coi root trên client như một người

dùng ngoài hệ thống (nobody), all_squash coi mọi người dùng trên máy client là một

người dùng ngoài hệ thông

Sau khi chỉnh sửa file exports xong, khởi động lại NFS và áp dụng cấu hình mới

như sau:

# /etc/init.d/nfs restart

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 159

# exportfs

3.2.1.3. NFS client NFS client mount thư mục trên NFS server vào một thư mục cục bộ bằng lệnh sau:

# mount server:/share/dir /mount/point -o option,option

Các tùy chọn gồm có:

- soft: theo mặc định, kernel sẽ khóa một tiến trình truy cập NFS server và đặt

nó vào trạng thái disk wait state (D) nếu NFS server bị lỗi. Với tùy chọn soft,

kernel sẽ thông báo lỗi tới tiến trình nếu NFS server không có hồi đáp sau một

khoảng thời gian được thiết lập bởi tham số timeout, ví dụ timeout=60

- hard: nếu NFS server không hồi đáp thì tiến trình truy cập sẽ ở trong trạng

thái disk wait state và chỉ bị ngắt nếu hệ thống file được mount với tùy chọn

intr

- async: mọi thay đổi được ghi vào NFS server bởi tiến trình nền (không đồng

bộ với tiến trình ghi)

- nolock: không chạy NFS lock daemon

- Thông thường, ta sửa file /etc/fstab để việc mount có thể được thực hiện tự

động bằng lênh mount. Trong ví dụ trên, giả sử tên của máy chủ là head, ta

thêm một dòng sau vào file /etc/fstab của máy node1 để node1 mount thư

mục /home trên máy chủ về thư mục /home nội bộ

- head:/home /home nfs defaults 0 0

Tiếp theo, chạy mount -a để mount các thư mục trong /etc/fstab và chạy df để

kiểm tra

# mount –a

# df -h

Trong kết quả của lệnh df, ta sẽ thấy một dòng tương tự như sau:

head:/home 111G 70G 36G 67% /home

Điều này chứng tỏ việc mount đã thành công.

3.2.1.4. Cấu hình NFS

Cấu hình NFS server: File dùng để cấu hình NFS là /etc/exports

- Tạo một thư mục chia sẻ như sau:

[root@CentOS1 ~]# mkdir /share

- Tạo một file trong thư mục /share:

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 160

[root@CentOS1 ~]# touch /share/test.txt

- Cấp quyền truy cập vào thư mục /share:

[root@CentOS1 ~]# chmod 766 -R /share/

- Sửa file /etc/exports thêm vào dòng sau:

[root@CentOS1 ~]# vim /etc/exports

- Thêm vào Rules sau:

/NFS 192.168.1.0/255.255.255.0(rw,sync,no_root_squash)

Gồm có các quyền truy cập thông dụng như sau:

secure : Port từ client requests phải nhỏ hơn 1024

ro : Read only

rw : Read – write

noaccess : Denied access

root_squash : Ngăn remote root users

no_root_squash : Cho phép remote root users

– Khởi động lại daemon nfs:

[root@CentOS1 ~]# service nfs restart

Lưu ý: sau khi thay đổi file /etc/exports bạn phải restart daemon nfs hay dùng các lệnh sau:

exportfs –a : Reload lại toàn bộ cấu hình cho NFS

exportfs –r : Reload lại những thay đổi trong cấu hình cho NFS

- Do NFS cần mở một số port khi chạy như (111, 2049..) nên ta cần cấu hình firewall mở các port này hay tắt firewall:

[root@CentOS1 ~]# service iptables stop

3.2.1.5. Cấu hình NFS client:

- Tạo thư mục:

[root@CentOS2 ~]# mkdir /mnt/nfs

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 161

- Mount NFS file:

[root@CentOS2 ~]# mount -t nfs 192.168.100.135:/share /mnt/nfs/

Trong đó: + 192.168.100.135: Địa chỉ IP của NFS Server.

+ /share: Thư mục chia sẻ trên NFS Server.

+ /mnt/nfs: Điểm mount ở NFS Client.

- Kiểm tra các mount point trên hệ thống:

[root@CentOS1 ~]# mount

Allow/Deny một kết nối đến NFS server:

Sử dụng file /etc/hosts.allow và /etc/hosts.deny để permit kết nối đến NFS server

– Cấm tất cả các clients truy cập vào NFS server:

[root@CentOS1 ~]# vim /etc/hosts.deny

Thêm vào dòng: portmap : ALL

- Cho phép server có ip 192.168.100.52 truy cập đến NFS server:

[root@CentOS1 ~]# vim /etc/hosts.allow

Thêm vào dòng: portmap : 192.168.100.52

Ta tiến hành Test thử bằng kết nối chia sẻ File từ địa chỉ IP 192.168.100.52 tới

NFS Server.

3.2.1.6. Bài tập NFS

1. Cho mô hình sau:

Dãy IP như đã cho trong hình

CEN1NFS Server

CEN2CEN3

.1.2

.3

Đánh IP cho các máy theo mô hình

CEN1: 192.168.x.1/24

Tắt tường lửa: #iptables -F

CEN2: 192.168.x.2/24

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 162

CEN3: 192.168.x.3/24

ping từ máy CEN1 qua CEN2 và CEN3

B. 1. Chuẩn bị NFS server (Cen01)

– Tạo thư mục soft và data trong /pub

#mkdir -p /pub/soft

#mkdir /pub/data

– Copy các file có chữ tab trong /etc sang data và các file bắt đầu bằng a,b, c,d và

kết thúc .conf trong thư mục /etc sang soft.

#cp /etc/[a-d]*.conf /pub/soft

#cp /etc/*tab /pub/data

– Thực hiện “Chia sẻ” thư mục soft (quyền read-only) và data (quyền read write)

cho toàn hệ thống

B.2. Cấu hình file exports (trên máy CEN1)

– Dùng lệnh #gedit /etc/exports (vắn tắc: gedi /e/expo)

/pub/soft 192.168.x.0/24(ro,sync)

/pub/data 192.168.x.0/24(rw,sync)

– Lưu file, thực hiện lệnh đọc lại file exports

#exportfs –a

– Khởi động dịch vụ

#service nfs start

#service nfs restart

** Khởi động dịch vụ khi HĐH khởi động:

#chkconfig nfs on

B 3. Chuẩn bị và truy cập 2 máy client và kết nối vào source đã share

* Máy Linux2

– Tạo 2 thư mục pmem và dlieu trong /mnt

#mkdir /mnt/pmem

#mkdir /mnt/dlieu

– Kết nối 2 thư mục trên vào các thư mục tương ứng: soft pmem và data

dlieu

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 163

#mount –t nfs 192.168.x.1:/pub/soft /mnt/phanmen

#mount –t nfs 192.168.x.1:/pub/data /mnt/dlieu

– Dùng lệnh xem nội dung thư mục pmem và dlieu, nếu kết quả là những file đã

copy ở trên là đúng.

#ls -l /mnt/phanmen có các file kiểu .conf

#ls -l /mnt/dlieu có các file co chữ tab

– Tạo trong dữ liệu một thư mục có tên khachmoi

#mkdir /mnt/dlieu/khachmoi

** Nếu tạo không được quay về máy NFS Server tiến hành phân quyền cho thư

mục data như sau:

#chmod 777 /pub/data

– Chuyển sang máy Linux2, dùng lại lệnh tạo thư mục #mkdir

/mnt/dlieu/khachmoi

Nếu không báo lỗi, dùng lệnh xem nội dung các thư mục dlieu (#ls -l /mnt/dlieu),

xem sự thay đổi nội dung có thư mục khachmoi là ĐÚNG.

– Cắt kết nối và xem lại nội dung thư mục pmem và dlieu.

#umount /mnt/dlieu

#umount /mnt/pmem

Dùng lại 2 lệnh ls phía trên.

* Máy Linux3: Kết nối tự động (TRÊN MÁY CEN3)

– Tạo 2 thư mục sw và dt trong /mnt

– Sửa file fstab để cho kết nối tự động vào 2 thư mục source trên máy NFS Server.

Bổ sung vào cuối file /etc/fstab nội dung sau: (note: mỗi nhóm cách nhau dấu trắng)

192.168.x.1:/pub/soft /mnt/sw nfs soft,nfsvers=2 0 0

192.168.x.1:/pub/data /mnt/dt nfs soft,nfsvers=2 0 0

Khởi động mount bằng fstab:

#mount –a

– Dùng lệnh ls liệt kê lần lượt các thư mục sw và dt trên máy Linux3

#ls -l /mnt/sw có các file kiểu .conf

#ls -l /mnt/dt có các file tab và thư mục khachmoi

#rm -f /mnt/dt/*tab

#ls -l /mnt/dt chỉ còn thư mục khachmoi

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 164

3.2.2. Dịch vụ samba

Samba là dịch vụ của hệ điều hành Linux, chạy trên nền giao thức SMB (Server

Message Block) cho phép chia sẻ file hệ thống, máy in với các máy chạy Win95, 98

hoặc NT. SMB là giao thức được các hệ điều hành của Microsoft sử dụng để chia sẻ dữ

liệu qua mạng. Với Linux Samba cũng dựa vào giao thức SMB để viết ra một số tiến

trình điển hình như smbd, nmbd, để “nói chuyện “ với các hệ điều hành của Microsoft

để người dùng có thể làm việc với máy Linux qua Network Neighborhood.

3.2.2.1. Cài đặt

Gói phần mềm Samba có thể lấy từ đĩa CD của hệ điều hành RedHat hoặc

download từ website www.Samba.org. Phiên bản của Samba cũng được thay đổi thường

xuyên, hiện đã có phiên bản 2.2.1. Bài viết này lấy phiên bản 2.0.7 có sẵn trên đĩa

Redhat 7.1 làm ví dụ. Gói Samba trên đĩa RedHat được đóng gói theo chuẩn RPM

(Redhat Package Manager) và được lưu tại thư mục /mnt/cdrom/Redhat/RPMS/. Các

bước cài đặt như sau:

# mount /mnt/cdrom ; mount file system của ổ CD

#cd /mnt/cdrom/Redhat/RPMS

# rpm -Uvh Samba-common-2.0.7-8.i386.rpm

# rpm -Uvh Samba-2.0.7-8.i386.rpm

# rpm -Uvh Samba-client-2.0.7-8.i386.rpm

3.2.2.2. Cấu hình

File cấu hình chính của Samba là smb.conf được cất trong thư mục /etc/Samba.

Trong file này có hai kiểu chú thích được xác định bằng dấu (;) và (#) đặt ở đầu các

dòng. Dấu (#) là dấu chú thích thực và bạn không thể bỏ dấu này đi được nhưng dấu (;)

là dấu chú thích xác định thuộc tính ở hàng tương ứng có được chọn hay không, kiểu

chú thích này có thể bỏ đi được.

Ví dụ trong file này có đoạn:

;encrypt password =yes

Nếu bỏ dấu (;) đi thì Samba sẽ hiểu rằng mật khẩu sẽ được mã hóa (encrypt), ngược

lại mật khẩu khi truyền đi sẽ được để ở dạng không mã hoá (clear text).

Để việc thay đổi thông số trong file smb.conf an toàn, bạn nên sao lưu file smb.conf

đến một thư mục khác, đồng thời đảm bảo rằng kết nối giữa máy Linux và Windows

của bạn ở trạng thái tốt (Kiểm tra bằng lệnh ping 2 máy với nhau).

File smb.conf được chia làm 2 phần: global setting và sharing setting. Trong mỗi

phần lại có nhiều tham số khác nhau, ở bài viết này chúng tôi chỉ xin giới thiệu những

tham số cơ bản và cần thiết nhất.

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 165

Để thiết lập cấu hình file smb.conf bạn có thể mở file này bằng một trình soạn

thảo có sẵn trên hệ thống như vi, mc, pico:

#pico /etc/Samba/smb.conf

3.2.2.2.1. global setting:

Phần này sẽ chứa thông số điều khiển Samba server.

Giá trị đầu tiên cần thiết lập là giá trị của thẻ workgroup

[global]

## workgroup = NT-Domain-Name or Workgroup-Name

workgroup = MYGROUP

Là tham số xác định tên workgroup của Windows mà máy Linux đăng nhập, nhóm

này phải tồn tại trước khi bạn cấu hình Samba.

Lưu ý: Nên nhập tên workgroup ở dạng chữ in hoa (Upper Case).

#server string is the equivalent of the NT Description

field

server string =Samba Server

Tham số server string là tham số gán mô tả về tên máy Linux trên mạng. Nó giống

như trường NT Description trên máy WindowNT. Mặc định tham số này được gán bằng

Samba Server, tuỳ theo chức năng của máy Linux mà bạn có thể đặt các tên khác nhau.

Việc gán giá trị cho tham số này không gây ảnh hưởng lớn đến việc cấu hình Samba.

;hosts allow = 192.168.1. 192.168.2.

Nếu bỏ dấu (;) thì các máy có địa chỉ IP không thuộc lớp mạng đã liệt kê không

thể truy nhập vào máy Linux. Ở đây lấy ví dụ với lớp mạng C, như vậy các máy có địa

chỉ IP bắt đầu bằng 192.168.1. 192.168.2. đều có thể truy nhập tài nguyên trên máy

Linux.

# this tells Samba to use a separate log file for each

machine

# that connects

log file = /var/log/Samba/%m.log

Tham số logfile sẽ xác định tên file log cho từng máy khi truy cập, %m có nghĩa

là tên máy trên mạng.

Ví dụ: Nếu trên mạng có máy tên là nampt truy cập vào máy Linux thì Samba sẽ

tạo ra một file là nampt.log lưu trong thư mục /var/log/Samba. Kích thước của file này

được xác định bằng tham số max log size:

# Put a capping on the size of the log files (in Kb).

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 166

max log size = 150

Samba hỗ trợ 4 kiểu bảo mật trong việc chia sẻ dữ liệu: USER, SHARE, DOMAIN

và SERVER. Để biết thêm chi tiết từng kiểu bạn có thể đọc file security_level.txt. Mặc

định khi cài Samba để ở mode USER

# Security mode. Most people will want user level

security. See

# security_level.txt for details.

security = share

# Use password server option only with security = server

or security = domain

;password server=MyServer

Nếu bạn chọn kiểu USER và SHARE thì nên đặt dấu (;) vào đầu dòng

;password server = <NT-Server-Name>

Nếu bạn muốn sử dụng tài khoản (account) và mật khẩu (password) trên máy chủ

điều khiển vùng để truy nhập vào máy Linux thì phải đặt tham số:

security = domain

và điền tên máy điều khiển vùng vào vùng password server như dưới đây:

password server = tên domain

# You may wish to use password encryption. Please read

# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba

#documentation.

# Do not enable this option unless you have read those

documents

encrypt passwords = yes

smb passwd file = /etc/Samba/smbpasswd

Với các hệ điều hành từ Win95 OME service release 2 hoặc cao hơn, mật khẩu

được mã hoá mặc định, cũng như vậy đối với hệ điều hành Windows NT4 service pack

3 mật khẩu được chuyển từ không mã hoá (Clear text) thành mã hoá (Encrypted). Để

mật khẩu mã hoá của Windows làm việc được với Samba thì hai dòng trên phải bỏ dấu

chú thích và nhập tên tài khoản và mật khẩu cho máy Linux bằng lệnh smbpasswd.

Ví dụ:

#smbpasswd -a nampt

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 167

Lưu ý: user nampt phải tồn tại là user của hệ điều hành. Nếu bạn định thiết lập

security mode= domain hoặc server thì nên đặt mật khẩu trùng với mật khẩu trên server

hay domain tương ứng.

# Enable this if you want Samba to be a domain logon

server for Windows95 workstations.

domain logons = yes

Nếu để tham số domain logons =yes sẽ làm cho máy Linux trở thành domain để

các máy Windows95 có thể đăng nhập (logon) vào. Kịch bản đăng nhập cho các máy

trạm và user sẽ được hai tham số logon script dưới đây xác định:

# if you enable domain logons then you may want a per-

machine or # per user logon script # run a specific logon

batch file per workstation (machine)

logon script = %m.bat

# run a specific logon batch file per username

logon script = %U.bat

3.2.2.2.2. Sharing Setting.

Khi có yêu cầu truy xuất dữ liệu từ máy trạm, Samba sẽ tìm các thư mục này trong

phần Sharing Setting. Nếu thư mục tồn tại nó sẽ kiểm tra mật khẩu mà máy trạm cung

cấp với mật khẩu của Samba, nó sẽ chia sẻ thư mục này qua mạng nếu mật khẩu thoả

mãn.

Trong phần này có nhiều tham số khác nhau, ở đây chúng tôi chỉ trích ra một thư

mục để làm ví dụ và giới thiệu những tham số thông dụng:

[sv02]

comment = Thu muc cua user sv02

browseable = no

read only=no

path=/home/sv02

valid users=sv02

Tham số comment cũng gần giống như tham số server string mà chúng ta đã đề

cập ở phần trước nhưng chỉ khác đây là chú thích cho thư mục.

Nếu bỏ dấu chú thích ở dòng browseable = no thì Samba sẽ không chỉ thị thư mục

này trên trình duyệt mạng (ví dụ Windows Explorer), mặc dù nó vẫn được chia sẻ, việc

này giống như chia sẻ thư mục trên Windows với dấu $.

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 168

Tham số read only sẽ cho phép người dùng trên máy trạm có thể thay đổi nội dung

file hay không. Nếu bỏ dấu chú thích tại dòng:

;read only=no

Thì người dùng có thể thay đổi nội dung của file hay tạo file mới, ngược lại nếu

để dấu (;) ở đầu dòng, người dùng chỉ có thể đọc nội dung thư mục và không được phép

tạo bất cứ thay đổi nào trong thư mục.

Trong file smb.conf có một số thông số không thể gán giá trị bằng “yes”.

Ví dụ: nếu viết:

read only=yes

thì smbd không hiểu giá trị và phát sinh lỗi cấu hình. Thực chất giá trị read

only=yes chính là ; read only=no.

Tham số path xác định đường dẫn đến thư mục cần được chia sẻ trên server. Tham

số valid users=nampt xác định quyền hạn truy cập vào thư mục nampt - ở ví dụ này chỉ

có user nampt mới đọc được nội dung của thư mục đó.

3.2.2.3. Kiểm soát truy cập

– Chia sẻ file như thế nào:

Sau khi cấu hình phần global setting, chúng ta có thể tự tạo ra một thư mục chia sẻ

và giới hạn truy cập theo nhóm hoặc người dùng có trên hệ thống.

Ví dụ: Để tạo thư mục chia sẻ dungdd trên máy Linux, chúng ta làm như sau:

Thêm vào vùng Sharing Setting những dòng dưới đây:

[sv01]

comment= thu muc cua sv01

path=/home/sv01

valid users =sv01

browseable=yes

public=no

writeable=yes

Như vậy Samba sẽ tạo ra một thư mục chia sẻ dungdd trên máy chủ, do tham số

browseable=yes nên thư mục này sẽ được nhìn thấy khi người dùng mở Windows

Explorer, tuy nhiên do public=no và valid users =dungdd nên chỉ có user dungdd có thể

đăng nhập. Ngoài việc phân cấp theo user Samba cũng có thể thăng quyền truy cập cho

cả nhóm người dùng, với nhóm chúng ta sử dụng dấu @ trước tên nhóm.

Ví dụ:

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 169

Valid users=dungdd,@admin

– Kiểm tra cấu hình vừa thiết lập:

Sau khi thiết lập file cấu hình chúng ta nên kiểm tra lại, Samba cung cấp 2 công

cụ là testparm và smbstatus. Để kiểm tra chính xác bạn phải đảm bảo máy trạm và máy

chủ phải nối được với nhau (Kiểm tra bằng lệnh ping).

3.2.2.3.1. Kiểm tra bằng công cụ Testparm:

Testparm là chương trình cho phép kiểm tra giá trị của thông số trong file cấu hình.

Cấu trúc của câu lệnh này là:

Testparm configfile [hostname hostIP]

Configfile là đường dẫn và tên file cấu hình, mặc định nó lấy file smb.conf cất

trong thư mục /etc/Samba/smb.conf (từ Redhat 7.0) và /etc/smb.conf (cho các phiên bản

trước đó).

Hostname và HostIP là hai thông số không nhất thiết phải có, nó hướng dẫn Samba

kiểm tra cả các dịch vụ đã liệt kê trong file smb.conf. trên máy xác định bởi Hostname

và HostIP.

Ví dụ:

# testparm /etc/Samba/smb.conf imail.vitti.edu.vn

172.16.200.2000

Load smb config files from /etc/Samba/smb.conf

Processing section “[homes]”

Processing section “[printers]”

Loaded services file OK.

Allow connection from imail.vitti.edu.vn (172.16.200.2000) to homes

Allow connection from imail.vitti.edu.vn (172.16.200.2000) to printers

b. Kiểm tra bằng công cụ smbstatus:

Smbtatus là chương trình thông báo các kết nối hiện tại, cấu trúc của câu lệnh này

như sau:

Smbstatus [-d][-p][-s config file]

Tham số configfile mặc định được gán là /etc/Samba/smb.conf. Tham số –d cho

ra kết quả đầy đủ.

– Chạy Samba server:

Samba server có hai tiến trình là smbd và nmbd. Tiến trình smbd cung cấp dịch vụ

chia sẻ file và dữ liệu, tiến trình nmbd cung cấp khả năng hỗ trợ NetBIOS name. Cũng

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 170

như các dịch vụ khác, trên mạng Samba có 3 câu lệnh điều khiển là stop, start, restart.

Cú pháp của chúng là:

#/etc/init.d/smb start| stop| restart

Sau khi cấu hình file smb.conf bạn phải khởi động dịch vụ Samba để máy Linux

đăng nhập vào workgroup, câu lệnh khởi động là:

#/etc/init.d/smb start

Sau khi khởi động dịch vụ máy Windows có thể truy cập đến máy Linux thông qua

NetworkNeighborhood hoặc Windows Explorer, máy Linux có thể dùng 2 câu lệnh

smbclient smbmount để truy cập đến máy Windows và trên cả máy Linux khác có cài

Samba.

3.2.2.3.2. Sử dụng câu lệnh smbclient:

Smbclient cung cấp giao diện dòng lệnh gần giống như giao diện của FTP để

truyền file qua mạng. Chi tiết về câu lệnh smbclient bạn có thể tham khảo nhờ câu lệnh:

#man smbclient

Để liệt kê các thư mục chia sẻ có trêm máy 172.16.200.203 bạn dùng smbclient

với tham số –L:

#smbclient -L 172.16.200.203

Kết quả sẽ cho ra một số thư mục có trên máy 172.16.200.203, để vào một trong

các thư mục trên bạn dùng lệnh smbclient với tham số -U tên user (tên user có quyền

truy cập vào thư mục tương ứng).

#smbclient //172.16.200.203/tên_thư_mục -U tên_user

Sau khi gõ vào mật khẩu bạn sẽ nhận được dấu nhắc:

smb:\>

Tại dấu nhắc này bạn có thể dùng các câu lệnh như sau:

Ví dụ: Dùng smbclient nối đến máy Windows có địa chỉ IP là 172.16.4.53, để lấy

file trên máy này ta phải làm lần lượt các bước sau:

Xác định các thư mục được chỉa sẻ trên máy 172.16.4.53:

#smbclient -L 172.16.4.53 -U tienna

added interface ip=172.16.200.200 bcast=172.16.255.255

nmask=255.255.0.0

session request to 172.16.4.53 failed (Called name not

present)

session request to 172 failed (Called name not present)

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 171

Password:

Domain=[STAFF.VITTI] OS=[Windows 5.0] Server=[Windows 2000

LAN Manager]

Sau khi nhập mật khẩu của tài khoản tienna (trên Windows) ta nhận được danh

sách các thư mục share trên máy 172.16.4.53. Sau khi biết được các thư mục trên máy,

bạn phải dùng câu lệnh:

root@Backup /root]# smbclient //172.16.4.53/tienna -U

tienna

Can’t find include file /etc/Samba/smb.conf.

added interface ip=172.16.200.200 bcast=172.16.255.255

nmask=255.255.0.0

session request to 172.16.4.53 failed (Called name not

present)

session request to 172 failed (Called name not present)

Password:

Domain=[STAFF.VITTI] OS=[Windows 5.0] Server=[Windows 2000

LAN Manager]

smb: \>

Tại dấu nhắc này bạn có thể xem các file bên trong thư mục tienna bằng lệnh ls,

lấy nó về máy Linux bằng lệnh get hoặc mget:

smb:\> ls

.D 0 Fri Aug 24 00:02:24 2001

..D 0 Fri Aug 24 00:02:24 2001

ethereal-setup-0.8.17.exe A 6153372 Thu Apr 19

18:54:42 2001

gozilla39.exe A 1869172 Thu Jun 7 12:05:50 2001

smb:\> mget eth*

Get file ethereal-setup-0.8.17.exe? y

getting file ethereal-setup-0.8.17.exe of size 6153372 as ethereal-setup- 0.8.17.exe

(925.624 kb/s) (average 925.624 kb/s)

smb:\>

3.2.2.4 Truy cập từ máy Windows

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 172

Với máy Windows việc truy cập dễ dàng hơn nhiều, bạn chỉ cần mở Windows

Explore và tìm đến domain mà máy Linux đăng nhập, nhấn chuột lên tên máy Linux sau

đó nhập vào tên tài khoản và mật khẩu tương ứng, bạn sẽ nhìn thấy các thư mục chia sẻ

(sharing) hiện ra. Tại đây bạn cũng có thể thực hiện các tính năng như map ổ đĩa, đồng

bộ thư mục, sao chép file như ở các máy Windows thông thường.

Cách truy cập đơn giản nhất là dùng run: \\“IP máy Samba”

3.2.2.5. Bài tập samba

3.2.2.5.1. Mô hình:

Mạng máy tính có 2 máy như sau:

CEN1CEN2

WIN01

.1.2

.3

Đánh IP cho các máy theo mô hình

CEN1: 192.168.x.1/24 và Disable: Security level và

SELinux

CEN2: 192.168.x.2/24

WIN01: 192.168.x.3/24

ping từ máy CEN1 qua CEN2 và WIN01

3.2.2.5.2. Yêu cầu:

Trên máy linux, tạo 2 thư mục data, soft trong /pub

Tạo 2 user hv1, hv2 có thư mục cá nhân trong /pub cùng tên user và nhóm hv để chứa 2 user trên. Passwd cho các user là 123456

Chia sẻ thư mục data cho nhóm hv với quyền full, và thư mục soft cho nhóm hv với quyền read.

Các user khi đăng nhập vào máy Linux có một thư mục cá nhân, user được toàn quyền trên thư mục cá nhân này.

3.2.2.5.3. Chuẩn bị:

* Tạo thư mục:

#mkdir -p /pub/data

#mkdir -p /pub/soft

* Tạo group và user (Passwd: 123456)

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 173

#groupadd hv

#useradd -g hv hv1

#passoftd hv1

#useradd -g hv hv2

#passoftd hv2

* Đánh IP và Tắt Security level, SELinux

#setup

Chọn Firewall Configuration (như hình bên dưới)

- Security level: (*) Disable

- Selinux: chọn mức Disable

OK, thoát khỏi màn hình setup

#service network restart

– Copy các tập tin .conf trong

/etc vào hw và copy các tập

tin có chữ tab cuối cùng vào

sw

#cp /etc/*.conf /public/hw

Dời dấu chớp qua

đây, gõ thanh dài

cho dấu * xuất hiện

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 174

3.2.2.5.4. Cài đặt và Cấu hình SAMBA

Máy Linux 192.168.x.1

Đăng nhập root, lắp đĩa source instsall Centos5.5.iso

Open Centos in terminal

Cài đặt samba (TẠI DẤU NHẮC TERMINAL GÕ CÁC LỆNH SAU)

#rpm –ivh perl-Convert<tab>

#rpm –ivh samba-common <tab>

#rpm –ivh samba-3 <tab>

#rpm –ivh system-config-samba<tab>

Cấu hình samba

Tại dấu nhắc dùng lệnh gedit /etc/samba/smb.conf mở và sửa một số đề mục

sau

Thông tin tổng quát

[global] #NOTE: bấm ctrl – F nhập vào find what: [glo

netbios name = linux<số máy>

workgroup = WORKGROUP

server string = <Họ và Tên SV>

hosts allow = 192.168.x. 127.

log file = /var/log/samba/%m.log

max log size = 50

security = user

smb passoftd file = /etc/samba/smbpasswd

encrypt passwds = yes

dns proxy = no

Thư mục cá nhân

[homes] (#bấm ctrl-F gõ vào [homes] )

comment = home directory

browseable = no

writeable = yes

Thư mục chia sẻ data (TÌM [public] COPY SỬA LẠI CHO GIỐNG ĐOẠN SAU. Nhớ xóa dấu ; đầu dòng)

[data]

Những dòng có dấu chấm

phẩy (;) hay thăng (#) ở

đầu, muốn sử dụng phải

xoá dấu này.

Dòng chữ nghiêng màu

đỏ phải thêm vào dòng

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 175

comment = samba shared data folder #(không có cũng không sao!)

path = /pub/data

browseable = yes

writeable = yes

printable = no

available = yes

Thư mục chia sẻ soft

[soft-on-CEN1]

comment = samba shared soft folder #(không có cũng không sao!)

path = /pub/soft

browseable = yes

writeable = no #READ_ONLY

printable = no

available = yes

Thư mục MÁY IN (XÓA HẾT ĐOẠN PRINTERS NÀY Nếu không có yêu cầu share máy in)

[Printes]

printable = yes

Lưu bài và thoát khỏi trình soạn thảo

Khởi động dịch vụ samba bằng lệnh #service smb start

Nếu dùng restart là khởi động lại dịch vụ

Nếu dùng stop là tắt dịch vụ

Kiểm tra cấu hình file vừa tạo bằng lệnh #testparm

Chuyển hv1, hv2 thành user samba với passoftd mới 123abc bằng lệnh

#smbpasswd -a hv1, đánh vào passwd mới 123abc

Gán quyền truy cập 775 cho thư mục data và chuyển quyền cho nhóm hv. Gán

quyền 555 cho thư mục soft và chuyển quyền truy cập cho nhóm hv.

#chgrp hv /pub/data

#chmod 775 /pub/data

#chgrp hv /pub/soft

#chmod 555 /pub/soft

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 176

Kiểm tra truy cập bằng lệnh: #smbclient -L 192.168.x.1

* Máy Windows 192.168.x.2: Start Run, gõ vào \\192.168.x.1, OK

– Nhấp đôi mở ra, nếu máy yêu cầu nhập username/passwd thì nhập vào bằng tài

khoản đã tạo ở trên hv1 hay hv2

– Mở các thư mục nhìn thấy trong máy linux<số máy>

* Mở thêm máy Cen2 192.168.x.3: kết nối vào \\192.168.x.1\data, bằng cách

dùng lệnh smb

- Tạo trong mnt thư mục pc (#mkdir /mnt/pc)

#mount //192.168.x.1/data /mnt/pc -o

username=hv2,passwd=123abc

#mount -t cifs -o username=hv2,password=123abc

//192.168.x.1/data /mnt/pc/

Kiểm tra dữ liệu trong các thư mục đã kết nối

#ls -l /mnt/pc

* Tóm lược chương:

Trong chương này trình bày những vấn đề liên quan đến cấu hình mạng và hai dịch

vụ mạng cơ bản trong Linux.

- Phần cấu hình mạng: chỉ ra những công việc cơ bản như phương pháp gán IP cho

card mạng, thay đổi các thông số card mạng, sử dụng các tiện ích để quản lý mạng trên

máy cá nhân như: ping, tracert, định tuyến (route),..

- Phần chia sẻ tài nguyên: nhằm khai thác ưu điểm của mạng là sử dụng tài nguyên

dùng chung, linux cung cấp hai phương thức chia sẻ tài nguyên cơ bản là NFS và Samba

đây là hai dịch vụ cho phép các máy chạy cùng loại hệ điều hành hoặc khác loại hệ điều

hành có thể truy cập được tài nguyên như tập tin hay máy in.

3.2.3. Câu hỏi cũng cố phần lý thuyết:

1. So sánh dịch vụ samba và dịch vụ NFS? Tại sao người ta nói rằng chỉ cần cài đặt và

cấu hình samba là đủ cho việc chia sẻ trên hệ thống hỗn hợn Windows, Linux.

2. Dùng samba làm domain có được hay không? Hãy nêu quy trình thay đổi những hạng

mục nào để biến máy Linux Centos thành một domain cho các máy Windows Client gia

nhập?

3. Hệ thống chia sẻ tập tin NFS không thể chia sẻ cho các IP cụ thể. Phát biểu này đúng

hay sai? Tại sao?

4. Thực hành 2 samba (máy Centos01 phải có sẵn dhcp hoặc tự gán IP tĩnh cho các

máy Client)

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 177

a. Cài đặt Samba trên máy Samba

b. Tạo cây thư mục (/data/[vmnet5, vmnet4])

c. Cấu hình chia sẻ cho 2 nhánh quyền đọc ghi: thư mục vmnet5 nhánh 172.16.x.0/24

và vmnet4 cho nhánh 192.168.x.0/24

d. Thiết lập truy cập tự động trên máy Centos02, các máy Windows ánh xạ thành ổ đĩa

H cho các user và ổ đĩa P cho thư mục đã chia sẻ

5. Thực hành 3 nfs (máy Centos01 phải có sẵn dhcp hoặc tự gán IP tĩnh cho các máy

Client)

a. Kiểm tra NFS trên máy Centos01, nếu chưa có tiến hành cài đặt

b. Tạo cây thư mục (/data/[vmnet5, vmnet4]), copy các tập tin mẫu trong /etc sang

vmnet4 và vmnet5 (phải có sự khác biệt)

c. Cấu hình tập tin exports như sau:

/data/vmnet4 chia cho 2 nhánh mạng quyền đọc

/data/vmnet5 chia cho nhánh vmnet5 quyền đọc ghi

d. Khởi động dịch vụ

e. Cấu hình kết nối tự động trên máy Centos02 và máy Centos0

f. Dùng lệnh ls để kiểm tra 2 thư mục được mount vào nfs server

Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

KHOA CÔNG NGHỆ THÔNG TIN Trang 178

TÀI LIỆU THAM KHẢO

I. Trung tâm Tin học, Đại học Khoa học Tự nhiên thành phố Hồ Chí Minh Hướng

dẫn giảng dạy Quản trị mạng Linux. Trung tâm Tin học ĐH KHTN 2009

II. Phan Vĩnh Thịnh, Tự học sử dụng Linux Nxb Tri Thức Trẻ 2013

III. Trung tâm Đào tạo Mạng máy tính Nhất Nghệ LAB Linux LPI 1 & 2. TT Nhất

Nghệ 2011

IV. Website: https://www.thegeekstuff.com/2009/06/15-practical-crontab-

examples

V. Website www.linuxnetworking.org