Tôi đang viết một ứng dụng được biên dịch thường xuyên cần tạo một tệp đặc biệt và viết một cookie ma thuật vào đó. Tôi không thể viết tệp trực tiếp từ ứng dụng, mô hình bảo mật hệ thống yêu cầu tôi khởi chạy một công cụ trợ giúp với các đặc quyền nâng cao để thực hiện thủ thuật. Tôi có thể cung cấp bất kỳ số lượng đối số cho công cụ trợ giúp. Bây giờ tôi muốn chọn một số lệnh hệ thống rất đơn giản sẽ đóng vai trò là công cụ trợ giúp và tạo tệp cho tôi. Một cái gì đó như thế này:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Simple touch
không cắt nó vì tôi cần ghi cookie vào tệp, đơn giản echo
không có trình bao bọc shell không hoạt động vì nó cần chuyển hướng để ghi tệp. Tôi không cảm thấy thoải mái khi gọi shell với quyền root để thực hiện một nhiệm vụ tầm thường như vậy. Có một số lệnh hệ thống thực sự đơn giản, bị ràng buộc mà tôi có thể gọi để viết tệp cho tôi không?
tee
. Cảm ơn!
/bin/sh -c 'echo magic > /path/to/magic/file'
không làm việc? Đó sẽ là một tập tin thực thi và hai đối số. Bạn sẽ cần xây dựng đối số cuối cùng dưới dạng một chuỗi (với sprintf hoặc tương đương). Có lý do này sẽ không làm việc cho bạn? Từ câu hỏi của bạn, có vẻ như doCommandAsRoot () không nhận đầu vào để truyền phát lệnh, đúng không? Nếu không, bạn có thể thay thế đối số cuối cùng bằng'cat > /path/to/magic/file'
và truyền dữ liệu thay vì xây dựng một chuỗi.