Samba概述


Samba是一套使用SMB(Server Message Block)协议的应用程序,通过支持这个协议,Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能。Samba采用C/S模式,其工作机制是让NetBIOS( Windows 网上邻居的通信协议)和SMB两个协议运行于TCP/IP通信协议之上,并且用NetBEUI协议让Windows在“网上邻居”中能浏览Linux服务器。

Samba服务器包括两个后台应用程序:Smbd 和 Nmbd。Smbd 是Samba的核心,主要负责建立 Linux Samba服务器与Samba客户机之间的对话,验证用户身份并提供对文件和打印系统的访问;Nmbd主要负责对外发布Linux Samba服务器可以提供的NetBIOS名称和浏览服务,使Windows用户可以在“网上邻居”中浏览Linux Samba服务器中共享的资源。另外Samba还包括一些管理工具,如 smb-client,smbmount,testparm,Smbpasswd 等程序。

Samba服务器可实现如下功能:WINS和DNS服务;网络浏览服务;Linux和Windows域之间的认证和授权;UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。

 

 

准备工作


1. 更新系统

没啥,就他喵想用个最新的。

apt update && apt upgrade

 

2. 安装samba

官方网站:https://www.samba.org/

命令流程:

apt install -y samba

 

 

创建用户


1. 创建系统用户组

groupadd samba

 

2. 创建系统用户

创建一个禁止登陆系统的用户,并让它加入samba组中。

useradd -g samba -M -s /sbin/nologin admin

 

3. 设置系统用户密码

passwd admin

 

4. 设置Samba用户登陆密码

此密码需要单独设置,用来登陆SMB。可以和用户系统密码一样,也可以不一样。

smbpasswd -a admin

 

 

创建共享目录


1. 创建用户专属目录

mkdir /home/admin

 

2. 修改目录权限

chmod 777 /home/admin/

 

 

Samba配置文件


 

vim /etc/samba/smb.conf

 

;======================= Global Settings =======================
[global]
    workgroup = WORKGROUP
    dns proxy = no
    log file = /var/log/samba/log.%m
    max log size = 1000
    syslog = 0
    panic action = /usr/share/samba/panic-action %d
    server role = standalone server
    passdb backend = tdbsam
    obey pam restrictions = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    pam password change = yes
    map to guest = bad user
    usershare allow guests = yes

#======================= Share Definitions =======================
[Blu-ray]
    comment = 蓝光原盘
    path =  /home/admin
    public = no
    valid users = admin
    write list = admin
    create mask = 0777
    directory mask = 0777

 

 

重启Samba服务器


 

/etc/init.d/samba restart

 

 

附、常用命令


 

;======================= Global Settings =======================
[global]
workgroup = WORKGROUP     ;工作组名称
server string = Samba Server Version %v ;主机的简易说明
dns proxy = no
log file = /var/log/samba/log.%m    ;产生日志文件的命名,默认以访问者IP地址命名
max log size = 1000                 ;日志文件最大容量,默认50,单位为KB,0表示不限制
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes

;======================= Share Definitions =======================
[guest]
comment = Guest Directories ;共享描述,当鼠标悬浮在目录上时会显示
path = /home/guest          ;共享目录路径
browseable = yes/no         ;设置共享是否可浏览,如果no就表示隐藏,需要通过IP+共享名称进行访问
writable = yes/no           ;设置共享是否具有可写权限
read only = yes/no          ;设置共享是否具有只读权限
valid users = username      ;设置允许访问共享的用户,例如valid users = user1,user2,@group1,@group2(多用户或组使用逗号隔开,@group表示group用户组)
write list = username       ;设置在共享具有写入权限的用户,例如例如write list  = user1,user2,@group1,@group2(多用户或组使用逗号隔开,@group表示group用户组)
invalid users = username    ;设置不允许访问共享的用户
public = yes/no             ;设置共享是否允许匿名访问
guest ok = yes/no           ;功能同public一样
create mask = 0700          ;创建的文件权限为700
directory mask = 0700       ;创建的目录权限为700