文件系统级别访问:
samba
介绍:samba在类unix/linux主机之间实现共享文件系统
UNC路径
Window系统上的实现共享文件系统的一种工具
例如:映射磁盘驱动器
像samba与UNC这样的提供共享文件系统的机制,我们叫做smb(service message bloc)服务信息块,而smb实现的文件系统共享协议我们称之为cifs(common internet file system)通用互联网文件系统s
amba研发者
Andrew Tridgell, smb --> samba 开发者
功能:
文件系统共享;
打印机共享;
NetBIOS协议:其作用就是把linux主机与window的主机连接成同一类的主机;
主要的作用就是基于文件系统能使linux客户端或linux服务器端与window的客户端与服务器端进行互访;
图示:
window与linux之间的工作模式:
peer/peer(wordgroup model):点到点模式
domain model:域模式,window为了与linux之间建立文件系统联系,可能把linux加入域,也可能把linux作为域控
服务端程序包:samba
程序包中的一些组件:
samba-common:samba客户端与服务端通用的一些公共组件
samba-dc:把samba当做域控时使用包
samba-winbind:把samba加入域中使用的
samba-test:做测试使用的
samba-client:在linux上建立SMB/CIFS文件系统,能直接访问window上建立的共享文件
独立的服务:
nmbd: NetBIOS name server
smbd: SMB/CIFS services:主要提供的是文件共享服务
公共的配置文件:
/etc/samba/smb.conf:主配置文件
/etc/samba/lmhosts:基于NetBios下的主机名映射
systemd unit file:
服务启动:Centos7
nmbd: systemctlstart nmb.service
smbd: systemctl start smb.service:
Centos6
smbd start
客户端程序包:Samba-client
smbclient:交互式的命令行客户端;
mount -t cifs:
监听的端口:137/udp, 138/udp, 139/tcp, 445/tcp
samba配置:
smb.conf
两类配置段:
全局配置:
[global]
每共享的专用配置:
[共享资源的共享名称]
格式:directive = value
全局配置:
workgroup =
当前samba主机所属工作组
netbios name =
当前samba主机的netbios名称
server string =
主机注释
display charset =:当前samba服务所用字符集;
unix charset =:当前Linux主机所用的字符集;
dos charset = :windows端的字符集;
interfaces =:samba服务监听的IP地址或网络接口;
hosts allow = :客户端来源白名单;
log file =
max log size =
日志文件的体积上限,单位是KB;
Standalone Server Options:
security = user:
设定安全级别;取值为以下三者之一:
share:匿名共享;
user:使用SAMBA服务自我管理的账号和密码进行用户认证;用户必须OS用户,但密码非为OS用户的密码,而是用访问samba服务的专用密码 ;
domain:使用DC进行用户认证;
passdb backend = tdbsam
密码库文件的格式;
共享配置:
[共享名称]:此即为某共享的服务名;
comment:注释信息;
path:此共享对应本地文件系统路径;
browseable:是否可浏览,是否可被所有用户看到;
writable:是否可写;
read only:是否为只读;
writelist:可写用户或组列表;
用户名
@组名
+组名
public:是否是公开的服务
guest ok:是否允许来宾账号访问
注意:writable和write list不应该同时使用;
smb.conf配置文件的语法测试:
testparm/etc/samba/smb.conf
可用的宏列表:
%m:客户端主机的NetBIOS名称;
%M:客户端的Internet主机名,即HOSTNAME;
%H:当前用户的家目录;
%U:当前用户的用户名;
%g:当前用户所属的组名;
%h:当前SAMBA主机的HOSTNAME;
%I:客户端主机IP;
%T:当前的日期时间;
交互式访问:
# smbclient -L SABMA_SERVER -U USERNAME
例如:smbclient -L //172.18.100.67/ftp 匿名访问/ftp
smbclient -L //172.18.100.67 查看该smbserver主机上有哪些共享的目录
# smbclient //SAMBA_SERVER/SERVICE_NAME -U USERNAME
挂载访问:
mount -t cifs -o username=USERNAME,password=PASSWORD //SAMBA_SERVER/SHARED /MOUNT_POINT
将系统用户添加为samba用户:
smbpasswd [option] USERNAME
-a:添加
-x:删除
-d:禁用
-e:启用
访问samba共享:
Linux:
smbclient:交互式命令行客户端;
mount -t cifs:挂载文件系统;
Windows:
\\HOST OR IP\SHARED_DIR
练习:
创建一个共享data,路径为/ftp/data;
要求仅centos和gentoo能上传文件;
此路径对其它用户不可见;
pdbedit命令:
类似于smbpasswd,用于管理smb用户;
pdbedit [options]
-L:列出所有的smb用户;
-v:verbose
-a:添加用户
-u USERNAME
-x:删除指定用户
-r:修改用户的相信息;
smbstatus命令:
显示samba server的相关共享的访问状态;
-b:显示简要格式信息
-v:显示详细格式信息
本文出自 “Touch Dream” 博客,谢绝转载!