сценарий для изменения MAC с suid не работает

Мне нужен скрипт, который может быть запущен как пользователь, который изменит MAC-адрес eth0. Я придумал следующий сценарий:

#!/bin/bash
/etc/init.d/networking stop
ifconfig eth0 hw ether 00:50:56:98:00:19
/etc/init.d/networking start

Я установил setuid разрешение и присвоил его для укоренения: -rwsr-xr-x 1 root root 110 May 24 14:22 ChangeMac.sh но это все еще дало бы мне следующий вывод, когда я выполняю его как пользователь:

$ ./ChangeMac.sh
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.100" (uid=1000 pid=6746 comm="stop networking ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
SIOCSIFHWADDR: Operation not permitted
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.103" (uid=1000 pid=6753 comm="start networking ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Почему это? Как я могу сделать его так, чтобы пользователь мог вызвать его, но это выполняется как корень?

0
задан 24 May 2017 в 14:27

1 ответ

Если Вы хотите смочь выполнить это и только этот сценарий как обычный пользователь без каких-либо других sudo прав, или Вы хотите работать, он с sudo без пароля, вводящего Вас, может добавить их к Вашему sudoers.

, например, sudo echo "[username] ALL = NOPASSWD: /path/to/your/script" >/etc/sudoers.d/myscript

Однако это - вид meh в безопасности с тех пор, если кто-то может отредактировать этот сценарий как Ваш пользователь, они могут выполнить любую команду как sudo, не зная Вашего пароля, так заботьтесь в использовании его.

Просто удостоверяются, что сценарий принадлежит корню, и запишите, что права только в, он - владелец, таким образом, никто больше не может изменить его.

можно также использовать chattr, чтобы удостовериться, что никто не может изменить сценарий:

sudo chattr +i script.sh

От man chattr:

файл А со 'мной' приписывает, не может быть изменен: это не может быть удалено или переименовано, никакая ссылка не может быть создана в этот файл, и никакие данные не могут быть записаны в файл.

После всего, что просто работает sudo myscript и это должно выполнить его с корневыми правами, не прося пароль.

1
ответ дан 3 November 2019 в 04:47

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

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