Linux/centos上如何配置管理samba服务器?
1 samba服务相关知识
-
samba
服务器可使用户在异构网络操作系统之间进行文件系统共享; -
samba
服务器提供了在
Windows
环境下共享
Linux
中用户目录的一个工具; -
在
linux
中安装
samba
后,只需在
windows
中做一些登陆即可访问。
1.1 SMB协议
-
Windows
系统采用
TCP/IP
作为底层协议,发送
NetBOIS
请求,而在
NetBOIS
的上层,则采用
SMB(server message block)
协议作为高级接口,实现
windows
网络环境中的文件与打印等资源共享; -
SMB
使用
NetBOIS
的应用程序接口
API
,端口一般为
139,445
; - 为开放协议,允许协议扩展;
- 大约有65个最上层的作业,每个作业都超过120个函数;
-
CIFS(common Internet File system)
是增强版的
SMB
协议。
1.2 samba工作原理
1.2.1 相关进程
-
samba
服务器由
smbd
和
nmbd
两个守护进程组成,每个进程可单独启动,也可使用
/etc/rc.d/init.d/smb
启动;
smbd
:为windows用户提供文件与打印共享服务;
nmbd
:进行NetBIOS名解析,把windows SMB请求中信息中的NetBIOS名字映射为Linux中的IP地址。
1.2.2 samba工作流程
1.2.3 samba功能
- 文件和打印机共享;
- 身份验证和权限设置;
- 名称解析;
- 浏览服务。
2 samba服务器安装
2.1 利用光驱安装
以下在
centos
上操作:
-
将
linux
系统的安装光盘放入光驱,并创建:
mkdir /mnt/cdrom
- 将光盘以读写方式挂在到以下目录:
mount /dev/cdrom /mnt/cdrom
-
制作yum源文件
/etc/yum.repos.d/cdrom.repo
:
[cdrom]
name = cdrom
baseurl = file:///mnt/cdrom
gpgcheck = 0
enabled = 1
2.2 利用光盘映射文件
以下在
centos
上操作(我使用这个方法):
-
无光驱的情况下,使用操作系统的映射文件即可;
-
将映射文件
.iso
上传到
linux
上的
root
下,比如
CentOS-7-x86_64-Everything-2003.iso
;
-
新建
iso
目录,并将映射文件挂在到该目录下:
mkdir /mnt/iso
mount -o loop /root/CentOS-7-x86_64-Everything-2003.iso /mnt/iso
-
制作yum
源
文件
/etc/yum.repos.d/iso.repo
:
[iso]
name = iso
baseurl = file:///mnt/iso
gpgcheck = 0
enabled = 1
- 使用以下命名安装即可:
yum -y install samba
- 可使用命令查看安装情况:
rpm -qa | grep samba
3 启动与停止samba服务
-
启动
samba
服务:
systemctl start smb.service
- 停止samba服务:
systemctl stop smb.service
-
重启
samba
服务:
systemctl restart smb.service
-
重载
samba
服务:
systemctl reload smb.service
-
开机自启
samba
服务:
systemctl enable smb.service
# 查看是否开机自启
systemctl list-unit-files | grep smb
-
取消开机自启
samba
服务:
systemctl disable smb.service
-
查询
samba
服务状态:
systemctl status smb.service
4 配置samba服务器
4.1 samba主配置文件smb.conf
4.1.1 samba配置简介
-
配置文件在
/etc/samba
下:
-
配置信息如下:
- 说明:
① 开头主要是介绍samba的作用;
② # : 为注释;
③ ;: 格式范例;
4.1.2 全局变量
-
global
主要是全局变量;
[global]
workgroup = SAMBA # 设置samba的工作组
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
- 部分字段解析:
字段 | 方法 | 说明 |
---|---|---|
|
workgroup=<工作组> |
设置
的工作组 |
|
server string=<说明> |
设置
的注释 |
|
host allow=
地址 |
限制允许链接到
的机器 |
|
security=<等级> | 设置访问的安全级别 |
|
password level=<位数> | 密码长度 |
|
username level=<位数> | 用户名长度 |
|
encrypt passwords=<yes/no> |
设定是否对
密码加密 |
|
smd password file=<密码文件> |
设定
密码文件 |
4.1.3 共享服务
-
共享部分包含[
home
]、[
printer
]、[自定义共享名]; -
samba
默认开启[
home
]、[
printer
]共享; - 可自行创建共享目录,格式如下:
[共享名]
字段 = 设置值
......
- 字段说明:
字段 | 说明 |
---|---|
|
注释说明 |
|
共享资源的完整路径 |
|
设置浏览资源时是否显示共享目录 |
|
设置是否允许匿名访问 |
|
是否以只读方式访问共享资源 |
|
是否允许用户写操作 |
|
设置指定用户 |
|
允许写操作的用户或组 |
4.2 samba服务的日志和账号
4.2.1 samba的服务日志文件
- 目录:
/var/log/samba
- 通过修改如下文件可设置日志文件的存储路径和容量:
# smb.conf
log file = /var/log/samba/log.%m
max log size = 50
4.2.2 samba服务密码文件
- 目录:
/etc/samba/smbpasswd
-
samba
中添加账号命令为:
smbpasswd -a 用户名
5 配置samba客户端
5.1 在linux中测试samba服务器
-
smbclient
命令:
smbclient -L 目标IP地址或主机名 -U 登陆用户名%密码
-
mount
命令:
mount -t cifs //目标IP地址或主机名/共享目录名 挂载点 -o username=用户名,password=密码
5.2 在windows中测试samba服务器
-
开始-运行,输入
linux
的共享目录即可; -
打开文件浏览器输入
linux
的共享目录也可以;
6 实际实例
6.1 实例说明
共享文件服务器,文件名为workgroup;目录为/mnt/public;共享名为public;允许所有人反问。
6.2 实现过程
- 新建目录:
mkdir /mnt/public
touch /mnt/public/test1.txt /mnt/public/test2.txt
-
修改
smb.conf
文件:
[public]
comment = Public
path = /mnt/public
public = yes
browseable = yes
guest ok = yes
-
打开图形界面允许防火墙
samba
服务通过(应用程序-杂项-防火墙); -
设置
Selinux
设置成
Permissive
:
getenforce
setenforce 0
getenforce
-
通过
linux
访问:
smbclient //192.168.0.190/public -U root
-
把
root
加入加入到
samba
账户中:
smbpasswd -a root
-
通过
windows
访问,如果出现访问不了,需要开启
SMB
文件共享支持: