Chỉnh sửa tập tin sudoers để hạn chế các lệnh của người dùng


8

Có thể chỉnh sửa tệp sudoers để người dùng có thể sử dụng sudo cho bất kỳ lệnh nào ngoại trừ một lệnh được chỉ định không? Tôi tin là đúng, tôi tin rằng tập tin sudoers có thể được thiết lập để người dùng chỉ có thể thực hiện một danh sách các lệnh đã cho.

EDIT: các lệnh tôi thực sự muốn lấy đi là dừng lại và khởi động lại ... điều này khiến tôi nghĩ rằng có các lệnh gọi hệ thống đặc biệt để tạm dừng và khởi động lại. Bạn có thể nhận cuộc gọi hệ thống từ một người dùng? Nếu không, có phải vì hệ thống cấp phép unix trừu tượng hóa các cuộc gọi hệ thống mà bỏ qua điều này?

Câu trả lời:


5

Một cách khác để xem xét nó là nếu người dùng có quyền truy cập root phần lớn không bị hạn chế, họ có thể dễ dàng có được quyền truy cập root đầy đủ.

Mặc dù bạn có thể làm việc gì đó nhưng nó sẽ dễ dàng bị phá vỡ.

SElinux mặc dù là một cách có thể, mặc dù nó cần rất nhiều để tìm hiểu.


3

Để làm những gì bạn muốn (giữ cho hình thức người dùng tạm dừng, khởi động lại và tắt máy), bạn sẽ phải xem xét nội dung của SElinux để ngăn người dùng thực hiện các tòa nhà đó. Nếu không, người dùng sẽ chỉ chạy / bin / sh trước và sau đó chạy / bin / tạm dừng mà không thông qua sudo.


2
Hoặc bất kỳ một trong số hàng trăm chương trình bạn có thể nhận được một vỏ từ, hoặc đoạn mã của riêng họ.
Ronald Pottol

3

Ghi nhật ký mọi thứ họ làm thông qua sudo, có lẽ, bạn có một số cách để có được điểm để không làm điều đó một lần nữa.

Defaults logfile=/var/log/sudolog 

sẽ ghi lại tất cả các lệnh họ chạy, google một chút để biết thêm.


Bạn sẽ cần đăng nhập tập trung và bạn sẽ cần phải hét vào mặt họ nếu họ chạy vỏ. Một shell có thể thu được từ một trình soạn thảo chẳng hạn. hoặc người đàn ông v.v.
James

3

Có và không ... Bạn có thể ngăn người dùng chạy một tệp cụ thể bằng cách đặt trước tệp đó bằng tiếng nổ (!), Tuy nhiên bạn không thể ngăn người dùng sao chép tệp sang vị trí khác và sau đó chạy tệp từ đó.

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

Cấp quyền truy cập vào các tệp cụ thể như một người dùng khác


Ví dụ về cách đặt "SHELLS" ở trên: Cmnd_Alias ​​SHELLS = / bin / sh, / bin / ksh, / bin / bash, / bin / zsh, \ / bin / csh, / bin / tcsh, \ / usr / bin / đăng nhập, / usr / bin / su
pulcher

Một loạt các tiện ích sẽ cho phép bạn chạy các lệnh dưới dạng root (tar, liên kết và nmap khỏi đỉnh đầu của tôi), vì vậy tôi thành thật nghĩ rằng giải pháp thực sự là một) các lệnh trong danh sách trắng mà bạn muốn chạy như root hoặc b) chỉ cần thuê người mà bạn tin tưởng
Một số Linux Nerd

2

Nếu người dùng thực sự muốn khởi động lại, anh ta sẽ tìm cách. sudo -s, sudo -i, sudo $EDITOR /etc/sudoers... có thể được sử dụng để loại bỏ những hạn chế của mình.

Và trên các hệ thống giống như Unix, bạn được phép khởi động lại hệ thống miễn là bạn đã root (uid 0). Nếu bạn tìm cách hạn chế các cuộc gọi hệ thống đó, người ta có thể làm điều này:

người dùng $ echo b | sudo tee / Proc / sysrq-trigger

hoặc một biến thể của chúng. Hoặc khởi động lại bằng cách gây ra một hoảng loạn kernel. Hoặc là...

Cuối cùng, có quyền truy cập root thường cung cấp cho bạn khả năng loại bỏ bất kỳ hạn chế nào được đặt ra.


Nó hút rằng Linux không còn có bảo mật. Họ không hoàn hảo, nhưng con người họ dễ dàng thiết lập. Họ đã không ngăn chặn khởi động lại, nhưng đã ngăn chặn rất nhiều thứ khác. Và vì chúng rất dễ sử dụng nên bạn có thể sử dụng chúng trên tất cả các hệ thống. Không có điều chỉnh và cần thiết như vậy.
Thomas

Họ không ở trong BSD chứ không phải Linux?
dùng1686

1

chắc chắn, khi root gọi visudo và ngăn 'người dùng' chạy / sbin / tạm dừng:

user ALL=(ALL) NOPASSWD: !/sbin/halt

Tôi tin rằng yêu cầu là một danh sách các lệnh mà người dùng KHÔNG được phép chạy
Wayne

1

Có một rủi ro khi làm theo cách này: thường có những cách để thực hiện cùng một hành động. Ví dụ, telnit 6 hoặc init 6 cũng khởi động lại. Có thể có một cách để buộc kernel vào kết xuất lõi và cũng khởi động lại.


1

Dòng sau sẽ cho phép người dùng "jim" chạy mọi thứ trừ / usr / bin / kill và / usr / bin / su.

jim          ALL= !/usr/bin/kill,!/usr/bin/su

0

Điều này chưa được kiểm tra và YMMV, nhưng về việc thiết lập cmd_list các lệnh bạn không muốn chạy và sau đó sử dụng! Cmd_list cho nhóm / người dùng được chỉ định thì sao?

Tôi không có quyền truy cập để kiểm tra điều này và chỉ xem trang hướng dẫn trực tuyến tại Hướng dẫn Sudoers để một số chuyên gia sẽ sửa lỗi cho tôi ở đây nếu tôi sai

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.