1、samba概述
1)smb和cifs
smb协议:server message block,服务消息块
cifs协议:common internet file system,通用互联网文件系统
smb/cifs默认是微软的私有协议
2)samba
samba是著名的开源软件项目,在linux/unix上实现smb和cifs协议,可以跨平台文件共享
samba软件包组成:
samba-3.0.33-3.28.el5 -----服务端程序
samba-client-3.0.33-3.28.el5 -----客户端程序
samba-common-3.0.33-3.28.el5 -----公共组件
samba-swat-3.0.33-3.28.el5.i386.rpm -----图形化web管理程序
system-config-samba -----图形化界面的管理程序
samba提供两个服务程序:
smbd提供共享资源的访问,监听tcp 的139端口(smb协议)和445端口(cifs协议)
nmbd提供netbios名称解析,监听udp的137和138端口(netbios协议)
smb服务:service smb start -----会自动加载smbd和nmbd组件程序
3)安装
rpm -ivh /mnt/iso/server/perl-convert-asn1-0.20-1.1.noarch.rpm
rpm -ivh /mnt/iso/server/samba-3.0.33-3.28.el5.i386.rpm
注:①默认情况下已安装samba-common和samba-client
②perl-convert-asn1是samba所依赖的软件包,必须安装
2、主配置文件/etc/samba/smb.conf
#表示注释行,;表示样例行,过滤:grep -v "#" /etc/samba/smb.conf |grep -v "^;" |grep -v "^$"
testparm命令可用于检查配置文件正确性
此配置文件中关键字对大小写不敏感
1)常见全局配置项
workgroup:所在工作组名称
server string:服务器描述信息
security:安全级别share、user、server、domain
log file:日志文件位置,/var/log/samba/%m.log每个客户机建立一个日志,%m变量表示客户机地址
passwd backend---设置账户文件的类型,默认为tdbsam,若需兼容旧版samba密码则改为smbpasswd
2)常见共享目录配置项
comment:对共享目录的注释、说明信息
path:共享目录在服务器中对应的实际路径
browseable:该共享目录是否可见,值为no时相当于隐藏共享目录,类似于windows中的共享名加$
guest ok:是否允许所有人访问,等效于public,例guest ok=yes等于public=yes
writable:是否可写,与read only的作用相反,例writable=no等于read only=yes
3)其他配置项
vaild users:只有此名单内的用户能访问共享资源(拒绝优先)(用户名/@组名)
invalid users:只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
write list:只有此名单内的成员才可作写入动作(用户名/@组名)
directory mask:通过共享创建文件夹的默认权限
create mask=0644:通过共享创建文件的默认权限
hosts allow:只有此网段/ip的用户能访问共享资源
hosts deny:只有此网段/ip的用户不能访问共享资源
3、匿名访问的文件共享
1)设置安全级别security = share
2)新建共享目录
mkdir /var/software
chmod 777 /var/software
[software]
comment=public software
path = /var/software
public = yes
read only = yes
3)service smb start 或service smb reload
注:客户端只能访问被指定为允许匿名访问的共享,即指定public=yes或guestok=yes的共享
4、带验证的文件共享
1) 建立samba用户
useradd tom
pdbedit -a tom
pdbedit -a root
pdbedit -x tom -----删除samba用户tom
pdbedit -vl -----查看samba共享用户的详细信息
注:①samba使用独立的账号数据库,但系统中必须有对应的账号,其密码可与系统密码不同
②账户数据库文件默认位于/etc/samba/passdb.tdb,可使用pdbedit命令对samba用户进行管理
③若需兼容旧版samba密码则修改passwd backend=smbpasswd,同时账户数据库文件为
/etc/samba/smbpasswd,使用smbpasswd命令管理smbpasswd –a tom、smbpasswd –x tom
2)设置用户授权
[global]
security = user
[software]
comment= public software
public = no
valid users=tom,@root -----此处应填写真实用户名,非别名
write list=root -----root用户有可写的权限
directory mask=0755 -----通过共享创建文件夹的默认权限
create mask=0644 -----通过共享创建文件的默认权限
chmod 777 /var /software
注:①应确保真实用户对共享目录有本地系统权限,用户最终权限是samba权限和系统权限的交集
②可以在[global]中添加invalid users配置项拒绝用户访问samba服务,如invalid users=jack
③验证valid users和write list时,应删除writable配置项
3)用户名称映射
vi /etc/samba/smbusers
root = administrator admin
tom = zhangsan lisi
vi /etc/samba/smb.conf
username map=/etc/samba/smbusers //在[global]中指定名称映射文件
注:添加映射后别名用户的密码仍为真实用户的密码
4)添加授权的客户端地址,既可以在[global]中全局配置,也可针对某个特定的共享
hosts allow=192.168.1.2 192.168.2. //在[global]中指定
注:①hosts allow设置仅允许访问共享的地址,hosts deny设置仅拒绝访问的地址,两项不要同时使用
②修改配置文件后必须重启服务service smb restart
5、客户端访问
1)使用smbclient访问
smbclient –l 192.168.1.1 //查看共享资源列表,未指定用户账户时将以匿名方式登陆
smbclient –l 192.168.1.1 -u tom%123 //指定账户为tom,密码为123
smbclient –u tom //192.168.1.1/software
命令:ls、pwd、get、mget、put、mput、exit、help、lcd切换本地目录
2)使用mount命令将共享目录挂载到本地
mount –o username=tom //192.168.1.1/software /mnt/iso
vi /etc/fstab
//192.168.1.1/software /mnt/iso cifs defaults,username=tom%123 0 0
注:当安全级别设置为user时,在linux中仍然可以通过smbclient工具访问匿名共享,但无法通过mount方式挂载访问;如果是在windows中则无法再访问匿名共享
3)使用自动挂载的方式
使用/etc/fstab文件挂载samba共享资源时,每次开机都会自动挂载,如果服务器未开机或其他原因,会导致挂载失败,影响开机速度,而使用自动挂载则可以解决此问题
vi /etc/auto.master
/mnt /etc/samba.misc
vi /etc/samba.misc
samba -fstype=cifs,username=tom,password=111 ://192.168.1.1/software
service autofs restart