仅针对某些特定命令在 /etc/sudoers 中添加 NOPASSWD

仅针对某些特定命令在 /etc/sudoers 中添加 NOPASSWD

在没有密码的情况下使用超越密码是否有风险?

它是一台家用计算机,没有其他用户使用它,我只使用安装 Ubuntu 时默认创建的单个用户。

我想不必为这些命令写入 sudo 密码:

echo 100 > /sys/class/backlight/intel_backlight/brightness

ethtool -s eth0 autoneg off speed 100 duplex full

dhclient eth0

apt-get update && upgrade && dist-upgrade -y

apt-get autoremove && remove && clean && autoclean -y

谢谢。

答案:这些步骤似乎解决了这个问题:

sudo su

创建/usr/local/bin/scriptname并在其中写入超出行:

#!/bin/bash

command in here without sudo

# the end of the script's name

_

Create /etc/sudoers.d/scriptname and write the following lines in it:

User_Alias scriptname=username
Cmnd_Alias scriptabreviaton=/home/globalisation/r
scriptname ALL=NOPASSWD: scriptabreviaton

/etc/sudoers在接下来的两行末尾添加:

username ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/scriptname

_

chown root:root /etc/sudoers.d/scriptname
chown root:root /usr/local/bin/scriptname
chmod 0700 /usr/local/bin/scriptname
chmod 0440 /etc/sudoers.d/scriptname

_

来自常规用户名:

sudo /usr/local/bin/scriptname

它不应该再要求输入 sudo 密码。

当写成“scriptname”、“usernme”、“scriptabreviaton”时,它们中的每一个都应该是相同的。

答案1

如果您只需要这些确切的命令,您可以为每种情况创建一个脚本,/usr/local/sbin并将这些脚本添加到您的 sudoers 文件中,例如:

you ALL=(ALL:ALL) ALL
you ALL=(ALL:ALL) NOPASSWD: /usr/local/sbin/backlight.sh
you ALL=(ALL:ALL) NOPASSWD: /usr/local/sbin/upgrade.sh

不要忘记将chown您的脚本root并通过以下方式删除所有不必要的模式chmod

chown root:root /usr/local/sbin/backlight.sh
chmod go-rwx /usr/local/sbin/backlight.sh

相关内容