Quản trị Linux
Bản phân phối Linux
Terminal
A shell
man
type
help
apropos
TAB
- Ctrl + C: ngắt
- Ctrl + Z: dừng
- Ctrl + L: xóa
- Ctrl + R: quay lại lệnh trước đó
Linux có 2 nhóm người dùng chính
người dùng không có đặc quyền
người dùng root (chỉ có một)
Hệ thống tập tin Linux
- Hệ thống tệp kiểm soát cách dữ liệu được lưu trữ và truy xuất.
- Mỗi nhóm dữ liệu được gọi là một tệp, các cấu trúc và quy tắc logic được sử dụng để quản lý tệp và tên của chúng được gọi là hệ thống tệp.
- Hệ thống tệp là một tập hợp logic các tệp trên một phân vùng hoặc đĩa.
- Trên hệ thống Linux, mọi thứ đều được coi là một tệp.
- Trên Linux, tên tệp và thư mục phân biệt chữ hoa và chữ thường.
Tiêu chuẩn phân cấp hệ thống tập tin (FHS)
/bin
: chứa các tệp nhị phân hoặc các tệp thực thi dành cho tất cả người dùng./sbin
: chứa các ứng dụng chỉ dành cho người dùng siêu cấp (superuser)./boot
: chứa các tệp cần thiết để khởi động hệ thống./home
: là nơi chứa thư mục cá nhân của người dùng. Bên trong thư mục này sẽ có một thư mục con cho từng người dùng, nếu người đó có thư mục cá nhân riêng.root
có thư mục cá nhân riêng biệt với các người dùng khác, nằm tại/root
./dev
: chứa các tệp thiết bị (device files)./etc
: chứa hầu hết, nếu không phải là tất cả, các tệp cấu hình hệ thống ở cấp độ toàn cục./lib
: chứa các tệp thư viện dùng chung (shared libraries) được sử dụng bởi nhiều ứng dụng khác nhau./media
: được sử dụng để gắn kết (mount) thiết bị lưu trữ ngoài một cách tự động./mnt
: tương tự như/media
, nhưng hiện nay ít được sử dụng hơn./tmp
: chứa các tệp tạm thời, thường được lưu bởi các ứng dụng đang chạy. Người dùng không có quyền cao cũng có thể lưu tạm thời các tệp tại đây./proc
: là một thư mục ảo, chứa thông tin về phần cứng máy tính, chẳng hạn như CPU, bộ nhớ RAM hoặc Kernel. Các tệp và thư mục trong đó được tạo khi máy tính khởi động, hoặc tạo động trong quá trình hệ thống đang chạy và thay đổi./sys
: chứa thông tin về thiết bị, trình điều khiển (drivers) và một số tính năng của kernel./srv
: chứa dữ liệu dành cho các dịch vụ máy chủ (server)./run
: là một hệ thống tệp tạm thời hoạt động trong RAM./usr
: chứa nhiều thư mục con khác như tệp thực thi (binaries), thư viện dùng chung, v.v. Trên một số bản phân phối như CentOS, nhiều lệnh được lưu trong/usr/bin
và/usr/sbin
thay vì/bin
và/sbin
./var
: thường chứa các tệp có độ dài thay đổi như tệp log – là các tệp ghi lại các sự kiện xảy ra trong hệ thống.
Các lệnh liệt kê thư mục trong Linux
- Liệt kê thư mục hiện tại:
~
: thư mục chính của người dùng (home directory)..
: thư mục hiện tại...
: thư mục cha.
- Liệt kê thư mục hiện tại:
1 2 3 4
ls . ls ~ /var / ls -1 /etc ls -h /etc
Dấu thời gian của tệp: atime, mtime, ctime
Hệ thống Linux ghi lại thời gian thực hiện các thao tác trên tệp. Các dấu thời gian rất hữu ích vì chúng lưu giữ thông tin về thời điểm tệp được truy cập, chỉnh sửa hoặc thay đổi siêu dữ liệu.
Mỗi tệp trong Linux có 3 loại dấu thời gian:
atime (Access Time) – Dấu thời gian truy cập:
Cho biết lần cuối cùng tệp được truy cập (ví dụ như mở đọc nội dung).mtime (Modify Time) – Dấu thời gian đã sửa đổi:
Cho biết lần cuối cùng nội dung tệp được chỉnh sửa.ctime (Change Time) – Dấu thời gian thay đổi:
Cho biết lần cuối cùng một số siêu dữ liệu liên quan đến tệp (như quyền truy cập, chủ sở hữu, liên kết) được thay đổi.Lưu ý:
ctime
không phải là thời gian tạo tệp.
Xem tập tin
- cat
- less
- tail
- head
- watch
Tạo tập tin
- touch
- mkdir
Đếm dòng, từ và byte trong tệp với wc
Lệnh wc
trong Linux được dùng để in số dòng, số từ và số byte của mỗi tệp. Nếu chỉ định nhiều tệp, wc
sẽ hiển thị kết quả cho từng tệp và một dòng tổng cộng ở cuối. Trong đó:
- Một “từ” được định nghĩa là chuỗi ký tự có độ dài khác 0, được phân cách bởi khoảng trắng.
- Nếu không chỉ định FILE, hoặc nếu FILE là
-
,wc
sẽ đọc từ đầu vào tiêu chuẩn (stdin).
Các tùy chọn chính:
Các tùy chọn dưới đây có thể được sử dụng để chọn loại thông tin cần in ra. Kết quả luôn được hiển thị theo thứ tự sau: dòng mới (newline), từ (word), ký tự (character), byte, độ dài dòng dài nhất.
Một số ví dụ:
wc filename
– đếm số dòng, từ và byte củafilename
.wc -l filename
– chỉ đếm số dòng.wc -w filename
– chỉ đếm số từ.wc -c filename
– chỉ đếm số byte.wc -m filename
– đếm số ký tự (có thể khác byte nếu tệp chứa ký tự UTF-8).wc -L filename
– hiển thị độ dài dòng dài nhất trong tệp.
Command Redirection
Mỗi lệnh hoặc chương trình trong Linux đều có 3 luồng dữ liệu được kết nối:
- STDIN (0) – Standard Input (nhập chuẩn)
- STDOUT (1) – Standard Output (xuất chuẩn)
- STDERR (2) – Standard Error (lỗi chuẩn)
Ký hiệu chuyển hướng
>
: ghi đè vào 1 file>>
: ghi tiếp vào 1 file2>
: ghi lỗi stderr vào file&>
: ghi cả stdout và stderr vào file
Một số lệnh liên quan:
cut
tee
ls -lSh /etc/ | head
→ hiển thị 10 file đầu tiên theo kích thước (giảm dần)ps -ef | grep sshd
→ kiểm tra tiến trình sshd có đang chạy hay khôngps aux --sort=-%mem | head -n 3
→ hiển thị 3 tiến trình tiêu thụ RAM nhiều nhất
Tìm kiếm tệp và đường dẫn lệnh trong Linux
Tìm kiếm tệp nhanh chóng
Lệnh locate
sử dụng cơ sở dữ liệu đã lập chỉ mục để tìm kiếm tệp nhanh chóng theo tên. Một số thao tác phổ biến:
- Cập nhật cơ sở dữ liệu locate:
1
sudo updatedb
- Hiển thị thống kê cơ sở dữ liệu:
1
locate -S
- Tìm kiếm tệp theo tên gần đúng:
1
locate filename
filename sẽ tự động được hiểu là filename
- Không phân biệt chữ hoa/thường:
1
locate -i filename
- Tìm kiếm chính xác tên tệp (dùng tên gốc):
1
locate -b '\filename'
- Tìm kiếm bằng biểu thức chính quy (regex):
1
locate -r 'regex'
- Chỉ hiển thị tệp nếu nó thực sự tồn tại:
1
locate -e filename
Xác định đường dẫn đến lệnh thực thi
1
which -a command
Tìm kiếm tệp bằng find
trong Linux
Cú pháp cơ bản:
1
find [ĐƯỜNG_DẪN] [TÙY_CHỌN] [BIỂU_THỨC]
Hard Links and the Inode Structure
Quản lý tài khoản người dùng
Tệp /etc/passwd
trong Linux
Tệp /etc/passwd
chứa thông tin cơ bản về mỗi tài khoản người dùng trên hệ thống.
- Mỗi dòng trong tệp đại diện cho một người dùng.
- Mỗi dòng bao gồm 7 trường, được phân tách bằng dấu hai chấm
:
.
Cấu trúc 7 trường trong một dòng:
- username – Tên đăng nhập của người dùng
- password – Thường là ký tự
x
, vì mật khẩu được lưu ở/etc/shadow
- UID – User ID (số định danh người dùng)
- GID – Group ID (nhóm chính của người dùng)
- comment – Thông tin mô tả (có thể là tên thật, ghi chú,…)
- home_directory – Đường dẫn đến thư mục cá nhân của người dùng
- shell – Shell mặc định mà người dùng sử dụng (ví dụ:
/bin/bash
)
Ví dụ:
1
john:x:1001:1001:John Doe:/home/john:/bin/bash
Tệp /etc/shadow
trong Linux
Tệp /etc/shadow
chứa thông tin về mật khẩu của các tài khoản người dùng trên hệ thống.
- Đây là tệp rất nhạy cảm, chỉ người dùng
root
mới có quyền đọc. - Được sử dụng để lưu trữ mật khẩu đã mã hóa và các thông tin liên quan đến chính sách mật khẩu (hết hạn, khóa tài khoản,…).
Cấu trúc một dòng trong /etc/shadow
:
- username – Tên đăng nhập người dùng
- encrypted_password – Mật khẩu đã mã hóa, hoặc ký hiệu đặc biệt:
x
: dùng chung với/etc/passwd
!
: tài khoản bị khóa*
: không thể đăng nhập bằng mật khẩu
- last_changed – Ngày cuối cùng thay đổi mật khẩu (tính theo số ngày kể từ 1/1/1970)
- min_age – Số ngày tối thiểu trước khi cho phép đổi mật khẩu tiếp theo
- max_age – Số ngày tối đa mật khẩu có hiệu lực
- warn – Số ngày trước khi hết hạn sẽ cảnh báo người dùng
- inactive – Số ngày sau khi mật khẩu hết hạn thì tài khoản bị vô hiệu hóa
- expire – Ngày tài khoản hết hạn (tính theo số ngày kể từ 1/1/1970)
Ví dụ:
1
john:$6$abcde...:19325:0:90:7:14:
Nhóm người dùng (Linux Group)
Trong Linux, Group (nhóm) được dùng để quản lý quyền truy cập cho nhiều người dùng cùng lúc. Thay vì thiết lập quyền truy cập cho từng người dùng riêng lẻ, bạn có thể gán quyền cho một nhóm, rồi cho nhiều người dùng thuộc nhóm đó.
Các loại nhóm trong Linux
- Primary group (nhóm chính):
- Là nhóm mặc định của người dùng.
- Mỗi tệp được tạo bởi người dùng sẽ có nhóm sở hữu là nhóm chính.
- Được chỉ định trong tệp
/etc/passwd
.
- Secondary group (nhóm phụ):
- Là các nhóm bổ sung mà người dùng có thể thuộc vào.
- Người dùng có thể là thành viên của nhiều nhóm phụ.
- Được khai báo trong tệp
/etc/group
.
Cấu trúc của tệp /etc/group
Tệp /etc/group
lưu thông tin về tất cả các nhóm trên hệ thống. Mỗi dòng có định dạng:
- group_name – Tên nhóm
- password – Thường để trống hoặc
x
- GID – Group ID (mã số định danh nhóm)
- user_list – Danh sách người dùng trong nhóm (phân cách bằng dấu phẩy)