如何使用su
命令切换用户并从文件添加密码?我想制作一个脚本,它会自动切换用户,拥有用户和密码,而不是手动输入密码? PS我没有超级用户权限。
答案1
最好的选择是使用 Sudo rules
在文本文件中使用安全密码是十大错误做法之一。但如果你想使用,你必须记住 parwd 不是从 stdin 读取的,而是从 ftom tty 读取的,所以你可以使用expect
(*1) 但这仍然是错误的方式。更好的选择是使用 sudo 或 sshkey 您可以使用本地主机地址的公钥登录 ssh 帐户。
不要尝试 su - username <<< password
或者
su username << - _EOF_
you_password
whoami
_EOF_
这只能在另一个 shell 中运行命令并给出输出。
*1https://stackoverflow.com/questions/29174337/trouble-logging-in-user-using-su-and-expect-script
答案2
通常,诸如此类的程序su
要求在终端上输入密码并且无法绕过。用户root
无需输入密码即可切换到另一个密码,因此常见类似sudo su user
.
然而我们也许可以作弊。如果您expect
的系统上有该命令,那么我们可以伪造的输入密码
#!/usr/bin/expect -f
set user [lindex $argv 0]
set password [lindex $argv 1]
spawn /bin/su $user
expect "Password:"
send "$password\r";
interact
通过这个程序你可以做
./autosu username password
例如
% autosu root imnottellingyou
spawn su root
Password:
[root@server /]#
不过,这样做通常不是一个好主意,因为当您在命令行上键入密码时,密码将出现在您的 shell 历史记录中。但如果您在脚本或数据文件中拥有密码,那么这并不重要!您应该能够修改这个简单的示例来满足您的需求。
如果你还没有expect
安装,那就更难了;请您的管理员安装它,或者从源代码编译它并从您的目录运行它!