插件窝 干货文章 Linux与windows共享文件的神器:samba

Linux与windows共享文件的神器:samba

Samba 共享 sudo bash 790    来源:    2025-05-13

Samba:Linux与Windows文件共享的神器

Samba是一个开源的软件套件,它实现了SMB/CIFS协议,使得Linux/Unix系统能够与Windows系统无缝共享文件和打印机。以下是关于Samba的详细介绍和使用指南。

Samba的核心功能

  1. 文件共享:在Linux和Windows之间共享文件和目录
  2. 打印机共享:共享Linux上的打印机给Windows用户
  3. 域控制器:可以作为Windows域控制器
  4. 名称解析:通过WINS提供NetBIOS名称解析

安装Samba

在Debian/Ubuntu上安装:

sudo apt update
sudo apt install samba

在RHEL/CentOS上安装:

sudo yum install samba

在Arch Linux上安装:

sudo pacman -S samba

基本配置

  1. 备份原始配置文件:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
  1. 编辑主配置文件:
sudo nano /etc/samba/smb.conf
  1. 添加一个简单的共享配置示例:
[global]
   workgroup = WORKGROUP
   server string = Samba Server %v
   netbios name = ubuntu
   security = user
   map to guest = bad user
   dns proxy = no

[shared]
   path = /srv/samba/shared
   browsable = yes
   writable = yes
   guest ok = yes
   read only = no
   create mask = 0777
   directory mask = 0777

创建共享目录并设置权限

sudo mkdir -p /srv/samba/shared
sudo chmod -R 0777 /srv/samba/shared
sudo chown -R nobody:nogroup /srv/samba/shared

创建Samba用户

  1. 首先确保用户已存在于系统中:
sudo useradd sambauser
  1. 为Samba设置密码:
sudo smbpasswd -a sambauser

启动和启用Samba服务

sudo systemctl start smbd nmbd
sudo systemctl enable smbd nmbd

防火墙配置

如果使用防火墙,需要开放Samba端口:

sudo ufw allow samba
# 或者手动指定端口
sudo ufw allow 137,138/udp
sudo ufw allow 139,445/tcp

从Windows访问共享

  1. 打开文件资源管理器
  2. 在地址栏输入:\\linux-server-ip\shared
  3. 输入之前创建的Samba用户名和密码

高级配置选项

  1. 用户家目录共享
[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   valid users = %S
  1. 打印机共享
[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
   guest ok = no
   writable = no
   printable = yes
  1. 特定用户组访问控制
[restricted]
   path = /srv/samba/restricted
   valid users = @smbgroup
   writable = yes
   create mask = 0770
   directory mask = 0770

故障排除

  1. 检查配置文件语法:
testparm
  1. 查看Samba日志:
tail -f /var/log/samba/log.smbd
  1. 测试连接:
smbclient -L localhost -U sambauser

Samba是一个功能强大且灵活的工具,通过适当的配置可以实现复杂的共享场景。对于企业环境,还可以配置Samba作为域控制器,实现更高级的Windows域集成功能。