我的脚本/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 身份运行。这些脚本应该由在您的用户下运行的登录 shell 提供。但是,正如您所提到的,您的脚本方法不是更改 MAC 地址的好方法。我将描述一个可能的解决方案,以使脚本最终正常工作。
Ubuntu 从 17.10 开始使用
netplan
配置网络,忽略/etc/network/interfaces
旧的ifupdown
. 而是配置了 Netplan/etc/netplpan/01-netcfg.yaml
。对于具有覆盖 MAC 地址的接口,其内容可能如下所示:另请参阅https://netplan.io/reference#common-properties-for-all-device-types
macaddress
中的配置密钥文档您可以允许每个人使用无密码以 root 身份运行带有这些命令的脚本
sudo
- 确保正确执行这些步骤,否则您可能会遇到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
)编辑您的 sudoers 文件,让每个人都可以在没有密码的情况下以 root 身份运行该单个脚本,方法是键入
sudo visudo
以打开 sudoers 编辑器并在文件底部附近添加以下行:现在每个人都应该能够运行
sudo mac-change.sh
或sudo /usr/local/bin/mac-change.sh
无需输入密码。然后,您可以将其作为一行/etc/profile
或/etc/profile.d
.