Запуск сценария Bash от имени пользователя root с разделом сценария без полномочий root

. У меня есть сценарий bash, который нужно запускать от имени пользователя root для выполнения задачи, в данном случае - заставить валидатор сделать снимок блокчейна Helium.

Я отредактировал файл / etc / sudoers, чтобы разрешить мне запускать этот скрипт от имени пользователя root. Это прекрасно работает.

useraccount   ALL=(ALL:ALL) NOPASSWD:/home/useraccount/validator_data/snapshotmaker.sh

Команда в сценарии выглядит следующим образом:

sudo docker exec validator miner snapshot take /var/data/$dtt

после этого команда генерирует файл типа « 30-10-2021T233752.bin ».

Мой следующий шаг - взять этот файл и скопировать его в IPFS, чтобы я мог им поделиться. Команда для этого:

ipfs files cp /ipfs/$(ipfs add -Q $localfile) $ip

На данный момент я получаю следующую ошибку:

Error: no IPFS repo found in /root/.ipfs. please run: 'ipfs init'

Это потому, что он пытается запустить его как root, когда конфигурация находится в моем пользовательском аккаунте.

Я пытался переключить учетные записи в середине сценария, но, похоже, это убило.

Итак, мой вопрос заключается в том, как запустить команду IPFS от имени моего исходного пользователя из корневого сценария.

Мой сценарий Bash:

#!/bin/bash

dt=$(date '+%d-%m-%YT%H%M%S');
dtt="${dt}.bin"
a='/var/data/'
c="${a}${dt}.bin"

echo "${c}"

sudo docker exec validator miner snapshot take /var/data/$dtt


localfile="/home/useraccount/validator_data/${dt}.bin"
echo "LocalFile: ${localfile}"

ip=" /Helium/Snapshots/2021/${dt}.bin"
echo "IPFS Location: ${ip}"

sleep 2

if [ -f "$localfile" ]; then
        echo "$localfile exists."
        sudo chown useraccount $localfile
        whoami
        su - useraccount
        whoami
        ipfs files cp /ipfs/$(ipfs add -Q $localfile) $ip
        #ipfs files cp /ipfs/$(ipfs add -Q <local-file>) "/Helium/Snapshots/2021/<dest-name>"
else 
    echo "$localfile does not exist."
fi

Результат выглядит следующим образом:

/var/data/31-10-2021T005728.bin
ok
LocalFile: /home/useraccount/validator_data/31-10-2021T005728.bin
IPFS Location:  /Helium/Snapshots/2021/31-10-2021T005728.bin
/home/useraccount/validator_data/31-10-2021T005728.bin exists.
root

И затем он умирает. Если я удалю строку su , то у меня возникнет проблема с корнем, как упомянуто в верхней части этого сообщения.

Надеюсь, что кто-нибудь сможет помочь.

1
задан 31 October 2021 в 00:00

0 ответов

Другие вопросы по тегам:

Похожие вопросы: