Visudo là lệnh trong Linux dùng để chỉnh sửa file sudoers. Công cụ này giúp kiểm tra cú pháp trước khi lưu, giảm nguy cơ lỗi cấu hình có thể khiến hệ thống mất quyền quản trị. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh visudo để chỉnh sửa file sudoers an toàn và đúng chuẩn.
Những điểm chính
- Khái niệm: Hiểu rõ visudo là công cụ chuyên dụng để chỉnh sửa file phân quyền /etc/sudoers với độ an toàn và tính toàn vẹn dữ liệu cao nhất.
- Cú pháp cơ bản: Nắm vững các lệnh thực thi chuẩn để mở trình soạn thảo cấu hình mặc định trong môi trường Linux.
- Lý do nên dùng visudo: Biết được cơ chế tự động kiểm tra lỗi cú pháp và khóa file để ngăn chặn nguy cơ mất quyền quản trị hệ thống.
- Hướng dẫn sử dụng chi tiết: Thành thạo các kỹ năng cấp quyền sudo cho người dùng, nhóm, thiết lập không cần mật khẩu hoặc giới hạn lệnh cụ thể.
- Xử lý lỗi thường gặp: Biết cách nhận diện và khắc phục nhanh các sự cố như “Permission denied” hoặc lỗi sai định dạng file sudoers.
- Lưu ý quan trọng: Nắm được các nguyên tắc vận hành an toàn như kiểm tra quyền trước khi thoát và ưu tiên quản lý file trong thư mục /etc/sudoers.d/.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh visudo.
Lệnh visudo trong Linux là gì?
Visudo là lệnh dùng để chỉnh sửa file cấu hình /etc/sudoers trên các hệ điều hành Linux với cơ chế an toàn cao. Cụ thể, lệnh này tự động khóa file tạm thời để ngăn chặn xung đột khi nhiều người cùng chỉnh sửa, đồng thời kiểm tra kỹ cú pháp cấu hình trước khi lưu. Do đó, việc sử dụng visudo với quyền root hoặc sudo là bắt buộc thay vì sửa trực tiếp file, giúp quản trị viên tránh được các lỗi sai cú pháp nghiêm trọng có thể dẫn đến mất hoàn toàn quyền sudo. Qua đó, lệnh này đảm bảo tính toàn vẹn dữ liệu và sự ổn định cho toàn hệ thống.

Cú pháp cơ bản của lệnh visudo
Để sử dụng lệnh visudo, bạn nhập cú pháp sau:
visudoHoặc nếu bạn cần quyền quản trị, bạn hãy chạy lệnh sau:
sudo visudoLệnh này sẽ mở file /etc/sudoers bằng trình soạn thảo mặc định của hệ thống, thường là nano hoặc vi.
Vì sao cần dùng visudo thay vì sửa trực tiếp /etc/sudoers?
Việc sử dụng visudo để chỉnh sửa file /etc/sudoers giúp đảm bảo an toàn với 3 lợi ích chính như sau:
- Ngăn chặn lỗi cú pháp nghiêm trọng: Visudo tự động kiểm tra lỗi trước khi lưu. Tính năng này giúp loại bỏ rủi ro sai cấu hình dẫn đến việc hệ thống không đọc được file sudoers, gây mất hoàn toàn quyền sudo.
- Đảm bảo tính toàn vẹn dữ liệu: Cơ chế khóa file đặc biệt chỉ cho phép một người dùng chỉnh sửa tại một thời điểm. Điều này ngăn chặn tình trạng xung đột dữ liệu khi có nhiều quản trị viên cùng thao tác trên hệ thống.
- Tăng sự ổn định: Bằng cách cô lập các lỗi tiềm ẩn từ con người, visudo giúp duy trì sự an toàn và vận hành ổn định cho hệ điều hành.

Điều kiện để thực hiện lệnh visudo:
- Quyền hạn: Người dùng phải đang sở hữu quyền root hoặc quyền sudo.
- Hệ điều hành: Áp dụng cho các bản phân phối Linux phổ biến như Ubuntu, Debian, CentOS, AlmaLinux,…
Cách dùng lệnh visudo chi tiết
1. Cấp quyền sudo cho user
Bước 1: Mở file sudoers bằng visudo
Bạn chạy lệnh sau để mở file cấu hình:
sudo visudoBước 2: Thêm user vào danh sách được phép dùng sudo
Tiếp theo, bạn di chuyển đến cuối file và thêm dòng cấu hình sau:
username ALL=(ALL) ALLVí dụ, để cấp quyền cho user admin, bạn nhập:
admin ALL=(ALL) ALLLúc này, User admin sẽ được phép sử dụng mọi lệnh với quyền sudo.
Bước 3: Lưu và thoát file
Thao tác sẽ có sự khác biệt, tùy thuộc vào trình soạn thảo. Chi tiết như sau:
- Với trình soạn thảo nano: Bạn nhấn
Ctrl + O→Enter→Ctrl + X. - Với trình soạn thảo vi/vim: Bạn gõ
:wq→Enter.
Ngay sau khi bạn thực hiện thao tác lưu, visudo sẽ tự động kiểm tra cú pháp để đảm bảo không có lỗi.
2. Cấp quyền sudo không cần nhập mật khẩu
Trong một số trường hợp cần tự động hóa, bạn có thể cấp quyền sudo mà không yêu cầu nhập mật khẩu bằng lệnh sau:
username ALL=(ALL) NOPASSWD: ALLVí dụ, để cấp quyền sudo cho user có tên deploy, bạn thực hiện lệnh sau:
deploy ALL=(ALL) NOPASSWD: ALLKhi đó, user deploy có thể chạy lệnh sudo ngay lập tức mà không cần xác thực mật khẩu.
3. Cấp quyền sudo cho group bằng visudo
Thay vì cấp quyền cho từng user, bạn có thể cấp quyền cho toàn bộ nhóm người dùng bằng cách thêm dấu % trước tên nhóm:
%groupname ALL=(ALL) ALLVí dụ, để cấp quyền sudo cho group vietnix_techteam, bạn thực hiện lệnh sau đây:
%vietnix_techteam ALL=(ALL) ALLSau đó, tất cả các user thuộc group vietnix_techteam đều sẽ có quyền sudo.
4. Chỉ cho phép chạy một số lệnh cụ thể bằng sudo
Để tăng cường bảo mật, bạn có thể giới hạn user chỉ được phép chạy một số lệnh nhất định. Cấu trúc lệnh như sau:
username ALL=(ALL) /usr/bin/systemctl, /usr/bin/rebootVí dụ, bạn có thể giới hạn cho user admin chỉ được phép chạy lệnh systemctl dưới quyền sudo, các lệnh khác sẽ bị từ chối bằng lệnh sau:
admin ALL=(ALL) /usr/bin/systemctl5. Kiểm tra quyền sudo sau khi cấu hình
Sau khi chỉnh sửa xong, bạn có thể kiểm tra lại danh sách các quyền sudo của user hiện tại bằng lệnh dưới đây:
sudo -lMột số lỗi thường gặp khi dùng lệnh visudo Linux
1. Lỗi: Permission denied
Permission denied là lỗi cơ bản thường xảy ra ngay khi bạn cố gắng chạy lệnh. Theo mặc định, file /etc/sudoers chỉ có quyền đọc đối với user root và group root, còn người dùng thông thường sẽ không có quyền đọc hay ghi lên file này. Thông báo lỗi sẽ xuất hiện như sau:
visudo: permission deniedĐể xử lý, bạn cần chạy lệnh với quyền sudo bằng cách thêm tiền tố này vào trước lệnh visudo:
sudo visudo
2. Lỗi: Sai cú pháp file sudoers
Sau khi bạn chỉnh sửa xong và thực hiện thao tác lưu file, visudo sẽ quét toàn bộ nội dung file. Nếu phát hiện ký tự lạ, lỗi chính tả hoặc sai định dạng, lệnh này sẽ không cho phép lưu và hiện cảnh báo ngay lập tức. Để xử lý, bạn cần kiểm tra kỹ lại dòng lệnh bạn vừa thêm vào và đảm bảo tuân thủ đúng định dạng chuẩn:
username ALL=(ALL) ALLLưu ý khi sử dụng lệnh visudo Linux
Dưới đây là các lưu ý quan trọng khi dùng visudo:
- Kiểm tra trước khi thoát: Bạn không nên tắt Terminal ngay sau khi lưu, hãy mở một tab mới để chạy thử lệnh sudo nhằm đảm bảo không bị mất quyền quản trị.
- Xử lý lỗi cú pháp: Nếu hệ thống báo lỗi, bạn tuyệt đối không chọn Q (Quit & Save) mà hãy chọn e (Edit) để sửa lại cho đúng.
- Quản lý file: Bạn nên ưu tiên tạo file cấu hình riêng trong thư mục /etc/sudoers.d/ thay vì chỉnh sửa trực tiếp vào file gốc /etc/sudoers để dễ quản lý.
- Bảo mật: Hạn chế việc sử dụng tùy chọn NOPASSWD (không cần mật khẩu) trừ khi bạn cần cấu hình cho các tác vụ tự động đặc thù.
- Trình soạn thảo: Bạn nên sử dụng lệnh sudo EDITOR=nano visudo nếu không thành thạo vim để tránh xóa nhầm ký tự hoặc thao tác sai.

Câu hỏi thường gặp
Ý nghĩa của dòng ALL=(ALL) ALL là gì?
Cấu trúc này có nghĩa là:
– ALL (đầu tiên): Quy tắc này áp dụng trên tất cả các host (máy chủ).
– (ALL): User có thể chạy lệnh dưới quyền của bất kỳ user hoặc group nào (thường là root).
– ALL (cuối cùng): User được phép chạy tất cả các câu lệnh.
Lỗi “visudo: /etc/sudoers busy, try again later” là gì?
Thông báo này xuất hiện khi file /etc/sudoers đang được mở bởi một người dùng khác hoặc một tiến trình khác. Vì cơ chế an toàn, visudo sẽ khóa file để ngăn chặn việc chỉnh sửa đồng thời.
Để khắc phục, bạn hãy kiểm tra và tắt các cửa sổ terminal đang chạy visudo. Nếu không tìm thấy, bạn có thể cần xóa file khóa tạm thời, nhưng hãy cẩn thận kiểm tra kỹ tiến trình trước khi thực hiện.
Tại sao tôi gặp lỗi “visudo: command not found”?
Lỗi này thường xảy ra trên các bản phân phối Linux tối giản hoặc trong các môi trường Container chưa được cài đặt gói sudo. Để khắc phục, bạn cần cài đặt gói sudo thông qua trình quản lý gói của hệ thống như:
– Ubuntu/Debian: apt-get install sudo
– CentOS/RHEL: yum install sudo
Hy vọng qua bài viết này, bạn đã nắm được cách sử dụng lệnh visudo để chỉnh sửa file sudoers đúng chuẩn, giúp cấp quyền sudo an toàn cho user và group. Việc sử dụng visudo sẽ giúp hạn chế rủi ro sai cấu hình và đảm bảo hệ thống Linux luôn hoạt động ổn định. Chúc bạn thao tác với lệnh visudo thành công và hẹn gặp lại bạn trong các bài viết sau.




