Добавление привилегий root в скрипт bash

Мне нужно добавить права root в скрипт bash, который использует sudo; так что всякий раз, когда мы запускаем скрипт из терминала; независимо от того, является ли пользователь root или нет, он не должен запрашивать пароль. Пожалуйста помоги! Выполнение Run Bash Script от имени Root не помогло.

1
задан 13 April 2017 в 15:24

4 ответа

Лучшим решением было бы использовать visudo (этот инструмент был создан для этого и позволит избежать раскрытия пароля root), я предлагаю вам разобраться, что с этим не так.

В качестве обходного пути вы можете запустить это:

echo <password> | sudo -S some-script

(запустите команду с пробелом, чтобы она не сохранялась в истории Bash).

С уважением.

0
ответ дан 13 April 2017 в 15:24

Вы пытались установить залипший бит для файла, чтобы при запуске он запускался с правами root?

Вы можете запустить chmod 2777 для файла и chown root для файла, чтобы получить его. к корню.

Теперь любой, кто запустит файл, будет запускать его как root.

0
ответ дан 13 April 2017 в 15:24

Имея в виду, что, делая это, вы позволяете кому-либо запускать его, я полагаю, что вам нужно изменить его, предоставив ему соответствующее разрешение, 0755 должен это сделать.

0
ответ дан 13 April 2017 в 15:24

Очень неразумно создавать дыру в безопасности путем повышения прав (что я против) без какой-либо формы проверки личности, но если ваш сценарий неинтерактивен и система полностью контролирует сам сценарий (это означает, что что пользователь не может возиться с этим) есть несколько способов сделать это безопасным способом. Я приведу несколько примеров, использующих временные «триггеры событий»
(да, немного растянув определение)

Этот сервер должен быть предварительно запущен сервером (в / etc / rclocal) или что-то в этом роде) у этого скрипта есть разрешение «root».

#!/bin/bash

CMD="/path/to/a/directory/the/user/has/rights/to/write/into"

mkdir -p "$CMD"

while :
do
    inotifywait -q -e moved_to "$CMD" >/dev/null
    /path/to/script/you/want/to/run.sh
done

Второй - это скрипт, который пользователь вызывает, у него нет прав root:

#!/bin/bash

CMD="/path/to/a/directory/the/user/has/rights/to/write/into"

touch dummyfile ; mv dummyfile "$CMD"

Как видите, пользователь не имеет повышенных прав и также не может ничего делать за "нажатием кнопки". Если клиент перемещает что-то в подготовленный каталог, серверный скрипт получает сигнал о том, что он должен запустить ваш скрипт.

Другой способ (менее безопасный) сделать это - использовать сокеты:

Сначала снова, сценарий, вызываемый сервером (как в первом примере)

#!/bin/bash
PORTNUMBER="12345"  #or whatever you like and not in use

while :
do
    nc -l localhost $PORTNUMBER >/dev/null
    /path/to/script/you/want/to/run.sh
done

, затем clientcript

#!/bin/bash
PORTNUMBER="12345"  #or whatever you like and not in use

echo "something" | nc localhost $PORTNUMBER

последняя строка также может быть заменена на:

echo "something" >/dev/tcp/localhost/$PORTNUMBER

И снова: эхо к сокету будет сигнализировать серверному сценарию о запуске вашего скрипта.

И, конечно, это также можно сделать с именованными каналами, но вы поняли: -)

0
ответ дан 13 April 2017 в 15:24

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

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