硬编码密码与使用“cat”从文件中检索

硬编码密码与使用“cat”从文件中检索

我正在使用 Zentyal(以前称为 EBox)作为我的家庭网关/服务器,以评估它在本地组织中的使用可能性。我想更改根 MySQL 密码,我这样做了,并错误地更改了 Zentyal 文件夹中的密码/var/lib/zentyal/conf以匹配它。所以我将 Zentyal 密码改回原来的密码,但问题是,当我使用它编辑该文件时,nano一定添加了换行符或其他东西,因为现在检索密码的 Perl 脚本(用于cat从文件中检索密码)导致 MySQL 访问被拒绝错误。然而,当我在 Perl db connect 函数中对密码进行硬编码时,它运行得很好。

我尝试nano -L编辑该文件,并尝试echo >将密码输出到该文件,但都没有成功。当 Perl 脚本执行cat获取密码的操作时,是什么导致了问题?

答案1

为什么不直接使用 perl 的本机 i/o 功能来读取文件?

open FH, "/path/to/password.txt";
chomp(my $passwd = <FH>);

这里chomp丢弃字符串末尾的换行符。

当 Perl 脚本执行 cat 来获取密码时,是什么导致了问题?

您是否尝试过打印出从文件中读取的密码?例如:

print ":", $passwd, ":\n";

冒号的存在是为了让您能够发现任何多余的空格(换行符等)。您还可以使用xxd(如果vim您的系统上安装了,您将拥有它)或od -a查看文件中的所有字节。例如,给定一个包含“ ”的文件secret\nod -a将显示:

$ od -a file
0000000   s   e   c   r   e   t  nl
0000007

我尝试使用 nano -L 来编辑文件,并使用 echo > 为文件添加密码,

我不知道nano,但echo会在输出末尾添加一个换行符。如果你不想这样:

echo -n password > file

抑制-n尾随的换行符。

相关内容