当前位置: 首页>>技术教程>>正文


无密码执行sudo?

, , , ,

问题描述

受此question …启发….

我是12.04使用我系统的唯一人员。每次我发出一个sudo命令;系统要求输入用户密码(这是很好的方式)。但我在想,无需激活root帐户;我怎样才能执行不会要求用户密码进行验证的sudo命令。

注意:我想要执行sudo命令而不通过密码进行身份验证;只有当他们通过终端执行时。我不想从使用“Ubuntu软件中心”的其他​​功能中删除额外的安全层,或者通过drag-drop something.sh文件执行bash脚本到终端。

最佳解决思路

如果您不希望在系统(或其他系统)中进行修改时每10分钟输入一次密码,并且您不想修改任何系统文件,那么sudo -i就是要走的路。

它会使用sudo用户密码将您切换到root用户,当您关闭控制台或键入exit时,您将恢复为普通用户。

次佳解决思路

解决你的问题的方法是把你的用户放在sudoers文件中,就像你看到的那样。

打开终端窗口并键入:

sudo visudo

在文件底部,输入以下内容:

username ALL=(ALL) NOPASSWD: ALL

其中用户名是您系统中的用户名。保存并关闭sudoers文件(如果你还没有改变你的默认终端编辑器(你会知道你是否有)),按ctl + x退出nano(但注意下面的屏幕截图显示的是vim),它会提示你保存)。

]

command-line,password,sudo,root,ubuntu

在此之后,您可以在终端窗口中键入sudo <Whatever you want>,而不会提示您输入密码。

这仅适用于终端窗口中的sudo命令。例如,当您尝试在软件中心安装软件包时,系统会提示您插入密码,如您在下一个屏幕截图中所看到的。

command-line,password,sudo,root,ubuntu

我认为这是你想要的。

第三种解决思路

根sudo超时是最简单和最安全的方式。我会列举所有的例子,但是要警告说,尽管这样做更安全,但这样做非常危险:

sudo visudo

这将打开一个编辑器并将其指向sudoers文件 – Ubuntu默认为nano,其他系统使用Vi。您现在是一位超级用户,正在编辑系统中最重要的文件之一。无压力!

(vi(vi!)记录的特定指令,如果您使用nano,请忽略这些指令。)

使用箭头键移动到Defaults行的末尾。

(vi!)按A(大写”a”)键在当前行的末尾移动并进入编辑模式(追加在行的最后一个字符后面)。

现在输入:

,timestamp_timeout=X

其中X是以分钟为单位的超时到期时间。如果你指定0,你总会被问到密码。如果您指定负值,则超时将永不过期。例如。 Defaults env_reset,timestamp_timeout=5

(vi!)点击Escape返回命令模式。现在,如果您对编辑感到满意,请输入:w Enter以写入文件,并输入:q Enter以退出vi。如果你犯了一个错误,也许最简单的方法是从开始重做,退出而不保存(打Escape进入命令模式),然后键入:q! Enter

点击Ctrl + X,然后点击Y,然后点击Enter保存您的文件并退出nano。

您可能需要阅读sudoers和vi手册页以获取更多信息。

man sudoers
man vi

重置超时值使用:

sudo -k

这些说明将在使用sudo命令时删除提示输入密码。尽管如此,sudo命令仍然需要用于root访问。

编辑sudoers文件

打开一个终端窗口。输入sudo visudo。将以下行添加到文件的END(如果不是最后它可以被更新条目取消):

<username> ALL=NOPASSWD: ALL

用您的用户名替换<username>(不含<>)。这是假设Ubuntu已经创建了一个名称与您的用户名相同的组,这是典型的。您可以交替使用小组用户或您所在的任何其他此类小组。只要确保您在该小组中。这可以通过进入系统 – >来检查。管理 – >用户和组。

例:

michael ALL=NOPASSWD: ALL

键入^ X(Ctrl + X)退出。这应该提示保存文件的选项,键入Y保存。

注销,然后重新登录。现在应该允许您运行sudo命令而不提示输入密码。

根帐户

启用root帐户

很少需要启用root帐户。几乎所有你需要做的Ubuntu系统管理员都可以通过sudo或gksudo完成。如果您确实需要持久的root登录,最好的选择是使用以下命令来模拟Root登录shell:

sudo -i

但是,如果您必须启用root登录,则可以这样做:

sudo passwd root

Re-disabling您的根帐户

如果由于某种原因,您启用了您的root帐户并希望再次禁用它,请在终端中使用以下命令:

sudo passwd -dl root

System-wide组sudo

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

注销,然后返回。

重置sudo超时

您可以确保sudo在下次运行时要求输入密码:

sudo -k

第四种思路

授予个人(或组)权限的首选方法是在/etc/sudoers.d下添加文件

这将分离本地更改与默认策略,并节省时间以防发行者文件更改。

例如:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

将非常清楚哪些用户被授予权限。

同样,可以使用一个文件来管理多个指令:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

有关更多信息,请参阅/etc/sudoers.d/README

第五种思路

当然不建议你想要做什么。过了一段时间,虽然进入sudo变得如此自动化,以至于它的用处减少了。

另一种方法是让你的sudoers文件保持原样,并在你的数百台服务器上执行一些复杂的操作时,输入sudo bash。这将给你一个shell,它将被认证为root,直到你退出它。

第六种思路

Nice one-liner为当前用户移除sudo提示

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/197.html,未经允许,请勿转载。