在Ubuntu中自动挂载SMB/CIFS共享
文章目录
- 0. 引言
- 1. 使用`credentials`文件存储认证信息
- 2. 挂载点的准备
- 3. 必要软件的安装
- 4. 调整挂载参数
- 5. 测试挂载
- 6. 日志调试
0. 引言
本文是自己挂载共享磁盘的实践记录,将详细介绍如何在Linux系统中配置自动挂载SMB/CIFS共享,并提供一些常见问题的解决方案。
1. 使用credentials
文件存储认证信息
直接在/etc/fstab
文件中包含用户名和密码可能导致解析问题,尤其是密码中如果包含特殊字符。因此,使用一个credentials
文件来存储这些信息是一种更安全且更稳定的方法。
步骤:
-
创建
credentials
文件:创建一个文件,例如
/home/user/.smbcredentials
,并添加以下内容:username=ABC password=XYZ
-
设置文件权限:
确保文件的权限设置正确,只允许所有者读取:
chmod 600 /home/user/.smbcredentials
-
修改
/etc/fstab
:使用
credentials
文件的路径来替代在fstab
中直接写入用户名和密码。//192.168.x.xx/share /mnt/share cifs credentials=/home/user/.smbcredentials,iocharset=utf8,vers=2.0,_netdev,auto,dir_mode=0777,file_mode=0777 0 0
2. 挂载点的准备
确保挂载点目录已经存在并设置了正确的权限:
sudo mkdir -p /mnt/share
sudo chmod 755 /mnt/share
3. 必要软件的安装
确保系统已安装必要的软件包cifs-utils
,这是挂载CIFS共享的必需工具。
sudo apt-get update
sudo apt-get install cifs-utils
4. 调整挂载参数
由于网络可能不会在系统启动时立即可用,使用_netdev
选项确保网络设备就绪后再进行挂载。另外,x-systemd.automount
和x-systemd.requires=network-online.target
可以帮助控制挂载时机,以避免启动时挂载失败。
//192.168.x.xx/share /mnt/share cifs credentials=/home/user/.smbcredentials,iocharset=utf8,vers=2.0,_netdev,auto,dir_mode=0777,file_mode=0777,x-systemd.automount,x-systemd.requires=network-online.target 0 0
5. 测试挂载
在完成/etc/fstab
的修改后,可以通过以下命令测试挂载是否配置正确:
sudo mount -a
如果没有错误,那么配置成功。可以通过重启机器来验证是否能够自动挂载。
6. 日志调试
如果自动挂载失败,可以查看系统日志来获取更多信息:
journalctl -xe
dmesg | grep CIFS
#7. 常见问题解决
如果在系统启动时网络尚未准备好,可以考虑启用systemd-networkd-wait-online.service
:
sudo systemctl enable systemd-networkd-wait-online.service
或者添加nofail
选项到fstab
条目中,以防止挂载失败影响系统启动。
//192.168.x.xx/share /mnt/share cifs credentials=/home/user/.smbcredentials,iocharset=utf8,vers=2.0,_netdev,auto,nofail,dir_mode=0777,file_mode=0777 0 0