Samba
构建Samba文件共享服务
[root@linux ~]# ls /media/RHEL_5.5\ i386\ DVD/Server/*samba*
/media/RHEL_5.5 i386 DVD/Server/samba-3.0.33-3.28.el5.i386.rpm
/media/RHEL_5.5 i386 DVD/Server/samba-client-3.0.33-3.28.el5.i386.rpm
/media/RHEL_5.5 i386 DVD/Server/samba-common-3.0.33-3.28.el5.i386.rpm
/media/RHEL_5.5 i386 DVD/Server/samba-swat-3.0.33-3.28.el5.i386.rpm
/media/RHEL_5.5 i386 DVD/Server/system-config-samba-1.2.41-5.el5.noarch.rpm
以上五个软件包中,samba和samba-client软件包分别用于提供服务器和客户端程序文件,samba-common软件包提供了服务器和客户端都需要的公共文件,system-config-samba软件包用于提供图形界面管理程序(需要在X图形环境中使用),而samba-swat软件包是一个Web方式的管理工具。
[root@linux ~]# rpm -qa | grep samba
samba-common-3.0.33-3.28.el5
samba-client-3.0.33-3.28.el5
samba-3.0.33-3.28.el5
确认当前系统中至少安装有samba,samba-client,samba-common这三个软件包,以便能够实现samba服务器和客户端的基本功能
Samba服务器主要提供两个服务程序
smbd:为客户机提供服务器中共享资源(目录和文件等)的访问。
nmbd:提供基于NetBIOS主机名称的解析,为windows网络中的主机进行名称解析。
通过“/etc/init.d/smb”脚本文件可以控制Samba服务的启动与终止,无需单独运行smbd或nmbd。
[root@linux ~]# rpm -ivh /media/RHEL_5.5\ i386\ DVD/Server/samba-3.0.33-3.28.el5.i386.rpm
//安装samba服务主程序
warning: /media/RHEL_5.5 i386 DVD/Server/samba-3.0.33-3.28.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
perl(Convert::ASN1) is needed by samba-3.0.33-3.28.el5.i386
//安装错误提示安装依赖软件perl(Convert::ASN1)
[root@linux ~]# rpm -ivh /media/RHEL_5.5\ i386\ DVD/Server/perl-Convert-ASN1-0.20-1.1.
noarch.rpm //安装依赖软件
warning: /media/RHEL_5.5 i386 DVD/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:perl-Convert-ASN1 ########################################### [100%]
[root@linux ~]# rpm -ivh /media/RHEL_5.5\ i386\ DVD/Server/samba-3.0.33-3.28.el5.i386.rpm
//安装samba服务主程序
warning: /media/RHEL_5.5 i386 DVD/Server/samba-3.0.33-3.28.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:samba ########################################### [100%]
[root@linux ~]#
[root@linux ~]# grep -v "^#" /etc/samba/smb.conf | grep -v "^;" | grep -v "^$"
//使用grep命令,可以过滤掉smb.conf配置文件中的注释,样例及空白行
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
#obtain list of printers automatically on SystemV
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[root@linux ~]#
[global]全局设置:这部分配置的内容对整个samba服务器有效。
[homes]用户目录共享设置:设置对应samba用户宿主目录的默认共享,即当用户访问服务器中与自己用户名同名的共享文件夹时,默认会映射 到自己的宿主目录
[printers]打印共享设置:如果共享打印机,侧在这里配置。
Smb.conf文件常见配置项及含意
workgroup 设置服务器所在的工作组名称,“WORKGROUP”(windows主机默认工作组)
server string 设置服务器的说明文字,用于描述samba服务器。
security 设置服务器的安全级别,可以为以下四个值中的一个:share(可匿名访问),user(需要本机服务器验证用户名及密码),server(由另一台服务器验证用户名及密码),domain(由windows域控制器验证用户名及密码)。
log file 设置samba服务器的日志文件,默认设置为“/var/log/samba/%m.log”,表示日志文件保存的“/var/log/samba/”目录中,按每个客户机建立一个日志文件,“%m”变量表示客户端主机或IP地址。
max log size 设置日志文件的最大容量,默认问50,(表示50KB)。
comment 设置对应共享的注释,说明信息。
path 设置对应共享目录在服务去中的文件夹路径。
browseable 设置该共享目录在“网上邻居”中是否可见。设置为on时相当与隐藏共享目录。
guest 设置是否所以人都可以访问共享目录,与public配置项作用相同。
writable 设置该共享目录是否可写,与read only的作用相反。
建立可匿名访问的文件共享
[root@linux ~]# mkdir /movie
[root@linux ~]# vim /etc/samba/smb.conf //修改配置文件
[global]
workgroup = WORKGROUP //修改为与windws主机同意默认工作组
security = share //将安全级别修改为share
[movie] //在文件末尾添加此下的配置内容
comment = public share with movie files //共享说明
path = /movie //对应共享目录在服务去上的文件路径
public = yes //设置是否所以人都可以访问共享目录
read only = yes //设置该目录是否可读
[root@linux ~]# service smb start //启动samba服务
启动 SMB 服务: [确定]
启动 NMB 服务: [确定]
[root@linux ~]# netstat -anptu | grep mbd //验证samba服务监听状态
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 18724/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 18724/smbd
udp 0 0 192.168.0.135:137 0.0.0.0:* 18727/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 18727/nmbd
udp 0 0 192.168.0.135:138 0.0.0.0:* 18727/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 18727/nmbd
从以上结果可以看到smbd服务程序监听TCP协议的139端口(SMB),445端口(CIFS),nmbd服务程序监听UDP协议的137-138端口(NetBIOS)
添加用户授权设置
在smb.conf猪配置文件中,共享目录的用户授权设置主要由“valid users”,“write list”配置项指定,同时要取消公开访问的设置(即设为“public = no”)。
需要授权多个用户是与空格或逗号分隔。注意不要使用账号别名,而应使用实际的Samba用户名。授权一个用户组使用“@组名”的形式,组内的每个用户都需要有对应的Samba用户。
若需要设置Samba用户在共享目录中建立的字目录,文件的默认权限,可以使用配置项“directory mask”,“create mask”。
[root@linux ~]# useradd vina //添加一个系统用户
[root@linux ~]# smbpasswd -a vina //添加指定的Samba用户账号
New SMB password: //添加samba密码
Retype new SMB password:
Added user vina.
[root@linux ~]# smbpasswd -a root //添加指定的Samba用户账号
New SMB password: //添加samba密码
Retype new SMB password:
[root@linux ~]# vim /etc/samba/smb.conf //修改主配置文件
[global]
workgroup = WORKGROUP
security = user //将安全级别修改为“user”
[movie]
comment = public share with movie files
path = /movie
public = no
read only = no
valid users = via, @root //合法访问者为用户vina和root组内的用户
write list = root //root用户有写入权限
directory mask = 0744 //用户在共享目录建立文件夹的默认权限
create mask = 0600 //用户在共享目录中建立文件的默认权限
smbpasswd
-h:显示smbpasswd命令的帮助信息
-a:添加指定的samba用户账号
-d:禁止指定的用户账号
-e:启用指定的用户账号
-x:删除指定的用户帐号
基于windows客户端主机的特点和用户安全考虑samba服务器提供了用户名称映射(usernamemap)功能,即可以将多个不同的用户名称对应为同一个samba账号,起到隐藏对应的系统用户账号效果,减少密码穷举攻击的风险。
由于samba用户vina对应有同名的系统用户,而映射的名称player只相当一个别名(而非实际存在的用户),为了安全起见,看不将vina账号告诉共享用户,而只告诉其名为player的用户账号和密码(也就是vina帐号的密码)
[root@linux ~]# vim /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin //系统默认映射用户
nobody = guest pcguest smbguest //系统默认映射的组
vina = player //添加用户自定义映射
[root@linux ~]# vim /etc/samba/smb.conf //修改主配置文件
username map = /etc/samba/smbusers //在[global]全局配置中指定名称映射文件
添加客户端地址授权设置
在smb.conf文件中,使用“hosts allow”配置可以设置仅允许访问共享的客户机地址,使用“hosts deny”配置项可以设置仅拒绝访问共享的客户机地址,两者选其一。配置参数可以是用主机名或IP地址,网络地址的形式,多个地址之间空格或逗号分隔。
[root@linux ~]# vim /etc/samba/smb.conf //修改主配置文件
hosts allow = 192.168.168. 173.17.0. //在[global]全局配置部分添加配置
以上是仅允许192.168.168.0/24 173.17.0.0/16 网段内的客户机访问samba服务器
[root@linux ~]# chkconfig --level 35 smb on
[root@linux ~]# chkconfig --list smb
smb 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
使用linux客户端访问文件按共享服务
查看samba服务器 192.168.168.1中的共享资源列表
[root@linux ~]# smbclient -L 192.168.168.1 //linux客户端的访问
Password: //健如有效samba密码
Domain=[LINUX] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.28.el5)
movie Disk public share with movie files //用户自定义的共享
Microsoft_XPS_Document_Writer:1 Printer Microsoft XPS Document Writer
Fax:2 Printer Fax
root Disk Home Directories
Domain=[LINUX] OS=[Unix] Server=[Samba 3.0.33-3.28.el5]
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP LINUX
将samba服务器192.168.168.1中的共享目录movie挂载到本地的文件夹“/media”中以用户vina账户进行验证
[root@linux ~]# mount -o username=vina //192.168.168.1/movie /media/
Password: