没有密码执行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
),它会提示你保存)。
]
在此之后,您可以在终端窗口中键入sudo
,而不会提示输入密码。
这仅适用于终端窗口中的sudo
命令。 例如,当您尝试在软件中心安装软件包时,系统将提示您输入密码,就像您在下一个屏幕截图中看到的那样。
我想这就是你想要的。
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
用
替换
。