Lệnh su Linux là công cụ cho phép chuyển từ user hiện tại sang user khác để thực hiện các tác vụ quản trị với quyền cao hơn mà không cần đăng xuất. Công cụ này thường được dùng khi cấu hình hệ thống, xử lý sự cố hoặc làm việc với các tác vụ yêu cầu quyền root. Trong bài viết này, mình sẽ cùng bạn tìm hiểu tổng quan về cách dùng lệnh su, cùng các lỗi thường gặp để sử dụng lệnh này an toàn và hiệu quả trên Linux.
Những điểm chính
- Khái niệm: Hiểu rõ lệnh su là công cụ dùng để chuyển đổi người dùng, giúp bạn nhanh chóng có được quyền hạn của tài khoản root hoặc một user khác mà không cần đăng xuất.
- Lợi ích khi sử dụng lệnh su: Nắm được các lợi ích chính của
sunhư quản trị hệ thống thuận tiện hơn, thao tác nhanh với quyền cao và kiểm soát môi trường làm việc hiệu quả. - Điều kiện cần để dùng lệnh su Linux: Biết các yêu cầu cần thiết để sử dụng
su, bao gồm quyền truy cập, mật khẩu user đích và trạng thái tài khoản root. - Cú pháp cơ bản của lệnh su: Ghi nhớ cú pháp chuẩn của lệnh
suvà cách các tham số ảnh hưởng đến phiên làm việc sau khi chuyển user. - Cách sử dụng lệnh su cơ bản: Hiểu cách dùng
sutrong các tình huống phổ biến như chuyển sang root hoặc user khác để thực thi tác vụ quản trị. - Phân biệt lệnh su và sudo: Nhận biết rõ sự khác nhau giữa
suvàsudovề cơ chế cấp quyền, phạm vi sử dụng và mức độ an toàn. - Một số lỗi thường gặp khi dùng lệnh su: Biết các lỗi phổ biến khi sử dụng
su, nguyên nhân gây lỗi và hướng xử lý cơ bản. - Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến su Linux.
Lệnh su trong Linux là gì?
Lệnh su trong Linux (substitute user” / “switch user) là lệnh dùng để chuyển từ user hiện tại sang một tài khoản người dùng khác, thường là chuyển tạm thời sang root hoặc một user có quyền cao hơn để thực hiện các tác vụ quản trị. Khi gọi su [tên_user], hệ thống sẽ yêu cầu mật khẩu của user đích, sau khi xác thực thành công sẽ khởi tạo một shell dưới danh tính của user đó. Nó cho phép bạn chạy lệnh, truy cập thư mục home và sử dụng quyền hạn của tài khoản mới mà không cần đăng xuất phiên làm việc hiện tại.

Lợi ích khi sử dụng lệnh su
Lệnh su mang lại nhiều lợi ích trong quản trị hệ thống Linux khi cần chuyển đổi giữa các tài khoản và làm việc với quyền cao hơn một cách linh hoạt. Cụ thể như sau:
- Truy cập quyền cao hơn khi cần thao tác hệ thống: Su cho phép chuyển tạm thời sang tài khoản root hoặc một user khác có nhiều đặc quyền hơn, từ đó thực hiện được các tác vụ như cài đặt phần mềm, chỉnh sửa cấu hình, quản lý dịch vụ hay thay đổi quyền file mà user thường không đủ quyền.
- Chuyển user mà không cần đăng xuất phiên làm việc: Thay vì thoát khỏi session hiện tại rồi đăng nhập lại bằng user khác, bạn có thể dùng su để mở một shell mới dưới danh tính user đích, giúp tiết kiệm thời gian và giữ nguyên ngữ cảnh làm việc đang dở dang.
- Quản lý linh hoạt nhiều tài khoản trên cùng hệ thống: Lệnh su hỗ trợ chuyển qua lại giữa nhiều user (ví dụ account vận hành, account ứng dụng, account root) phục vụ việc kiểm tra, xử lý lỗi hoặc chạy lệnh trong đúng môi trường người dùng tương ứng.
- Lựa chọn giữ hoặc thay đổi môi trường làm việc: Thông qua các biến thể như
su user,su - userhoặcsu -, quản trị viên có thể quyết định giữ lại môi trường hiện tại hoặc nạp đầy đủ môi trường đăng nhập của user mới, phù hợp cho từng tình huống cấu hình và xử lý hệ thống khác nhau.

Điều kiện cần để dùng lệnh su Linux
Để sử dụng lệnh su trên Linux một cách ổn định và đúng quyền, hệ thống và tài khoản đang đăng nhập cần đáp ứng một số điều kiện cơ bản sau:
- Đang làm việc trên hệ điều hành Linux hoặc môi trường tương thích: Lệnh su được hỗ trợ trên các bản phân phối Linux và Unix-like (Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux,…) có sẵn terminal và shell để nhập lệnh.
- Có tài khoản đích và biết mật khẩu của user cần chuyển sang: Để chuyển sang root hoặc một user khác, bạn phải có tài khoản đó trên hệ thống và nhập đúng mật khẩu của tài khoản đích, vì su xác thực dựa trên mật khẩu user mục tiêu chứ không dùng mật khẩu user hiện tại.
- Tài khoản hiện tại được phép sử dụng su: Một số hệ thống có thể giới hạn người dùng được phép dùng su thông qua cấu hình PAM hoặc nhóm đặc biệt, nếu bị hạn chế bạn có thể nhận lỗi “Permission denied” dù nhập đúng mật khẩu.
- Có quyền truy cập terminal hoặc phiên shell hợp lệ: Người dùng cần đăng nhập được vào môi trường dòng lệnh (local console, SSH, terminal emulator) để gõ lệnh su và theo dõi thông báo yêu cầu mật khẩu, kết quả chuyển đổi user.
- Hiểu bối cảnh quyền hạn khi chuyển user: Trước khi dùng su, nên nắm rõ việc chuyển sang root hoặc user khác đồng nghĩa với việc kế thừa toàn bộ quyền và phạm vi thao tác của tài khoản đó, vì vậy cần cân nhắc kỹ khi dùng su trong môi trường sản xuất hoặc server nhiều người dùng.

Cú pháp cơ bản của lệnh su
Ở mức cơ bản, lệnh su có cú pháp rất ngắn gọn, cho phép bạn chuyển sang tài khoản khác chỉ với một dòng lệnh duy nhất. Cú pháp chung:
su [tên_user]Trong đó, tên_user là tên tài khoản mà bạn muốn chuyển sang. Nếu bỏ trống phần này và chỉ gõ su, hệ thống sẽ mặc định chuyển phiên làm việc sang user root (sau khi bạn nhập đúng mật khẩu của root). Một số tùy chọn thường gặp của lệnh su Linux:
| Cú pháp | Ý nghĩa |
su user | Chuyển sang user khác nhưng giữ lại phần lớn biến môi trường hiện tại. |
su - user | Chuyển sang user khác với môi trường đăng nhập đầy đủ (login shell). |
su - | Tương đương đăng nhập trực tiếp vào root với môi trường login shell đầy đủ. |
Cách sử dụng lệnh su cơ bản
Bước 1: Chuyển sang user root
Ở bước đầu tiên, bạn có thể chuyển từ user thường sang tài khoản root để thực hiện các thao tác quản trị hệ thống cần quyền cao hơn bằng lệnh:
su
Sau khi nhập lệnh, hệ thống sẽ yêu cầu mật khẩu của user root. Nếu mật khẩu được nhập chính xác và tài khoản root đang được phép đăng nhập, shell sẽ chuyển sang chạy dưới quyền root, dấu nhắc lệnh (prompt) cũng thay đổi tương ứng với user mới.
Bước 2: Chuyển sang một user khác
Bạn cũng có thể dùng lệnh su để chuyển sang bất kỳ user nào khác trên hệ thống khi có mật khẩu của tài khoản đó, thường dùng khi cần kiểm tra cấu hình hoặc chạy ứng dụng trong đúng môi trường của user mục tiêu.
su usernameSau khi chạy lệnh, hệ thống sẽ yêu cầu nhập mật khẩu của user username. Nếu xác thực thành công, phiên shell sẽ hoạt động dưới quyền của user này và bạn thao tác với UID, quyền hạn và thư mục home tương ứng, trừ khi bạn kết hợp thêm dấu - để tải môi trường đăng nhập đầy đủ.
Bước 3: Chuyển sang root với đầy đủ biến môi trường
Trong nhiều trường hợp, bạn không chỉ cần quyền root mà còn cần toàn bộ môi trường đăng nhập của root (HOME, PATH, shell, các file cấu hình…).
su -
# hoặc
su - rootKhi sử dụng dấu gạch ngang -, hệ thống sẽ khởi tạo một login shell cho root, nạp các file cấu hình như khi đăng nhập trực tiếp bằng root (ví dụ các thiết lập trong profile, biến môi trường, thư mục làm việc mặc định). Cách này giúp tránh việc kế thừa biến môi trường từ user cũ và đảm bảo mọi lệnh được chạy trong bối cảnh chuẩn của root.
Bước 4: Thoát khỏi user đang chuyển sang
Sau khi hoàn thành thao tác với user root hoặc user khác, bạn cần thoát khỏi phiên su để quay lại tài khoản ban đầu, hạn chế rủi ro thao tác nhầm với quyền cao.
exit
# hoặc nhấn tổ hợp phím
Ctrl + DHai cách trên đều kết thúc shell hiện tại và trả bạn về phiên shell phía trước đó, tức là user đã dùng su để chuyển quyền.
Bước 5: Kiểm tra user hiện tại sau khi thoát
Sau khi thoát, bạn có thể dùng lệnh:
whoamiKết quả trả về sẽ cho biết tài khoản hiện tại đang hoạt động, giúp xác nhận rằng bạn đã quay lại đúng user ban đầu sau khi kết thúc phiên su.
Phân biệt lệnh su và sudo
Cả su và sudo đều là các lệnh dùng để nâng quyền trong Linux, giúp thực thi những tác vụ quản trị mà user thường không đủ quyền thực hiện. Tuy nhiên, cách chúng cấp và kiểm soát quyền có nhiều điểm khác nhau. Dựa trên các tiêu chí dưới đây, bạn có thể so sánh nhanh để chọn lệnh phù hợp với nhu cầu sử dụng thực tế:
| Tiêu chí | su | sudo |
| Chuyển user | Có, mở shell của user khác | Không chuyển user, chỉ nâng quyền cho lệnh được chỉ định |
| Dùng mật khẩu | Mật khẩu của user đích (ví dụ root) | Mật khẩu của user hiện tại |
| Quyền hạn | Toàn bộ quyền và môi trường của user mới | Giới hạn theo cấu hình trong /etc/sudoers |
| Bảo mật | Rủi ro cao hơn nếu làm việc lâu trong tài khoản quyền cao | Kiểm soát tốt hơn cho từng lệnh, dễ giới hạn và audit thao tác |
Một số lỗi thường gặp khi dùng lệnh su
1. Lỗi “Authentication failure”
Khi sử dụng lệnh su, thông báo su: Authentication failure là lỗi thường gặp nhất, đặc biệt với người mới làm quen Linux. Lỗi này xuất hiện khi bước xác thực không thành công, dù cú pháp lệnh có thể vẫn đúng.
Nguyên nhân của lỗi su: Authentication failure chủ yếu xuất phát từ việc nhập sai mật khẩu của user đích (thường là root) hoặc tài khoản root chưa được đặt mật khẩu, đang bị khóa hay bị hạn chế đăng nhập thông qua su theo chính sách của bản phân phối. Trong một số hệ thống, root login mặc định bị vô hiệu hóa nên dù mật khẩu đúng, quá trình xác thực khi dùng su vẫn có thể bị từ chối.
Cách xử lý là bạn cần kiểm tra lại mật khẩu và chắc chắn đang nhập đúng mật khẩu của user mục tiêu chứ không phải mật khẩu của user hiện tại. Sau đó, bạn có thể đăng nhập bằng một tài khoản có quyền sudo, dùng các lệnh quản trị để kiểm tra trạng thái tài khoản root, đặt mới hoặc đổi mật khẩu root nếu hệ thống cho phép, từ đó đảm bảo root có thể được xác thực hợp lệ khi sử dụng su.

2. Lỗi “Permission denied” hoặc không cho phép dùng su
Ngoài lỗi xác thực, đôi khi lệnh su bị từ chối ngay cả khi mật khẩu nhập đúng, thường gắn với các cơ chế kiểm soát truy cập trên hệ thống. Trong trường hợp này, lỗi liên quan đến quyền sử dụng su của user hiện tại chứ không phải do mật khẩu.
Với lỗi bị từ chối quyền khi dùng su, nguyên nhân thường đến từ cấu hình bảo mật của hệ thống, nơi user hiện tại không thuộc nhóm được phép sử dụng su hoặc bị giới hạn bởi PAM. Ví dụ chỉ các thành viên của nhóm wheel hoặc một nhóm đặc biệt mới được quyền chuyển sang root qua su. Khi đó, dù mật khẩu nhập đúng, cơ chế kiểm soát truy cập vẫn không cho phép mở phiên shell mới dưới user đích.
Để xử lý, bạn cần đăng nhập bằng một tài khoản có quyền cao hơn (chẳng hạn user đã có quyền sudo hoặc root). Sau đó, bạn kiểm tra lại cấu hình liên quan đến PAM và nhóm quyền, đồng thời bổ sung user vào nhóm được phép dùng su nếu phù hợp với chính sách quản trị. Trong trường hợp tổ chức không muốn mở rộng quyền dùng su, bạn có thể thay thế bằng sudo cho các lệnh cần quyền root, với điều kiện user được cấu hình đúng trong file sudoers hoặc nhóm sudo/wheel.

Câu hỏi thường gặp
Su Linux có cần bật tài khoản root mới dùng được không?
Trên nhiều bản phân phối, tài khoản root có thể bị khóa hoặc chưa đặt mật khẩu. Nên nếu muốn dùng su để chuyển sang root, bạn cần đảm bảo root đã được đặt mật khẩu và cho phép đăng nhập; nếu không, bạn nên dùng sudo với user có quyền sudoers.
Khi nào nên ưu tiên dùng su thay vì sudo?
Su phù hợp khi bạn cần làm việc liên tục trong môi trường của user khác (như root) để chạy nhiều lệnh liên tiếp, kiểm tra cấu hình hoặc xử lý sự cố kéo dài, trong khi sudo thích hợp hơn cho các lệnh đơn lẻ cần quyền nâng cao.
Làm sao kiểm tra nhanh mình đang ở user nào sau khi dùng su?
Sau khi chuyển quyền hoặc thoát khỏi phiên su, bạn có thể dùng lệnh whoami; kết quả trả về chính là tên user hiện tại đang chạy shell, giúp xác nhận đã chuyển đúng user hoặc đã quay lại tài khoản ban đầu.
Tóm lại, su Linux là công cụ quan trọng giúp quản trị viên và người dùng nâng cao chuyển nhanh sang root hoặc các tài khoản khác để thực hiện những thao tác đòi hỏi đặc quyền. Đồng thời, nó vẫn giữ được sự linh hoạt trong quản lý nhiều user trên cùng một máy chủ. Khi nắm vững cú pháp và hiểu rõ sự khác nhau giữa su và sudo, kết hợp với việc nhận diện các lỗi thường gặp và biết cách xử lý, bạn có thể khai thác lệnh su đúng mục đích, giảm rủi ro bảo mật và vận hành hệ thống Linux hiệu quả hơn trong môi trường thực tế.




