Как копировать файлы и каталоги как пользователь 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