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

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để bảo mật tốt hơn

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để bảo mật tốt hơn

Được xuất bản vào ngày 4 tháng 4 năm 2026, 10:00 sáng EDT

Yadullah Abidi tốt nghiệp Khoa học Máy tính tại Đại học Delhi và có bằng sau đại học về Báo chí tại Trường Cao đẳng Báo chí Châu Á, 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 phần mềm độc hại và chơi game, anh ấy kết hợp kiến thức kỹ thuật sâu sắc với khả năng biên tập mạnh mẽ.

Yadullah hiện viết bài cho MakeUseOf với tư cách là Nhân viên viết bài, về an ninh mạng, trò chơi và công nghệ tiêu dùng. Trước đây, anh từng giữ chức vụ Phó biên tập viên tại Candid.Technology và Biên tập viên tin tức tại The Mac Observer, nơi anh đưa tin về mọi thứ, từ các cuộc tấn công mạng hoành hành cho đến công nghệ mới nhất của Apple.

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

Sudo là một lệnh đã trở thành bộ nhớ cơ bản của hầu hết 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 sẽ 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 thiết bị đầu cuối Linux mà bạn có thể bỏ qua.

Giống như việc chuyển từ hệ điều hành "trình điều khiển hàng ngày" có thể cải thiện quy trình làm việc của bạn ngay lập tức, việ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 trên thiết bị đầu cuối của bạn. Tôi đã thực hiện chuyển đổi và cuối cùng các quy tắc về quyền của tôi cũng có ý nghĩa.

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

Những quy tắc quá phức tạp mà hầu hết mọi người hầu như không hiểu

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để bảo mật tốt hơn

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

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

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để bảo mật tốt hơn Nhà cung cấp dịch vụ: Yadullah Abidi / MakeUseOf

Cơ sở mã lớn hơn mang lại cho các tác nhân đe dọa một bề mặt tấn công lớn hơn và trong trường hợp bạn chưa biết, sudo đã có những lần xử lý gần như vậy trước đây. 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ó không bị phát hiện trong cơ sở mã trong gần một thập kỷ.

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

username ALL=(ALL:ALL) ALL

Đối với bất kỳ ai xử lý cú pháp này lần đầu tiên, nó có thể khá phức tạp. Đó là một bước tiến trong định dạng cấu hình với hàng thập kỷ quyết định về tính năng không hề chú trọng đến sự đơn giản.

Doas giữ mọi việc đơn giản đến mức tàn nhẫn

Một công việc, cú pháp tối thiểu, không rèn luyện trí óc

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. Về cơ bản, nó được xây dựng để thực hiện cùng một công việc mà không mang theo sự cồng kềnh của sudo.

Kết quả là một chương trình có 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à con người có thể kiểm tra tệp nhị phân trong một khoảng thời gian hợp lý.

Cú pháp cấu hình cũng tuân theo triết lý tối giản tương tự. Thay vì bắt bạn phải đấu tranh với ngữ pháp của sudoers, doas sử 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 ý nghĩa của nó. Ví dụ:doas tương đương với cấu hình sudoers đã nói ở trên là:

permit username as root

Thế thôi. Không cần phải sử dụng các ký hiệu ngẫu nhiên và ký tự đặc biệt để tạo thành một lệnh dễ đọc và dễ hiểu.

Việc chuyển đổi chỉ mất vài phút chứ không phải hàng giờ

Thiết lập nhanh chóng thay thế sudo mà không phải đau đầu

Hiện tại, doas là một công cụ gốc OpenBSD, nhưng bạn có thể sử dụng cổng OpenDoas để sử dụng nó trên Linux. Trên Debian và Ubuntu, bạn cũng có thể cài đặt nó bằng trình quản lý gói mặc định:

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để bảo mật tốt hơn
apt install doas

Và cách tiếp cận này cũng hoạt động với các bản phân phối khác. Bạn có thể sử dụng pacman trên Arch và dns trên Fedora và cài đặt doas chỉ bằng một lệnh. Bạn phải tạo tệp cấu hình tại /etc/doas.conf vì nó không được tạo tự động khi cài đặt (không giống như sudo). Tin hay không thì tùy, đó không phải là lỗi. Đó là một tính năng buộc bạn phải thận trọng hơn về chính xác những gì bạn cho phép. Bản thân cấu hình chỉ là một dòng đơn giản:

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để 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 một người dùng. Bạn có thể muốn thay đổi tùy theo số lượng người dùng mà bạn có và các trường hợp sử dụng cụ thể.

Khi tệp cấu hình được tạo, hãy khóa quyền của nó đúng cách. Đặt quyền sở hữu thành root:root và quyền thành 0400 sẽ giữ cho tệp chỉ có thể đọc được bằng root, điều này yêu cầu ngay cả trước khi chạy. Xác thực tệp 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ên nó không tự động bảo toàn các biến môi trường dành riêng cho Linux như XAUTHORITY hoặc LC_ALL. Nếu bạn muốn chạy các chương trình đồ họa trong X hoặc duy trì cài đặt ngôn ngữ của mình, điều này có thể khiến bạn gặp khó khăn. Rất may, cách khắc phục chỉ là một dòng bổ sung trong tệp cấu hình:

setenv { DISPLAY XAUTHORITY LANG LC_ALL }

Lưu ý rằng doas không phá vỡ cài đặt GUI hoặc ngôn ngữ của bạn; nó chỉ từ chối thừa nhận những gì đáng tin cậy. Đó là một sai lầm mà ngay cả những người dùng Linux có kinh nghiệm cũng có thể mắc phải, vì root sẽ không thể thấy các phiên X của bạn và các lệnh có thể đột ngột chuyển đổi ngôn ngữ, sắp xếp văn bản khác nhau hoặc hoạt động không nhất quán.

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để 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 công cụ triển khai nhẹ, di động của công cụ leo thang đặc quyền doas.

Giờ đây quy trình làm việc của tôi trở nên nhẹ nhàng hơn

Ít ma sát hơn, ít bất ngờ hơn, kiểm soát giống nhau

Trong cách sử dụng hàng ngày của tôi, việc sử dụng doas có vẻ cân nhắc hơn. Tệp cấu hình hiện có thể đọc được, nghĩa là tôi thực sự quay lại tệp đó để sửa đổi thêm và tinh chỉnh khả năng điều khiển máy tính của mình theo cách tôi muốn—điều chưa bao giờ xảy ra với sudoers.

Từ sudo đến doas:Đơn giản hóa các quyền của Linux để bảo mật tốt hơn Liên quan

5 chương trình bạn cần biết với tư cách là người dùng Linux

Linux không chỉ là một hệ điều hành dự phòng và những chương trình này đã chứng minh điều đó.

Mọi quy tắc đều là một quyết định có chủ ý đượ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 các quyền mà bạn không có ý định. Đối với bất kỳ ai chạy môi trường máy tính để bàn một người dùng, doas cung cấp cho bạn mọi thứ mà sudo cung cấp mà không có bất kỳ sự phức tạp nào vốn không dành cho bạn ngay từ đầu.

Công tắc không dành cho tất cả mọi người. Các môi trường hoặc thiết lập máy chủ lớn, nhiều người dùng dựa vào các điều khiển được thừa nhận là tốt hơn của sudo có thể sẽ vẫn sử dụng sudo. Nhưng đối với máy Linux cá nhân, cho dù bạn đang sử dụng Arch, Mint, Ubuntu hay bất kỳ thiết bị nào khác, doas cung cấp cách quản lý quyền tốt hơn, đơn giản hơn và rõ ràng hơn so với sudo từng có.