系统crontab:如何以root用户身份运行脚本并以用户身份运行
问题描述:
我有一个隔夜脚本执行给定的用户家务,然后关闭。关机需要root权限,但是管理任务需要以正在清理文件的用户身份运行。清理运行需要不确定的时间,因此清理和关闭都必须位于同一个脚本中。我的问题是,如何用这两个命令cron脚本,第一个命令需要由普通用户(比如Bob)运行;并且只有在第一次完成之后才需要以root身份运行(shutdown)。我已经尝试过使用系统crontab(它可以作为Bob运行管理员,但不能关闭);并作为root crontab(可以关闭,但不能像Bob一样运行管理任务)。帮助将不胜感激。系统crontab:如何以root用户身份运行脚本并以用户身份运行
答
您可以使用sudo
作为另一个用户执行命令。
我在Debian上试过以下内容。
写了一个包含以下内容的脚本。
#!/bin/bash
echo $HOME
并执行如下命令根。
sudo -u nonrootuser ./script && some-admin-command
哪个印刷/home/nonrootuser
和执行的some-admin-command
这表明根能够既作为普通用户和作为根来执行。因此,请将您的用户看守脚本保存在script
中,用Bob替换nonrootuser
,用shutdown命令替换some-admin-command
并以root用户身份运行。
答
在文件的cronjob,你可以执行以下命令命令:
0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another
,你可以写,其中包括以下内容作为文件script.sh:
#!/bin/bash
echo "Hello World"