1. Trang chủ
  2. » Giáo án - Bài giảng

giáo trình nhập môn quản trị hệ thống linux

148 781 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 148
Dung lượng 11,46 MB

Nội dung

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 1

Giá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 2

Lề của sách được đặt chế độ mirror margin để bạn có thể in 2 mặt.

Trang 3

Lời nói đầu

Cuốn “Nhập môn Quản trị Hệ thống Linux” được viết với mục đích làm giáo trình cho một lớp Linux

3 hoặc 6 tín chỉ (45 hoặc 90 giờ) học thực hành trên phần mềm máy ảo VMware Workstation Nội

dung cuốn sách gồm 3 phần:

Phần 1 (phần phụ): Giới thiệu về luật bản quyền, phần mềm tự do/nguồn mở (FOSS), các hệ điều

hành *nix Phần này tuy không liên quan đến các thao tác kỹ thuật và các sách về quản trị hệ thố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 4

Mụ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 5

3 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 6

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

Bà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 8

6 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 10

Windows 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 11

Ví dụ: tiếng Anh, định luật cơ học Newton là sở hữu công Ai cũng có thể sử dụng và phát triển tiếng 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 13

dùng tên “*nix” để chỉ những hệ điều hành có chức năng tương tự UNIX nhưng không phải do AT&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 14

Richard Stallman (biệt danh RSM) là người khởi xướng phong trào phần mềm tự do Ông đã:

- đưa ra triết lý tự do cho phần mềm

- phát động dự án GNU, thành lập tổ chức FSF

- viết ra phần mềm Emacs và GCC

- đưa ra giấy phép GPL (ảnh lấy từ

http://en.wikipedia.org/wiki/Richard_Stallman)

• 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 15

Chữ “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 16

Nộ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 17

Free 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 18

cứ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 19

Ví 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 20

14 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 21

Copyright (c) <year>, <copyright holder>

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1 Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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 22

Copyright (c) <year> <copyright holders>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,

subject to the following conditions:

- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A

PARTICULAR PURPOSE AND NONINFRINGEMENT IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 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 24

Sơ đồ 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 26

Bở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 27

FOSS 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 28

4431

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 30

1.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 33

Kernel (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 34

hoặ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 35

ta 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 36

Dấ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 37

vớ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 38

Khi 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 39

Khi 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 40

Lầ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>

Ngày đăng: 24/04/2014, 19:44

HÌNH ẢNH LIÊN QUAN

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 - giáo trình nhập môn quản trị hệ thống linux
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 (Trang 23)
Sơ đồ lấy từ wiki: http://en.wikipedia.org/wiki/Operating_system - giáo trình nhập môn quản trị hệ thống linux
Sơ đồ l ấy từ wiki: http://en.wikipedia.org/wiki/Operating_system (Trang 28)
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 - giáo trình nhập môn quản trị hệ thống linux
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 (Trang 32)
Hình trên là linear, hình dưới là stripe. Ở cả hai hình PV ở trên, LV ở dưới. - giáo trình nhập môn quản trị hệ thống linux
Hình tr ên là linear, hình dưới là stripe. Ở cả hai hình PV ở trên, LV ở dưới (Trang 123)
Hình 1: Nối các NIC thật hay NIC ảo của máy thật vào các switch ảo - giáo trình nhập môn quản trị hệ thống linux
Hình 1 Nối các NIC thật hay NIC ảo của máy thật vào các switch ảo (Trang 166)
Hình 2: Tạo thêm hoặc gỡ bỏ các NIC ảo trên máy thật - giáo trình nhập môn quản trị hệ thống linux
Hình 2 Tạo thêm hoặc gỡ bỏ các NIC ảo trên máy thật (Trang 167)
Hình 3: Nối NIC ảo của máy ảo vào các switch ảo - giáo trình nhập môn quản trị hệ thống linux
Hình 3 Nối NIC ảo của máy ảo vào các switch ảo (Trang 168)
Hình 4: VMware tự động nối NIC thật vào switch VMnet0 qua một bridge ảo Người dùng có cảm giác đường nối vật lí ra mạng ngoài xuất phát từ bridge ảo chứ không phải từ NIC thật - giáo trình nhập môn quản trị hệ thống linux
Hình 4 VMware tự động nối NIC thật vào switch VMnet0 qua một bridge ảo Người dùng có cảm giác đường nối vật lí ra mạng ngoài xuất phát từ bridge ảo chứ không phải từ NIC thật (Trang 169)
Hình 5: Switch VMnet1 được nối sẵn với một virtual DHCP server và NIC ảo VMware Network Adapter VMnet1 - giáo trình nhập môn quản trị hệ thống linux
Hình 5 Switch VMnet1 được nối sẵn với một virtual DHCP server và NIC ảo VMware Network Adapter VMnet1 (Trang 170)
Hình 6: Tạo thêm/ Gớ bỏ các virtual DHCP server cho các switch VMnet 1,6,8 - giáo trình nhập môn quản trị hệ thống linux
Hình 6 Tạo thêm/ Gớ bỏ các virtual DHCP server cho các switch VMnet 1,6,8 (Trang 170)
Hình 7: Cấu hình cấp phát địa chỉ IP cho virtual DHCP server - giáo trình nhập môn quản trị hệ thống linux
Hình 7 Cấu hình cấp phát địa chỉ IP cho virtual DHCP server (Trang 171)
Hình 8: Switch VMnet8 được nối sẵn với: NIC ảo VMware Network Adapter VMnet8, virtual DHCP server, virtual NAT - giáo trình nhập môn quản trị hệ thống linux
Hình 8 Switch VMnet8 được nối sẵn với: NIC ảo VMware Network Adapter VMnet8, virtual DHCP server, virtual NAT (Trang 172)
HÌnh 10: Đặt địa chỉ IP cho gateway (NAT device) và cấu hình NAT service - giáo trình nhập môn quản trị hệ thống linux
nh 10: Đặt địa chỉ IP cho gateway (NAT device) và cấu hình NAT service (Trang 173)
Hình 11: Các máy ngoài nối với các switch, nếu trong cùng một VM Team có thể nối vào cùng một LAN segment. - giáo trình nhập môn quản trị hệ thống linux
Hình 11 Các máy ngoài nối với các switch, nếu trong cùng một VM Team có thể nối vào cùng một LAN segment (Trang 174)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w