Cho phép người dùng hoặc nhóm gốc truy cập cụ thể mà không cần mật khẩu / bin / ngày


7

Tôi muốn cung cấp cho người dùng hoặc nhóm quyền truy cập đầy đủ vào lệnh / bin / date, bao gồm mọi cách lập luận như được định nghĩa trong các trang man.

Tôi hiểu /etc/sudoersmong đợi các định nghĩa lệnh rõ ràng, vì vậy hiện tại tôi có những điều sau đây:

%some_group ALL=(root) NOPASSWD: /bin/date

ví dụ: tôi muốn bất kỳ người dùng nào trong some_group có thể chạy:

sudo /bin/date +%T "12:34:56"

Cộng với vô số kết hợp lập luận khác.

Tôi đoán câu hỏi của tôi là, có cách nào để sử dụng các ký tự regex hoặc safe (nhấn mạnh vào an toàn!) Để đạt được độ chi tiết tốt hơn không?

CẬP NHẬT

Tôi đã xoay sở để đạt được điều gì đó tương tự với Cmnd_Alias. Tại sao điều này không hoạt động mà không có một bí ẩn ngoài việc có thời gian để đọc thêm về hoạt động bên trong của sudovà sudoers.

Cú pháp của bạn không được chấp nhận hoàn toàn, nhưng tôi đã xoay sở để đạt được những gì tôi cần với:

Cmnd_Alias DATE=/bin/date
%some_group ALL=(root) NOPASSWD: DATE

Điều này đã làm chính xác những gì tôi cần là một thành viên của nhóm được xác định.

Câu trả lời:


7

Bạn có thể sử dụng lệnh sudo để thực hiện điều này. Nếu bạn thêm quy tắc sau vào tệp / etc / sudoers của mình như vậy:

Là root hoặc sử dụng sudo từ tài khoản người dùng thông thường của bạn:

$ sudo visudo

Điều này sẽ mở ra /etc/sudoerstập tin trong vi / vim. Sau khi mở, thêm các dòng sau:

Cmnd_Alias NAMEOFTHIS=/bin/date
ALL ALL=NOPASSWD: NAMEOFTHIS

Trong đó "người dùng" là một nhóm unix mà tất cả người dùng là thành viên. Bạn có thể xác định người dùng nhóm nào đang sử dụng groups <username>lệnh hoặc tìm trong tệp /etc/groups/etc/passwd.

Nếu bạn có một phần như thế này, tôi sẽ thêm các quy tắc ở đây như sau:

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

# my extra rules
Cmnd_Alias NAMEOFTHIS=/bin/date
ALL ALL=NOPASSWD: NAMEOFTHIS

1
Tôi không hiểu ý nghĩa của dòng "ALL ALL = NOPASSWD: users". Điều đó được cho là gì, một đặc tả người dùng? Trích dẫn từ man sudoers: "Cấu trúc cơ bản của đặc tả người dùng là ở đâu ai = (as_whom) what"
Hauke ​​Laging

Sẽ bình chọn khi tôi có đủ đại diện! :)
peterRepeater

1
@HaukeLaging - dòng bạn đang hỏi là ra khỏi trang man sudoers trên Fedora. Nó nói rằng bất cứ ai cũng có thể chạy các lệnh trong Cmnd_Alias NAMEOFTHIS, mà không cần mật khẩu. linuxmanpages.net/manpages/fedora12/man5/sudoers.5.html
slm

14

Nếu bạn đang sử dụng GNU / Linux và cảm thấy có gì đó "mới" (sic) pam_cap.socó 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 sudohoặ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 ( sshhoặc loginhoặc bất kỳ), thêm người dùng / khả năng bạn muốn /etc/security/capabilities.confsau đó làm một setcap CAP_SYS_TIME+ei /bin/datevà 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/datetá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).

datekhá 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ò").


1
Phản ứng tuyệt vời và những điểm rất thú vị. Bảo mật thông tin là một chủ đề mà tôi quan tâm, vì vậy bạn đã cho tôi một số điểm để khám phá một số bài đọc mở rộng. Cảm ơn!
peterRepeater

1
Sẽ bình chọn khi tôi có đủ đại diện! :)
peterRepeater
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.