SAMBA服务

SAMBA服务简介

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

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

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

SAMBA的功能:

•共享文件和打印,实现在线编辑
•实现登录SAMBA用户的身份认证
•可以进行NetBIOS名称解析
•外围设备共享

计算机网络管理模式:

•工作组WORKGROUP:计算机对等关系,帐号信息各自管理
•域DOMAIN:C/S结构,帐号信息集中管理,DC,AD

SAMBA介绍

相关包:

Samba 提供smb服务
Samba-client 客户端软件
samba-common 通用软件
cifs-utils smb客户端工具
samba-winbind 和AD相关

相关服务进程:

smbd 提供smb(cifs)服务 TCP:139,445
nmbd NetBIOS名称解析 UDP:137,138

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

帮助参看:man smb.conf

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

客户端工具:smbclient,mount.cifs  

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服务器全局配置

workgroup 指定工作组名称
server string 主机注释信息
netbios name 指定NetBIOS名
interfaces 指定服务侦听接口和IP

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

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 日志级别,默认为0,不记录日志
max log size=50 日志文件达到50K,将轮循rotate,单位KB

Security三种认证方式:

share:匿名(CentOS7不再支持)
user:samba用户(采有linux用户,samba的独立口令)
domain:使用DC(DOMAIN CONTROLLER)认证

 passdb backend = tdbsam 密码数据库格式

实现samba用户:

包: samba-common-tools
工具:smbpasswd pdbedit
samba用户须是Linux用户,建议使用/sbin/nologin

指定工作组名称

(1)在samba服务端修改配置文件

[root@centos7~]#vim /etc/samba/smb.conf   修改samba服务
[global]                                                                                                                                         
        workgroup = WORKGROUP       修改组名为WORKGROUP
[root@centos7~]#systemctl restart smb   重启smb服务

(2)在客户端查看此时的samba修改后的组名

[root@centos6~]#smbclient -L 192.168.34.100
Enter root's password: 
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.8.3]

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.8.3)
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.8.3]

	Server               Comment
	---------            -------
	CENTOS7              Samba 4.8.3
	LPJ-PC               

	Workgroup            Master
	---------            -------
	WORKGROUP            LPJ-PC    组名已经修改为WORDGROUP

 管理SAMBA用户

    添加samba用户

smbpasswd -a <user>
pdbedit -a -u <user>

修改用户密码

smbpasswd <user>

删除用户和密码:

smbpasswd –x <user>
pdbedit –x –u <user>

查看samba用户列表:

/var/lib/samba/private/passdb.tdb
pdbedit –L –v

查看samba服务器状态

smbstatus

(1)添加两个linux系统账号,并加入到samba服务器中,作为samba服务器的账号

[root@centos7~]#useradd -s /sbin/nologin  smbuser1
[root@centos7~]#useradd -s /sbin/nologin  smbuser2
[root@centos7~]#smbpasswd -a smbuser1    将linux系统的用户账号添加到samba服务器中
New SMB password:
Retype new SMB password:
Added user smbuser1.
[root@centos7~]#smbpasswd -a smbuser2   将linux系统用户账号添加到samba服务器中
New SMB password:
Retype new SMB password:
Added user smbuser2.

(2)通过pdbedit命令查看当前samba服务器的用户账号

[root@centos7~]#pdbedit -L
smbuser1:1002:
smbuser2:1003:

 利用samba服务共享目录

(1)在samba服务端新建一个samba目录

[root@centos7data]#ls
f1  ftproot  ftproot2  nfsdir1  nfsdir2  www
[root@centos7data]#mkdir smbshare   新建一个smbshare目录
[root@centos7data]#cp /etc/fstab  /data/smbshare/f1   复制的文件重命名为f1
[root@centos7data]#cp /etc/fstab  /data/smbshare/f2   复制的文件重命名为f2

(2)修改samba服务配置文件

[root@centos7data]#vim /etc/samba/smb.conf
[share]  指定共享的文件名
path=/data/smbshare  指定共享目录路径
read only=YES    默认为只读文件
write list = smbuser1   只允许smbuser1进行写

 在客户端也可以直接挂载共享的文件(此方法会暴露历史密码)

[root@centos6~]#mount  -o username=smbuser1,password=centos  //192.168.34.100/share  /mnt 

(3)重启samba服务

[root@centos7data]#systemctl restart smb

(4)将共享的目录加上写权限

[root@centos7data]#chmod 777 smbshare
[root@centos7data]#ll -d smbshare
drwxrwxrwx 2 root root 26 Dec  4 20:18 smbshare

 在linux客户端可以看到当前共享的文件

[root@centos6~]#smbclient //192.168.34.100/share  -U smbuser1%centos
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.8.3]
smb: > pwd
Current directory is \192.168.34.100share
smb: > ls
  .                                   D        0  Wed Dec  4 20:18:32 2019
  ..                                  D        0  Wed Dec  4 20:18:25 2019
  f1                                         595  Wed Dec  4 20:18:27 2019
  f2                                         595  Wed Dec  4 20:18:32 2019

		51175 blocks of size 1048576. 51142 blocks available

 (5)此时在windows上开始栏输入运行,然后用smbuser1用户登陆共享目录,可以在共享目录中新建文件(即写文件)

登陆smbuser1账号

在共享目录中新建文件

之前登陆的账号已经被记录到windows系统中,此时需要将文件删除,删除之前需要将之前的共享文件关掉 

 此时再登陆smbuser2账号

由于smbuser2账号只有只读权限,没有写权限,此时就无法创建文件

 

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

[共享名称] 远程网络看到的共享名称
comment 注释信息
path 所共享的目录路径
public 能否被guest访问的共享,默认no,和guest ok 类似
browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
writable=yes 可以被所有用户读写,默认为no
read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
write list 三种形式:用户,@组名,+组名,用,分隔
    如writable=no,列表中用户或组可读写,不在列表中用户只读
valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

实现用户独立的配置文件  

 (1)在samba服务中修改全局性的配置文件

[root@centos7data]#vim /etc/samba/smb.conf
[global]
       
        config file=/etc/samba/conf.d/%U                                                                                                         
    

 (2)新建一个目录(/etc/samba/conf.d)

[root@centos7data]#mkdir /etc/samba/conf.d
[root@centos7data]#cd /etc/samba/conf.d
[root@centos7conf.d]#vim smbuser1
[share]
path=/data/smbuser1   指定共享的目录文件

(3)新建一个指定的smbuser1目录,并在共享目录下新建一个文件,重启smb服务

[root@centos7conf.d]#mkdir /data/smbuser1
[root@centos7conf.d]#cd /data/smbuser1
[root@centos7smbuser1]#touch smbuserfile
[root@centos7smbuser1]#systemctl restart smb

 (4)此时在windows登陆smbuser1账号

 共享的目录文件就是新建的smbuserfile文件

 

 不同客户机采用不同日志

(1)在samba配置文件中指定日志路径

[root@centos7smbuser1]#vim /etc/samba/smb.conf
[global]

        Log file=/var/log/samba/log.%m
        log level = 2    日志级别,默认为0,不记录日志

 (2)重启samba服务,并查看日志文件信息

[root@centos7smbuser1]#systemctl restart smb   重启samba服务
[root@centos7smbuser1]#cat /var/log/samba/log.smbd   查看指定日志路径文件信息
[2019/12/04 19:36:52.004069,  0] ../lib/util/become_daemon.c:138(daemon_ready)
  daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
[2019/12/04 19:38:26.694305,  0] ../lib/util/become_daemon.c:138(daemon_ready)
  daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
[2019/12/04 19:40:23.463666,  0] ../lib/util/become_daemon.c:138(daemon_ready)
  daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections

此时客户端登陆samba服务

查看客户端登陆的log日志信息,最后一行可以看到是通过登录smbuser1账号登录

  

 

 

 

 

  

  

  

  

  

 

原文地址:https://www.cnblogs.com/struggle-1216/p/11984513.html