慎終如始,則無敗事

道學無止境,誠然心地行,超然於物外,絕待不歸真。

  • 博客访问: 5236611
  • 博文数量: 566
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-19 21:50
个人简介

高山仰止http://my.csdn.net/wzy0623王工的博客 参加炼数成金培训输入 Dataguru培训优惠码 DR50,报名立减50%固定学费。 http://edu.dataguru.cn/

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(566)

文章存档

2017年(38)

2016年(104)

2015年(144)

2014年(220)

2013年(60)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: Linux

缘起
我有一个备份的Shell脚本,传入用户名,密码,然后脚本开始备份数据库.

模拟备份的脚本
[lihuilin@lihuilin ~]$ cat backup.sh
#!/bin/bash
echo pwd:$1
sleep 1m

执行脚本
[lihuilin@lihuilin ~]$ ./backup.sh password
pwd:password

但是其他用户使用ps命令,可以直接看到我的密码

[lihuilin@lihuilin ~]$ ps -ef | grep backup
lihuilin  3163  2997  0 21:44 pts/1    00:00:00 /bin/bash ./backup.sh password
lihuilin  3183  3168  0 21:44 pts/2    00:00:00 grep backup
[lihuilin@lihuilin ~]$

这太崩溃了.有两种方式可以避免这种情况
1.按照如下内容修改脚本
[lihuilin@lihuilin ~]$ cat backup.sh
#!/bin/bash
read pwd
echo pwd:${pwd}
sleep 1m

然后使用如下调用方式
[lihuilin@lihuilin ~]$ ./backup.sh < password
EOF

这时,在ps命令中就已经看不到敏感信息了
[lihuilin@lihuilin ~]$ ps -ef | grep backup
lihuilin  3212  2946  0 21:50 pts/0    00:00:00 /bin/bash ./backup.sh
lihuilin  3215  2997  0 21:50 pts/1    00:00:00 grep backup

但是在/proc/pid/fd/下,仍然记录了该参数的值
[lihuilin@lihuilin ~]$ ps -ef | grep backup
lihuilin  3212  2946  0 21:50 pts/0    00:00:00 /bin/bash ./backup.sh
lihuilin  3218  2997  0 21:51 pts/1    00:00:00 grep backup
[lihuilin@lihuilin ~]$ cd /proc/3212/fd
[lihuilin@lihuilin fd]$ cat 0
password
[lihuilin@lihuilin fd]$

2.使用另外一种调用方式
脚本如下,内容同第一种修改方式
[lihuilin@lihuilin ~]$ cat backup.sh
#!/bin/bash
read pwd
echo pwd:${pwd}
sleep 1m

调用方式
[lihuilin@lihuilin ~]$ echo 'password' | ./backup.sh
pwd:password

在另外一个用户,无论是ps命令,还是查看/proc信息,都不能看到敏感信息了


显然,第二种方式比第一种方式更加安全.


阅读(7023) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

ipeter2015-04-27 15:16:52

ps auxfww | grep backup -a2
应该还是有,进程里有个echo的。

评论热议
请登录后评论。

登录 注册