如何创建脚本并使用 NOPASSWD 将其添加到 /etc/sudoers

如何创建脚本并使用 NOPASSWD 将其添加到 /etc/sudoers

这是一台家用电脑,没有其他用户使用它。

有人可以帮忙为以下每个命令创建脚本吗:

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

ethtool -s eth0 autoneg off speed 100 duplex full

dhclient eth0

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

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

添加每个脚本

/etc/sudoers

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

因此,使用这些命令时不再需要 sudo 密码。

或者,如果您有其他更直接、更简单、更快捷、更简约的方式来实现请求。

答案1

sudo 功能的起源是为选定的普通用户创建和限制 root 权限。此外,还创建记录的审计跟踪,以防有人使用 root 访问权限破坏某些东西。在此之前,许多用户和管理员会以 root 身份登录,并在 root 特权 shell 中完成所有工作,无论他们是否需要这些功能。登录服务器并看到来自许多不同终端的数十个 root 登录并不罕见。显然,这导致了混乱。

我认为您所提议的唯一主要风险是,如果有人入侵您的帐户,他们将拥有更多对 root 拥有的文件和命令的访问权限。如果您禁用 telnet 并安全锁定 ssh,则这些风险将被最小化。作为几十年的系统管理员,我总是建议不要绕过安全模型,但在访问受限的家庭环境中,您想要做的事情可能相对安全。

话虽如此,如果您不熟悉编写脚本或编程,那么编写脚本以绕过 sudo 安全性作为第一次脚本编写工作可能并不明智。除非您以非常巧妙的方式编写脚本,否则有人很可能会发现您的密码和/或利用您的脚本做坏事。

实现目标的最简单但并非最明智的方法是以 root 身份登录。这将有效绕过该 shell 中的 sudo。

须藤苏

输入你的密码

您的提示将从 $ 更改为 #

我是谁

验证你确实是 root

我只会将此 shell 用于需要 root 访问权限的命令。不要将其用于日常普通用户操作。您最终会意外损坏某些东西。所有经验丰富的系统管理员都曾有过这样的经历。

答案2

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

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=/usr/local/bin/scriptname
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”时,每个字都应该相同。

相关内容