十二、samba服务器配置和管理
12.1、Samba简介
Linux和Windows是两种无论在风格还是在技术上都完全不同的操作系统,它们是两个对立的阵形。各自都拥有自己的用户群和市场。但是,要实现这两种系统之间的资源共享,则需要使用Samba。Samba采用的是C/S工作模式,通过它可以将一台Linux系统主机配置为Samba服务器,而其他安装和使用了SMB协议的计算机可以通过Samba服务与Linux实现文件和打印机的共享。
Samba服务的安装可以通过yum命令安装,也可以通过源代码安装,为了能够获取最新版的Samba软件,可以从其官网https://www.samba.org/上下载该软件的源代码安装包。
[root@localhost home]# wget https://download.samba.org/pub/samba/stable/samba-4.6.5.tar.gz [root@localhost home]# tar xf samba-4.6.5.tar.gz[root@localhost home]# cd samba-4.6.5[root@localhost samba-4.6.5]# ./configure[root@localhost samba-4.6.5]# make && make install[root@localhost samba-4.6.5]# cp /home/samba-4.6.5/packaging/LSB/smb.conf /usr/local/samba/etc/ #复制配置文件[root@localhost samba-4.6.5]# echo '/usr/local/samba/lib' >> /etc/ld.so.conf [root@localhost samba-4.6.5]# ldconfig #添加库文件到系统[root@localhost samba-4.6.5]# grep 'netbios' /etc/services #确保文件中有这些内容netbios-ns 137/tcp # NETBIOS Name Servicenetbios-ns 137/udpnetbios-dgm 138/tcp # NETBIOS Datagram Servicenetbios-dgm 138/udpnetbios-ssn 139/tcp # NETBIOS session servicenetbios-ssn 139/udp
启动和关闭Samba
Samba服务器包括smbd和nmbd两个进程,它们分别是Samba的SMB(Service Message Block)服务的守护进程和NetBIOS服务守护进程。要使Samba服务器正常运行,必须要同时启动这两个进程,其作用分别为:
smbd:Samba的SMB服务守护进程,使用SMB协议与客户进行连接,完成用户认证、权限管理和文件共享任务。 nmbd:NetBIOS名字服务的守护进程,可以帮助客户端定位服务器和域,相当于Windows NT中的WINS服务器。 |
[root@localhost sbin]# /usr/local/samba/sbin/nmbd -D #启动Samba[root@localhost sbin]# /usr/local/samba/sbin/smbd -D[root@localhost samba]# ps -ef | grep nmbd #查看进程是否启动root 35891 1 0 18:02 ? 00:00:00 /usr/local/samba/sbin/nmbd -Droot 35899 1305 0 18:02 pts/0 00:00:00 grep nmbd[root@localhost samba]# ps -ef | grep smbdroot 35893 1 0 18:02 ? 00:00:00 /usr/local/samba/sbin/smbd -Droot 35894 35893 0 18:02 ? 00:00:00 /usr/local/samba/sbin/smbd -Droot 35895 35893 0 18:02 ? 00:00:00 /usr/local/samba/sbin/smbd -Droot 35897 35893 0 18:02 ? 00:00:00 /usr/local/samba/sbin/smbd -Droot 35901 1305 0 18:02 pts/0 00:00:00 grep smbd
12.2、Samba服务器基本配置
Samba的配置更改主要通过修改其主配置文件smb.conf来完成,该配置文件由全局设置和共享定义两部分组成。文件更改后不会立刻生效,用户需要重启Samba服务器或执行相应的命令重载配置文件使之生效
smb.conf配置文件
smb.conf是Samba的主配置文件,包括全局设置和共享定义。其中全局设置定义影响整个Samba系统运行的全局选项,用于设置整个系统的规则;共享定义则是对系统中的共享资源进行定义,该部分可以由多个段组成,常见的包括:用户主目录段,共享目录段和打印段,每个段中可以再定义详细的共享选项。
全局设置选项
选项名称 | 说明 |
netbios name | 设置NetBIOS名称,默认为服务器主机名 |
workgroup | 设置Samba服务器所属的工作组名称 |
server string | 设置samba服务器的说明信息 |
interfaces bind interfaces only | 如果服务器有多个IP地址,可以使用interfaces选项把IP地址列出来。如果bind interfaces only设置为yes,则表示 Samba将绑定interfaces选项所设置的IP地址 |
hosts allow hosts deny | hosts allow指定允许访问该Samba服务器的客户端列表 hosts deny指定拒绝访问客户端列表 |
printcap | 设置[printers]段中所使用的打印机配置文件 |
load printers | 启用该选项后将自动共享printcap name所指定的配置文件中的所有打印机 |
printing | 设置打印机的类型 |
guest account | 指定samba中使用的guest帐号,默认nobody |
wins server | 指定wins服务器的ipdizhi或主机名 |
wins support | 设置samba服务器是否作为wins服务器 |
wins proxy | 设置是否启用WINS代理功能 |
dns proxy | 设置是否启用DNS代理功能 |
username map | 指定用户映射文件的位置 |
共享选项
共享目录,在该段中指定了一个通过samba进行共享的目录,定义共享目录的各种设置。要通过Samba共享服务器上的目录/home/samba,共享名为share,用户对该目录只能读不能写入。
[share] #共享目录的共享名 comment = For testing only #共享目录的说明信息 path = /home/samba #指定共享目录 read only = yes #该共享目录是只读
用户主目录,使用[home]来标示,定义用户对其主目录的访问设置。
[home] comment = Home Directories #注释信息 browseable = no #不可浏览 writable = yes #可写 valid users = mary fred #有效用户列表 create mode =0664 #权限模式 directory mode = 0775 #目录模式
打印机,共享打印机是Samba服务器的常见应用,使用Samba共享打印机可以有效的节约硬件资源。
printcap name = /etc/printcap #指定系统中打印机配置文件位置load printers = yes #指定自动共享/etc/printcap文件中设置打印机printing = cups #指定达应急类型[printers] comment = All Printers #注释信息 path = /var/spool/samba #指定打印机池 browseable = no #不可浏览 public = yes #指定允许guest帐号使用打印机 printable = yes #允许使用该打印机打印
Samba用户管理
Samba的用户是与操作系统用户联系在一起,在创建Samba用户前,必须先添加一个与之同名的操作系统用户,但是两者的口令可以不相同。Samba用户通过smbpasswd命令进行管理,其命令格式为:
smbpasswd [options] [username]
常用选项:
-h:显示命令帮助信息 -a:添加用户 -d:禁用某个用户 -e:启用某个用户 -n:设置用户密码为空 -x:删除某个用户 |
用户映射,为防止Samba用户通过Samba帐号来猜测操作系统用户的信息以及提供灵活的用户管理方法,所以就出现Samba用户映射,映射的账户不需要创建。实现用户映射的方法:
1、编辑smb.conf在[global]部分添加用户映射文件
username map = /etc/samba/smbusers
2、手工创建用户映射文件/etc/samba/smbusers,该文件格式为:
#Samba用户账号 = 需要映射的账号列表root = administrator adminnobody = guestshare = jim jack
3、重启samba服务器
12.3、日志设置
Samba的日志默认存放在'
log file = /var/log/samba/log.%m
其中,%m是Samba配置文件保留变量,表示客户端的NetBIOS,常见保留变量有:
变量 | 说明 |
%a | 客户端架构 |
%d | 当前服务器进程的进程号 |
%D | 用户的WinNT域 |
%G | 登录用户的主用户组 |
%H | 用户的主目录 |
%h | Samba服务器的主机名 |
%I | 客户端的IP地址 |
%j | 打印任务的任务号 |
%L | Samba服务器的NetBIOS名称 |
%M | 客户端的主机名称 |
%m | 客户端的NetBIOS名称 |
%p | 打印的文件名称 |
%S | 当前共享的名称 |
%T | 当前的日期和时间 |
%v | Samba版本号 |
%$name | 环境变量name的变量 |