Samba

Samba 是适用于 Linux 和 Unix 的标准 Windows 互操作性程序套件。 自 1992 年以来,Samba 一直为所有使用 SMB/CIFS 协议的客户端提供安全、稳定和快速的文件和打印服务,例如所有版本的 DOS 和 Windows、OS/2、Linux 等。 一般用于 Linux 和 Windows 系统之间的资源共享。

安装配置

如果使用 Ubuntu 系统,可用如下命令安装:

sudo apt-get install samba  # 下载
systemctl start smbd        # 启动服务
systemctl enable smbd       # 设置为开机自动启动

添加用户

一般我会添加两个用户,一个有读写权限,一个仅有只读权限。可以用如下命令添加用户。需要注意的是 Samba 的用户必须是Linux的用户, 所以确保添加的用户已经存在于系统中。

smbpasswd -a $USER  # 添加用户

# pdbedit — manage the SAM database (Database of Samba Users)
pdbedit -L  	 # 查看smb中加入的用户
pdbedit -a          # 添加用户
pdbedit -x          # 删除用户
pdbedit -Lv         # 列出用户详细的信息列表

配置共享文件夹

默认的配置文件在 /etc/samba/smb.conf.

cat /etc/samba/smb.conf | grep -v '#' | grep -v ';' | grep -v -e '^$'

可以看到如下内容(有省略),作为了解即可:

[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

配置自己的共享文件夹

[Share]                           # 指定的共享名称
   comment = larry guest share    # 描述信息
   path =                         # 共享文件夹的位置
   browseable =                   # 指定共享是否在 “网上邻居” 可见
   writable = yes                 # 指定是否可以写入操作
   directory mask = 0775
   create mask = 0775
   valid users = user0,user1      # 设定两个可以登录的用户,但只给了一个用户有写的权限
   write list = user0
   browseable = yes
   available = yes

使用

  • 如果是 Linux, 可以用如下命令连接使用:
smbclient -L //127.0.0.1 -U $USER 
smbclient //127.0.0.1/Share -U $USER
  • 也可以挂载后使用:

需要先安装 CIFS(Common Internet File System) 支持, 通用 Internet 文件系统 (CIFS) 是一种网络文件系统协议,用于在网络上的机器之间提供对文件和打印机的共享访问。 CIFS 客户端应用程序可以读取、写入、编辑甚至删除远程服务器上的文件。 CIFS 客户端可以与任何设置为接收 CIFS 客户端请求的服务器通信。

sudo apt-get install cifs-utils
sudo mount -t cifs //127.0.0.1/Share /smb -o user= ,password=

如果不想在命令行里直接输入用户名和密码, 可以建立一个文件存储用户名和密码,并给这个文件设置管理员可读写权限:

touch smbpass
echo "username= " >> smbpass
echo "password= " >> smbpass
mount.cifs -o credentials=/root/smbpass //127.0.0.1/Share /smb

如果是 Windows 系统, 可以在 此电脑(右键) -> 映射网络驱动器,按提示添加共享目录,比如 //ip/Share, 再通过验证就可以进行访问。