Su

是否可以在不提示輸入密碼的情況下進行 su?

  • February 21, 2011

su出於安全原因(在 MAN 中找不到任何內容),我懷疑沒有任何方法可以允許從 shell 傳遞密碼而不是提示輸入密碼。這是真的?

沒錯,沒有辦法讓 su(1) 從 tty 以外的地方重定向其輸入。但是有一些庫和程序可以模擬終端以進行自動化腳本編寫,例如 Expect。類似於:

stty echo
log_user 0
set timeout 2
if [catch "spawn su root" reason] {
   send_user "Failed to spawn su: $reason\n"
   exit 1
}
expect "Password:"
send "$PASSWORD\r"
expect "\r\n"
#set timeout 5
log_user 1
expect {
   "# " {send_user "\nsu successful.\n"}
   timeout {send_user "\nsu timed out.\n"; exit 1}
   "incorrect" {send_user "\nsu failed.\n"; exit 1}
}

引用自:https://unix.stackexchange.com/questions/7747