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 publicdomain thì
Trang 1Giáo trình
NHẬP MÔN QUẢN TRỊ HỆ THỐNG LINUX
Trần Huy Thắng(tranhuythang@gmail.com)
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ả.
Trang 2Lề của sách được đặt chế độ mirror margin để bạn có thể in 2 mặt.
Trang 3Lờ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ốngcũ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 đúngmự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áclớ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ườimớ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ọanhiề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ênRedhat/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ủaphần mềm này.)
(Chúng tôi cũng cho rằng phần Shell script để tự động hóa các thao tác quản trị là phần nâng cao chỉdành cho những người đã quen với Linux nên không đề cập đến trong cuốn sách nhập môn này.)
Do điều kiện thời gian, chúng tôi chưa viết được phần 3 cũng như còn thiếu một số điểm ở phần
1 và phần 2 nên rất mong bạn đọc có thể tham gia viết tiếp để lắp ghép thành một cuốn sách hoàn chỉnh.
Tài liệu tham khảo _145
Trang 4Mục lục
Bài 1 Khái niệm FOSS và *nix 9
I FOSS 10
1 Sở hữu trí tuệ 10
Sở hữu trí tuệ (intelectual property) 10
Sở hữu công (public domain) 10
Đối ngược với sở hữu trí tuệ là sở hữu công 10
Khi sở hữu trí tuệ trở thành sở hữu công 11
Copyright (bản quyền) © 11
Thương hiệu (trademark) 12
2 Phân loại phần mềm theo quyền của người sử dụng 13
EULA và các quyền của người sử dụng 13
Proprietary softwares hay FOSS 13
Disclaimer of warranty (chối bỏ bảo đảm) 14
3 Free/Open source softwares (FOSS) 14
a Định nghĩa Free/Open source softwares 14
Free software 14
Open source software 15
Free softwares vs Open source 17
b FOSS và chuyện “miễn phí” 17
FOSS thì miễn phí ? 17
FOSS thương mại ? 18
c Các mẫu giấy phép FOSS 19
4 Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache 20
BSD (copycenter) 20
MIT licence 21
Apache 22
5 Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết) 22
6 Giấy phép (strong) copyleft: GPL (chưa xong) 22
Ý tưởng của giấy phép GPL: 22
Ý nghĩa của giấy phép GPL: 23
Áp dụng các điều khoản của GPL 23
7 Mô hình phát triển phần mềm FOSS (chưa viết) 23
8 Mô hình kinh doanh phần mềm FOSS (chưa viết) 23
9 Những quan niệm sai lầm thường thấy về FOSS (chưa viết) 23
II *nix 23
1 Giới thiệu UNIX, BSD 23
UNIX 24
BSD 24
2 UNIX và UNIX-like (*nix) 25
3 Chuẩn POSIX (SUS) 25
4 Nhân Linux và Dự án GNU 26
5 Linux distribution 26
Bài 2 Bổ túc kiến thức về HDD Cài đặt Linux, FreeBSD (chưa xong) 29
1 Hiểu về HDD 29
1.a Cấu trúc vật lý của HDD 29
1.b Cấu trúc logic của HDD 30
1.c Quá trình khởi động OS của máy tính 30
2 Công cụ máy ảo để học thực hành Linux Một số chú ý về Vmware Workstation 30
3 Các cách để có được một bản Linux distro và trường hợp của Redhat 30
4 Cài đặt Linux, FreeBSD 30
4.a Cài đặt Linux 30
4.b Cài đặt FreeBSD 30
4.c Tự động hóa quá trình cài đặt 30
5 Vấn đề multi OS 30
Bài 3 Làm quen với Linux command 31
1 Đăng nhập và tắt máy 31
2 Kernel, Shell 32
Trang 53 Virtual Console và Terminal 33
4 Lệnh trong Linux 33
a Cách viêt lệnh 33
b Thực thi executable file 34
c Dừng một lệnh 35
c Shell script 35
d Metacharacters 35
e Help 36
f History 36
5 su 36
6 Làm việc với file và thư mục trên *nix 36
a Cấu trúc file và thư mục của Linux khác với của Windows 36
b Đường dẫn thư mục của Linux – kí hiệu /, thói quen TAB, thư mục ~ 37
Hãy cẩn thận với dấu / 37
Thư mục home, thư mục hiện hành, thư mục ~ .38
Muốn nhanh thì bấm TAB hoặc TAB TAB 38
Khi tên file, thư mục chứa kí tự đặc biệt 39
c Lệnh ls –l, xem thông tin về file, thư mục 39
d Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục 40
Hiển thị nội dung file 40
Tạo thư mục mới 40
Tạo file mới 40
Đổi tên/di chuyển file và thư mục 40
Copy file và thư mục 40
Xóa file hoặc thư mục 41
e Midnight Commander (mc) 41
f Link 41
g Archive và Compress file 41
h Tìm kiếm file và thư mục 42
7 Filesystem Hierarchy standard 43
8 Trong *nix, mọi thứ đều là file 45
9 Redirection và xargs 46
a Redirect stdin, stdout, stderr to file 46
b Pipe và kết hợp với grep, wc, sort, less 48
c xargs 49
10 VIM editor 49
11 Regular expression 50
Bài 4 Devices - Filesystems – Mounting 52
1 Device 52
a Peripheral device và Driver 52
Peripheral device 52
Phân loại device: block, character, virtual 52
Driver 53
b Device file (special file) 53
c Sử dụng storage device 55
2 Filesystem 55
a Filesystem của block device 55
b Format 55
i) fdisk – edit partition table 56
ii) mkfs (make filesystem) 56
3 Mounting 57
a Lệnh mount 57
b file cấu hình /etc/fstab 58
c file cấu hình /etc/mtab 59
4 Hai partition đặc biệt của Linux 60
5 dd và loop device 60
a Lệnh dd 60
Trang 6b loop device 61
6 Một số thao tác khác với storage device 62
7 Thực hành với Vmware 63
Bài 5 Install softwares 65
I RPM 65
I.1 Tên file package và tên software 65
I.2 RPM database và rpm tool 65
I.3 Install 66
I.4 Query 67
I.5 Upgrade 68
I.6 Erase 68
I.7 Verify 68
II DEB (chưa viết) 69
III Cài đặt phần mềm từ source code 69
Bài 6 Quản trị user File permission 72
1 Quản trị user 72
1.1 Users 72
1.2 Group 74
1.3 Reset password của root 75
2 File permission 76
Chủ sở hữu, nhóm chủ sở hữu mặc định 77
Thay đổi chủ sở hữu, nhóm chủ sở hữu bằng lệnh chown, chgrp 77
Thay đổi quyền truy cập r, w, x với các đối tượng u, g, o 77
SUID, SGID, sticky bit 79
Set UID và Set GID cho file khả thi 79
Set GID cho thư mục 80
Sticky bit 81
Kí hiệu SUID, SGID, Sticky bit bằng chữ số 81
3 Quota 82
1-Cài đặt phần mềm quota 82
2-Mount partition với thuộc tính usrquota 83
3-Khởi tạo quota database trên partition bằng lệnh quotacheck 83
4-enable (disable) quota bằng quotaon (quotaoff) 84
5-Đặt limit, grace cho user bằng lệnh edquota 84
6-Xem lại thông tin về quota 85
7-Thử nghiệm quota 85
Bài 7 Advanced partitioning: RAID & LVM 87
I Redundant Array of Inexpensive Disks 87
1 Khái niệm RAID 87
2 Thiết lập và sử dụng RAID 89
3 Xem thông tin về array 90
4 Quản lý disk trong array 91
5 Hủy RAID array 91
6 File /etc/mdadm.con 92
7 Stripe hay Linear 92
II Logical Volume Management 92
1 Thiết lập LVM 92
Thiết lập và sử dụng LV 92
Enable LVM 94
LVM on RAID (chưa xong) 94
2 Xem thông tin về volume 95
Khái niệm PE, LE 95
Xem thông tin bằng pvdisplay, vgdisplay, lvdisplay 95
3 Quản lý các volume 97
Disable/Remove volume 97
Thêm vào/Rút ra/Hoán chuyển PV 97
Resize LV 97
4 Các mục linh tinh khác: 98
Trang 7Bài 8 Quản lý process, daemon 99
I Tiến trình 99
I.1 Tiến trình là chương trình khi nó đang được thực thi 99
Tiến trình cha, tiến trình con Số ID của tiến trình 100
Phân bổ CPU và độ ưu tiên (số nice) của tiến trình 100
Trạng thái của tiến trình 100
Chủ sở hữu của tiến trình 101
Các signal mà tiến trình bắt 101
I.2 Các thao tác với tiến trình 101
In ra trạng thái các tiến trình bằng lệnh ps 101
Theo dõi các tiến trình bằng lệnh top (hoặc prstat, topas) 102
Tìm kiếm một tiến trình 104
Điều chỉnh số nice của tiến trình 104
I.3 Signal và lệnh kill, killall, pkill 104
Lệnh kill 104
Lệnh killall và pkill 105
I.4 Các tiến trình có tương tác Chế độ background, foreground 105
II Quản lý daemon 107
Các daemon nằm ở đâu ? 107
Trực tiếp bật/tắt daemon 107
/etc/rc.d/rc[0-6].d – tập daemon cho mỗi run level 108
Các công cụ quản lý daemon 109
III Lập lịch (scheduling) 111
cron 111
System cron jobs 111
User cron jobs 112
at 112
Bài 9 Quá trình khởi động (grub, kernel, init) và tắt máy của Linux 113
I GRUB 113
1 Chức năng của GRUB 113
2 Quá trình tải GRUB 114
3 Cài lại GRUB 115
4 File grub.conf (menu.lst) 116
II Nạp hệ điều hành từ GRUB 117
Truy xuất device 118
Qui ước kí hiệu device của GRUB 118
Truy xuất file của GRUB 118
Tải nhân Linux 119
Ba lệnh để tải nhân Linux: kernel, root, initrd 119
Tải nhân Linux thủ công 119
Tải nhân FreeBSD 121
Nạp bootloader của các hệ điều hành khác 121
III init 122
1 /sbin/init chạy và đọc file /etc/initab 122
2 /etc/inittab 122
3 Thực thi các script khởi tạo hệ thống trong thư mục /etc/rc.d 123
IV Tắt máy 124
Bài 10 Tạo mạng ảo bằng VMware Workstation 126
1 Nối máy thật/ máy ảo vào các switch ảo 126
1.1 Nối máy thật với các switch ảo: 126
a Nối NIC thật vào switch ảo: 127
b Nối NIC ảo trên máy thật vào switch ảo: 127
1.2 Nối máy ảo với switch ảo: 129
2 VMnet0 (Bridged mode) và Virtual Bridge 129
3 VMnet1 (Host only mode) và Virtual DHCP server 130
4 VMnet8 (NAT mode) và Virtual NAT device 133
5 VM team và LAN segment 135
Trang 86 Tự tạo mạng WAN bằng VMware Workstation 135
Bài 11 Bổ túc kiến thức về TCP/IP 136
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) 136
II Mạng LAN và WAN (chưa viết) 136
III TCP/IP (chưa viết) 136
IV Địa chỉ IP 136
Địa chỉ IP theo cách phân lớp A, B, C (cũ) 137
Subnet 138
Tính nhẩm với địa chỉ IP 139
Địa chỉ loopback 140
IP trên Internet, IP tĩnh, IP động và ICANN 140
Địa chỉ IP riêng (private IP) 141
Bài 12 Configure card mạng (chưa xong) 142
Cài đặt driver cho card mạng 142
Lệnh ifconfig 142
Hiển thị trạng thái của card mạng 142
Gán địa chỉ IP cho card mạng 143
Gán địa chỉ IP alias cho card mạng 143
Bật tắt card mạng 144
Bộ công cụ ip 144
Tài liệu tham khảo 145
Trang 9Đâ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 tranhuythang@gmail.com ,
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 10
1 Sở hữu trí tuệ 10
Sở hữu trí tuệ (intelectual property) 10
Sở hữu công (public domain) 10
Copyright (bản quyền) © 11
Thương hiệu (trademark) 12
2 Phân loại phần mềm theo quyền của người sử dụng 13
EULA và các quyền của người sử dụng 13
Proprietary softwares hay FOSS 13
Disclaimer of warranty (chối bỏ bảo đảm) 14
3 Free/Open source softwares (FOSS) 14
a Định nghĩa Free/Open source softwares 14
Free software 14
Open source software 15
Free softwares vs Open source 17
b FOSS và chuyện “miễn phí” 17
FOSS thì miễn phí ? 17
FOSS thương mại ? 18
c Các mẫu giấy phép FOSS 19
4 Các giấy phép FOSS kiểu public domain: BSD, MIT, Apache 20
BSD (copycenter) 20
MIT licence 21
Apache 22
5 Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết) 22
6 Giấy phép (strong) copyleft: GPL (chưa xong) 22
7 Mô hình phát triển phần mềm FOSS (chưa viết) 23
8 Mô hình kinh doanh phần mềm FOSS (chưa viết) 23
9 Những quan niệm sai lầm thường thấy về FOSS (chưa viết) 23
II *nix 23
1 Giới thiệu UNIX, BSD 23
UNIX 24
BSD 24
2 UNIX và UNIX-like (*nix) 25
3 Chuẩn POSIX (SUS) 25
4 Nhân Linux và Dự án GNU 26
5 Linux distribution 26
Linux, UNIX thì có liên quan gì đến chuyện “bản quyền”, “nguồn mở” với “miễn phí” ?
Hàng ngày chúng ta nghe thấy phương tiện truyền thông nói nhiều về “Linux”, “bản quyền”, “nguồn
mở”, “miễn phí” … thấy những thứ này rất mơ hồ, rối rắm Chìa khóa để gỡ rối mớ bòng bong này
là khái niệm “bản quyền”.
(Dưới đây là mấy dòng ngẫu hứng giúp bạn đọc đối chiếu nhanh hiểu biết của mình về vấn đề.)
Linux là một phần mềm tự do (free software) (“free” là “tự do” chứ không phải “miễn phí”) và do đó người dùng có thể sử dụng miễn phí nhưng để có được một bản phân phối Linux (Linux distro) có thể vẫn phải mất phí
Phần mềm nguồn mở (open source softwares) theo cách hiểu thông thường chỉ là phần mềm có mã nguồn được công bố Nhưng đây mới chỉ là phần nổi, phần chìm của tảng băng chính là những ràng buộc về mã nguồn này Tổ chức OSI đã đưa ra định nghĩa về phần mềm nguồn mở với 10 tiêu chí chặt chẽ (mà cũng gần tương đương với phần mềm tự do) Khi bàn luận về phần mềm nguồn mở người ta
có ý hướng đến những tiêu chí này hơn là cách hiểu giản đơn thường thấy
Khái niệm phần mềm tự do hay nguồn mở (free/open source softwares) đều được xây dựng trên luật bản quyền Có thể bạn đã từng nghe thấy có người nói “dùng Linux để tránh tình trạng sử dụng
Trang 10Windows không có bản quyền” nhưng xin thưa Linux hay Windows hay phần lớn các phần mềm (trừpublic domain – sẽ nói sau) dù nguồn mở, nguồn đóng, miễn phí hay trả phí đều là phần mềm có bảnquyền ! Tôi đã từng thấy có một cách hiểu sai như sau: “Linux và những thứ như phần mềm nguồn mởthì không có bản quyền do đó được dùng miễn phí còn Windows là phần mềm có bản quyền nênkhông được sao chép lậu cho nhau mà phải mua” (cách hiểu sai) !!!.
Linux không là UNIX UNIX là một thương hiệu mà Linux hay BSD tuy tương thích với UNIX nhưngkhông thể được gọi là UNIX
Bản quyền hay thương hiệu là 2 nhánh con của luật sở hữu trí tuệ, do đó để hiểu các khía cạnh pháp lýcủa Linux và UNIX chúng ta sẽ bắt đầu bằng khái niệm sở hữu trí tuệ rồi đến phần mềm tự do/nguồn
mở và cuối cùng mới là đích *nix
I FOSS
1 Sở hữu trí tuệ
Sở hữu trí tuệ (intelectual property)
Trong đời sống hàng ngày ta đã quen với khái niệm “sở hữu”: nếu tôi có một chiếc xe (hay tôi là chủ
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àisả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ó
Trang 11Ví 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 Anh cũng như kinh doanh sách viết về định luật cơ học Newton Nhưng với một cuốn tiểu thuyết vừa viết xong của anh X thì chỉ mình anh X có quyền xuất bản.
Khi sở hữu trí tuệ trở thành sở hữu công
Anh X là chủ sở hữu tài sản trí tuệ A nhưng liệu A vĩnh viễn thuộc về X ? Điều này là không cần thiết
vì anh X cũng chỉ sống được hữu hạn một số năm Quan trọng hơn tài sản trí tuệ A có thể là tài sản rất hữu ích cho cộng đồng nếu anh X giữ quyền sở hữu và người khác không có quyền động tới X thì điềunày lại trở thành nhân tố cản trở sự phát triển của cộng đồng Vì 2 lí do này luật sở hữu trí tuệ qui địnhtài sản trí tuệ chỉ thuộc về chủ sở hữu trong một thời gian hữu hạn Ví dụ với 3 loại tài sản trí tuệ:
- Sáng chế, ở châu Âu, được bảo hộ trong 20 năm kể từ khi đăng kí
- Kiểu dáng công nghiệp, ở Canda, được bảo hộ trong 10 năm kể từ khi đăng kí
- Bản quyền, ở hầu hết các nước, được bảo hộ trong thời gian chủ sở hữu sống cho đến khoảng
70 năm sau khi chết
Hết thời gian bảo hộ, tài sản trí tuệ không còn chủ sở hữu nữa, nó trở thành sở hữu công Tài sản trí tuệ cũng trở thành sở hữu công nếu như chủ sở hữu tự thân từ bỏ quyền sở hữu của mình
Ví dụ: kịch của Shakespears ban đầu là Shakespear giữ bản quyền nhưng đến ngày nay đã rất lâu sau khi Shakespears mất nên kịch Shakespear hết hiệu lực bảo hộ bản quyền và trở thành sở hữu công Ai cũng có thể in sách kịch Shakespears mà không cần hỏi xin ai
từ “phần mềm” thay vì “tác phẩm” mà không mất tính tổng quát
Khi một người vừa sáng tạo ra một tác phẩm thì tự động bản quyền tác phẩm thuộc về (duy nhất)người sáng tạo Người sáng tạo thậm chí không cần đăng kí bản quyền với một tổ chức nào Tuy
không phải đăng ký nhưng một số quốc gia có luật bản quyền yêu cầu tác giải phải ghi dòng chú thích bản quyền vào tác phẩm của mình Nếu bạn mở Help/About của một phần mềm thì sẽ gặp
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ầnmề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ữngngườ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ảnquyề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ềnphần mềm và các quyền với phần mềm)
Trang 12– 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ânthâ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ốcgia 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 ướcBerne 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
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ầnmềm Giới làm phần mềm không có việc gì với công ước Berne !
− Một phát biểu thừa thường thấy: “Tôi dùng windows có bản quyền” hay “vấn nạn sử dụng
phần mềm không có bản quyền”
Các phần mềm mà mọi người đã quen thuộc như Windows hay Linux, Office hay OpenOffice,Bitdefender hay Bkav bản basic (miễn phí), … hiển nhiên đều là những phần mềm có bản quyền,không phải là public domain Dù người dùng xài phần mềm crack hay không thì những phần mềmnày luôn có bản quyền; chỉ có điều nếu dùng crack thì gọ là “vi phạm bản quyền”, nếu mua thì là
sử dụng phần mềm đúng luật bản quyền
Không nên nói “Tôi đang dùng windows có bản quyền” vì phần mềm nào mà chả có bản quyền
(trừ pulic domain) Thay vào đó hãy nói “Tôi đang dùng windows có mua quyền sử dụng” Cóngười nói “Tôi đang dùng windows có mua bản quyền”, cách nói này tuy ngắn gọn hơn nhưngcũng không chính xác vì theo câu chữ (chứ không theo ý định của người nói) thì Micosoft đãnhượng lại bản quyền Windows cho tôi ?!
Cũng không nên nói “vấn nạn sử dụng phần mềm không có bản quyền” Phần mềm mà không có
bản quyền thì là phần mềm public domain, ai cũng có quyền dùng, sửa đổi, bán lại, … do đó chẳng
có vấn đề gì cả Ý của người nói là “vấn nạn sử dụng phần mềm vi phạm bản quyền”.
Thương hiệu (trademark)
Thương hiệu là một tài sản trí tuệ được luật sở hữu trí tuệ bảo hộ
Thương hiệu là một dấu hiệu đặc biệt như tên, biểu tượng để nhận biết sản phẩm, dịch vụ của một cánhân hay tổ chức Nôm na thì thương hiệu là cái tên được gắn cho một sản phẩm hoặc một nhà sảnxuất Thuật ngữ tiếng anh cho thương hiệu là trademark hoặc cũng có khi là brand name, logo
Để tránh trùng lặp thương hiệu thì mỗi quốc gia thường có Cơ quan Bảo hộ Thương hiệu làm nhiệm
vụ quản lý thương hiệu Một cá nhân hay tổ chức muốn thương hiệu của mình không bị người khácdùng lại thì nên đăng kí thương hiệu (có trả phí duy trì thương hiệu) với Cơ quan Bảo hộ Thươnghiệu Có thể không đăng kí thương hiệu nhưng khi xảy ra tranh chấp thương hiệu sẽ rất khó phân xử.Nếu muốn chỉ rõ trạng thái đăng kí của một thương hiệu (điều này có thể không cần thiết) thì thêm kíhiệu:
- ® vào sau tên thương hiệu đã được đăng kí (chữ R viết tắt của registered)
- TM 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ươnghiệ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ốndù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
Trang 13dù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&Tlà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 publicdomain) 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 đổiv.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:
- 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à “LicenceAgreement” 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ầnmề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ớiviệc kí vào bản hợp đồng giấy
Proprietary softwares hay FOSS
Dựa vào phạm vi quyền của người sử dụng được chủ sở hữu cấp (ghi trong EULA), có thể chia phầnmềm thành 2 loại:
Proprietary softwares (phần mềm độc quyền): người giữ bản quyền đồng ý cho người dùng một số
rất ít quyền và thu lợi từ việc cấp các quyền này Thông thường người sử dụng chỉ được cấp mỗiquyền sử dụng và phải mua quyền này thông qua mua CD key/serial để cài Để hạn chế việc nghiêncứu, sửa đổi phần mềm của người sử dụng thì mã nguồn của phần mềm độc quyền không được côngbố
• EULA của phần mềm độc quyền thương mại (người dùng phải trả tiền) thường ghi:
• Người dùng không được dịch ngược, sửa chữa phần mềm
• Người dùng không được sao chép phần mềm thành nhiều bản cài trên nhiều máy Nếungười dùng mua phần mềm với số lượng n máy thì chỉ tối đa n máy được cài đặt vàchạy phần mềm (Ví dụ: nếu người dùng mua phần mềm với số lượng 1 máy mà cài cảtrên máy tính ở văn phòng lẫn máy tính ở nhà thì tại một thời điểm chỉ có thể chạy phầnmềm hoặc trên máy ở nhà hoặc trên máy ở văn phòng mà không đồng thời cả haiđược) Người dùng có thể sao chép lại phần mềm thành một bản dự phòng để cài đặt lạikhi phần mềm bị hỏng
• Người dùng có thể nhượng lại phần mềm cho người khác với điều kiện người đượcnhượng lại chấp thuận các điều khoản của EULA và chỉ được phép có 1 bản copy đượcdùng (tức là nếu nhượng lại thì người dùng ban đầu không được dùng nữa.)
• Có 2 loại phần mềm độc quyền hay gặp là:
• Freeware (phần mềm miễn phí): người dùng không phải trả tiền mua quyền sử dụng,quyền sử dụng được “cho không” tuy nhiên thường kèm theo giới hạn “for individual/educational use” (chỉ được cá nhân (chứ không phải tổ chức) dùng hoặc dùng với mụcđích giáo dục) hoặc “non-commercial/non-profit use” (chỉ dùng với mục đích khôngsinh lời)
Trang 14Richard 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)
• Shareware (phần mềm chia sẻ): người dùng được dùng thử miễn phí phần mềm trongthời gian chả hạn 30 ngày Hết thời gian dùng thử phần mềm bị khóa lại muốn dùngtiếp phải mua quyền sử dụng qua việc mua số serial để mở khóa cho phần mềm chạy.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ácdù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ạinà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)
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ửdụng không phải trả mất tiền mua quyền mà vẫn có quyền sử dụng, phân phối lại, nghiên cứu, sửa đổi
và phân phối lại phần mềm phái sinh (phần mềm sửa đổi) Các phần mềm này khi phát hành luôn kèm
mã nguồn hoặc chỉ dẫn đến nơi có thể download mã nguồn để đảm bảo người dùng có thể nghiên cứu,sửa đổi Có 2 tên gọi và tiêu chí được sử dụng rộng rãi cho loại phần mềm này đó là: free softwares vàopen source softwares
Free software
Richard Stallman đưa ra thuật ngữ “free software” (phần
mềm tự do) với tiêu chí: một phần mềm là “phần mềm tự do”
nếu người dùng có 4 quyền tự do cơ bản:
o Tự do chạy chương trình (0)
o Tự do nghiên cứu và sửa đổi chương trình (1)
o Tự do phân phối lại bản sao của chương trình (2)
o Tự do cải tiến và phân phối lại cải tiến của chương
trình (3)
Tự do (1), (3) đòi hỏi mã nguồn của chương trình
phải được công bố
Triết lý của Richard Stallman ở đây là “tự do” (chứ không
phải miễn phí): người dùng được thoải mái sử dụng, nghiên
cứu mã nguồn, sửa đổi, phân phối lại phần mềm gốc và phần
mềm sửa đổi mà không bị ràng buộc phải hỏi xin hoặc trả
tiền mua những quyền này từ tác giả Để người dùng có 4
quyền tự do trên thì trong bản EULA của phần mềm, người
giữ bản quyền phải tuyên bố cho người dùng những quyền
này
Trang 15Chữ “free” trong free softwares có nghĩa là “tự do” (không bị ràng buộc) như trong “tự do ngôn luận”(free speech) chứ không có nghĩa “miễn phí” (giá tiền bằng 0) như trong “bia miễn phí” (free beer).Trên thực tế một người bất kì (dù người nói tiếng Anh bản xứ hay người nước ngoài) khi lần đầu gặp
từ “free softwares” thì luôn luôn nghĩ rằng “free” là “miễn phí” do đó vô tình đánh đồng “freesoftware” với “freeware” (phần mềm miễn phí) Cần hiểu rằng freeware (phần mềm miễn phí) là mộtthuật ngữ chỉ một loại phần mềm đặc thù khác hoàn toàn với free software
– Freeware là phần mềm độc quyền, chỉ cho người dùng mỗi quyền sử dụng và ngườidù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ườidùng hết các quyền trên
– Mã nguồn freeware thường không được công bố trong khi mã nguồn của free softwareluô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àmphầ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ịchGCC 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ácphầ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à saunà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ấyphé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ànphần mềm sau này dùng
Open source software
Đế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 “’freesoftwares” 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àophầ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,
vốn chỉ được biết đến và sử dụng bởi một thiểu số những
hacker/những người say mê lập trình, đến với thị trường phần
mềm Bruce Perens cũng không dùng triêt lý tự do cũ nữa mà
viết ra định nghĩa mới cho open source software, gọi là Open
Source Definition (OSD) gồm 10 tiêu chí như ở dưới đây Eric
S Raymond và Bruce Perens cũng thành lập tổ chức Open
Source Initiatives để ủng hộ cho xu hướng mới này
Năm 1997 Eric S Raymond đã xuất bản cuốn sách “The
Cathedral and the Bazaar” (nhà thờ và cửa hàng tạp hóa) trong
đó chỉ ra mô hình phát triển phần mềm Open source mới hiệu
quả Chịu ảnh hưởng từ cuốn sách này công ty Netscape đã
công bố mã nguồn phần mềm trình duyệt web Netscape của mình với hi vọng mô hình phát triển mới
sẽ giúp Netscape giành thêm được thị phần trong chiến với IE của Microsoft Sự kiện này đánh dấuthời đại mới của phần mềm nguồn mở khi các công ty bắt đầu tham gia Eric S Raymond trở thànhphát ngôn viên của phong trào nguồn mở
Eric S Raymond (biệt danh ESR),
người viết cuốn “The Cathedral
and the Bazaar” đã có ảnh hưởng
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
Trang 16Nội dung của Open Source Definition (OSD): một phần mềm là open source softwares nếu như giấyphép sử dụng (EULA) của nó thỏa mãn 10 tiêu chí - xem nguyên văn tại http://www.opensource.org,dưới đây là tóm tắt:
1 Free Redistribution (tự do phân phối lại): Giấy phép phải cho phép người dùng phân phối lại phần mềm dù việc phân phối này thu phí hay miễn phí
2 Source Code (mã nguồn): Phần mềm (ở dạng binary form) phải kèm theo mã nguồn hoặc mã nguồn phải được công bố sao cho người dùng có thể dễ dàng lấy về và sửa đổi được.
3 Derived Works (phần mềm phái sinh): Giấy phép phải cho người dùng quyền sửa đổi phần mềm
và phân phối lại phần mềm phái sinh.
4 Integrity of The Author's Source Code (tính toàn vẹn của mã nguồn của tác giả phần mềm): Người dùng được phép sửa đổi mã nguồn và công bố lại mã nguồn phái sinh nhưng cần chỉ rõ ra đấy 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
một người dân nghe thấy phương tiện truyền thông nhắc đến open
source softwares (phần mềm nguồn mở), họ chỉ đơn giản nghĩ ngay
rằng: “open source softwares” là phần mềm có mã nguồn được
công bố (ai cũng có thể xem được mã nguồn) chứ không hề biết
đến định nghĩa 10 điều khoản của tổ chức OSI Cách suy nghĩ giản
đơn này không xét đến việc khi công bố mã nguồn thì người dùng
mã nguồn đó có quyền gì, chả hạn liệu có thể cải tiến mã nguồn đó
rồi công bố lại cải tiến được không ? Chính vì việc cái tên Open
source softwares vốn là thuật ngữ riêng của OSI bị trùng vào danh
từ chung của mọi người nên câu đầu tiên trong bản định nghĩa 10
tiêu chí, OSI phải nói ngay là “Open source doesn't just mean
access to the source code” Tóm lại định nghĩa Open source
softwares là không tương đương với “phần mềm có mã nguồn được
công bố” Khi người ta bàn về phần mềm nguồn mở là muốn nhắc đến định nghĩa 10 tiêu chí kia chứkhông phải cách hiểu thiếu chặt chẽ thường ngày
Bruce Peren, người viết ra Open Source Definition (OSD)
Ảnh lấy từ trang web cá nhân của Bruce Peren: http://perens.com
Trang 17Free softwares vs Open source
Nhìn lại lịch sử, cộng đồng phần mềm tự do được hình thành bắt đầu từ năm 1983 qua dự án xây dựng
hệ điều hành GNU, đến năm 1998 khi thuật ngữ “open source softwares” ra đời thì cộng đồng này bịtách thành 2 xu hướng: free softwares và open source softwares
- “Free softwares”: những người của
lý “tự do”, nỗ lực vận động để
“quyền” của người sử dụng (tự do
chạy, sao chép) và của lập trình viên (tự do sửa đổi và phân phối lại sửa đổi) khỏi bị phầnmề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ãntriế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ầnmề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 “freesoftwares”, 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ầnmề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 “Thecathedral 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 Tuytriế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 sourcesoftwares” 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ệcphâ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 racá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ênFree and Open Source Softwares đã được dùng rất phổ biến hiện nay
Thuật ngữ đối ngược với FOSS là proprietary softwares hoặc closed source softwares
b FOSS và chuyện “miễn phí”
FOSS thì miễn phí ?
Nếu bạn nghĩ “FOSS thì miễn phí”, điều này đúng nhưng cần lưu ý thêm mấy điểm tinh tế sau:
Cách mà FOSS “miễn phí” khác với cách mà một phần mềm độc quyền “miễn phí” Mục đích của FOSS là cấp quyền cho người dùng khác với mục đích của phần mềm độc quyền là giá tiền.
Chúng ta đã quen thuộc với việc công ty bán và chúng ta mua phần mềm độc quyền; việc bán hay mua
ở đây thực chất là bán hay mua quyền sử dụng phần mềm Khi chúng ta gặp loại phần mềm độc quyền
có giá tiền bằng không mà thuật ngữ cho nó là freeware – phần mềm miễn phí thì tức là các công ty đãtặng không quyền sử dụng cho người dùng Tuy nhiên các quyền khác như quyền sao chép, nghiên
Biểu tượng của Open Source Initiative – tổ chức ủng hộ Open source software
Biểu tượng của Free Software Foundation – tổ chức ủng hộ “free software”
Trang 18cứu và sửa đổi mã nguồn thì thường người dùng không được cấp và cũng không thể mua được VớiFOSS thì người dùng được cấp quyền sử dụng, sao chép, nghiên cứu và sửa đổi mã nguồn, phân phốilại phần mềm sửa đổi mà không phải trả khoản phí nào.
Nếu bạn lý sự rằng: “Tôi không phải là lập trình viên, tôi không quan tâm đến mã nguồn, tôi chỉ muốndùng phần mềm mà không phải trả tiền Đều được sử dụng miễn phí nên tôi thấy freeware hay FOSSđều như nhau cả” Không hẳn, có những phần mềm freeware đặt giới hạn bạn chỉ được dùng phầnmềm cho mục đích cá nhân và không được phân phối lại Khi đó nếu bạn là giám đốc của một công tybạn chỉ có thể cài đặt phần mềm cho laptop của bạn mà không thể sao chép ra cho tất cả các máy tính
ở của công ty để nhân viên dùng Phần mềm FOSS thì ngược lại, bạn có thể sao chép ra bao nhiêu tùy
ý, được sử dụng thoải mái mà không bị hạn hẹp chỉ dùng cho cá nhân hay chỉ được dùng trong trườnghọc
Một lưu ý nữa là tuy “FOSS thì miễn phí” nhưng không được đánh đồng “FOSS là freewares (phầnmềm miễn phí)” Freewares là một loại phần mềm độc quyền hoàn toàn đối nghĩa với FOSS
Có thể bạn vẫn phải trả phí để có được phần mềm FOSS hoặc có thể bạn sẽ thấy với cùng một 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 đổiphầ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âuthuẫ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ôngphả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êuchí 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ềmchứ 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ì FOSScũ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ầnmề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ảimấ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 saocủ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 2má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 đầutiê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ềungườ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ậptứ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ộtphần mềm FOSS chỗ thì “bán” đĩa CD rất đắt, chỗ thì tặng không
FOSS thương mại ?
Những gì có tính “thương mại” (commercial) là những gì có thể kiếm lời được từ nó Commercialsoftwares (phần mềm thương mại) là phần mềm mà người ta có thể hốt bạc nhờ nó, ví dụ nhưWindows, Photoshop, Norton Antivirus, …
Cũng chỉ tại hiểu giản đơn “FOSS thì miễn phí” mà nhiều người cho rằng “không thể thương mại hóaFOSS được” hoặc cho rằng “FOSS là loại phần mềm đối ngược với phần mềm thương mại” Thực sựphần lớn các phần mềm FOSS là phần mềm thương mại ! Vâng, phần lớn chứ không phải một vài
Trang 19Ví dụ cho việc kinh doanh FOSS chính là việc phân phối lại phần mềm FOSS bằng cách bán đĩa CDhoặc cung cấp đường truyền Internet để download như đã nói ở trên Đây chỉ là một hình thức kinhdoanh đơn giản nhất của FOSS, các hình thức cao cấp khác có thể xem ở mục “Mô hình kinh doanhvới FOSS”.
Nhắc lại rằng từ trái nghĩa với FOSS là “proprietary softwares” (phần mềm độc quyền), chứ khôngphải là commercial softwares Cả phần mềm độc quyền lẫn FOSS đều có thể là phần mềm thương mại
c Các mẫu giấy phép FOSS
Cho đến nay người ta đưa ra rất nhiều mẫu EULA cho phần mềm FOSS trong đó chỉ có khoảng 30mẫu là phổ biến Người ta thường khuyên: khi một người làm phần mềm FOSS thì nên lựa chọn 1trong hàng tá mẫu EULA có sẵn kia làm EULA cho phần mềm của mình hơn là tự soạn ra một bảnEULA của riêng mình Lý do: các mẫu EULA có sẵn đã trải qua một quá trình phát triển được cộngđồng kiểm định và hiểu kĩ lưỡng, còn khi ai đó tạo ra một bản EULA của riêng mình thì có thể nókhông chặt chẽ, khó hiểu thậm chí tự mâu thuẫn với định nghĩa FOSS
Các mẫu EULA, mà từ đây ta gọi là giấy phép sử dụng, phổ biến nhất hiện nay (theo thứ tự giảm dầncủa thị phần sử dụng năm 2010):
• (63%) GPL licence (copyleft) gồm strong GPL và Lesser GPL của Free Sosftware Foundation
• (9%) Artistic licence (Perl) của Larry Wall
• (6%) BSD licence (copycenter) của đại học Berkeley
• (5%) MIT (X) licence của đại học MIT
• (4%) Apache Software licence của Apache Software Foundation
Thống kê chi tiết xem bảng xếp hạng của Black Duck Open Source Resource Center năm 2010
1 GNU General Public License (GPL) 63.07%
+ 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%
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
Trang 2014 Open Software License (OSL) 0.29%
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ỏamãn định nghĩa này thường thỏa mãn cả định nghĩa kia
• Các giấy phép FOSS thường luôn có các các điều khoản sau:
i Copyright <năm> <người giữ bản quyền> //Xác định rõ người giữ bản quyền phầnmềm
ii Cho phép người dùng: sử dụng, phân phối lại bản sao, đọc mã nguồn, sửa mãnguồn, phân phối lại phần mềm phái sinh (phần mềm sửa đổi từ phần mềm gốc) màkhông phải trả khoản phí nào cho người giữ bản quyền
iii Ràng buộc người dùng khi phân phối lại phần mềm:
o nếu phân phối lại phần mềm (mà không có sửa đổi) thì phải kèm theo giấyphép này
o nếu phân phối lại phần mềm phái sinh thì trong giấy phép của phần mềmphái sinh phải ghi rõ: người giữ bản quyền phần mềm gốc, disclaimer ofwarranties (mục iv), và ràng buộc này (*)
iv Disclaimer of warranties (chối bỏ trách nhiệm về các thiệt hại do phần mềm gây ra)(*): yêu cầu ghi lại “ràng buộc này” trong giấy phép để một cách đệ quy bắt các phần mềm pháisinh tiếp theo cũng phải nêu lại chú thích bản quyền, disclaimer of warranties Nếu không có yêucầu này thì xảy ra tình huống: phần mềm gốc A yêu cầu ghi chú thích bản quyền trong phần mềmphái sinh, phần mềm phái sinh A1 của A tuân theo nên ghi chú thích bản quyền phần mềm gốc Anhưng không bắt phần mềm phái sinh tiếp theo A2 ghi chú thích bản quyền Lúc đó phần mềmphái sinh A2 không cần phải ghi chú thích bản quyền phần mềm gốc A nữa
• Trong định nghĩa FOSS không có qui định chặt chẽ về phần mềm phái sinh Các giấy phép FOSSkhác nhau chủ yếu ở ràng buộc với phần mềm phái sinh (ngoài điểm chung là bắt phải ghi chúngười giữ bản quyền phần mềm gốc, disclaimer of warranties) Có thể chia làm các giấy phépFOSS làm 3 loại:
• Kiểu gần với public domain: BSD, MIT, Apache … ràng buộc với phần mềm pháisinh là rất lỏng lẻo
• Copyleft: GPL - phmềm phái sinh phải đặt dưới cùng giấy phép phần mềm gốc,không được liên kết với phần mềm độc quyền
• Weak copyleft: LGPL, Artistics Licence (Perl) - phmềm phái sinh phải đặt dướicù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)
Trang 21Copyright (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.
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 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Giấy phép BSD chỉ với 2 điều khoản (1), (2) được gọi là giấy phép FreeBSD (hoặc 2 clause BSD) nó được dùng cho hệ điều hành FreeBSD, NetBSD, OpenBSD, Darwin
Hai điều khoản (1), (2) nói rõ người dùng được phép sử dụng và phân phối lại phần mềm ở dạng source code và binary dù chưa hay đã sửa đổi với điều kiện phải kèm theo: ghi chú bản quyền phần mềm, “điều khoản này” và chối bỏ đảm bảo (phần chữ in hoa) Ràng buộc ghi lại “điều khoản này” nhằm một cách đệ quy bắt các phần mềm phái sinh sau này luôn ghi chú bản quyền phần mềm gốc và chối bỏ bảo đảm
Ở điều khoản (3), <organization> ở đây là organization của <copyright holder>, có thể coi <organization> = <copyright holder> Điều khoản (3) yêu cầu không được dùng têncủa tác giả phần mềm gốc để quảng cáo/xác nhận chất lượng cho phần mềm phái sinh khi tác giả phần mềm gốc chưa cho phép Điều này đảm bảo danh tiếng của tác giả phần mềm gốc không bị bôi nhọ khi phần mềm phái sinh có chất lượng tồi
Ngoài 3 điều khoản trên, giấy phép BSD không có ràng buộc gì thêm với phần mềm phái sinh nên người sử dụng có thể biến phần mềm phái sinh thành phần mềm độc quyền và bán lại cho người khác hoặc sử dụng phần mềm BSD như một thành phần trong phần mềm độc quyền khác (miễn là có ghi chú bản quyền phần mềm BSD ban đầu) Ví dụ điển hình là một số đoạn mã về networking của hệ điều hành BSD (giấy phép BSD) được sử dụng trong một số sản phẩm độc quyền của Microsoft, hoặc rất nhiều thành phần của hệ điều hành FreeBSD được sử dụng trong hệ điều hành MAC OS X
Người dùng không bị bắt buộc phải công bố lại mã nguồn của phần mềm phái sinh
Các công ty làm phần mềm độc quyền thường thích giấy phép này
Giấy phép BSD còn được gọi là copycenter để chơi chữ với copyright, copyleft (GPL) Từ copycenter ngụ ý “bạn có thể đem phần mềm đến một trung tâm sao chép để tạo ra bao nhiêu bản copy tùy ý” tuy nhiên hầu như mọi phần giấy phép FOSS đều có mục đích này
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)
Trang 22Copyright (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 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
(chú ý: the “Software” = software + associcated documentation files)
Giấy phép liệt kê cụ thể các quyền của người sử dụng: “use, copy, modify, merge” và “publish,
distribute, sublicense, and/or sell” với 2 điều kiện (chỗ gạch đầu dòng): ghi lại chú thích bản quyền,
“điều khoản này” và chối bỏ bảo đảm Giấy phép này có nói tường minh rằng người dùng có thể
“sell” – bán lại và “sublicense” - đặt phần mềm phái sinh dưới các giấy phép khác, Vì không có ràng buộc gì nên người dùng có thể đặt phần mềm phái sinh dưới giấy phép độc quyền
Các phần mềm nổi tiếng dùng giấy phép này là PuTTy, Expat, Rails, Lua
Apache
Giấy phép này do tổ chức Apache Software Foundation (ASF) đưa ra, các phần mềm của ASF đều dùng giấy phép này, trong đó đáng chú ý nhất là phần mềm web server Apache Ngoài ra có đến 25% của 100.000 dự án đặt trên Google Code là đang sử dụng giấy phép Apache (theo một blog của
Google)
Giấy phép Apache ver 2.0 đang được dùng hiện nay rất dài, tới 4 trang với 1400 từ trong khi BSD chỉ
có khoảng hơn 200 từ Giấy phép Apache quy định rất tỉ mỉ các quyền được cấp và không được cấp nhưng tựu trung lại nó tương đương với giấy phép BSD cộng thêm với điều kiện cho trường hợp phần mềm có bằng sáng chế
5 Các giấy phép FOSS kiểu weak copyleft: LGPL và Perl (chưa viết)
6 Giấy phép (strong) copyleft: GPL (chưa xong)
Khi có một sáng tạo thì chủ thể sáng tạo giữ bản quyền của sáng tạo đó; sửa đổi một phần mềm để tạo
ra phần mềm phái sinh là một sáng tạo nên người tạo ra phần mềm phái sinh sẽ tự động giữ bản quyềncủa phần mềm phái sinh Các giấy phép kiểu public domain (hay permissive free software license) nhưBSD, MIT X11, Apache, … không có ràng buộc chặt chẽ với phần mềm phái sinh nên phần mềm pháisinh thường bị biến thành phần mềm độc quyền, tác giả phần mềm phái sinh ngăn không cho ngườidùng tiếp tục nghiên cứu, phát triển phần mềm phái sinh và thường bắt người dùng mua quyền sửdụng Richarch Stallman gặp phải một tình huống “trớ trêu”: ông làm ra phần mềm A và cho quyềnngười khác phát triển tiếp thành phần mềm A1, một ngày kia ông muốn tự mình phát triển tiếp A1thành A2 nhưng tác giả A1, với tư cách là người giữ bản quyền A1, đã ngăn không cho ông quyền làmđiều này Chính điều này đã thôi thúc Richard Stallman làm ra giấy phép GPL để đảm bảo tác giảphần mềm phái sinh phải tiếp tục cấp cho người dùng các quyền sử dụng, nghiên cứu, cải tiến phầnmềm phái sinh
Ý tưởng của giấy phép GPL:
- Phần mềm đặt dưới GPL phải là phần mềm Tự do (theo định nghĩa của Stallman) tức là ngườidùng có 4 quyền tự do: sử dụng, phân phối lại, nghiên cứu, sửa đổi và phân phối lại sửa đổi
Trang 23- Phần mềm phái sinh từ phần mềm GPL cũng phải đặt dưới giấy phép GPL tức là phần mềm phái sinh cũng là phần mềm Tự do và như vậy người dùng lại tiếp tục có quyền sử dụng, phân phối lai, nghiên cứu, sửa đổi phần mềm phái sinh Ngoài ra phần mềm phái sinh:
o Phải có ghi chú rõ ràng:
người giữ bản quyền phần mềm gốc ban đầu
những sửa đổi so với phần mềm gốc và ngày tháng sửa đổi, người sửa đổi
o Có thể liên kết với các thư viện hay chương trình khác nhưng những thứ liên kếtnày phải được đặt dưới các giấy phép tương thích giấy phép GPL (Các giấy phépnhư BSD, MIT, Apache, Perl đều là những giấy phép tương thích với GPL)
Ý nghĩa của giấy phép GPL:
Giấy phép GPL đảm bảo các quyền của người viết ra phmềm được trao cho người sử dụng và điều nàyvẫn được duy trì khi phmềm đó đượ cải tiến
Giấy phép GPL còn được gọi là copyleft để chơi chữ với copyright Copyright để ngăn quyền củangười dùng, copyleft để trao quyền cho người dùng; tinh thần của copyleft cũng đối ngược vớicopyright
Áp dụng các điều khoản của GPL
• Để áp dụng các điều khoản GPL vào chương trình thì thêm dòng chú thích sau vào chương trình:
– //chỉ rõ bản quyền thuộc về ai
Copyright (C) yyyy name of author
– //chỉ rõ các điều kiện được cho trong giấy phép GPL
This program is free software; you can redistribute it and/or modify it under the terms ofthe GNU General Public License as published by the Free Software Foundation; …
– // chối bỏ trách nhiệm về các thiệt hại do phần mêm gây ra
This program is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; …
• GPL là giấy phép của người giữ bản quyền cấp phép quyền cho người dùng nên GPL được bảo hộbởi luật bản quyền Những người không có khái niệm luật bản quyền có thể nghĩ GPL được bảo hộbởi Free Software Foundation – tổ chức đưa ra GPL Kì thực tổ chức này chỉ đưa ra một cái mẫugiấy phép để khi ai đó cần thì dùng luôn giấy phép này
• Bản thân GPL là một sáng tạo của Richarch Stallman nên nó có bản quyền (Richarch Stallmankhông ghi bản quyền là tên mình mà là Free Software Foundation - tổ chức do ông sáng lập) Vớigiấy phép GPL mọi người có thể sử dụng nhưng không thể dựa vào đó để chế ra một giấy phépkhác Dòng chú thích bản quyền GPL đã ghi rõ:
• Copyright (C) 1989, 1991 Free Software Foundation, Inc 51 Franklin Street, Fifth Floor,Boston, MA 02110-1301, USA
• Everyone is permitted to copy and distribute verbatim copies of this license document, butchanging it is not allowed
7 Mô hình phát triển phần mềm FOSS (chưa viết)
8 Mô hình kinh doanh phần mềm FOSS (chưa viết)
9 Những quan niệm sai lầm thường thấy về FOSS (chưa viết)
II *nix
1 Giới thiệu UNIX, BSD
Bức tranh toàn cảnh về UNIX-like OS nổi lên 3 nhóm chính: BSD, UNIX, Linux
Trang 24Sơ đồ lấy từ wiki: http://en.wikipedia.org/wiki/Operating_system
UNIX
• 1970-1973, AT&T Bell labs: K Thompson, D
Ritchie viết hệ điều hành UNIX đầu tiên
• 1979, mã nguồn UNIX được AT&T phát hành
miễn phí à dựa vào mã nguồn UNIX, Bill Joy
(sau này là co-founder của Sun) tại Berkeley univ
phát triển thành hệ điều hành BSD
• Sau 1980: AT&T phát triển UNIX thành các hệ
điều hành thương mại cho server: System III, IV
UNIX trở thành hệ điều hành độc quyền
• Các OS trên đây và các OS sau này đều được thiết
kế dựa trên UNIX ban đầu và nó rát giống UNIX
nên được gọi là: UNIX-like OS.
và hotmail cài FreeBSD trên server của mình
• BSD đã có rât nhiều đóng góp kĩ thuật quan trọng:
Dennis Richie và Ken Thompson viết ra
hệ điều hành UNIX đầu tiên tại Bell lab (AT&T)
Ảnh lấy từ:
http://en.wikipedia.org/wiki/Ken_Thompson
Trang 25– TCP/IP socket, long file name, symbolic link, csh, termcap, curses, vi, …
– Mã BSD có ảnh hưởng lớn đến SunOS và MacOS sau này
2 UNIX và UNIX-like (*nix)
Năm 1969, Dennis Richie và Ken Thompson viết hệ điều hành
UNIX tại Bell lab (AT&T) Trải qua một thời gian dài phát triển,
UNIX biến đổi rất nhiều và cũng xuất hiện rất nhiều hệ điều hành rađời dựa trên thiết kế của UNIX Khi nói về những hệ điều hành cóliên quan đến UNIX, có thể chia thành 2 loại:
UNIX: những hệ điều hành được gọi là UNIX khi nó được
chứng nhận bởi Open Group Thương hiệu UNIX lúc đầu là của
AT&T trải qua nhiều lần chuyển nhượng, cuối cùng thuộc về
Open Group Open Group đưa ra chuẩn SUS (mở rộng của
POSIX) để một hệ điều hành nếu thỏa mãn chuẩn và công ty giữ
bản quyền trả một khoản lệ phí (rất đắt) thì hệ điều hành đó được
mang thương hiệu là UNIX Những hệ điều hành thuộc kiểu này
là: AIX (IBM), HP-UX (HP), IRIX (Silicon Graphics),
UnixWare (SCO) Những hệ điều hành này đều có mã nguồn dẫn
xuất từ mã nguồn của UNIX, cụ thể hơn là dẫn xuất từ System
III, V (Những năm 1980, AT&T phát triển UNIX lên cho các
máy server lấy tên là System III, V)
UNIX-like (hoặc UNIX-based, hoặc Un*x, hoặc *nix): những hệ điều hành này hoạt động gần
giống UNIX do nó được phát triển dựa trên thiết kế của UNIX (chuẩn SUS (POSIX), nói ở dưới đây)tuy nhiên mã nguồn của nó được viết độc lập với mã nguồn của UNIX Những hệ điều hành điển hìnhcho loại này là: BSDs (FreeBSD, NetBSD, OpenBSD và Darwin), Minix, Linux và Cygwin BSD,Linux cũng thỏa mãn hoặc gần thỏa mãn chuẩn SUS nhưng người ta không đưa nó ra Open Group đểchứng nhận vì phí chứng nhận quá đắt, hơn nữa những hệ điều hành này phát triển rất nhanh nên việcduy trì chứng chỉ lại càng tốn kém
Chú ý vì UNIX là một thương hiệu nên không nên nói “Linux là UNIX” Ngay cả cái tên Unix-like,
Un*x, Open Group cũng không tán thành
3 Chuẩn POSIX (SUS)
Trước khi đến với SUS (POSIX) người đọc cần nắm một số khái niệm sơ đẳng sau:
• Kiến trúc phân tầng Application – Compiler – OS – hardware: khi lập trình viên viết mã Application thường gọi tới các hàm của ngôn ngữ lập trình Khi biên dịch, các hàm của ngôn ngữ lập trình được dịch ra thành các lệnh (các hàm) của hệ điều hành; cuối cùng hardware sẽ thao tác để thực hiện lệnh của hệ điều hành.
• API (application programming interface): tập các hàm của hệ điều hành mà một chương trình chạy trên hệ điều hành có thể gọi tới Ví dụ API của Windows có tên gọi là Win32.
• Portability (tính khả chuyển của phần mềm): một chương trình khi viết cho hệ điều hành này nếu có thể chạy trên
hệ điều hành khác thì gọi là portable (khả chuyển) Nếu có chương trình X chạy được trên hệ điều hành A thì để X cũng chạy được trên hệ điều hành B có thể dùng các cách sau theo thứ tự tính khả chuyển giảm dần:
– Cài lại X trên B: Điều này làm được khi A và B có nhân giống nhau (do đó API giống nhau) Ví dụ: một chương trình chạy được trên Windows XP thì thường ta có thể cài nó trên Windows 2003 vi 2 hệ điều hành này có nhân cùng kiến trúc NT Một chương nếu chạy được trên bản Linux distro này thì cũng chạy được trên bản Linux distro khác vì các bản Linux distro chung nhau nhân Linux.
– Biên dịch lại X trên B: Khi A và B có API khác nhau thì buộc phải biên dịch lại chương trình Ví dụ: giả
sử X chỉ là chương trình “hello world” viết bằng C dùng hàm printf(…) Khi biên dịch trên Windows, Compiler sẽ biên dịch hàm printf(…) thành hàm in ra màn hình có trong API của Windows Bởi hàm in
ra màn hình của Linux khác với của Windows nên nếu đem binary form của X từ Windows sang Linux thì sẽ không chạy được, báo lỗi không tìm thấy hàm in ra màn hình của Windows trên Linux.
– Không chuyển được (bó tay): Khi A và B có API khác nhau và trong mã nguồn của X lại gọi đến API của A thì không thể đem biên dịch lại X trên B được, sẽ báo lỗi không tìm thấy các hàm cần gọi.
Bill Joy, người (sau này là cofounder của Sun) đã có nhiều đóng góp quan trọng cho BSD
Ảnh lấy từ:
http://en.wikipedia.org/wiki/Bill_Joy
Trang 26Bởi có rất nhiều hệ điều hành UNIX-like nên tính portable (khả chuyển)
của phần mềm trên UNIX-like OS trở thành sống còn Chuẩn SUS
(POSIX) ra đời để giải quyết vấn đề trên Ban đầu, IEEE đưa ra chuẩn API
cho UNIX gọi là POSIX (Portable Operating System Interface for Unix)
sau đó thương hiệu UNIX được nhượng lại cho Open Group, nhóm Austin
Group trong Open Group đã phát triển POSIX thành SUS (Single UNIX
Specification)
• SUS (POSIX) là tập các đặc tả (viết bằng C) gồm:
– Base Definitions – tập các định nghĩa và qui ước được sử
dụng trong đặc tả và một danh sách các file header
– Shell and Utilities – tập các tiện ích và mô tả về shell
– System Interfaces – tập các system call của hệ điều hành
– Rationale – ý tưởng đằng sau các đặc tả
• Hiện nay, phần lớn các UNIX-like OS đều hoàn toàn hoặc gần như
tuân theo POSIX điều này đảm bảo các phần mềm có tính khả chuyển
cao với một số lượng lớn các Unix-like OS
4 Nhân Linux và Dự án GNU
• 1990, Linus Torvald viết ra một nhân hệ điều hành Unix-like gọi là
Linux rồi public mã nguồn cho mọi người cùng phtriển
• Linus (chữ “s” chứ không phải “x”) chỉ viết nhân hệ điều hành
chứ không viết các thành phần khác của hệ điều hành Linus lấy
cảm hứng từ Minix cũng là một Unix-like OS để viết Linux cho
PC Intel 386 của mình
• Trang http://freshmeat.net/projects/linux/ bình luận: Linux chỉ là
bản clone của Unix kernel, và nó hướng tới POSIX và SUS
• Trước đó khá lâu, Richarch Stallman khởi xướng dự án xây dựng một hệ điều hành Unix-like theotriết lí tự do của ông với tên gọi GNU Dự án đã xây dựng được các tiện ích của OS nhưng vẫn cònthiếu nhân OS
à Bởi Linux là like và các phần mềm GNU viết cho
Unix-like nên có thể kết hợp:
nhân Linux + tiện ích GNU = OS hoàn chỉnh
• Nhân Linux sau đó được đặt dưới giấy phép GPL – giấy phép do
Richard Stallman đưa ra và hầu hết các phần mềm trong dự án
GNU sử dụng
• Việc kết hợp nhân Linux với các phần mềm khác được một loạt
các công ty, cá nhân thực hiện tạo thành các Linux distribution
như Redhat; Suse; Ubuntu; Debian; Slackware …
(Cần nhấn mạnh thêm rằng: Linux được viết lại toàn bộ như con số
không, tức là không sử dụng một dòng lệnh nào của Unix, để tránh
vấn đề bản quyền của Linux, tuy nhiên hoạt động của Linux hoàn toàn
dựa trên nguyên tắc của hệ điều hành Unix Vì vậy một người nắm
được Linux thì sẽ nắm được Unix Nên chú ý rằng giữa các Unix sự khác nhau cũng không kém gìUnix và Linux – Nguồn: …)
5 Linux distribution
Ban đầu hệ điều hành Linux chỉ là sự kết hợp giữa nhân Linux và một số ít các công cụ từ dự án GNU
Để có được hệ điều hành tiện lợi hơn người ta add thêm nhiều phần mềm công cụ vào Bởi phần mềm
Linus Torvald viết nhân hệ điều hành Linux khi là sinh viên 21 tuổi tại đại học Helsinki, Phần Lan.
Trang 27FOSS rất nhiều nên mỗi một cá nhân, tổ chức có một kiểu lựa chọn phần
mềm kết hợp với nhân Linux riêng Mỗi cách kết hợp riêng này khi được
phát hành thì gọi là Linux distribution hay Linux distro Một Linux
Distro gồm:
- nhân Linux (đặt dưới giấy phép GPL)
- các phần mềm từ dự án GNU (hầu hết đặt dưới giấy phép GPL)
- các phần mềm khác (thường là các FOSS)
Bởi một Linux distro không chỉ gồm mỗi nhân Linux mà còn các thành
phần từ dự án GNU nên Richarch Stallman đề nghị gọi tên là
“GNU/Linux”, nhiều hãng phát hành cũng dùng tên gọi này nhưng
nhiều người vẫn chỉ gọi là hệ điều hành Linux, không nhắc đến GNU có
thể vì nói “GNU Linux” là khá dài dòng Như vậy cái tên Linux vừa để
chỉ nhân hệ điều hành vừa để chỉ một Linux distro
Ban đầu nhân Linux được viết cho kiến trúc Intel 386 bởi một mình
Linus nhưng ngày nay có hàng ngàn lập trình viên tham gia phá triển
Linux kernel (năm 2006, Linus chỉ viết khoảng 2% code của nhân
Linux) Các công ty phần cứng máy tính thường phải trả tiền cho các lập
trình viên của mình tham gia phát triển nhân Linux để nhân Linux có thể
chạy trên các kiến trúc của công ty đó Hiện nay, nhân Linux có thể chạy
trên tất cả các phần cứng từ máy Ipod, Iphone cho đến supercomputer
Các kiến trúc phần cứng mà Linux có thể chạy được: Intel compatible, Sparc, PPC, Alpha, PPC,Intanium, Mainframe
Theo thống kê của Corbert tại Linux.conf.au 2010
in Wellington, thì 75% số dòng code của nhân
Linux là do các lập trình viên được trả tiền để
viết Chi tiết xem tại
http://apcmag.com/linux-now-75-corporate.htm
Việc đóng gói các distro được thực hiện bởi:
- các công ty (mục đích thương mại):
Redhat, Fedora (Red Hat), openSUSE
(Novell), Ubuntu (Canonical Ltd.),
Mandriva Linux (Mandriva)
- cộng đồng (tự nguyện): Gentoo, Debian
- cá nhân: Slackware (Patrick Volkerding)
Hiện nay có khoảng hơn 600 Linux distro (ai cũng
có thể tự tạo một Linux distro) nhưng chỉ có
khoảng một nửa là được duy trì
distrowatch.com xếp hạng mức độ phổ biến của các Linux distro qua page views (số lượt người truycập homepage), kết quả năm 2010:
13
Supercomputer Jaguar nhanh nhất năm
2009 sử dụng Cray Linux Environment dựa trên Suse Linux làm “hệ điều hành”
Ảnh lấy từ: http://en.wikipedia.org/wiki/Linux
Dự án iPhoneLinux nhằm tạo ra một hệ điều hành
tự do Linux cho iPhone
để thay thế cho hệ điều hành iOS của Apple.
Ảnh lấy từ wiki
Trang 284431
9
Zenwalk
3892
Bảng xếp hạng theo số người truy cập trang chủ của distro Linux trong một ngày trong năm 2010 của distrowatch.com
(*) Chú ý: FreeBSD không phải là một Linux distro, nó dùng nhân BSD, không dùng nhân Linux.Trong bảng xếp hạng này, Redhat đứng thứ 33 do nó bị phân tán bởi Fedora và CentOS - hai Linuxdistro giống với Redhat
Trang 29Đâ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 tranhuythang@gmail.com ,
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 này tôi định sau cùng mới viết nên mới chỉ viết được một tẹo rồi lại dừng.)
Bài 2 Bổ túc kiến thức về HDD Cài đặt Linux, FreeBSD (chưa xong).
Bài 2 Bổ túc kiến thức về HDD Cài đặt Linux, FreeBSD (chưa xong) 28
1 Hiểu về HDD 28
1.a Cấu trúc vật lý của HDD 28 1.b Cấu trúc logic của HDD 29 1.c Quá trình khởi động OS của máy tính 29
2 Công cụ máy ảo để học thực hành Linux Một số chú ý về Vmware Workstation 29
3 Các cách để có được một bản Linux distro và trường hợp của Redhat 29
4 Cài đặt Linux, FreeBSD 29
4.a Cài đặt Linux 29 4.b Cài đặt FreeBSD 29 4.c Tự động hóa quá trình cài đặt 29
5 Vấn đề multi OS 29
1 Hiểu về HDD
1.a Cấu trúc vật lý của HDD
Ổ đĩa cứng (hard disk drive) là một cái hộp sắt nhỏ chứa:
- các platter (đĩa) có tính chất vật lí điện từ, dữ liệu được lưu trên cả 2 mặt các platter
- head (đầu đọc) để thực hiện việc đọc/ghi dữ liệu trên mỗi mặt platter
- mạch điều khiển đầu đọc hoạt động
Mỗi mặt platter lại được chia thành các track (rãnh) – các đường tròn đồng tâm Các track xếp chồng lên nhau thành cylinder (hình trụ) Mỗi mặt platter cũng có thể được chia thành các sector (hình dẻ quạt) bằng nhau
Mỗi track được chia thành các cung nhỏ gọi là block (nhưng trên thực tế vẫn thường được gọi là sector) có số đo góc chắn tâm bằng nhau Như vậy block là giao của cylinder và sector
Trên hình vẽ các cung block ở gần tâm thì nhỏ hơn các cung block ở xa tâm nhưng do tính chất vật lí
mà sức chứa dữ liệu của các block là như nhau, cùng là 512 byte
Mỗi lần head đọc/ghi dữ liệu nó đọc ghi theo từng block 512 byte chứ không phải là theo từng bit ! Như vậy block vừa là đơn vị hình học nhỏ nhất mà một platter có thể được chia ra, vừa là đơn vị dữ liệu nhỏ nhất mà HDD có thể đọc/ghi mỗi lần
Như ở trên đã nói block là giao của cylinder và sector nhưng bởi một HDD chứa nhiều platter mỗi platter lại gồm 2 mặt nên cần thêm một tham số nữa là head để xác định được chính xác vị trí của một block Như vậy vị trí của block được xác định qua bộ 3 tham số (Cylinder, Head, Sector) được gọi tắt
là CHS
Một điều đáng lưu ý rằng người ta thường dùng từ “sector” để chỉ “block” và dùng từ “block” để chỉ
“một cụm sector”, cách gọi này dễ gây nhầm lẫn giữa sector theo nghĩa block với sector trong CHS nhưng nó vẫn được sử dụng rộng rãi Các *nix OS vẫn sử dụng thuật ngữ “sector”
Mỗi tham số trong bộ CHS của một block được lưu trên một register trong BIOS Kích thước của thanh ghi này có hạn nên các tham số CHS cũng có giới hạn do đó số block và dung lượng của HDD cũng có hạn Trong những ngày đầu phát triển máy tính, người ta đã thiết kế cho BIOS có khả năng đánh địa chỉ cho các block của HDD với giới hạn: 1024 cylinder/1 platter, 16 head/1 HDD, 63 sector/1track à Dung lượng của HDD bị giới hạn: 1024*16*63*512=132120576 byte = 504 MB !
Theo thời gian khi dung lượng HDD phát triển người ta đã khắc phục hạn chế trên bằng cách cải tiến cách đánh địa chỉ CHS thành ECHS (enhanced CHS), LBA (logical block address) LBA là cơ chế trừu tượng đánh địa chỉ block một cách tuyến tính tức là block đầu tiên có LBA=0, block thứ hai có LBA=1, …
Trang 301.b Cấu trúc logic của HDD
Khi làm việc ở mức thấp người ta mới phải quan tâm đến geometry address (CHS) của sector (từ bây giờ trở đi ta không dùng thuật ngữ “block” nữa mà dùng “sector”), khi làm việc ở mức cao chỉ cần quan niệm HDD là một dải các sector được đánh địa chỉ tuyến tính 0, 1, 2, … là đủ
Việc đọc/ghi dữ từ người dùng hay từ các application được thực hiện qua hệ điều hành Hệ điều hành quản lí dải các sector này theo từng partition
Cấu trúc một HDD như hình vẽ
1.c Quá trình khởi động OS của máy tính
2 Công cụ máy ảo để học thực hành Linux Một số chú ý về Vmware Workstation.
3 Các cách để có được một bản Linux distro và trường hợp của Redhat
4 Cài đặt Linux, FreeBSD
4.a Cài đặt Linux
4.b Cài đặt FreeBSD
4.c Tự động hóa quá trình cài đặt
5 Vấn đề multi OS
Trang 31Đâ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 tranhuythang@gmail.com ,
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 3 Làm quen với Linux command
Bài 3 Làm quen với Linux command 30
6 Làm việc với file và thư mục trên *nix 35
a Cấu trúc file và thư mục của Linux khác với của Windows 35
b Đường dẫn thư mục của Linux – kí hiệu /, thói quen TAB, thư mục ~ 36 Hãy cẩn thận với dấu / 36 Thư mục home, thư mục hiện hành, thư mục ~ .37 Muốn nhanh thì bấm TAB hoặc TAB TAB 37 Khi tên file, thư mục chứa kí tự đặc biệt 38
c Lệnh ls –l, xem thông tin về file, thư mục 38
d Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục 39 Hiển thị nội dung file 39 Tạo thư mục mới 39 Tạo file mới 39 Đổi tên/di chuyển file và thư mục 39 Copy file và thư mục 39 Xóa file hoặc thư mục 40
e Midnight Commander (mc) 40
f Link 40
g Archive và Compress file 40
h Tìm kiếm file và thư mục 41
7 Filesystem Hierarchy standard 42
8 Trong *nix, mọi thứ đều là file 44
9 Redirection và xargs 45
a Redirect stdin, stdout, stderr to file 45
b Pipe và kết hợp với grep, wc, sort, less 47
- Có thể có 3 màn hình đăng nhập như dưới đây:
Giao diện đồ họa: Nếu Linux được cài KDE, GNOME thì bạn có giao diện đăng nhập đồ họa Mỗi distro sẽ có một màn đăng nhập riêng, chả hạn như hình vẽ dưới đây của Fedora:
Trang 32 Giao diện dòng lệnh: Trên các server, giao diện đồ họa thường không được cài (hoặc cài nhưngdisable) để đỡ tốn tài nguyên (CPU, RAM), lúc đó bạn phải làm việc với giao diện dòng lệnh virtual console.
Đăng nhập từ xa: Người quản trị mạng không phải lúc nào cũng phải đến trực tiếp Linux server
để điều khiển mà có thể đăng nhập từ một máy (chả hạn cài Windows) thông qua công cụ (chả hạn như) Putty
- Có 2 loại người sử dụng: root (còn gọi là super user) và normal user (người sử dụng thường) Một
hệ thống chỉ có đúng một tài khoản root, tài khoản này có tất cả các quyền thao tác với hệ thống, nó chỉ dành cho người quản trị hệ thống Với người sử dụng thường, ngoài các quyền thao tác với chính tài liệu của họ tạo ra thì có rất ít quyền với hệ thống Đoạt root luôn là mục đích của các Linux
hackers
- Tắt máy là chuyện rất hạn chế của người quản trị server (thử tưởng tượng một web server mà tắt đi thì có bao nhiêu người thấy thất vọng khi định vào trang web của server) Nếu bạn chỉ là người dùng Linux thông thường chỉ cài Linux trên laptop, hiển nhiên thường phải restart hoặc shutdown; ở chế độ dòng lệnh dùng lệnh sau:
- Turn off: shutdow –h now
- Restart: shutdown –r now hoặc reboot
Nếu muốn hẹn giờ shutdown thì thay now bằng lượng thời gian chờ
shutdown hh:mm hoặc mm
(Bàn kỹ hơn về tắt máy xem mục ??)
Chú ý turn off/ restart một cách cơ học (không đúng cách), dù không
gây hỏng hóc cho hệ thống thì lần sau khi bật máy sẽ nhận được
thông báo đòi check disk, chẳng hạn với Red hat là:
Press Y within 5 seconds to force file system integrity check …
2 Kernel, Shell
Kiến trúc phân tầng của một máy tính được cho trên hình vẽ
Shell
KernelApplication
Hardware
user
Vị trí của Shell và Kernel
Trang 33Kernel (nhân) của hệ điều hành làm nhiệm vụ trực tiếp quản lý phần cứng Người sử dụng không thểtrực tiếp ra lệnh cho kernel được vì các lệnh này liên quan đến chi tiết của phần cứng, vô vùng phứctạp Thay vào đó người dùng gõ các lệnh của Shell (vỏ) vốn gần gũi với con người Shell sẽ thông dịch(interpret) các lệnh của người dùng thành các lệnh điều khiển kernel và đến lượt kernel chuyển cácyêu cầu đến nó thành các thao tác điều khiển phần cứng.
Khi hệ thống khởi động, sau khi kernel được tải vào RAM thì shell sẽ được tải tiếp theo
Shell của DOS chính là command.com làm nhiệm vụ dịch các lệnh của người sử dụng như dir, md,
cd, … ra thành các lệnh máy
Không có khái niệm shell của Windows nhưng ở một nghĩa trừu tượng nào đó có thể coi giao diện đồhọa của Windows tương đương với shell của DOS
Có nhiều loại shell cho Linux như C shell (csh, tcsh), Bourne Shell (bsh), Korn Shell (ksh), Z Shell
(zsh) mỗi loại shell lại có tập lệnh riêng (dù khá giống nhau) và người dùng chỉ được phép gõ các lệnh
trong tập lệnh đó Phổ biến nhất hiện nay là BASH shell dùng trong RedHat, Suseshell và DASH
shell dùng trong Ubuntu Tập lệnh của hai loại shell này hầu hết là giống nhau.
3 Virtual Console và Terminal
Như ở trên nói shell là trình thông dịch, chương trình virtual console hoặc terminal làm nhiệm vụ
chuyển các lệnh mà bạn gõ trên bàn phím vào cho shell dịch Nói cách khác virtual console hoặcterminal là giao diện để bạn tương tác với shell
- Nếu hệ thống Linux không cài KDE, GNOM, mặc định bạn sẽ làm việc bằng giao diện dònglệnh virtual console Linux có 6 virtual console, virtual console 1 được mặc định khi khởiđộng Có thể chuyển đổi qua lại giữa các virtual console bằng tổ hợp phím ALT + Fn (n = 1,2,
…6) Người dùng có thể chạy một chương trình ở virtual console này và không cần đợi cho kếtthúc chuyển sang virtual console khác để thực hiện một lệnh mới Điều này tạo cảm giác cóthể chạy nhiều chương trình cùng lúc
- Nếu hệ thống trong giao diện đồ họa Bạn có thể vào menu Applications/Accessories/Terminal(các distro sẽ có các bố trí menu khác) để chạy chương trình terminal cho phép bạn tương tácvới shell Hoặc với một điều kiện nào đó có thể dùng CTRL + ALT + F6/F7 để chuyển qua lạigiữa giao diện đồ họa và các virtual console
Dù là virtual console hay terminal, dấu nhắc dòng lệnh của nó có dạng, chẳng hạn
[root@localhost ~]# _
Ý nghĩa:
- tên account đang login: root, vì thế có dấu #, nếu là normal user có dấu $
- máy tính cài Linux mà user đang login: localhost để chỉ người dùng không login từ xa, nếu
login từ xa sẽ là tên/ip một máy tính từ xa nào đó
- thư mục hiện hành: tên một thư mục hoặc nếu là dấu ~ thì chỉ thư mục home (nơi lưu dữ liệu
cá nhân) của người dùng
Nói thêm về nguồn gốc của từ “terminal”: “terminal” như ở đây là một chương trình giao tiếp với shell còn trong quá khứ
nó là một thiết bị phần cứng Ở thời trước khi có máy tính cá nhân, chỉ có những hệ thống máy tính lớn đa người sử dụng Người sử dụng truy cập vào các hệ thống lớn này thông qua một thiết bị có tên là “terminal” chỉ gồm có bàn phím và màn hình, không có bộ xử lý dữ liệu Theo thời gian khi máy tính cá nhân ra đời nó thay thế các thiết bị này.
4 Lệnh trong Linux
a Cách viêt lệnh
Lệnh trong Linux thường có dạng: tên_lệnh tham_số đối_số
Trong đó tham số để điều chỉnh cách thực hiện lệnh còn đối số thường là đối tượng bị lệnh tác độnglên Tham số, đối số có thể vắng mặt, trong cú pháp của lệnh nếu một thành phần nào đó có thể vắngmặt thì nó được để trong dấu ngoặc vuông [ ], nếu buộc phải có mặt thì để trong dấu ngoặc nhọn <>
Trang 34hoặc để không Ví dụ cú pháp lệnh man là man [section] tên_lệnh thì phần [section] có thể vắng mặt,
còn tên_lệnh thì không
Trước tham số thường phải có dấu gạch, đối số thì không cần Tham số có 2 dạng:
Dạng ngắn bắt đầu bằng một dấu gạch ngang – ví dụ cp –r Dir1 Dir2
Dạng dài bắt đầu bằng hai dấu gạch ngang –– ví dụ cp ––recursive Dir1 Dir2
Hai lệnh trên là một, cùng copy Dir1 thành Dir2 (trong thư mục hiện hành) Thường tham số dạng
ngắn là viết tắt của dạng dài (r viết tắt của recursive).
Có một số tham số nào đó rất nhiều lệnh hay dùng gần như thành qui ước, chẳng hạn:
–v hoặc ––verbose (tiếng Anh, “verbose” có nghĩa là “dài dòng”) dùng để hiển thị những
thông tin mô tả quá trình thực hiện lệnh
–f hoặc ––force thực hiện lệnh mà không cần tương tác với người dùng
vv
Lệnh trong Linux phân biệt hoa thường nên tham số –v sẽ khác với –V.
Có thể viết nhiều lệnh trên cùng một dòng nhưng phải có dấu chấm phẩy (;) ở giữa
Ví dụ: mkdir /mnt/USB; mount /dev/sdb1 /mnt/USB; cd /mnt/USB
Có thể ngắt một lệnh thành nhiều dòng (để cho dễ theo dõi) bằng cách thêm dấu \ vào chỗ cần ngắt vàenter
b Thực thi executable file
Định nghĩa: executable file (file khả thi) là file chứa các lệnh cho CPU thực thi (con người đọc sẽkhông thể hiểu được), thường những executable file là những file chương trình Những file như *.bmp,
*.doc, *.mp3, không chứa các lệnh cho CPU thực thi nên không là executable file TrongDOS/Windows các executable file có tên dạng *.exe, *.com còn trong Linux không có qui ước gì vềtên, tên những file này thường là không có phần mở rộng
Khi người dùng gõ một lệnh thực chất là thực thi một executable file nào đó có tên trùng với tên lệnh
Shell tìm executable file này (lệnh) trong 4 đường dẫn mặc định là /bin, /sbin,
/usr/bin, /usr/sbin, nếu không tìm thấy nó sẽ thông báo “command not found” Các
đường dẫn mà shell cần tìm được lưu trong biến PATH của shell, người dùng có thể sửa biến này.Trong *nix, có khi người ta cũng coi các file shell script (file text chứa danh sách các lệnh cần thựcthi) là file khả thi
Lệnh which <command> cho biết chính xác file lệnh nằm dưới thư mục nào trong 4 thư mục mặc định kia Ví dụ: which mkdir cho biết /bin/mkdir như vậy lệnh mkdir myDirectory tương đương với lệnh /bin/mkdir myDirectory
Giả sử người dùng đang ở thư mục /home/userX, thư mục này chứa một executable file có tên là exefile Để thực thi file này, trong DOS người dùng chỉ cần gõ lệnh exefile là đủ, nhưng với Linux,
shell sẽ thông báo “command not found” lí do là biến PATH của DOS có chứa thư mục hiện hành còncủa Linux thì không Với shell của Linux phải gõ lệnh ./exefile hoặc /home/userX/exefile tức là phải chỉ rõ đường dẫn ra.
[root@localhost userX]# exefile
bash: exefile: command not found
[… OK …]
[root@localhost userX]# /home/userX/exefile
[… OK …]
Trang 35ta thường lấy tên file shell script có đuôi là sh nhưng điều này không bắt buộc Cũng không nên nhầm
script là executable file
Có 3 cách thực thi một shell script “myscript”
bash myscript
sh myscript
./myscript
Nhưng trước hết phải đảm bảo người gọi file có quyền thực thi “myscript” Nếu là root có thể nhanh
chóng đặt quyền thực thi cho file bằng lệnh chmod +x myscript (xem thêm bài quản trị file
permission)
d Metacharacters
Một lệnh có thể chứa metacharacters (siêu kí tự) là các kí tự đặc biệt <, |, >, &, !, … và các loại dấungoặc như ‘ , “, ` Đây là những kí tự có ý nghĩa đặc biệt đối với shell khi thực hiện lệnh Cácmetacharacters thường (và nên luôn là như vậy) không được dùng để đặt tên Có rất nhiềumetacharacters, dưới đây là một số hay dùng:
Wildcards (kí tự đại diện): * và ?
Dấu * đại diện cho một số lượng bất kì kí tự Ví dụ: ls /root/b* liệt kê tất cả các file bắt đầu
bằng 1 chữ ‘b’
Dấu ? đại diện cho đúng một kí tự bất kì Ví dụ: ls /root/b? liệt kê tất cả các file có tên gồm 2 kí
tự, kí tự đầu tiên là ‘b’
Ranges (miền): [ ] và {}
Cặp [ ] định nghĩa một miền giá trị Thêm dấu ! trong cặp này để chỉ nằm ngoài miền.
Ví dụ 1: ls a[3-7][bx][b-x] liệt kê tất cả các file có tên gồm 4 kí tự, kí tự đầu là chữ ‘a’, kí tự
thứ hai là 1 chữ số trong khoảng từ 3 đến 7, kí tự thứ ba là kí tự ‘b’ hoặc ‘x’, kí tự cuối là một kí tựtrong khoảng b đến x
Ví dụ 2: ls [!Aa]* liệt kê tất cả các file có tên gồm ít nhất một kí tự, kí tự đầu không phải là ‘A’
hoặc ‘a’
Cặp { } liệt kê các giá trị có thể nhận.
Ví dụ: ls index.{htm, html} liệt kê các file có tên là index.htm hoặc index.html.
Escape codes: kí tự \ (back slash) Khi muốn dùng một metacharacter nào đó mà muốn shell
không hiểu nó là metacharacter thì thêm dấu \ đằng trước Nếu muốn dùng chính dấu \ thì thành \\
Ví dụ: mkdir Van\ ban\\Cong\ van tạo một thư mục có tên là “Van ban\Cong van” Kí tự dấu
cách và \ được dùng trong tên đều là metacharacters
Quotes: có các loại dấu ngoặc là ‘’, “”, `` (back tick) Khi dùng dấu ngoặc ‘’, “” thì tất cả các kí tự
trong dấu ngoặc được hiểu không phải là metacharacters Vẫn với ví dụ trên, có thể chỉ cần:
mkdir “Van ban\Cong van” hoặc mkdir ‘Van ban\Cong van’ Sự khác nhau giữa ‘’,
“” quá tinh tế tài liệu này không đề cập đến
Trang 36Dấu `` thường được dùng khi viết lệnh shell, tài liệu này cũng không đề cập đến.
e Help
Có vô cùng nhiều lệnh, mỗi lệnh lại có rất nhiều tham số, để giúp người dùng tra cứu, Linux có mộttập các manual (hướng dẫn sử dụng) về gần như tất cả các lệnh Tập manual này được chia làm 8section (mục):
1 General commands
2 System calls
3 C library functions
4 Special files (usually devices, those found in /dev) and drivers
5 File formats and conventions
6 Games and screensavers
7 Miscellanea
8 System administration commands and daemons
Để tra cứu một lện nào đó trong tập manual này dùng lệnh man <tên_lênh> Khi trang man hiện
ra, người dùng có thể dùng các phím di chuyển←↑→↓, PgUp/Down để xem, muốn thoát ra bấm q.
Ở góc trang man có con số để trong ngoặc cho biết section của trang man đó Có những lệnh thuộcnhiều hơn 1 section ví dụ lệnh exit thuộc 3 section là (1), (2), (3) nhưng khi man chỉ ra một section,
muốn tra cứu lệnh đó trong các section khác dùng lệnh man section <tên_lênh> Ví dụ man 2
exit hoặc man 3 exit
Người ta dùng lệnh man trong trường hợp biết tên lệnh, quên tham số Trong trường hợp quên cả tên
lệnh, nếu chỉ nhớ được vài chữ cái đầu tiên của lệnh hãy gõ vài chữ cái đầu đó rồi bấm phím Tab hailần để hiển thị danh sách những lệnh bắt đầu bằng các chữ cái đó Khi không nhớ được các chữ cái
đầu của lệnh thì dùng lệnh apropos <môt cum tu nao đó> để tra cứu những lệnh nào có tên
hoặc phần giải thích liên quan đến <một cụm từ nào đó> (apropos tiếng anh có nghĩa là “liên quanđến”)
Lệnh man, apropos ở trên đều tra cứu trong tập man của Linux Ngoài tập man của Linux thì bản thânmỗi lệnh đã chứa thông tin giải thích về lệnh ngắn hơn so với man, muốn xem chỉ việc gõ tên lệnh và
thêm tham số help
không phải log out rồi lại log in thì tại dấu nhắc shell gõ lệnh su (substitute user – thay đổi user) sau
đó gõ password Cũng có thể chuyển nhanh sang một tài khoản bất kì bằng lệnh su [-]
[username] Mỗi tài khoản có một môi trường shell với những cấu hình shell riêng biệt, dùng dấu –
trong lệnh su để đảm bảo các cấu hình shell cũng được chuyển theo khi chuyển user
6 Làm việc với file và thư mục trên *nix
a Cấu trúc file và thư mục của Linux khác với của Windows
Trong Windows/DOS file và thư mục được lưu vào trong các partition (phân vùng) được đánh ký hiệu
C:, D:, … Mỗi partition sẽ có một thư mục gốc là C:\, D:\ … Trong Linux, chỉ có một thư mục gốc
duy nhất là / Dưới / là các thư mục con và file, một số thư mục con nào đó được chọn làm “đầu nối”
Trang 37với các partition khác Thư mục được chọn đó được gọi là mount point, các partition sẽ được mount
(“nối”) vào các mount point Như vậy người dùng Linux sẽ không có cảm giác rõ ràng về các partitioncủa đĩa cứng mà chỉ thấy một cây thư mục khổng lồ, một số nhánh nào đó của cây thư mục này sẽ dẫnđến một số partition khác
Xét ví dụ minh họa sự khác nhau giữa cây thư mục của Windows và Linux như ở hình vẽ:
Giả sử máy tính có một ổ đĩa cứng và được chia làm 3 partitions: partition 1 chứa hệ điều hành,partition 2 chứa các tài liệu cho công việc (Works), partition 3 chứa phim, ảnh giải trí (Entertains)
- Nếu cài Windows, người dùng sẽ thấy rõ 3 partition: partition C: (nhãn “OS”) chứa Windows,partition D: (nhãn “Work”) chứa tài liệu công việc, và partition E: (nhãn “Entertainment”)chứa phim, ảnh giải trí
- Nếu cài Linux, người dùng có cảm giác chỉ có 1 partition tên là “/” (đọc là partition root) chứatất cả mọi thứ từ hệ điều hành đến Entertains và Works Kì thực vẫn là 3 partition nhưng giờđây không được kí hiệu là C, D, E nữa mà là hda1, hda2, hda3 Partition hda1 chứa hệ điềuhành nhưng dĩ nhiên file thư mục của Linux (boot, bin, home, usr, var, …) sẽ khác vớiWindows (Documents, Program Files, Windows) Partition hda1 được mount vào / Partitionhda2, hda3 được mount vào một thư mục trong partition hda1 mà ở đây là /mnt/Entertains và /mnt/Works
b Đường dẫn thư mục của Linux – kí hiệu /, thói quen TAB, thư mục ~
Đường dẫn thư mục của Linux cũng giống như Windows ngoại trừ việc dùng dấu / thay vì dùng dấu \
Ví dụ trong Linux là /Dir/subDir thì tương ứng trong Windows là C:\Dir\subDir.
Hãy cẩn thận với dấu /
Dấu / vừa chỉ thư mục gốc (thư mục cha cấp cao nhất của tất cả các thư mục) vừa dùng để ngăn cáchcác thư mục cha-con Thuật ngữ tiếng anh cho thư mục gốc là “root” và nó khác với thuật ngữ “thưmục root” để chỉ thư mục /root (thư mục chứa dữ liệu cá nhân của người dùng root.)
Trang 38Khi dấu / nằm ở đầu một đường dẫn thì nó chỉ thư mục gốc và đường dẫn bắt đầu từ thư mục gốc,
người ta gọi đó là đường dẫn tuyệt đối Khi đường dẫn không chứa dấu / ở đầu thì đường dẫn đó bắt đầu từ thư mục hiện hành và được gọi là đường dẫn tương đối Khi đường dẫn chỉ có một dấu / thì nó
chỉ thư mục gốc
Ví dụ: lệnh mkdir /Report (tạo thư mục Report trong thư mục gốc /) sẽ khác với lệnh mkdir
Report (tạo thư mục Report trong thư mục hiện hành).
Thư mục home, thư mục hiện hành, thư mục ~
Khi mới đăng nhập, thư mục hiện hành là thư mục home của người đăng nhập Thư mục home của
người sử dụng được dùng để lưu dữ liệu cá nhân của người sử dụng đó Thư mục home của root là
/root, của normal user là /home/tên_user Thư mục /home/ của Linux có phần giống
Documents and Settings của Windows NT)
Để xem thư mục hiện hành là gì dùng lệnh pwd (present working directory)
Để thay đổi thư mục hiện hành dùng lệnh cd <đuong dân thu muc> (cd viết tắt của change
directory)
Thường kết hợp lệnh cd với:
- Dấu chấm chấm ( ) để lên thư mục cha
- Dấu chấm (.) để chỉ thư mục hiện hành
- Dấu ngã (~) để quay về thư mục home của user hiện hành, dẫu ngã kèm theo tên user để chỉ
thư mục home của user có tên đó
Ví dụ 1: Root đang ở /, dùng cd ~ để quay về /root, dùng cd ~Jackson để về
/home/Jackson.
Ví dụ 2: Đang ở thư mục /home/userX/ Hai lệnh cd / / / và cd / / là tương đương nhau và đều cùng chuyến sang / Hai lệnh cd / /home/userX và cd là tương
đương nhau và đều không thay đổi thư mục hiện hành
Ví dụ 3: khi bạn muốn chạy một file nào đó, giả sử tên là fileX trong thư mục hiện hành thì luôn nhớ
phải gõ: /fileX (sẽ giải thích ở mục ??)
Muốn nhanh thì bấm TAB hoặc TAB TAB
Một điều cực kì quan trọng để giảm công sức gõ đường dẫn file/thư mục là dùng chức năngautocomplete tên file và thư mục
Khi gõ tên thư mục hoặc tên file, chỉ gõ 1 hoặc vài chữ cái đầu rồi bấm phím TAB để
tự động điền nốt phần tên còn lại hoặc bấm thêm TAB một lần nữa để hiển thị tất cả những file, thư mục có cùng các chữ cái đầu như đang gõ Khi đang gõ dở đường dẫn
và bấm phím TAB hoặc TAB TAB mà không thấy có gì hiện ra thì chứng tỏ đường dẫn mà bạn đang gõ dở không tồn tại do đó bạn có tiếp tục gõ lệnh đi chăng nữa thì đó
là một lệnh sai không thể chạy được Như vậy việc bấm [TAB] hoặc [TAB] [TAB] không chỉ giúp tiết kiệm công sức gõ đường dẫn mà còn là cách kiểm tra bạn gõ lệnh đúng hay sai.
Ví dụ: thay vì gõ cp /boot/vmlinuz-2.6.9-5.EL /backup dài dòng thì hãy gõ cp
/boot/vm [TAB] /backup
Khi bạn gõ một lệnh thì thực chất là bạn gọi file có tên trùng với tên lệnh trong thư mục /bin,
/sbin, /usr/bin hoặc /usr/sbin thế nên nếu không nhớ tên lệnh thì cũng có thể gõ vài chữ
cái đầu rồi bấm [TAB]
Ví dụ: bạn định gõ lệnh apropos nhưng lại không nhớ rõ chính tả thì chỉ cần gõ ap [TAB].
Trang 39Khi tên file, thư mục chứa kí tự đặc biệt
Tên file và thư mục trong Linux có thể chứa mọi kí tự trừ / vì để dành cho kí hiệu root Tên có thể
chứa các kí tứ đặc biệt (dấu cách và ! @ # $ & ~ % * ( ) [ ] { } ’ " \ : ; > < ‘ ) nhưng trước đó phảithêm dấu \ hoặc tốt nhất là để tất cả trong dấu ngoặc kép
Ví dụ: lệnh cd /My\ File hoặc cd /“My File” để vào thư mục “My File” dưới /.
c Lệnh ls –l, xem thông tin về file, thư mục
Để liệt kê file và thư mục con của một thư mục dùng lệnh ls <đường dẫn thư mục> (ls là viết
tắt của list):
- thêm tham số -l (viết tắt của long) để biết thêm các thông tin về ngày tạo lập, kích thước, …
- thêm tham số -a (viết tắt của all) để hiển thị cả file, thư mục ẩn
- nếu sau ls không có đối số <đường dẫn thư mục> thì hiểu là thư mục hiện hành
Vì file và thư mục trong Linux đều có thể viết hoa và thường nên dấu hiệu phân biệt file và thư mụckhi dùng lệnh ls là màu sắc: thư mục có mầu tím, file có mầu thông thường, một số loại file đặc biệtkhác như link, device, … (nói ở phần sau) có mầu sắc khác Một số loại file thường với các định dạngđặc biệt như file tar, gzip hoặc executable file … cũng có màu sắc riêng
Dưới đây là mô tả thông tin mà lệnh ls –l đưa ra Giả sử gõ ls –al /mydir
(1): kiểu file Chữ d chỉ thư mục, chữ - chỉ file, ngoài ra còn 5 kí hiệu nữa chỉ file đặc biệt
(2): các quyền truy cập file gồm có read (đọc), write (ghi), exctue (thực thi)
(3): số liên kết cứng đến file
(4): chủ sở hữu của file
(5): nhóm chủ sở hữu của file
(6): kích thước file (byte)
(7): ngày giờ tạo lập file
(8): tên file
d rwxr-xr-x 2 root root 4096 Oct 12 10:14 thumuc1
(1) (2) (3) (4) (5) (6) (7) (8)
Trang 40Lần lượt qua các bài sau, bạn đọc sẽ hiểu kĩ hơn về 8 trường thông tin này.
Trong Linux, các file và thư mục ẩn có tên luôn bắt đầu bằng dấu chấm (.) và chỉ khi có tham số -atrong lệnh ls mới hiện ra, trên hình vẽ có 1 file ẩn là config và 2 thư mục ẩn là chấm (.) và chấm chấm( ) Trong một thư mục bất kì cũng luôn có hai thư mục ẩn chấm (.) và chấm chấm ( ) tương ứng vớithư mục hiện hành (kí hiệu ) và thư mục cha (kí hiệu ) khi dùng lệnh cd
d Các lệnh xem, tạo mới, xóa, di chuyển, đổi tên file và thư mục
Hiển thị nội dung file
Để hiển thị nội dung file dùng lệnh cat /đường/dẫn/tên_file, nhưng với những file text dài
thì gặp bất tiện là không thể cuộn lên cuộn xuống từng trang màn hình để xem được Muốn vậy dùng
lệnh less /đường/dẫn/tên_file hoặc more /đường/dẫn/tên_file (chú ý tuy tên gọi
như vậy nhưng less ra đời sau và cải tiến hơn more)
Với less dùng các phím mũi tên, phím PgUp, PgDown để xem; với more dùng phím Space bar để tiến, b để lùi Cuối cùng bấm q để quit ở cả hai lệnh.
Tạo thư mục mới
Để tạo thư mục dùng lệnh mkdir <cac_thu_muc_can_tao> (mkdir là viết tắt của make
directory)
Ví dụ 1 mkdir Folder1 Folder2 /Folder3: lệnh này tạo đồng thời 3 thư mục có tên là
Folder1, Folder2, Folder3 cùng nằm trong thư mục hiện hành, trong đó Folder2 (chú ý dấu ) để chỉđây là thư mục ẩn
Ví dụ 2 mkdir –p /Universe/Earth/Country/City: lệnh này tạo tất cả các thư mục chưa
tồn tại trong đường dẫn được chỉ ra Để làm được việc này phải dùng tham số -p
Tạo file mới
Tạo một file mới bằng lệnh cat > /đường/dẫn/tên_file, sau đó gõ nội dung file, cuối cùng bấm CTRL + D để lưu file Nếu tên_file đã có sẵn thì lệnh cat sẽ ghi đè, nếu muốn ghi tiếp vào cuối file (append) thì thay dấu > bằng dấu >>
Ví dụ 1 touch >> ~/my\ first\ file Lệnh này sẽ tạo mới file “my first file” (chú ý có 2
dấu cách trong tên) nằm trong thư mục home của người gõ lệnh nếu file này chưa tồn tại, hoặc ghithêm vào cuối file này nếu nó đã có sẵn
Để tạo một file rỗng dùng lệnh touch <các_file_cần_tạo>
Ví dụ 2 touch /file1 /file2 /file3 lệnh này đồng thời tạo 3 file rỗng là file1 nằm
ngay dưới /, file2 nằm trong thư mục hiện hành, file3 nằm ở thư mục cha của thư mục hiện hành
Đổi tên/di chuyển file và thư mục
Để di chuyển file/thư mục từ <nguồn> sang <đích> dùng lệnh: mv <nguồn> <đích>.
Khi đường dẫn <đích> trùng với đường dẫn <nguồn> thì lệnh di chuyển trở thành lệnh đổi tên
Ví dụ 1: Giả sử có file/thư mục X nằm trong thư mục hiện thời
o mv X Y: đổi tên file hoặc thư mục X thành Y
o mv X /Y: di chuyển file hoặc thư mục X vào trong thư mục /Y (Y nằm ngay dưới /)
Ví dụ 2: mv * di chuyển tất cả file, thư mục trong thư mục hiện thời ra thư mục cha.
Copy file và thư mục
Để copy file/thư mục từ <nguồn> đến <đích> dùng lệnh: cp <nguồn> <đích>