Open bmson7112 opened 1 year ago
CHAPTER 1: Exploring Linux Command-Line Tools
Using a Shell:
Hiển thị chuỗi string ra màn hình
echo [OPTION]... [STRING]...
VD:
Đối với ký tự đặc biệt như
* ? [ ] ' " \ $ ; & ( ) | ^ < >
sẽ xảy ra các trường hợp
Navigating the Directory Structure:
Hiển thị vị trí thư mục hiện tại: Sử dụng lệnh pwd
Nếu muốn di chuyển đến thư mục trước, sau hoặc 1 thư mục khác thì sử dụng
cd ...
Understanding Internal and External Commands
Sử dụng lệnh type ...
để xác định lệnh có phải là lệnh tích hợp sẵn hay không
Using Environment Variables
Các biến môi trường thường được sử dụng:
BASH_VERSION
: Phiên bản Bash shell hiện tại đang dùng
EDITOR
: Trình soạn thảo mặc định được dùng bởi shell command
HISTFILE
: Tên tệp lịch sử lệnh shell của người dùng
HOME
: Tên thư mục chính của người dùng hiện tại
PATH
: Danh sách các thư mục được phân tách bằng dấu hai chấm để tìm kiếm các lệnh
PWD
: Thư mục làm việc hiện tại của người dùng
SHLVL
: Cấp độ shell hiện tại
Hiển thị thư mục của chương trình, sử dụng which
Hủy 1 cài đặt bằng
unset
Sử dụng
man -k
để tìm kiếm từ khóa
Sử dụng
HISTORY
để xem lịch sử command, thêm dấu ! trước id của command để gọi lại nó
Editing Text Files Có 3 loại chính : emacs, nano, vim
Processing Text Using Filters
Để xem các file text có kích cỡ nhỏ, sử dụng cat [ OPTION ]... [ FILE ]...
Nối 2 file text
Một số ví dụ khac
Sử dụng
paste
để nối song song 2 file với nhau
File-Transforming Commands
Có thể dùng để chuyển dữ liệu trong file thành các dạng như hệ bát phân, thập phân, ,,,
Cú pháp od [ OPTION ]... [ FILE ]...
File-Formatting Commands
Sử dụng lệnh sort [ OPTION ]... [ FILE ]...
để sắp xếp dữ liệu của file mà không làm thay đổi dữ liệu ban đầu
Sử dụng
nl [ OPTION ]... [ FILE ]...
để đánh số thứ tự dòng trong file
File-Viewing Commands
Xem file sử dụng head, cú pháp head [ OPTION ]... [ FILE ]...
Xem filr sử dụn tail, cú pháp
tail [OPTION]... [FILE]...
File-Summarizing Commands
Đếm số dòng, số từ, só byte của file sử dụng wc, cú pháp wc [ OPTION ]... [ FILE ]...
Để sàng lọc dữ liệu trong 1 tệp văn bản lớn, sử dụng cú pháp
cut OPTION... [FILE]...
Vd dưới là đê tách dữ liệu từ file /etc/passwd với mốc phân tách là các dấu ":", và chỉ lấy phần tử 1 và 7
Tìm các dòng lặp đi lặp lại liên tiếp nhau, sử dụng uniq, với các dòng giống nhau ấy, khi chạy uniq chúng sẽ được hiển thị ở 1 dòng duy nhất, như ví dụ bên dưới
Thuật toán bảo mật băm(SHA) được sử dụng để mã hóa các file, từ đó có thể xác minh tính toàn vẹn của các file sau khi chúng được gửi đi hoặc sao chép đến 1 địa chỉ khác
Vd: Sử dụng sha256sum để kiểm tra file
Using Regular Expressions
Sử dung grep để lọc và tìm kiếm trong text file, cú pháp grep [OPTION] PATTERN [FILE...]
, với các option bản như
-c
: Hiển thị số lượng bản ghi tệp văn bản có chứa PATTERN phù hợp.
-E
: Chỉ định PATTERN như một biểu thức chính quy mở rộng.
-i
: Bỏ qua trường hợp trong PATTERN cũng như trong bất kỳ bản ghi tệp văn bản nào.
-v
: Chỉ hiển thị các bản ghi tệp văn bản không chứa kết quả khớp PATTERN
Vd: Tìm kiếm root trong file /etc/passwd
Sử dụng grep để hiểu được và làm việc với mô hình BRE
Sử dụng grep để làm việc với các biểu thưc chính quy mở rộng ERE
Using Streams, Redirection, and Pipes
Xây dựng các lệnh từ các lệnh khác, hoặc có thể sử dụng kết quả của lệnh này làm đầu vào của lệnh khác
Xử lý kết quả đầu ra theo tiêu chuẩn. Mỗi đối tượng tệp được xác định bằng cách sử dụng một mô tả tệp, một số nguyên phân loại các tệp đang mở của quy trình. Mô tả tệp xác định đầu ra từ tệp lệnh hoặc tập lệnh là 1. Nó cũng được xác định bằng chữ viết tắt là STDOUT, theo mặc định thì STDOUT hướng đầu ra tới terminal của người dùng
Sử dụng cùng lúc nhiều lệnh kết hợp để có được kết quả tối ưu nhất
Sử dụng sed để chỉnh sửa văn bản ngay trên dòng lệnh mà không cần dùng tới các trình soạn thảo văn bản nào với cú pháp
sed [OPTIONS] [SCRIPT]... [FILENAME]
Sử dụng sed để thêm,xóa văn bản trong file text
PACKAGE-NAME - VERSION - RELEASE . ARCHITECTURE .rpm
Xem các tệp RPM trên CentOS:
ls -1 *.rpm
Cấu trúc câu lệnh sử dụng RPM:
rpm ACTION [ OPTION ] PACKAGE-FILE
Với các option như:
-e
: Loại bỏ các gói được chỉ định
-F
: Nâng cấp các gói được chỉ định
-i
: Cài đặt gói
-q
: Truy vấn coi gói được chỉ định có được cài đặt không
-u
: Cài đặt hoặc nâng cấp gói
Cài đặt, nâng cấp gói RPM, cú pháp rpm -Uvh [packetname].rpm
Truy vấn package, cú pháp rpm -q [packagename]
Xác định các phụ thuộc của package rpm -qR ...
Xác định tệp cấu hình rpm -qc ...
Kiểm tra tính toàn vẹn của package RPM rpm -V ...
Xóa gói RPM rpm -e ...
ls /etc/yum.repos.d/
yum [OPTIONS] [COMMAND] [PACKAGE...]
yum install ...
yum reinstall ...
yum remove ...
Using ZYpp Tương tự 2 cái trên
Using apt-cache, apt-get
Hiển thị tất cả các gói đã cài đặt bằng lệnh apt-cache pkgnames
Tìm kiếm gói với lệnh apt-cache search
Hiển thị thông tin gói bằng lệnh apt-cache showpkg
Cài đặt gói với apt-get install
Upgrade gói cũng sử dụng apt-get install
Managing Shared Libraries
Để giảm sát các tài nguyên thư viện
Trên Linux, giống như các gói ứng dụng, thư viện files có quy ước đặt tên. Tệp thư viện được chia sẻ sử dụng định dạng tên tệp sau: lib LIBRARYNAME .so. VERSION
Managing Processes Linux phải theo dõi rất nhiều tiến trình khác nhau chạy cùng một lúc. Phần này bao gồm cách sử dujg các dòng lệnh để theo dõi, giám sát và quản lý các tiến trình đang hoạt động
Xem danh sách các tiến trình sử dụng ps
Xem các tiến trình với lệnh ps và các tùy chọn kiểu Unix:
Giair nghĩa định dạng các cột trong kết qủa trả về:
UID: Người dùng đang chạy tiến trình
PID: ID của tiến trình
PPID: ID của tiến trình mẹ
C: Việc sử dụng bộ xử lý trong suốt thời gian của tiến
STIME: Thời gian hệ thống khi tiến trình được bắt đầu
TTY: Terminal mà từ đó tiến trình được bắt đầu
TIME: Thời gian CPU tích lũy cần thiết để chạy tiến trình
CMD: Tên của chương trình đã được bắt đầu trong tiếntrình
Understanding Process States Thông thường,Linux đặt một tiến trình vào chế độ ngủ khi nó đang chờ một sự kiện. Khi sự kiện được kích hoạt, nó sẽ gửi tín hiệu đến cho tiến trình. Nếu tiến trình đang ở chế độ ngủ gián đoạn thì nó sẽ hoạt động ngay lập tức. Nếu tiến trình đang ở chế độ ngủ liên tục thì nó chỉ thức dậy khi các phụ thuộc bên ngoài được hỗ trợ ví dụ như phần cứng có sẵn... Nó sẽ lưu giữ hết tất cả các tín hiệu nhận được khi đang ngủ và trả lời khi nó hoạt động
Xem các tiến trình của user
Theo dõi các tiến trình sử dụng top
Lệnh top
vượt trội hơn ps
ở chỗ nó thể hiện nhiều thông tin hơn đặc biệt là liên quan đến phần cứng , ngoài ra nó còn thể hiện thông tin của các tiến trình dưới dạng thời gian thực
PID
: ID quy trình của tiếntrình
USER
: Tên người dùng của chủ sở hữu tiến trình
PR
: Ưu tiên của tiến trình
NI
: Giá trị tốt đẹp của tiến trình
VIRT
: Tổng dung lượng bộ nhớ ảo được sử dụng bởi tiến trình
RES
: Dung lượng bộ nhớ vật lý mà tiến trình đang sử dụng
Multiplexing sử dụngscreen
Để sử dụng screen, phải cài đặt nó bằng lệnh sudo apt install screen
Kiểm tra màn hình screen
sử dụng -ls
và w
Thực hiện setup màn hinh terminal thành 3 khu vực thực hiện theo hướng dẫn trên ảnh
Ta có kết quả
Multiplexing sử dụng tmux
Để sử dụng tmux, phải cài đặt nó bằng lệnh sudo apt install tmux
Chuyển sang dao diện tmux, sử dụng lệnh tmux new
Hiển thị một cửa sổ tách rời bằng lệnhtmux ls
Gắn vào một cửa sổ tách rời bằng lệnh
tmux attach-session
Gửi lệnh đến background với biểu tượng &
Với ví dụ trên, nó sẽ gửi lệnh đến cho tiến trình có ID 6670 chạy dưới chế độ nền.
Dừng các tiến trình
Lệnh kill sẽ gửi các tín hiệu đến các tiến trình. Có tổng cộng 63 tín hiệu. Tín hiệu mặc định dừng một tiến trình được gọi là SIGTERM với giá trị 15.
Cú pháp: kill [SIGNAL] PID
Mọi tiến trình có thể lựa chọn nhận hay không nhận một tín hiệu ngoại trừ SIGKILL sẽ được thực hiện bằng nhân hệ thống. Các daemon sẽ hiểu SIGUP có nghĩa là "đọc lại file cấu hình"
Chúng ta có thể sử dụng lệnh killall để dừng các tiến trình mà không cần biết PID.
Cú pháp: killall [SIGNAL] process_NAME
ls
mà không đi kèm option nào khác thì sẽ có kết quả là danh sách các file và thư mục con hiện đang tồn tại trong thư mục đang làm việcpwd
để biết đường dẫn thư mục hiện đang làm việcls
-l
: Liệt kê tên thư mục con hoặc tệp trên mỗi dòng
-a
: Hiển thị tất cả tên, kể cả thư mục, file ẩn
-d
: HIển thị siêu dữ liệu của 1 thư mục thay vì tên thư mục đó
-F
: Phân loại từng loại tệp bằng mã chỉ báo
-i
: Hiển thị tất cả tên tệp và thư mục con cùng với số chỉ mục được liên kết của chúng
-l
: Hiển thị siêu dữ liệu tệp và thư mục con, bao gồm loại tệp, quyền truy cập tệp, số lượng liên kết cứng, chủ sở hữu tệp, của tệp nhóm, ngày giờ sửa đổi và tên tệpĐể tạo 1 file mới, sử dụng lệnh touch [tên file]
Để xác định loại của tệp, sử dụng lệnh file [tên file]
Sử dụng ký tự đại diện dấu hoa thị với lệnh ls
để nhận được kết quả trả về đúng theo như định dạng yêu cầu.
Sử dụng ký tự đại diện dấu chám hỏi với lệnh ls
Để tạo nhanh 1 thư mục mới, sử dụng lệnh mkdir [tên thư mục]
Không thể tạo cả thư mục mẹ và thư mục con vào cùng 1 thời điểm, để có thể tạo cùng lúc thì thêm option -p
trong lệnh
Copy file và thư mục với cú pháp cơ bản cp [ OPTION ]... SOURCE DEST
Di chuyển/ đổi tên file, thư mục sử dụng lệnh có cú pháp mv [OPTION]... SOURCE DEST
Có thể sử dụng thêm các option như
-i
để tránh đổi tên tệp thành tệp đã tồn tại...
Đẻ xóa 1 file hoặc 1 thư mục, sử dụng cú pháp rm [OPTION]... FILE
với các option tùy chọn
-d
: Xóa mọi thư mục trống
-f
: Tiếp tục với quá trình xóa, ngay cả khi một số tệp được chỉ định bởi lệnh xóa không tồn tại và thực hiện
không hỏi trước khi xóa bất kỳ tập tin hiện có.
-i
: Hỏi trước khi xóa bất kỳ tệp hiện có nào.
-r, -R
: Xóa nội dung của thư mục và cũng xóa nội dung của bất kỳ thư mục con nào trong cây thư mục gốc.
-v
: Cung cấp thông tin hành động lệnh chi tiết dưới dạng lệnh thực thi.
![image](https://user-images.githubusercontent.com/79183573/212269163-a7
Nén dữ liệu trên Linux, thường sẽ có các giải pháp của gzip
bzip2
xz
zip
So sánh các tiện tích nén của Linux , từ đó có thể thấy được kích cỡ của các thư mục sau khi được giải nén
/usr/sbin/useradd
sẽ thêm người dùng mới vào hệ thống, vơi cú pháp
useradd [options] login-name
Với các option như :
-c
: ghi chú
-d
: đường dẫn tới thư mục gốc
-g
: nhóm khơir tạo GID phải tồn tại trước đó
-u
: UID của người dùng
-p
: mật khẩu ( mã hóa md5)
-e
: ngày hết hạn của tài khoản
Khi không có các tham số thì các option sẽ sử dụng các giá trị mặc định, có thể liệt kê các giá trị này vói lệnh useradd -D
/etc/default/useradd
Khi thay đổi mật khẩu, để cho phép người dùng truy cập vào tài khoản của mình, phải thiết lập mật khẩu cho người dùng bằng lệnh passwd, cú pháp passwd login-name
Để xóa tài khoản người dùng, sử dụng lệnh userdel
để xóa. Để đảm bảo rằng thư mục gốc của người dùng cũng được xoá, ta sử dụng option –r
, vd: userdel -r [username]
Sử dụng lệnh groupadd
để thêm nhóm vào hệ thống, với option -g
: để thêm GID cho nhóm
Để thêm, bớt user khỏi nhóm sử dụng gpasswd
, có thể thêm (-a) hoặc gỡ bỏ (-d) người dùng từ một nhóm và gán một người quản trị (- A) nhóm
Ví dụ: Muốn thêm người dùng a vào nhóm b, ta chạy lệnh
gpasswd -a a b
Một người dùng có thể nằm trong nhiều nhóm tuy nhiên tại 1 thời điểm (ví dụ khi tạo một tệp mới) thì chỉ duy nhất một nhóm là nhóm hiệu lực.. Lệnh groups
là lệnh cho biết nhóm của 1 user, cú pháp groups [login-name]
Để biết cả định danh nhóm và định danh người dùng, sử dụng lệnh id
, cú pháp id [login-name]
/etc/passwd
:
Thông tin của mỗi user trong hệ thống đều có trong file này, với các trường thông tin được phân cách với nhau bơỉ dấu hai chấm như :Tên truy cập,``Mật khẩu (hoặc x nếu sử dụng file shadow)
,UID
,GID
,Đoạn text mô tả người dùng
,Thư mục gốc của người dùng
,shell của người dùng
/etc/shadow:
Mật khẩu của user thông thường được lưu trong tệp /etc/shadow
chỉ có thể đọc được bởi người dùng root. Cần chuyển sang quyền root trước, hoặc thêm sudo vào trước lệnh và cung cấp mật khẩu root nếu muốn xem/etc/shadow
Mật khẩu của user được sử dụng hàm băm để mã hóa . Thuật toán băm được định nghĩa trong tệp
/etc/login.defs
Theo như hình thì hàm băm được sử dụng là SHA512
/etc/group
Thông tin nhóm được lưu giữ trong file /etc/group. Mỗi nhóm được lưu trên một dòng có 4 trường được ngăn cách nhau bởi dấu hai chấm đó là Tên nhóm
, Mật khẩu nhóm (hoặc x nếu file gshadow tồn tại)
, GID
,Danh sách các thành viên phân cách bởi dấu phẩy
/etc/gshadow
Tương tự như file /etc/shadow
, cũng lưu giữ mật khẩu của các nhóm
/etc/skel/ Thư mục chứa các file mặc định và sẽ được copy tới thư mục gốc của người dùng mới được tạo: .bashrc, .bash_profiles, …
usermod
cùng với các option sau, tương tự khi sử dụng useradd
để sửa đổi tài khoản user
-d
: thư mục người dùng
-g
: GID khởi tạo người dùng
-l
: tên đăng nhập của người dùng
-u
: UID của người dùng
-s
: shell mặc địnhTương tư như vậy để thay đổi thông tin của group sử dụng lệnh groupmod
, với các option
-g
:GID
-n
:tên nhóm
passwd –l
hoặc usermode –L
, để mở khóa sử dụng passwd –u
hoặc usermod –U
Networking Basics
/etc/services
như hình
Configuring Network Features Có năm phần thông tin chính càna cấu hình trong hệ thống Linux để tương tác trên mạng đó là :
Một số tệp cấu hình mạng của LInux:
nmtui
:Cung cấp một công cụ menu dựa trên văn bản đơn giản
nmcli
:Cung cấp công cụ dòng lệnh chỉ có văn bản
Cả 2 công cụ đều hỗ trợ quản lý mạng nhưng nmtui
cung cấp giao hiện đồ họa cơ bản như hình
nmcli
hiển thị thông tin network như hình
ethtool
: Hiển thị cài đặt Ethernet cho giao diện mạng
ifconfig
:Hiển thị hoặc đặt giá trị địa chỉ IP và netmask cho giao diện mạng
iwconfig
:Đặt SSID và khóa mã hóa cho giao diện không dây
route
:Đặt địa chỉ bộ định tuyến mặc định
Tracing Routes
Khác với ping chỉ trả về kết quả gói tin thử nghiệm có đến được với địa chỉ ip hay không. Tracing routes hỗ trợ 2 comman là traceroute và traceroute6 dùng đêr xạ tất cả các route mà các gói thử nghiệm đi qua đến đích cuối cùng
Finding Host Information
KIểm tra thông tin của DNS với lệnh host
, dig
, nslookup
Đọc và note lại quyển LPIC-1 https://drive.google.com/file/d/15w3W8QTeASa1gQVwZJL6HJJrj3efv_R1/view
Đọc các chương 1, 2, 4, 7, 8, 9