是否可以在不提示输入密码的情况下进行 su?

rip*_*234 6 su

我怀疑su出于安全原因(在 MAN 中找不到任何内容),我怀疑没有任何方法允许从 shell 传递密码而不是提示输入密码。这是真的?

Arc*_*ege 7

确实如此,没有办法让 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}
}
Run Code Online (Sandbox Code Playgroud)