普通账号登录云服务器,需要定时执行shell脚本,脚本里面有需要执行sudo命令,如何处理?

现在是普通用户,脚本里却要用 sudo,这就得解决两个核心问题:


✅ 目标:让脚本无人值守地、定时地、自动执行带 sudo 的命令,不输密码


⚠️ 为什么不能直接 sudo

  • cron 默认没有终端,不会提示你输入密码。
  • 所以 sudo 会直接失败,任务就挂了。

解决方法:

把脚本扔进系统级目录(/etc/cron.d/),由 root 的 cron 直接调度,脚本里所有命令天然就是 root 权限,再也不用写 sudo

下面给出最小可落地的“一条龙”操作,照着复制即可。


  1. 写好脚本(不要 sudo

  2. 给脚本加可执行、仅 root 可改

  3. 放进 /etc/cron.d(推荐,时间可自定义)
    新建文件 /etc/cron.d/mybackup

保存后立即生效,无需重启 cron


一句话总结 :

把脚本交给 root 的 cron,脚本里所有命令就当 root 用,sudo 字样全部删掉,省心又安全。