Android with root Git for version control Lircd with Raspberry Pi for IR receiver and sender Tips for Windows Depolying your own password management tool -- KeeWeb Depoly your flask app into Heroku Fix shit IE code manually ISBN to Book Category by Scraping DangDang A Generic Makefile for C/C++ Program Configure Raspberry pi Remove watermark with PyPDF2 tips for docker Anaconda+TensorFlow+CUDA Snippets Configure Remote Mathematica Kernel Build your own ngrok server Access Array SSL VPN 使用Rstudio制作html5幻灯片 tips for Mac OS X system Tips for ipython notebook 配置Ubuntu server + Openbox (Obuntu) tips for Vimperator tips for Vim 安装CUDA My First Jekyll Blog rsync常见选项 在Linux中读取Ipod touch的文件 tip for texmacs 在VPS上建站的一些tip Gnuplot绘图札记 Samba系统和autofs自动挂载 Linux中alsamixer声卡无法录音 搭建自己的RSS订阅器——Tiny Tiny RSS Grub2引导安装Ubuntu awk tips 将Ubuntu系统装入U盘 The Great Rtorrent 编译GCC 再这样剁手!!!该死的libgd 使用ulimit进行资源限制 使用SSH代理上IPV6 使用RCurl抓取网页数据 修复Ubuntu Grub记 openbox中的文件关联 在Ubuntu 12.04下编译qtiplot 处理BCM4312网卡驱动纪实 配置我的Ubuntu Server记 Cygwin杂记 Linux 使普通用户具有以超级权限执行脚本 让firefox自定义地处理文件类型 WordPress优秀主题及插件 在phpcloud上搭建wordpress UBUNTU下用pptpd做VPN server ubuntu升级内核过后的一些问题 安装telnet服务 kubuntu札记 64位kubuntu札记 统计软件R Virtualbox stardict星际译王 Ubuntu重装windows系统后的grub引导修复 SSH服务及花生壳域名解析 采用cbp2make工具由code::blocks工程创建makefile文件 UBUNTU 札记

Samba系统和autofs自动挂载

2014年08月29日

有的时候需要用实验室其他人的计算机来算东西,这个时候需要把代码、配置文件啊神马的在几台电脑上倒来倒去。过去我写了一个通用的Makefile来简化代码和数据的rsync操作,其实还有更好的办法。通过网络文件系统(如NFS或Samba)加上autofs服务自动挂载,可以很好地解决这个问题。

前次配置过NFS,现在想大规模应用网络文件系统,就有点担心NFS的安全性,所以现在配置samba来做基础的文件系统。采用autofs的一个原因是担心网络不稳定的情况下文件系统的错误不好自动修复。同时,结合NIS服务,可以实现在任意一台计算机上登录而不需要预先建立用户和同步家目录。

我按照鸟哥Linux私房菜在我自己的电脑上配置好NFS服务器,把我的home目录共享出去。我改动的主要的设置如下:

[global]

        dos charset = cp950 #不同系统的编码
        unix charset = utf8
        workgroup = NICOLAS # 工作组名称
        security = user # 密码验证方式及密码数据库
        passdb backend = tdbsam
        load printers = No
        case sensitive = Yes # 开启文件名大小写敏感

[home] # 要分享的项目名称
        comment = My home dirctory
        path = /my/home #需要共享的我的家目录
        read only = No
        create mask = 0664 #设置权限
        directory mask = 0775
        force user = your-user-name
        force group = your-user-name

我用Linux比较多,如果不打开大小写敏感的话自己写的有些命令运行不了。

配置好后可以用命令testparm命令查看语法什么的都对了没。

然后,需要加入分享文件的用户民和密码到samba数据库:

sudo smbpasswd -a your_user_name

完成后重启smbd服务:

sudo service smbd restart

然后到其他客户端机器上输入以下命令安装cifs客户端后挂载:

sudo apt-get install cifs-utils
sudo mount //IP/项目名称 /mnt -o credentials=/path/to/smbcredentials,uid=your_uid,gid=your_gid

一般来说共享服务方和客户端上的GID/UID会不一样,需要在选项里填上你在客户端机器上账户的uid和gid,这可以通过id your_user_name查看。同时,为保障samba账号安全性将账号密码存放在权限为600的单独文件smbcredentials中:

username=your_user_name
password=your_smb_password

如果samba服务器在路由器后面,那么应该在路由器上打开137/138/139/445这几个端口映射。

NFS配置成功后在客户端上装好autofs服务:

sudo apt-get install autofs

autofs的主配置文件为/etc/auto.master,里面主要内容形如:

# 挂载点   配置文件          选项
#/misc  /etc/auto.misc
#/net   -hosts
/home   /etc/auto.home
/-      /etc/auto.home.direct #直接挂载方式,在配置文件中指明挂载点
# Include /etc/auto.master.d/*.autofs
+dir:/etc/auto.master.d
+auto.master

配置文件/etc/auto.home/etc/auto.misc复制过来修改就行,规定了有哪些设备被挂载到/home目录下:

# mount dirctory name under /home and mount options for samba
your_home   -fstype=cifs,credentials=/path/to/smbcredentials,uid=your_uid,gid=your_gid    ://IP/项目名称
*           server:/home/&   #[模糊表达方式](https://help.ubuntu.com/community/Autofs)

依次是挂载的文件夹名称,挂载选项和挂载设备地址。

挂载好后重启autofs就可以了。

这之后我遇到一个问题,因为我把共享目录挂载到/home目录,那么原来别人的用户目录就被掩盖掉了(基本没用过),可以采用命令usermod -m -d /path/to/new/home/dir userNameHere迁移该用户的主目录地址,然后移动数据过去就行了。为了方便以后新加用户自动到其他目录,可以修改默认/etc/default/useradd文件中的HOME变量。

另外一个解决方案是采用autofs的直接挂载方式,在配置文件中指明挂载点。

至此,大功告成。