Giáo trình Hệ điều hành Linux
Mục tiêu:
- Trình bày sơ lược về lịch sử phát triển của Linux;
- Trình bày được kiến trúc của hệ điều hành Linux;
- Trình bày được một số đặc tính của hệ điều hành Linux;
- So sánh ưu nhược điểm của hệ điều hành Linux so với các hệ điều hành khác;
- Có thái độ nghiêm túc.
1.1. Lịch sử phát triển của Linux
Linux bắt nguồn từ một hệ điều hành lớn hơn có tên là Unix. Unix là một trong
những hệ điều hành được sử dụng rộng rãi nhất thế giới do tính ổn định và khả năng
hỗ trợ của nó. Ban đầu hệ điều hành Unix đã được phát triển như một hệ điều hành đa
nhiệm cho các máy mini và các máy lớn (mainframe) trong những năm 70. Cho tới
nay nó đã được phát triển trở thành một hệ điều hành phổ dụng trên toàn thế giới, mặc
dù với giao diện chưa thân thiện và chưa được chuẩn hóa hoàn toàn.
Linux là phiên bản Unix được cung cấp miễn phí, ban đầu được phát triển bởi
Linus Torvald năm 1991 khi còn là một sinh viên của trường đại học Helssinki Phần
Lan. Hiện nay, Linus làm việc tại tập đoàn Transmeta và tiếp tục phát triển nhân hệ
điều hành Linux (Linux kernel).
Khi Linus tung ra phiên bản miễn phí đầu tiên của Linux trên Internet, vô tình
đã tạo ra một làn sóng phát triển phần mềm lớn nhất từ trước đến nay trên phạm vi
toàn cầu. Hiện nay, Linux được phát triển và bảo trì bởi một nhóm hàng nghìn lập
trình viên cộng tác chặt chẽ với nhau qua Internet. Nhiều công ty đã xuất hiện, cung
cấp Linux dưới dạng gói phần mềm dễ cài đặt, hoặc cung cấp các máy tính đã cài đặt
sẵn Linux.
Tháng 11 năm 1991, Linus đưa ra bản chính thức đầu tiên của Linux, phiên bản
0.02. Ở phiên bản này, Linus đã có thể chạy bash và gcc (trình dịch C GNU) nhưng
mới chỉ dừng lại ở đó. Hệ thống chưa có các hỗ trợ người dùng và tài liệu hướng dẫn.
Các số hiệu phiên bản không ngừng gia tăng cùng với việc bổ sung thêm các tính năng
mới.
Sau ba năm nhân Linux ra đời, đến ngày 14-3-1994, hệ điều hành Linux phiên
bản 1.0 được phổ biến, đây là phiên bản tương đối ổn định. Thành công lớn nhất của
Linux 1.0 là nó đã hỗ trợ giao thức mạng TCP/IP chuẩn Unix, sánh với giao thức
socket BSD – tương thích cho lập trình mạng. Trình điều khiển thiết bị đã được bổ
sung để chạy IP trên một mạng Ethernet hoặc trên tuyến đơn hoặc qua modem. Hệ
thống file trong Linux 1.0 đã vượt xa hệ thống file của Minix thông thường, ngoài ra
đã hỗ trợ điều khiển SCSI truy nhập đĩa tốc độ cao. Điều khiển bộ nhớ ảo đã được mở
rộng để hỗ trợ điều khiển trang cho các file swap và ánh xạ bộ nhớ của file đặc quyền
(chỉ có một ánh xạ bộ nhớ chỉ đọc được thi hành trong Linux 1.0)
Vào tháng 3-1995, nhân 1.2 được phổ biến. Điều đáng kể của Linux 1.2 so với
Linux 1.0 ở chỗ nó hỗ trợ một phạm vi rộng và phong phú phần cứng, bao gồm cả kiến
trúc tuyến phần cứng PCI mới. Nhân Linux 1.2 là nhân kết thúc dòng nhân Linux chỉ
hỗ trợ PC.
Một điều cần lưu ý về cách đánh chỉ số các dòng nhân Linux. Hệ thống chỉ số
được chia thành một số mức, chẳng hạn hai mức như 2.4 hoặc ba mức 2.2.5. Trong
cách đánh chỉ số như vậy, quy ước rằng với các chỉ số từ mức thứ hai trở đi, nếu là số
chẵn thì dòng nhân đó đã khá ổn định và tương đối hoàn thiện, còn nếu là số lẻ thì
dòng nhân đó vẫn đang được phát triển tiếp.7
Tháng 6-1996, nhân Linux 2.0 được phổ biến. Có hai đặc trưng nổi bật của
Linux 2.0 là hỗ trợ kiến trúc phức hợp, bao gồm cả cổng Alpha 64-bit đầy đủ, và hỗ
trợ kiến trúc đa bộ xử lý. Phân phối nhân Linux 2.0 cũng chỉ thi hành được trên bộ xử
lý Motorola 68000 và kiến trúc SPARC của SUN. Các thi hành của Linux dựa trên vi
nhân GNU Mach cũng chạy trên PC và PowerMac.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Hệ điều hành Linux
sự an toàn của toàn hệ thống mạng, việc chọnđúng password là rất quan trọng. Một password gọi là tốt nếu: -Có độ dài tối thiểu 6 ký tự. - Phối hợp giữa chữ thường, chữ hoa, số và các ký tự đặc biệt. - Không liên quan đến tên tuổi, ngày sinh của bạn và người thân. Trong ví dụ trên, bạn tạo tài khoản người dùng và không quan tâm gì đến nhóm (group) của người dùng. Sẽ thuận lợi nếu bạn nhóm nhiều người dùng có cùng một chức năng và cùng chia sẻ nhau dữ liệu vào chung một nhóm. Mặc định khi bạn tạo một tài khoản, Linux sẽ tạo cho mỗi tài khoản một nhóm, tên nhóm trùng với tên tài khoản. Đọc tập tin /etc/passwd ta thấy: nvb:x:1013:1013::/home/nvb:/bin/bash nvb có user_ID 1012 và thuộc nhóm 1013. Xem tập tin /etc/group ta thấy: # more /etc/group root:x:0:root users:x:100: nvb:x:1013: Ta có thể kết nạp tài khoản nvb vào nhóm users bằng cách thay số 1013 bằng 100, là group_ID của nhóm users. Ta có thể dùng lệnh useradd -d để xem các thông số mặc định khi ta tạo tài khoản người dùng (các thông tin này được lưu trong thư mục /etc/default/useradd): # useradd -D GROUP=100 HOME=/home 82 INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel 8.2.3. Thay đổi thông tin của tài khoản Ta có thể thay đổi lại thông tin tài khoản từ tập tin /etc/passwd hoặc dùng lệnh usermod. Cú pháp của lệnh usermod: #usermod [-c mô_tả_thông_tin_người_dùng] [-dthư_mục_cá_nhân] [-m] [-g nhóm_của_người_dùng] [tên_tài_khoản]. Ví dụ: Cho tài khoản nvb vào nhóm admin #usermod -g admin nvb 8.2.4. Tạm khóa tài khoản người dùng Để tạm thời khóa tài khoản trong hệ thống ta có thể dùng nhiều cách: Khóa (locking) Mở khóa (unlock) passwd -l passwd -u usermod -L usermod -U Ta có tạm khóa tài khoản bằng cách chỉnh sửa tập tin /etc/shadow và thay thể từ khóa x bằng từ khóa * hoặc có gán /bin/false vào shell mặc định của user trong file /etc/passwd 8.2.5. Hủy tài khoản Lệnh userdel dùng để xóa một tài khoản. Ngoài ra, bạn cũng có thể xóa một tài khoản bằng cách xóa đi dòng dữ liệu tương ứng với tài khoản đó trong tập tin /etc/passwd. Cú pháp của lệnh: #userdel [username] Ví dụ xóa tài khoản nvb (dùng tùy chọn -r để xóa toàn bộ thông tin liên quan tới user đó) : #userdel -r nvb 8.3. Các lệnh quản lý người dùng Người dùng được quản lý thông qua tên người dùng (thực ra là chỉ số người dùng). Nhân hệ thống quản lý người dùng theo chỉ số, vì việc quản lý theo chỉ số sẽ dễ dàng và nhanh thông qua một cơ sở dữ liệu lưu trữ các thông tin về người dùng. Việc thêm một người dùng mới chỉ có thể thực hiện được nếu đăng nhập với tư cách là siêu người dùng. Để tạo một người dùng mới, cần phải thêm thông tin về người dùng đó vào trong cơ sở dữ liệu người dùng, và tạo một thư mục cá nhân cho riêng người dùng đó. Điều này rất cần thiết để thiết lập các biến môi trường phù hợp cho người dùng. Lệnh chính để thêm người dùng trong hệ thống Linux là useradd (hoặc adduser). 8.3.1. File /etc/passwd Danh sách người dùng cũng như các thông tin tương ứng được lưu trữ trong file /etc/passwd. Ví dụ dưới đây là nội dung của file /etc/passwd: mail:x:8:12:mail:/var/spool/mail: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: bien:x:500:0:Nguyen Thanh Bien:/home/bien:/bin/bash sangnm:x:17:100:Nguyen Minh Sang:/home/sangnm:/bin/bash lan:x:501:0:Lan GNU:/home/lan:/bin/bash Mỗi dòng trong file tương ứng với bảy trường thông tin của một người dùng, và các trường này được ngăn cách nhau bởi dấu ':'. ý nghĩa của các trường thông tin đó lần lượt như sau: 83 + Tên người dùng (username) + Mật khẩu người dùng (passwd - được mã hóa) + Chỉ số người dùng (user id) + Các chỉ số nhóm người dùng (group id) + Tên đầy đủ hoặc các thông tin khác về tài khoản người dùng (comment) ™ Thư mục để người dùng đăng nhập + Shell đăng nhập (chương trình chạy lúc đăng nhập) Bất kỳ người dùng nào trên hệ thống đều có thể đọc được nội dung file /etc/passwd, và có thể đăng nhập với tư cách người dùng khác nếu họ biết được mật khẩu, đây chính là lý do vì sao mật khẩu đăng nhập của người dùng không hiển thị trong nội dung file. 8.3.2. Thêm người dùng với lệnh useradd Siêu người dùng sử dụng lệnh useradd để tạo một người dùng mới hoặc cập nhật ngầm định các thông tin về người dùng. Cú pháp lệnh: useradd [tùy-chọn] useradd -D [tùy-chọn] Nếu không có tùy chọn -D, lệnh useradd sẽ tạo một tài khoản người dùng mới sử dụng các giá trị được chỉ ra trên dòng lệnh và các giá trị mặc định của hệ thống. Tài khoản người dùng mới sẽ được nhập vào trong các file hệ thống, thư mục cá nhân sẽ được tạo, hay các file khởi tạo được sao chép, điều này tùy thuộc vào các tùy chọn được đưa ra. Các tùy chọn như sau: -c, comment : soạn thảo trường thông tin về người dùng. -d, home_dir : tạo thư mục đăng nhập cho người dùng. -e, expire_date : thiết đặt thời gian (YYYY-MM-DD) tài khoản người dùng sẽ bị hủy bỏ. -f, inactive_days : tùy chọn này xác định số ngày trước khi mật khẩu của người dùng hết hiệu lực khi tài khoản bị hủy bỏ. Nếu =0 thì hủy bỏ tài khoản người dùng ngay sau khi mật khẩu hết hiệu lực, =-1 thì ngược lại (mặc định là -1). -g, initial_group : tùy chọn này xác định tên hoặc số khởi tạo đăng nhập nhóm người dùng. Tên nhóm phải tồn tại, và số của nhóm phải tham chiếu đến một nhóm đã tồn tại. Số nhóm ngầm định là 1. - G, group : danh sách các nhóm phụ mà người dùng cũng là thành viên thuộc các nhóm đó. Mỗi nhóm sẽ được ngăn cách với nhóm khác bởi dấu ',', mặc định người dùng sẽ thuộc vàonhóm khởi tạo. - m : với tùy chọn này, thư mục cá nhân của người dùng sẽ được tạo nếu nó chưa tồn tại. - M : không tạo thư mục người dùng. -n : ngầm định khi thêm người dùng, một nhóm cùng tên với người dùng sẽ được tạo. Tùychọn này sẽ loại bỏ sự ngầm định trên. -p, passwd : tạo mật khẩu đăng nhập cho người dùng. -s, shell : thiết lập shell đăng nhập cho người dùng. Thay đổi các giá trị ngầm định Khi tùy chọn -D được sử dụng, lệnh useradd sẽ bỏ qua các giá trị ngầm định và cập nhật các giá trị mới. 84 -b, default_home : thêm tên người dùng vào cuối thư mục cá nhân để tạo tên thư mục cá nhân mới. -e, default_expire_date : thay đổi thời hạn hết giá trị của tài khoản người dùng. -f, default_inactive : xác định thời điểm hết hiệu lực của mật khẩu đăng nhập khi tài khoảnngười dùng bị xóa bỏ. -g, default_group : thay đổi chỉ số nhóm người dùng. -s, default_shell : thay đổi shell đăng nhập. Ngoài lệnh useradd, có thể tạo người dùng mới bằng cách sau: Soạn thảo file /etc/passwd bằng vipw. Lệnh vipw mở trình soạn thảo trên hệ thống và hiệu chỉnh bản sao tạm của file /etc/passwd. Việc sử dụng file tạm và khóa file sẽ có tác dụng như một cơ chế khóa để ngăn việc hai người dùng cùng soạn thảo file một lúc. Lúc đó sẽ thêm dòng thông tin mới về người dùng cần tạo. Hãy cẩn thận trong việc soạn thảo tránh nhầm lẫn. Riêng trường mật khẩu nên để trống và tạo mật khẩu sau. Khi file này được lưu, vipw sẽ kiểm tra sự đồng nhất trên file bị thay đổi. Nếu tất cả mọi thứ dường như thích hợp thì có nghĩa là file /etc/passwd đã được cập nhật. Ví dụ: thêm người dùng có tên là new, chỉ số người dùng 503, chỉ số nhóm là 100, thư mục cá nhân là /home/new và shell đăng nhập là shell bash: # vipw mail:x:8:12:mail:/var/spool/mail: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: bien:x:500:0:Nguyen Thanh Bien:/home/bien:/bin/bash sang:x:17:100:Nguyen Minh Sang:/home/sangnm:/bin/bash lan:x:501:0:Lan GNU:/home/lan:/bin/bash new::503:100:them mot nguoi moi:/home/new:/bin/bash Tạo thư mục cá nhân của người dùng mới với lệnh mkdir # mkdir /home/new Sao chép các file từ thư mục /etc/skel/ (đây là thư mục lưu trữ các file cần thiết cho người dùng) vào file cá nhân vừa tạo Thay đổi quyền sở hữu và các quyền truy nhập file /home/new với các lệnh chown và chmod # chown new /home/new # chmod go=u,go-w /home/new Thiết lập mật khẩu của người dùng với lệnh passwd # passwd new passwd: Sau khi thiết lập mật khẩu cho người dùng ở bước cuối cùng, tài khoản người dùng sẽ làm việc. Nên thiết lập mật khẩu người dùng ở bước cuối cùng, nếu không họ có thể vô tình đăng nhập trong khi đang sao chép các file. 8.3.3. Thay đổi thuộc tính người dùng Trong Linux có rất nhiều lệnh cho phép thay đổi một số các thuộc tính của tài khoản người dùng như: chfn: thay đổi thông tin cá nhân của người dùng. chsh: thay đổi shell đăng nhập. passwd: thay đổi mật khẩu. Một số các thuộc tính khác sẽ phải thay đổi bằng tay. Ví dụ, để thay đổi tên người dùng, cần soạn thảo lại trực tiếp trên file /etc/passwd (với lệnh vipw). Nhưng có một lệnh tổng quát cho phép có thể thay đổi bất kỳ thông tin nào về tài khoản người dùng, đó là lệnh usermod. 85 Cú pháp lệnh: usermod [tùy-chọn] Lệnh usermod sửa đổi các file tài khoản hệ thống theo các thuộc tính được xác định trên dòng lệnh. Các tùy chọn của lệnh: -c, comment : thay đổi thông tin cá nhân của tài khoản người dùng. -d, home_dir : thay đổi thư mục cá nhân của tài khoản người dùng. -e, expire_date : thay đổi thời điểm hết hạn của tài khoản người dùng -f, inactive_days : thiết đặt số ngày hết hiệu lực của mật khẩu trước khi tài khoản người dùng hết hạn sử dụng. -g, initial_group : tùy chọn này thay đổi tên hoặc số khởi tạo đăng nhập nhóm người dùng. Tên nhóm phải tồn tại, và số của nhóm phải tham chiếu đến một nhóm đã tồn tại. Số nhóm ngầm định là 1. -G, group : thay đổi danh sách các nhóm phụ mà người dùng cũng là thành viên thuộc các nhóm đó. Mỗi nhóm sẽ được ngăn cách với nhóm khác bởi dấu ',' mặc định người dùng sẽ thuộc vào nhóm khởi tạo. -l, login_name : thay đổi tên đăng nhập của người dùng. Trong một số trường hợp, tên thưmục riêng của người dùng có thể sẽ thay đổi để tham chiếu đến tên đăng nhập mới. -p, passwd : thay đổi mật khẩu đăng nhập của tài khoản người dùng. -s, shell : thay đổi shell đăng nhập. -u, uid : thay đổi chỉ số người dùng. Lệnh usermod không cho phép thay đổi tên của người dùng đang đăng nhập. Phải đảm bảo rằng người dùng đó không thực hiện bất kỳ quá trình nào trong khi lệnh usermod đang thực hiện thay đổi các thuộc tính của người dùng đó. Ví dụ muốn thay đổi tên người dùng new thành tên mới là newuser, hãy gõ lệnh sau: # usermod -l new newuser 8.3.4. Xóa bỏ một người dùng (lệnh userdel) Để xóa bỏ một người dùng, trước hết phải xóa bỏ mọi thứ có liên quan đến người dùng đó. Lệnh hay được dùng để xóa bỏ một tài khoản người dùng là lệnh userdel với cú pháp: userdel[-r ] Lệnh này sẽ thay đổi nội dung của các file tài khoản hệ thống bằng cách xóa bỏ các thông tin về người dùng được đưa ra trên dòng lệnh. Người dùng này phải thực sự tồn tại. Tuỳ chọn -r có ý nghĩa: -r : các file tồn tại trong thư mục riêng của người dùng cũng như các file nằm trong các thư mục khác có liên quan đến người dùng bị xóa bỏ cùng lúc với thư mục người dùng. Lệnh userdel sẽ không cho phép xóa bỏ người dùng khi họ đang đăng nhập vào hệ thống. Phải hủy bỏ mọi quá trình có liên quan đến người dùng trước khi xoá bỏ người dùng đó. Ngoài ra cũng có thể xóa bỏ tài khoản của một người dùng bằng cách hiệu chỉnh lại file /etc/passwd. 8.4. Phân quyền trên hệ thống tập tin Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng vạch chéo “/” (root directory). Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận dạng như các tập tin, kể 86 cả những linh kiện như ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tất cả các tập tin và thư mục đều nằm dưới thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩacứng. Ví dụ, /home/nttvinh/nguyen/scnp.odt chỉ toàn bộ đường dẫn đến tập tin scnp.odt có trong thư mục nttvinh là thư mục phụ nằm trong thư mục home, ngay dưới thư mục gốc(/). Nằm dưới thư mục gốc (/) có một loạt các thư mục quan trọng của hệ thống tập tin được công nhận ở tất cả các bản phân phối Linux khác nhau. Sau đây là danh sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/) : /bin – chứa các ứng dụng quan trọng (binary applications), /boot – các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files), /dev – chứa các tập tin là chứng nhận cho các thiết bị của hệ thống (device files) /etc – chứa các tập tin cấu hình của hệ thống, các tập tin lệnh để khởi động các dịch vụ của hệ thống... /home – thư mục này chứa các thư mục cá nhân của những người có quyền truy cập vào hệ thống (local users' home directories), /lib – thư mục này lưu các thư viện chia sẻ của hệ thống (system libraries) /lost+found – thư mục này được dùng để lưu các tập tin không có thư mục mẹ mà được tìm thấy dưới thư mục gốc (/) sau khi thực hiện lệnh kiểm tra hệ thống tập tin (fsck). /media – thư mục này được dùng để tạo ra các tập tin gắn (loaded) tạm thời được hệ thống tạo ra khi một thiết bị lưu động (removable media) được cắm vào như đĩa CDs, máy ảnh kỹ thuật số... /mnt – thư mục này được dùng để gắn các hệ thống tập tin tạm thời (mounted filesystems), /opt – thư mục dùng dể chứa các phần mềm ứng dụng (optional applications) đã được cài đặt thêm, /proc – đây là một thư mục đặc biệt linh động để lưu các thông tin về tình trạng của hệ thống, đặc biệt về các tiến trình (processes) đang hoạt động, /root – đây là thư mục nhà của người quản trị hệ thống (root), /sbin – thư mục này lưu lại các tập tin thực thi của hệ thống (system binaries) /sys – thư mục này lưu các tập tin của hệ thống (system files), /tmp – thư mục này lưu lại các tập tin được tạo ra tạm thời (temporary files), /usr – thư mục này lưu và chứa những tập tin của các ứng dụng chính đã được cài đặt cho mọi người dùng (all users), /var – thư mục này lưu lại tập tin ghi các số liệu biến đổi (variable files) như các tập tin dữ liệu và tập tin bản ghi (logs and databases). Câu hỏi ôn tập chương 1. Hãy trình bày khái niệm về quản lý người dùng trong linux 2. Hãy tạo hệ thống quản lý người dùng như: Tạo tài khoản người dùng, thay đổi thông tin của tài khoản, tạm khóa tài khoản, hủy tài khoản 3. Nêu các lệnh quản lý người dùng 4. Nêu các bước phân quyền trên hệ thống tập tin 87 TÀI LIỆU THAM KHẢO - Nguyễn Minh Hoàng, Linux - Giáo trình lý thuyết và thực hành, Nxb Lao động Xã hội, 2002; - Hà Quang Thụy – Nguyễn Trí Thành – Giáo trình hệ điều hành Unix – Linux, Đại học quốc gia Hà nội, 2004 - TS. Phạm Nguyên Khang – TS. Đỗ Thanh Nghị – Giáo trình Linux và phần mềm mở, NXB Cần Thơ, 2011 - Tham khảo Website: www.tailieuhoctap.vn 88
File đính kèm:
- giao_trinh_he_dieu_hanh_linux.pdf