系统平台:SUSE Linix Enterprise Server 11 sp1
软件平台:Samba-3.5.10.tar.gz
简述samba 原理
SMB通信协议采用的是Client/Server架构,所以Samba软件可以分为客户端和服务器端两部分。通过执行Samba客户端程序,Linux主机便可以使用网络上Windows主机所共享的资源;而在Linux主机上安装Samba服务器,则可以使Windows主机访问Samba服务器共享的资源。
在TCP/IP上运行的NetBIOS称为NBT,NetBIOS 名称包含16 个字节。每个名称的前15个字节是用户指定的,表示标识与网络上单个用户或计算机相关联的某个资源的唯一名称或者标识与网络上的一组用户或计算机相关联的某个资源的组名。
每个 NetBIOS名称中的第16 个字符被 Microsoft NetBIOS 客户用作名称后辍,用来标识该名称,并表明用该名称在网络上注册的资源的有关信息。每个NetBIOS名称都配置成一个唯一的(专有的)名称或组(非专有的)名。。
名字服务:名字登记和解析
会话服务:可靠的基于连接的通信
数据包服务:不可靠的无连接通信
netbios 节点配置:
nbtstat -n 可查看本地NETBIOS 名称列表
samba应用化境:
用于NetBIOS网络浏览
用于NetBIOS名字服务
于文件及打印机共享和其他操作
身份验证和权限设置
SWAT
samba服务器程序
smbd:提供对服务器中文件,打印资源的共享访问
nmbd:提供基于netbios主机名称的解析
安装步骤:
2. cd samba-3.5.10
3. cd source3
4. ./autogen.sh
5. ./configure --/usr/local/samba --enable-socket-wrapper --enable-nss-wrapper
6. make
7. make test (可选)
8. make install
9. cp samba-3.5.10/examples/smb.conf.default /usr/local/samba/lib/smb.conf
做完以上步骤后,执行一个初步的简单测试,以检测samba是否安装正常
10. /usr/local/samba/bin/testparm 如提示如下,则表示安装成功
Loaded services file ok.
samba 常见全局配置项:
•
workgroup
设置服务器所在的工作组名称,例如“
WORKGROUP”
(
Windows
主机默认工作组名)
•
server string
设置服务器的说明文字,用于描述
Samba
服务器
•
security
设置服务器的安全级别,可设为以下
4
个值中的一个:
share (可匿名访问)
user (需由本服务器验证用户名及密码)
server (由另一台服务器验证用户名及密码)
domain (由 Windows 域控制器验证用户名及密码)
share (可匿名访问)
user (需由本服务器验证用户名及密码)
server (由另一台服务器验证用户名及密码)
domain (由 Windows 域控制器验证用户名及密码)
•
log file
设置
Samba
服务器的日志文件,默认设置为“
/
var
/log/samba/%m.log”
,表示日志文件保存到
/
var
/log/samba/
目录中,按每个客户机建立一个日志文件,“
%m”
变量表示客户端主机名或
IP
地址
max log size
设置日志文件的最大容量,默认为
50
,表示
50KB
(默认单位为
KB
)
•server types:
Domain Controller
Primary Domain Controller (PDC)
Backup Domain Controller (BDC)
ADS Domain Controller
Domain Member Server
Active Directory Domain Server
NT4 Style Domain Domain Server
Standalone Server
samba 常见共享目录配置项
•
comment
设置对应共享目录的注释、说明信息
•
path
设置对应共享目录在服务器中的文件夹路径
•
browseable
设置该共享目录在“网上邻居”中是否可见,设置为
no
时相当于隐藏共享目录
•
guest ok
设置共享目录是否所有人都可以访问,与
public
配置项作用相同
•
writable
设置该共享目录是否可写,与
read only
的作用相反
writable = yes 所有帐号可写
writable = no 所有帐号禁写
write list = username 设置特定用户写权限
write list = @groupname 设置特定组写权限
valid users = username 设置审核
valid users = @groupname
public = yes 允许匿名用户
public = no 禁止匿名用户
read only = yes 只读
read only = no 读写
read list = username
read list = @groupname
readable = yes
writable = yes 所有帐号可写
writable = no 所有帐号禁写
write list = username 设置特定用户写权限
write list = @groupname 设置特定组写权限
valid users = username 设置审核
valid users = @groupname
public = yes 允许匿名用户
public = no 禁止匿名用户
read only = yes 只读
read only = no 读写
read list = username
read list = @groupname
readable = yes
samba 常用命令:
testparm :检查smb.conf是否有语法错误
smbclient :为Linux用户提供Samba服务,类似于FTP方式
smbstatus :列出当前所有Samba连接状态
smbpasswd :修改Samba用户口令,增加Samba用户
nmblookup :用于查询主机的NetBIOS名,并将其映射为IP地址
smbtree :列出当前网络中可用的SMB服务
smbd :Samba服务守护进程,为Samba用户提供文件和打印机共享
nmbd :Samba守护进程,提供NetBIOS名字转换服务
SWAT :允许使用浏览器编辑配置文件smb.conf
smbtar :对共享资源进行备份
samba启动方式:
如果通过源代码安装的samba ,则启动如下:
nmbd -D (先启动)
smbd -D (后启动)
要启动两个服务
samba映射帐号功能:
映射帐号是指用虚拟帐号映射samba帐号,即访问的samba服务时候用虚拟帐号访问,而实际上用的是samba帐号。
要使用映射功能需要在smb.conf 全局配置文件中增加一行如下:
username map = /etc/samba/smbusers
即开启帐号映射功能
然后编辑smbusers文件
samba帐号名 = 虚拟帐号名
例如:如果samba帐号为 smbuser01 ,虚拟帐号为 vuser01 ,则如下:
smbuser01 = vuser01
samba特殊应用场景:
假如有个目录aaa,要求对普通员工隐藏,对老板可以见,那么可以单独对老板做个配置文件。
在smb.conf 中全局添加一行:
config file = /etc/samba/smb.conf.%U
%U 代表 需要特殊设置的帐号
复制一份smb.conf 为 smb.conf.%U ,将smb.conf.%U 文件中对应的aaa 目录配置项browseable = yes 既可!
samba客户端应用:
如果是linux客户端, mount 挂载smbfs的用法;
mount -t smbfs -o codepage=cp936,username=用户名,password=密码 ,-l //ip地址/共享文件夹名 挂载点
mount -t smbfs -o codepage=cp936,username=用户名,password=密码 ,-l //计算机名/共享文件夹名 挂载点
smbmount的用法:
smbmount -o username=用户名,password=密码 , -l //ip地址或计算机名/共享文件夹名 挂载点
smbmount //ip地址或计算机名/共享文件夹名 挂载点
samba乱码问题:
1.如果linux locale是zh_CN.UTF-8,在smb.conf中添加:
display charset = UTF-8
unix charset = UTF-8
dos charset = UTF-8
2.如果linux locale是zh_CN.GBK或zh_CN.gb2312,在smb.conf中添加:
display charset = cp936
unix charset = cp936
dos charset = cp936
端口设置:smbd所占用的端口是139和445
来源:oschina
链接:https://my.oschina.net/u/208700/blog/42579