samba
1. samba简介
2. samba访问
3. 示例
1. samba简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
在此之前我们已经了解了NFS, NFS与samba-样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持windows平台,而本章要提到的samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,当然也包括windows。
SMB (Server Messages Block,信息服务块)是一 种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
Samba监听端口有
TCP | UDP |
---|---|
139 | 137 |
445 | 138 |
tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问。
udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析。
samba进程:
进程 | 对应 |
---|---|
nmbd | 对应netbios |
smbd | 对应cifs协议 |
xinbindd+ldap | 对应Windows AD活动目录 |
samba用户:
帐号 | 密码 |
---|---|
都是系统用户/etc/passwd Samba | 服务自有密码文件,通过smbpasswd -a USERNAME命令设置 |
/smbpasswd命令:
-a Sys_ User //添加系统用户为samba用户并为其设置密码
-d //禁用用户帐号
-e //启用用户帐号
-x //删除用户帐号
[root@ymm-xiaokeai ~]# mkdir /aaa //创建文件(在编写文件的时候共享的aaa文件)
[root@ymm-xiaokeai ~]# useradd a //创建用户(编写文件时可访问的用户)
[root@ymm-xiaokeai ~]# smbpasswd -a a //查看用户是否添加完成
New SMB password:
Retype new SMB password:
Added user a.
Samba安全级别:
Samba服务器的安全级别有三个,分别是user, server, domain
安全级别 | 作用 |
---|---|
user | 基于本地的验证 |
server | 由另一一台指定的服务器对用户身份进行认证 |
domain | 由域控进行身份验证 |
以前的samba版本支持的安全级别有四个,分别是share, user; server, domain
share是用来设置匿名访问的,但现在的版本已经不支持share了,但是还是可以实现匿名访问的 只是配置方式变了
samba配置文件:
- /etc/samba/smb.conf(主配置文件)
samba三大组成 | 作用 |
---|---|
[global] | 全局配置,此处的设置项对整个samba服务器都有效 |
[homes] | 宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中 |
[printers] | 打印机共享设置 |
常用配置文件参数:
参数 | 作用 |
---|---|
workgroup | 表示设置工作组名称 |
serverstring | 表示描述samba服务器 |
security | 表示设置安全级别,其值可为share、user、 server、 domain |
passdbbackend | 表示设置共享帐户文件的类型,其值可为tdbsam (tdb数据库 文件)、 ldapsam(LDAP目录认证)、 smbpasswd (兼容旧版本samba密码文件) |
comment | 表示设置对应共享目录的注释,说明信息,即文件共享名 |
browseable | 表示设置共享是否可见 |
writable | 表示设置目录是否可写 |
path | 表示共享目录的路径 |
guest ok | 表示设置是否所有人均可访问共享目录 |
pulic | 表示设置是否允许匿名用户访问 |
write list | 表示设置允许写的用户和组,组要用@表示,例如write list = root,@root |
valid users | 设置可以访问的用户和组,例如valid users = root,@root |
hosts deny | 设置拒绝哪台主机访问,例如hosts deny = 192.168.72.1 |
hosts allow | 设置允许哪台主机访问,例如hosts allow= 192.168.72.2 |
printable | 表示设置是否为打印机 |
//测试配置文件是否有语法错误,以及显示最终生效的配置:使用tes tparm命令
[root@ymm-xiaokeai ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[wangqiang]"
Loaded services file OK.
Server role: ROLE_STANDALONE
2. samba访问环境说明:
环境说明:
服务器IP | 客户端IP |
---|---|
192.168.20.180 | 192.168.20.123 |
//交互式数据訪向
smbclient -L HOST -U USERNAME
smbclient 11 SERVER/S hared_ name-U USERNAME
//在客戸机安装samba-client包
[root@ymm-a-frr ~]# yum install -y samba-client
//査看samba服务器有喞些共享资源
[root@ymm-a-frr ~]# smbclient -L 192.168.20.180 -U 'Bad User' //查看samba服务器上有哪些资源
Enter SAMBA\Bad User's password:
OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
wangqiang Disk wangqiang
IPC$ IPC IPC Service (Samba 4.6.2)
OS=[Windows 6.1] Server=[Samba 4.6.2]
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA YMM-XIAOKEAI
//基于挂载方式访问
mount -t cifs //SERVER/shared_name /挂载到本地什么目录 -o username=USERNAME,password=PASSWORD
[root@ymm-a-frr ~]#mkdir /opt/smb
[root@ymm-a-frr ~]# mount -t cifs //192.168.20.180/wangqiang /opt/smb/ -o username='Bad User' //挂载
[root@ymm-a-frr ~]# df -h //查看
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.7M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mount
192.168.20.180:/nfs 17G 2.1G 15G 12% /nfs
//192.168.20.180/wangqiang 17G 2.1G 15G 12% /opt/smb
3、示例
配置用户认证共享:
在服务端上:
//关闭防火墙的四步
[root@ymm-xiaokeai ~]# systemctl stop firewalld //关闭防火墙
[root@ymm-xiaokeai ~]# systemctl disable firewalld //禁止开机自启
[root@ymm-xiaokeai ~]# vim /etc/selinux/config //更改防火墙的配置文件
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled //(更改为disabled)
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@ymm-xiaokeai ~]# setenforce 0 //查看测试
[root@ymm-xiaokeai ~]# yum install -y samba* //下载samba(需下载全部)
[root@ymm-xiaokeai ~]# systemctl start smb nmb //启动Samba
[root@ymm-xiaokeai ~]# ss -auntl //查看端口(只需查看有无139和445端口)
tcp LISTEN 0 50 *:139 *:*
tcp LISTEN 0 128 *:59982 *:*
tcp LISTEN 0 128 *:111 *:*
tcp LISTEN 0 128 *:20048 *:*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 50 *:445 *:*
[root@ymm-xiaokeai ~]# vim /etc/samba/smb.conf //编写配置文件(建议不要修改原有的配置文件,按照原有的格式在后面重写)
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
[yqm]
path = /aaa
guest ok = yes
browseable = yes
writable = yes
write list = a
hosts allow = 192.168.20.123
[root@ymm-xiaokeai ~]# mkdir /aaa //创建文件(在编写文件的时候共享的aaa文件)
[root@ymm-xiaokeai ~]# useradd a //创建用户(编写文件时可访问的用户)
[root@ymm-xiaokeai ~]# smbpasswd -a a //查看用户是否添加完成
New SMB password:
Retype new SMB password:
Added user a.
[root@ymm-xiaokeai ~]# setfacl -m u:a:r-x /aaa/ //设置用户a对aaa文件只能读(在前面的配置文件中给的可读可写,外面给的只读只为做测试)
[root@ymm-xiaokeai ~]# getfacl /aaa/
getfacl: Removing leading '/' from absolute path names
# file: aaa/
# owner: root
# group: root
user::rwx
user:a:r-x
group::r-x
mask::r-x
other::r-x
在客户端
[root@ymm-a-frr ~]# systemctl stop firewalld //关闭防火墙
[root@ymm-a-frr ~]# systemctl disable firewalld //禁止开机自启
[root@ymm-a-frr ~]# vim /etc/selinux/config //编写配置文件
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled //改为disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@ymm-a-frr ~]# setenforce 0 //检查测试
[root@ymm-a-frr ~]# yum install -y samba-client //下载Samba(只需下载Samba-client)
[root@ymm-a-frr ~]# smbclient -L 192.168.20.180 -U a //查看服务端的东西
Domain=[YMM-XIAOKEAI] OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (Samba 4.6.2)
yqm Disk //共享的文件
a Disk Home Directories //共享的用户
Domain=[YMM-XIAOKEAI] OS=[Windows 6.1] Server=[Samba 4.6.2]
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA YMM-XIAOKEAI
[root@ymm-a-frr ~]# mount -t cifs //192.168.20.180/yqm /c/ -o username=a,password=1 //临时挂
[root@ymm-a-frr ~]# df -h //查看
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.7M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mount
192.168.20.180:/nfs 17G 2.1G 15G 12% /nfs
//192.168.20.180/yqm 17G 2.1G 15G 12% /abc
配置匿名共享:
服务端//关闭防火墙的四步
[root@ymm-xiaokeai ~]# systemctl stop firewalld //关闭防火墙
[root@ymm-xiaokeai ~]# systemctl disable firewalld //禁止开机自启
[root@ymm-xiaokeai ~]# vim /etc/selinux/config //更改防火墙的配置文件
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled //(更改为disabled)
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@ymm-xiaokeai ~]# setenforce 0 //查看测试
[root@ymm-xiaokeai ~]# yum install -y samba-* //下载Samba
[root@ymm-xiaokeai ~]# vim /etc/samba/smb.conf
# you modified it.
[global]
workgroup = SAMBA
security = user
map to guest = Bad User //加上这一行
passdb backend = tdbsam
[root@ymm-xiaokeai ~]# mkdir /opt/wangqiang //创建共享文件
[root@ymm-xiaokeai ~]# chmod 777 /opt/wangqiang //给文件赋予可读写的权限
[root@ymm-xiaokeai ~]# ll /opt/ //查看文件
总用量 0
drwxrwxrwx. 2 root root 6 3月 26 15:36 wangqiang
[root@ymm-xiaokeai ~]# cat >> /etc/samba/smb.conf <<EOF //对文件进行编辑(此格式可在外直接进行编辑)
> [wangqiang]
> commebt = wangqiang
> path = /opt/wangqiang
> browseable = yes
> guest ok = yes
> writable = yes
> public = yes
> EOF
您在 /var/spool/mail/root 中有新邮件
[root@ymm-xiaokeai ~]# tail -7 /etc/samba/smb.conf //查看文件的七行
[wangqiang]
commebt = wangqiang
path = /opt/wangqiang
browseable = yes
guest ok = yes
writable = yes
public = yes
[root@ymm-xiaokeai ~]# systemctl start smb //启动smb服务
在客户机上
[root@ymm-a-frr ~]# yum install -y samba-client //下载samba(这里不需要下载全部只需下载samba-cilent)
[root@ymm-a-frr ~]# smbclient -L 192.168.20.180 -U 'Bad User' //查看samba服务器上有哪些资源
Enter SAMBA\Bad User's password:
OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
wangqiang Disk wangqiang
IPC$ IPC IPC Service (Samba 4.6.2)
OS=[Windows 6.1] Server=[Samba 4.6.2]
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA YMM-XIAOKEAI
[root@ymm-a-frr ~]# mount -t cifs //192.168.20.180/wangqiang /opt/smb/ -o username='Bad User' //挂载
[root@ymm-a-frr ~]# df -h //查看
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 901M 0 901M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.7M 903M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mount
192.168.20.180:/nfs 17G 2.1G 15G 12% /nfs
//192.168.20.180/wangqiang 17G 2.1G 15G 12% /opt/smb