linux下自动挂载samba
解决Module问题后,使用mount.cifs终于可以正常挂载samba磁盘了
接下来的问题是如何自动开机进行挂载,当然可以通过rc.local增加命令来实现目的,但很不规范,日后难以管理
按照规范来操作,则要把需要挂载的操作放进/etc/fstab中
在Ubuntu 18.04中,fstab已包含了一些地址的挂载信息
1 2 3 4 5 |
UUID=* / ext4 errors=remount-ro 0 1 # /boot/efi was on /dev/sda1 during installation UUID=* /boot/efi vfat umask=0077 0 1 # swap was on /dev/sda3 during installation UUID=* none swap sw 0 0 |
标准的一条挂载记录包括六部分,以空格或制表符分隔,包括
第一部分指向希望挂载的设备,比如/dev/sdb1或UUID这种格式
第二部分是希望设备挂载到的位置,比如第一条记录就挂载为根目录
第三部分是所挂载设备的文件系统格式,比如常用的ext*、一会要用到的cifs等,当对格式
第四部分是一些参数选项的设定,这里对常见选项介绍一下
auto/noauto | 是否启动或mount -a时自动挂载,要注意的是光驱在装有介质时才可以挂载,光驱应为noauto |
exec/noexec | 挂载后是否拥有执行权限 |
rw/ro | 以读写或只读挂载 |
user/nouser | 允许/禁止任意用户进行挂载,nouser时只有root可以进行挂载 |
owner | 允许设备所有者挂载 |
async/sync | 异步/同步 |
dev/nodev | 是否解析文件系统上的块特殊设备 |
suid/nosuid | 是否允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限 |
noatime | 不更新文件系统上 inode 访问记录,可以提升性能 |
nodiratime | 不更新文件系统上的目录 inode 访问记录,可以提升性能 |
relatime | 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能 |
flush | vfat的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失 |
defaults | 使用文件系统的默认挂载参数,例如ext4的默认参数为rw、suid、dev、exec、auto、nouser、async |
第五部分是是否通过 dump 命令备份,0 表示忽略,1则进行备份。大部分的用户没有安装 dump 应设为 0。
第六部分是是否在开机的过程中通过fsck检验系统完整,0为不检查,1为最早检查,其他数字按增序依此检查。
回到我们挂载samba的主题,当希望把位于\\192.168.3.1\smb的sam把目录挂载到/samba目录时,可以在fstab下增加如下命令
1 |
//192.168.3.1/smb /samba cifs vers=1.0,iocharset=cp936,guest,uid=root,gid=root 0 0 |
注意:第一部分不能以/结尾
你可能会注意到第四部分使用了上表中不存在的选项,接下来简单解释一下这几个选项
vers=1.0
这里指定了一个旧版协议,取决于samba服务器的协议版本,当与服务器断版本不一致时,有可能出现挂载不稳定、死机和掉线等问题,可酌情尝试2.0等其他版本。
iocharset=cp936
指定编码为cp936,这里是应对中文的一种编码,可以理解为GBK编码,可以指定为其他编码,但要求在/lib/modules/4.*/kernel/fs/nls下有同名的模块文件。
guest
设定为共享的网络地址,挂载是不会再要求用户名和密码,需要用户密码的可以通过选项username=user,password=pwd或credentials=/userpwd.file来指定
uid=root,gid=root
这里制定挂载的用户root,用户组为root组,需要注意文件权限,否则会出现 I/O 错误
完成后重启或mount -a执行查看挂载效果