Выполненный/etc/profile.d/script.sh как корень

У меня есть сценарий в /etc/profile.d/script.sh это содержит 3 строки:

ifconfig ens5f5 down
hw ether xx:xx:xx:xx:xx:xx
ifconfig ensf5f

Я должен запустить этот скрипт как корень, когда любой из пользователей входит в систему.

Здесь записан это все сценарии в /etc/profile.d/script.sh выполняются как корень: https://stackoverflow.com/questions/47997365/execute-scripts-in-etc-profile-d-at-startup-as-root

Я полагаю, что это не верно для Ubuntu 18.04, потому что я получаю ошибки должное отсутствие полномочий.

Если Вы не понимаете те команды, я пытаюсь постоянно изменить MAC-адрес. Я знаю, тот корректный путь состоял бы в том, чтобы изменить файл /etc/network/interfaces, но я испытал достаточно затруднений, настраивающих тот файл.

1
задан 7 November 2018 в 13:43

1 ответ

/etc/profile* сценарии не работают как корень. Те сценарии должны быть получены оболочкой входа в систему, работающей при Вашем пользователе вместо этого.

Однако как Вы упомянули, Ваш подход сценария не является хорошим способом изменить MAC-адрес. Я опишу возможное решение заставить сценарий работать в конце так или иначе.

Ubuntu начиная с 17,10 использования netplan настраивать сети, которые игнорируют /etc/network/interfaces файл используется старым ifupdown. Netplan настроен в /etc/netplpan/01-netcfg.yaml вместо этого. Его содержание могло быть похожим на это для интерфейса с переопределенным MAC-адресом:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s25:
      macaddress: 12:34:56:78:AB:CD
      dhcp4: true

Также см. документацию для macaddress ключ конфигурации https://netplan.io/reference#common-properties-for-all-device-types


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

  • Поместите свои три команды в отдельный файл сценария (например. /usr/local/bin/mac-change.sh). Удостоверьтесь, что безопасно запустить этот скрипт как корень в любое время.
  • Сделайте тот файл принадлежавшим полностью пользователь (sudo chown root: /usr/local/bin/mac-change.sh)
  • Установите соответствующие полномочия: исполняемый файл всеми, перезаписываемыми только владельцем, корень (sudo chmod 755 /usr/local/bin/mac-change.sh)
  • Отредактируйте свой sudoers файл, чтобы позволить всем работать просто что единственный сценарий как корень без пароля путем ввода sudo visudo открыть sudoers редактора и добавляющий эту строку ниже близости нижняя часть файла:

    ALL ALL=(root) NOPASSWD: /usr/local/bin/mac-change.sh
    

Теперь все должны смочь работать sudo mac-change.sh или sudo /usr/local/bin/mac-change.sh не имея необходимость вводить их пароль. Можно затем включать это как строку в /etc/profile или новый сценарий в /etc/profile.d.

1
ответ дан 7 December 2019 в 15:11

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

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