Tải bản đầy đủ (.pdf) (80 trang)

Bài giảng quản trị hệ thống linux it55 Đại học mở hà nội

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.53 MB, 80 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>BÀI 1 - GIỚI THIỆU CHUNG VỀ LINUX </b>

<b>Mục đích: </b>

Bài học sẽ giới thiệu đến anh/chị phần mềm tự do và phần mềm nguồn mở, giấy phép phần mềm nguồn mở. Giới thiệu về lịch sử hình thành và cách sử

<b>dụng Linux. Các bản phối đặc biệt của Linux </b>

<b>1.1. Giới thiệu phần mềm tự do và phần mềm nguồn mở </b>

Phần mềm tự do và mã nguồn mở (Free and OpenSource Software - FOSS) là các phần mềm sau khi qua quy trình cấp phép thì hội đủ các yếu tố:

- Nó được phân phối đến người sử dụng cùng với mã nguồn của nó và chúng có thể được sửa đổi.

- Nó có thể được phân phối lại mà không bị một ràng buộc nào khác. - Chúng ta có thể phân phối cả những thay đổi mà chúng ta đã thực hiện trên mã nguồn gốc.

Phần mềm tự do là phần mềm máy tính được phân phối theo các điều khoản cho phép người dùng chạy phần mềm cho bất kỳ mục đích nào cũng như nghiên cứu, thay đổi và phân phối phần mềm cũng như mọi phiên bản phù hợp.

Phần mềm nguồn mở là phần mềm máy tính cho phép bất cứ ai cũng có thể nghiên cứu, thay đổi và cải tiến phần mềm, và phân phối phần mềm ở dạng chưa thay đổi hoặc đã thay đổi.

Richard Stallman thành lập Free Software Foundation (FSF – Phần mềm tự do) có đóng góp lớn cho khởi đầu của FOSS.

FOSS nhằm xóa bỏ sự thống trị và khắc phục một số hạn chế của phần mềm độc quyền.

Mỗi phần mềm FOSS đều có đi kèm một giấy phép thỏa thuận về việc sử dụng, sửa đổi bổ sung, phân phối,.. phần mềm và mã nguồn phần mềm đó.

Các quyền tự do thiết yếu của phần mềm tự do là

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

 Tự do sử dụng chương trình như bạn muốn, cho bất kỳ mục đích nào.

 Tự do nghiên cứu cách chương trình hoạt động và thay đổi chương trình theo bất kỳ mục đích nào. Truy cập vào mã nguồn là điều kiện tiên quyết cho việc này.

 Tự do phân phối lại các bản sao để có thể giúp đỡ người khác.

 Tự do phân phối các bản sao của các phiên bản sửa đổi của cá nhân cho người khác.

<b>1.2. Giấy phép phần mềm nguồn mở 1.2.1. Giấy phép mã nguồn mở: </b>

a) Các giấy phép mã nguồn mở là các giấy phép bản quyền dành cho các phần mềm máy tính trong đó đặt ra các quy định buộc người sử dụng phần mềm đó phải tuân theo.

Các giấy phép không quy định bất cứ sự hạn chế nào trong việc sử dụng mã nguồn (hay gọi là giấy phép không bảo hộ - dễ dãi):

Phổ biến có: Apache Software License, BSD License, MIT License,... b) Các giấy phép có quy định các hạn chế trong việc sử dụng mã nguồn (hay gọi là giấy phép bảo hộ - không dễ dãi):

Phổ biến có: GNU General Public License (GPL), Common Public License, Python Software Foundation License (PSFL), Mozilla Public License (MPL)…

Ví dụ: Phần mềm Mozilla Firefox sử dụng giấy phép nguồn mở Mozilla Public License (MPL).

Một giấy phép mã nguồn mở có copyleft được sử dụng rộng rãi, đảm bảo cho người dùng khả năng chạy, nghiên cứu, tùy biển về phần mềm.

Năm 2006 tổ chức OSI thì đã nhận hằng trăm giấy phép và cấp phép khoảng 60 loại giấy phép.

Tỷ lệ sử dụng của các loại giấy phép:

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<i>Hình 1: Sơ đồ thống kê độ phổ biến của các loại giấy phép Phần mềm Tự do Nguồn mở </i>

Mức giới hạn của GPL so với Apache/BSD:

<i>Hình 2: Bảng so sánh giữa 6 loại giấy phép phổ biến </i>

<b>1.2.2. Liên hệ giấy phép FOSS với Linux: </b>

Tổ chức FSF (Free Software Foundation) và cộng đồng các lập trình viên yêu FOSS đã và đang đóng góp nhiều để Linux có thể hồn thiện như ngày nay và cũng là cảm hứng cho Linus Torvalds tạo nên Linux kernel.

Hạt nhân Linux sử dụng giấy phép GPL, dùng GPL giúp đảm bảo:

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

 Hạt nhân Linux - các phiên bản hạt nhân sửa đổi trên các phần cứng đặc biệt, các module của hạt nhân luôn là FOSS.

 Chỉ có một Linux duy nhất, khơng bị phân mảnh thành nhiều bản. GPL Sử dụng khá niệm “copyleft”, khi nhà sản xuất chỉnh sửa & ứng dụng thì cần công khai mã nguồn nếu không vi phạm thỏa thuận pháp lý.

<b>1.3. Linux và lịch sử hình thành Linux 1.3.1. Câu chuyện hình thành: </b>

Trong thời gian trước thập niên 90 hệ điều hành thương mại Unix quá đắt cho người dùng.

Năm 1990, Richard Stallman đã gần thành công khi đưa hệ điều hành nền Unix về FOSS khi hoàn thành giấy phép GPL, thành lập Free Software Foundation (FSF), đưa các công cụ từ Unix thành FOSS. Nhưng lại thiếu nguồn lực để nghiên cứu hạt nhân máy tính GNU Hurd, khiến hệ điều hành này khơng hồn thiện.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

một sinh viên dần đã trở thành hệ điều hành được sử dụng rộng dãi nhất, chạy trên nhiều loại thiết bị nhất.

Năm 1994, cái tên “Linux” chính thức được sử dụng và hệ điều hành này được phát hành trên Internet.

Ngày nay, Linux là một hạt nhân giúp các phân phối Linux cùng các phần mềm FOSS có thể chạy trên hầu hết tất cả các loại phần cứng từ chip nhúng rất chậm tới các siêu máy tính lớn nhất.

<i>Hình 4: Linus Torvalds tạo ra Linux thay thế MINIX và Unix khi vẫn đang học đại học </i>

Khái quát quá trình phát triển của Linux từ xưa tới nay:

<i>Hình 5: Sơ đồ dịng thời gian của Linux </i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>1.3.2. Một hệ điều hành Linux: </b>

Hạt nhân Linux đi cùng và đóng gói với bộ phần mềm cơ bản của GNU thì ta có ta có hệ điều hành tiêu chuẩn GNU/Linux.

Ba thành phần cơ bản nhất của Linux/Unix:

1) Kernel: là chương trình nhân, chương trình đầu tiên chạy vào hệ thống. Kiến trúc của kernel linux là monolithic.

2) Shell (môi trường): cung cấp giao diện cho người dùng qua dạng văn bản, câu lệnh. Shell là một trình thơng dịch giúp người dùng thực hiện câu lệnh, chạy các chương trình. Người dùng có thể chọn sử dụng đồ họa thay cho chế độ này nhưng Shell vẫn cần thiết cho hệ thống hoạt động được 3) File (hệ thống file): là cấu trúc cây các thư mục/tệp của hệ thống, bắt đầu bằng thư mục / (root).

Bố trí hệ thống file của Linux rất đơn giản và hiệu quả, file sẽ phân biệt chữ hoa và thường, không sử dụng drive letter như Windows, thay vào đó các phân vùng/thiết bị sẽ được gắn với thư mục như /media/USB, /home

Ưu điểm của linux là hồn tồn miễn phí, chi phí phần cứng thấp, tốc độ cao, cộng đồng sử dụng lớn.

Để sử dụng các ứng dụng windows trên môi trường ubuntu ta có thể sử dụng Wine hoặc PlayOnLinux.

<b>1.3.3. Công việc phát triển Linux: </b>

Công việc phát triển Linux hiện tại được thực hiện bởi hàng nghìn lập trình viên trên tồn thế giới.

Người đóng góp gửi những cải tiến, sửa lỗi, những thông tin để viết driver phần cứng từ các cơng ty phần cứng.

Những đóng góp này sẽ được Torvalds và nhóm của ơng duyệt và dẩy lên hệ thống phiên bản Git.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<i>Hình 6: Sơ đồ quá trình phát triển Linux </i>

<b>1.3.4. Thành công hiện tại của Linux: </b>

Các phân phối Linux và các hệ điều hành với nhân Linux như Android đã thành công trên nhiều lĩnh vực với ngoại lệ là mảng PC.

Tới năm 2017 các server Linux chiếm trên 67% tổng số server trên thế giới. Tuy vậy Linux vẫn chưa có vị trí trong mảng PC. Hiện tại cộng đồng Linux đã và đang góp phần phát triển Linux cho Desktop/PC. Theo đó, cả trăm phân phối dành cho Desktop & Laptop khác nhau, phục vụ nhu cầu riêng biệt của nhiều người.

<i>Hình 7: Tới năm 2017, 99.6% các siêu máy tính trong TOP500 chạy Linux </i>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<i>Hình 8: UbuntuTouch, hệ điều hành dành cho điện thoại </i>

<b>1.4. Bản phân phối của Linux 1.4.1. Khái quát: </b>

Phân phối Linux (Linux distribution) là một hệ điều hành chạy trên hạt nhân Linux tạo nên từ một bộ sưu tập các phần mềm.

Những phân phối này thường được phân loại cho nhiều loại hệ thống khác nhau.

VD như Raspbian cho máy tính nhúng RPi, OpenWrt: cho router và modem), PC (Ubuntu, Linux Mint), siêu máy tính (Rock Cluster Distribution),

MS-DOS là hệ điều hành của hãng phần mềm Microsoft, hệ điều hành này khơng có giao diện người dùng.

Cấu trúc, một phân phối thường có cần có:

 Thư viện hệ thống (system libraries)

 Công cụ (GNU tools, ...)

 Các module hạt nhân (kernel modules)

 Phần mềm tùy chọn thêm (user software)

 Tài liệu sử dụng (documentation)

 Hệ thống cửa sổ & hệ thống hiển thị (window & display system) và môi trường Desktop...

Các thành phần của một phân phối Linux:

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<i>Hình 9: Minh họa các thành phần của một phân phối Linux </i>

<b>1.4.2. Hệ điều hành CentOS: </b>

Là phiển bản khơng tốn phí của RedHat Enterprise Linux, có độ ổn định cao, cập nhật phần mềm chậm hơn phân phối khác nhiều, mục tiêu là dùng cho máy trạm và máy chủ. Chúng ta sẽ lấy CentOS làm hệ điều hành mẫu cho môn Quản trị Linux.

Website:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i>Hình 10: Quá trình khởi động của CentOS </i>

<i>Hình 11: Giao diện đồ họa của CentOS 7 </i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Ubuntu cũng có những phiên bản hỗ trợ dài hạn "Long Term Support", hỗ trợ trong vịng 3 năm đối với máy tính để bàn và 5 năm đối với máy chủ, 5 năm đối với máy tính để bàn và máy chủ và 10 năm đối với máy tính để bàn và máy chủ. Ví dụ: “Ubuntu 18.04 LTS” là phiên bản Ubuntu được hỗ trợ dài hạn được xuất bản vào năm 2018.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>1.4.5. openSUSE: </b>

Là phân phối con của SuSE Enterprise Linux (SLES), cả hai dựa trên Redhat Linux, được tài trợ chính bởi SuSE.

openSUSE Leap có sự ổn định của CentOS và đa dạng của Ubuntu.

Việc phát hành openSUSE Leap cùng với SLES tương đồng với quyết định phát hành CentOS của Redhat.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>1.4.6. Raspbian: </b>

Là hệ điều hành dựa trên Debian dành riêng cho các chip nhúng Raspberry Pi (nền tảng ARM).

Tới cuối 2016, 12.5 triệu máy tính RPi đã được bán ra.

Được sử dụng trong IoT (Internet of Things), điều khiển thiết bị khơng người lái (Autopilot), giải trí - chiếu phim (Home entertainment), thậm chí như máy tính cá nhân (PC), ...

<i>Hình 13: Máy tính nhúng Raspberry Pi </i>

<i>Hình14: Giao diện desktop Raspbian </i>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>Hình 15: khả năng kết nối và mở rộng của Raspberry Pi </i>

<b>1.4.7. Các bản phân phối khác </b>

Ngoài ra còn nhiều phân phối khác, có thể tìm hiều thêm ở: Là website liệt kê tất cả các phân phối BSD và Linux. Có hệ thống đánh giá, xếp hạng, mô tả chi tiết.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>Tài liệu tham khảo: </b>

[1]: TS. Ngô Bá Hùng - 2011, Phát Triển Phần Mềm Mã Nguồn Mở (Open Source Software Development)

Tìm hiểu thêm:

[2]: Linus Torvalds - 2016, “GPL là yếu tố xác định sự thành công Linux” – LinuxCon bắc Mỹ

Nguồn: defining-factor-in-linuxs-success.html

Lịch sử phát triển Linux

Nguồn: [4]: TS. Ngô Bá Hùng - 2013, Linux Kernel

Nguồn:

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>BÀI 2: THAO TÁC HỆ THỐNG VÀ QUẢN LÝ FILE TRÊN LINUX </b>

<b>Mục đích </b>

Qua bài học sẽ giúp anh chị biết được quá trình khởi động của Linux, cách đăng nhập và thốt khỏi hệ thống. Có thể sử dụng được các lệnh cơ bản để lấy thông tin hệ thống, ngày giờ hay đổi mật khẩu. Anh/chị có thể sử dụng shell để lập trình các lệnh cơ bản hay sử dụng các lệnh tính tốn số học. Có thể hiểu và

<b>sử dụng quyền Superuser(root) để thực thi các lệnh. 2.1. Quá trình khởi động Linux </b>

<b>2.1.1. Khái quát </b>

Trên CentOS 7, hệ thống khởi động/quản lý các dịch vụ có tên systemd sẽ giúp hệ thống khởi động nhanh và hiệu quả hơn initd cũ.

<b>2.1.2. Các giai đoạn khởi động </b>

Các giai đoạn khởi động đối với các phân phối dùng systemd: 1) Boot Manager tải hạt nhân Linux và initd (ramdisk)

Init ramdisk - một hệ thống file đã nén tải lên RAM để hạt nhân tải driver, chứa các dịch vụ systemd cần thiết, chứa màn hình khởi động, ... Nó được sử dụng trước khi truy cập vào hệ thống file chính trên ổ cứng.

2) systemd kiểm tra và gắn kết hệ thống file chính

Hệ thống file sẽ được sửa lỗi nếu cần (sau khi hệ thống mất nguồn dễ có lỗi xảy ra)

3) systemd chạy journald, udevd, dbus và readahead journald: dịch vụ logging

udevd: quản lý hotplug phần cứng dbus: dịch vụ giao tiếp liên tiến trình

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

readahead: đọc trước file để tăng tốc quá trình khởi động 4) systemd chạy udevd, rồi hiện màn hình khởi động

Ở đây udev thực hiện nhận diện và tải module/driver cần thiết 5) Chế độ Basic

Chế độ câu lệnh, chế độ đơn người dùng hoặc chế độ cấp cứu khi cần thiết

Nếu hệ điều hành được chỉ định chạy chế độ này thì shell sẽ hỏi mật khẩu của root để truy cập

6) Chế độ Multiuser

Đây là chế độ màn hình câu lệnh, chạy dịch vụ quản lý kết nối mạng, SSH, bluetooth, … Chế độ đa người dùng sẽ mặc định có 7 terminal ảo

7) Có thể chạy chế độ Graphical (phân phối Desktop)

Đây là chế độ đồ họa, chủ yếu là khởi động trình quản lý hiển thị để đăng nhập nếu ta dùng phân phối Linux dành cho Desktop

8) Các dịch vụ khác

Ngoài ra trong quá trình khởi động cịn có nhiều dịch vụ hệ thống khác hoặc những dịch vụ ta sử dụng đã cài đặt thêm vào

Tối ưu khởi động:

 Tắt các dịch vụ không cần thiết -> giảm sử dụng tài nguyên về sau này.

 Kích hoạt và tối ưu thời gian ReadAHead. rebuild system lại theo cấu hình mong muốn.

<b>2.2. Đăng nhập và thoát khỏi hệ thống 2.2.1. GUI (đồ họa) </b>

Đối với đăng nhập vào Desktop qua trình quản lý hiển thị (display manager)

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Có nhiều trình giao diện Desktop khác nhau tùy vào môi trường Desktop mà ta đã cài đặt. Thường ta cần chọn username và nhập mật khẩu để đăng nhập.

Trình Display manager mặc định của CentOS là GDM (Trình quản lý hiển thị Gnome), trong hình demo là trình quản lý LXDM, do Linux cho khả năng tùy biến rất cao:

<i>Hình 1: màn hình đăng nhập sau khi khởi động xong </i>

<b>2.2.2. Command Line (màn hình câu lệnh): </b>

Chế độ Basic thì chỉ được nhập mật khẩu root; chế độ Multiuser mặc định ở terminal F1.

Để sử dụng chế độ này cần chú ý:

 Virtual Terminal nhằm cho phép đăng nhập nhiều người dùng.

 Khi ở chế độ GUI, dùng tổ hợp Ctrl + Alt + Fx để chuyển VT (Virtual Terminal), thường là từ F1-F6 là 6 trình command line, và F7 (hoặc F1) thường là truy cập chế độ GUI.

 Để thoát (Shell): Ctrl+D hoặc lệnh exit VD đăng nhập xem thông tin & đổi mật khẩu:

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<i>Hình 2: thực hiện đăng nhập người dùng admin, xem phiên bản hạt nhân và đổi mật khẩu </i>

<b>2.2.3. SSH (Secure Shell, đăng nhập từ xa): </b>

SSH là phương thức kết nối có tính bảo mật cao giúp ta có một trình Command Line từ xa qua Internet và có thể quản lý file qua phương thức SFTP (Secure FTP).

Ta có thể đăng nhập với username vào SSH bằng các phương thức mật khẩu/public-key/keyboard.

Cài đặt SSH server trên CentOS: Lệnh:

<b> yum install openssh-server openssh-clients </b>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Giờ ta có thể đăng nhập với username & password, tiếp theo ta cần biết IP của server, có thể qua trang quản trị.

<b> Lệnh lấy IP WAN: curl ' </b>

 Nếu cần IP LAN, chạy lệnh rồi xem mục 'inet addr' của adapter

<b>hiện mạng đã kết nối:/sbin/ifconfig </b>

 Phần mềm client truy cập SSH:

 PuTTY (SSH, SFTP)

 MobaXterm (ngoài ra truy cập VNC, SFTP, RDP, Xdmcp client)

 Trên máy khách là Linux/MacOS hoặc Windows Subsystem for Linux ta có thể dùng câu lệnh ssh

<i>Hình 3: Demo SSH PuTTY (Windows 10) </i>

<b>2.2.4. Remote Desktop/VNC (Quản lý Desktop từ xa): </b>

VNC (virtual network computing): truyền tải hình ảnh trực tiếp từ hệ thống đồ họa trên Server tới máy khách qua Internet/LAN.

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

Remote Desktop: có chung mục đích với VNC, do Microsoft phát triển.

Cài đặt RDP/VNC server:

 Có hai chương trình thơng dụng trên Linux là xrdp và tigervnc-server.

 Hai gói chương trình này nằm trong EPEL repository,

 Repository chính của CentOS chỉ chứa những chương trình ổn định và quan trọng.

<b>Lệnh: yum install epel-release yum install xrdp tigervnc-server </b>

<i>Hình 4: Remote desktop với máy ảo từ client Windows </i>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<i>Hình 5: Demo với môi trường đồ họa KDE desktop qua RDP </i>

<b>2.3. Các lệnh lấy thông tin, ngày giờ, đổi mật khẩu </b>

 Câu lệnh date: #lấy/đặt thông tin ngày giờ Ngày giờ hiện tại:

 Câu lệnh time: #kiểm tra một chương trình chạy trong bao lâu

<b>time <chuoi cau lenh> </b>

 Câu lệnh passwd: #để đổi mật khẩu, cần nhập mật khẩu cũ

<b>passwd </b>

Câu lệnh tzselect: #chọn timezone (vùng thời gian) mới

<b>tzselect </b>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

Nhập 1 số tương ứng với tùy chọn hiện. Chọn từ vùng (VD Asia), tới nước (VD Vietnam) rồi tới vùng (VD South VN hoặc Indochina Time).

 Câu lệnh ntpdate: #cập nhật ngày giờ hiện tại về giờ chuẩn từ server

<b>ntpdate <ip hoặc domain_server> </b>

VD server NTP: time.nist.gov, asia.pool.ntp.org

 Câu lệnh rpm (các bản phối dựa trên Redhat) hoặc dpkg (các bản phối dựa trên Debian): dùng để quản lý package gói đã được cài đặt, xóa package hoặc cài đặt tệp package vào hệ thống.

Điểm mạnh của Linux so với Windows/Mac là kiểm sốt các gói tốt, nó là trình duy nhất, khơng để chương trình sử dụng installer riêng.

Các gói phụ thuộc vào nhau, các chương trình phụ thuộc được cài đặt/xóa tự động nhờ các trình quản lý cao hơn như: yum (CentOS) hay apt (Debian).

rpm -e <tên_gói>

<b>rpm -e --no-deps <tên_gói> </b>

<b>rpm -i <đườngdẫn_tệp_gói>.rpm rpmquery --info <tên_gói> </b>

<b>rpm -U <đườngdẫn_tệp_nâng_cấp_gói>.rpm dpkg -i <ten_goi.deb> </b>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i>Hình 6: Demo lệnh cơ bản </i>

<i>Hình 7: Demo lệnh cơ bản </i>

<b>2.4. Sử dụng Shell và các lệnh tính tốn số học 2.4.1. Khái qt </b>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Shell là trình thơng dịch (Intepreter) và thực thi các lệnh nhận từ thiết bị nhập chuẩn (bàn phím) hoặc từ tệp tin; sử dụng các cấu trúc điều khiển if-for-while, có thể ghi/đọc file văn bản, …

Khi ta đăng nhập qua Command Line hoặc SSH thì ta được đưa đến trình Shell. Cịn khi ta đăng nhập qua GUI thì ta cần mở phần mềm đồ họa Terminal, màn hình câu lệnh sẽ chạy trong một cửa sổ tiện lợi cho ta đa nhiệm.

Cấu trúc gọi chạy trương trình trong Shell:

 <ten_hoac_duong_dan> <-tuy-chọn-ngan...> <--tuy-chon-dai...> <chuoi-tham-so-dua-vao...>

 các -ts (tùy chọn ngắn, tham số) phân biệt chữ hoa và thường.

 các --tuy-chon ở công cụ GNU thường có cú pháp ngắn gọn VD: trong rpm -a và --all là một

 các tùy chọn có thể tương ứng với tham số. VD: find -type f -mode 0644 /thumuc

Dãy các câu lệnh kịch bản Shell lưu vào một file văn bản để có thể

<b>thực thi sau: sh <file> </b>

Có thể chạy trực tiếp file bằng cách:

 Thêm '#!/bin/sh' vào đầu file (khơng có ngoặc đơn)

 Tiếp theo là thêm quyền thực thi cho file bằng câu lệnh 'chmod +x <file>'.

 Lệnh shell để trong tệp sẽ hoạt động chong chế độ interactive (không tương tác từ người dùng).

non-Truy cập Shell:

 Khi ta đăng nhập qua Command Line hoặc SSH thì ta được đưa đến trình Shell

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

 Khi ta đăng nhập qua GUI thì ta cần mở phần mềm đồ họa Terminal, màn hình câu lệnh sẽ chạy trong một cửa sổ tiện lợi cho ta đa nhiệm.

Shell có thể chạy nhiều câu lệnh trong 1 dòng: bằng đấu ';' (chấm phẩy), '&&' hay '|' …

Đối với lệnh gõ trong Shell: một số là lệnh có sẵn của Shell, khơng phải dẫn từ tệp chương trình nhị phân bên ngồi trong các thư mục /bin.

<b>VD: sudo -i tương đương sudo --login </b>

<b> sudo --help (để xem danh sách các tùy chọn) ls --all / ls -a tương đương nhau </b>

VD: tùy chọn tương đương tham số:

<b> find -type f (f là tìm file, hoặc d là tìm thư mục) 2.4.2. Các cú pháp/lệnh thông dụng trong Shell </b>

<b> bien=1000 #Gán giá trị số </b>

<b> let bien=2000 #Gán giá trị số dùng let </b>

<b> bien='Chuỗi' #Gán chuỗi </b>

<b> echo $bien #Sử dụng biến </b>

<b> echo "$bien1 $bien2" #Dùng ngoặc kép thì có thể dùng biến trong </b>

chuỗi

Chú ý: khi gán giá trị cho biến không được sử dụng khoảng trống

<b> `<các câu lệnh>` #Gộp câu lệnh (trong mệnh đề của if, while, </b>

nối chuỗi, ...)

<b> expr <s1> <toán_tử> <s2> hoặc $[ <tốn> ] # thực hiện tính tốn </b>

số học (int).

<b>Ví dụ: expr 5 \* 10 (thực hiện tính tốn 5 nhân 10). Chú ý: giữa các </b>

tham số phải có ít nhất 1 khoảng trắng.

<small></small> <b>jot <lựa chọn> <số lượng> <bắt đầu> <kết thúc> (để sinh ra dãy </b>

số).

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>Ví dụ: jot -r 4 1 5 (sinh ra 4 số ngẫu nhiên từ 1 đến 5)</b>

<small></small> <b>bc (dùng để tính tốn với số thực). Ví dụ: echo 8.5 + 5.8 | bc</b>

<b> >> vs > vs < vs << vs X>&X vs | # chuyển hướng </b>

input/output/error của lệnh, (X là 0, 1, 2 tương đương stdin, stdout, stderr) và X>X ...

<b> factor <d> hoặc factor $bien sử dụng để phân tích 1 số thành các </b>

<b> <thực thi khi sai> fi </b>

<b> while <câu lệnh điều kiện>; do </b>

# thực hiện đến khi lệnh điều kiện sai

<b> <câu lệnh thự hiện> done </b>

<b> for i in <phần tử 1> <pt2> <pt3..>; do </b>

# có thể dùng lệnh lấy danh sách phần tử

<b><câu lệnh> done </b>

<b> if [ -x /duongdan/tep ] # Kiểm tra thuộc tính </b>

<b> if [ ! `test mệnh đề` ] # Thực hiện nếu sai </b>

# một số tùy chọn: -f -E -e -d –z

 <b>if [ "$bien" == 'something’ ] # kiểm tra = </b>

<b> if [ $bien -le 123 ] # le: nhỏ hơn, ge: > </b>

<b> Biến môi trường PATH: </b>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

Nếu PATH rỗng ta không thể gõ tên câu lệnh mà là không phải đường dẫn đến tệp đó.

VD tệp /bin/ls, tệp /usr/bin/rpm, tệp /usr/sbin/fdisk VD về `echo $PATH` của một hệ thống đang chạy:

/home/qtlinux/.npm-packages/bin:/usr/local/bin:/usr/bin:/bin:/usr/games Phím tắt:

<b>Tab # Thực hiện auto-completion -> thực hiện tự động hoàn </b>

Cần thật cẩn thận khi nhận quyền Superuser từ các câu lệnh như `sudo` hay `su`.

<b>2.6. Tổng quan hệ thống file & cấu trúc thư mục </b>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>2.6.1. Khái quát </b>

Hệ thống file (FS) trên Linux được gắn tới các điểm gắn kết là các thư mục, thường được kết nối qua / (gốc cây thư mục), nguồn của một hệ thống file bao gồm: phân vùng bộ nhớ, RAM, mạng (Network FS), thẻ SD, từ 1 tệp trong hệ thống file, …

Khi cài đặt hệ điều hành CentOS ta có hệ thống file thường là dạng XFS/Ext4/Btrfs trên phân vùng ổ cứng.

Phân vùng được biểu diễn qua đường dẫn /dev/sda* (ổ SCSI), /dev/sdb*, /dev/hdc, /dev/nvme*, ...

Một số loại format của hệ thống file:

 NTFS: Windows thường sử dụng

 XFS: hệ thống file hướng năng suất & tự gỡ lỗi

 Ext4: hệ thống file truyền thống của Linux

 Btrfs: hệ thống file có khả năng mở rộng, snapshot, backup, nén, … mạnh

 F2FS: hệ thống file tối ưu cho bộ nhớ Flash Windows thường sử dụng định dạng là NTFS.

Tên tệp (File) và thư mục (Directory) trên Linux có thể chứa tất cả các ký tự trong bảng mã ASCII hoặc Unicode, phân biệt chữ hoa và chữ thường và không được chứa:

<b> \ / : * ? " < > | </b>

Một tệp/thư mục có các thuộc tính như:

 Type #tệp thường/thư mục (D)/liên kết (L)

 Access time #thời gian cuối tệp được truy cập (obsoleted)

 Modify time #thời gian cuối tệp được ghi

 Created time #thời gian tệp được tạo

 Owner/Owner Group #người sở hữu, nhóm sở hữu

 Permission Sets #các cài về quyền hạn (có chứa Type)

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

 Links #số liên kết tới tệp/thư mục nó

 Blocks #số block mà tệp chiếm của hệ thống file Lưu ý:

Tệp trong /dev (trừ /dev/shm), /sys là các tệp đặc biệt (Special file). Tệp thực thi khơng cần có định dạng (Windows cần .exe, .dll). Tệp thư viện chương trình thường là .so (hay .so.V.E.R, VD: libfam.so.1.0)

<b>2.6.2. Mount </b>

Mount là một q trình mà trong đó hệ điều hành làm cho các tập tin và thư mục trên một thiết bị lưu trữ có thể truy cập được bởi người dùng thơng qua hệ thống tệp của máy tính.

Trên Windows chúng ta thường mount FS vào C: D:.., trên Linux ta phải mount vào thư mục duuy nhất.

Có thể được mount vào hệ thống tệp vật lý. Tức là một thư mục trong hệ thống file này làm mount point cho FS khác mount vào.

Không cần Superuser mới được mount. Mount có thể lấy quyền root để mount nếu thêm thuộc tính user vào một mục mount cho 1 FS tệp cấu hình /etc/fstab, hoặc dùng fuser.

<i>Hình 8: cây thư mục </i>

<b>2.6.3. Link </b>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Là liên kết tới File hoặc Directory khác mà không hề làm tăng dung lượng sử dụng

<b>2.7. Cấu trúc thư mục (CentOS 7) 2.7.1. Các thư mục hệ thống </b>

/ => Root (thư mục chứa tất cả mọi thư mục khác, giống như ổ A: B: C: trên Windows nhưng root chỉ có một).

/var => thư mục chứa data của các chương trình hệ thống (RPM, DHCP, DisplayManager,...).

/lib => thư mục chứa Libraries (thư viện .so nhị phân) của chương trình 32bit, Scripts (thư viện dạng văn bản, Python, Perl, ...), data của chương trình vv.

/lib64 => tương tự /lib nhưng chỉ dành cho chương trình 64bit.

/etc => thư mục chứa các configurations (cài đặt, cấu hình) của hệ thống.

/boot => chứa các file của Boot Manager (trình quản lí khởi động) và hạt nhân Linux.

/bin => chứa các Excecutable (file thực thi chương trình) cho tất cả người dùng.

/sbin => chứa các Excecutable (file thực thi chương trình) dành cho quản trị viên root.

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

/home => thư mục chứa các thư mục con có tên là tên của user (người dùng) chứa tất cả dữ liệu của user không phải root (người dùng Desktop).

/proc =>chứa hệ thống file ảo 'proc' dùng để giám sát và điều khiển các chương trình đang chạy, các thông tin hệ thống, các thông tin phần cứng, các cài đặt mạng và cài đặt cho hạt nhân được cài lúc hệ thống khởi động.

/dev => chứa hệ thống file ảo 'devtmpfs' bên trong có các 'nút' (device node) dể đại diện cho các thiết bị được gắn vào hệ thống, các 'nút' này rất quan trọng để hệ thống Linux hoạt động được .

/sys => chứa hệ thống file ảo 'sysfs' dùng để tăng khả năng hỗ trọ việc giám sắt và điều khiển các thiết bị hot-plug và hiển thị theo hướng thứ bậc về các thiết bị phần cứng. Là một mở rộng của.

/proc /tmp => chứa các file tạm thời tạo ra bởi các chương trình đang chạy, bị xóa sạch khi khởi động lại .

/mnt => thư mục thường chứa các thư mục để mount các hệ thống file khác

/usr => thư mục chứa các chương trình được cài đặt, bên trong có các thư mục gần giống / (root) như /etc, /bin, /sbin, /lib, /lib64 và thư mục riêng như /share, /games, /include, /src.

/include => chứa header C/C++ của hạt nhân, các thư viện (.so) để dịch ra chương trình từ trình dịch (như GNU Compiler Collection – GCC)

/games => chứa games - tách biệt vs chương trình làm việc

/share => thư mục chứa data chia sẻ/dùng chung cho các chương trình Các thư mục lib64, lib, sbin, bin ở trong /usr được liên kết bằng Symbolic link tới thư mục có tên tương tự như ở / (root). Điều này chỉ có Fedora/RHEL/CentOS (RedHat based) làm.

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

/usr/local => thư mục có cấu trúc tườn tụ /usr để dùng thay lúc người dùng cài đặt ngay chương trình sau khi build (dịch từ mã nguồn) do không muốn động vào.

/media => thư mục thường chứa các thư mục để tự động mount các bộ nhớ gỡ bỏ được (USB, CD/DVD).

/lost+found => chứa các FS inode dải rác từ hệ thống file bị loại bỏ do lỗi ổ cứng (thường do mất nguồn).

/opt => chứa các phần mềm cài theo kiểu standardalone.

<i>Hình 9: sơ đồ cấu mô phỏng trúc thư mục </i>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>2.8. Quyền truy cập thư mục và file 2.8.1. Khái quát </b>

Mỗi file/directory có chủ sở hữu (Owner) và nhóm sở hữu (Owner Group).

Quyền chỉ định (permission sets) dành cho ba người/nhóm người dùng:

 Owner (người tạo)

 Owner Group (nhóm tạo)

 World (toàn bộ các User khác)

Mỗi file/directory (link đến bị ảnh hưởng theo) trên hđh Linux/Unix đều có 2 thơng tin cơ bản là Owner, Group Owner Mỗi người/nhóm người dùng là Owner/Owner Group/World đều sở hữu tổ hộp quyền chỉ định riêng. Chỉ có Owner hoặc Superuser mới có thể thay đổi quyền chỉ định trên file/directory.

Lưu ý:

 Owner Group thường là nhóm chính của người tạo .

 Chỉ có Owner mới thay đổi quyền chỉ định (chmod), ngoại trừ root. Chỉ có Owner/Superuser mới có thể thay đổi được Owner Group.

 Chỉ có Superuser mới thay đổi được Owner của một file/directory

<i>Thực thi file/thực thi các file trong directory </i>

 SUID (thuộc tính superuser id)

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<i>Làm cho chương trình chạy trên người dùng Owner chứ khơng phải chính người dùng chạy chương trình đó - nguy hiểm nếu sử dụng khơng đúng cách -> chỉ có 1 cho Owner </i>

 STICKY BIT (thuộc tính dính)

<i>Thuộc tính chỉ cho phép Owner đổi tên hoặc xóa nó đi, quyền hạn đã cài cho Owner Group và World bị bỏ qua -> chỉ có 1 cho Owner </i>

Mỗi đối tượng người dùng (Owner/Owner Group/World) đều sở hữu tổ hộp quyền như trên; Chỉ có Owner/Superuser có thể thay đổi quyền chỉ định trên file/directory.

VD về đường dẫn:

<b>‘thumuc1/thu muc_2/tep_or_thu muc’ </b>

đường dẫn relative bắt đầu là . hoặc không

<b>'/tmp/thumuc1/thu muc 2/tep' </b>

đường dẫn absolute bắt đầu là /

<b>./ </b>

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

thư mục hiện tại (CWD)

<b>rmdir <duongdan_thumuc> </b>

 Câu lệnh ls:

Liệt kê danh sách file/directory/link trong một thư mục

<b>ls </b>

<b>ls <duongdan> #Liệt kê tại đường dẫn cụ thể </b>

<b>ls –l #Hiển thị dạng dài với nhiều thông tin hơn là chỉ </b>

tên.

<b>ls -a hoặc ls –A #Hiển thị cả nhữnng file/directory được ẩn có bắt </b>

đầu là '.' (dấu chấm), với -A thì khơng hiện thư mục '.' và '..'.

<b>ls –h #Hiển thị kích thước file dạng kB/mB/gB thay vì </b>

chỉ hiện số bytes.

<b>ls--color=auto #Dạng hiện màu tùy theo loại file/directory/link. ls -1A #Liệt kê tệp/thư mục trong thư mục hiện tại. Dạng </b>

1 cột, hiện tệp ẩn

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b>ls –lhS #Liệt kê theo dạng chi tiết và sắp xếp theo dung </b>

lượng tệp.

<b>ls –ltr #Liệt kê sắp xếp tăng dần theo thời gian sửa/tạo. ls –help #Để xem rất nhiều nhiều tùy chọn khác. </b>

<b>ls –l #Để liệt kê đầy đủ thông tin của các file </b>

<b>ls –d */ #Để liệt kê các thư mục trong thư mục hiện hành </b>

Dùng thay đổi Permission Sets cho tệp/thư mục.

Với Symbolic link thì chmod sẽ sửa đích đến. Hard link thì khơng do mỗi file có bảng thuộc tính riêng.

Cấu trúc sử dụng:

<b>chmod +x +w +r +s +t <path_ten_tep_thumuc> </b>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

 Câu lệnh chmod dùng thêm lần lượt quyền thực thi, quyền ghi, quyền đọc, quyền SUID và sticky bit

 Dấu + dùng để thêm permission này, dấu - để xóa.

 Ta có thểm thêm u, g, o vào trước dấu cộng hoặc trừ để chỉ thêm, xóa quyền cho lần lượt Owner, Owner Group và Others (World).

 VD: u+w g-w

<b>chmod 1764 <ten_tep_thumuc> </b>

 Câu lệnh chmod dùng dãy số hệ octal.

 1764 có format là BUGO (Bits, Owner, Owner Group, Others – World)

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

 Có thểm thêm tùy chọn -R: thay đổi luôn cho tất cả các tệp/thư mục con trong <duongdan> nếu có.

 Và tùy chọn -h: sử dụng chính đối tượng liên kết (symbolic link) thay vì sửa tệp/thư mục ở đường dẫn liên kết đó trỏ đến.

<b>mv <duongdan_tep_thumuc> <duongdan_dich_den> </b>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

 Câu lệnh ln

Dùng tạo Hard link (mặc định) và Symbolic link (tùy chọn -s) Sử dụng:

<b>ln -s <duongdan_tep_thucmuc> <duongdan_tenlink> ln <duongdan_tep_thucmuc> <duongdan_tenlink> </b>

# Tùy chọn -f để ghi đè link nếu đã có

 Câu lệnh cat

Dùng đọc toàn bộ file văn bản/nhị phân Sử dụng:

<b>cat <duongdan_tep> </b>

Ngồi ra có thể dùng để copy nội dung file này vào cuối file khác

<b>cat <duongdan_tep1> >> <duongdan_tep2> </b>

<b>echo Something To Say >> <duongdan_tep>.txt </b>

#Nối thêm dòng AHIHI vào tệp txt

Các công cụ trên màn hình câu lệnh khác như nano, vi, dhex, pico,...: Để tạo, xử lý, chỉnh sửa tệp khác.

Sử dụng:

</div>

×