Download as pdf or txt
Download as pdf or txt
You are on page 1of 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


Ủ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
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 1
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 2
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 3
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 4
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 5
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 6
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

Trang 7
Chương 1: Lý thuyết chung về hệ điều hành Unix và Linux
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.

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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ể.

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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ệ
KHOA CÔNG NGHỆ THÔNG TIN Trang 11
Chương 1: Tổng quan về hệ điều hành Linux và Unix
đ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.

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


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

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

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
- Đế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

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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ị

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
- 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ụ

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
1 $ uname -r
2 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ớ

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
- 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í

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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?

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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).

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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ạ.

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


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

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.

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


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

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.

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
• 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.

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


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

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

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


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

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

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


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

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)

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


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

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.

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


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

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.

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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)

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


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

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)

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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)

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


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

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)

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


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

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)

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


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

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 .

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


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

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

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


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

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:

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


Chương 1: Tổng quan về hệ điều hành Linux và Unix
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
- 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.
KHOA CÔNG NGHỆ THÔNG TIN Trang 49
Chương 2: Sử dụng hệ điều hành Linux
- 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

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


Chương 2: Sử dụng hệ điều hành Linux
- 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.

Thiết lập độ dài trang tới PAGE_LENGTH (66) dòng. Số từ mặc


-l PAGE_LENGTH
định của các dòng là 56.

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


Chương 2: Sử dụng hệ điều hành Linux

Chức năng Miêu tả

-o MARGIN In ôpxet mỗi dòng với khoảng cách lề là 0.

Thiết lập độ rộng tới PAGE_WIDTH (72) ký tự chỉ cho đầu ra


-w PAGE_WIDTH
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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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ả

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


Chương 2: Sử dụng hệ điều hành Linux

-s Xác định subject trên dòng lệnh.

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ó
-c
thể là một bản danh sách tên phân biệt bằng dấu phảy.

Gởi các bản sao blind carbon tới danh sách. Danh sách có thể là một bản
-b
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ỉ admin@yahoo.com người
dùng sử dụng lệnh:
$mail -s "Test Message" admin@yahoo.com
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" admin@yahoo.com < 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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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ư:

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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ụ:

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


Chương 2: Sử dụng hệ điều hành Linux
#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
KHOA CÔNG NGHỆ THÔNG TIN Trang 62
Chương 2: Sử dụng hệ điều hành Linux
Đâ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

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


Chương 2: Sử dụng hệ điều hành Linux
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),

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


Chương 2: Sử dụng hệ điều hành Linux
-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)

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


Chương 2: Sử dụng hệ điều hành Linux
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/
KHOA CÔNG NGHỆ THÔNG TIN Trang 66
Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
/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 <james.antill@redhat.com> at 2008-
01-18 22:00

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


Chương 2: Sử dụng hệ điều hành Linux
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 <pmatilai@redhat.com> 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 <kbsingh@centos.org> 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

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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.
KHOA CÔNG NGHỆ THÔNG TIN Trang 72
Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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:

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


Chương 2: Sử dụng hệ điều hành Linux

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ô tả nội dung
mục

/ 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

chứa các tệp, câu lệnh được hệ thống sử dụng, thư mục này được
/usr
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

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


Chương 2: Sử dụng hệ điều hành Linux

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

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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
KHOA CÔNG NGHỆ THÔNG TIN Trang 79
Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
[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.

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


Chương 2: Sử dụng hệ điều hành Linux

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/

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
/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

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


Chương 2: Sử dụng hệ điều hành Linux
Ở đâ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
KHOA CÔNG NGHỆ THÔNG TIN Trang 85
Chương 2: Sử dụng hệ điều hành Linux
Ở đâ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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
- 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

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


Chương 2: Sử dụng hệ điều hành Linux
- /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

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


Chương 2: Sử dụng hệ điều hành Linux
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
KHOA CÔNG NGHỆ THÔNG TIN Trang 90
Chương 2: Sử dụng hệ điều hành Linux
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:
KHOA CÔNG NGHỆ THÔNG TIN Trang 91
Chương 2: Sử dụng hệ điều hành Linux
- 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

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


Chương 2: Sử dụng hệ điều hành Linux
đượ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.

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


Chương 2: Sử dụng hệ điều hành Linux
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:::

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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>

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


Chương 2: Sử dụng hệ điều hành Linux
-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

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


Chương 2: Sử dụng hệ điều hành Linux
[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)
KHOA CÔNG NGHỆ THÔNG TIN Trang 98
Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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:
KHOA CÔNG NGHỆ THÔNG TIN Trang 100
Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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
KHOA CÔNG NGHỆ THÔNG TIN Trang 102
Chương 2: Sử dụng hệ điều hành Linux
[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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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?

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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).

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 2: Sử dụng hệ điều hành Linux
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.
KHOA CÔNG NGHỆ THÔNG TIN Trang 110
Chương 2: Sử dụng hệ điều hành Linux
 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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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):
KHOA CÔNG NGHỆ THÔNG TIN Trang 114
Chương 2: Sử dụng hệ điều hành Linux
- 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.

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
:! 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)

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


Chương 2: Sử dụng hệ điều hành Linux
– Theo màn hình – Theo từ (word) :

H về đầu màn hình (Home) w W về đầu từ tiếp

M về giữa màn hình (Midle) b B đầu từ hiện tại

L về cuối màn hình (Last) e E cuối từ hiện tại


– Theo câu : – Theo cửa sổ (window):

( về đầu câu z dòng hiện tại ở giữa cửa sổ .

) về cuối câu z<Enter> dòng hiện tại ở đầu cửa sổ

Lưu ý kết thúc một câu là dấu .! hoặc ? ^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 : – Tìm theo dãy kí tự :

Để hiển thị số thứ tự các dòng soạn / kí hiệu chiều tìn xuôi
thảo :
? kí hiêụ chiều tìm ngược
: set nu
/string chuyển con trỏ đến dòng chứa
Xóa bỏ hiển thị trên : dãy kí tự theo chiều

: set nonu xuôi

:n<Enter> hoặc nG Chuyển con trỏ ?string chuyển con trỏ đến dòng chứa
đến dòng thứ n dãy kí tự theo chiêu ngược

:s hoặc G Đến cuối dòng văn bản // lặp lại tìm xuôi

:se list hiển thị các kí tự ẩn ?? lặp lại tìm ngược

2.4.1.4.3. Xóa văn bản :


– Xóa kí tự : – Xóa dòng văn bản :

x xóa kí tự taịo vị trí con trỏ dd hoặc :d<CR> xóa dòng chứa con trỏ

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


Chương 2: Sử dụng hệ điều hành Linux
3x xóa 3 kí tự 3dd xóa 3 dòng bắt đầu từ vị trí văn bản

x xóa kí tự trước vị trí con trỏ 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ự : – Thay thế từ :


rc thay thế kí tự đại diện bằng kí tự c cw <ESC> thay thế một từ bằng “text”.
R <ESC> thay thế số kí tự bằng dãy Từ được thay thế tính từ vị trí con trỏ
‘text” đến kí tự $
– Thay thế dòng : c2w<ESC> thay 2 từ
S <ESC> xóa dòng hiện tại và thay thế c hoặc c$ thay thế đến cuối dòng
nó bằng “text” 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ự

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


Chương 2: Sử dụng hệ điều hành Linux
– 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

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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ế
“you@youremailid.com” bằng địa chỉ email của bạn.
# mail -s “Hello world” you@youremailid.com
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” you@youremailid.com
Và nếu bạn muốn mail để đọc nội dung từ một file:
# mail -s “Hello world” you@youremailid.com <
/home/calvin/application.log

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


Chương 2: Sử dụng hệ điều hành Linux
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” calvin@cnh.com -c hobbes@cnh.com -b
susie.derkins@cnh.com
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.

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


Chương 2: Sử dụng hệ điều hành Linux

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


Phần Logic của đĩa ở mức cao nhất. Ở đây chỉ có thể có 4
Primary
partition.
Không chứa dữ liệu. Partition này chỉ dùng để chứa bảng
Extended
phân hoạch đĩa của chính nó

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


Chương 2: Sử dụng hệ điều hành Linux

Được tạo trong partition mở rộng. Không có giới hạn số


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

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


Chương 2: Sử dụng hệ điều hành Linux
- 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.

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


Chương 2: Sử dụng hệ điều hành Linux
Đị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ó
KHOA CÔNG NGHỆ THÔNG TIN Trang 127
Chương 2: Sử dụng hệ điều hành Linux
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 # at time date
2 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 # at 11 am may 20
2 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.

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


Chương 2: Sử dụng hệ điều hành Linux
1 # at 4pm + 3 days
2 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 # at now + 5 seconds
2 syntax error. Last token seen: s
3 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 # at 10 am tomorrow
2 # at 11:00 next month
3 # at 22:00 today
4 # at now + 1 week
5 # 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

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


Chương 2: Sử dụng hệ điều hành Linux
2 noon = 12:00 PM
3 teatime = 4:00 PM
4 tomorrow = 10:00 AM hôm sau
5 1430 = 2:30 PM
6 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 # at -l
2 2 2016-03-27 14:19 a root
3 1 2016-03-27 14:15 a root

1 # atq
2 2 2016-03-27 14:19 a root
3 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

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


Chương 2: Sử dụng hệ điều hành Linux
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 # cat /root/chuongtrinh.txt
2 /home/cuongqc/testing.sh
3 /bin/date -I

1 # at -f /root/chuongtrinh.txt now + 1 hour


2 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 /var/spool/at
2 /var/spool/at/spool
3 /proc/loadavg
4 /var/run/utmp

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


Chương 2: Sử dụng hệ điều hành Linux
5 /etc/at.allow
6 /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.

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


Chương 2: Sử dụng hệ điều hành Linux
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:

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


Chương 2: Sử dụng hệ điều hành Linux

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

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


Chương 2: Sử dụng hệ điều hành Linux
@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=”vivek@nixcraft.in”
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

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


Chương 2: Sử dụng hệ điều hành Linux
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 ý

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


Chương 2: Sử dụng hệ điều hành Linux
– 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 # rpm -q at
2 at-3.1.10-48.el6.x86_64
3 # service atd start

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


Chương 2: Sử dụng hệ điều hành Linux
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

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


Chương 2: Sử dụng hệ điều hành Linux
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?

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


Chương 2: Sử dụng hệ điều hành Linux
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)

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


Chương 2: Sử dụng hệ điều hành Linux
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.

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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..

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

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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
[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)

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

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”

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

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

- 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

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
KHOA CÔNG NGHỆ THÔNG TIN Trang 148
Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
#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 # This file describes the network interfaces available on


your system
2 # and how to activate them. For more information, see
interfaces(5).
3 # The loopback network interface
4 auto lo
5 iface lo inet loopback
6
7 auto eth0
8 iface eth0 inet dhcp
9 auto eth1
10 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:
# This file describes the network interfaces
1
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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:
#The loopback network
1
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 auto eth1
2 iface eth1 inet static
3 address 103.56.158.174
4 netmask 255.255.255.0
5 gateway 103.56.158.1
6 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:

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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 TYPE="Ethernet"

2 DEVICE="eth0"

3 ONBOOT="yes"

4 BOOTPROTO="dhcp"

5 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

BOOTPROTO="static" # Phương thức này là cấu hình IP


4
tĩnh

5 NM_CONTROLLED="no"

IPADDR="10.20.0.13" # IP tĩnh chúng ta muốn đặt cho


6
server

NETMASK="255.255.255.0" #Subnetmask của dải mạng chúng


7
sử dụng

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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 DNS1=8.8.8.8

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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
[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.

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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.

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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:

.2
.1

.3

CEN3 CEN1
CEN2
NFS Server

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
KHOA CÔNG NGHỆ THÔNG TIN Trang 156
Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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.

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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
KHOA CÔNG NGHỆ THÔNG TIN Trang 158
Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
# 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:

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
[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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
- 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
.2
.1

.3

CEN3 CEN1
CEN2
NFS Server

Đá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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
#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
KHOA CÔNG NGHỆ THÔNG TIN Trang 163
Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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.

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
Để 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).

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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 $.

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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ụ:
KHOA CÔNG NGHỆ THÔNG TIN Trang 168
Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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)

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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:

.2
.1

.3

WIN01 CEN1
CEN2

Đá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)

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
#groupadd hv – Copy các tập tin .conf trong
#useradd -g hv hv1 /etc vào hw và copy các tập
tin có chữ tab cuối cùng vào
#passoftd hv1
sw
#useradd -g hv hv2
#cp /etc/*.conf /public/hw
#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
Dời dấu chớp qua
đây, gõ thanh dài
cho dấu * xuất hiện

OK, thoát khỏi màn hình setup


#service network restart

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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>
Những dòng có dấu chấm
hosts allow = 192.168.x. 127.
phẩy (;) hay thăng (#) ở
log file = /var/log/samba/%m.log đầu, muốn sử dụng phải
max log size = 50 xoá dấu này.
security = user Dòng chữ nghiêng màu
smb passoftd file = /etc/samba/smbpasswd đỏ phải thêm vào dòng

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]

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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
KHOA CÔNG NGHỆ THÔNG TIN Trang 175
Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
 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)

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux

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

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


Chương 3: Cấu hình mạng và chia sẻ tài nguyên trên Linux
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

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

You might also like