我有一个过夜脚本执行给定用户的内务管理,然后关闭。关闭需要root权限,但管理任务需要以正在清理其文件的用户身份运行。清理需要一个无法确定的运行时间,因此清理和关闭都必须在同一个脚本中。我的问题是如何用这两个命令来编写脚本,第一个需要由普通用户运行(比如Bob);并且只有在第一个完成后才需要以root(shutdown)身份运行。我已经尝试过系统crontab(可以将管理员作为Bob运行,但随后无法关闭);并作为root crontab(可以关闭,但不以Bob的身份运行管理任务)。非常感谢帮助。
答案 0 :(得分:0)
您可以使用sudo
以另一个用户身份执行命令。
我在Debian上尝试了以下内容。
写了一个包含以下内容的脚本。
#!/bin/bash
echo $HOME
并以 root 执行以下命令。
sudo -u nonrootuser ./script && some-admin-command
打印/home/nonrootuser
并执行了some-admin-command
表明root能够以普通用户和root身份执行。因此,请将您的用户管理脚本保留在script
中,将nonrootuser
替换为Bob,并使用shutdown命令替换some-admin-command
并以root身份运行。
答案 1 :(得分:0)
在文件cronjob中,您可以执行以下命令命令:
0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another
您可以编写一个文件script.sh,其中包含以下内容:
#!/bin/bash
echo "Hello World"