目录:
1、samba服务介绍 2、samba进程与监听端口
3、samba安全级别
4、安装samba服务
5、创建共享账户与共享名
6、修改配置文件与启动smb服务
7、smb.conf配置文件详解
8、安装samba客户端
1、samba服务介绍
Windows 与 Linux 跨平台的共享文件服务;Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。
NFS 与 samba 一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持 windows 平台,samba 是能够在任何支持 SMB 协议的主机之间共享文件的一种实现,当然也包括 windows。
SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB 协议是 C/S 型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
2、samba进程与监听端口
有3个进程:
nmbd ->对应 netbios
smbd ->对应 cifs 协议
winbindd + ldap ->对应 Windows AD 活动目录
samba监听端口:tcp 139/445, udp 137/138
tcp 端口相对应的服务是 smbd 服务,其作用是提供对服务器中文件、打印资源的共享访问
udp 端口相对应的服务是 nmbd 服务,其作用是提供基于 NetBIOS 主机名称的解析
3、samba安全级别
Samba 服务器的安全级别有三个,分别是 user,server,domain
【1】级别:user ->基于本地的验证
【2】级别:server ->由另一台指定的服务器对用户身份进行认证
【3】级别:server ->由域控进行身份验证
以前的 samba 版本支持的安全级别有四个,分别是 【share、user、server、domain】
share 是用来设置匿名访问的,但现在的版本已经不支持 share 了,但是还是可以实现匿名访问的只是配置方式变了
4、安装samba服务
# yum install samba samba-client
5、创建共享账户与共享名
专门用于samba服务验证的用户称之为:samba共享账户;
专门用于samba服务验证的用户密码,是samba独立的密码与系统密码不同,账户是与系统共用;
需要先创建Linux用户,再把Linux用户添加进samba服务自有的密码文件中,通过:smbpasswd 或 pdbedit 2个命令实现:
smbpasswd 命令:
-a Sys_User #添加系统用户为 samba 用户并为其设置密码
-d #禁用用户帐号
-e #启用用户帐号
-x #删除用户帐号
pdbedit 命令类似;
# useradd herry
# pdbedit -a herry #-a 表示追加到samba认证数据库,与系统的passwd 命令区分开
new password:
retype new password:
Unix username: herry
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2267920866-379840296-2488938324-1000
Primary Group SID: S-1-5-21-2267920866-379840296-2488938324-513
Full Name:
Home Directory: \\cnode-02\herry #默认开启了用户家目录samba共享
HomeDir Drive:
Logon Script:
Profile Path: \\cnode-02\herry\profile
Domain: CNODE-02
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Tue, 07 Jun 2022 22:28:52 CST
Password can change: Tue, 07 Jun 2022 22:28:52 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
系统的密码与samba的密码可以相同,但建议不要设置,系统用户不能登陆系统,专用于samba服务;
共享名:客户端通过网络看到的名字,可以与文件夹名相同,也可以不同,建议不同;
6、修改配置文件与启动smb服务
# mkdir /data/share
# setfacl -m u:herry:rwx /data/share #让herry 用户对这个目录有读写的权限
简单一个实例:
# vim /etc/samba/smb.conf #追加以下内容
[share]
comment = share #设置共享名
path = /data/share #实际共享的路径
# systemctl start smb
# systemctl enable smb
用herry登陆即可,但实际环境中,是远远不够的,以下将详细描述;
7、smb.conf配置文件详解
主配置文件位置:/etc/samba/smb.conf ;
由三大组成部份:
[global] -> 全局配置,此处的设置项对整个 samba 服务器都有效
[homes] -> 宿主目录共享设置,此处用来设置 Linux 用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
[printers] -> 打印机共享设置
常用配置文件参数:
workgroup #表示设置工作组名称
server string #表示描述 samba 服务器
security #表示设置安全级别,其值可为 share、user、server、domain
passdb backend #表示设置共享帐户文件的类型,其值可为 tdbsam(tdb数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(兼容旧版本 samba 密码文件)
comment #表示设置对应共享目录的注释,说明信息,即文件共享名
browseable #表示设置共享是否可见
writable #表示设置目录是否可写
path #表示共享目录的路径
guest ok #表示设置是否所有人均可访问共享目录
public #表示设置是否允许匿名用户访问
write list #表示设置允许写的用户和组,组要用 @ 表示,例如 write list = root,@root
valid users #设置可以访问的用户和组,例如 valid users = root,@root
hosts deny #设置拒绝哪台主机访问,例如 hosts deny = 192.168.10.100
hosts allow #设置允许哪台主机访问,例如 hosts allow = 192.168.10.200
printable #表示设置是否为打印机
实例配置参考:
[share] #设置一个share文件夹共享
comment = share #共享描述
path = /data/share #共享的文件夹路径
browseable = yes #设置共享可见,可以从Windows资源管理器中查看到
writable = yes #共享目录可写
write list = herry #哪个用户对目录有写权限,如果是组用:@组名 表示
create mask = 0644 #创建文件的默认权限为:644,也就是:rw-r--r--
directory mask = 0755 #创建目录的默认权限为:755 ,也就是:rwxr-xr-x
# testparm #测试smb.conf的语法有没有问题
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
# smbclient -L 10.10.17.162 -U 'herry' #测试登陆是否成功
Enter SAMBA\herry's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
share Disk share
IPC$ IPC IPC Service (Samba 4.10.16)
herry Disk Home Directories
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
8、安装samba客户端
# yum install cifs-utils cifs-utils-devel
# mount -t cifs //127.0.0.1/share -o username=herry,password=herry /mnt #samba挂载
# cat /etc/fstab #fstab开机自动挂载配置,需要填写账户和密码
//10.10.17.162/share /mnt cifs defaults,_netdev,username=herry,password=herry 0 0
如果开启了selinux,samba服务端需要关掉的:
# getsebool -a|grep samba #可以看到与samba 相关的功能都是off
# setsebool sam_export_all_ro=on #开启
建议是关掉selinux功能。