samba简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
摘自:百度百科
注:多数用于Linux跟Windows之间的文件共享。
samba两个主要进程是:smbd和nmbd。
两个进程的主要功能,如下:
-
smbd
文件和打印服务、授权与被授权
-
nmbd(类似于DNS)
名称解析、浏览服务
搭建服务
实验环境:
- CentOS-7-x86_64-DVD-1708
- win10
- VMware Workstation 15 Pro
实验目的:
学会搭建简单的samba服务
安装samba软件包
[root@localhost ~]# yum install -y samba* # 偷懒安装所有的依赖组件
[root@localhost ~]# rpm -qa | grep samba # 查看所安装的组件
samba-common-4.6.2-8.el7.noarch
samba-common-libs-4.6.2-8.el7.x86_64
samba-python-4.6.2-8.el7.x86_64
samba-libs-4.6.2-8.el7.x86_64
samba-common-tools-4.6.2-8.el7.x86_64
samba-winbind-modules-4.6.2-8.el7.x86_64
samba-client-4.6.2-8.el7.x86_64
samba-winbind-4.6.2-8.el7.x86_64
samba-client-libs-4.6.2-8.el7.x86_64
samba-4.6.2-8.el7.x86_64
samba-krb5-printing-4.6.2-8.el7.x86_64
[root@localhost ~]#
配置smb.conf文件
编辑配置文件,添加一个以test作为网络共享文件名的共享目录。
[root@localhost ~]# vim /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
[test] # 网络文件名
comment = This is a test directory # 提示信息
path = /data/smb # 指定共享路径
browseable = Yes # 可浏览
writable = Yes # 可写
创建用户,共享目录
[root@localhost ~]# useradd -s /sbin/nologin -d /home/test test # 禁止本地登录,指定家目录
[root@localhost ~]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# smbpasswd -a test # 将本地用户跟samba用户进行映射
New SMB password:
Retype new SMB password:
Added user test.
[root@localhost ~]# mkdir -p /data/smb # 创建共享目录
[root@localhost ~]# touch /data/smb/welcome.txt # 创建个欢迎文件
启动服务
[root@localhost ~]# setenforce 0 # 关闭SELinux
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# firewall-cmd --permanent --add-service=samba # 让防火墙放行samba服务
success
[root@localhost ~]# firewall-cmd --reload # 重启防火墙
success
[root@localhost ~]# systemctl start smb # 启动samba服务
[root@localhost ~]#
[root@localhost ~]# systemctl status smb # 查看samba服务的状态
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-02-04 06:37:24 EST; 2min 15s ago
Main PID: 2766 (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
├─2766 /usr/sbin/smbd
├─2767 /usr/sbin/smbd
├─2768 /usr/sbin/smbd
└─2769 /usr/sbin/smbd
Feb 04 06:37:24 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
Feb 04 06:37:24 localhost.localdomain smbd[2766]: [2020/02/04 06:37:24.443822, 0] ../lib/util/b...dy)
Feb 04 06:37:24 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
Feb 04 06:37:24 localhost.localdomain smbd[2766]: STATUS=daemon 'smbd' finished starting up an...ons
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]#
连接测试
-
Windows+R 输入 \\IP
-
输入用户名和密码
-
成功登陆
注: 一个最简单、基本的samba服务器就搭建完成了。
疑难杂症
-
创建文件或文件夹,提示权限不够
解决方法:
更改用户对该共享目录的权限
-
方法一
[root@localhost data]# chown -R test smb/ [root@localhost data]# ll total 0 drwxr-xr-x. 2 test root 42 Feb 4 06:47 smb [root@localhost data]#
-
方法二
[root@localhost ~]# setfacl -m user:test:rwx /data/smb/ [root@localhost ~]# getfacl /data/smb/ getfacl: Removing leading '/' from absolute path names # file: data/smb/ # owner: root # group: root user::rwx user:test:rwx group::r-x mask::rwx other::r-x [root@localhost ~]#
-
-
输入用户名和密码之后,出现下图所示:
解决方法:
请查看SELinux的状态(设置为关闭)和防火墙状态(放行samba服务)。
建立连接和清除缓存整个过程,有点繁琐。为了偷懒,我用C语言写一个操作samba服务的小程序。有兴趣的同学可以看一下。
Samba连接小工具
来源:CSDN
作者:小明星_wu
链接:https://blog.csdn.net/qq_35502243/article/details/104174171