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.100\share\ 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账号登录