gpt4 book ai didi

linux - 如何使脚本以 root 身份运行命令

转载 作者:太空狗 更新时间:2023-10-29 11:24:40 30 4
gpt4 key购买 nike

我是 Ubuntu 和 bash 脚本的新手,但我刚刚制作了 runUpdates.sh并将其添加到我的 .profile运行它:

if [ -f "$HOME/bin/runUpdates.sh" ]; then
. "$HOME/bin/runUpdates.sh"
fi

我遇到的问题是,我希望脚本像 root 正在运行它一样运行(因为我不想输入我的 sudo 密码)

我找到了几个我应该可以做的地方sudo chown root.root <my script>sudo chmod 4755 <my script>当我运行它时,它应该以 root 身份运行。但这不是...

我觉得剧本不错。我错过了什么? -rwxr-xr-x 1 root root 851 Mar 23 21:14 runUpdates.sh*

你能帮我以 root 身份运行这个脚本中的命令吗?我真的不想更改 sudors 文件,我只想在根目录下运行此脚本中的命令(如果可能)。

#!/bin/sh

echo "user is ${USER}"

#check for updates
update=`cat /var/lib/update-notifier/updates-available | head -c 2 | tail -c 1`;
if [ "$update" = "0" ]; then
echo -e "No updates found.\n";
else
read -p "Do you wish to install updates? [yN] " yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
echo -e 'No\n';
else
echo "Please wait...";
echo `sudo apt-get update`;
echo `sudo apt-get upgrade`;
echo `sudo apt-get dist-upgrade`;
echo -e "Done!\n";
fi
fi

#check for restart
restartFile=`/usr/lib/update-notifier/update-motd-reboot-required`;
if [ ! -z "$restartFile" ]; then
echo "$restartFile";
read -p "Do you wish to REBOOT? [yN] " yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
echo -e 'No\n';
else
echo `sudo shutdown -r now`;
fi
fi

我添加了用于调试的用户,它总是输出我的用户而不是 root,并提示输入 sudo 密码(因为我使用 sudo 调用命令)或者告诉我你是 root? (如果我删除 sudo)

还有,有没有办法实时输出更新命令stdout,而不是在它们完成时只输出一个 block ?

(我也尝试使用 shebang 作为 #!/bin/bash )

最佳答案

出于安全原因,setuid 不适用于 shell 脚本。如果您想在没有密码的情况下以 root 身份运行脚本,您可以编辑 /etc/sudoers 以允许它在没有密码的情况下使用 sudo 运行。

要“实时更新”,您可以直接运行命令而不是使用 echo。

关于linux - 如何使脚本以 root 身份运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224136/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com