在linux服务器上,我使用rlwrap将命令历史赋予sqlplus/rman/etc。我可以看到生成命令历史文件(如.sqlplus_history ),因为这些都是可能包含密码的纯文本文件,例如,如果用户在sqlplus中输入“connect/password”,则无限期保存它们存在安全风险。
有没有一种更简单的方法比某种cron作业定期删除日志呢?
我希望找到某种类型的关键字来触发日志的删除,比如“退出”或“退出”命令被读取,用户离开sqlplus,.sqlplus_history日志被删除。有可能发生这种事吗?
发布于 2015-07-28 11:10:19
rlwrap有许多选项可以将命令行排除在历史记录列表之外(因此也不包括历史文件),尽管并不完全按照您所描述的方式(无论如何,我并不认为这是有用的)。
rlwrap --forget-matching connect sqlplus将不记得任何包含字符串connect的输入行。rlwrap --histsize -3000 )将历史文件视为只读(密码在历史记录中仍然可见,但不会写入文件)。CTRL+O输入一行将使这条特定行不被列入历史记录列表。(此操作可以重新绑定到另一个键,请参阅手册)对于一个非常花哨的密码审查器,可以编写如下过滤器censor_passwords:
#!/usr/bin/env perl
use lib ($ENV{RLWRAP_FILTERDIR} or ".");
use RlwrapFilter;
use strict;
my $filter = new RlwrapFilter;
$filter -> help_text("This filter removes the password from SQL 'identified by' clauses\n");
$filter -> history_handler(sub { s/(identified\s+by\s+)(\S+)/$1 xXxXxXxX/ig; $_});
$filter -> run;。。然后像rlwrap -z censor_passwords sqlplus一样使用它。
任何包含IDENTIFIED BY yd6e7#te6的输入都将被记为IDENTIFIED BY xXxXxXxX。
https://stackoverflow.com/questions/31659680
复制相似问题