Bha*_*wan 396 command-line root sudo password
受到这个问题的启发......
我是唯一一个在 12.04 上使用我的系统的人。
每次我发出sudo命令;系统要求输入用户密码(这有其自身的好处)。
然而我在想;无需激活root账户;如何执行不会要求用户密码进行身份验证的 sudo 命令。
注意:我想在不通过密码进行身份验证的情况下执行 sudo 命令;只有当它们通过终端执行时。
我不想从其他功能中删除这一额外的安全层,例如在使用“Ubuntu 软件中心”或通过将 something.sh 文件拖放到终端来执行 bash 脚本时。
Oct*_*ves 712
您可以配置sudo为从不询问您的密码。
打开终端窗口并输入:
sudo visudo
Run Code Online (Sandbox Code Playgroud)
在文件底部,添加以下行:
$USER ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
$USER您系统上的用户名在哪里。保存并关闭 sudoers 文件(如果您没有更改默认的终端编辑器(如果您更改了,您会知道),按Ctl + x退出nano,它会提示您保存)。
从 Ubuntu 19.04 开始,文件现在应该看起来像
sudo visudo
Run Code Online (Sandbox Code Playgroud)
在此之后,您可以sudo <whatever you want>在终端窗口中键入而不会提示您输入密码。
这仅适用sudo于在终端中使用命令。如果您(例如)尝试从软件中心安装软件包,系统仍会提示您输入密码

Bru*_*ira 92
sudo -i 如果您不想在系统(或其他系统)中进行修改时每 10 分钟输入一次密码,并且您不想修改任何系统文件,那么这是一种可行的方法。
它会使用您的sudo用户密码将您切换到 root ,当您关闭控制台或键入时,exit您将返回到您的普通用户。
use*_*671 48
授予个人(或组)权限的首选方法是在 /etc/sudoers.d
这将本地更改与默认策略分开,并在分发 sudoers 文件更改时节省时间。
要使当前登录的用户成为 sudoer 并且sudo不提示他们输入密码,请使用
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为/etc/sudoers.d/$USER(其中$USER是您运行该命令时登录的用户的用户名)的文件,明确哪些用户被授予权限。
如果你想为不同的用户这样做,只需$USER在上面的命令中用其他用户名替换两个实例。
echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser
Run Code Online (Sandbox Code Playgroud)
同样,一个文件可用于管理多个指令:
echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local
Run Code Online (Sandbox Code Playgroud)
查看/etc/sudoers.d/README和man sudoers了解更多信息。
小智 46
根 sudo 超时是执行此操作的最简单和最安全的方法。我将列出所有示例,但请注意,您这样做的任何方式都非常危险,尽管这种方式更安全:
sudo visudo
Run Code Online (Sandbox Code Playgroud)
这将打开一个编辑器并将其指向 sudoers 文件——Ubuntu 默认为 nano,其他系统使用 Vi。您现在是编辑系统上最重要文件之一的超级用户。无压力!
(使用(vi!)标注的 Vi 特定说明。如果您使用的是 nano,请忽略这些说明。)
使用箭头键移动到Defaults行尾。
(vi!)按 A(大写“a”)键移动到当前行的末尾并进入编辑模式(附加在行的最后一个字符之后)。
现在输入:
,timestamp_timeout=X
Run Code Online (Sandbox Code Playgroud)
其中 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
Run Code Online (Sandbox Code Playgroud)
使用以下方法重置超时值:
sudo -k
Run Code Online (Sandbox Code Playgroud)
这些说明是为了在使用 sudo 命令时删除输入密码的提示。sudo 命令仍然需要用于 root 访问。
打开终端窗口。输入sudo visudo. 将以下行添加到文件的 END(如果不是在最后,它可以被后面的条目取消):
<username> ALL=NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
替换<username>为您的用户名(不带<>)。这是假设 Ubuntu 已经创建了一个与您的用户名同名的组,这是典型的。您可以交替使用组用户或您所在的任何其他此类组。只需确保您在该组中。这可以通过转到系统 -> 管理 -> 用户和组来检查。
例子:
michael ALL=NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
输入 ^X ( Ctrl+ X) 退出。这应该会提示选择保存文件,输入 Y 进行保存。
注销,然后重新登录。现在应该允许您运行 sudo 命令而不会提示您输入密码。
启用根帐户
很少需要启用 root 帐户。作为 Ubuntu 系统的管理员,您需要做的几乎所有事情都可以通过 sudo 或 gksudo 完成。如果您确实需要持久的 root 登录,最好的替代方法是使用以下命令模拟 Root 登录 shell:
sudo -i
Run Code Online (Sandbox Code Playgroud)
但是,如果您必须启用 root 登录,您可以这样做:
sudo passwd root
Run Code Online (Sandbox Code Playgroud)
重新禁用您的根帐户
如果由于某种原因您启用了 root 帐户并希望再次禁用它,请在终端中使用以下命令:
sudo passwd -dl root
Run Code Online (Sandbox Code Playgroud)
全系统组 sudo
root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Run Code Online (Sandbox Code Playgroud)
注销,然后重新登录。
重置 sudo 超时
您可以通过运行以下命令确保 sudo 下次要求输入密码:
sudo -k
Run Code Online (Sandbox Code Playgroud)
当然不推荐你想做的事情。一段时间后,虽然进入sudo变得如此自动化,以至于它的用处减少了。
另一种方法是保留您的 sudoers 文件原样,并在对数百台服务器做一些复杂的事情时,输入sudo bash. 这将为您提供一个 shell,在您退出它之前,它将以 root 身份进行身份验证。
小智 7
不错的单行删除当前用户的 sudo 提示
sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
Run Code Online (Sandbox Code Playgroud)
这是一种单行解决方案,它也更改文件权限,如中所述/etc/sudoers.d/README:
sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' && sudo chmod 440 /etc/sudoers.d/$(logname)
Run Code Online (Sandbox Code Playgroud)
来自超级用户的回答很好:
使用 -S 开关从 STDIN 读取密码:
echo <password> | sudo -S <command>
Run Code Online (Sandbox Code Playgroud)
替换<password>为您的密码。
| 归档时间: |
|
| 查看次数: |
747496 次 |
| 最近记录: |