【问题标题】:Crontab task to launch script that needs sudo permissions启动需要 sudo 权限的脚本的 Crontab 任务
【发布时间】:2019-05-11 16:26:12
【问题描述】:

我目前正在使用以下脚本 Making_save.sh :

#!/bin/sh
mount -t nfs 10.1.25.7:gadal /mnt/NAS_DFG
echo >> ~/Documents/Crontab_logs/logs.txt
date >> ~/Documents/Crontab_logs/logs.txt
rsync -ar /home /mnt/NAS_DFG/ >> ~/Documents/Crontab_logs/logs.txt 2>&1
umount /mnt/NAS_DFG
date >> ~/Documents/Crontab_logs/logs.txt

在 NAS 上对我的计算机进行自动 rsync。经过这次讨论,我想出了那个脚本:Crontab not launching script

我的sudo 配置有这一行:

gadal ALL=(ALL) NOPASSWD: /bin/mount -t nfs 10.1.25.7\:gadal /mnt/NAS_DFG, /bin/umount /mnt/NAS_DFG

还有 cron:

0 12 * * * /home/gadal/Documents/Crontab_logs/Making_save.sh

嗯,它实际上工作了一段时间,通过执行 rsync 并且只在日志文件中返回:

vendredi 26 octobre 2018, 12:00:01 (UTC+0200)
rsync: opendir "/home/gadal/.cache/dconf" failed: Permission denied (13)
rsync: opendir "/home/gadal/.dbus" failed: Permission denied (13)
rsync: opendir "/home/lost+found" failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]

这对我来说很完美。

但是,现在它返回了:

lundi 10 décembre 2018, 12:00:01 (UTC+0100)
rsync: recv_generator: mkdir "/mnt/NAS_DFG/home" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync: opendir "/home/gadal/.cache/dconf" failed: Permission denied (13)
rsync: opendir "/home/gadal/.dbus" failed: Permission denied (13)
rsync: opendir "/home/lost+found" failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]

并且不执行 rsync 命令。

请注意,当我使用 sudo 手动启动脚本时,它可以工作。然而,这些命令应该能够在不询问密码的情况下运行。

有什么想法吗?

【问题讨论】:

    标签: shell cron sudo cron-task


    【解决方案1】:

    添加:

    gadal ALL=(ALL) NOPASSWD: /bin/mount -t nfs 10.1.25.7\:gadal /mnt/NAS_DFG, /bin/umount /mnt/NAS_DFG
    

    sudo 配置只允许命令在sudo 下无密码执行。 它仍然需要在第一个脚本中包含sudo,现在显示为:

    #!/bin/sh
    sudo mount -t nfs 10.1.25.7:gadal /mnt/NAS_DFG
    echo >> ~/Documents/Crontab_logs/logs.txt
    date >> ~/Documents/Crontab_logs/logs.txt
    rsync -ar /home /mnt/NAS_DFG/ >> ~/Documents/Crontab_logs/logs.txt 2>&1
    sudo umount /mnt/NAS_DFG
    date >> ~/Documents/Crontab_logs/logs.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2023-04-04
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 2016-03-10
      相关资源
      最近更新 更多