没有密码执行sudo?

灵感来自这个问题 ……

我是使用12.04系统的唯一人。
每次我发出sudo命令; 系统要求输入用户密码(以自己的方式很好)。
不过我在想; 没有激活root帐户; 如何执行不会要求用户密码进行身份validation的sudo命令。

注意:我想执行sudo命令而不通过密码进行身份validation; 只有当它们通过终端执行时。
我不想从其他function中删除这些额外的安全层,例如使用“Ubuntu软件中心”或通过拖放something.sh文件到终端执行bash脚本。

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

它将使用您的sudo用户密码将您切换到root,当您关闭控制台或键入exit您将返回普通用户。

解决问题的方法是将用户置于sudoers文件中,就像你看到的那样。

打开终端窗口并输入:

 sudo visudo 

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

 $USER ALL=(ALL) NOPASSWD: ALL 

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

sudoers文件 ]

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

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

gui密码提示

我想这就是你想要的。

root 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 输入以编写文件,然后:q 输入以退出vi。 如果你犯了一个错误,也许最简单的方法是从开始重做,退出而不保存(点击Escape进入命令模式),然后输入:q! 输入

按Ctrl + X ,然后按Y ,然后按Enter保存文件并退出nano。

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

 man sudoers man vi 

重置超时值使用:

 sudo -k 

这些说明是在使用sudo命令时删除密码提示。 但是仍然需要使用sudo命令进行root访问。

编辑sudoers文件

打开终端窗口。 输入sudo visudo 。 将以下行添加到文件的END(如果不是最后,则可以通过以后的条目使其无效):

  ALL=NOPASSWD: ALL 

替换为您的用户名(不带<> )。 这假设Ubuntu创建了一个与您的用户名同名的组,这是典型的。 您可以替代使用组用户或您所在的任何其他此类组。只需确保您在该组中。 可以通过转至系统 – >管理 – >用户和组来检查。

例:

 michael ALL=NOPASSWD: ALL 

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

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

root帐户

启用root帐户

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

 sudo -i 

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

 sudo passwd root 

重新禁用root帐户

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

 sudo passwd -dl root 

全系统组sudo

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

注销,然后重新登录。

重置sudo超时

您可以通过运行以下命令确保sudo下次要求输入密码:

 sudo -k 

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

这会将本地更改与默认策略分开,并在分发sudoers文件更改时节省时间。

例如:

 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提示当前用户

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

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

另一种方法是将你的sudoers文件保留原样,并在为你的一百个服务器做一些复杂的事情时,输入sudo bash 。 这将为您提供一个shell,在您退出之前将以root身份进行身份validation。

来自超级用户来了一个很好的答案:

使用-S开关从STDIN读取密码:

 echo  | sudo -S  

替换