使用文件中的密码切换用户

使用文件中的密码切换用户

如何使用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安装,那就更难了;请您的管理员安装它,或者从源代码编译它并从您的目录运行它!

相关内容