/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Basic Regular Expression In Linux/Ubuntu/CentOS

Mục Lục

1. Regular Expression Căn Bản

2. Ví dụ:


Nội dung:

1. Regular Expression Căn Bản

Ký Hiệu Giải Thích
. Bất kỳ ký tự nào
+ MỘT hoặc NHIỀU lần xuất hiện TRƯỚC nó
* Không hoặc NHIỀU lần xuất hiện TRƯỚC nó
? Không hoặc MỘT lần xuất hiện TRƯỚC nó
^ Đại diện cho mẫu ĐỨNG ĐẦU một chuỗi
$ Đại diện cho mẫu KẾT THÚC một chuỗi
[] Tập hợp các ký tự/ khớp với bất kỳ ký tự nào nằm trong trong dấu ngoặc này
() Gom nhóm các mẫu lại với nhau
{n} Tìm chính xác ký tự và n lần xuất hiện của ký tự
{n,m} Khớp với ký tự xuất hiện 'n' lần nhưng không quá 'm'
{n,} Chỉ khớp với ký tự khi nó xuất hiện 'n' lần trở lên
\ Đại diện cho một ký tự đặc biệt
\+ Khớp với một hoặc nhiều lần xuất hiện của ký tự trước
\? Khớp 0 hoặc một lần xuất hiện của ký tự trước

2. Ví dụ:

Commands Giải Thích
cat file.txt | grep a Mở file.txt và tìm chữ 'a' trong file.txt sau đó trả về kết quả.
HOẶC grep a file.txt Tìm chữ 'a' trong file.txt, tuy nhiên với cách tìm kiếm này ít tốn tài nguyên hơn
cat file.txt | grep ^a Tìm chuỗi bắt đầu bằng chữ 'a' trong file.txt
cat file.txt | grep g$ Tìm chuỗi kết thúc bằng chữ 'g' trong file.txt
cat file.txt | grep .a Tìm a và bất kỳ ký tự nào đứng trước a
cat file.txt | grep a. Tìm a và bất kỳ ký tự nào đứng sau a
cat file.txt | grep -E p\{2} Trả về 1 chuỗi nếu trong chuỗi có có chữ 'p' xuất hiện 2 lần
grep -v ^$ /etc/login.defs | grep -v ^\# Hiển thị nội dung file login.defs nhưng không hiển thị các dòng trắng và dòng giải thích (bắt đầu bằng dấu #)

Xong!

File/Directory Permission In Linux/Ubuntu/CentOS

Mục lục

1. File type (căn cứ vào ký tự đầu tiên)
2. Nhóm phân quyền trong Linux - Ownership:
3. Kiểm soát quyền truy cập - Permission:
4. Thay đổi permission - chmod
5. Thay đổi permission - chmod bằng cơ số
6. Defaulf permission - umask


Nội dung

1. File type (căn cứ vào ký tự đầu tiên)


Attribute File type
- Là ký hiệu của file thường
d Ký hiệu của thư mục (Directory)
l Ký hiệu của symbolic link

2. Nhóm phân quyền trong Linux - Ownership:

  • Owner: Mỗi file, thư mục được sở hữu bởi một user nhất định (phân quyền sở hữu)
  • Group: Mỗi file, thư mục được sở hữu bởi một group
  • Others: Quyền truy cập cập các user, group không phải là owner và group
Commands Giải Thích
id Xác định username hiện tại
ls -l Liệt kê các items cung với thông tin owner, group
ls -l file_name.txt Xem file_name.txt đang set những quyền nào
chown thay đổi owner
chgrp Thay đổi group
-R Recursively (đệ qui)
chown: NEW_GROUP == chgrp
chown NEW_USER:NEW_GROUP Thay đổi đồng thời ower và group

  • Cú pháp:
chown option [tên user]:[tên group] [file/folder]

- Option: chủ yếu vẫn dùng với -R 

  • Ví dụ:
Command Giải Thích
chgrp ITadmin file.txt Thiết lập group ITadmin là owner của file.txt
chgrp -R ITadmin folder_name Thiết lập group ITadmin là owner của thư mục có tên folder_name và áp xuống tất cả (đệ quy) các file và thư mục con của folder này.
chown itsupport file.txt Thiết lập owner file.txt là user itsupport
chown khanhvc:root file.txt Thiết lập owner file.txt là user khanhvc và owner group cho file.txt là root
chown -R khanhvc:root folder_name Thiết lập user khanhvc và group root là owner của thư mục có tên folder_name và áp xuống tất cả (đệ quy) các file và thư mục con của folder này.

3. Kiểm soát quyền truy cập - Permission:

Attribute Permission Files Directory
r read Cho phép mở file và đọc cho phép list content của directory nếu thuộc tính x (execute) cũng được set
w write Cho phép ghi vào file hoặc xóa nội dung file, không cho phép xóa hoặc rename. Cho phép xóa, tạo, đổi tên file nếu thuộc tính x cũng được set
x execute Cho phép file được coi như một chương trình có thể thực thi được. Những file được viết bằng scripting language cũng cần có quyền đọc r để có thể thực thi được Cho phép truy cập directory
- Deny Không được phép Không được phép

4. Thay đổi permission - chmod


  • Ký hiệu cho đối tượng
Ký Hiệu Ý Nghĩa
u User/Owner
g Group
o Other or everyone
a All

  • Ký hiệu cho operations
Ký Hiệu Ý Nghĩa
+ Permisssion được add thêm vào/add permission
- Permission bị xóa bỏ/remove permission
= Thay thế toàn bộ quyền hiện tại bằng quyền mới này

  • Ví dụ:
Command Giải Thích
chmod o+w file_name.txt Cho phép user có quyền write trên file file_file.txt
chmod g-w file_name.txt Xóa bỏ quyền write của group trên file file_file.txt
chmod g=rwx file_name.txt Thay thế tất cả các quyền trước đây bằng quyền mới là: read, write và execute trên file file_name.txt

5. Thay đổi permission - chmod bằng cơ số


Octal Permission Ý Nghĩa
0 --- Không có quyền gì cả - none
1 --x Chỉ được quyền thực thi
2 -w- Chỉ được quyền ghi
3 -wx Được phép thi và thực thi
4 r-- Chỉ có quyền đọc
5 r-x Có quyền đọc và thực thi
6 rw- Có quyền đọc và ghi
7 rwx Có quyền đọc, ghi và thực thi
  • Ví dụ:
Command Giải Thích
chmod 777 folder_name Cho phép everyone được full quyền trên folder có tên folder_name
chmod 700 file_name.txt Cho phép user full quyền, Group và Other không có quyền
chmod 642 file_name.txt Cho phép user có quyền được và ghi, group chỉ có quyền đọc, others chỉ có quyền ghi

6. Defaulf permission - umask

Chúng ta tạm hiểu là nó dùng để phân quyền mặc định cho file hoặc folder sau khi tạo ra. Giá trị permission mặc định của thư mục có giá trị là 777, file là 666. Nếu chúng ta sử dụng lệnh umask <giá trị> trước, sau đó sử dụng lệnh để tạo file hay thư mục thì phân quyền của file hoặc thư mục được tính là: lấy giá trị mặc định trừ đi giá trị umask



  • Ví dụ: 
Command Giải Thích
umask 002
touch test_umask.txt
Tạo file test_umask.txt có các quyền: Owner: Read + write; Group: Read + write; Others: Read
umask 002
mkdir test_umask
Tạo thư mục có các quyền: Owner: full quyền; Group: full quyền; Others: Read + execute

P/s: Giá trị mặc định của umask là 002, điểm kiểm tra giá trị của umask hiện tại chúng ta dùng umask

Xong!

Account Management In Linux/Ubuntu/CentOS

Mục lục

1. Tạo mới Group/User

2. Thêm/xóa user trong group

3. Profiles/Policies cho User


Nội dung:

1. Tạo mới Group, User mới

Commands Diễn Giải
cat /etc/group Kiểm tra các group hiện tại đang tồn tại trên hệ thống
sudo groupadd ITadmin Tạo group mới có tên ITadmin
cat /etc/group | grep ITadmin Kiểm tra group ITadmin có tồn tại không
sudo groupdel ITadmin Xóa group ITadmin ra khỏi hệ thống
sudo adduser itsupport Tạo user mới có trên itsupport
id itsupport Hiển thị thông tin user itsupport
sudo passwd itsupport Đặt password cho user itsupport
sudo useradd -c "Su dung cho backup" bkuser Tạo user mới có tên là bkuser và có phần comment là "Su dung cho backup"
sudo userdel bkuser Xóa user có tên là bkuser
sudo userdel -r bkuser Xóa user có tên là bkuser và thư mục home, thư mục mail
cat /etc/passwd Hiện thị thông tin tất cả user có trên hệ thống
grep itsupport /etc/passwd Hiển thông tin của user itsupport
sudo cat /etc/shadow Hiển thị thông tin lưu trữ password đã mã hóa của tất cả các user
usermod -L itsupport lock user itsupport
usermod -U itsupport unlock user itsupport

2. Thêm/xóa user trong group

Commands Diễn Giải
sudo usermod -a -G ITadmin itsupport Thêm user itsupport vào group có trên ITadmin
sudo usermod -a -G Group1,Group2,Group2 itsupport Thêm user itsupport vào các group: Group1,Group2,Group2
sudo gpasswd -M khanhvc,itsupport root Thêm các user: khanhvc,itsupport vào group có tên root
grep itsupport /etc/passwd Kiểm tra user itsuport thuộc những group nào
HOẶC grep itsupport /etc/group Kiểm tra user itsuport thuộc những group nào
grep root /etc/group Kiểm tra xem group root có bao nhiêu thành viên
sudo gpasswd -d itsupport root Xóa user itsupport ra khỏi group root

3. Profiles/Policies cho User

Commands Diễn Giải
grep -v ^$ /etc/login.defs | grep -v ^\# Hiển thị nội dung file login.defs nhưng không hiển thị các dòng trắng và dòng giải thích (bắt đầu bằng dấu #)
PASS_MAX_DAYS 30 Password có hiệu lực trong vòng 30 ngày
PASS_MIN_DAYS 1 Sau khi đặt password 1 ngày thì chúng ta mới có thể đổi được password mới
PASS_MIN_LEN 3 Độ dài của password phải >= 3
PASS_WARN_AGE 7 Hiển thị cảnh báo nếu password nếu còn 7 ngày nữa hết hiệu lực
CREATE_HOME yes Tạo thư mục home cho user
ENCRYPT_METHOD SHA512 Mã hóa password theo thuật toán SHA512

Xong!

Hard Links & Symbolic Links In Linux/Ubuntu/CentOS

Khi một file hoặc folder được tạo ra trong Linux nó sẽ tạo ra 1 số cho file hoặc folder đó. Số đó gọi là INODE và đây là dãy số duy nhất trên hệ thống của Linux nhằm mục đích quản lý. 

Ví dụ:

khanhvc@ubutu:~/projects$ ll -i

total 12

2621505 drwxrwxr-x  3 khanhvc khanhvc 4096 Thg 9  23 14:05 ./

2621442 drwxr-xr-x 27 khanhvc khanhvc 4096 Thg 9  23 14:05 ../

2621869 -rw-rw-r--  1 khanhvc khanhvc    0 Thg 9  23 14:05 file_name.txt

2755955 drwxrwxr-x  2 khanhvc khanhvc 4096 Thg 9  23 14:05 folder_name/

khanhvc@ubutu:~/projects$


1. Hard Links

Ví dụ: tạo hard links có tên hardlink.txt trỏ về file_name.txt
khanhvc@ubutu:~/projects$ ln file_name.txt hardlink.txt
khanhvc@ubutu:~/projects$ ll -i
total 12
2621505 drwxrwxr-x  3 khanhvc khanhvc 4096 Thg 9  23 14:17 ./
2621442 drwxr-xr-x 27 khanhvc khanhvc 4096 Thg 9  23 14:05 ../
2621869 -rw-rw-r--  2 khanhvc khanhvc    0 Thg 9  23 14:05 file_name.txt
2755955 drwxrwxr-x  2 khanhvc khanhvc 4096 Thg 9  23 14:05 folder_name/
2621869 -rw-rw-r--  2 khanhvc khanhvc    0 Thg 9  23 14:05 hardlink.txt
khanhvc@ubutu:~/projects$

Chúng ta thấy file hardlink.txt và file_name.txt có inode giống nhau, có nghĩa hard link sẽ tạo link trỏ về link gốc của tập tin, hay nói cách khác hardlink.txt và file_name.txt có cùng chung một dữ liệu.

Nếu chúng ta thêm dữ liệu vào file hardlink.txt, cũng đồng nghĩa dữ liệu đó được thêm vào file_name.txt
khanhvc@ubutu:~/projects$ echo "thêm nội dung vào hardlink.txt" >> hardlink.txt
khanhvc@ubutu:~/projects$ cat file_name.txt
thêm nội dung vào hardlink.txt
 
khanhvc@ubutu:~/projects$ cat hardlink.txt
thêm nội dung vào hardlink.txt
khanhvc@ubutu:~/projects$

Nội dung 2 file hoàn toàn giống nhau. Nếu chung ta xóa 1 trong 2 file này vẫn không ảnh gì đến dữ liệu của file còn lại

khanhvc@ubutu:~/projects$ rm file_name.txt
khanhvc@ubutu:~/projects$ ls -i
2755955 folder_name  2621869 hardlink.txt
khanhvc@ubutu:~/projects$


Thực hiện xóa file file_name.txt, kiểm tra nội dung file hardlink.txt

 

khanhvc@ubutu:~/projects$ cat hardlink.txt
thêm nội dung vào hardlink.txt
khanhvc@ubutu:~/projects$


2. Symbolic Links: Tạo ra 1 link để trỏ đến file hoặc thưc mục gọi target. Nó không chứa bản sao copy của target mà nó chỉ link đến file hay thư mục, nó tương tự như shortcut trong windows. Vì là shortcut nên khi symbolic links bị xóa sẽ không ảnh hưởng đến nội của file hay thư mục, ngược lại nếu target bị xóa hay đổi tên symblic link sẽ không cập nhật, không hoạt động như link

Ví dụ:
Tạo symbolic link có tên softlink.txt trỏ về file_name.txt, và softlink_folder.txt trỏ về folder_name
khanhvc@ubutu:~/projects$ ln -s file_name.txt softlink.txt
khanhvc@ubutu:~/projects$ ln -s folder_name softlink_folder.txt
khanhvc@ubutu:~/projects$ 

 

khanhvc@ubutu:~/projects$ ls -i
2621869 file_name.txt  2625309 softlink_folder.txt
2755955 folder_name    2621566 softlink.txt
khanhvc@ubutu:~/projects$ 

Các số/inode của symbolic link và target là khác nhau

khanhvc@ubutu:~/projects$ ll -i
total 16
2621505 drwxrwxr-x  3 khanhvc khanhvc 4096 Thg 9  23 14:42 ./
2621442 drwxr-xr-x 27 khanhvc khanhvc 4096 Thg 9  23 14:05 ../
2621869 -rw-rw-r--  1 khanhvc khanhvc   35 Thg 9  23 14:24 file_name.txt
2755955 drwxrwxr-x  2 khanhvc khanhvc 4096 Thg 9  23 14:05 folder_name/
2625309 lrwxrwxrwx  1 khanhvc khanhvc   11 Thg 9  23 14:42 softlink_folder.txt -> folder_name/
2621566 lrwxrwxrwx  1 khanhvc khanhvc   13 Thg 9  23 14:42 softlink.txt -> file_name.txt
khanhvc@ubutu:~/projects$

Thuộc tính của symbolic link là  l

Xong!

Basic File Editing - Vim In Linux/Ubuntu/CentOS

Nội dung

1. Cài đặt Vim
2. Vim modes
3. Saving Changes
4. Moving File
5. Cut, Copy & Paste
6. Searching
7. Replace
8. Specials
9. Others

Commands

1. Cài đặt Vim

Ubuntu:

sudo apt install wim


CentOS:

sudo yum install vim


2. Vim modes

  • Command Mode
  • Insert Mode
  • Visual Mode


 

3. Saving Changes

Commands Diễn Giải
:e ten_file.txt Mở file có tên ten_file.txt từ editor
:sav filename.txt Lưu và đặt tên cho file là filename.txt
:x Lưu và thoát khởi vim
:wq Lưu và thoát khởi vim
:wq! Lưu và thoát khởi vim, ghi đè
:w Lưu, nhưng không thoát khỏi vim
:w! Lưu và thoát khởi vim, ghi đè
:q Thoát vim và không lưu
:q! Thoát vim và không lưu (overrides protection)
ZZ Lưu và thoát khởi vim
. Lặp lại thao tác gần nhất ở Normal Mode
10. Lặp lại 10 lần thao tác gần nhất ở Normal Mode


4. Moving File

Commands Diễn Giải
h hoặc mũi tên trái Duy chuyển sang trái 1 ký tự
l hoặc mũi tên phải Duy chuyển sang phải 1 ký tự
j hoặc mũi tên xuống Duy chuyển con trỏ xuống dưới 1 dòng
k hoặc mũi tên lên Duy chuyển con trỏ lên trên 1 dòng
e Duy chuyển con trỏ đến cuối từ
b Duy chuyển con trỏ đến đầu từ
w Duy chuyển con trỏ đến từ đầu tiên của chữ kế tiếp
gg Duy chuyển con trỏ về đầu file
G Duy chuyển con trỏ về cuối file
5G hoặc :5 Duy chuyển con trỏ đến dòng thứ 5
CTR + Y Cuộn lên 1 dòng
CTR + E Cuộn xuống 1 dòng
CTR + U Cuộn lên nữa màn hình
CTR + D Cuộn xuống nữa màn hình
CTR + B Cuộn lên 1 màn hình
CTR + F Cuộn xuống 1 màn hình


5. Cut, Copy & Paste

Commands Diễn Giải
y Copy phần text đã chọn vào clipboard
p Paste
dd Cut dòng hiện tại
yw Copy word
yy Copy dòng hiện tại
y$ Copy đến cuối dòng
D Copy tới cuối file


6. Searching

Commands Diễn Giải
/vidu Tìm kiếm "vidu" từ trên xuống dưới
?vidu Tìm kiếm "vidu" từ trên dưới lênh
/\cvidu Tìm "vidu" cả chữ hoa lẫn chữ thường (từ trên xuống)
/jo[ha]n Tìm "john" và "joan"
/^the Tìm từ bắt đầu bằng the (từ trên xuống) ví dụ: theatre or then
/the$ Tìm từ kết thúc bằng the ví dụ: breathe



7. Replace

Commands Diễn Giải
:%s/hoc/HocHanh/g nếu tìm thấy chữ "hoc" thì thay thế bằng "HocHanh" trong tất cả các dòng.
:%s/hoc/HocHanh/gc nếu tìm thấy chữ "hoc" thì thay thế bằng "HocHanh" trong tất cả các dòng, nhưng confirm trước khi replace.
:s/hoc/HocHanh/g nếu tìm thấy chữ "hoc" thì thay thế bằng "HocHanh" ở dòng hiện tại.
:4,10s/123/Mot Hai Ba/gc tìm từ dòng 4 -> 10 nếu có nội dung "123" thì thay bằng "Mot Hai Ba", confirm trước khi thay thế.
:5,$s/hoc/hocLinux/g Replace toàn bộ chữ "hoc" thành "hocLinux" từ dòng 5 đến cuối file
:%s/^/hello/g Thêm vào đầu của mỗi dòng chữ "hello"
:%s/$/Seeyouagain/g Thêm vào cuối của mỗi dòng chữ "Seeyouagain"


8. Specials

Commands Diễn Giải
:!ip a hiển thị kết quả của dòng lệnh ip a, nhưng không thoát editor
:r!ip a đưa kết quả của lệnh ip a vào editor
:r file.txt lấy nội dung của file đưa vào editor


9. Others

Commands Diễn Giải
:set number đánh số dòng cho file đang mở
:start,end dòng bắt đầu, dòng kết thức


Xong!

Regular Expression In Linux/Ubuntu/CentOS

Nội dung:

  • Tạo Regular Expression (RegEx) đơn giản
  • Sự khác nhau giữa RegEx căn bản và RegEx extended (Egrep)


Commands

1. Grep - Global RegEx: In ra dòng nếu tìm thấy mẫu (patterns)

Cú Pháp Ví Dụ Giải Thích
grep "chuoi can tim" ten_file grep "vi du" file.txt Tìm chuỗi "vi du" trong file.txt, nếu có trả về dòng có chứa nội dung chữ "vi du"
grep "chuoi" file_pattern grep "vi du" fil*.txt Tìm chuỗi "vi du" trong các file bắt đầu bằng fil*.txt, nếu có trả về dòng có chứa nội dung chữ "vi du"
grep -i "vi du" file.txt -i: không phân biệt chữa hoa chữ thường
grep -l -r -w "vi du" * đưa ra danh sách các file nếu tìm thấy chuỗi "vi du" file đó.(w: word-regex; r: đệ quy; l: tên file nếu tìm thấy)
grep -w "no" file_name.txt - Tìm kiếm chính xác, chỉ trả về kết của các dòng có chứa chữ "no".
- Nếu chuỗi có chữ "not" hoặc "nothing" thì với cách tìm kiếm này "not", "nothing" kết quả sẽ KHÔNG trả về ouput
grep -n -w "Error" file.txt hiển thị số thứ tự của dòng đó nếu tìm thấy chuỗi
grep [0-9] file.txt trả về kết quả dòng đó nếu dòng đó có chứa sổ [0-9]

2. Egrep - Extended grep:

Với grep dùng tham số -E, tuy nhiên để cải tiến về tốc độ cũng như giảm không ban bộ nhớ chúng ta dùng egrep.

grep -E "[a-z]+" file.txt

tương đương
egrep "[a-z]+" file.txt


Xong!
/*header slide*/