проблема

У меня есть следующий сценарий:

  • движение создает каталоги и файлы с пользователем: группа motion:motion и права 755
  • как задача cron, я хотел бы периодически копировать эти файлы на удаленный компьютер, а затем удалять их. Команда, которую я пытаюсь использовать,

    sudo rsync -avz --remove-source-files /home/pi/Pictures/SecurityCamera/ username@host:/Users/username/Pictures/SecurityCamera

  • Файлы успешно копируются на удаленный компьютер, однако без sudo локальные файлы не удаляются. При использовании sudo я должен ввести свой пароль для удаленного компьютера, хотя я настроил аутентификацию с открытым ключом.


Попытки Решения

Я попытался изменить некоторые настройки в удаленном sshd_config безрезультатно

PermitRootLogin without-password 
StrictModes no 

Я также попытался добавить пользователя pi и root в группу движений, но при более внимательном рассмотрении разрешений у групп нет доступа на запись к файлам, которые я перемещаю.


TL; DR

Как использовать sudo rsync для удаления локальных файлов, созданных другим пользователем, без ввода пароля для удаленного компьютера?

1 ответ1

0

Мне кажется, что ты делаешь это на Raspberry Pi.

  1. Добавьте эту строку pi ALL=(ALL) NOPASSWD: ALL в /etc/sudoers
  2. Добавьте пользователя pi в группу motion: usermod -a -G motion pi
  3. Измените разрешение каталога, в котором файлы сохранения motion на 775 (chmod -R 775 /path/to/motion/dir). Теперь вы можете использовать sudo rsync без указания пароля, но сохранить учетные данные для места сохранения для пользователя 'pi', так как он почти root сейчас

PS Другой способ состоит в том, чтобы позволить motion пользователя быть обычным пользователем, назначив ему пароль и оболочку sudo usermod -s /bin/sh motion; sudo passwd motion Таким образом, вы можете войти для rsyncing как пользовательское движение.

PPS После комментария, что на самом деле вам нужно:

echo '*/5 * * * * root /usr/bin/rsync -avz --remove-source-files /home/pi/Pictures/SecurityCamera/ username@host:/Users/username/Pictures/SecurityCamera' | sudo /usr/bin/tee /etc/cron.d/saveMotionPics.task

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .