SMB客户端
Haixin Pang 十一月 04, 2025 更新: 十一月 04, 2025 #NoteSMB服务器配置
export MOUNT_DIR=/mnt/my
export SMB_SHARE="//host/dir"
export CREDENTIALS_FILE=/etc/samba/credentials
export SMB_TIMEOUT=30快速配置
快速为当前用户配置SMB挂载:
export SMB_UID=$(id -u your_username)
export UNIT_NAME=$(echo $MOUNT_DIR | sed 's/^\///; s/\//-/g')
sudo pacman -S cifs-utils
sudo mkdir -p $MOUNT_DIR
sudo mkdir -p $(dirname $CREDENTIALS_FILE)
sudo vim $CREDENTIALS_FILE
# 在文件中添加:
# username=your_username
# password=your_password
sudo chmod 600 $CREDENTIALS_FILE
echo "[Unit]
Description=Mount SMB Share at $MOUNT_DIR
After=network-online.target
Wants=network-online.target
[Mount]
What=$SMB_SHARE
Where=$MOUNT_DIR
Type=cifs
Options=_netdev,credentials=$CREDENTIALS_FILE,uid=$SMB_UID,iocharset=utf8,rw
Timeout=30
[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$UNIT_NAME.mount
sudo systemctl enable --now $UNIT_NAME.mount
# 可选自动挂载
sudo systemctl disable --now $UNIT_NAME.mount
echo "[Unit]
Description=Auto mount SMB Share at $MOUNT_DIR
[Automount]
Where=$MOUNT_DIR
TimeoutIdleSec=600
[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/$UNIT_NAME.automount
sudo systemctl enable --now $UNIT_NAME.automount准备
确保系统已安装cifs-utils包:
sudo pacman -S cifs-utils创建挂载点
选择一个合适的位置创建挂载点,例如:
sudo mkdir -p /mnt/my配置凭据文件
为了安全起见,建议将SMB的用户名和密码存储在一个单独的凭据文件中,例如/etc/samba/credentials:
sudo vim /etc/samba/credentials
在文件中添加以下内容:
username=your_username
password=your_password
设置文件权限以保护凭据:
sudo chmod 600 /etc/samba/credentials编辑mount配置
使用systemd的挂载单元文件来配置SMB挂载。创建一个新的挂载单元文件,例如/etc/systemd/system/mnt-my.mount:
注意这里的路径需要将/替换为-,例如/mnt/my对应的单元文件名为mnt-my.mount。
sudo vim /etc/systemd/system/mnt-my.mount
在文件中添加以下内容:
[Unit]
Description=Mount SMB Share at /mnt/my
After=network-online.target
Wants=network-online.target
[Mount]
What=//host/dir
Where=/mnt/my
Type=cifs
Options=_netdev,credentials=/etc/samba/credentials,uid=1000,iocharset=utf8,rw
Timeout=30
[Install]
WantedBy=multi-user.target
将//host/dir替换为实际的SMB共享路径,uid=1000替换为你的用户ID。
启用并启动挂载
启用并启动挂载单元:
sudo systemctl enable --now mnt-my.mount可选:自动挂载
如果希望在访问挂载点时自动挂载,可以创建一个自动挂载单元文件,例如/etc/systemd/system/mnt-my.automount:
sudo vim /etc/systemd/system/mnt-my.automount
在文件中添加以下内容:
[Unit]
Description=Auto mount SMB Share at /mnt/my
[Automount]
Where=/mnt/my
TimeoutIdleSec=600
[Install]
WantedBy=multi-user.target
启用并启动自动挂载单元:
# sudo systemctl disable --now mnt-my.mount # 如果之前启用了挂载单元,先禁用它
sudo systemctl enable --now mnt-my.automount验证挂载
可以使用以下命令验证挂载是否成功:
mount | grep /mnt/my
如果看到相关的挂载信息,说明SMB共享已经成功挂载。
卸载共享
如果需要卸载SMB共享,可以使用以下命令:
sudo systemctl disable --now mnt-my.mount
# 或者如果使用了自动挂载
# sudo systemctl disable --now mnt-my.automount问题排查
如果遇到挂载问题,可以查看systemd的日志以获取更多信息:
journalctl -u mnt-my.mount
# 或者
journalctl -u mnt-my.automount