Red*_*ddy 6 bash password su sudo
我想用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
。)
我同意 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)