3 điểm bởi GN⁺ 2024-02-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Công bố phát hành Sudo cho Windows trong Windows 11 Insider Preview Build 26052
  • Sudo cho Windows là một cách mới để người dùng chạy trực tiếp các lệnh được nâng quyền từ một phiên console không có đặc quyền
    • Giờ đây không còn phải tìm "Run as administrator" nữa
  • Được phát hành mã nguồn mở trên GitHub
  • Nếu cần các tính năng bổ sung mà Sudo cho Windows không cung cấp, khuyến nghị tham khảo gsudo của Gerardo Grignoli

Cách kích hoạt Sudo cho Windows

  • Có thể kích hoạt Sudo cho Windows bằng cách vào trang 'For Developers' trong Windows Settings và bật tùy chọn "Enable Sudo"
  • Hoặc có thể kích hoạt bằng cách chạy lệnh sau trong một phiên console được nâng quyền: sudo config --enable

Cách cấu hình Sudo cho Windows

  • Sudo cho Windows hiện hỗ trợ ba tùy chọn cấu hình: chạy trong cửa sổ mới (forceNewWindow), vô hiệu hóa input (disableInput), chạy inline (normal)
  • Để thay đổi tùy chọn cấu hình, dùng menu thả xuống trên trang 'For Developers' trong Windows Settings hoặc chạy lệnh trong một phiên console được nâng quyền.

Tùy chọn cấu hình 1: Trong cửa sổ mới

  • Với cấu hình này, Sudo for Windows mở một cửa sổ console được nâng quyền mới và chạy lệnh trong cửa sổ đó.
  • Ví dụ, khi chạy sudo netstat -ab, một cửa sổ mới sẽ mở ra và lệnh sẽ được thực thi trong đó.

Tùy chọn cấu hình 2: Vô hiệu hóa input

  • Với cấu hình này, Sudo for Windows chạy tiến trình được nâng quyền trong cửa sổ hiện tại, nhưng tiến trình mới được tạo với stdin đã đóng.
  • Nghĩa là tiến trình mới không nhận đầu vào từ người dùng, nên sẽ không hoạt động với các tiến trình cần thêm input sau khi nâng quyền.

Tùy chọn cấu hình 3: Inline

  • Cấu hình này có hành vi giống nhất với sudo trên các hệ điều hành khác.
  • Sudo for Windows chạy tiến trình được nâng quyền với stdin, stdout và stderr gắn với cửa sổ hiện tại.
  • Điều này có nghĩa là tiến trình được nâng quyền mới có thể nhận input và gửi output về cửa sổ hiện tại.

Cách hoạt động

  • Khi dùng sudo trên dòng lệnh để nâng quyền cho một tiến trình, hộp thoại UAC yêu cầu xác nhận nâng quyền sẽ xuất hiện.
  • Nếu người dùng xác nhận việc nâng quyền, tiến trình sẽ được nâng quyền theo tùy chọn cấu hình mà người dùng đã chọn.
  • Để xem các tham số tùy chọn của lệnh sudo, chạy sudo -h trong console.

Trong cửa sổ mới

  • Trong cấu hình này, sudo.exe mở một cửa sổ console được nâng quyền mới và chạy lệnh trong cửa sổ đó.
  • Cửa sổ mới khởi động với cùng thư mục làm việc và biến môi trường như cửa sổ hiện tại.
  • Cấu hình này có luồng hoạt động tương tự lệnh runas.

Vô hiệu hóa input và inline

  • Trong cấu hình này, sudo.exe khởi động một tiến trình được nâng quyền mới, đồng thời khởi động tiến trình sudo.exe được nâng quyền, và sudo.exe không đặc quyền ban đầu thiết lập một kết nối RPC với tiến trình được nâng quyền mới.
  • Nói cách khác, thông tin được truyền từ một instance sudo không đặc quyền sang instance được nâng quyền.
  • Cụ thể, console handle của tiến trình không đặc quyền được truyền sang tiến trình được nâng quyền để tiến trình được nâng quyền có thể đọc input từ tiến trình không đặc quyền và ghi output về tiến trình không đặc quyền.
  • Tuy nhiên, trong cấu hình "vô hiệu hóa input", input handle của console không được truyền sang tiến trình được nâng quyền, nên nó không thể đọc input từ người dùng.

Bước tiếp theo

  • Nhóm đang tiến hành mã nguồn mở Sudo cho Windows và dự kiến sẽ chia sẻ thêm chi tiết về kế hoạch trong vài tháng tới.
  • Họ cũng đề nghị người dùng chia sẻ phản hồi trực tiếp trên kho lưu trữ GitHub.

Ý kiến của GN⁺:

  • Việc phát hành Sudo cho Windows là một bước tiến quan trọng mang lại trải nghiệm quản lý đặc quyền kiểu Linux cho người dùng Windows.
  • Công cụ này giúp các nhà phát triển làm việc hiệu quả hơn và có thể nhận được đóng góp từ cộng đồng thông qua việc mã nguồn mở.
  • Về mặt bảo mật, cần thận trọng khi dùng cấu hình "inline"; điều thú vị là trong tương lai họ sẽ cung cấp thêm thông tin về các vấn đề bảo mật này thông qua tài liệu hóa.

1 bình luận

 
GN⁺ 2024-02-09
Ý kiến trên Hacker News
  • Lệnh sudo đang được đưa vào Windows. Đây không phải là bản port đơn thuần của sudo trên Linux, mà là một cách triển khai mới có tính đến sự khác biệt trong cấu trúc quyền hạn giữa các hệ điều hành. Mục tiêu là mang lại trải nghiệm cho phép người dùng chạy lệnh với quyền quản trị ngay trong cùng một cửa sổ terminal.
  • Cảm giác này khá giống với việc PowerShell từng thay thế curlwget bằng những lệnh hoàn toàn khác. Điều này có thể trở thành vấn đề vì các tham số không tương thích.
  • elevate của Nirsoft hoạt động rất tốt, nhưng có một tính năng được tích hợp sâu hơn vào hệ thống thì vẫn tốt hơn.
  • Thật thú vị khi sudo gần như được duy trì bởi chỉ một người.
  • Viết về tính tiện dụng vượt trội của sudo mà không nhắc đến các hệ điều hành họ Linux/Unix thì thật kỳ lạ.
  • Khi làm việc tại Microsoft, UAC (User Account Control) không được xem là một ranh giới bảo mật. Tôi tò mò không biết tính năng này đã có thể được phát hành như thế nào, hoặc liệu giờ đây UAC có được xem là một ranh giới bảo mật hay không.
  • Tôi đang cài và dùng sudo.ps1 của psutils thông qua scoop. Nó có lời nhắc UAC, nhưng phù hợp cho công việc tương tác.
  • Tôi hy vọng "Windows 12" sẽ trở thành một window manager + desktop chạy trên nền Linux. Nó sẽ tái hiện cẩn thận các lỗi cũ để duy trì khả năng tương thích với Windows 95/7/8/10/11.
  • Xét theo định hướng của các lệnh PowerShell, tôi đoán bản triển khai sudo mới này sẽ trở thành một lệnh cực kỳ phức tạp.
  • sudo đã được đưa vào Windows như một tính năng mới, nhưng ở thời điểm hiện tại có vẻ vẫn còn yếu về mặt bảo mật. Có lẽ nó sẽ được cải thiện dần theo thời gian.