Samba简介

Samba是一种基于SMB(server Messages Block)协议开发的一款文件共享软件。其可以在windows和linux,linux和linux中进行文件共享。
安装Samba:

[root@MyCentOS ~]# yum install samba

Samba部署实践操作

Samba服务程序主配置文件

samba服务程序主配置文件再/etc/samba/smb.conf路径下。
----------------------------------------------samba服务程序主配置文件参数------------------------------------------------

[global]参数作用
workgroup=MYGROUP工作组名称
server string =Samba Server Version %v服务器介绍信息,参数%v为显示SMB版本号
log file=/var/log/samba/log.%m定义日志文件的存放位置与名称,参数%m为来访的主机名
max log size=50定义日志文件最大容量为50KB
security=user安全认证方式,共有4种
#share:来访主机无需验证口令:方便、安全性差
#user: 需验证来访主机提供的口令后才能访问,提升安全性
#server:使用独立的远程主机验证来访主机提供的口令(集中管理)
#domain:使用域控制器进行身份验证
passdb backend = tdbsam定义用户后台类型,共有三种
#smbpasswd:使用smbpasswd命令为系统用户设置samba服务程序密码
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#ldapsam:基于LDAP服务进行账户验证
load printers=yes设置再samba服务启动时是否共享打印机设备
cups options=raw打印机选项
[home]共享参数
comment = Home Directories描述信息
browseable=no指定共享信息是否再网上邻居中可见
writable=yes定义是否可以执行写入操作,与read only相反
[printers]打印机共享参数

在CentOS8中安装的Samba服务程序中,文件如下所示。

[root@MyCentOS ~]# cd /etc/samba/
[root@MyCentOS samba]# ll
总用量 20
-rw-r--r--. 1 root root    20 424 10:41 lmhosts
-rw-r--r--. 1 root root   706 424 10:41 smb.conf
-rw-r--r--. 1 root root 11327 424 10:41 smb.conf.example
[root@MyCentOS samba]# vim 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 = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775

如果想看Samba配置文件的注释信息,则可以查看smb.conf.example文件,如果只想配置Samba服务器文件,则直接编辑smb.conf文件即可。

配置共享资源

主配置文件包括全局配置参数和区域配置参数。全局配置参数用于设置整体资源共享环境,区域配置参数用于设置单独共享资源。

创建共享资源

将下表中的参数配置写入主配置文件中即可。
------------------------------------------用于设置Samba服务程序的参数以及作用---------------------------------------

参数作用
[database]共享名称
comment= don`t modify the database file警告用户不要随意修改数据库文件
path =/home/database共享目录为/home/database
public=no关机所有人可见
writable=yes允许写入操作

/etc/samba/smb.conf中写入以下参数

[global]
        workgroup = SAMBA <<<<工作组名称
        security = user   <<<<<验证来访主机口令

        passdb backend = tdbsam   <<<<创建数据库文件并使用pdbedit命令建立用户

        printing = cups
        printcap name = cups
        load printers =no   <<<<<不共享打印设备
        cups options = raw
#自添加参数
        server string =Samba Server Version %v  <<<<服务器介绍信息版本号
        log file = /var/log/samba/log.%m      <<<<<访客日志文件
[database]
        comment=don't modify the database file
        path = /home/database
        public = no
        writable=yes

创建共享资源账户

用户口令认证模式,验证过程十分简单。
关键:

  1. 但只有在建立账户信息数据库之后才能使用用户口令认证模式。
  2. Samba服务层序数据库要求账户必须在当前系统中已经存在。

pdbedit 命令: 用于管理SMB服务程序的账户信息数据库
格式: pdbedit [选项] 账户

-------------------------------------------------------------pdbedit参数-----------------------------------------------------------

参数作用
-a 用户名建立Samba账户
-x 用户名删除Samba账户
-L列出账户列表
-Lv列出账户详细信息的列表

因为在创建账户之前,该账户必须是已经存在该服务器中的账户。所以为了测试,添加一个专门用来访问Samba服务的账户,而不允许该账户登录linux。
添加账户

[root@MyCentOS ~]# useradd  -s /sbin/nologin smbuser   <<<在Samba服务器上新建一个专用访问Samba服务账户
[root@MyCentOS ~]# pdbedit -a -u smbuser   <<<<<<<以这个专用访问samba服务的用户创建共享资源账户
new password:
retype new password:
Unix username:        smbuser
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3708679032-195000629-768076147-1000
Primary Group SID:    S-1-5-21-3708679032-195000629-768076147-513
Full Name:            
Home Directory:       \\mycentos\smbuser
HomeDir Drive:        
Logon Script:         
Profile Path:         \\mycentos\smbuser\profile
Domain:               MYCENTOS
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:, 06 22036 23:06:39 CST
Kickoff time:, 06 22036 23:06:39 CST
Password last set:, 13 82020 17:18:50 CST
Password can change:, 13 82020 17:18:50 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

创建共享资源文件目录

在创建时,不仅要考虑到文件读写权限问题,而且由于/home目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SElinux安全上下文的限制。

  1. 在Samba服务程序主配置文件中,有关于SElinux安全上下文策略的详细说明,按照说明修改即可。
  2. 修改之后执行restorecon命令,使SELinux安全上下文立即生效
[root@MyCentOS ~]# mkdir /home/database   <<<<<<因为我们在Samba配置文件中将共享文件夹命令为database
[root@MyCentOS ~]# chown -Rf smbuser:smbuser /home/database   <<<<<,将文件归属设置为samba服务器中存在的专用来访问共享资源的用户
[root@MyCentOS ~]# semanage fcontext -a -t samba_share_t /home/database
[root@MyCentOS ~]# restorecon -Rv /home/database
Relabeled /home/database from unconfined_u:object_r:user_home_dir_t:s0 to unconfined_u:object_r:samba_share_t:s0

设置SELinux服务与策略

查看当下SELinux服务中与samba服务相关的策略

[root@MyCentOS ~]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off

修改其中的samba_enable_home_dirs --> off

[root@MyCentOS ~]# setsebool -P samba_enable_home_dirs=on

重启Samba服务程序

重启Samba服务程序,并将该服务程序加入开机自启项中。

[root@MyCentOS ~]# systemctl start smb
[root@MyCentOS ~]# systemctl enable smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.

windows下访问文件共享服务

在windows主机上访问linux下的Samba服务时,如果访问不成功,则还是老三样。首先查看防火墙,其次查看SELinux安全上下文策略。因为之前我们根据Samba配置文件中的注释信息设置了SELinux安全上下文,所以问题应该出现在防火墙上。
查看当下区域的防火墙状态:

[root@MyCentOS ~]# firewall-cmd --list-all
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33 virbr0
  sources: 
  services: cockpit dhcpv6-client ftp mdns samba-client ssh tftp
  ports: 69/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

从server参数中可知,没有开启Samba服务。所以应当将Samba服务加入到当下的的防火墙区域中,并使其立即生效。

[root@MyCentOS ~]# firewall-cmd --permanent --zone=internal --add-service=samba
success
[root@MyCentOS ~]# firewall-cmd --reload 
success

在windows下直接搜索
在这里插入图片描述
输入在此前创建的Samba登录账户及密码
在这里插入图片描述
可以看到访问在samba共享资源服务器上存放的文件,可以尝试进行查看、写入、更改、删除文件等操作。
在这里插入图片描述

linux下访问文件共享服务

如过某个linux系统需要访问另以linux文件资源共享服务,则需要在该系统下安装支持文件共享服务的软件包(cifs-utils)。
在另一台linux系统中安装软件包

root@ubuntu:~# apt-get install cifs-utils  <<<我的另一linux系统为ubuntu

配置认证文件、

在linux客户端中

  1. 按照Samba服务的用户名、密码、共享域顺序将相关信息写入到一个认证文件中
  2. 为了保证账号安全性,将该文件设置为只有root用户才能查看

根据之前创建的Samba共享资源账户配置

root@ubuntu:~# vim smbauth.smb
username=smbuser
password=smbuser
domain=SAMBA

设置文件权限

root@ubuntu:~# chmod 600 smbauth.smb 
root@ubuntu:~# ll
-rw-------  1 root root   47 814 15:04 smbauth.smb

挂载目录

在linux客户端中

  1. 创建一个用于挂载Samba服务共享资源目录
  2. /etc/fstab中写入挂载信息 需要挂载的目录 挂载到本地的目录 软件服务 ...
root@ubuntu:~# mkdir /smb_database
root@ubuntu:~# vim /etc/fstab
#用户设置的挂载配置
//192.168.127.200/database /root/smb_database cifs credentials=/root/smbauth.smb 0 0
root@ubuntu:~# mount -a 《《挂载更新

访问共享资源

root@ubuntu:~# cd smb_database/
root@ubuntu:~/smb_database# ll
total 8
drwxr-xr-x 2 root root    0 813 21:14 ./
drwx------ 5 root root 4096 814 15:20 ../
-rwxr-xr-x 1 root root   25 813 21:14 smb_test.txt*
root@ubuntu:~/smb_database# cat smb_test.txt 
this is samba servicell!
Logo

更多推荐