Nếu bạn từng dùng Linux hoặc biết ai dùng Linux, chắc hẳn đã nghe lệnh sudo. Lệnh này là thành phần cốt lõi của hầu hết các bản phân phối Linux, cho phép chạy lệnh dưới quyền người dùng khác, nổi bật nhất là root (quản trị viên cao nhất). Trên một số bản phân phối, bạn có thể đăng nhập trực tiếp bằng root qua lệnh su, nhưng điều này cực kỳ rủi ro và không ai làm vậy.
Thực tế, nó nguy hiểm đến mức bị tắt mặc định trên Ubuntu và nhiều bản phân phối khác. Thay vào đó, bạn bắt buộc dùng sudo để chạy lệnh với quyền root. Còn Windows? Thật không may, hầu hết người dùng Windows đăng nhập với tài khoản Administrator, tương đương root trên Linux. Tuy nhiên, Microsoft đã cố gắng giảm thiểu rủi ro bằng cách bật User Account Control (UAC).
Nhờ UAC, ngay cả khi tài khoản có quyền Admin, các ứng dụng chạy dưới tài khoản đó sẽ không kế thừa quyền Admin trừ khi người dùng cho phép thủ công. Điều này giúp ngăn chặn mã độc, spyware lây nhiễm vào tài khoản Admin.
Vậy Linux có sudo, còn Windows có gì? Có công cụ nào giúp chạy lệnh với quyền nâng cao (elevated) như sudo không? Có sudo cho Windows không? Bài này giới thiệu 5 giải pháp thay thế sudo cho người dùng Windows.
Lưu ý: Một số công cụ khá cũ, có thể không tương thích hoàn hảo với Windows mới nhất.
Lệnh Runas của Windows
Windows có lệnh runas, đối ứng trực tiếp với sudo trên Linux. Dùng runas, bạn có thể chạy script, chương trình hoặc lệnh dưới tài khoản khác hoặc với quyền Admin. Cú pháp đầy đủ:
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program
Ví dụ, mở Command Prompt với quyền Admin:
runas /noprofile /user:Administrator cmd

Tham số /noprofile không tải hồ sơ người dùng hiện tại. Bỏ tham số này nếu cần biến môi trường của người dùng. Ví dụ mở tệp văn bản bằng Notepad với quyền Admin:
runas /user:Administrator "notepad my_file.txt"
Xem trang Technet về runas để biết thêm chi tiết.
Lưu ý: Khi dùng runas, nếu cài đặt chương trình hoặc thay đổi cài đặt, thay đổi sẽ áp dụng cho tài khoản được dùng để chạy lệnh. Ví dụ: tài khoản X (người dùng thường) và Y (Admin). Đăng nhập X, dùng runas với thông tin Admin, thay đổi sẽ áp dụng cho hồ sơ Admin, không phải tài khoản X.
Nếu cài ứng dụng bằng chuột phải file EXE → Run as Administrator, nó cài vào hồ sơ Administrator tích hợp sẵn, không phải hồ sơ bạn đang đăng nhập. Nếu muốn quyền nâng cao thực sự như sudo mà không gặp vấn đề hồ sơ, xem giải pháp dưới đây.
Sudo for Windows – Sourceforge
Sudo for Windows là chương trình miễn phí cài đặt để trải nghiệm sudo trên Linux cho Windows. Khác biệt: Sudo for Windows "giữ nguyên hồ sơ người dùng và quyền sở hữu đối tượng được tạo" theo lời nhà phát triển. Rất tiện nếu bạn hay dùng quyền nâng cao để cài ứng dụng hoặc thay đổi thư mục người dùng như My Documents...
Nó cho quyền Admin nhưng giữ mọi thay đổi trong hồ sơ hiện tại thay vì tài khoản dùng để chạy lệnh. Yêu cầu .NET 2.0 (không tải riêng lẻ được, phải cài .NET Framework 3.5 bao gồm 2.0).
Sau khi cài, cần thêm tài khoản người dùng muốn cấp quyền nâng cao vào nhóm đặc biệt do chương trình tạo tên Sudoers. Chuột phải This PC → Manage → Users and Groups → Groups → tìm nhóm Sudoers.

Chuột phải Sudoers → Add → Advanced → Find Now → chọn user → OK. Lặp lại cho các user khác. Sau đó OK để thấy thành viên trong danh sách Members. OK lại. Bây giờ chuột phải chương trình sẽ thấy tùy chọn Sudo.

Cũng có thể mở Command Prompt gõ sudo để chạy lệnh với quyền nâng cao.

Tóm lại, khá tiện và hoạt động tốt. Tuy nhiên, chương trình này hữu ích cho khởi chạy chương trình/tiến trình (qua chuột phải hoặc command prompt), không dành cho chạy ứng dụng dòng lệnh (command line apps). Ví dụ: sudo mkdir "c:\Program Files\new" sẽ không hoạt động với Sudo for Windows này. Cho chức năng đó, có chương trình khác cùng tên nhưng tác giả khác. Xem bên dưới.
Sudo for Windows – Luke Sampson
Một nhà phát triển khác viết Sudo for Windows khác cho phép chạy ứng dụng dòng lệnh. Quay lại ví dụ tạo thư mục trong C:\Program Files. Mặc định không làm được.

Trên dùng PowerShell, Command Prompt cũng báo lỗi tương tự. Nhưng sau khi cài Sudo for Windows này, chỉ cần thêm từ sudo đầu lệnh và nó chạy hoàn hảo không lỗi!
Cài đặt: mở PowerShell, gõ lần lượt:
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
set-executionpolicy unrestricted -s cu -f
scoop install sudo
Nếu ổn, bạn sẽ thấy output như sau sau mỗi lệnh:

Xong! Giờ bạn gõ lệnh và thêm sudo ở đầu. Phiền toái nhỏ: cửa sổ UAC vẫn hiện ra, phải bấm Yes mới chạy. Dù vậy, lợi ích vượt trội hơn phiền toái nhỏ này.
Elevate
Elevate làm việc với UAC và không hoạt động y hệt sudo. Với Elevate, nó chuyển user thực thi thành Administrator như runas. Tuy nhiên, hữu ích cho làm việc dòng lệnh hoặc file batch.

Mục đích chính của Elevate không phải bỏ qua UAC, mà là khởi động tiến trình ở trạng thái nâng cao từ shell không nâng cao, rồi tiếp tục bình thường sau khi lệnh hoàn tất. Elevate hay cho scripting vì không phải loay hoay script việc chuột phải chạy Command Prompt as Admin.
Elevation PowerToys for Windows
Nếu bạn làm nhiều việc dòng lệnh, script, file batch, trang Elevation PowerToys for Windows có khá nhiều công cụ và script hữu ích.

Các script elevation power toys được tạo ra để khắc phục những phiền toái của UAC khi cố gắng nâng cao quyền chương trình từ dòng lệnh hoặc chạy script với quyền Admin.
Hy vọng đủ công cụ để bạn cảm thấy như đang dùng sudo trên Windows. Không có bản thay thế hoàn hảo, nhưng khá nhiều lựa chọn gần đúng. Nếu bạn dùng công cụ khác để nâng cao quyền chương trình/lệnh/script trên Windows, hãy chia sẻ trong bình luận. Chúc vui!