2007年6月17日

Linux下使用 sshfs 挂载 HP-UX 时遇到的巨大BUG

我在用sshfs挂载HP-UX时出现了下面的情况,大家分析一下:

本地系统是 OpenSUSE 10.2,具体的sshfs和fuse版本不记得了(未升过级)
远端是 HP-UX B.11.11 U 9000/800

sshfs 挂载 deva@hp-ux 到 biff@linux下

远程主机名hp-ux,用户 deva 的 uid=1234,gid=105
本地是linux系统,用户 biff 的 uid=1000,gid=100

fstab内容如下:
sshfs#deva@hp_ux_server:/ /mnt/src fuse
user,noauto,umask=007,uid=1000,gid=100 0 0

(留意下面 test 文件UID及GID的变化)

操作过程大至如下:

第一步
local:/mnt/src$ touch test ( 产生一个 test 文件 )

因为 /mnt/src 是挂载的 hp-ux 的目录,在 hp-ux 的 /dev/src 下会产生一个 test 文件
本地 ls -l 查看,test 文件是属于 linux 的 biff 用户,uid=1000,gid=100
远程 ls -l 查看,test 文件是属于 hp-ux 的 deva 用户,udi=1234,gid=105 (正常)

第二步
local:/mnt/src$ gzip -9 test ( 应该产生一个 test.gz 文件 )

本地 ls -l 查看,test.gz 文件是属于 linux 的 biff 用户,uid=1000,gid=100
远程 ls -l 查看,test.gz 文件是属于 hp-ux 的 1000 用户,uid=1000,gid=100 (出错了)

通过这两步操作,我们会在HP-UX系统上产生一个别人用户的文件(文件的UID != deva用户的UID)
telnet hp-ux ,用户名 deva
rm /dev/src/test.gz 提示没有权限访问

产个一两个异常文件还可以在本端用rm干掉,最要命的是不知什么时候产生了一个bak目录,
这个bak目录在HP-UX主机上用户名、用户组分别是 100/1000,
不论本地还是telnet到远端都不能进入,也不能删除,但是可以改名(因为所在目录的写权限是正常的)

HP-UX竟然轻易的让 deva 用户产生了一个非 deva 用户的文件,我认为这是HP UNIX系统的BUG

大家怎么看??

没有评论: