web-dev-qa-db-ja.com

/etc/profile.d/script.shをrootとして実行します

/etc/profile.d/script.shに3行を含むスクリプトがあります。

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

ユーザーがログインしたときに、このスクリプトをrootとして実行する必要があります。

ここでは、/etc/profile.d/script.sh内のすべてのスクリプトがrootとして実行されると書かれています。 https://stackoverflow.com/questions/47997365/execute-scripts-in-etc-profile-d-at-startup-as -root

権限がないためにエラーが発生するため、Ubuntu 18.04には当てはまらないと思います。

これらのコマンドが理解できない場合は、MACアドレスを恒久的に変更しようとしています。正しい方法はファイル/etc/network/interfacesを変更することですが、そのファイルを構成するのに十分な問題がありました。

1
Tehryn

_/etc/profile*_スクリプトはrootとして実行されません。これらのスクリプトは、代わりにユーザーの下で実行されているログインシェルによって提供されます。

ただし、先に述べたように、スクリプトによるアプローチはMACアドレスを変更するための良い方法ではありません。とにかくスクリプトを最後に機能させるための可能な解決策について説明します。

Ubuntuは17.10以降、netplanを使用してネットワークを構成します。これにより、古いifupdownで使用されていた_/etc/network/interfaces_ファイルが無視されます。代わりに、ネットプランは_/etc/netplpan/01-netcfg.yaml_で構成されます。オーバーライドされたMACアドレスを持つインターフェースの場合、その内容は次のようになります。

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

https://netplan.io/reference#common-properties-for-all-device-typesmacaddress構成キーのドキュメントもご覧ください


パスワードなしのSudoを使用して、すべてのユーザーがこれらのコマンドをrootとしてスクリプトを実行できるようにすることができます。これらの手順を正しく実行するようにしてください。そうしないと、Sudoコマンドが破損したり、権限昇格の脆弱性が発生する可能性があります。

  • 3つのコマンドを個別のスクリプトファイルに入れます(例:_/usr/local/bin/mac-change.sh_)。このスクリプトをrootとしていつでも安全に実行できることを確認してください。
  • Rootユーザーがそのファイルを所有するようにします(_Sudo chown root: /usr/local/bin/mac-change.sh_)
  • 適切な権限を設定します:全員が実行可能、所有者のみが書き込み可能、​​ルート(_Sudo chmod 755 /usr/local/bin/mac-change.sh_)
  • _Sudo visudo_と入力してsudoersエディターを開き、ファイルの下部近くに次の行を追加して、sudoersファイルを編集して、パスワードなしでrootとしてその単一のスクリプトだけを実行できるようにします。

    _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
Byte Commander