Как копировать файлы и каталоги как пользователь Sudo

Я вхожу в Linux, используя мой идентификатор, например, "A". затем я буду выполнять sudo для пользователя "B" без ввода пароля, после чего я скопирую некоторые файлы из папки X в Y-папку, используя пользователя SUdo "B".

Я пытаюсь выполнить это действие с помощью сценария оболочки, чтобы поместить его в cronjob... пока что не повезло.

Любая помощь по этому вопросу будет действительно оценена...

это то, что я пытаюсь...

#!/bin/sh
sudo /usr/local/sbin/deploy
cp -r /tmp/test /tmp/deploy

3 ответа

Вы должны запустить cp с sudo также. Иначе, deploy создает файлы с владельцем B а затем cp не может их прочитать (поскольку оболочка возвращает вас первоначальному пользователю, когда sudo в вашем сценарии завершается).

Или запустить chmod с sudo сделать файлы читаемыми для A а затем сделайте копию.

Судо это интерактивная команда. Использование его в заданиях cron не имеет смысла. Либо вы создаете сценарий суперпользователя, чтобы скопировать все файлы и затем изменить владельца, либо запустить сценарий самим нужным пользователем.

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

Попробуйте следующее: например, если ваше имя пользователя "james", добавьте следующую запись в /etc/sudoers или в отдельный /etc/sudoers.d/файл. После этого вы можете копировать файлы из источника в целевой без ввода пароля.

# visudo 
james  ALL=(ALL) NOPASSWD: /bin/cp
Другие вопросы по тегам