【问题标题】:Automatically input a password when a bash script is run [duplicate]运行bash脚本时自动输入密码[重复]
【发布时间】:2012-05-23 07:58:14
【问题描述】:

例如,假设我有一个脚本说:

#!/bin/bash
sudo setpci -s 00:02.0 F4.B=00

如何将 root 密码放入脚本中,以便它在读取和执行 sudo 行时接受它作为密码(这样我就不必手动输入)?

【问题讨论】:

    标签: bash passwords sudo


    【解决方案1】:

    在 bash 脚本中生成 expect 会话通常是您自动化交互式提示的方式。

    例如

    expect -c "
    spawn sudo setpci -s 00:02.0 F4.B=00
    expect -nocase \"password:\" {send \"$PASS\r\"; interact}
    "
    

    请注意,在这种情况下,这不是推荐的方法,因为将 root 密码存储在 bash 脚本中是一个巨大安全漏洞。

    正确的解决方案是编辑您的 /etc/sudoers/ 以不提示您输入该二进制文件的密码。

    #in /etc/sudoers
    neohexane ALL=(ALL) NOPASSWD : /usr/bin/setpci
    

    【讨论】:

    • 有什么理由不能使用/etc/sudoers/ 方法。这将是我的建议。
    • “不推荐”似乎是轻描淡写。我会完全删除期望的解决方案。除非这是他自己的私人邮箱,否则他绝对不应该将 root 密码留在纯文本文件中。
    • 我认为值得保留作为如何使用期望的示例。我会强调它是多么不推荐。
    • @cmh : 这对 linux 有用吗..如果没有,请给我一个解决方案
    • 留下密码“躺着”是真正的安全问题。除非自动系统具有密码,否则您无法使系统自动化,并且安全地提供该密码是一个主要痛苦。即使使用给定的最佳方法...(使用“--login-path”),在技术上也不是真正安全的,因为密码仍然存在,只是加密了。如果没有更多信息,那么进入系统的黑客可以从“.mylogin.cnf”文件中提取密码吗?它仍然是迄今为止最安全的方法。
    猜你喜欢
    • 1970-01-01
    • 2015-08-03
    • 2018-07-05
    • 2012-11-18
    • 2017-07-05
    • 2010-09-18
    • 2018-07-07
    • 2012-05-17
    相关资源
    最近更新 更多