Запущение пользовательского скрипта с корневыми полномочиями

Решение было так же просто как вызов tar в файле спецификации и затем определении пути, к которому я хотел к untar.

3
27.03.2013, 22:31
2 ответа

Безопасный путь состоит в том, чтобы, вероятно, использовать sudo на строках Вашего сценария тот вызов sixad и rfkill (Я принимаю оба полномочия пользователя root потребности). Затем настройте sudoers, чтобы позволить тем командам быть выполненными без пароля пользователем или группой, которая, как предполагается, запускает скрипт.

2
27.01.2020, 21:28
  • 1
    Только sixad нужен sudo, но большое спасибо! Это работает прекрасное теперь. :D –  MiguelHawk 27.03.2013, 21:37
  • 2
    @MiguelHawk рассмотрите принятие и голосующие ответы, которые решают Вашу проблему.Спасибо. –  depquid 27.03.2013, 21:56
  • 3
    Это не позволит мне. У меня нет достаточной репутации. :( –  MiguelHawk 27.03.2013, 22:22

Можно установить флаг setuid на сценарий и владельца набора для укоренения (или лучше, кто-то, у кого есть полномочия, в которых Вы нуждаетесь). Флаг setuid означает, что, когда скрипт запущен любым, кто может выполнить его, UID процесса установлен на своего владельца.

Например, можно было владеть сценарием joe с флагом setuid на, поэтому когда alice выполняет его, сам сценарий имеет полномочия joe (так же, как если бы Joe выполнил его, даже если он не вошел в систему прямо сейчас).

IIUC Вы хотите выполнить это под сервером HTTP. Я не уверен, относится ли это к каждому серверу, но по крайней мере Apache на Debian откажется запускать setuid'd скрипт. Это позволит только двоичный исполняемый файл. Я решил это путем создания простой обертки в C, который будет exec() сценарий с помощью трудно кодированного пути.

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

В основном, как Вы присваиваетесь, полномочия путем создания пользовательского члена определенной группы. Много дистрибутивов создают определенные для устройства группы (как "CD-ROM", "факс"...) для Вас. Посмотрите, если существует группа "Bluetooth" в Вашей системе; если существует, создайте нового пользователя и сделайте его членом той группы.

0
27.01.2020, 21:28

Теги

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