一、Samba软件的组成
SMB(Server Message Block,服务消息块)是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易
CIFS 协议(Common Internet File System,通用互联网文件系统)
Samba 服务器的主要程序
smbd:提供对服务器中文件、打印资源的共享访问,端口tcp 139 445
nmbd:提供基于 NetBIOS 主机名称的解析,端口udp 137 138
Samba 的配置目录及文件
Samba服务的配置文件位于/etc/samba/目录中,其中smb.conf是主配置文件
以 # 号开头的行表示注释性文字
以 ; 号开头的行表示配置样例
[global]:全局设置
[homes]:用户目录共享设置
[printers]:打印机共享设置
[自定义]:自定义名称的共享目录设置
二、构建文件共享服务器
1.可匿名访问的共享
适用于公开的资源共享,一般只建议提供只读访问,不需要密码,在安全性不高的情况下,可方便、快捷的与其他主机共享资源
例如:公司需要配置一台文件服务器,需要建立一个public目录,存放公共数据,如公司的规章制度、员工手册等,允许所有员工访问,但只有读取权限
# mount /dev/cdrom /media
# rpm -ivh /media/Packages/samba-3.6.9-164.e16.x86_64
# mkdir /public
# vim /etc/samba/smb.conf
[global]
workgroup=WORKGROUP //Windows主机默认工作组
security=share //允许匿名访问
[公共目录]
comment=注释
path=/public //共享文件夹路径
public=yes //是否所有人都可访问共享目录
read only=yes //共享文件是否只读
# service smb start //开启Samba服务
配置完成,可以从Windows客户机或Linux客户机中浏览并匿名访问此文件了
2.需要用户验证的共享
设置用户验证的共享文件夹时,除了需要改smb.conf配置文件,还要先创建授权的共享账户
(1)建立Samba用户数据库
Samba共享用户的账号数据库文件默认位于 /var/lib/samba/private/passdb.tdb,是一个经过加密的文件,保存了Samba用户的账号、密码、状态等信息
a.创建Samba共享用户
例如:将用户yangshufan添加到Samba共享用户
b.查看Samba共享用户
# pdbedit -L //列出所有Samba用户
# pdbedit -vL yangshufan //只列出yangshufan用户,输出详细信息
c.删除Samba共享用户
# pdbedit -x -u yangshufan
(2)设置用户访问授权
当授权多个用户是,用逗号或空格进行分隔;授权用户组时,可使用“@组名”的形式
例如:将本地目录/share发布为共享文件夹,要求共享用户yangshufan、51cto能访问,其中yangshufan用户具有写入权限
# mkdir /share
# vim /etc/samba/smb.conf
[global]
security=user //需本服务器验证用户名及密码
[共享]
comment=注释
path=/share
public=no
read only=yes
valid users= yangshufan,51cto //只有哪些用户可登陆
write list= yangshufan //只有哪些用户可写
# service smb reload
(3)确定目录访问授权
共享用户最终是否拥有读取、写入权限,除了设置用户授权外,还需要共享的本地文件夹必须有相应的读取、写入权限
例如:为了方便,可将/share文件夹的权限设置为777
# chmod 777 /share
共享用户所上传的文件、创建的子目录的默认权限可分别修改以下配置项
例如:用户访问共享文件时,所上传的目录默认权限为755,文件的默认权限为644
# vim /etc/samba/smb.conf
[共享]
directory mask=0755 //文件夹权限
create mask=0644 //文件权限
3.用户映射及访问地址限制
为了进一步提高Samba共享服务的安全性,除了可以对指定的共享目录设置用户权限以外,还可以采用用户映射、访问地址限制等措施
(1)共享账户映射(别名)
共享账户的映射文件默认位于 /etc/samba/smbusers
例如:为现有Samba共享用户yangshufan指定两个别名yyy、sss
# vim /etc/samba/smbusers
yangshufan= yyy sss
# vim /etc/samba/smb.conf
[global]
username map= /etc/samba/smbusers
# service smb reload
(2)访问地址限制
一般用于[global]全局配置模式,下面两种方式任选其一
hosts allow 配置项:仅允许特定的客户机
hosts deny 配置项:仅拒绝特定的客户机
例如:仅允许来着192.168.1.0/24、172.16.0.0/16网段的客户机访问Samba服务器
# vim /etc/samba/smb.conf
[global]
hosts allow=192.168.1. 172.16.
# service smb reload
三、在Linux客户机访问共享文件夹
1.使用smbclient访问共享文件夹
(1)查询目标主机的共享资源列表
例如:匿名查询Samba服务器192.168.1.1中提供的共享资源列表
# smbclient -L 192.168.1.1
(2)登陆并访问共享文件夹
例如:登陆Samba服务器后,下载文件aaa、上传文件bbb
# smbclient -U yangshufan //192.168.1.1/共享
smb: \> pwd //查看当前工作路径
smb: \> ls //列出当前目录下的内容
smb: \> lcd /root/ //将本地目录切换到/root/
smb: \> cd share/ //切换到共享目录的share子目录
smb: \share\> mget aaa //下载文件aaa
smb: \share\> mput bbb //上传文件bbb
smb: \share\> quit //退出共享目录
2.使用mount挂载共享文件夹
例如:将Samba服务器192.168.1.1的共享文件夹挂载到本地的/media/smbdir文件夹,以共享yangshufan进行验证
# mkdir /media/smbdir
# mount -o username=yangshufan //192.168.1.1/共享 /media/smbdir
挂载成功后,可以对Samba服务器的访问权限进行测试,根据上面的配置,yangshufan用户对共享目录具有写入权限,所上传的目录默认权限为755,文件的默认权限为644
# cd /media/smbdir //切换到挂载点
# mkdir mydir //创建测试文件夹
# touch myfile //创建测试文件
# ls -ld my* //验证所创建的目录、文件的权限
drwxr-xr-x 2 505 505 8月2 12:12 mydir
-rw-r--r-- 2 505 505 8月2 12:13 myfile