Câu hỏi của tôi là, có thể thực hiện lệnh trên của tôi trong java mà không thực hiện bất kỳ thay đổi nào ở bất cứ đâu tức là bằng cách có cài đặt mặc định không?
sudo -u -S pwd
Câu trả lời ngắn gọn là không, bạn sẽ cần thay đổi cài đặt để có được sudo để làm những việc khác với hiện tại.
sudo có thể là công cụ sai cho việc này. Các quy tắc của Sudo có mặt để giúp quản trị viên hệ thống định cấu hình một cách để đạt được các đặc quyền nâng cao rất khó lạm dụng để có được các đặc quyền bổ sung / ngoài ý muốn.
Nếu bạn xem xét những gì sudo làm cho bạn:
- lời nhắc nhập mật khẩu để xác minh danh tính
- nâng cao đặc quyền
- sau đó tùy chọn nhận các đặc quyền như một người dùng khác
- đăng nhập sudo sử dụng để có được quyền truy cập hoặc chạy lệnh
Nếu bạn muốn java của bạn chạy các lệnh tùy ý như người dùng tùy ý mà không cung cấp mật khẩu cho những người dùng đó hoặc của chính bạn, thì về cơ bản bạn đang thay thế sudo. Trong trường hợp đó, bạn nên tạo quy tắc của riêng mình về cách ngăn chặn lạm dụng.
Về cơ bản có hai cách để làm điều này:
- chạy java của bạn với các đặc quyền nâng cao và cẩn thận lấy và trả lại các đặc quyền bạn cần (xem các lệnh gọi hàm setuid () seteuid () C).
- chạy một chương trình bên ngoài để lấy các đặc quyền nâng cao khi bạn muốn chúng
Trong trường hợp # 1, chương trình java của bạn đang tự thực hiện những gì sudo làm và bạn nên thực hiện bộ quy tắc của riêng mình để bảo vệ khỏi lạm dụng.
Có những chương trình khác ngoài sudo để làm # 2. Một ví dụ có thể được tìm thấy trong https://code.google.com.vn/archive/p/exec-wrapper/doads
Kịch bản shell tiện dụng này tạo ra một chương trình C để chạy một lệnh khác (thường là một tập lệnh). Sau đó, bạn biên dịch chương trình C thành nhị phân và đánh dấu gốc setuid hoặc thực sự nó có thể được đặt cho bất kỳ người dùng nào. (chế độ: 4555 và chủ sở hữu: root)
Miễn là bạn đang ở trên một hệ thống tập tin cho phép nó, chạy chương trình nhị phân sẽ chạy lệnh được cấu hình là userid sở hữu chính chương trình nhị phân.