1

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

4

2 回答 2

0

您可以使用sudo以其他用户身份执行命令。

我在 Debian 上尝试了以下操作。

编写了一个包含以下内容的脚本。

#!/bin/bash

echo $HOME

并以root身份执行以下命令。

sudo -u nonrootuser ./script && some-admin-command

哪个打印/home/nonrootuser并执行了some-admin-command

这表明 root 能够以普通用户和 root 身份执行。因此,将您的用户内务脚本保留在 中,用 Bob 和shutdown 命令script替换并以 root 身份运行它。nonrootusersome-admin-command

于 2012-04-26T09:54:15.543 回答
0

在文件 cronjob 中,您可以执行以下命令命令:

0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another

您可以编写一个包含以下内容的文件 script.sh:

#!/bin/bash
echo "Hello World"
于 2017-01-16T07:50:26.530 回答