📜  以特定用户身份运行 cron 作业 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:49:31.457000             🧑  作者: Mango

以特定用户身份运行 cron 作业

在 Linux 系统中,cron 是一种常用的自动化任务调度方式。但是,在默认情况下,cron 作业是以系统管理员的身份运行的。如果需要以特定用户身份运行 cron 作业,可以采用以下方法。

方法一:在 crontab 中指定用户

可以在 crontab 文件中,通过以下形式指定要运行 cron 作业的用户。

* * * * * username command

其中,username 是要运行 cron 作业的用户名。例如,要以 alice 用户身份每分钟运行 /home/alice/backup.sh 脚本,可以这样配置 crontab。

* * * * * alice /home/alice/backup.sh

这样,每分钟就会以 alice 用户身份运行 /home/alice/backup.sh 脚本。

方法二:在脚本中切换用户

如果要在脚本中运行特定用户的命令,可以使用 su 命令。

su - username -c "command"

其中,username 是要切换到的用户,command 是要运行的命令。例如,要以 alice 用户身份每分钟运行 /home/alice/backup.sh 脚本,脚本内容可以这样写。

#!/bin/bash

su - alice -c "/home/alice/backup.sh"

然后,在 crontab 中指定该脚本即可。

* * * * * root /path/to/script.sh
方法三:使用 sudo

如果要让普通用户以特定用户身份运行命令,可以使用 sudo 命令。

首先,需要在 /etc/sudoers 文件中添加对应的配置。例如,要让 bob 用户能以 alice 用户身份运行 /home/alice/backup.sh 脚本,可以这样配置 sudoers 文件。

bob ALL=(alice) NOPASSWD:/home/alice/backup.sh

然后,在脚本中运行 sudo 命令即可。

#!/bin/bash

sudo -u alice /home/alice/backup.sh

同样,在 crontab 中指定该脚本即可。

* * * * * root /path/to/script.sh

以上就是三种以特定用户身份运行 cron 作业的方法。需要根据实际情况选择适合的方法。