如何给特定命令授予权限?

Sil*_*tor 0 permissions command-line sudo

我想在fastboot没有sudo. sudo如果我放在它前面,它就可以工作,否则就不会。

像这样:

$ sudo fastboot devices
2738006a    fastboot

$ fastboot devices
no permissions  fastboot
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Rav*_*ina 5

使用 sudoers 文件

正确的方法是在文件中添加一行,/etc/sudoers类似于:

username     ALL = NOPASSWD: /bin/path/to/fastboot
Run Code Online (Sandbox Code Playgroud)

这意味着这个特定的“用户名”无需提供任何密码即可运行fastboot命令。sudoanyone

现在,当您使用它运行sudo fastboot它时,它不会要求您输入密码,并且使用速度会更快一些。

然后只需添加一个简单的别名到您的.bashrc

alias fastboot='sudo fastboot'
Run Code Online (Sandbox Code Playgroud)

使用 SUID 位

我强烈推荐上述解决方案而不是这个;

如果您的fastboot程序是二进制文件,您可以执行以下操作:

sudo chown root:$(id -gn) /path/to/fastboot
sudo chmod 4750 /path/to/fastboot
Run Code Online (Sandbox Code Playgroud)

首先,我们确保它root是该文件的所有者,并且它属于您的主要组,然后我们使所有者和组可以运行该文件,同时添加 SUID 位 (4),这意味着文件将以所有者的权利(根)。

现在它应该可以在没有 sudo 的情况下工作,但是只有 root 才能运行它。