在 /etc/sudoers 中为某些特定命令添加 NOPASSWD

XPD*_*DIN 6 ubuntu sudo

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

这是一台家用电脑,没有其他用户使用它,我只使用安装 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
Run Code Online (Sandbox Code Playgroud)

谢谢你。

回答: 看来这些步骤解决了这个案例:

sudo su
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash

command in here without sudo

# the end of the script's name
Run Code Online (Sandbox Code Playgroud)

_

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
Run Code Online (Sandbox Code Playgroud)

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

username ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/scriptname
Run Code Online (Sandbox Code Playgroud)

_

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
Run Code Online (Sandbox Code Playgroud)

_

从常规用户名:

sudo /usr/local/bin/scriptname
Run Code Online (Sandbox Code Playgroud)

它不应该再要求 sudo 密码。

到处写“scriptname”,“usernme”,“scriptabreviaton”时,它们中的每一个都应该相同。

Gáb*_*éja 7

如果您只需要这些确切的命令,您可以为每个案例创建一个脚本/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
Run Code Online (Sandbox Code Playgroud)

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

chown root:root /usr/local/sbin/backlight.sh
chmod go-rwx /usr/local/sbin/backlight.sh
Run Code Online (Sandbox Code Playgroud)