Запуск sudo в сценарии оболочки - PullRequest
0 голосов
/ 28 сентября 2019

Я просто создаю небольшой скрипт, который меняет MAC-адрес.Каждый раз, когда я запускаю его, я должен вводить пароль sudo.Как разрешить скрипту вводить пароль или пропустить проверку sudo?ИЛИ Есть ли другой способ создать этот скрипт? Может быть, использовать Python?Итак, вот мой сценарий:

#!/bin/bash
nmcli radio wifi off
sudo macchanger wlp6s0 -a
nmcli radio wifi on

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Вместо того, чтобы играть с sudo и рисковать, предоставляя полный root-доступ программам, которые могут действовать безответственно, вы можете установить cap_net_admin для двоичного файла:

sudo setcap cap_net_admin+ep "$(command -v macchanger)"

Это всего лишь одноразовая операция.Теперь вы можете удалить sudo из вашего скрипта, и он будет работать.

Может быть, использовать python?

Нет, это не поможет.Язык не имеет значения.Это ядро ​​позволяет или запрещает выполнение определенных операций.

0 голосов
/ 28 сентября 2019

Что вы хотите сделать, так это изменить файл sudoers, чтобы пользователь, запускающий сценарий, мог получить доступ к определенной команде без ввода пароля.

См. Этот ответ для получения дополнительной информации: https://askubuntu.com/questions/334318/sudoers-file-enable-nopasswd-for-user-all-commands

Короче говоря, позвоните visudo и добавьте следующую запись:

your_user ALL=(ALL) NOPASSWD:/path/to/the/binary/macchanger wlp6s0 -a

Конечно, замените /path/to/the/binary/macchanger на истинный путь, найденный с помощью команды which macchanger.

Теперь пользователь your_user может выполнить эту единственную команду с этими точными аргументами через sudo без пароля.

Кроме того, как указал Сайрус, man - ваш друг.Это хорошая идея, чтобы всегда проверять страницы руководства в первую очередь.Чаще всего вы найдете ответ на свой вопрос, прочитав его и попробовав некоторые идеи.В этом случае: man visudo и man sudo.conf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...