Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn

Ngày 4 tháng 4 năm 2026, 10:00 EDT

Yadullah Abidi là cử nhân Khoa học Máy tính tại Đại học Delhi và có bằng sau đại học về Nhân học tại Asian College of Journalism, Chennai. Với hơn một thập kỷ kinh nghiệm về hệ thống Windows và Linux, lập trình, phần cứng PC, an ninh mạng, phân tích mã độc và game, anh kết hợp kiến thức kỹ thuật sâu với bản năng biên tập mạnh.

Yadullah hiện viết cho MakeUseOf với vai trò Staff Writer, bao gồm an ninh mạng, game và công nghệ tiêu dùng. Anh từng làm Associate Editor tại Candid.Technology và News Editor tại The Mac Observer, nơi anh báo cáo về mọi thứ từ các cuộc tấn công mạng dữ dội đến công nghệ Apple mới nhất.

Ngoài công việc báo chí, Yadullah là một nhà phát triển full-stack có kinh nghiệm với JavaScript/TypeScript, Next.js, stack MERN, Python, C/C++ và AI/ML. Dù đang phân tích mã độc, xem xét phần cứng, hay xây dựng công cụ trên GitHub, anh mang đến góc nhìn thực tế, góc nhìn của nhà phát triển cho báo chí công nghệ.

Sudo là một lệnh đã trở thành ký ức cơ bắp cho hầu như mọi người dùng Linux trên hành tinh. Bất cứ khi nào bạn cần chạy thứ gì đó với đặc quyền nâng cao, sudo tự động xuất hiện. Nhưng sudo đã cũ, và có một cách tốt hơn để nâng cao đặc quyền trong terminal Linux mà bạn có thể đang bỏ qua.

Cũng giống như chuyển từ một hệ điều hành "người lái hàng ngày" có thể cải thiện quy trình làm việc ngay lập tức, chuyển từ sudo sang doas trên Linux có thể làm điều tương tự cho quy trình làm việc terminal của bạn. Tôi đã chuyển đổi, và quy tắc quyền của tôi cuối cùng có ý nghĩa.

Sudo mạnh mẽ — nhưng quá lộn xộn

Quy tắc phức tạp quá mức mà hầu hết mọi người hiểu lầm

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn

Sudo ở khắp nơi. Nó đi kèm với Ubuntu, Fedora, Arch, và gần như mọi bản phân phối Linux lớn bạn từng nghe nói. Đối với hầu hết người dùng Linux, nó là tiền tố bạn dùng trước một lệnh khi tài khoản người dùng của bạn không có quyền chạy nó, và đó là nó. Nó là một trong những lệnh terminal Linux khắc phục hầu hết vấn đề hệ thống.

Tuy nhiên, vấn đề là sự phức tạp của sudo. Mã nguồn sudo khoảng 160.000 dòng C. Nếu bao gồm cấu hình và file hỗ trợ, con số đó vượt quá 223.000. Đối với một công cụ có công việc chính là chạy một lệnh cho trước với tư cách root, đó là một lượng mã khổng lồ chạy một tiến trình đặc quyền.

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn Credit: Yadullah Abidi / MakeUseOf

Cơ sở mã lớn hơn cho phép tác nhân đe dọa có bề mặt tấn công lớn hơn, và nếu bạn chưa biết, sudo đã có những va chạm gần như chết người trong quá khứ. Ví dụ, CVE-2021-3156, một lỗ hổng tràn bộ đệm dựa trên heap trong sudo, cho phép leo thang đặc quyền đầy đủ lên root, và nó nằmundetected trong cơ sở mã gần một thập kỷ.

Nếu nhìn xa hơn bảo mật, cấu hình với sudo cũng không tuyệt vời. Nếu bạn từng thử viết quy tắc /etc/sudoers tùy chỉnh từ đầu, cú pháp có thể đã khiến bạn bối rối ở một số điểm. Nó không chính xác dễ đọc cho con người. Một lệnh đơn giản, như cho phép người dùng chạy bất kỳ lệnh nào với tư cách root, sẽ được viết là:

username ALL=(ALL:ALL) ALL

Đối với bất kỳ ai đối mặt với cú pháp này lần đầu, nó có thể khá phức tạp. Đó là một dòng từ định dạng cấu hình với hàng chục năm quyết định tính năng không nhìn vào sự đơn giản.

Doas giữ nó tàn nhẫn đơn giản

Một việc, cú pháp tối thiểu, không thể dục thể thao tinh thần

Doas được viết cho OpenBSD sau khi dự án OpenBSD quyết định sudo quá lớn để đưa vào cơ sở hệ thống. Nó được xây dựng từ đầu để thực hiện cơ bản cùng một việc, mà không mang theo sự phồng to của sudo.

Kết quả là một chương trình với mã nguồn khoảng 500 dòng C, và khi cài đặt, nó chỉ chiếm vài kilobyte trên đĩa. Ít mã hơn có nghĩa là bề mặt tấn công nhỏ hơn, ít lỗi tiềm ẩn hơn, và một file nhị phân có thể được kiểm tra bởi con người trong thời gian hợp lý.

Cú pháp cấu hình cũng tuân theo cùng triết lý tối giản. Thay vì bắt bạn đấu với ngữ pháp sudoers, doas dùng tiếng Anh đơn giản. Bạn có thể đọc to hầu hết cấu hình doas và hiểu chính xác nó nghĩa là gì. Ví dụ, tương đương doas của cấu hình sudoers 앞서 đó là:

permit username as root

Đó là nó. Không cần nhét các ký hiệu ngẫu nhiên và ký tự đặc biệt vào một lệnh nên dễ đọc và hiểu dễ dàng.

Chuyển đổi mất vài phút, không phải vài giờ

Thiết lập nhanh thay thế sudo không đau đầu

Bây giờ, doas là công cụ bản địa OpenBSD, nhưng bạn có thể dùng port OpenDoas để dùng nó trên Linux. Trên Debian và Ubuntu, bạn có thể cài đặt nó với trình quản lý gói mặc định:

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn
apt install doas

Và cách này cũng hoạt động với các distro khác. Bạn có thể dùng pacman trên Arch và dnf trên Fedora và cài đặt doas trong một lệnh. Bạn phải tạo file cấu hình tại /etc/doas.conf vì nó không tự động tạo khi cài đặt (khác với sudo). Tin hay không, đó không phải lỗi. Đó là một tính năng ép bạn phải suy nghĩ kỹ hơn về chính xác những gì bạn cho phép. Bản thân cấu hình là một dòng đơn giản:

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn
permit persist yourusername as root

Đây là cấu hình tối thiểu cho hệ thống đơn người dùng. Bạn có thể muốn thay đổi nó tùy theo số lượng người dùng và trường hợp sử dụng cụ thể.

Khi file cấu hình được tạo, khóa quyền của nó đúng cách. Đặt sở hữu thành root:root và quyền thành 0400 giữ file chỉ đọc được bởi root, điều mà doas yêu cầu ngay cả trước khi chạy. Xác thực file cấu hình bằng cách chạy doas -C /etc/doas.conf, và bạn sẵn sàng.

Vì doas được thiết kế cho OpenBSD, nó không tự động bảo toàn các biến môi trường đặc thù Linux như XAUTHORITY hoặc LC_ALL. Nếu bạn muốn chạy chương trình đồ họa dưới X hoặc duy trì cài đặt locale, điều này có thể khiến bạn vấp. May mắn thay, sửa chữa là một dòng thêm trong file cấu hình:

setenv { DISPLAY XAUTHORITY LANG LC_ALL }

Lưu ý doas không làm hỏng GUI hoặc cài đặt locale của bạn; nó chỉ từ chối giả định những gì nên được tin cậy. Đây là lỗi mà ngay cả người dùng Linux có kinh nghiệm có thể mắc, vì root sẽ không thấy phiên X của bạn và lệnh có thể bỗng nhiên chuyển ngôn ngữ, sắp xếp văn bản khác, hoặc hoạt động không nhất quán.

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn
OpenDoas

HĐH Linux

Nhà phát triển Ted Unangst

Mô hình giá Miễn phí, Mã nguồn mở

OpenDoas là một triển khai nhẹ, có thể di động của công cụ leo thang đặc quyền doas.

Quy trình làm việc của tôi cảm thấy nhẹ nhõm hơn

Ít ma sát hơn, ít bất ngờ hơn, cùng kiểm soát

Trong việc sử dụng hàng ngày, dùng doas cảm thấy có chủ đích hơn. File cấu hình có thể đọc được bây giờ, nghĩa là tôi thực sự quay lại nó để sửa đổi thêm và tinh chỉnh quyền kiểm soát máy tính theo cách tôi thích — điều chưa bao giờ xảy ra với sudoers.

Từ sudo sang doas: Đơn giản hóa quyền Linux cho bảo mật tốt hơn
5 chương trình bạn cần biết với tư cách người dùng Linux

Linux không chỉ là hệ điều hành dự phòng, và các chương trình này chứng minh điều đó.

Mỗi quy tắc là một quyết định có ý thức được viết bằng ngôn ngữ đơn giản, nghĩa là bạn ít có khả năng vô tình cấp quyền mà bạn không có ý định. Đối với bất kỳ ai chạy môi trường desktop đơn người dùng, doas cung cấp mọi thứ sudo cung cấp mà không có bất kỳ phức tạp nào không dành cho bạn từ đầu.

Việc chuyển đổi không dành cho mọi người. Môi trường máy chủ đa người dùng lớn hoặc thiết lập dựa vào kiểm soát細 hơn của sudo có thể sẽ ở lại với sudo. Nhưng cho một máy Linux cá nhân, dù bạn đang dùng Arch, Mint, Ubuntu, hoặc bất cứ thứ gì khác, doas cung cấp một cách tốt hơn, đơn giản hơn, và sạch hơn để quản lý quyền hơn sudo bao giờ có thể.