
Thực hành tổng hợp Linux Essentials: dữ liệu, script và quyền
Thực hành Linux với ticket giả lập: tạo script đếm, kiểm tra lỗi, giới hạn dữ liệu, phục hồi TAR và xác minh báo cáo HTTP loopback bằng so sánh byte.

Nhận diện ứng dụng desktop, web và server trên Linux; hiểu repository, gói phần mềm và cách đọc metadata trước khi cài hoặc thay đổi môi trường.
Một người dùng cần mở bảng tính từ đồng nghiệp, một máy chủ cần trả trang web và một nhóm lập trình cần lưu lịch sử mã nguồn. Cả ba công việc đều có lựa chọn mã nguồn mở, nhưng chúng không đòi cùng loại chương trình hoặc cách triển khai. Học tên ứng dụng có ích khi bạn biết nó đứng ở đâu trong luồng công việc và cần kiểm tra điều gì trước khi sử dụng.
Bài thuộc mục tiêu 1.2 của giáo trình Linux Essentials 010-160, liên hệ mục tiêu hiện hành 011.2 của 010-200. Đầu ra là nhận diện nhóm ứng dụng, phân biệt gói với repository và chọn phép kiểm tra trước khi cài. Đây không phải danh sách phần mềm bắt buộc phải đưa lên mọi máy Linux. Mốc đối chiếu tài liệu: 23/10/2026; ví dụ lệnh dùng môi trường Ubuntu 26.04 LTS và chỉ đọc thông tin đã có.
Ứng dụng văn phòng như LibreOffice phục vụ soạn thảo, bảng tính và trình chiếu. Trình duyệt như Firefox hoặc Chromium xử lý nội dung web; Thunderbird là một ví dụ ứng dụng email. GIMP hướng đến ảnh raster, Inkscape làm việc với đồ họa vector, còn VLC thuộc nhóm đa phương tiện. Các tên này giúp đặt câu hỏi đúng, không thay việc kiểm tra tính năng cần cho một trường hợp cụ thể.
Giả sử bạn chuyển một biểu mẫu bảng tính sang ứng dụng khác. Hãy kiểm tra công thức, định dạng số/ngày, font, macro và cách xuất bản PDF thay vì chỉ xác nhận tệp mở được. Nếu tài liệu chứa dữ liệu công việc, dùng bản mẫu đã loại thông tin riêng để thử. Một lỗi định dạng không tự chứng minh ứng dụng đó không hỗ trợ toàn bộ định dạng; cần cô lập thành phần gây khác biệt.
Trình duyệt cũng có phiên bản, extension và policy doanh nghiệp. Trang web hoạt động trong một browser không bảo đảm hoạt động trong mọi cấu hình khác. Khi ghi ticket, mô tả ứng dụng, phiên bản và hành vi tái hiện được. Tránh viết “Linux không mở được tệp” khi lỗi thực tế nằm ở một ứng dụng hoặc một thành phần nội dung.
Với ứng dụng desktop, chương trình thường chạy trực tiếp trong môi trường người dùng. Với ứng dụng web, browser là client; dữ liệu và xử lý có thể nằm ở máy chủ khác. Các nền tảng như Nextcloud, Moodle hoặc Jitsi xuất hiện trong nhiều nhu cầu chia sẻ, học tập và giao tiếp, nhưng cách vận hành chúng khác việc cài một trình xem tệp cá nhân.
Một giao diện mở trong browser không nói rõ ai chịu trách nhiệm sao lưu hoặc cập nhật server. Nếu tự vận hành dịch vụ, bạn phải xác định nơi lưu dữ liệu, quyền truy cập, TLS và cách phục hồi. Nếu dùng dịch vụ của bên khác, cần xem điều khoản và chính sách tổ chức. Mã nguồn mở của ứng dụng không tự quyết định dữ liệu được lưu ở đâu.
Trước khi đề xuất giải pháp, viết luồng đơn giản: người dùng gửi dữ liệu gì, server nào nhận, ai có thể đọc và kết quả đi về đâu. Mô tả này giúp so sánh các lựa chọn mà không rơi vào việc chỉ đếm tính năng. Trong bài nhập môn, bạn chưa cần dựng một dịch vụ public chỉ để học tên phần mềm.

Apache HTTP Server và NGINX là các ví dụ phục vụ hoặc chuyển tiếp yêu cầu web theo cấu hình. PostgreSQL, MariaDB và MySQL thuộc nhóm hệ quản trị cơ sở dữ liệu. NFS và Samba hỗ trợ những nhu cầu chia sẻ tài nguyên khác nhau. Biết vai trò giúp bạn xác định thành phần cần hỏi, nhưng không đủ để kết luận cách cấu hình trên một máy cụ thể.
Một website có thể dùng nhiều thành phần nối tiếp: reverse proxy, ứng dụng và database. Browser nhận lỗi không đồng nghĩa web server ngoài cùng là nơi phát sinh nguyên nhân. Khi đọc sơ đồ, phân biệt nơi kết nối bị từ chối, nơi ứng dụng trả lỗi và nơi lưu trữ bị chậm. Những lớp này sẽ được học kỹ hơn ở nhánh Web Development Essentials.
Đừng cài database hoặc mở cổng Internet chỉ để thử một lệnh client trong bài đầu. Nhiều khái niệm có thể học bằng cách đọc tài liệu hoặc dùng dịch vụ cục bộ trong lab sau. Cài thêm một service tạo ra trạng thái cần bảo trì, tài khoản, đĩa và đôi khi listener mạng; nó không phải thao tác chỉ đọc.
Python, JavaScript, C, Java, Go hoặc Rust có các hệ sinh thái và cách thực thi khác nhau. Có chương trình cần biên dịch trước, có chương trình cần runtime hoặc interpreter phù hợp. Tên ngôn ngữ không cho biết ngay bạn nên cài gói nào trong hệ điều hành hoặc phiên bản nào ứng dụng đang yêu cầu.
Editor giúp sửa tệp; IDE có thể tích hợp thêm kiểm thử, debug và công cụ dự án. Git quản lý lịch sử thay đổi, còn một nền tảng hosting repository bổ sung giao diện cộng tác. Trình soạn thảo có giao diện giống nhau không chứng minh các bản phân phối của nó có cùng điều khoản, extension hoặc kết nối dịch vụ. Đọc nguồn chính thức của đúng sản phẩm và bản build bạn định dùng.
Khi hỗ trợ một dự án, hỏi tệp cấu hình runtime, lockfile và tài liệu môi trường. Không nâng toàn bộ toolchain chỉ vì một hướng dẫn trên mạng nói dùng phiên bản mới nhất. Thay đổi lớn có thể ảnh hưởng cách build và dependency. Ở giai đoạn này, ưu tiên nhận diện vai trò; việc cài và chạy dự án sẽ có lab riêng.
Gói là đơn vị phân phối phần mềm cùng metadata, tệp và thông tin phụ thuộc theo hệ đóng gói. Repository cung cấp tập gói có tổ chức và dữ liệu để client tìm phiên bản phù hợp. Trình quản lý gói dùng những thông tin đó để tính toán cài, nâng cấp hoặc gỡ. Một tệp tải lẻ trên mạng có thể không tham gia đầy đủ vào cơ chế bảo trì của bản phân phối.
Trên Ubuntu, dpkg làm việc ở lớp gói deb; APT xử lý việc lấy và giải quyết phụ thuộc theo nguồn cấu hình. Các họ khác có thể dùng rpm/dnf, zypper hoặc apk. Không đổi tên đuôi gói để chuyển hệ đóng gói. Cũng không thêm repository của một phiên bản Ubuntu khác chỉ vì nó có số phiên bản chương trình bạn muốn.
Tài liệu quản lý gói của Ubuntu là nguồn đối chiếu trước khi thực hiện thay đổi bằng APT. Với lab nhập môn, chúng ta chỉ đọc inventory có sẵn. Metadata local có thể chưa đầy đủ hoặc đã cũ, đặc biệt trong container; kết quả truy vấn không phải ảnh chụp toàn bộ gói đang tồn tại trên Internet.

Trong guest hoặc container Ubuntu, xác định bản phân phối rồi đọc metadata của gói Bash đã cài. Nếu bạn đang ở hệ khác, dừng tại bước nhận diện và tra tài liệu công cụ tương ứng. Các lệnh dưới không cần sudo, không tải gói và không khởi động dịch vụ.
cat /etc/os-release
command -v dpkg-query
dpkg-query -W -f='${binary:Package}\t${Version}\n' bash
dpkg-query -L bash
Bạn dự kiến thấy tên và phiên bản gói Bash, sau đó danh sách tệp thuộc gói theo database local. Danh sách này không nhất thiết chứa mọi tệp do người dùng tạo hoặc mọi trạng thái lúc runtime. Nếu database không có gói, kết quả khác cần được giải thích từ môi trường thay vì tự thêm lệnh cài.
Đọc một đường dẫn tài liệu trong danh sách và kiểm tra nó tồn tại. Nhiều gói lưu thông tin ở /usr/share/doc, nhưng định dạng có thể nén hoặc khác tùy gói. Không sửa nội dung package database để làm kết quả giống ví dụ. Đây là phép quan sát mối liên hệ giữa tên gói và các tệp được quản lý.
Truy vấn metadata local khác tải danh sách gói mới từ repository. Tải danh sách lại khác cài phiên bản mới. Một lệnh nâng cấp có thể đổi thư viện, kernel hoặc dịch vụ đang chạy; một lệnh gỡ có thể kéo theo dependency. Vì vậy bài này không đưa chuỗi “update, upgrade, remove” như bước khởi đầu bắt buộc cho mọi máy.
Nếu một bài sau yêu cầu cài công cụ, nó sẽ ghi điều kiện, ảnh hưởng và cách kiểm chứng. Trên máy do IT quản lý, quy trình phê duyệt có thể yêu cầu nguồn phần mềm và maintenance window. Với guest lab, vẫn nên có snapshot hoặc cách tái tạo image trước thay đổi lớn. Học quản lý gói bao gồm cả trách nhiệm giữ trạng thái có thể giải thích được.
Đặt ba tiêu chí trước: công việc phải hoàn thành, dữ liệu cần bảo vệ và khả năng trao đổi kết quả. Ví dụ với công cụ đồ họa, bạn có cần sửa từng điểm vector hay chỉnh ảnh pixel? Với email, bạn đang dùng giao thức và cơ chế đăng nhập nào do tổ chức hỗ trợ? Với chia sẻ tệp, ai có quyền cấp link và thu hồi quyền?
Chạy thử bằng dữ liệu giả lập, ghi phiên bản và xác nhận đầu ra trên phía nhận. Giữ kết quả không đạt như bằng chứng để chọn giải pháp khác hoặc chuyển IT. Đừng biến một bài giới thiệu ứng dụng thành lời khuyên di chuyển dữ liệu thật trước khi kiểm tra tương thích và phục hồi.
Tự kiểm tra: Mở được bảng tính có chứng minh mọi macro tương thích không? Không. Cài Git có đồng nghĩa có một dịch vụ hosting repository không? Không. dpkg-query có cập nhật danh sách gói không? Không; nó truy vấn database local. Bạn đạt bài khi phân biệt được ba câu hỏi này và mô tả vai trò của một ứng dụng mà không nhầm nó với toàn bộ hệ điều hành.

Thực hành Linux với ticket giả lập: tạo script đếm, kiểm tra lỗi, giới hạn dữ liệu, phục hồi TAR và xác minh báo cáo HTTP loopback bằng so sánh byte.

Hiểu thư mục tạm và tệp đặc biệt Linux; thử mktemp, sticky bit, hard link và symlink, kiểm tra đích sau di chuyển và phân biệt liên kết với backup.

Đọc quyền tệp Linux, owner và group; thử chmod, chown, search thư mục và umask bằng tài khoản không root, phân biệt ghi nội dung với xóa tên tệp.

Tạo người dùng Linux và nhóm trong lab riêng; kiểm tra home, skeleton, nhóm bổ sung, khóa mật khẩu và phạm vi xóa tài khoản trước khi áp dụng thực tế.