Bối cảnh
Trên openbsd, công cụ thay thế cho sudo là doas, mặc dù nó hoạt động không hoàn toàn giống sudo và đòi hỏi một số cấu hình nhất định. Tên gọi “doas” là viết tắt của “dedicated openbsd application subexecutor”. Openbsd 5.8, phát hành vào năm 2015, là phiên bản đầu tiên tích hợp doas. Công cụ này được Ted Unangst tạo ra khi ông cảm thấy sự phức tạp của sudo không phù hợp và gặp phải nhiều vấn đề với cấu hình sudo mặc định.
Bạn đang tìm hiểu về DOAS trên OpenBSD để tăng cường bảo mật hệ thống? Để triển khai hiệu quả, hãy cân nhắc mua VPS chất lượng cao với cấu hình mạnh mẽ, đảm bảo vận hành ổn định và bảo mật tối ưu cho các dự án của bạn. Khám phá ngay các gói VPS phù hợp!
Lệnh doas được thiết kế với mục tiêu đơn giản hóa quá trình nâng cao quyền hạn, không tích hợp các tính năng phức tạp dành cho các hệ thống quản trị quy mô lớn. Đối với hầu hết người dùng, doas đã đáp ứng đủ nhu cầu. Nếu bạn muốn sử dụng sudo thay vì doas, hãy tham khảo tài liệu “Cách sử dụng Sudo trên DataOnline Cloud Server”.
Cài đặt
Từ openbsd phiên bản 5.8 trở đi, doas đã được cài đặt sẵn trên hệ thống.
Cấu hình
Để cho phép người dùng trong nhóm wheel sử dụng doas, bạn cần thêm dòng sau vào tệp cấu hình /etc/doas.conf
. Việc này yêu cầu quyền root để chỉnh sửa tệp.
Dòng lệnh trên cho phép tất cả người dùng thuộc nhóm wheel có quyền thực thi các lệnh với tư cách bất kỳ người dùng nào.
Nếu bạn muốn người dùng chỉ cần nhập mật khẩu một lần và không phải nhập lại trong một khoảng thời gian, hãy sử dụng tùy chọn persist
. Ví dụ, cấu hình chỉ dành cho nhóm wheel sẽ như sau:
Ngoài ra, nếu bạn muốn người dùng không bao giờ phải nhập mật khẩu khi sử dụng doas, hãy dùng tùy chọn nopass
:
Nếu bạn muốn cấp quyền admin cho người dùng “mynewuser”, bạn có thể thêm người dùng đó vào nhóm wheel bằng cách chạy lệnh sau với quyền root: usermod -G wheel mynewuser
Hoặc, bạn có thể thêm dòng sau vào tệp /etc/doas.conf
:
Ví dụ trên giả định rằng bạn không yêu cầu người dùng nhập mật khẩu khi sử dụng doas. Nếu bạn muốn giới hạn “mynewuser” chỉ có thể thực thi lệnh với tư cách người dùng www, cấu hình sẽ là:
Nếu bạn muốn “mynewuser” chỉ được phép sử dụng lệnh “vim” với doas, hãy sử dụng cấu hình:
Đây chỉ là một số tùy chọn cấu hình phổ biến. Nếu bạn muốn tìm hiểu thêm các tùy chọn khác, hãy chạy lệnh man doas.conf
để đọc trang hướng dẫn doas.conf(5).
Kiểm tra tệp cấu hình
Để kiểm tra tệp cấu hình của doas, sử dụng lệnh sau:
Nếu bạn cung cấp thêm một lệnh sau đó, ví dụ:
lệnh này sẽ báo cho bạn biết liệu bạn có quyền thực thi lệnh đó hay không mà không thực sự chạy lệnh.
Cách sử dụng
Một người dùng có thể chạy lệnh sau để in ra dòng chữ “test” với quyền root:
Nếu một người dùng có quyền sử dụng doas để chuyển sang người dùng “www”, họ có thể chạy lệnh:
Lệnh này rất hữu ích cho những ai quản lý webserver nhưng không cần quyền quản trị viên đầy đủ.
Thực hành tốt nhất
Chúng tôi khuyến khích bạn sử dụng lệnh permit
thay vì deny
khi có thể. Nếu bạn cấm người dùng thực thi một lệnh cụ thể, họ có thể tìm cách sử dụng tên hoặc đường dẫn khác của lệnh đó (nếu có) để vượt qua hạn chế. Họ cũng có thể sao chép tệp thực thi của lệnh vào thư mục cá nhân và chạy từ đó, qua đó làm mất hiệu lực các thiết lập quyền hạn mà bạn đã đặt.
Nhìn chung, việc sử dụng doas tốt hơn so với su vì không cần phải chia sẻ mật khẩu root. Điều này giúp tránh rủi ro khi mật khẩu bị thay đổi, quên hoặc bị khóa, vì mỗi người dùng sẽ có mật khẩu riêng để truy cập quyền root.
Nhật ký (logs) của doas được lưu tại /var/log/secure
.
Mẹo và thủ thuật
Bạn có thể giữ lại tất cả các biến môi trường của mình với tùy chọn keepenv
, rất hữu ích nếu bạn đã thiết lập trình soạn thảo hoặc các biến môi trường quan trọng khác và không muốn chúng bị thay đổi khi chuyển sang người dùng khác. Ví dụ cho “mynewuser”:
Đôi khi, việc truyền toàn bộ các biến môi trường có thể gây lỗi, nhưng với tùy chọn setenv
, bạn có thể chọn lọc chỉ chuyển các biến cần thiết. Ví dụ, nếu bạn muốn giữ nguyên trình soạn thảo cho các tác vụ như làm việc với git, bạn có thể cấu hình:
Bạn cũng có thể sử dụng setenv
để xóa các biến môi trường (bằng cách thêm dấu gạch ngang trước tên biến muốn xóa) hoặc thiết lập chúng thành giá trị cụ thể với dấu bằng. Ví dụ, nếu bạn muốn xóa biến môi trường VISUAL
và đặt EDITOR
thành vim
, cấu hình sẽ như sau:
Nếu doas đã nhớ mật khẩu của bạn, bạn có thể sử dụng lệnh sau để làm cho nó quên mật khẩu: