【问题标题】:issues running a script with sudo commands inside运行带有 sudo 命令的脚本时出现问题
【发布时间】:2015-12-17 10:51:12
【问题描述】:

我正在尝试运行脚本而不要求输入 root 密码。 所以我有一个 script.sh 里面有几个 sudo 命令,我用“sudo visudo”修改了文件 sudoers,以便能够在不询问 root 密码的情况下运行脚本:

%sudo ALL=(ALL:ALL) ALL root ALL=(ALL) NOPASSWD: /home/user/script.sh

我还更改了脚本的用户和组 (sudo chown root.root script.sh) 并更改了 (sudo chmod 777 script.sh) ,但我总是尝试运行我的脚本,它要求输入 root 密码,我不知道它会是什么

注意:我也试过改变这个> 用户 ALL=(ALL) NOPASSWD: /home/user/script.sh , 和用户,组到(用户)和我仍然有同样的问题。

【问题讨论】:

标签: linux bash shell ubuntu


【解决方案1】:

删除脚本中的所有sudo 命令。只需将以下几行放在脚本的开头

#!/bin/bash
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Aborting: run as root user!"
    exit 1
fi

#... your program

这使得整个脚本以超级用户运行。并且脚本中的所有命令都不需要 sudo 前缀。

【讨论】:

  • 当你尝试用你的 cide 运行脚本时,你的代码不允许我运行它,当我删除代码时,脚本中的命令向我显示错误:sed: can't read / etc/sudoers:权限被拒绝,我已经删除了里面的所有 sudo 命令
  • 它不允许您运行,因为最初您要求用户以超级用户权限运行您的脚本。即,如果您的脚本文件是 test.sh 并且需要 sudo 权限来运行一些命令。通过添加给定的行,而不是 ./test.sh ,脚本必须使用 sudo ./test.sh 运行并最初提供密码。
  • 是的,但问题是我需要在 ubuntu 上启动时运行此脚本,而无需用户运行脚本,因此我已将其添加到 sudoers 文件中,但它还不起作用
  • 哦!在启动时,好的检查这个答案askubuntu.com/questions/290099/…希望它能解决你的问题。
  • 该链接有效,它在启动时执行任何脚本,但是当脚本内部包含 sudo 命令或任何需要以 sudo 运行的命令时会出现问题
猜你喜欢
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多