system crontab:如何以root身份和用户身份运行脚本

时间:2012-04-26 09:09:39

标签: crontab

我有一个过夜脚本执行给定用户的内务管理,然后关闭。关闭需要root权限,但管理任务需要以正在清理其文件的用户身份运行。清理需要一个无法确定的运行时间,因此清理和关闭都必须在同一个脚本中。我的问题是如何用这两个命令来编写脚本,第一个需要由普通用户运行(比如Bob);并且只有在第一个完成后才需要以root(shutdown)身份运行。我已经尝试过系统crontab(可以将管理员作为Bob运行,但随后无法关闭);并作为root crontab(可以关闭,但不以Bob的身份运行管理任务)。非常感谢帮助。

2 个答案:

答案 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"