有谁知道什么是保护bash脚本的最佳方法。 我有一个脚本,创build数据库和源代码备份,并将其ftp到其他服务器。 目标ftp的login名/密码是纯文本。 我需要以某种方式encryption或隐藏网站黑客的情况下。 或者我应该创build脚本写在C创buildbash文件然后运行它并删除? 谢谢。
谢谢你的回答,我很抱歉,我还不够清楚。 我想在以下几个方面澄清我的问题。
谢谢
当他们必须以纯文本forms供使用时,您不能“保护”证书。 混淆和编码(或“encryption”,如果你想使用这个术语),除了安全性(这实际上并不安全),它们不是什么东西,而且可以说比什么都没有,因为它可以给你一个虚假的安全感)。
你最好重新考虑一下你的策略,从一个曝光不足的机器上执行某种“拉”数据,而不是试图“隐藏”证书。
(另见:信用卡欺诈,ACH诈骗,身份“盗窃”,以及其他愚蠢的现实世界中的安全性模糊不清的例子,这些例子并不是特别有效。必须公开分享的“秘密”并不是秘密的,根据定义。)
我用下面的方法来保护bash脚本中的密码。 如果你想保持隐藏的话,同样的方法也可以用于用户名。 这种方法不是encryption,而是假定正确设置了文件的权限,这将使普通系统用户看不到你想要隐藏的细节。 如果你的系统被黑客入侵,那么这个方法就不会有太多的工作,因为他们可能在那个时候有root权限。
在脚本的顶部设置一个variables,看起来像这样。
MY_PASS=`cat /path/securepasswordfile`
创build一个只有密码的文本文件,然后用文件权限保护它,这样只有运行该脚本的帐户才能读取这个文件。
然后在你的脚本中访问这个只是使用下面的东西。
$MYSQL_DUMP -A --host=$SERVER -u root -p$MY_PASS > $BACKUP_DIR/database/backup.sql
以上引用3d影响:
$ MYSQL_DUMP -A –host = $ SERVER -u root -p $ MY_PASS> $ BACKUP_DIR / database / backup.sql
请注意,在某些发行版中,这将导致密码显示在“ps”的输出中。
不pipe你尝试什么,你都不能做你想做的事情,因为你正在努力去做。 如果你仔细想想,不pipe你怎么努力encryption数据,最终所有的数据都是可用的。
也许更好的select是让远程端SSH并运行这些命令? 这就是我们在工作中所做的 – 一台非常安全的机器ssh进入客户端并备份。 备份机器本身不允许远程SSH等
顺便说一句,如果您使用的是FTP,您的密码已经以明文forms传输了。