根据你的需求,可以通过创建 systemd 服务实现开机自动挂载 Samba 共享,无需修改 /etc/fstab
。以下是具体实现步骤:
1. 准备工作
- 安装依赖包
先确保系统已安装cifs-utils
,这是挂载 Samba/CIFS 协议的工具:sudo apt update && sudo apt install cifs-utils -y
- 创建挂载点目录
例如创建一个/mnt/samba_share
目录作为挂载点:sudo mkdir -p /mnt/samba_share
- 保存凭据文件(避免密码明文)
创建一个安全文件保存 Samba 用户名和密码:sudo nano /etc/samba_credentials
文件内容格式:
username=your_username password=your_password
修改文件权限:
sudo chmod 600 /etc/samba_credentials
2. 创建 Systemd 服务单元
- 新建服务文件
创建/etc/systemd/system/mount-samba.service
:sudo nano /etc/systemd/system/mount-samba.service
- 写入服务配置
内容如下(替换实际的 Samba 服务器 IP 和共享名称):[Unit] Description=Mount Samba Share at Boot After=network.target [Service] Type=oneshot ExecStart=/bin/mount -t cifs -o credentials=/etc/samba_credentials,vers=3.0,iocharset=utf8 //192.168.1.100/shared_folder /mnt/samba_share ExecStop=/bin/umount /mnt/samba_share RemainAfterExit=yes [Install] WantedBy=multi-user.target
vers=3.0
:指定 SMB 协议版本(根据服务器配置调整)。iocharset=utf8
:支持中文文件名。
- 启用并启动服务
sudo systemctl daemon-reload sudo systemctl enable --now mount-samba.service
3. 验证挂载
- 检查挂载状态:
df -h | grep samba_share
- 查看服务日志:
journalctl -u mount-samba.service
替代方案:通过 rc.local 实现
如果系统支持传统 rc.local
,可在 /etc/rc.local
中添加挂载命令(需确保文件有执行权限):
sudo nano /etc/rc.local
添加以下内容(在 exit 0
之前):
mount -t cifs -o credentials=/etc/samba_credentials,vers=3.0 //192.168.1.100/shared_folder /mnt/samba_share
启用 rc-local
服务:
sudo systemctl enable rc-local
注意事项
- 网络依赖:确保服务在 网络就绪后 执行(
After=network.target
)。 - 协议版本兼容性:若挂载失败,尝试调整
vers=2.1
或vers=1.0
。 - 安全建议:避免使用明文密码,推荐通过凭据文件管理敏感信息。
通过上述方法,Samba 共享会在系统启动时自动挂载,且不影响 /etc/fstab
的原有配置。