在Shell脚本中运行sudo

时间:2019-09-28 15:41:45

标签: bash ubuntu

我只是创建一个小的脚本来更改mac地址。每次我运行它时,我都必须输入sudo密码。如何允许脚本输入密码或跳过sudo验证? 或者还有另一种方法来创建此脚本?也许使用python? 这是我的脚本:

#!/bin/bash
nmcli radio wifi off
sudo macchanger wlp6s0 -a
nmcli radio wifi on

2 个答案:

答案 0 :(得分:0)

您要做的是修改sudoers文件,以使运行脚本的用户无需输入密码即可访问特定命令。

有关更多信息,请参见以下答案:https://askubuntu.com/questions/334318/sudoers-file-enable-nopasswd-for-user-all-commands

简而言之,请致电visudo并添加以下条目:

your_user ALL=(ALL) NOPASSWD:/path/to/the/binary/macchanger wlp6s0 -a

当然,将/path/to/the/binary/macchanger与通过运行which macchanger找到的真实路径交换。

现在,用户your_user可以通过sudo使用带有确切参数的单个命令运行而无需密码。

而且,正如Cyrus所指出的,man是您的朋友。最好先始终检查手册页。通常,您会通过阅读并尝试一些想法来找到问题的答案。在这种情况下:man visudoman sudo.conf

答案 1 :(得分:0)

与其一起玩sudo并冒着扎根的风险 您可以设置访问可能不负责任的程序 cap_net_admin在二进制文件上:

sudo setcap cap_net_admin+ep "$(command -v macchanger)"

这只是一次操作。现在,您可以从自己的帐户中删除sudo 脚本,它将起作用。

  

也许使用python吗?

不,那无济于事。语言无关紧要。是内核 允许或禁止执行某些操作。