Bạn có thể thiết lập cho người dùng os.setuid(), và bạn có thể lấy uid với pwd. Giống như vậy:
>>> import pwd, os
>>> uid = pwd.getpwnam('root')[2]
>>> os.setuid(uid)
Rõ ràng điều này chỉ hoạt động nếu người dùng hoặc thực thi có quyền làm như vậy. Chính xác làm thế nào để thiết lập mà tôi không biết. Rõ ràng nó hoạt động nếu bạn là root. Tôi nghĩ rằng bạn có thể cần đến cờ setuid trên Python thực thi, và điều đó sẽ để lại một lỗ hổng bảo mật WHOPPING. có thể đó là không thể chấp nhận nếu người dùng bạn thiết lập cũng là người dùng bị hạn chế chuyên dụng không thể làm bất cứ điều gì ngoại trừ bất cứ điều gì bạn cần làm.
Bảo mật Unix, dựa trên người dùng và thiết bị và công cụ, không phải là rất tốt hoặc thực tế và dễ dàng để lại lỗ hổng bảo mật lớn. Một tùy chọn an toàn hơn là thực sự làm kiểu máy khách-máy chủ này, vì vậy bạn có một con quỷ làm mọi thứ, và khách hàng nói chuyện với nó. Con quỷ sau đó có thể chạy với độ bảo mật cao hơn người dùng, nhưng người dùng sẽ phải cung cấp tên và mật khẩu khi họ chạy tập lệnh hoặc xác định chính họ bằng một số khóa công khai/riêng tư hoặc somesuch.
Nguồn
2009-09-30 16:53:11
Những người dùng khác của bạn không có quyền chạy 'python'? – Arkady
Nó không phải là vấn đề chạy Python. Kịch bản lệnh cần làm những thứ cần có quyền nhất định. Tôi không muốn cung cấp cho tất cả người dùng những quyền đó. Kịch bản này hoạt động giống như một người cho phép kiểm soát, nhưng trước tiên kịch bản cần quyền truy cập ... – johannix
@johannix Tôi cũng đã gặp vấn đề chính xác. Bạn có tìm thấy cách giải quyết nào không? – Anubis