Sudo Su 自动登录

Red*_*ddy 6 bash password su sudo

我想用sudo su. 我已经看到很多关于这些的问题,但没有一个对我有用。

使用 sudo 和 su 自动登录

这是我到目前为止所尝试的

echo "mypassword" | sudo -S su - user
echo "mypassword\n" | sudo -S su - user
echo mypassword | sudo -S su - user
echo "mypassword" | sudo -S su user
echo mypassword | sudo -S su user
Run Code Online (Sandbox Code Playgroud)

我刚刚收到以下回复

-bash: line 1: mypassword: command not found
Run Code Online (Sandbox Code Playgroud)

我的 Bash 版本

GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu) 
Copyright (C) 2009 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

请注意,我的密码包含特殊字符 @

@ sudo
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...
Run Code Online (Sandbox Code Playgroud)

Val*_*das 12

不要那样做!这会将您的密码留在您的 shell 历史记录中!

如果您真的必须这样做,我建议您将sudoers文件配置为允许无密码登录。

为此,请运行该命令sudo visudo并添加如下一行:

reddy ALL=NOPASSWD: /bin/su - *
Run Code Online (Sandbox Code Playgroud)

reddy你的用户名在哪里)。

如果您需要向整个团队授予此访问权限,请为团队创建一个 (UNIX) 组,并替换reddy%team(团队组)。

(另外,有点跑题:echo命令已经添加了\n你需要的。如果你真的想要相反的东西(你不想要),命令就是echo -n。)


Jen*_*y D 7

我同意 Valmiky 的观点,你的做法是错误的,但是 sudoers 行并不是我推荐的。有了他的线路,您都有权在没有密码的情况下向其他任何人(包括 root 用户)执行 sudo 操作。这有效地使您可以完全访问服务器,这意味着/bin/su线路的一部分是多余的。

如果您只能在不提供密码的情况下对该特定用户执行 sudo,则正确的行应该是

%team ALL = (user) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

现在你可以在不提供密码的情况下以该用户身份运行任何东西,而例如任何需要你 sudo 到 root 的东西仍然需要密码。

你现在可以在你的 .bashrc 中做

 sudo -u user /bin/bash
Run Code Online (Sandbox Code Playgroud)