SAMBA服务的介绍:

SMB:Server Message Block服务器消息块,IBM发布,最 早是DOS网络文件共享协议 

Cifs:common internet file system,微软基于SMB发布

SAMBA:1991年Andrew Tridgell,实现windows和UNIX相通

SAMBA:(linux部署SAMBA服务可以实现三种服务/应用

            nmdb:netbios

            smdb:cifs

            winbindd:(windows的活动目录)

SAMBA服务可实现跨平台的网络文件共享服务

SAMBA的功能:(实现linxu,unix和win实现文件件共享)应用/

• 共享文件和打印,实现在线编辑

• 实现登录SAMBA用户的身份认证

• 可以进行NetBIOS名称解析

• 外围设备共享

计算机网络管理模式:

• 工作组WORKGROUP:计算机对等关系,帐号信息各自管理

• 域DOMAIN:C/S结构,帐号信息集中管理,DC,AD

相关包:

Samba 提供smb服务  yum软件包: samba.x86_64

samba-client 客户端软件

samba-common 通用软件

cifs-utils  smb客户端工具     域名软件包:cifs-utils-devel.x86_64 

samba-winbind 和AD相关

samba-swat    图形化管理包

相关服务进程:

smbd 提供smb(cifs)服务 TCP:139,445

nmbd NetBIOS名称解析 UDP:137,138

            NETBIOS实现实现网络基本的输入输出系统):windows基于主机实现互相通讯的机制;

                        最长15字符

主配置文件:/etc/samba/smb.conf

centos7中主配置文件简化,

                    可以参此配置文件:  /etc/samba/smb.conf.example 

config file=/etc/samba/conf.d/%U 用户独立的配置文件

帮助参看:man smb.conf

语法检查: testparm [-v] [/etc/samba/smb.conf]

客户端工具:smbclient,mount.cifs

CentOS7不支持同一目录同时用nfs和samba共享,因为使用锁机制不同 

linux服务器win访问 

linux搭建服务
1 安装服务端
~]# yum install  samba.x86_64
2更改配置文件
~]# vim /etc/samba/smb.conf
[global]
workgroup = WORKGROUP                    
3 添加系统用户添加为samba用户
~]# smbpasswd -a smbuser1
4启动服务
~]# systemctl restart smb.service 
5windows访问:\\smb_server_IP\

实现samba用户:

包:samba-common-tools
工具:smbpasswd pdbedit

samba用户须是Linux用户,建议使用/sbin/nologin

管理SAMBA用户
添加samba用户(添加系统用户为samba用户

smbpasswd -a

pdbedit -a -u

 示例:~]# smbpasswd -a smbuser1

禁用samba用户

smbpasswd -d 

pdbedit -d -u

启用samba用户

smbpasswd -e 

pdbedit -e -u

修改用户密码

smbpasswd

删除用户和密码:

smbpasswd –x

pdbedit –x –u

查看samba用户列表:

/var/lib/samba/private/passdb.tdb

pdbedit –L –v

查看samba服务器状态

smbstatus

测试连接命令:
root@localhost ~]# smbclient  -L 192.168.117.17 -U liubei
root@localhost ~]# smbclient  -L  //192.168.117.17  -U liubei  查看刘备用户可以访问到的共享目录
root@localhost ~]# smbclient   //192.168.117.17/shared -U liubei  刘备用户登录到shared共享名的目录
 显示系统所有用户
~]# getent passwd

显示samba所有用户
[root@localhost ~]# pdbedit -L
smbuser1:2008:
liubei:2006:
usermod -aG  附加组名  用户名

配置文件:

/etc/samba/smb.conf继承了.ini文件的格式,用[ ] 分成不同的部分

全局设置:

[global] 服务器通用或全局设置的部分

特定共享设置:

[homes] 用户的家目录共享

[printers] 定义打印机资源和服务

[sharename] 自定义的共享目录配置

其中:#和;开头的语句为注释,大小写不敏感(;为可启用的选项)

宏定义:

%m 客户端主机的NetBIOS名         %M 客户端主机的FQDN

%H 当前用户家目录路径                 %U 当前用户用户名

%g 当前用户所属组                         %h samba服务器的主机名

%L samba服务器的NetBIOS名        %I 客户端主机的IP

%T 当前日期和时间                         %S 可登录的用户名

SAMBA服务器的配置:

SAMBA服务器全局配置部分:

         [shared]  共享名,客户端使用此名称连接

workgroup = WORKGROUP   指定工作组名称

server string = Windows 7 Ultimate 6.1 服务端版本号;主机注释信息

netbios name = magetest 使用nmb服务进行解析; 指定NetBIOS名

interfaces =lo 172.18.0.1/24 指定服务侦听接口和IP

hosts allow = 127. 192.168.123.7 允许哪些客户端可以访问; 

可用“,” ,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置

主机IP信息及主机名信息:

IPv4 network/prefix: 172.25.0.0/24 IPv4前缀: 172.25.0.

IPv4 network/netmask: 172.25.0.0/255.255.255.0

主机名: desktop.example.com

以example.com后缀的主机名: .example.com

文件写法示例:

hosts allow = 172.25.

hosts allow = 172.25. .example.com

hosts deny 拒绝指定主机访问

config file=/etc/samba/conf.d/%U 用户独立的配置文件

Log file=/var/log/samba/log.%m  日志记录的位置;不同客户机采用不同日志

log level = 2 日志记录的级别

max log size=50 日志文件达到50K,将轮循(rotate),单位KB

Security =user     认证方式只支持user 

                    三种认证方式:

share:匿名(CentOS7不再支持)

user:samba用户(采有linux用户,samba的独立口令)

       示例: security = user 只支持user

domain:使用DC(DOMAIN CONTROLLER)认证

passdb backend = tdbsam 密码数据库格式

配置目录共享

每个共享目录应该有独立的[ ]部分 :

[共享名称] 远程网络看到的共享名称

path = /app/samba  共享的真实路径;所共享的目录路径

comment = magedu file server  描述信息 注释信息

guest ok = no  是否允许来宾账户访问

public =no 能否被guest(匪名用户)访问的共享,默认no,和guest ok 类似

browseable = no 是否允许所有用户浏览此共享,默认为yes,no为隐藏

writable=yes 可以被所有用户读写,默认为no

read only=no 和writable=yes等价,如与以上设置冲突,放在 后面的设置生效,默认只读 

write list = smb1 @smbgrp 指明允许指定用户或组可写,

三种形式:用户,@组名,+组名,用","分隔 

注意:  如writable=no,列表中用户或组可读写,不在列表中用户只读 ;

            若writeable = yes 则所有用户可写

valid users = smb1, smb2, smb3,smb4, smb5 仅指定用户才可以访问共享,如为空,将允许所有用 户,用户名之间用空格或","分隔

create mask = 0644 创建文件的默认权限

directory mask = 0755 创建目录的默认权限

编辑/etc/samba/smb.conf

[share]

path = /app/dir

valid users=wang,@admins

writeable = no

browseable = no

挂载CIFS文件系统

手动挂载

[root@centos7 ~]# mount //172.18.252.23/shared  /mnt/smb  -o user=smb1
或
[root@centos7 ~]# mount //172.18.252.23/shared  /mnt/smb  -o user=smb1%123
不需要交互
[root@centos7 ~]# mount //172.18.252.23/shared  /mnt/smb  -o user=smb1,password=123

开机自动挂载

1、将用户名密码写入文件并设置400权限,以实现对用户名密码的保护

[root@centos7 ~]# vim /etc/smb.txt   
username=smb1
password=123
[root@centos7 ~]# chmod 400 /etc/smb.txt

2、编辑/etc/fstab 系统自动挂载配置文件,进行配置;可以用文件代替用户名和密码的

[root@centos7 ~]# vim /etc/fstab
//172.18.252.23/shared /mnt/smb   cifs	credentials=/etc/smb.txt 0 0

3、手动测试自动挂载

[root@centos7 ~]# mount -a

实验:实现SMB共享

samba服务端端


1、在samba服务器上安装samba包

 

yum -y install samba

2、创建samba用户和组

 

groupadd -r admins
useradd -s /sbin/nologin -G admins wang
smbpasswd -a wang
useradd -s /sbin/nologin mage
smbpasswd -a mage


3、创建samba共享目录,并设置SElin

 

mkdir /testdir/smbshare
chgrp admins /testdir/smbshare
chmod 2775 /testdir/smbshare

semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?'
restorecon -vvFR /testdir/smbshare


4、samba服务器配置

 

 vim /etc/samba/smb.conf
 security = user
passdb backend = tdbsam
[share]
path = /testdir/smbshare
write list = @admins
systemctl start smb nmb
systemctl enable smb nmb
firewall-cmd --permanent --add-service=samba 
firewall-cmd --reload

samba客户端访问

1、安装包

 

yum -y install cifs-utils

2、用wang用户挂载smb共享并访问

 

mkdir /mnt/wang
mount -o username=wang //smbserver/share /mnt/wang 
echo "Hello wang" >/mnt/wang/wangfile.txt


3、用mage用户挂载smb共享并访问

 

mkdir /mnt/mage
mount -o username=mage //smbserver/share /mnt/mage 
touch /mnt/mage/magefile.txt