Giáo trình
NHẬP MÔN QUẢN TRỊ HỆ THỐNG LINUX
Trần Huy Thắng
([email protected])
Do điều kiện thời gian, cuốn sách còn một phần chưa được viết.
> Rất mong bạn đọc có thể tham gia viết tiếp để hoàn thiện cuốn sách.
Tài liệu này có thể download tại: www.fita.hua.edu.vn/thangtran
Bạn có thể trích đăng lại (một phần hay toàn bộ) nội dung cuốn sách với chú thích về nơi
download cuốn sách và thông báo tìm người viết tiếp này. Nếu có ý định thương mại xin nhắn
trước với tác giả.
1/192
Lề của sách được đặt chế độ mirror margin để bạn có thể in 2 mặt.
2/192
Lời nói đầu
Cuốn “Nhập môn Quản trị Hệ thống Linux” được viết với mục đích làm giáo trình cho một lớp Linux
3 hoặc 6 tín chỉ (45 hoặc 90 giờ) học thực hành trên phần mềm máy ảo VMware Workstation. Nội
dung cuốn sách gồm 3 phần:
Phần 1 (phần phụ): Giới thiệu về luật bản quyền, phần mềm tự do/nguồn mở (FOSS), các hệ điều
hành *nix. Phần này tuy không liên quan đến các thao tác kỹ thuật và các sách về quản trị hệ thống
cũng không đề cập nhiều nhưng chúng tôi nghĩ rất nên đưa vào. Đặc biệt trong các trường đại học ở
Việt Nam, (theo sự quan sát cá nhân) vấn đề “bản quyền”, “nguồn mở” chưa được dạy một cách đúng
mực do đó chúng tôi cho rằng cơ hội tốt nhất để bổ sung phần thiếu sót này là lồng nó vào trong các
lớp/giáo trình về Linux.
(Phần này chỉ nên nói trong buổi đầu tiên giới thiệu môn học.)
Phần 2 và 3 (phần chính): Các câu lệnh quản trị Linux trên máy đơn và trong môi trường mạng. Cuốn
sách chỉ nói về các câu lệnh mà không đề cập đến các công cụ có giao diện đồ họa bởi: thứ nhất, người
mới học (vốn đang dùng Windows) nên tập làm quen với việc gõ lệnh; thứ hai, cái vỏ giao diện đồ họa
nhiều khi không khai thác hết được các lệnh mà nó gọi đến. Các câu lệnh trong sách được thực thi trên
Redhat/Fedora nhưng hoàn toàn có thể chạy bình thường trên Debian, Ubuntu, OpenSuse (trừ phần cài
đặt gói phần mềm.)
Tài liệu này được dạy trên VMware Workstation (nên cũng có một bài hướng dẫn nhỏ về mạng ảo của
Sở hữu trí tuệ (intelectual property) 14
Sở hữu công (public domain) 14
Đối ngược với sở hữu trí tuệ là sở hữu công 14
Khi sở hữu trí tuệ trở thành sở hữu công 14
Copyright (bản quyền) © 15
Thương hiệu (trademark) 16
2. Phân loại phần mềm theo quyền của người sử dụng 16
EULA và các quyền của người sử dụng 16
Proprietary softwares hay FOSS 17
Disclaimer of warranty (chối bỏ bảo đảm) 18
3. Free/Open source softwares (FOSS) 18
a. Định nghĩa Free/Open source softwares 18
Free software 18
Open source software 19
Free softwares vs Open source 20
b. FOSS và chuyện “miễn phí” 21
FOSS thì miễn phí ? 21
FOSS thương mại ? 22
c. Các mẫu giấy phép FOSS 22
4. Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache 24
BSD (copycenter) 24
MIT licence 25
Apache 26
5. Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết) 26
6. Giấy phép (strong) copyleft: GPL (chưa xong) 26
Ý tưởng của giấy phép GPL: 26
Ý nghĩa của giấy phép GPL: 27
Áp dụng các điều khoản của GPL 27
7. Mô hình phát triển phần mềm FOSS (chưa viết) 27
8. Mô hình kinh doanh phần mềm FOSS (chưa viết) 27
c. Shell script 46
d. Metacharacters 47
e. Help 47
f. History 48
5. su 48
6. Làm việc với file và thư mục trên *nix 48
a. Cấu trúc file và thư mục của Linux khác với của Windows 48
b. Đường dẫn thư mục của Linux – kí hiệu /, thói quen TAB, thư mục . ~ 49
Hãy cẩn thận với dấu / 49
Thư mục home, thư mục hiện hành, thư mục ~ . 50
Muốn nhanh thì bấm TAB hoặc TAB TAB 50
Khi tên file, thư mục chứa kí tự đặc biệt 50
c. Lệnh ls –l, xem thông tin về file, thư mục 51
d. Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục 52
Hiển thị nội dung file 52
Tạo thư mục mới 52
Tạo file mới 52
Đổi tên/di chuyển file và thư mục 52
Copy file và thư mục 52
Xóa file hoặc thư mục 53
e. Midnight Commander (mc) 53
f. Link 53
g. Archive và Compress file 53
h. Tìm kiếm file và thư mục 54
7. Filesystem Hierarchy standard 55
8. Trong *nix, mọi thứ đều là file 57
9. Redirection và xargs 58
a. Redirect stdin, stdout, stderr to file 58
b. Pipe và kết hợp với grep, wc, sort, less 60
c. xargs 61
I.3 Install 86
I.4 Query 87
I.5 Upgrade 88
I.6 Erase 88
I.7 Verify 88
II. DEB (chưa viết) 89
III. Cài đặt phần mềm từ source code 89
Bài 6. Quản trị user. File permission 92
1. Quản trị user 96
1.1 Users 96
1.2 Group 98
1.3 Reset password của root 99
2. File permission 100
Chủ sở hữu, nhóm chủ sở hữu mặc định 101
Thay đổi chủ sở hữu, nhóm chủ sở hữu bằng lệnh chown, chgrp 101
Thay đổi quyền truy cập r, w, x với các đối tượng u, g, o 101
SUID, SGID, sticky bit 103
Set UID và Set GID cho file khả thi 103
Set GID cho thư mục 104
Sticky bit 105
Kí hiệu SUID, SGID, Sticky bit bằng chữ số 105
3. Quota 106
1-Cài đặt phần mềm quota 106
2-Mount partition với thuộc tính usrquota 107
3-Khởi tạo quota database trên partition bằng lệnh quotacheck 107
4-enable (disable) quota bằng quotaon (quotaoff) 108
5-Đặt limit, grace cho user bằng lệnh edquota 108
6-Xem lại thông tin về quota 109
7-Thử nghiệm quota 109
Bài 7. Advanced partitioning: RAID & LVM 111
I.2 Các thao tác với tiến trình 132
In ra trạng thái các tiến trình bằng lệnh ps 132
Theo dõi các tiến trình bằng lệnh top (hoặc prstat, topas) 133
Tìm kiếm một tiến trình 135
Điều chỉnh số nice của tiến trình 135
I.3 Signal và lệnh kill, killall, pkill 135
Lệnh kill 135
Lệnh killall và pkill 136
I.4 Các tiến trình có tương tác. Chế độ background, foreground 136
II. Quản lý daemon 138
Các daemon nằm ở đâu ? 138
Trực tiếp bật/tắt daemon 138
/etc/rc.d/rc[0-6].d – tập daemon cho mỗi run level 139
Các công cụ quản lý daemon 140
III. Lập lịch (scheduling) 142
cron 142
System cron jobs 142
User cron jobs 143
at 143
Bài 9. Quá trình khởi động (grub, kernel, init) và tắt máy của Linux 144
I. GRUB 148
1. Chức năng của GRUB 148
2. Quá trình tải GRUB 149
3. Cài lại GRUB 150
4. File grub.conf (menu.lst) 151
II. Nạp hệ điều hành từ GRUB 152
Truy xuất device 153
Qui ước kí hiệu device của GRUB 153
Truy xuất file của GRUB 153
Tải nhân Linux 154
IP trên Internet, IP tĩnh, IP động và ICANN 183
Địa chỉ IP riêng (private IP) 184
Bài 12. Configure card mạng (chưa xong) 185
Cài đặt driver cho card mạng 189
Lệnh ifconfig 190
Hiển thị trạng thái của card mạng 190
Gán địa chỉ IP cho card mạng 190
Gán địa chỉ IP alias cho card mạng 191
Bật tắt card mạng 191
Bộ công cụ ip 191
Tài liệu tham khảo 192
8/192
Đây là một bài của bản thảo “Giáo trình Nhập môn Quản trị Hệ thống Linux” đang viết dở. © Trần Huy Thắng [email protected],
Rất mong bạn đọc có thể tham gia viết nốt phần còn lại của cuốn sách. Bạn đọc có thể đăng lại một phần hay toàn bộ tập bản thảo này nhưng cần ghi
rõ nguồn và thông báo tìm người viết tiếp này. Nếu đăng lại với ý định thương mại thì xin nhắn trước cho tác giả.
Bài 1. Khái niệm FOSS và *nix
Bài 1. Khái niệm FOSS và *nix 9
I. FOSS 14
1. Sở hữu trí tuệ 14
Sở hữu trí tuệ (intelectual property) 14
Sở hữu công (public domain) 14
Đối ngược với sở hữu trí tuệ là sở hữu công 14
Khi sở hữu trí tuệ trở thành sở hữu công 14
Copyright (bản quyền) © 15
Thương hiệu (trademark) 16
2. Phân loại phần mềm theo quyền của người sử dụng 16
EULA và các quyền của người sử dụng 16
Proprietary softwares hay FOSS 17
Disclaimer of warranty (chối bỏ bảo đảm) 18
3. Free/Open source softwares (FOSS) 18
1.a. Cấu trúc vật lý của HDD 37
1.b. Cấu trúc logic của HDD 38
1.c. Quá trình khởi động OS của máy tính 38
2. Công cụ máy ảo để học thực hành Linux. Một số chú ý về Vmware Workstation 38
3. Các cách để có được một bản Linux distro và trường hợp của Redhat 38
4. Cài đặt Linux, FreeBSD 38
4.a. Cài đặt Linux 38
4.b. Cài đặt FreeBSD 38
4.c. Tự động hóa quá trình cài đặt 38
5. Vấn đề multi OS 38
Bài 3. Làm quen với Linux command 39
9/192
1. Đăng nhập và tắt máy 43
2. Kernel, Shell 44
3. Virtual Console và Terminal 45
4. Lệnh trong Linux 45
a. Cách viêt lệnh 45
b. Thực thi executable file 46
c. Dừng một lệnh 46
c. Shell script 46
d. Metacharacters 47
e. Help 47
f. History 48
5. su 48
6. Làm việc với file và thư mục trên *nix 48
a. Cấu trúc file và thư mục của Linux khác với của Windows 48
b. Đường dẫn thư mục của Linux – kí hiệu /, thói quen TAB, thư mục . ~ 49
Hãy cẩn thận với dấu / 49
Thư mục home, thư mục hiện hành, thư mục ~ . 50
Muốn nhanh thì bấm TAB hoặc TAB TAB 50
a. Filesystem của block device 71
b. Format 71
i) fdisk – edit partition table 71
ii) mkfs (make filesystem) 72
3. Mounting 73
a. Lệnh mount 73
b. file cấu hình /etc/fstab 74
c. file cấu hình /etc/mtab 75
4. Hai partition đặc biệt của Linux 75
10/192
5. dd và loop device 76
a. Lệnh dd 76
b. loop device 77
6. Một số thao tác khác với storage device 78
7. Thực hành với Vmware 78
Bài 5. Install softwares 81
I. RPM 85
I.1 Tên file package và tên software 85
I.2 RPM database và rpm tool 86
I.3 Install 86
I.4 Query 87
I.5 Upgrade 88
I.6 Erase 88
I.7 Verify 88
II. DEB (chưa viết) 89
III. Cài đặt phần mềm từ source code 89
Bài 6. Quản trị user. File permission 92
1. Quản trị user 96
1.1 Users 96
1.2 Group 98
Enable LVM 122
LVM on RAID (chưa xong) 122
2. Xem thông tin về volume 123
Khái niệm PE, LE 123
Xem thông tin bằng pvdisplay, vgdisplay, lvdisplay 123
3. Quản lý các volume 124
Disable/Remove volume 124
Thêm vào/Rút ra/Hoán chuyển PV 124
11/192
Resize LV 124
4. Các mục linh tinh khác: 125
Bài 8. Quản lý process, daemon 126
I. Tiến trình 130
I.1 Tiến trình là chương trình khi nó đang được thực thi 130
Tiến trình cha, tiến trình con. Số ID của tiến trình 131
Phân bổ CPU và độ ưu tiên (số nice) của tiến trình 131
Trạng thái của tiến trình 131
Chủ sở hữu của tiến trình 132
Các signal mà tiến trình bắt 132
I.2 Các thao tác với tiến trình 132
In ra trạng thái các tiến trình bằng lệnh ps 132
Theo dõi các tiến trình bằng lệnh top (hoặc prstat, topas) 133
Tìm kiếm một tiến trình 135
Điều chỉnh số nice của tiến trình 135
I.3 Signal và lệnh kill, killall, pkill 135
Lệnh kill 135
Lệnh killall và pkill 136
I.4 Các tiến trình có tương tác. Chế độ background, foreground 136
II. Quản lý daemon 138
Các daemon nằm ở đâu ? 138
1.1 Nối máy thật với các switch ảo: 165
a. Nối NIC thật vào switch ảo: 166
b. Nối NIC ảo trên máy thật vào switch ảo: 166
1.2 Nối máy ảo với switch ảo: 168
2. VMnet0 (Bridged mode) và Virtual Bridge 168
3. VMnet1 (Host only mode) và Virtual DHCP server 169
12/192
4. VMnet8 (NAT mode) và Virtual NAT device 172
5. VM team và LAN segment 174
6. Tự tạo mạng WAN bằng VMware Workstation 174
Bài 11. Bổ túc kiến thức về TCP/IP 175
I. Khái niệm mạng máy tính. Phần cứng mạng và Giao thức mạng (chưa viết) 179
II. Mạng LAN và WAN (chưa viết) 179
III. TCP/IP (chưa viết) 179
IV. Địa chỉ IP 179
Địa chỉ IP theo cách phân lớp A, B, C (cũ) 180
Subnet 181
Tính nhẩm với địa chỉ IP 182
Địa chỉ loopback 183
IP trên Internet, IP tĩnh, IP động và ICANN 183
Địa chỉ IP riêng (private IP) 184
Bài 12. Configure card mạng (chưa xong) 185
Cài đặt driver cho card mạng 189
Lệnh ifconfig 190
Hiển thị trạng thái của card mạng 190
Gán địa chỉ IP cho card mạng 190
Gán địa chỉ IP alias cho card mạng 191
Bật tắt card mạng 191
Bộ công cụ ip 191
Tài liệu tham khảo 192
sở hữu của chiếc xe) thì luật pháp qui định tôi có toàn quyền với chiếc xe: tôi có thể sử dụng, sửa
chữa, cho mượn hoặc nhượng lại và người khác không có quyền gì với chiếc xe của tôi. Chiếc xe là tài
sản hữu hình, quyền sở hữu chiếc xe đã được luật pháp bảo hộ; tương tự như vậy với những tài sản
không hữu hình khác như ca khúc, phần mềm, tiểu thuyết thì quyền sở hữu chúng cũng cần được luật
pháp bảo hộ. Những tài sản không hữu hình này có 2 đặc điểm:
- Chúng được tạo ra bởi trí tuệ con người nên được gọi là tài sản trí tuệ (intellectual property).
Giá trị của chúng nằm ở nội dung trừu tượng chứ không nằm ở phương tiện thể hiện vật lý. Ví
dụ: một ca khúc có thể được lưu trữ bằng một bản chép tay nốt nhạc hay một file MP3 trong
máy tính hay thể hiện trong giọng hát của ca sĩ.
- Chúng rất dễ bị nhân bản (sao chép). Ví dụ: một cuốn tiểu thuyết rất dễ bị photocopy ra thành
nhiều bản. Điều này khác với tài sản hữu hình, bạn không thể nhân bản chiếc xe của anh hàng
xóm để dùng.
Chính vì đặc tính dễ bị nhân bản nên quyền sở hữu tài sản trí tuệ rất dễ bị xâm phạm. Tôi mất công
làm ra một phần mềm, phần mềm đó là tài sản của tôi bạn không được động vào nhưng có khi chỉ với
vài thao tác bạn đã sao chép được nó và phát tán lên Internet cho ngàn người dùng gây thiệt hại cho tôi
là không bán được phần mềm đó cho ngàn người kia.
Để bảo vệ quyền sở hữu đối với tài sản trí tuệ, từ thế kỉ XX luật sở hữu trí tuệ ra đời. Ngày nay quốc
gia nào (trong đó có Việt Nam) cũng có luật sở hữu trí tuệ trong hệ thống luật pháp của mình.
Trong luật sở hữu trí tuệ, tài sản trí tuệ thường được phân thành 5 loại: bản quyền (copyright), sáng
chế (patent), thương hiệu (trademark), kiểu dáng công nghiệp (industrial design), bí mật kinh doanh
(trade secret). Tài liệu này chỉ đề cập đến bản quyền, thương hiệu.
Sở hữu công (public domain)
Đối ngược với sở hữu trí tuệ là sở hữu công
Ở trên khi ta nói về tài sản (hữu hình - chiếc xe hay trí tuệ - ca khúc, phần mềm) thì muốn nhấn mạnh
nó thuộc quyền sở hữu của một cá nhân cụ thể nào đó nhưng có những tài sản lại không thuộc về một
cá nhân cụ thể nào mà thuộc về tất cả mọi người (hay nôm na là “của chung”) và được gọi là sở hữu
công cộng (public domain).
Cái gì không là sở hữu cá nhân (của riêng) thì là sở hữu công (của chung) và ngược lại. Một khi là tài
sản sở hữu công thì ai cũng có quyền sử dụng, sửa đổi, hưởng lợi bằng cách kinh doanh trên nó.
Ví dụ: tiếng Anh, định luật cơ học Newton là sở hữu công. Ai cũng có thể sử dụng và phát triển tiếng
chú thích bản quyền của nó:
• Copyright © <năm>, <tên người giữ bản quyền>
• All rights resevered
Ký hiệu © là ký hiệu của bản quyền (chữ “c” trong vòng tròn là viết tắt của copyright).
Bởi tất cả các quyền đều bị tác giả giữ, người nào muốn có quyền gì phải hỏi xin tác giả nên mới
có câu “All right reserved” - “Tất cả các quyền đã được giữ lại”. Nhắc lại rằng dù không ghi chú
thích bản quyền thì bản quyền vẫn thuộc về tác giả.
Luật pháp sẽ bảo hộ bản quyền tức là luật pháp cấm việc sao chép, sửa đổi phần mềm khi chưa có
sự đồng ý của người giữ bản quyền. Thời gian bản quyền có hiệu lực: kể từ khi phần mềm được
công bố + 70 năm sau khi tác giả qua đời hoặc 90 năm cho công ty. Hết hạn trên tự động phần
mềm trở thành public domain, không có ai giữ bản quyền.
Bản quyền có thể được chuyển nhượng từ người này sang người khác; người giữ bản quyền phần
mềm có thể không là người làm ra phần mềm. Người giữ bản quyền có quyền cấp phép cho những
người khác quyền sử dụng, sao chép, sửa đổi tác phẩm của của mình. Nếu anh A đang giữ bản
quyền phần mềm của mình làm ra mà nhượng lại bản quyền cho anh B thì lúc đó anh A muốn sử
dụng phần mềm do mình làm ra cũng phải hỏi xin anh B cấp phép. (Chú ý phân biệt bản quyền
phần mềm và các quyền với phần mềm).
– Tác quyền. Thuật ngữ “bản quyền” (copyright) thường được các quốc gia theo hệ thống luật án lệ
kiểu Anh-Mỹ dùng, trong khi đó các nước châu Âu tham gia công ước Berne lại dùng thuật ngữ
“tác quyền” (hay “quyền tác giả”) (author’s right). Tác quyền tập trung vào quyền lợi của tác giả
(người sáng tác ra tác phẩm) trong khi đó bản quyền tập trung vào quyền lợi kinh tế của người giữ
bản quyền (có thể không phải là tác giả). Sự khác nhau giữa 2 khái niệm này còn ở quyền nhân
thân (moral rights) nhưng tài liệu này không đề cập đến.
– Công ước Berne hay đầy đủ hơn là “Công ước Berne về bảo hộ các tác phẩm văn học và nghệ
thuật” là công ước về tác quyền (chú ý “tác quyền” chứ không phải “bản quyền”) giữa các quốc
gia. Trước đây các quốc gia thường từ chối tác quyền của các tác phẩm ngoại quốc, công ước
Berne ra đời đảm bảo các quốc gia tham gia công ước Berne phải công nhận tác quyền này. Công
ước Berne chủ yếu được các nước châu Âu tham gia và Việt Nam cũng đã tham gia công ước này
15/192
từ năm 2004. Công ước Berne chỉ bảo hộ tác phẩm văn học và nghệ thuật, không bảo hộ phần
hoặc
SM
vào sau tên thương hiệu của hàng hóa hoặc dịch vụ đã được dùng trong thực tế
nhưng chưa đăng kí. (viết tắt: TM cho trademark, SM cho service mark)
Việc đăng kí thương hiệu cho một sản phẩm chỉ đảm bảo thương hiệu đó không bị dùng lại chứ không
đảm bảo cá nhân/tổ chức khác sản xuất sản phẩm tương tự nhưng với thương hiệu khác đi.
Ví dụ: hãng AT&T có làm ra một hệ điều hành và đăng kí thương hiệu cho nó là UNIX. Có những tổ
chức hoặc cá nhân khác làm ra những hệ điều hành có chức năng tương tự như UNIX nhưng vì thương
hiệu UNIX đã được đăng kí nên không thể dùng tên UNIX được nữa. Tuy nhiên người ta vẫn muốn
dùng một cái tên thể hiện sự tương tự với UNIX nên đã dùng tên “UNIX-like” hoặc cẩn thận hơn nữa
dùng tên “*nix” để chỉ những hệ điều hành có chức năng tương tự UNIX nhưng không phải do AT&T
làm.
2. Phân loại phần mềm theo quyền của người sử dụng
EULA và các quyền của người sử dụng
Nhắc lại rằng theo luật sở hữu trí tuệ, với một phần mềm (dĩ nhiên không xét phần mềm public
domain) thì người chủ sở hữu (có thể là tác giả hoặc công ty mà tác giả đã nhượng lại quyền sở hữu)
giữ bản quyền tức là nắm giữ tất cả các quyền như là quyền sử dụng, quyền sao chép, quyền sửa đổi
v.v … ; mọi người khác không có những quyền này. Người giữ bản quyền thường:
16/192
- Hoặc kinh doanh các quyền này, chả hạn như bán quyền sử dụng thông qua việc đặt CD key
lên phần mềm, ai muốn sử dụng phần mềm thì phải mua CD key từ chủ sở hữu. Việc bán/mua
phần mềm là bán/mua quyền sử dụng phần mềm chứ không phải bán/mua công sức làm
phần mềm.
- Hoặc “cho không” các quyền này cho người sử dụng do chủ sở hữu muốn muốn chia sẻ niềm
đam mê làm phần mềm với người khác, muốn phục vụ cộng đồng, muốn nổi tiếng, v.v
Danh sách các quyền được cấp và các ràng buộc kèm theo được ghi trong hợp đồng giữa người giữ
bản quyền và người sử dụng, còn gọi là giấy phép sử dụng, thuật ngữ tiếng Anh là “Licence
Agreement”. Giấy phép này có thể ở dạng giấy hoặc được hiển thị khi người dùng bắt đầu cài đặt phần
mềm - ở dạng này được gọi là End user Licence Agreement (EULA). Người dùng phải bấm “accept”
để chấp thuận các quyền và ràng buộc thì mới tiếp tục cài được phần mềm, điều này tương đương với
Cũng có khi người dùng được quyền phát tán lại phần mềm shareware cho người khác
dùng thử.
Free/Open source software (FOSS) (phần mềm Tự do/Nguồn mở): Người giữ bản quyền cho phép
người dùng đủ các quyền của mình như quyền sử dụng, sao chép, nghiên cứu, sửa đổi phần mềm. Để
đảm bảo người sử dụng có thể nghiên cứu, sửa đổi phần mềm thì mã nguồn của các phần mềm loại
này phải được công bố. Người ta đưa ra khoảng 30 mẫu EULA cho phần mềm loại này trong đó phổ
biến nhất là GPL, BSD (sẽ nói ở phần sau).
17/192
Richard Stallman (biệt danh RSM) là
người khởi xướng phong trào phần
mềm tự do. Ông đã:
- đưa ra triết lý tự do cho phần mềm
- phát động dự án GNU, thành lập tổ
chức FSF
- viết ra phần mềm Emacs và GCC
- đưa ra giấy phép GPL
(ảnh lấy từ
http://en.wikipedia.org/wiki/Richard_Stallman)
Disclaimer of warranty (chối bỏ bảo đảm)
Dù phần mềm độc quyền hay tự do/nguồn mở thì trong EULA, người giữ bản quyền luôn tuyên bố là
sẽ không chịu trách nhiệm về các thiệt hại do phần mềm gây ra và người sử dụng phải chịu mọi rủi ro
của phần mềm. Ví dụ EULA của một phần mềm WinRAR ghi:
“WinRAR archiver is distributed "as is". No warranty of any kind is expressed or implied.
You use at your own risk. Neither the author nor the agents of the author will be liable for data
loss, damages, loss of profits or any other kind of loss while using or misusing this software.”
(“as is” như những gì hiện có)
3. Free/Open source softwares (FOSS)
a. Định nghĩa Free/Open source softwares
Bên cạnh phần mềm độc quyền hạn chế quyền của người dùng, còn có loại phần mềm cho người sử
dụng các quyền của tác giả (dĩ nhiên tác giả vẫn giữ bản quyền). Với những phần mềm này, người sử
– Freeware là phần mềm độc quyền, chỉ cho người dùng mỗi quyền sử dụng và người
dùng không phải mua quyền này (do đó mới nói là miễn phí), các quyền khác là sửa
đổi, phân phối lại thường không được cấp trong khi đó Free softwares thì cho người
dùng hết các quyền trên.
18/192
– Mã nguồn freeware thường không được công bố trong khi mã nguồn của free software
luôn được công bố.
Để thực hành triết lý tự do cho phần mềm, năm 1983, Richard Stallman đã phát động phong trào làm
phần mềm tự do (free software movement) bằng cách kêu gọi mọi người tham gia dự án làm một hệ
điều hành GNU có chức năng tương tự như UNIX nhưng với điều khoản “tự do” để thay thế cho hệ
điều hành UNIX độc quyền bấy giờ. Ông cũng thành lập tổ chức Free Software Foundation để quản lý
dự án và tuyên truyền triết lý tự do. Dự án đã sản sinh ra rất nhiều phần mềm tự do cho cộng đồng,
trong đó chính Richard Stallman đã viết ra phần mềm xử lý văn bản Emacs, và đặc biệt trình biên dịch
GCC mà tất cả các lập trình viên phần mềm tự do sau này dùng. Dự án không hoàn thành nhưng các
phần mềm viết cho GNU có thể kết hợp với nhân Linux thành một hệ điều hành hoàn chỉnh mà sau
này phát triển hẳn thành ngành công nghiệp Linux. Năm 1990, Richard Stallman cũng làm ra giấy
phép phần mềm tự do GPL mà hầu hêt các phần mềm GNU, bản thân nhân Linux, cũng như vô vàn
phần mềm sau này dùng.
Open source soware
Đến năm 1998, phong trào phần mềm tự do bắt đầu bị chia tách, tất cả cũng chỉ tại cái tên “’free
softwares”. Thứ nhất, chữ “free” trong tên gọi dễ gây hiểu nhầm là “miễn phí” hơn là “tự do”. Thứ
hai, theo triết lý “tự do” của mình, Richard Stallman chỉ trích cay nghiệt các công ty làm phần mềm
độc quyền là đã tước đoạt quyền tự do của người dùng, điều này gây ra sự căng thẳng giữa phong trào
phần mềm tự do và các công ty phần mềm. Với niềm tin rằng
cần thiết phải lôi kéo các công ty vào việc phát triển phần
mềm tự do hơn là đối lập với họ, Eric S. Raymond, Bruce
Perens, Linus Torvald và một số người khác đã họp bàn để
chọn một cái tên khác thay thế cho tên “free softwares” và cái
tên “open source softwares” đã được chọn. Theo Eric S.
Raymond, cái tên này có ý nghĩa tiếp thị cho phần mềm tự do,
lớn đến phong trào “Open source
softwares” và cũng là đồng sáng
lập OSI.
Ảnh lấy từ:
http://en.wikipedia.org/wiki/Eric_S._Raymond
không phải là mã nguồn của phần mềm ban đầu để không ảnh hưởng tới danh tiêng của tác giả
phòng trường hợp mã nguồn phái sinh có chất lượng tồi. Để phân biệt thì có thể dùng tên hoặc
phiên bản khác đi so với phần mềm ban đầu.
5. No Discrimination Against Persons or Groups (không phân biệt đối tượng sử dụng): Giấy phép
không được ràng buộc người sử dụng chỉ là cá nhân hay chỉ là tổ chức hoặc bất cứ một nhóm
người cụ thể nào.
6. No Discrimination Against Fields of Endeavor (không phân biệt lĩnh vực sử dụng): Giấy phép
không được ràng buộc phần mềm chỉ được dùng trong lĩnh vực kinh doanh hoặc chỉ được dùng
trong nghiên cứu/giáo dục hoặc bất cứ một lĩnh vực cụ thể nào.
7. Distribution of License (sự phân phối giấy phép): Khi cá nhân/tổ chức A nhận được phần mềm từ
tay cá nhân/tổ chức X thì tất cả các quyền trong giấy phép được tự động cấp cho A; A không cần
phải kí thêm một giấy phép gì với X nếu chỉ để có các quyền này.
8. License Must Not Be Specific to a Product (giấy phép không được định hướng việc sử dụng tới
một ngữ cảnh nào đặc biệt): Giấy phép này không được giới hạn phần mềm chỉ được sử dụng khi
nó đi kèm với một phần mềm cụ thể nào.
9. License Must Not Restrict Other Software (giấy phép không được đặt ràng buộc lên các phần mềm
khác): Giấy phép không được đặt ràng buộc lên các phần mềm khác được phân phối cùng với
phần mềm chẳng hạn như không được yêu cầu các phần mềm đi cùng cũng phải là phần mềm
nguồn mở
10. License Must Be Technology-Neutral (giấy phép phải trung lập về mặt công nghệ): giấy phép phải
cho phần mềm được phân phối dưới bất kì phương tiện gì như CD, FTP …
Về việc dễ gây hiểu nhầm thì cái tên “open source” cũng chẳng khá
hơn cái tên “free software”, tuy nó tránh được “vỏ dưa” là chữ
“free” (miễn phí/tự do ?) nhưng nó lại gặp “vỏ dừa” là trước khi
OSI ra đời, người ta đã quen dùng cái tên “open source” rồi. Khi
Ảnh lấy từ trang web cá nhân của Bruce
Peren: http://perens.com
mềm và các công ty phần mềm độc quyền tước đoạt. Có rất nhiều EULA phần mềm thỏa mãn
triết lý tự do, trong số đó, những người này ủng hộ nhất là giấy phép GPL do chính FSF đưa ra.
Đây là giấy phép phần mềm tự do yêu cầu mọi phần mềm phái sinh từ nó cũng phải là phần
mềm tự do. Nhìn chung các công ty rất sợ giấy phép GPL và ác cảm với cái tên “free
softwares”, còn giới truyền thông thì vẫn hay nhầm free softwares thành freeware.
- “Open source softwares”: phong trào này được tách ra từ free
softwares với mục đích phát triển free softwares thành thành một
xu hướng trong nền công nghiệp phần mềm chứ không chỉ bó hẹp
là của riêng những người say mê lập trình/hackers. Tổ chức OSI
đứng đằng sau phong trào này, mục đích của nó là thu hút được
nhiều công ty tham gia phong trào. Khi một công ty nào đó muốn
công bố mã nguồn nhưng không muốn đặt dưới giấy phép GPL, nó
có thể tự đưa ra giấy phép của mình và đến để OSI chứng nhận thỏa
mãn điều kiện Open source. Ngày nay các công ty phần mềm độc
quyền khổng lồ đều đã tham gia phát triển phần mềm open source.
Ví dụ Microsoft có hẳn trung tâm Open Source, nó cũng đưa ra
giấy phép riêng của mình là Microsoft Public License và đã được OSI chứng nhận là phần
mềm nguồn mở. Mô hình phát triển phần mềm của phong trào được phân tích trong cuốn “The
cathedral and Bazaar” của Eric S. Raymond.
Nhìn chung người ta thường ví “free softwares” là mục tiêu còn “open source” là phương tiện. Tuy
triết lý 2 xu hướng khác nhau nhưng điều khoản của 2 định nghĩa “free softwares” và “open source
softwares” là gần tương đương nhau; cả OSI và Richard Stallman đều công nhận điều này. Hầu như
một EULA nào được tổ chức Free Softwares Foundation chứng nhận là thỏa mãn free softwares thì
cũng được OSI xác nhận là thỏa mãn Open Source Definition và ngược lại thế nên trong thực tế việc
phân biệt 2 định nghĩa này không còn quan trọng nữa. Để tránh một sự thiên vị nào người ta đã đưa ra
cái tên Free and Open Source (FOSS hoặc F/OSS) hoặc Open Source and Free Softwares (OSS/FS)
thậm chí Free/Libre/Open Source (FLOSS) để chỉ những phần mềm của cả 2 phong trào này. Cái tên
Free and Open Source Softwares đã được dùng rất phổ biến hiện nay.
phần mềm FOSS, chỗ thì người ta cho không, chỗ thì người ta rao “bán” với giá đắt. FOSS không
có ràng buộc gì về việc phân phối lại bản sao.
Việc phân phối lại phần mềm bằng cách in ra CD, cung cấp đường truyền Internet để download, …
nhìn chung là tốn kém. Một lập trình viên có thể hào phóng cho bạn quyền sử dụng, sao chép, sửa đổi
phần mềm của anh ta nhưng bước đầu tiên anh ta phải làm là phân phối phần mềm đó đến tay bạn đã
rồi thì sau đó bạn mới sử dụng, sửa đổi mà việc phân phối này thì tốn kém. Do đó không có gì là mâu
thuẫn với tinh thần hào hiệp của người lập trình viên khi anh ta thu phí cho việc phân phối phần mềm.
Cần hiểu ở đây anh ta tính phí đĩa CD, đường truyền Internet để download phần mềm … chứ không
phải là bán quyền sử dụng phần mềm. Định nghĩa Open source của Bruce Peren cũng ghi rõ trong tiêu
chí 1 là giấy phép của phần mêm Open source thì không được ràng buộc việc phân phối lại phần mềm
là phải tính phí hay không tính phí. Định nghĩa free softwares của Richar Stallman cũng không hề có
ràng buộc gì về giá tiền của việc phân phối phần mềm.
Đến đây bạn có thể lý sự rằng: “Anh bán cho tôi một CD phần mềm FOSS và bảo số tiền tôi phải bỏ ra
là tiền của đĩa CD chứ không phải tiền mua quyền sử dụng phần mềm. Nhưng tôi thấy có khác gì đâu
vì đằng nào tôi cũng phải mất tiền mua. Mà mua xong đĩa CD đó tôi cũng chỉ có biết chạy phần mềm
chứ tôi đâu quan tâm đến việc đọc và sửa mã nguồn phần mềm, nên với cách sử dụng của tôi thì FOSS
cũng bằng độc quyền, vẫn mất phí”. Một phần mềm FOSS với phí phân phối cao là khác với một phần
mềm độc quyền giá cao. Vấn đề ở đây là khi ai đó có được phần mềm FOSS trong tay thì người ấy có
thể sao chép cho người khác tùy ý với thu phí hay không thu phí. Điều này có nghĩa là bạn có thể tìm
được cách để không mất phí mà vẫn có phần mềm FOSS. Chả hạn nếu người hàng xóm của bạn phải
mất tiền để có được đĩa CD phần mềm FOSS, bạn hoàn toàn có quyền sao chép lại CD đó về dùng.
Tuy nhiên với phần mềm độc quyền thì đây là hành vi phạm pháp, nếu bạn bỏ tiền ra mua 1 bản sao
của phần mềm thì phần mềm đó chỉ được phép cài trên đúng 1 máy mà không thể sao ra để cài trên 2
máy.
Hệ quả quan trọng của việc tự do phân phối lại FOSS là người lập trình phần mềm FOSS khi lần đầu
tiên phân phối phần mềm FOSS nếu có tính phí phân phối rất cao thì cũng không cản trở việc nhiều
người dùng phần mềm đó. Lý do là chỉ cần có người có được 1 bản sao của phần mềm đó thì ngay lập
tức có thể phân phối lại phần mềm đó mà không đòi hỏi phí. Có thể bạn sẽ gặp tình huống: cùng một
phần mềm FOSS chỗ thì “bán” đĩa CD rất đắt, chỗ thì tặng không.
FOSS thương mại ?
+
GNU General Public License (GPL) 2.0 47.22%
+
GNU Lesser General Public License (LGPL) 2.1 8.98%
+
GNU General Public License (GPL) 3.0 6.39%
+
GNU Lesser General Public License (LGPL) 3.0 0.48%
2. Artistic License (Perl) 8.96%
3. BSD License 2.0 6.23%
4. MIT License 5.15%
5. Apache License 2.0 4.36%
6. Code Project Open 1.02 License 2.87%
7. Microsoft Public License (Ms-PL) 1.66%
8. Mozilla Public License (MPL) 1.46%
+ Mozilla Public License (MPL) 1.0 0.25%
+ Mozilla Public License (MPL) 1.1 1.21%
9. Common Public License (CPL) 0.52%
10. Eclipse Public License (EPL) 0.51%
11. zlib/libpng License 0.41%
12. Academic Free License 0.39%
13.
Common Development and Distribution
License (CDDL)
0.33%
14. Open Software License (OSL) 0.29%
15. Ruby License 0.23%
16. PHP License Version 3.0 0.23%
Bảng xếp hạng thị phần sử dụng các EULA năm 2010 của Black Duck Open Source Resource Center
• Do Free software và Open source software là gần tương đương nhau nên các giấy phép nếu thỏa
cùng giấy phép phần mềm gốc, được phép liên kết với phần mềm độc quyền.
4. Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache
Các giấy phép như BSD, MIT X11, Apache … ngoài ràng buộc chối bỏ bảo đảm và yêu cầu ghi chú
thích người giữ bản quyền phần mềm gốc khi phát hành lại, thì trao hết các quyền của tác giả cho
người sử dụng. Người sử dụng có các quyền như với phần mềm public domain (thế nên gọi là giấy
phép kiểu public domain), trong đó có thể bán lại phần mềm, kết hợp phần mềm với phần mềm khác
tạo thành phần mềm độc quyền. Điều khoản các giấy phép này rất dễ dãi nên các giấy phép này còn
được gọi là “permissive free software licence” (tính từ “permissive” nghĩa là: có xu hướng cho phép,
dễ dãi thoải mái)
BSD (copycenter)
Giấy phép này do đại học Berkeley lần đầu đưa ra kèm theo hệ điều hành BSD (Berkeley Software
Distribution). Ban đầu nó gồm 4 điều khoản (vì thế còn gọi là 4-clause BSD) trong đó có điều khoản
về quảng cáo vốn gây ra sự bất tiện trong thực tế nên đã bị bỏ đi và ngày nay người ta thường dùng
giấy phép BSD 3 điều khoản (còn gọi là BSD 2.0 hay 3 clause BSD) như dưới đây
Copyright (c) <year>, <copyright holder>
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
24/192
3. Neither the name of the <organization> nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ''AS IS'' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE
MIT licence
Giấy phép này do đại học MIT lần đầu đưa ra kèm theo phần mềm X Windows System, nó cũng còn
được gọi là MIT X11. Điều khoản của nó tương đương với giấy phép BSD 2 điều khoản (1), (2)
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in the
Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
25/192