Задача Crontab для запуска скрипта, которому требуются права sudo - PullRequest
0 голосов
/ 10 декабря 2018

В настоящее время я использую следующий скрипт 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.После этого обсуждения я придумал этот скрипт: Crontab не запускает скрипт .

Мой 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, он работает.Однако эти команды должны выполняться без запроса пароля.

Есть идеи?

1 Ответ

0 голосов
/ 11 декабря 2018

Добавление:

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
...