现在的位置: 首页 > 综合 > 正文

linux下挂载windows上的共享目录,并设置所有者为非root用户

2017年12月16日 ⁄ 综合 ⁄ 共 1131字 ⁄ 字号 评论关闭

参考了很多文章,这里总结下我得出来的最优答案(针对我的需求而言)吧,但是还是存在bug,稍后指出!

以下是我的bash脚本,防止多次重复挂载,相信看了就能明白:

 

[zcm@vm-fedora20 share]$ cat m.sh 
#!/bin/bash

src="//192.168.1.77/game"
dest="/home/zcm/share/game"
cmd="mount -t cifs -o rw,username=admin,password=1111,uid=1000,gid=1000,iocharset=cp936,file_mode=0777,dir_mode=0777 $src $dest"

if [ `df | grep share | wc -l` -eq 0 ]; then
	echo "not mounted"
	echo $cmd
	$cmd
else
	echo "mounted"
	echo umount $dest
	umount $dest
fi

通过这种方式挂载后,$dest目录就能属于非root用户zcm了,同时新建的文件或目录的权限都为0777,即同时具有rwx权限。

简单说明:admin / 1111为访问windows上共享目录时的用户名和密码, uid和gid后的1000是linux下用户zcm的用户id和组id,可通过"id zcm“看到

 

bug:

我尝试通过cocos new 创建一个HelloWorld工程到$dest目录下,在创建过程中会失败,提示无法获取“$dest"目录下要创建的文件的状态,接下来挂载的目录就无法访问了,只有重启windows后重新挂载才行。

 

这个问题,还未找到解决办法,提示是"I/O错误",我想是不是与-t cifs这种协议本身有关呢,因为我是在这个共享目录中创建目录的,从结果来看,有部分文件和目录是创建成功了,但是有些却失败,不解。若有解决方案,希望可以交流下。

 

copy其他普通目录到这个共享目录下,我未作实际测试,因为老要重启windows,下次再试吧。

 

==================================================================

以上的mount方式,只有执行一次才能挂载上去。如果要让系统启动时自动挂载上去,需要在/etc/fstab文件末尾添加一行挂载项,如:

//192.168.1.77/game	/home/zcm/share/game cifs defaults,username=admin,password=1111,uid=1000,gid=1000	0 2

这里第4列的选项与mount -o 时的内容不一定完全兼容,可能有些在mount中能识别的选项在fstab中无法识别的,如file_mode等。

 

 

抱歉!评论已关闭.