/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
を変更することですが、そのファイルを構成するのに十分な問題がありました。
_/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-types のmacaddress
構成キーのドキュメントもご覧ください
パスワードなしのSudo
を使用して、すべてのユーザーがこれらのコマンドをrootとしてスクリプトを実行できるようにすることができます。これらの手順を正しく実行するようにしてください。そうしないと、Sudo
コマンドが破損したり、権限昇格の脆弱性が発生する可能性があります。
/usr/local/bin/mac-change.sh
_)。このスクリプトを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
_の新しいスクリプトとして含めることができます。