Điều bạn đang yêu cầu không chỉ là điều ác - nó đơn giản là sẽ không hoạt động.
Tất cả người dùng đã làm để xem mật khẩu của bạn là chạy bash -x your_script
và đầu ra sẽ bao gồm
+program '--pass=decrypted-password-here'
... không có vấn đề hiệu quả như thế nào obfuscation có thể có được.
Chương trình thực sự bạn đang cố gọi là cần mật khẩu là gì? Bạn có thể ẩn mật khẩu của bạn đằng sau một wrapper setuid, chẳng hạn như các wrapper có thể đọc các tập tin mật khẩu ngay cả khi người dùng chạy nó không thể? Bạn có thể (mượn đề xuất của DigitalRoss) thiết lập tài khoản người dùng có bản sao mật khẩu đã lưu trữ (hoặc tốt hơn, chứng chỉ hoặc cặp khóa), chỉ định cấu hình để có thể chạy tập lệnh của bạn và không có gì khác trên SSH và cung cấp người dùng sẽ có thể chạy quyền của tập lệnh cho SSH như người dùng đó (hoặc sudo cho người dùng đó chỉ cho một lệnh duy nhất, v.v.)?
Vv
Tóm lại: Nhằm mục đích bảo mật thực sự, không làm xáo trộn.
Bây giờ, nếu bạn đã muốn obfuscation - cách tiếp cận truyền thống là ROT-16:
obfuscated_password="qrpelcgrq-cnffjbeq-urer"
real_password="$(tr a-zA-Z n-za-mN-ZA-M <<<"$obfuscated_password")"
... nhưng nếu đó là một mật khẩu mà bạn thực sự quan tâm đến bất cứ điều gì, không obfuscate - sử dụng một trong các phương pháp được đưa ra ở trên để tránh lưu trữ mật khẩu theo cách có thể đọc được.
Nguồn
2012-03-22 18:22:02
Chương trình là cURL – Rodrigo
@Rodrigo ... và curl có thể sử dụng chứng chỉ ứng dụng khách (nếu máy chủ web bạn đang xác thực được định cấu hình cho chúng ... mặc dù bạn vẫn cần sử dụng cái gì đó như trình bao bọc setuid để leo thang đặc quyền để ngăn chặn người dùng có thể chạy chương trình gọi curl từ đọc khóa SSL), nó có thể được gọi phía sau một trình bao bọc setuid, thêm tham số mật khẩu và bạn có thể sử dụng tất cả các phương pháp tôi đã cung cấp ở đây. –