Samba是在Linux和UNIX系统上实现SMB协议的免费软件,由服务器和客户端程序组成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
安装Samba
Samba软件主要有三个部分:samba、samba-common、samba-client
samba:samba主程序;
samba-common:samba的配置,检测程序等;
samba-client:samba的客户端程序。
[root@server ~]# yum install samba samba-common samba-client -y ##安装samba软件
[root@server ~]# systemctl start smb ##启动samba软件服务
[root@server ~]# systemctl enable smb ##设置开机启动
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
[root@server ~]# firewall-cmd --permanent --add-service=samba ##配置防火墙允许samba访问
success
[root@server ~]# firewall-cmd --permanent --add-service=mountd ##防火墙永久允许挂载服务
success
Samba的基本配置
配置文件:/etc/samba/smb.conf
[root@server ~]# vim /etc/samba/smb.conf
配置文件帮助
[root@server ~]# man 5 smb.conf
###配置文件内容有两部分:
###Global Settings(全局设置)
89 workgroup = MYGROUP ##工作组
90 server string = Samba Server Version %v ##服务器描述
91
92 ; netbios name = MYSERVER ##NetBIOS名称,默认注释
93
94 ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 ##设置samba服务器监听网卡,默认注释
95 ; hosts allow = 127. 192.168.12. 192.168.13. ##sanba白名单,默认
107 # log files split per-machine:
108 log file = /var/log/samba/log.%m ##日志文件,拆分为每台主机
109 # maximum size of 50KB per log file, then rotate:
110 max log size = 50 ##日志最大值,单位KB
123 security = user ##安全验证模式
##1、share:共享的,不需要账户密码
##2、user:用户验证,samba server负责检查帐号和密码
##3、server:服务器代理验证
124 passdb backend = tdbsam|smbpasswd ##定义用户信息后台类型
###Share Definitions(共享配置)
[jinx] ##共享名称
comment = Jinx Directories ##共享描述
path = /share/ ##共享目录路径
browseable = yes ##是否显示,不显示就需要通过IP+共享名称访问
writable = yes ##是否可写
guest ok = yes ##匿名用户是否可访问
admin users = USER ##此共享的管理员,可添加多用户,用逗号隔开
; valid users = USER|@GROUP ##可以访问的用户|组
write list = USER ##具有写入权限的用户
Samba用户、登陆
[root@server ~]# smbpasswd -a student ##添加用户,必须是本地存在的用户
New SMB password: ##输入samba登陆密码
Retype new SMB password: ##密码确认
Added user student.
[root@server ~]# pdbedit -L ##查看用户
student:1000:Student User
[root@server ~]# getsebool -a | grep samba ##查看SELINUX相关安全设置
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@server ~]# setsebool -P use_samba_home_dirs on ##永久设置允许访问家目录
###客户端###
[root@desktop ~]# yum install samba-client -y ##安装客户端软件
[root@desktop ~]# smbclient -L //172.25.254.243 -U student ##-L:List;-U:User
Enter student's password:
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
student Disk Home Directories
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
[root@desktop ~]# smbclient //172.25.254.243/student -U student
Enter student's password:
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]
smb: \>
共享目录设定
[root@server ~]# mkdir /jinx
[root@server ~]# touch /jinx/jinxfile
[root@server ~]# vim /etc/samba/smb.conf
[jinx]
comment = Jinx Share
path = /jinx/
wq
##SELinux未开启下列不用修改
[root@server ~]# semanage fcontext -a -t samba_share_t '/jinx(/.*)?' ##修改共享目录的安全上下文
[root@server ~]# restorecon -FvvR /jinx
restorecon reset /jinx context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
restorecon reset /jinx/jinxfile context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
##如果共享目录为系统目录,修改系统目录安全上下文显然不合适,则需要:
[root@server ~]# setsebool -P samba_export_all_ro|rw on ##只读|读写
##客户端##
[root@desktop ~]# smbclient -L //172.25.254.243 -U student
Enter student's password:
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
jinx Disk Jinx Share
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
student Disk Home Directories
Domain=[JINX] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
客户端多用户挂载
[root@desktop ~]# yum install cifs-utils -y
##创建用户列表文件
[root@desktop ~]# vim /root/smbusers
username=student
password=smb
##设置用户列表文件权限
[root@desktop ~]# chmod 600 /root/smbusers
##挂载相关手册:man mount.cifs
##挂载共享目录到本地
[root@desktop ~]# mount -o credentials=/root/smbusers,multiuser,sec=ntlmssp //172.25.254.243/jinx /mnt
## credentials=/root/smbusers 指定挂载时所用到的用户文件
## multiuser 支持多用户认证
## sec=ntlmssp 认证方式
[root@desktop ~]# useradd test ##创建测试账户
[root@desktop ~]# su - test
[test@desktop ~]$ ls /mnt ##浏览挂载文件
ls: cannot access /mnt: Permission denied
[test@desktop ~]$ cifscreds add -u student 172.25.254.243 ##添加认证
Password:
[test@desktop ~]$ ls /mnt
jinxfile
匿名用户访问
[root@server ~]# vim /etc/samba/smb.conf
map to guest = bad user
[jinx]
comment = Jinx Share
path = /jinx/
writable = yes
admin users = student
guest ok = yes
write list = student
[root@desktop ~]# mount //172.25.254.243/jinx /mnt -o username=guest,password=""
[root@desktop ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3213348 7260552 31% /
devtmpfs 469332 0 469332 0% /dev
tmpfs 484920 80 484840 1% /dev/shm
tmpfs 484920 12760 472160 3% /run
tmpfs 484920 0 484920 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 27050 427129 6% /home
//172.25.254.243/jinx 10473900 3196220 7277680 31% /mnt