Linux下开机自动挂载samba目录,且可以正常读写

因为现在基本都在Linux下活动了,工作中有需要用到编译服务器,每次进入linux之后再用mount命令手动挂载也挺麻烦的,而且手动挂载的话,每次都要重新将服务器目录的代码导入到source insight,麻烦极了,严重降低了生产效率。

那么问题就来了,如何能够开机自动挂载samba目录呢,google或者baidu一下你会发现各种各样的方法,大致可以分为两类:

  • 将mount命令写入到脚本中,开机自动加载脚本
  • 修改fstab

第一种方法我没有试过,我用的第二种方法,但是也遇到很多坑,写下来让需要的网友不用走那么多弯路

首先我们知道挂载samba目录的mount命令是:

1
mount -t cifs //172.20.4.189/home /mnt/myshare -o username=caobin

-o代表后面可以跟很多参数,比如password啊,iocharset之类的,以分割,运行完该命令之后,如果有密码会提示让输入密码的,也可以直接将密码以password=xxx的形式放到-o后面

打开fstab,vim /etc/fstab 默认fstab是只读的,所以需要修改一下权限,在最后加入这么一句:

1
//172.20.4.189/home /mnt/myspace cifs defaults,username=caobin,password=xxx 0 0

然后保存退出,重启机器你发现确实挂载上了,开心的不得了

而且还可以将服务器上的android源码导入source insight了,但是你会发现普通用户你没办法修改,shit啊,怎么可能不修改代码呢,你们一看可能说我没加rw,那么我将上面那句改为这样

1
//172.20.4.189/home /mnt/myspace cifs defaults,rw,username=caobin,password=xxx 0 0

然后你试试,一样是不可以写的,哪有那么简单啊,或者说把defaults去掉,一样没用的

那么如何解决呢,google了很多,有的说加umask=000,有的说把服务器上的uid和gid加上去,几乎都是抄来抄去的,我就一次次试,最终发现我在挂载的时候将uid和gid指定为本机的就行了,打开terminal,输入id,就看到uid和gid了

最终我挂载成功,且可以正常读写的命令是这样的

1
//172.20.4.189/home /mnt/myspace cifs defaults,rw,uid=1000,gid=1000,credentials=/etc/samba/credentials 0 0

那个/ect/samba/credentials是保存密码用的,嫌麻烦可以直接用username=caobin,password=xxx替换即可,如果中文乱码的话,可以加上iocharset=utf8

就酱,over