Cũng giống như hệ điều hành Windows, khi sử dụng Linux bạn cũng nên tìm hiểu các lệnh Linux cơ bản để thực hiện các thao tác nhanh chóng ...
Cũng giống như hệ điều hành Windows, khi sử dụng Linux bạn cũng nên tìm hiểu các lệnh Linux cơ bản để thực hiện các thao tác nhanh chóng và dễ dàng hơn. Dưới đây là một số lệnh cơ bản trên Linux bạn nên biết.
Với một số lệnh bên dưới, bạn sẽ thấy các bộ lệnh với giải thích đơn giản, ví dụ minh họa cụ thể giúp cho bạn hoặc những người dùng Linux mà bạn đang hỗ trợ sử dụng hệ điều hành này nói chung và dòng lệnh trên Linux nói riêng hiệu quả hơn.
1. Một số lưu ý quan trọng về Linux Terminal
Để mở Terminal nhanh chóng từ GUI, nhấn tổ hợp phím Ctrl + Alt + T.
Mổ xẻ hầu hết các lệnh Linux:
[sudo] command [optional switch] [file or directory path]
Sử dụng sudo sẽ chạy bất kỳ một lệnh nào đó dưới quyền Admin. Hầu hết các lệnh Linux dùng để cài đặt/gỡ bỏ các file hệ thống một chương trình, sử dụng nào đó để yêu cầu sudo.
2. Làm quen với tài khoản
Các lệnh này sẽ giúp người dùng Linux mới làm quen với tài khoản Linux của mình.
Lệnh | Chức năng | Ví dụ |
---|---|---|
pwd | Hiển thị vị trí hiện tại trong hệ thống file. | pwd |
whoami | Hiển thị tên người dùng - hữu ích nhất nếu chuyển đổi người dùng bằng lệnh su và cần được nhắc nhở về tài khoản nào đang được sử dụng | whoami |
ls | Cung cấp một danh sách file. Với tham số -a, lệnh hiển thị các file có tên bắt đầu bằng dấu chấm (ví dụ: .bashrc). Với tham số -l, lệnh hiển thị quyền, kích thước file và ngày/giờ cập nhật mới nhất. | ls ls -a ls -l |
env | Hiển thị cài đặt môi trường người dùng (ví dụ: đường dẫn tìm kiếm, kích thước phần lịch sử được lưu lại, thư mục chính, v.v...) | env |
echo | Lặp lại phần văn bản mà người dùng cung cấp hoặc hiển thị giá trị của một số biến. | echo hello echo $PATH |
history | Liệt kê các lệnh đã đưa ra trước đó. | history history | tail -5 |
passwd | Thay đổi mật khẩu. Lưu ý rằng các yêu cầu phức tạp có thể được thi hành. | passwd history | tail -5 |
3. Tạo một thư mục mới
mkdir là lệnh thao tác với thư mục cơ bản trên Linux, giúp bạn tạo một thư mục mới nhanh chóng. Cú pháp câu lệnh:
mkdir folder
Lưu ý:
Folder là tên thư mục bạn muốn tạo. Chẳng hạn nếu bạn muốn tạo thư mục có tên là backup thì cú pháp là:
mkdir /home/marin/backup
Trong trường hợp nếu muốn tạo một thư mục chứa nhiều thư mục con, bạn có thể sử dụng tùy chọn "-p". Giả sử, bạn có thư mục foo và có quyền truy cập vào nó:
mkdir -p /foo/bar/baz
Lệnh trên sẽ tạo thư mục bar, thư mục baz nằm trong bar; bar và baz nằm trong /foo đã có.
4. Tìm kiếm thư mục hiện tại
Nếu muốn tìm kiếm thư mục hiện tại của bạn, bạn có thể sử dụng lệnh pwd.
Ví dụ như:
marin@[LinuxVeda]:[~/work]$ pwd /home/marin/work
5. Tạo và chỉnh sửa các file
Các hệ thống Linux cung cấp các lệnh để tạo các file. Người dùng có thể chọn trình soạn thảo văn bản mong muốn. Một số lệnh yêu cầu người dùng phải thành thạo trước khi sử dụng, còn những lệnh khác thì khá đơn giản.
Lệnh | Chức năng | Ví dụ |
---|---|---|
nano | Một trình chỉnh sửa văn bản dễ sử dụng, yêu cầu người dùng di chuyển trong file bằng các phím mũi tên và cung cấp các chuỗi điều khiển để định vị văn bản, lưu các thay đổi, v.v. | nano myfile |
vi | Một trình chỉnh sửa tinh vi hơn, cho phép người dùng nhập các lệnh để tìm và thay đổi văn bản, thực hiện các thay đổi tổng thể, v.v... | vi myfile |
ex | Một trình soạn thảo văn bản được thiết kế cho các lập trình viên và có cả chế độ trực quan và dòng lệnh. | ex myfile |
touch | Tạo một file nếu nó chưa tồn tại hoặc cập nhật timestamp nếu nó đã được tạo. | touch newfile touch updatedfile |
> | Tạo file bằng cách hướng đầu ra cho chúng. > tạo một file trong khi >> gắn với một file hiện có. | cal > calendar ps > myprocs date >> date.log |
6. Đọc một số file
Thông thường bạn phải xem xét nội dung của nhiều file khác nhau. Việc rà soát các file khác nhau thường xuyên thường khá phức tạp và tốn nhiều thời gian. Do đó cách đơn giản nhất để đọc nội dung của chúng là sử dụng câu lệnh cat. Cú pháp câu lệnh khá đơn giản:
cat FILE
Chỉ cần thay đổi FILE bằng tên file bạn muốn đọc. Kết quả bạn sẽ nhìn thấy nội dung của file xuất hiện ở cuối Terminal.
Ví dụ như:
cat script.sh
Ngoài ra bạn có thể sử dụng lệnh cat cho nhiều file cùng một lúc:
cat FILE-1 FILE-2
Đầu ra của lệnh sẽ hiện thị nội dung các file theo thứ tự nội dung của FILE - 1 rồi đến nội dung FILE -2.
Ngoài ra, Linux cung cấp một số lệnh để xem xét nội dung và bản chất của các file. Sau đây là một số lệnh hữu ích nhất.
Lệnh | Chức năng | Ví dụ |
---|---|---|
cat | Hiển thị toàn bộ nội dung của một file văn bản. | cat .bashrc |
more | Hiển thị nội dung của file văn bản. Nhấn phím cách để di chuyển đến từng đoạn bổ sung. | more .bash_history |
less | Hiển thị nội dung của file văn bản, nhưng cho phép quay trở lại bằng phím mũi tên lên trên. | less .bash_history |
file | Xác định các file theo loại (ví dụ: văn bản ASCII, file thực thi, hình ảnh, thư mục) | file myfile file ~/.bashrc file /bin/echo |
7. Sao chép hoặc di chuyển file
Việc sao chép hoặc di chuyển file trong Linux terminal khá đơn giản và dễ dàng.
- Để sao chép một file, bạn có thể sử dụng lệnh: cp.
- Để di chuyển 1 file bạn sử dụng câu lệnh: mvoflder.
Cả 2 lệnh sử dụng khá đơn giản. Với lệnh cp. Để sao chép một file, bạn nhập tên file và nhập tên file copy mới. Ví dụ:
cp file1 file2
Trên câu lệnh trên sao chép file1 và tạo ra file2 có chứa nội dụng file1. Bạn có thể sử dụng cp để sao chép thư mục. Điều quan trọng cần lưu ý khi muốn sao chép một thư mục bạn nên sử dụng tùy chọn -r.
Nói cách khác, cp -r sẽ sao chép nội dung của một thư mục nhất định (và các thư mục con) sang thư mục bạn lựa chọn. Ngoài ra bạn có thể sử dụng cp với đường dẫn đầy đủ:
cp -r /home/marin/work/ /home/marin/backup
Câu lệnh trên sẽ sao chép nội dung của thư mục "work" sang thư mục mới có tên "backup".
Nếu muốn sao chép tất cả các file và thư mục của một thư mục sang một thư mục khác, bạn có thể sử dụng ký tự "*". Ký tự được sử dụng để tìm các cổng phù hợp (trường hợp này là các file và thư mục). Ví dụ:
cp /home/marin/work/* /home/marin/backup/
Tiếp theo là lệnh mv. Cú pháp câu lệnh:
mv file1 file2
Câu lệnh trên đổi tiên file1 thành file2. Tương tự với thư mục cũng thế. Tuy nhiên nếu bạn chỉ định 1 file và 1 thư mục, file sẽ được di chuyển vào trong thư mục. Chẳng hạn:
mv /home/marin/file1 /home/marin/work/
Trong câu lệnh trên sẽ di chuyển file1 từ “/home/marin/” sang “/home/marin/work/”. Nếu bạn muốn di chuyển tất cả các file trong một thư mục sang thư mục khác, bạn có thể sử dụng ký tự "*":
mv /home/marin/work/* /home/marin/backup/
8. Xóa các file và thư mục
Nếu muốn xóa một thư mục hoặc một file bạn có thể sử dụng lệnh rm. Điều quan trọng bạn cần lưu ý là khi sử dụng lệnh này để xóa một file hoặc thư mục, các file này không thể restore được. Để xóa 1 file bạn thực hiện:
rm /home/marin/useless-file.txt
Bạn có thể sử dụng rm với nhiều tùy chọn khác nhau. Một số tùy chọn quan trọng như:
- -f: buộc xóa các file có thông báo nhắc nhở
- -i: nhắc nhở trước khi xóa
- -r: xóa bỏ các thư mục đệ quy
- -d: xóa các thư mục rỗng
- -v: giải thích đang thực hiện nhiệm vụ gì
9. Tìm file
Có hai lệnh có thể giúp người dùng tìm file trên Linux, nhưng chúng hoạt động rất khác nhau. Một lệnh tìm kiếm hệ thống file, còn lệnh kia xem xét cơ sở dữ liệu được xây dựng trước đó.
Lệnh |
Chức năng
| Ví dụ |
---|---|---|
find | Định vị các file dựa trên các tiêu chí được cung cấp (tên, loại, chủ sở hữu, quyền, kích thước file, v.v...). Trừ khi được cung cấp một vị trí để bắt đầu tìm kiếm, còn nếu không lệnh này chỉ tìm trong thư mục hiện hành. | find . -name myfile find /tmp -type d |
locate | Định vị các file bằng cách sử dụng nội dung của /var/lib/mlocate/mlocate.db được cập nhật bằng lệnh updateb chạy qua cron. Không yêu cầu vị trí bắt đầu. | locate somefile locate "*.html" -n 20 |
Lưu ý: Chi tiết về lệnh find có trong phần bên dưới.
10. Liệt kê nội dung thư mục
Để liệt kê danh sách các thư mục, bạn có thể sử dụng lệnh ls:
Lệnh "ls" có thể lấy các thông số khác nhau giúp bạn thay đổi đầu ra của câu lệnh. Ví dụ, với thông số "-a" sẽ hiển thị tất cả các file và thư mục, trong đó có cả thư mục ẩn có chứa "-a".
Nếu muốn đầu ra của câu lệnh hiển thị danh sách thông tin chi tiết từng file và thư mục, bạn có thể sử dụng tùy chọn “-l” (L):
ls -l You can try different
Ngoài ra bạn có thể kết hợp các thông số để hiển thị thông tin chi tiết tất cả các file:
ls –al
11. Tìm kiếm lệnh Linux trước đó
Nhấn phím Up sẽ hiển thị câu lệnh Linux cuối cùng bạn sử dụng thành công. Không có câu lệnh lỗi nào hiển thị tại đây cả.
Ngoài ra bạn có thể sử dụng lệnh history để xem tất cả các lệnh Linux đã từng sử dụng trên Terminal.
12. Mật khẩu vô hình
Khi được yêu cầu nhập mật khẩu, giả sử trong trường hợp sử dụng sudo, khi bạn gõ mật khẩu trên màn hình sẽ không hiển thị gì cả, không có ngôi sao hay dấu chấm... Sau khi nhập xong mật khẩu, bạn nhấn Enter là xong.
13. Sao chép và dán lệnh Linux
Để sao chép hoặc dán lệnh Terminal, bạn không thể sử dụng tổ hợp phím quen thuộc Ctrl + C và Ctrl + V.
Thay vào đó bạn có thể sử dụng Ctrl + Shift + C và Ctrl + Shift + V hoặc kích chuột phải rồi chọn Copy hoặc Paste từ Menu ngữ cảnh.
14. Hiển thị tiến trình trong hệ thống Linux
Một trong những công việc cần thiết khi quản trị hệ thống Linux đó là kiểm soát các tiến trình hiện đang chạy. Khi đã biết được những tiến trình nào đang chạy bạn có thể tắt những tiến trình gây giảm tốc độ của hệ thống. Ngoài ra, thông tin về những tiến trình hệ thống cho chúng ta biết nên tắt nhưng tiến trình làm cho hệ thống vận hành không ổn định. Do đó việc biết được những tiến trình nào đang chạy trên hệ thống rất quan trọng. Linux hỗ trợ nhiều phương pháp kiểm tra tiến trình, một trong số đó là sử dụng lệnh ps. Khi sử dụng lệnh này mọi thông tin về những tiến trình đang chạy sẽ được hiển thị. Bạn chỉ cần nhập cú pháp lệnh sau vào cửa sổ terminal:
# ps aux | less
Hình 1: Thông tin tiến trình đang chạy trong hệ thống.
Ngoài ra lệnh này có thể sử dụng kết hợp với một số tham số khác như:
# ps –A: Kiểm tra mọi tiến trình trong hệ thống.
# ps -U root -u root –N: Kiểm tra mọi tiến trình ngoại trừ những tiến trình hệ thống.
# ps -u username: Kiểm tra những tiến trình được thực hiện bởi một người dùng nhất định.
# ps -U root -u root –N: Kiểm tra mọi tiến trình ngoại trừ những tiến trình hệ thống.
# ps -u username: Kiểm tra những tiến trình được thực hiện bởi một người dùng nhất định.
Hoặc bạn có thể sử dụng lệnh # top để xem những tiến trình đang chạy trên hệ thống trong thời gian thực.
15. Kiểm tra thông tin Socket và thông tin mạng TCP/UDP
Sau khi cấu hình những dịch vụ mạng của hệ thống Linux, bạn cần phải giữ lại tab của các cổng đang thực sự nhận tín hiệu trên giao diện mạng của hệ thống. Điều này rất quan trọng vì hệ thống có thể bị xâm nhập qua các cổng mở. Có một số công cụ quản lý Linux thông báo cho bạn biết thông tin của những cổng mởvà truy cập vào những cổng đang mở trên mạng. Một trong những phương pháp đơn giản và tin cậy nhất đó là sử dụng lệnh ss để kiểm tra thông tin Socket, ngoài ra lệnh này còn có thể hiển thị nhiều thông tin TCP và thông tin trạng thái hơn các công cụ khác. Lệnh ss này cung cấp thông tin về:
- Mọi Socket TCP.
- Mọi Socket UDP.
- Mọi kết nối ssh/ftp/http/https.
- Mọi tiến trình cục bộ được kết nối tới máy chủ X.
- Mọi Socket TCP trong trạng thái FIN-WAIT-1.
Dưới đây là một số lệnh ss:
- # ss –s: Hiển thị tổng số Socket.
Hình 2: Thông tin kết xuất khi chạy lệnh # ss –s.
- # ss -1: Hiển thị mọi cổng mở.
Hình 3: Thông tin kết xuất khi chạy lệnh # ss -1.
- # ss –pl: Kiểm tra tên tiến trình sử dụng Socket mở sử dụng lệnh sau:
- # ss -lp | grep: Kiểm tra người dùng đang làm việc với Socket mở.
- # ss -t –a: Hiển thị mọi Socket TCP.
- # ss -u –a: Hiển thị mọi Socket UDP.
16. Theo dõi Average CPU Load và Disk Activity
Nếu là một quản trị viên hệ thống Linux, bạn cần phải biết phương pháp duy trì một sự cân bằng hợp lý trong quá trình tải đầu vào và đầu ra giữa các ổ đĩa vật lý. Bạn có thể thay đổi cấu hình hệ thống để thực hiện tác vụ này. Tuy nhiên có một phương pháp đơn giản hơn rất nhiều đó là sử dụng lệnh isostat để quản lý hệ thống thiết bị tải đầu vào và đầu ra trong Linux bằng cách theo dõi thời gian hoạt động và tốc độ truyền trung bình của những thiết bị này. Lệnh này sẽ thông báo thông tin của CPU (Central Processing Unit), thông tin đầu vào và đầu ra cho những thiết bị, phân vùng và hệ thống file mạng (NFS).
Khi chạy lệnh isostat thông tin kết xuất có dạng:
Hình 4: Thông tin hiển thị khi chạy lệnh isostat.
Để lấy thông tin thư mục NFS bạn hãy sử dụng lệnh sau:
# iostat –n
17. Kiểm tra Memory Map của các tiến trình trong Linux
Khi làm việc trong hệ thống Linux có thể bạn cần kiểm tra dung lượng bộ nhớ sử dụng trong hệ thống. Linux tích hợp nhiều lệnh cho phép kiểm tra dung lượng bộ nhớ chiếm dụng. Trong đó có một lệnh đơn giản giúp hiển thị thông tin tổng dung lượng đã chiếm dụng và chưa chiếm dụng của bộ nhớ vật lý và tổng dung lượng bộ nhớ đó là lệnh free.
Sau khi chạy lệnh này bạn sẽ thấy tổng dung lượng đã chiếm dụng và chưa chiếm dụng của bộ nhớ vật lý và tổng dung lượng bộ nhớ trong hệ thống. Ngoài ra nó còn hiển thị thông tin bộ nhớ đệm mà các nhân sử dụng.
Hình 5: Thông tin hiển thị sau khi chạy lệnh free
18. Kiểm tra thời gian vận hành của hệ thống
Bạn có muốn biết máy chủ đã vận hành bao lâu? Nếu muốn bạn chỉ cần sử dụng lênh uptime để kiểm tra thời gian mà hệ thống đã vận hành. Lệnh đơn giản này không chỉ cho bạn biết thời gian hệ thống vận hành mà còn cho biết lượng người dùng đã đăng nhập vào hệ thống trong một khoảng thời gian trước đó.
Hình 6: Kết quả lệnh uptime.
19. Kiểm tra người dùng đăng nhập
Ngoài những công cụ quản lý Linux, bạn có thể sử dụng một lệnh để kiểm tra những người dùng nào đã thực hiên đăng nhập vào hệ thống và những gì họ đã thực hiện. Lệnh này sẽ hiển thị thời gian hiện tại, thời gian hệ thống đã vận hành, lượng người dùng đã đăng nhập.
Ngoài ra lệnh này cũng hiển thị lượng tải trung bình trong mỗi 1, 5 và 15 phút. Lệnh này rất hữu dụng với những Admin hệ thống muốn sử dụng thông tin tải trung bình để hoạch định dung lượng.
Để kiểm tra ai đã đăng nhập vào hệ thống và những tác vụ họ đã thực hiện bạn chỉ cần chạy lệnh sau:
Ngoài ra lệnh này cũng hiển thị lượng tải trung bình trong mỗi 1, 5 và 15 phút. Lệnh này rất hữu dụng với những Admin hệ thống muốn sử dụng thông tin tải trung bình để hoạch định dung lượng.
Để kiểm tra ai đã đăng nhập vào hệ thống và những tác vụ họ đã thực hiện bạn chỉ cần chạy lệnh sau:
# w username
Hình 7: Thông tin hiển thị sau khi chạy lệnh # w username.
20. Kiểm soát hành vi hệ thống, phần cứng và thông tin hệ thống trong Linux
Với nhiều người dùng Linux, kiểm soát hệ thống là một tác vụ phức tạp. Hầu hết các bản phân phối Linux tích hợp khá nhiều công cụ kiểm soát. Những công cụ kiểm soát này cung cấp các phương pháp có thể được áp dụng để kiểm tra thông tin hành vi hệ thống. Việc kiểm soát hệ thống cho phép người dùng theo dõi nguyên nhân khả năng thực thi của hệ thống bị cản trở. Một trong những tác vụ cần thiết của quá trình kiểm soát hệ thống là tra cứu thông tin về hành vi hệ thống, phần cứng và thông tin bộ nhớ. Có một lệnh đơn giản giúp hiển thị thông tin về tiến trình, bộ nhớ, trang ghi, nhóm IO, lỗi và hành vi CPU đó là lệnh vmstat.
Bạn chỉ cần nhập lệnh sau vào cửa sổ terminal:
# vmstat 3
Hình 8: Thông tin kết xuất của lệnh # vmstat 3.
Ngoài ra bạn có thể sử dụng lệnh # vmstat –m để kiểm tra thông tin bộ nhớ, và lệnh # vmstat –a để hiển thị thông tin trang nhớ đang hoạt động và không hoạt động.
Hình 9: Thông tin hiển thị sau khi chạy lệnh # vmstat –a.
21. Kiểm tra thông tin phần cứng của hệ thống Linux
Với một số người dùng Linux thì việc kiểm tra thông tin phần cứng thật không dễ dàng. Linux là một hệ thống phức tạp nhưng nó lại tích hợp một số công cụ giúp lấy thông tin chi tiết của phần cứng, chẳng hạn chúng ta có thể sử dụng một lệnh khá đơn giản để kiểm tra thông tin đĩa cứng trên hệ thống đó là lệnh hdparm. Lệnh này cung cấp một giao diện dòng lệnh để thực hiện quản lý nhiều loại đĩa cứng được hệ thống phụ điều khiển thiết bị ATA/IDE của Linux hỗ trợ. Nó cung cấp một lệnh giúp hiển thị thông tin xác minh như dung lượng, thông tin chi tiết, … trực tiếp từ ổ đĩa. Thông tin này được lưu dưới một định dạng mở rộng mới. Bạn chỉ cần đăng nhập dưới quyền root user và sử dụng lệnh sau:
# hdparm -I /dev/sda
Hoặc dùng lệnh:
$ sudo hdparm -I /dev/sda
Khi đó thông tin về đĩa cứng của hệ thống sẽ lập tức hiển thị.
Hình 10: Thông tin chi tiết của đĩa cứng.
Hình 10: Thông tin chi tiết của đĩa cứng.
22. Các lệnh xử lý tập tin trên Linux
Lệnh để di chuyển xung quanh hệ thống file Linux là ls, nhưng có nhiều biến thể.
Lệnh Linux | Nhiệm vụ lệnh sẽ làm |
ls | Liệt kê nội dung thư mục hiện tại |
ls -al | Liệt kê nội dung thư mục bao gồm cả file ẩn |
cd dir | Di chuyển từ thư mục hiện tại sang thư mục dir |
cd | Chuyển từ thư mục hiện tại về thư mục riêng (thường là [Tên User] ở Home) |
cd .. | Di chuyển lên (về /) một thư mục từ vị trí hiện tại. |
cd <location> |
Đưa người dùng đến vị trí được chỉ định. Nếu vị trí bắt đầu bằng /, nó được coi là tương đối với thư mục gốc và vị trí hiện tại. Ký tự ~ đại diện cho thư mục Home. Ví dụ:
cd /tmp
cd Documents cd ~/Documents |
pwd | Hiện thư mục hiện tại |
mkdir quantrimang | Tạo thư mục mới có tên là quantrimang |
rm filemuonxoa | Xóa file có tên là filemuonxoa |
rm -r thumuccanxoa | Xóa thư mục có tên là quantrimang |
rm -f filecanxoa | Bắt xóa file có tên là filecanxoa |
rm -rf thumuccanxoa | Bắt xóa thư mục có tên là thumuccanxoa |
cp file1 file2 | Sao chép file1 sang file2 |
cp -r dir1 dir2 | Sao chép thư mục dir1 sang dir2 và tạo dir2 nếu chưa có dir2 |
mv file1 file2 | Di chuyển file1 đến chỗ file2 hoặc đổi tên file1 thành file2. Nếu file2 có sẵn thì di chuyển file1 vào file2 |
ln -s tenfile link | Tạo liên kết biểu tượng có tên là link đến file có tên là tenfile |
touch filecantao | Tạo hoặc cập nhật tập tin filecantao |
cat > tenfile | Nhập từ bàn phím (đầu vào chuẩn - standard input) vào tập tin tenfile mới |
more tenfile | Hiện nội dung file có tên là tenfile |
head tenfile | Hiện 10 dòng đầu của tập tin tenfile |
tail tenfile | Hiện 10 dòng cuối của tập tin tenfile |
tail -f tenfile | Hiện nội dung của tập tin tenfile và cập nhật liên tục trong thời gian thực |
tail -f -n N tenfile | Hiện nội dung của tập tin tenfile và cập nhật liên tục, giới hạn N dòng |
23. Các lệnh mạng trên Linux
Quantrimang.com đã có một bài hướng dẫn khá chi tiết về các lệnh làm việc với mạng trên Linux, bạn quan tâm có thể tham khảo nha.
24. Bắt đầu, dừng và liệt kê các service
Các lệnh này cho phép người dùng hiển thị các service cũng như bắt đầu và dừng chúng.
Lệnh | Chức năng | Ví dụ |
---|---|---|
systemctl | Lệnh systemctl có thể bắt đầu, dừng, khởi động lại và load lại các service, cần có quyền admin. | sudo systemctl stop apache2.service sudo systemctl restart apache2.service sudo systemctl reload apache2.service |
service | Liệt kê các service và cho biết liệu chúng có đang chạy không. | service --status-all |
25. Xác định phiên bản hệ điều hành
Bảng bên dưới liệt kê các lệnh sẽ hiển thị chi tiết về hệ điều hành Linux đang chạy trên hệ thống.
Lệnh | Chức năng | Ví dụ |
---|---|---|
uname | Hiển thị thông tin về phiên bản hệ điều hành trong một dòng văn bản. | uname -a uname -r |
lsb_release | Trên các hệ thống dựa trên Debian, lệnh này hiển thị thông tin về hệ điều hành bao gồm codename và ID nhà phân phối. | lsb_release -a |
hostnamectl | Hiển thị thông tin trên hệ thống bao gồm tên máy chủ, loại chassis (thùng máy), hệ điều hành, kernel và cấu trúc. | hostnamectl |
26. Đo hiệu suất hệ thống
Sau đây là một số công cụ hữu ích để kiểm tra hiệu năng hệ thống.
Lệnh | Chức năng | Ví dụ |
---|---|---|
top | Hiển thị các tiến trình đang chạy cùng với việc sử dụng tài nguyên và dữ liệu hiệu suất hệ thống. Có thể hiển thị các tiến trình cho một người dùng đã chọn hoặc tất cả người dùng. Các tiến trình có thể được sắp xếp theo các tiêu chí khác nhau (theo mặc định là mức độ sử dụng CPU). | top top jdoe |
atop | Tương tự như lệnh trên nhưng hướng nhiều đến hiệu năng hệ thống hơn so với các tiến trình riêng lẻ. | atop |
free | Hiển thị bộ nhớ và trao đổi tổng bộ nhớ, phần đã sử dụng và còn trống. | free |
df | Hiển thị việc sử dụng không gian ổ đĩa hệ thống của file. | df df -h |
27. Quản lý người dùng và nhóm
Các lệnh để tạo và xóa tài khoản người dùng và các nhóm khá đơn giản.
Lệnh | Chức năng | Ví dụ |
---|---|---|
useradd | Thêm tài khoản người dùng mới vào hệ thống. Tên người dùng là bắt buộc. Các trường khác (mô tả người dùng, shell, mật khẩu ban đầu, v.v...) có thể được chỉ định. Thư mục chính sẽ mặc định là /home/username. | useradd -c "John Doe" jdoe useradd -c "Jane Doe" -g admin -s /bin/bash jbdoe |
userdel | Xóa tài khoản người dùng khỏi hệ thống. Tùy chọn -f mạnh mẽ hơn, xóa các file chính và file người dùng khác ngay cả khi người dùng vẫn đăng nhập. | userdel jbdoe userdel -f jbdoe |
groupadd | Thêm một nhóm người dùng mới vào hệ thống, cập nhật /etc/group. | groupadd developers |
groupdel | Xóa nhóm người dùng khỏi hệ thống. | groupdel developers |
28. Thiết lập và chạy các tiến trình theo lịch
Các tác vụ có thể được lên lịch để chạy định kỳ bằng cách sử dụng lệnh được liệt kê dưới đây.
Lệnh | Chức năng | Ví dụ |
---|---|---|
crontab | Thiết lập và quản lý các tiến trình theo lịch. Với tùy chọn -l, các công việc định kỳ được liệt kê. Với tùy chọn -e, các công việc định kỳ có thể được thiết lập để chạy ở các khoảng thời gian đã chọn. | crontab -l crontab -l -u username crontab -e |
anacron | Cho phép người dùng chỉ chạy các công việc theo lịch trình hàng ngày. Nếu hệ thống bị tắt khi một công việc được đặt lịch chạy, nó sẽ chạy khi hệ thống khởi động. | sudo vi /etc/anacrontab |
29. Cập nhật, cài đặt và liệt kê các ứng dụng
Các lệnh để cài đặt và cập nhật ứng dụng tùy thuộc vào phiên bản Linux đang sử dụng, cụ thể là dựa trên nền tảng Debian hay RPM.
Lệnh | Chức năng | Ví dụ |
---|---|---|
apt update | Trên các hệ thống dựa trên Debian, lệnh này cập nhật danh sách các gói có sẵn và các phiên bản của chúng, nhưng không cài đặt hoặc nâng cấp bất kỳ gói nào | sudo apt update |
apt upgrade | Trên các hệ thống dựa trên Debian, lệnh này cài đặt các phiên bản mới hơn của các gói đã có. | sudo apt upgrade |
apt list | Liệt kê tất cả các gói được cài đặt trên hệ thống dựa trên Debian. Với tùy chọn --upgradable, nó chỉ hiển thị các gói có bản nâng cấp. | apt list apt list --installed apt list --upgradable |
apt install | Trên các hệ thống dựa trên Debian, lệnh này cài đặt gói được yêu cầu. | sudo apt install apache2 |
yum update | Trên các hệ thống dựa trên RPM, lệnh này cập nhật tất cả hoặc các gói được chỉ định. | sudo yum update yum update mysql |
yum list | Trên các hệ thống dựa trên RPM, lệnh này liệt kê các gói. | sudo yum update mysql |
yum install | Trên các hệ thống dựa trên RPM, lệnh này cài đặt gói được yêu cầu. | sudo yum -y install firefox |
yum list | Trên các hệ thống dựa trên RPM, lệnh này liệt kê các gói đã biết và đã cài đặt. | sudo yum list sudo yum list --installed |
30. Tắt và khởi động lại
Các lệnh tắt và khởi động lại hệ thống Linux yêu cầu quyền admin. Các tùy chọn như +15 là số phút mà lệnh sẽ đợi trước khi yêu cầu tắt máy được thực hiện.
Lệnh | Chức năng | Ví dụ |
---|---|---|
shutdown | Tắt hệ thống tại thời điểm yêu cầu. Tùy chọn -H tạm dừng hệ thống, còn tùy chọn -P sẽ tắt nguồn. | sudo shutdown -H now shutdown -H +15 shutdown -P +5 |
halt | Tắt hệ thống tại thời điểm yêu cầu. | sudo halt sudo halt -p sudo halt --reboot |
poweroff | Ngắt nguồn khỏi hệ thống tại thời điểm yêu cầu. | sudo shutdown -H now sudo shutdown -H +15 sudo shutdown -P +5 |
31. Lệnh bảo mật Linux
Lệnh sudo
Chạy các lệnh đặc quyền với sudo, thay vì chuyển người dùng thành root, là một hành động cần thiết vì nó giúp đảm bảo rằng bạn chỉ sử dụng đặc quyền root khi cần và hạn chế tác động của các lỗi xảy ra. Quyền truy cập của bạn vào lệnh sudo phụ thuộc vào các thiết lập trong file /etc/sudoers và /etc/group.
$ sudo adduser shark Adding user `shark' ... Adding new group `shark' (1007) ... Adding new user `shark' (1007) with group `shark' ... Creating home directory `/home/shark' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for shark Enter the new value, or press ENTER for the default Full Name []: shark Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
Ví dụ, nếu bạn chạy sudo và muốn tìm hiểu vai trò của mình là gì, bạn sẽ nhận được xác nhận rằng bạn đang chạy lệnh dưới dạng root.
$ sudo whoami root
Nếu bạn quản lý thiết lập sudo cho nhiều người dùng, bạn cũng sẽ thấy thoải mái với lệnh visudo.
Lệnh visudo
Lệnh visudo cho phép bạn thay đổi file /etc/sudoers bằng cách mở file trong trình soạn thảo văn bản và kiểm tra các thay đổi của bạn đối với cú pháp. Chạy lệnh “sudo visudo” và chắc chắn rằng bạn hiểu rõ về cú pháp. Các đặc quyền có thể được gán bởi một người dùng hoặc theo nhóm. Trên hầu hết các hệ thống Linux, file /etc/sudoers sẽ được cấu hình với các nhóm giống như được hiển thị bên dưới, cho phép các đặc quyền được gán cho các nhóm được thiết lập trong file /etc/group. Trong những trường hợp đó, bạn hoàn toàn không cần phải sử dụng lệnh visudo, mà chỉ cần làm quen với các nhóm có đặc quyền root theo cách này, và thực hiện các cập nhật của bạn cho file /etc/group.
%admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL %wheel ALL=(ALL:ALL) ALL
Lưu ý: Tên nhóm có ký hiệu % đứng trước.
Bạn có thể hiển thị nhóm cung cấp truy cập sudo trong file /etc/group của bạn như sau:
$ egrep "admin|sudo|wheel" /etc/group sudo:x:27:shs,jdoe
Cách dễ nhất để cung cấp cho ai đó đặc quyền sudo là thêm chúng vào nhóm được uỷ quyền trong /etc/group. Tuy nhiên, điều đó có nghĩa là họ có thể chạy bất kỳ lệnh nào dưới dạng root. Nếu bạn muốn một số người dùng có quyền root cho một nhóm lệnh nhất định (ví dụ, thêm và xóa tài khoản), bạn có thể xác định các lệnh bạn muốn họ có thể chạy qua lệnh như sau:
Cmnd_Alias ACCT_CMDS = /usr/sbin/adduser, /usr/sbin/deluser
Sau đó cung cấp cho người dùng hoặc nhóm người dùng khả năng chạy các lệnh này bằng sudo với một lệnh như sau:
nemo ALL=(ALL) ACCT_CMDS %techs ALL=(ALL:ALL) ACCT_CMDS
Dòng đầu tiên cho phép người dùng "Nemo" chạy các lệnh twp (adduser và deluser) với sudo, trong khi lệnh thứ hai gán cùng các đặc quyền cho bất kỳ ai thuộc nhóm "tech" trong file /etc/group.
Lệnh who và w
Lệnh who và w cho bạn biết ai đã đăng nhập vào hệ thống, trong đó w hiển thị thêm thông tin, như nơi họ đăng nhập, khi nào họ đăng nhập và thời gian họ đăng nhập là bao lâu.
$ w 18:03:35 up 9 days, 22:48, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT joe tty2 /dev/tty2 27Apr18 9days 7:34 0.09s /usr/lib/x86_64-linux shs pts/1 192.168.0.15 09:50 7.00s 0.28s 0.00s w
Sử dụng lệnh "sudo update-alternatives – config editor", nếu bạn không thích dùng trình soạn thảo mặc định được gọi khi chạy lệnh visudo. Nó sẽ cung cấp một số trình chỉnh sửa tùy chọn và thay đổi cài đặt của bạn.
Lệnh last
Lệnh last hiển thị cho bạn thông tin đăng nhập gần đây của người dùng và thường hữu ích khi bạn đang cố gắng theo dõi các thay đổi hoặc hoạt động khác.
$ last nemo nemo pts/1 192.168.0.15 Wed May 2 07:01 - 08:29 (01:27) wtmp begins Tue May 1 10:21:35 2018
“Nemo” đã không đăng nhập trong một thời gian. Anh ấy có thể đi nghỉ mát (hoặc có thể đi câu cá?) hay vừa mới rời công ty. Loại thông tin này có thể hữu ích trong việc quyết định xem, bạn có cần theo dõi điều này hay không.
Lệnh find
Lệnh find được sử dụng cho nhiều loại tìm kiếm. Khi nói đến bảo mật, bạn có thể thấy mình đang tìm kiếm các file không có chủ sở hữu (không có tài khoản tương ứng) hoặc các file mà bất cứ ai cũng có thể ghi và thực thi được. Lệnh find rất dễ thực hiện, nhưng yêu cầu một số tính năng quen thuộc và nhiều tùy chọn để xác định những gì bạn đang tìm kiếm. Lệnh đầu tiên trong hai lệnh này sẽ tìm các file không có chủ sở hữu xác định. Lệnh thứ hai sẽ tìm thấy các file mà bất kỳ ai cũng có thể chạy và sửa đổi.
$ sudo find /home -nouser $ sudo find / -perm -o=wx
Hãy nhớ rằng -o trong lệnh thứ hai chỉ nhóm "other" - không phải là chủ sở hữu và không phải là nhóm được liên kết với các file.
Lệnh file
Lệnh file xem xét một file và xác định loại file dựa trên nội dung của file đó, chứ không phải tên file. File “.jpg” trong ví dụ bên dưới rõ ràng không phải là file .jpeg thực, mà là file thực thi.
jdoe@stinkbug:~$ ls -l total 24 -rw-r--r-- 1 root root 0 Apr 13 09:59 empty -rwxr-xr-x 1 jdoe jdoe 18840 May 10 17:39 myphoto.jpg -rwx------ 1 jdoe jdoe 24 May 2 07:06 trythis jdoe@stinkbug:~$ file myphoto.jpg myphoto.jpg: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5d19f7a492405ea9b022a9aa8151f6fb4143633d, stripped
Lệnh which
Lệnh which xác định file thực thi sẽ chạy khi bạn gõ tên của nó. Điều này không phải lúc nào cũng giống như bạn nghĩ. Nếu một Trojan đã được chèn vào hệ thống file ở một vị trí hiển thị trong đường dẫn tìm kiếm của bạn, nó sẽ được chạy thay thế. Đây là lý do chính đáng để đảm bảo rằng đường dẫn tìm kiếm của bạn bao gồm các thư mục như /usr/bin, trước khi nó thêm các vị trí kém chuẩn hơn và đặc biệt là trước "." (thư mục hiện hành).
$ which date /usr/local/bin/date <=== probably not what we wanted
Bạn có thể kiểm tra đường dẫn tìm kiếm của người dùng bằng cách chuyển sang vai trò người dùng và làm như sau:
shs@stinkbug:~$ sudo su - nemo nemo@stinkbug:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
Ngay cả khi đường dẫn tìm kiếm của người dùng được thiết lập trong file hệ thống như /etc/profile hoặc /etc/bash.bashrc, chúng có thể đã bị thay đổi bởi các cài đặt cục bộ.
$ which date /usr/local/bin/date <=== probably not what we wanted
Lệnh ss
Lệnh ss là một công cụ để điều tra các socket và cho phép bạn làm những việc như hiển thị các cổng nghe và các kết nối hoạt động. Nếu không thêm một số điều kiện, ss sẽ hiển thị nhiều thông tin hơn những gì bạn có thể muốn xem xét. Sau tất cả, nhiều phần của hệ điều hành giao tiếp thông qua các socket. Nếu bạn muốn tạo danh sách các kết nối đã được thiết lập hoặc các cổng nghe (nghĩa là các dịch vụ có sẵn cho các hệ thống bên ngoài), các lệnh như thế này sẽ rất hữu ích.
Cho các kết nối được thiết lập:
$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 224 192.168.0.20:ssh 192.168.0.15:56647 $ ss | grep ESTAB | grep tcp tcp ESTAB 0 64 192.168.0.20:ssh 192.168.0.15:64885
Cho các cổng nghe:
$ ss -ltn State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 5 127.0.0.1:631 *:* LISTEN 0 50 *:445 *:* LISTEN 0 50 *:139 *:* LISTEN 0 128 *:5355 *:* LISTEN 0 128 :::22 :::* LISTEN 0 5 ::1:631 :::* LISTEN 0 50 :::445 :::* LISTEN 0 128 :::5355 :::* LISTEN 0 50 :::139 :::*
Lưu ý: Cổng 631 (CUPS) chỉ nghe trên giao diện loopback (127.0.0.1).
Lệnh ufw
Nếu bạn đang chạy tường lửa trên hệ thống Linux của mình - một bước quan trọng để kiểm soát quyền truy cập vào hệ thống, các lệnh được sử dụng để bắt đầu/kết thúc, bật/tắt, sửa đổi và hiển thị trạng thái hoặc các quy tắc hoạt động là rất quan trọng. Dưới đây là một số lệnh mẫu cho ufw mà bạn sẽ tìm thấy trên nhiều hệ thống Ubuntu:
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN 192.168.0.0/24
Tường lửa này đang hoạt động và chỉ cho phép các kết nối từ mạng cục bộ đến ssh. Các lệnh sau đây sẽ:
- Thiết lập quy tắc được hiển thị ở trên
- Vô hiệu hóa tường lửa.
$ sudo ufw allow from 192.168.0.0/24 to any port 22 $ sudo ufw disable
Lệnh iptables
Điều quan trọng là phải biết cách liệt kê các quy tắc tường lửa cho iptables. Các lệnh này sẽ cung cấp cho bạn một danh sách đầy đủ các quy tắc netfilter:
sudo iptables -vL -t filter sudo iptables -vL -t nat sudo iptables -vL -t mangle sudo iptables -vL -t raw sudo iptables -vL -t security
Lệnh ip
Lệnh ip cho phép bạn hiển thị thông tin trên các giao diện mạng của mình. Trong ví dụ bên dưới, chúng ta sẽ thấy loopback (vòng lặp) và giao diện công khai.
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:1e:4f:c8:43:fc brd ff:ff:ff:ff:ff:ff inet 192.168.0.20/24 brd 192.168.0.255 scope global dynamic enp0s25 valid_lft 59794sec preferred_lft 59794sec inet6 fe80::f233:4f72:4556:14c2/64 scope link valid_lft forever preferred_lft forever
Lệnh ip route
Lệnh ip route sẽ hiển thị bảng định tuyến của bạn:
$ ip route default via 192.168.0.1 dev enp0s25 proto static metric 100 169.254.0.0/16 dev enp0s25 scope link metric 1000 192.168.0.0/24 dev enp0s25 proto kernel scope link src 192.168.0.20 metric 100
Lệnh kill, pkill và killall
Các hệ thống Unix và Linux cung cấp một lựa chọn thuận tiện cho các lệnh để chấm dứt các tiến trình, bất cứ khi nào bạn muốn. Bạn có thể kết thúc bằng ID của tiến trình hoặc theo tên của nó. Bạn có thể kết thúc từng tiến trình một hoặc theo nhóm. Trong bất kỳ trường hợp nào, các lệnh kết thúc khác nhau đều có sẵn cho bạn sử dụng khi cần thiết. Những ví dụ bao gồm:
$ kill 1234 $ pkill bad $ killall badproc
Lệnh passwd
Lệnh passwd có lẽ là khá rõ ràng khi nói đến bảo mật hệ thống, nhưng nó không nên bị bỏ qua trong bất kỳ danh sách cần thiết về bảo mật nào. Thay đổi mật khẩu, đặc biệt là khi nhiều người dùng đến rồi đi hoặc vai trò của họ thay đổi, là rất quan trọng.
Tuy nhiên, lệnh passwd không chỉ được sử dụng để thay đổi mật khẩu. Bạn cũng có thể sử dụng nó với đặc quyền sudo để thay đổi mật khẩu của người dùng khác, khóa/mở khóa hoặc làm tài khoản hết hạn, kiểm tra trạng thái tài khoản và thay đổi cài đặt để xác định thời điểm mật khẩu hết hạn hoặc cảnh báo mật khẩu thời gian.
Kiểm tra trang man (man passwd) để biết chi tiết và sử dụng các lệnh như sau:
$ sudo passwd nemo <== change nemo's password $ sudo passwd -e dory <== expire dory's password (forces her to reset it) $ sudo passwd -i shark <== disable shark's account
Lệnh pwck
Lệnh pwck thực hiện kiểm tra trên các file /etc/passwd và /etc/shadow của bạn, đảm bảo các trường bắt buộc có mặt, các file và thư mục tồn tại, v.v...
$ sudo pwck user 'squash': directory '/home/squash' does not exist user 'squash': program '/bin/bsh' does not exist
Lệnh setfacl và getfacl
Đừng để rwxr-x --- đánh lừa bạn rằng đây là tất cả những gì cần có để cấp quyền cho các file trên các hệ thống Linux. Với lệnh setfacl và getfacl, bạn có thể cấp quyền cho ai đó không phải là chủ sở hữu của file và không phải là thành viên của nhóm được liên kết (và bạn cũng không muốn họ trở thành thành viên của nhóm này) truy cập vào file. Giả sử bạn muốn “Nemo” có quyền đọc đối với một file phác thảo hướng dẫn thiết lập ufw của bạn và chỉ vậy thôi. Sử dụng lệnh như sau để sửa đổi danh sách điều khiển truy cập (ACL) cho file:
$ setfacl -m u:nemo:r ufw-setup
Lệnh getfacl sau đó sẽ hiển thị rằng thay đổi đã được thực hiện:
$ getfacl ufw-setup # file: ufw-setup # owner: shs # group: shs user::rwx user:nemo:r-- <=== group::rw- #effective:r-- mask::r-- other::---
Lệnh sestatus & apparmor
Lệnh sestatus và apparmor có thể hiển thị trạng thái của các công cụ SELinux và apparmor, cung cấp sự cách ly giữa các ứng dụng sử dụng điều khiển truy cập bắt buộc. Nếu bạn đang sử dụng một hoặc các công cụ khác, bạn nên biết cách hiển thị trạng thái của chúng.
sestatus
$ sudo sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28
apparmor
$ sudo apparmor_status apparmor module is loaded. 18 profiles are loaded. 18 profiles are in enforce mode. /sbin/dhclient /usr/bin/evince /usr/bin/evince-previewer /usr/bin/evince-previewer//sanitized_helper /usr/bin/evince-thumbnailer /usr/bin/evince-thumbnailer//sanitized_helper /usr/bin/evince//sanitized_helper /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/NetworkManager/nm-dhcp-helper /usr/lib/connman/scripts/dhclient-script /usr/lib/cups/backend/cups-pdf /usr/lib/snapd/snap-confine /usr/lib/snapd/snap-confine//mount-namespace-capture-helper /usr/sbin/cups-browsed /usr/sbin/cupsd /usr/sbin/cupsd//third_party /usr/sbin/ippusbxd /usr/sbin/tcpdump 0 profiles are in complain mode. 3 processes have profiles defined. 3 processes are in enforce mode. /sbin/dhclient (705) /usr/sbin/cups-browsed (30173) /usr/sbin/cupsd (26828) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
Bạn cũng nên biết cách bắt đầu và dừng các công cụ này.
$ sudo /etc/init.d/apparmor start $ sudo /etc/init.d/apparmor stop $ sudo /etc/init.d/apparmor restart
Đối với SELinux, các chế độ khác nhau đại diện cho:
enforcing -- SELinux security policy is enforced permissive -- SELinux prints warnings instead of enforcing disabled -- SELinux is fully disabled
Nhiều lệnh trên các hệ thống Linux có thể giúp bạn quản lý bảo mật. Các mô tả ở trên chỉ giới thiệu các lệnh này, nhưng không giải thích mọi thứ về cách chúng hoạt động hoặc có thể được sử dụng.