Samba的安装配置使用

时间:2022-10-06 04:37:48

////////////////////////////////Samba////////////////////////////////////////////

小常识:
在同一局域网中,两个系统的工作组名称相同,便是处于同一WorkGroup
你可以右键计算机属性,选择高级系统设置,点击计算机名,点击更改。
确认工作组名称相同即可

smb.conf 主配置文件
lmhosts 对应NetBIOS name和主机名称的IP地址,作用类似于/etc/hosts

开放端口时137.138.139端口

CIFS(Comment Internet File System ,可以理解成是网上邻居)

 

Samba套件的配置文件:
https://www.samba.org/samba/docs/man/manpages/smb.conf.5.html
samba用户密码的几种方式对比:
http://www.cnblogs.com/jary-wang/archive/2013/05/21/3091343.html
samba支持软链接 
https://fengqi.me/unix/152.html
samba中文乱码问题 
http://bbs.chinaunix.net/thread-813206-1-1.html
samba多用户权限划分 
http://blog.csdn.net/w657395940/article/details/20312053


/////////////////////////////////////////////////////////////////////////////////////
目录
一、什么是Samba
二、安装配置Samba
1.安装
2.配置
3.启动服务
4.创建用户名
5.如何使用
6.samba实践

/////////////////////////////////////////////////////////////////////////////////////
Samba的安装、配置以及应用
一、什么是Samba
提供用户登录Samba主机时的身份认证
对Windows网络上的主机名解析(NetBIOS Name-----Network Basic Input/Output System 通信协议)
进行设备的共享(文件/打印机)

二、安装配置Samba
1.安装
yum install -y samba samba-client

2.常见参数:
配置文件 smb.conf

注释符是#
可以使用的语句;
实际都是注释

[global]
workgroup = MYGROUP/WORKGROUP
#用来定义工作组,我们选WORKGROUP
#同一个局域网内,需要有同一个工作组
#因此生产环境中需要弄到同一工作组上
server string = Samba Server Version %v
#这是自定义的
; netbios name = MYSERVER
#主机名称,如果没有设置,默认的NetBIOS会以主机名替代
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
; hosts allow = 127. 192.168.12. 192.168.13.
#用来设置允许的主机,如果在前面加上";",则表示为允许所有主机
log file = /var/log/samba/log.%m
max log size = 50
这是日志切割用的
security = user
# user 这里指定Samba的安全等级,关于安全等级有四种:
# share 用户不需要账户及密码即可登录Samba服务器,创建出来的文件是nobody
# user 由提供服务的Samba服务器负责检查账户及密码(默认是这个)
# server 检查账户及密码的工作由另外一台Windows或者Samba服务器负责
passdb backend = tdbsam
#密码存储的方式,用户的后台
#还有smbpasswd
#以及ldapsam
encrypt password = yes
smb passwd file = /etc/samba/smbpasswd
#加密用的
; dns forwarder = 192.168.0.1
; dns proxy = yes

load printers = yes
cups options = raw
#这两个是打印机用的
; printcap name = /etc/printcap
; printcap name = lpstat

[homes]
comment = Home Directories
这是说明,自定义的
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
create mode = 0664
directory mode = 0775

[public]
; comment = Read Only Public
; path = /home/samba
; public = yes
; writable = no
; printable = no
; write list = +staff
valid users = dazuo,@caiwu,@lingdao,network02
#允许访问的用户
#允许访问的group
read list = dazuo,@caiwu
#意味在read list里面的用户(组)只有只读权限,不管有没有read only
read only =yes


%U 当前登陆的用户名

%g 当前登录用户的群组名称

%h 运行Samba的HOSTNAME

%H 代表用户的主目录

%m 代表客户端NetBIOS主机名称

%M 就是HOSTNAME

%L Samba主机的NetBIOS主机名称

%I 代表客户端的IP地址

%T 当前日期时间

%D 当前用户所属组名

%S 取代当前设值的参数值,也就是取代[]里面的内容
the name of the current service, if any.


3.启动服务
service smb start

4.创建用户名
使用smbpasswd:
smbpasswd -a 用户名 #添加一个samba用户
  smbpasswd -d 用户名 #禁用一个samba用户
  smbpasswd -e 用户名 #恢复一个samba用户
  smbpasswd -x 用户名 #删除一个samba用户
#要创建的Samba用户必须是系统用户

早期使用的是这个,现在普及用tdbsam

使用tdbsam:
建立一个用户数据库passdb.tdb
pdbedit -i smbpasswd:/etc/samba/smbpasswd
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用户账号

使用ldapsam :
基于LDAP账户管理方式验证用户,首先要建立LDAP服务,设置"passdb backend = ldapsam:ldap://LDAP Server"
高级一点用这个

5.如何使用
Linux访问Samba共享文件:
a.安装客户端软件 :yum install -y samba-client
b.使用命令smbclient访问:
格式:smbclient //IP/共享名 -U 用户名
如果省略掉-U,则是匿名访问(nobody)
c.把共享文件挂在到本机:
挂载Samba目录:mount -t cifs //192.168.0.22/myshare /mnt/ -o username=user,password=yourpasswd
umount /mnt 取消挂载
可能会bad option 需要安装cifs的包
Windows访问Samba共享文件:
a.在开始--运行处输入:
\\ip\yourpath
b.浏览器输入
file://192.168.0.22/myshare

6.samba实践(均为Peer/peer模型,域模型这里不做介绍)
(1)共享一个目录,使用用户名和密码登陆后才可以访问,要求可以读写

配置如下:
[global] 部分内容如下
workgroup = WORKGROUP
server string = Samba Server Version %u
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw

还需要加入:
[myshare]
comment = share for users
path = /samba
browseable = yes
writable = yes
public = no

创建目录 : mkdir /samba
修改权限 : chmod 777 /samba

创建系统账号:
useradd user1
useradd user2

添加user1/user2为samba账户:
pdbedit -a user1
pdbedit -a user2

重启服务 server smb restart

测试:
浏览器输入 file://192.168.0.22/myshare
或者
smbclient -Uuser1 //192.168.0.22/myshare


(2)samba同时使用匿名和用户登录

配置如下:
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
map to guest = bad user
guest account = nobody
encrypt password = yes
smb passwd file = /etc/samba/smbpasswd

[public]
comment = public
path = /data/pub/public
browseable = yes
guest ok = yes
writable = yes
printable = no
create mask = 0644
directory mask =0755

[project]
comment = project
path = /data/pub/project
browseable = yes
public = no
guest ok = no
writable = yes
force user = root
printable = no
create mask = 0644
directory mask = 0755

注意,需要我们手动创建/data/pub/public 和 /data/pub/project目录,为了顺利完成试验,需要提前修改权限777


(3)samba多用户权限划分
见最上面的链接