Nếu bạn đang sử dụng GNU / Linux và cảm thấy có gì đó "mới" (sic) pam_cap.so
có thể cung cấp cho người dùng cụ thể CAP_SYS_TIME
, điều này sẽ cho phép người dùng thường xuyên thay đổi thời gian hệ thống mà không cần sudo
hoặc su
. Về cơ bản bạn chỉ cần cấu hình nó như là một mô-đun phiên cho tuy nhiên họ đang chứng thực ( ssh
hoặc login
hoặc bất kỳ), thêm người dùng / khả năng bạn muốn /etc/security/capabilities.conf
sau đó làm một setcap CAP_SYS_TIME+ei /bin/date
và bạn tốt để đi. pam_cap chưa thể thực hiện các nhóm, tuy nhiên, vì vậy bạn sẽ phải sao chép / dán cho mỗi người dùng bạn muốn làm điều đó.
Nếu bạn muốn tất cả người dùng hệ thống có thể thay đổi thời gian hệ thống, bạn có thể quên tất cả nội dung pam_cap và chỉ cần thực hiện một thao setcap CAP_SYS_TIME+ep /bin/date
tác cơ bản là khả năng để thêm bit setuid vào nhị phân (tương tự, bạn không thể thực hiện các tập lệnh và nếu bạn ghi vào các cờ khả năng tập tin thực thi và các bit setuid / setgid sẽ bị xóa bởi kernel).
date
khá an toàn để chạy qua sudo (không có nhiều cách bạn có thể cố gắng khai thác một tiện ích đơn giản như vậy ngoại trừ thông qua thay thế bên phải, nhưng kẻ tấn công sẽ phải tìm cách ghi vào thư mục chỉ root có quyền ghi) có thể, nhưng các khả năng làm cho việc cấp đặc quyền cho người dùng cuối có vẻ liền mạch hơn (họ không phải nghĩ "ồ tôi phải sudo về điều này" họ chỉ làm những việc họ đang cố gắng làm và nó hoạt động) và bị hạn chế (bạn đã cung cấp cho họ một nhóm đặc quyền nâng cao cụ thể). sudo là một cơ chế chỉ dành cho setuid (ít nhất là trong thời gian này) và chỉ có thể nghĩ theo cách này hoặc có thể thực thi được, và bất cứ tập tin nào làm được (dù là nhị phân hay tập lệnh bạn đã viết), nó có thể thực hiện nó với đầy đủ quyền root,
setuid là một cơ chế cũ cũ mà về cơ bản nó đang trên đường triển khai trên hầu hết các triển khai GNU / Linux và Unix. Cung cấp quyền truy cập root đầy đủ là cho các loài chim, tại sao lại cung cấp cho CAP_SYS_ADMIN hoặc CAP_NET_ADMIN nếu bạn chỉ cố gắng để người dùng thay đổi thời gian hệ thống? Chắc chắn tôi không thể nghĩ ra cách khai thác /bin/date
để làm điều gì đó xấu xa, nhưng hầu hết các khai thác đều không trực quan cho đến khi chúng được phát hiện và trình diễn (hy vọng phần mềm không chứa các khai thác rõ ràng, ý tôi là vậy).
Nếu bạn đang sử dụng * BSD hoặc Solaris, họ có cùng một khái niệm họ chỉ được gọi là "Đặc quyền" thay vì "khả năng" vì "khả năng" đã là tên của một cơ chế liên quan đến bảo mật trên các nền tảng đó (gần giống với LxC và / hoặc SELinux, fwiw). Các chi tiết triển khai khác nhau giữa các đặc quyền và khả năng của Linux nhưng khái niệm cơ bản là giống nhau (đó cũng là cách Solaris 11 thực hiện mô hình bảo mật "root as vai trò").
man sudoers
: "Cấu trúc cơ bản của đặc tả người dùng là ở đâu ai = (as_whom) what"