Выполнение сценария оболочки с помощью sudo [duplicate]

На этот вопрос уже есть ответ здесь:

У меня есть сценарий, который запускает выполнение нескольких программ на C ++. Я должен выполнить их с помощью sudo, поскольку они используют некоторые "ограниченные" библиотеки linux / файлы (вероятно, неправильная номенклатура, но вы понимаете, что я имею в виду). Теперь я хотел бы написать сценарий оболочки, который вызывает эти двоичные файлы один за другим, но я не знаю, как это сделать:

#!/bin/bash
./main a > out/output2DFloat.csv

./main a a > out/output3DFloat.csv

./main a a a > out/output2DDouble.csv

./main a a a a > out/output3DDouble.csv

и вызвать это с помощью sudo? Или добавьте Sudo перед каждым и вызовите его с помощью sudo ...

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

0
задан 30 March 2019 в 07:17

3 ответа

Вы могли просто записать sudo перед каждой командой, для которой нужны sudo права. Если "sudo таймер закончится", то Вам предложат снова. Это было бы похоже

#!/bin/bash
sudo ./main a > out/output2DFloat.csv

sudo ./main a a > out/output3DFloat.csv

sudo ./main a a a > out/output2DDouble.csv

sudo ./main a a a a > out/output3DDouble.csv

затем.

0
ответ дан 25 October 2019 в 07:36

Можно использовать suid запускать Вашу программу с root полномочия (никакая потребность ввести пароль каждый раз):

Обычно, когда прогоны программы в соответствии с Linux, это наследовало полномочия пользователя, который выполняет его, таким образом если бы я запускаю программу в соответствии со своей учетной записью, прогонами программы с теми же полномочиями, которые я имел бы, если бы та программа была я. Таким образом, если я не могу открыть определенный файл, программа, которую я запускаю также, не может открыть рассматриваемый файл.

Если я установил SUID, или SGID укусил для файла, это вызывает любых людей или процессы, которые петляют, чтобы иметь доступ к системным ресурсам, как будто они - владелец чтения файла больше...

Таким образом, можно легко изменить владение файла сценария:

chown root:user <script file>

Поместите свое имя пользователя вместо user. Затем измените разрешение файла сценария как это:

chmod g+s <script file>
0
ответ дан 25 October 2019 в 07:36

Для не ввода sudo пароля дважды или больше можно использовать подоболочку и heredoc, как это:

#!/bin/bash
sudo /bin/bash <<EOF
  ./main a > out/output2DFloat.csv
  ./main a a > out/output3DFloat.csv
  ./main a a a > out/output2DDouble.csv
  ./main a a a a > out/output3DDouble.csv
EOF
0
ответ дан 25 October 2019 в 07:36

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

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