📅  最后修改于: 2023-12-03 14:49:31.457000             🧑  作者: Mango
在 Linux 系统中,cron 是一种常用的自动化任务调度方式。但是,在默认情况下,cron 作业是以系统管理员的身份运行的。如果需要以特定用户身份运行 cron 作业,可以采用以下方法。
可以在 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 命令。
首先,需要在 /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 作业的方法。需要根据实际情况选择适合的方法。