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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/okhymok/article/details/79350953

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

mount -t cifs //10.6.10.113/SHARE /u02 -o noatime -o nodiratime -o username=administrator,password=111111,rw,uid=0,gid=0,dir_mode=0777,file_mode=0777

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

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

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

 

[python] view plain copy
  1. [zcm@vm-fedora20 share]$ cat m.sh   
  2. #!/bin/bash  
  3.   
  4. src="//192.168.1.77/game"  
  5. dest="/home/zcm/share/game"  
  6. cmd="mount -t cifs -o rw,username=admin,password=1111,uid=1000,gid=1000,iocharset=cp936,file_mode=0777,dir_mode=0777 $src $dest"  
  7.   
  8. if [ `df | grep share | wc -l` -eq 0 ]; then  
  9.     echo "not mounted"  
  10.     echo $cmd  
  11.     $cmd  
  12. else  
  13.     echo "mounted"  
  14.     echo umount $dest  
  15.     umount $dest  
  16. 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文件末尾添加一行挂载项,如:

[python] view plain copy
  1. //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等。

猜你喜欢

转载自blog.csdn.net/okhymok/article/details/79350953