Samba介绍及配置
一、Samba是Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。samba与NFS一样,也是在网络中实现文件共享的一种实现但NFS不支持windows平台,而samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,包括windows
1.SMB协议是一种在局域网上共享文件和打印的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
2.SMB协议是C/S型协议,客户机通过该协议可以访问服务器上 的共享文件系统,打印机及其他资源。
3.SMB监听的端口:
TCP | UDP |
139 | 137 |
445 | 138 |
4.samba用户
账号 | 密码 |
都是系统用户 | samba服务自有密码文件 |
/etc/passwd | 通过smbpasswd -a USERNAME命令设置 |
(1)smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。
-a Sys_User //添加系统用户为samba用户并设置密码
-d //禁用用户账号
-e //启用用户账号
-x //删除用户账号
(2)tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用smbpasswd –a创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。pdbedit参数很多,列出几个主要的:
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户账号。
pdbedit –c “[]” –u username:恢复该Samba用户账号。
5.samba安全级别
安全级别 | 作用 |
share | 基于匿名的访问 |
user | 基于本地的验证 |
server | 另一台指定的服务器对用户身份进行认证 |
domain | 由域控进行身份验证 |
6..常见配置文件的参数:
参数作用 | 作用 |
workgroup | 表示设置工作组名称 |
server string | 表示描述samba服务器 |
security | 表示设置安全级别,其值可为share user server domain |
passdb backend | 表示设置共享账户文件类型,其值可为tdbsam(tdb数据库文件)ldapsam(LDAP目录认证) smbpasswd (兼容旧版本sambda密码文件) |
comment | 表示设置对应共享目录的注释,说明信息,及文件名 |
browseable | 表示设置共享是否可见 |
writable | 表示设置目录是否可写 |
path | 表示设置共享目录的路径 |
guest ok | 表示设置是否所有人均可访问共享目录 |
public | 表示设置是否允许匿名用户访问 |
write list | 表示设置允许写的用户和组,组要用@表示,例如 write list = root,@root |
valid users | 设置可以访问的用户和组,例如 valid users = root,@root |
hosts deny | 设置拒绝哪台主机访问,例如 hosts deny = 192.168.169.10 |
hosts allow | 设置允许哪台主机访问,例如 hosts allow = 192.168.169.10 |
printable | 表示是否为打印机 |
read only | 只读 |
directory mask = 0755 | //创建目录的权限掩码 |
create mask = 0644 | //创建文件的权限掩码 |
available = yes | # 设置该共享目录是否可用 |
7.samba进程:
进程 | 对应 |
nmbd | 对应netbios |
smbd | 对应cifs协议 |
winbindd+ldap | 对应Windows AD活动目录 |
7.1 samba 服务器的主要程序
8.安装以及配置smb服务
- 公共匿名共享目录的配置
1.修改/etc/samba/smb.conf文件
security = share 共享级别,用户不许要密码和账户即可访问
[share] //建立共享目录模块
comment = share Stuff //对共享目录说明,可自定义
path = /share //指定共享目录的路径
public = yes //所有人可查看,等效于guest ok =yes
writable = yes //有可写权限
2.新建share 目录,并设置属组为nobody
3.重启smb服务:/etc/init.d/smb restart
测试smb.conf 是否正确:testparm.
- 设置用户访问共享
- 新建账户,并且将账户添加到samba账户中
useradd lile
passwd 123456 用户登录主机的密码
smbpasswd -a lile 将用户添加到samba账户中,设置lile用户smb密码,此密码与主机登录密码不相同。
- 修改主配置文件
security = user //修改共享级别为用户访问
hosts allow = 127. 172.172.0 //只允许127.0.0.0与172.172.0.0网段主机访问
[lile] //共享目录名称
comment = lile share
path = /share //共享目录路径
public = no //不公开,受限浏览
writable = yes //共享目录可写
directory mask = 0755 //创建目录的权限掩码
create mask = 0644 //创建文件的权限掩码
valid users = renli,root //被许可访问该共享目录的用户账号
write list = renli,root //允许写入的用户账号,注意如果不能写入就是系统共享文件权限不足,修改即可。
3.测试smb.conf 是否正确:testparm.
4.新建share 目录,并设置属组为nobody
- 重启smb服务:/etc/init.d/smb restart
(3)用户的映射
1.编辑 /etc/samba/smbusers 文件
vim /etc/samba/smbusers
renli = u1 u2 u3 //renli 是映射的账户,u1,u2,u3是被映射的用户
- 修改/etc/samba/smb.conf ,添加以下信息
username map = /etc/samba/smbusers
smbclient 命令:
客户端的操作
方法一:登录
smbclient -L 192.168.169.10 -U lile(用户名) #查看共享目录资源
smbclient -U lile //192.168.126.137/mytool
方法二:在客户端挂载共享目录