日期:2014-05-16 浏览次数:20853 次
???? 项目环境:客户那在一台windows 2008上部署应用服务(Java实现),在Linux上部署JBIZ中间交易业务平台服务(C实现)。
??
??? 出现问题:Linux下复制文件失败
??? 先说一下问题由来,因为该项目牵扯与银行进行交互,为了保证资金数据的安全可靠性,每天业务系统的数据都要和银行传过来的数据进行比对(该过程完全由程序实现),在以前测试环境中也出现很多次,比对数据失败。查其原因都是银行的数据要么金额不对要么格式有问题。格式有问题包括没严格按照约定的数据格式、或者存在多余的换行符。
??? 在测试库上都搞定之后,按理来说正式库就会没有问题了。谁承想还是有问题,一开始我还思维定式的说银行的数据格式有问题,让他们严格按照约定来。但是还是有问题。之后我就排查原因。我仔细查看日志,并没有发现银行数据的问题,就是在移动文件的时候出问题(比对完数据之后,需要将文件移动到其它地方)。为了更加确认的缩小问题,我拿着数据在公司的环境进行了一下测试,没问题。
??? 然后我就仔细查看客户机器的测试环境和正式环境的文件权限,我发现xxxx和xxxxtest都是dba组,用xxxx登录时,我看到backup(数据比对完之后要移动的地方)文件夹显示:drwxr-xr-x? 2 xxxxtest dba 4096? X月 XX XX:XX backup。虽然xxxx和xxxxtest都是dba组用户,但是只有执行和读的权限,看到这我明白了,果真是权限的问题。之后我将该文件件直接删掉,然后重新建。显示:drwxr-xr-x? 2 xxxx dba 4096? X月 XX XX:XX backup。重新发起比对数据的交易,数据比对成功。
注:Linux 文件权限符号
身份:u - 所有者(该文件的所属者);g - 所有者所在的族群;o - 其他人(不是所有者或所有者的族群);a - 每个人或全部。
权限:r - 读取权;w - 写入权;x - 执行权。
行动:+(添加权限);-(删除权限);=(唯一权限)。
每种权限都可以用一个数值来代表:r=4,w=2,x=1,-=0。
例如:drwx------(700) 只有所有者能在目录中读取、写入。
???? drwxr-xr-x(755) 每个人都能读取目录,但是其中的内容却只能被所有者改变。