【问题标题】:Detecting if authentication failed while executing sudo在执行 sudo 时检测身份验证是否失败
【发布时间】:2014-03-28 06:59:52
【问题描述】:

我有以下代码:

read password1
echo "$password1" | sudo -Sk foo_bar

在执行 sudo 时,是否有任何方法可以检测身份验证是否失败(例如密码错误或用户不是 sudoer)?检查$? 的值不起作用,因为foo_bar 可能返回1,身份验证失败时sudo 也一样,如果密码错误或命令出错,我无法通知用户。

【问题讨论】:

    标签: bash shell sh sudo


    【解决方案1】:

    您可以通过单独调用sudo 进行身份验证:

    if ! echo "$password1" | sudo -Sv -p ''; then
        echo "Authentication failed" >&2
    else
        sudo foo_bar
    fi
    

    请注意,如果 sudo 的身份验证超时已被禁用(即,如果 /etc/sudoers 中的 timestamp_timeout 设置为 0),此方法将失败。

    【讨论】:

      【解决方案2】:

      使用调试模式 -

      #!/bin/bash -xv  
      

      -x 添加将在调试模式下显示每个语句。

      在执行 Shell 脚本时,您可以使用以下行创建错误日志 -

      ./filename.sh > /path/to/error_log/backup.log 2>&1 
      

      您可以回显语句并了解语句的执行情况

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-04
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-24
        相关资源
        最近更新 更多