Làm cách nào để tạo 'sudo' lấy mật khẩu từ một tệp?


12

Tôi muốn chạy một lệnh yêu cầu mật khẩu sudo nói:

sudo apt-get update

Đây không phải là hoạt động (Tôi đã lưu mật khẩu trong một tệp văn bản bình thường passwd.txt):

sudo apt-get update <~/passwd.txt

Đây là logic của tôi về lý do tại sao nó NÊN hoạt động: khi mật khẩu được yêu cầu, người dùng được yêu cầu nhập mật khẩu từ bàn phím. Nhưng chuyển hướng stdinđể đọc từ passwd.txttập tin nên làm việc.

Có nên không?



Bạn cũng sẽ sử dụng expecttập lệnh tcl để tự động hóa những thứ đó.
Adobe

Nếu bạn cần hỏi điều này, có lẽ bạn đã làm sai điều gì đó. Bạn có thể chia sẻ những gì bạn đang cố gắng thực hiện ở nơi đầu tiên? Không bao giờ phải sử dụng hack như thế này. Đó là một dấu hiệu cho thấy nên có một giải pháp tốt hơn.
gertvdijk

@gertvdijk Tôi không phải là chuyên gia về Ubuntu nhưng tôi đang học. Tôi đã đưa ra điều này cho bản thân mình như một bài tập: "Thực thi một lệnh trong Bash Script yêu cầu đặc quyền sudo chỉ sử dụng kiến ​​thức mà tôi hiện đang sở hữu. Không cần sử dụng Google." Tôi đã đưa ra câu trả lời ở trên và tôi nghĩ rằng nó nên hoạt động. Tôi đã tìm thấy các giải pháp tốt hơn, an toàn hơn trên AskUbfox sau này.
MichaelB

Câu trả lời:


26

sudokhông đọc mật khẩu stdintheo mặc định. Từ sudotrang web:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

Vì vậy, bạn nên chạy:

sudo -S apt-get update <~/passwd.txt

Hãy nhớ rằng lưu trữ mật khẩu trong các tập tin không phải là một thực hành tốt. Bạn nên đọc:


Hiểu! Câu trả lời ngắn gọn ngọt ngào!
MichaelB
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.