Сделать сценарий bash доступным без использования ssh - PullRequest
1 голос
/ 17 февраля 2020

У меня есть простой bash скрипт (myscript. sh).

mysqldump -u busql mydb mytable1 mytable2 mytable3 | mysql -u busql mydb2 && rsync --progress --stats -av --chown=mydomain.de:psacln /var/www/vhosts/mydomain.com/httpdocs/pictures/master/product/1/* /var/www/vhosts/mydomain.de/httpdocs/pictures/master/product/1/

Так что в основном скрипт сбрасывает 3 таблицы из db1 и вставляет их в db2, копирует все картинки с mydomain.com в mydomain.de и измените пользователя для всех скопированных изображений с mydomain.com на mydomain.de.

Теперь я хочу сделать этот скрипт (одним щелчком мыши) доступным для моих коллег, не давая им s sh доступ к нашему серверу.

Первое, о чем я подумал, - сделать этот скрипт доступным через html / php. Но проблема здесь в том, что скрипт должен быть запущен как root, чтобы изменить пользователя / владельца для скопированных файлов. Я хотел бы запустить скрипт от / с пользователем mydomain.com, но с открытым сердцем. И кажется, что не существует безопасного решения для запуска этого скрипта со страницы php как root.

Могу ли я май ie дать пользователю mydomain.com права на изменить владельцев файлов или что бы вы предложили сделать этот сценарий доступным без s sh доступа?!

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

1 Ответ

1 голос
/ 17 февраля 2020

chown действительно операция root. Обычный способ изменить владельца - предоставить целевому пользователю (mydomain.de) доступ на чтение к файлам, а затем скопировать файлы от имени этого пользователя. Для этого не требуется никакого доступа root.

Вы можете предоставить доступ для одного указанного пользователя c для запуска одного указанного сценария c от имени другого пользователя, используя sudo путем редактирования /etc/sudoers.

Например, для двух пользователей «bob» и «frank» bob может запустить «/home/bob/special_script.sh» как Фрэнк, если у Фрэнка есть доступ к сценарию, и эта строка добавляется в / etc / sudoers:

bob ALL=(frank) NOPASSWD: /home/bob/special_script.sh

Боб будет запускаться:

sudo -u frank /home/bob/special_script.sh

Я рекомендую вместо этого rsyn c с помощью --chown вы создаете сценарий, содержащий команду rsyn c, и предоставляете sudo доступ для его запуска как mydomain.de, предоставляя mydomain.de доступ для чтения /var/www/vhosts/mydomain.com/httpdocs/pictures/master/product/1/

...