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

来源:互联网 发布:美国ip衍生品数据 编辑:程序博客网 时间:2024/06/08 18:19

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

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

 

[zcm@vm-fedora20 share]$ cat m.sh #!/bin/bashsrc="//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 ]; thenecho "not mounted"echo $cmd$cmdelseecho "mounted"echo umount $destumount $destfi


通过这种方式挂载后,$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=10000 2


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

 

 

0 0
原创粉丝点击