Đặt HISTIGNORE thành " sudo -S "
$ export HISTIGNORE='*sudo -S*'
Sau đó chuyển mật khẩu của bạn một cách an toàn để sudo:
$ echo "your_password" | sudo -S -k <command>
"HISTIGNORE" có nghĩa là không lưu lệnh này vào lịch sử. Đó là lịch sử trong bộ nhớ hoặc tệp "~ / .bash_history".
Ví dụ, bên dưới sẽ chuyển mật khẩu của bạn sang lệnh sudo một cách an toàn mà không giữ lại lịch sử mật khẩu của bạn.
Cấm -Siên, có nghĩa là sử dụng stdin cho mật khẩu,
Có nghĩa là bỏ qua các thông tin được lưu trong bộ nhớ cache để buộc sudo luôn luôn hỏi. Điều này là cho hành vi nhất quán.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
Nhược điểm của phương pháp trên là nếu bạn muốn xem các lệnh bạn đã chạy trong lịch sử sau này thì chúng sẽ không ở đó. Một phương pháp khác là cập nhật bộ đệm xác thực sudo xác thực (mặc định được bật với thời gian chờ 5 phút), sau đó chạy sudo riêng. Nhưng nhược điểm của điều này là bạn sẽ cần lưu ý đến bộ đệm 5 phút.
Ví dụ:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Lưu ý Tôi đã chạy sudo trước mỗi lệnh để đảm bảo rằng bộ đệm sudo được cập nhật, vì mặc định là 5 mintues. Vâng, whoami không nên mất 5 phút, nhưng tôi có thể chạy nó trước mỗi lệnh để thống nhất. Bạn cũng có thể đặt "export HISTIGNORE = ' sudo -S'"trong tệp ~ / .bashrc của bạn, sau đó tải nó bằng". ~ / .bashrc "hoặc đăng xuất rồi đăng nhập. Tuy nhiên, tôi đang nghĩ sử dụng điều này cho mục đích kịch bản, vì vậy tôi sẽ giữ nó ở đầu tất cả các tập lệnh của mình để thực hành bảo mật tốt nhất. Đặt" echo "" | sudo -S -v "với một biến thay vào đó cũng có thể là một ý tưởng hay, sau đó chỉ cần chạy biến trước mỗi lệnh cần đặc quyền gốc, xem bình luận của Janar." Nhận xét của John T "cũng nên bao gồm tham số" -k " , như thể bạn chạy "sudo -S" mà không có "-k" và bộ đệm xác thực sudo đã có thông tin đăng nhập của bạn (và vẫn hợp lệ, bộ đệm xác thực sudo mặc định là 5 phút), sau đó bash sẽ chạy mật khẩu của bạn dưới dạng lệnh, đó là xấu.
halt
chạy như root.