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
命令流程:
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