潍坊哪家网站制作公司好,包头市网站建设,网站防盗链设置,外贸网站建设视频教程文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA
下图来自百度百科 SAMBA的发展历史与名称的由来
Samba是一款开源的文件共享软件#xff0c;它基于SMB#xff08;Server Messa… 文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA
下图来自百度百科 SAMBA的发展历史与名称的由来
Samba是一款开源的文件共享软件它基于SMBServer Message Block服务器消息块协议并且让Linux系统能够与Windows系统进行文件共享。Samba的开发始于1991年由当时还在读大学的Tidgwell为了解决Linux与Windows系统之间文件共享的问题而创建。他开发了SMBServer服务程序通过简单的配置使得Linux与Windows系统之间的文件共享变得简单而便捷。然而当他想要将该软件命名为SMBServer并注册商标时商标局以SMB是没有意义的字符为由拒绝了申请。后来Tidgwell查看词典时偶然发现了“Samba”这个拉丁舞蹈的名字而且它恰好包含了“SMB”。因此Samba成为了这款软件的新名字并且沿用至今。
SAMBA常见的应用 主要功能 共享文件与打印机服务可以提供用户登陆SAMBA主机时的身份认证以提供不同身份用户的个别数据可以进行Windows网络上的主机名解析可以进行设备的共享 SAMBA服务器的应用 利用软件直接编辑WWW主机上面的网页数据做成可直接连接的文件服务器打印机服务器
SAMBA服务器基础配置 安装 [rootlocalhost ~]# yum install -y samba samba-client配置文件/etc/samba/smb.conf [rootlocalhost ~]# cat /etc/samba/smb.conf
[global]workgroup SAMBAsecurity userpassdb backend tdbsamprinting cupsprintcap name cupsload printers yescups options raw[homes]comment Home Directoriesvalid users %S, %D%w%Sbrowseable Noread only Noinherit acls Yes[printers]comment All Printerspath /var/tmpprintable Yescreate mask 0600browseable No[print$]comment Printer Driverspath /var/lib/samba/driverswrite list printadmin rootforce group printadmincreate mask 0664directory mask 0775参数作用[global]Samba配置文件的全局设置workgroup SAMBA设置Samba服务器所在的工作组名称security userSamba服务器的安全性模式共4种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是否继承文件的访问控制列表ACL[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指定创建目录时的权限掩码
security 参数代表用户登陆Samba服务时采用的验证方式。四种
share代表主机无须验证密码。相当于vsftpd服务的匿名公开访问模式安全性差user代表登陆Samba服务时需要使用账号密码进行验证通过才能获取到文件默认的验证方式domain代表通过域控制器进行身份验证用来限制用户的来源域server代表使用独立主机验证来访问用户提供的密码。这相当于集中管理账号不常用
配置共享资源 第一步创建用于访问共享资源的账户信息 pdbedit 命令用于管理 Samba 服务程序的账户信息数据库格式为【pdbedit [选项]账户】。在第一次把账户信息写人到数据库时需要使用【-a】参数以后在执行修改密码、删除账户等操作时就不再需要该参数了
Samba服务程序的数据库要求账户必须在当前系统中已经存在否则日后创建文件时将导致文件的权限属性混乱不堪由此引发错误
参数作用-a 用户名建立Samba用户-x 用户名删除Samba用户-L列出用户列表-Lv列出用户详细信息的列表
[rootlocalhost ~]# id csq
用户id1001(csq) 组id1001(csq) 组1001(csq)
[rootlocalhost ~]# pdbedit -a -u csq
new password: # 输入该账户在Samba服务数据库种的密码
retype new password: # 再次输入密码进行确认
Unix username: csq # Samba账号的用户名
NT username: # Samba账号的Windows用户名为空
Account Flags: [U ] # 账号标志为U表示账号可用
User SID: S-1-5-21-1005164572-3626894132-1712046424-1000 # Samba账号的SID标识
Primary Group SID: S-1-5-21-1005164572-3626894132-1712046424-513 # 账号的主组的SID标识
Full Name:
Home Directory: \\LOCALHOST\csq # 账号的主目录路径
HomeDir Drive:
Logon Script:
Profile Path: \\LOCALHOST\csq\profile # 账号的配置文件路径
Domain: LOCALHOST # 账号所属的域名
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 三, 06 2月 2036 10:06:39 EST
Kickoff time: 三, 06 2月 2036 10:06:39 EST
Password last set: 一, 01 4月 2024 09:43:46 EDT
Password can change: 一, 01 4月 2024 09:43:46 EDT
Password must change: never # 账号密码的过期时间设置为never即永不过期
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# 登录小时的位图其中所有位都是1表示没有限制登录时间第二步、创建用于共享资源的文件目录 创建用于共享资源的文件目录。在创建时不仅要考虑到文件读写权限的问题而且由于home 目录是系统中普通用户的家目录因此还需要考虑应用于该目录的 SELimnux 安全上下文所带来的限制。在 Samba 的帮助手册中显示正确的文件上下文值应该是 samba_share所以只需要修改完毕后执行restorecon 命令就能让应用于目录的新 SELinux 安全上下文立即生效。
[rootlocalhost ~]# mkdir /home/database
[rootlocalhost ~]# chown -R csq:csq /home/database/
[rootlocalhost ~]# semanage fcontext -a -t samba_share_t /home/database
[rootlocalhost ~]# 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服务与策略使其允许通过Samba服务程序访问普通用户家目录 执行 getsebool命令筛选出所有与 Samba 服务程序相关的 SELinux 域策略,根据策略的名称(和经验)选择出正确的策略条目进行开启即可
[rootlocalhost ~]# 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
[rootlocalhost ~]# setsebool -P samba_enable_home_dirs on第四步、在Samba服务程序的主配置文件种根据下表下入共享信息 Samba的主配置文件通常是/etc/samba/smb.conf可以设置全局配置参数和区域配置参数。全局配置参数适用于整个Samba服务器环境对所有共享资源都有效。区域配置参数用于设置单独的共享资源并且只对该资源有效。
创建一个共享资源非常简单只需将相关参数添加到Samba服务程序的主配置文件中并重新启动该服务即可生效。
参数作用[database]共享名称为databasecomment Do not arbitrarily modify the database file警告用户不要随意修改数据库path /home/database共享目录为/home/databasepublic no关闭 “所有人可见”writable yes允许写入操作
[rootlocalhost ~]# vim /etc/samba/smb.conf
# 将使用不到的行注释掉
[global]workgroup SAMBAsecurity userpassdb backend tdbsam
# printing cups
# printcap name cups
# load printers yes
# cups options raw
[database]comment Do not arbitrarily modify the database filepath /home/databasepublic nowritable yes
#
# [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服务程序的配置工作基本完毕 重启生效修改的配置文件
[rootlocalhost ~]# systemctl restart smb
[rootlocalhost ~]# systemctl enable smb
[rootlocalhost ~]# systemctl status smb # 查看是否启动成功
[rootlocalhost ~]# firewall-cmd --add-servicesamba --permanent
success
[rootlocalhost ~]# firewall-cmd --reload
success第六步、查看Samba服务都共享了哪些目录使用smbclient来查看共享详情 [rootlocalhost ~]# smbclient -U csq -L 192.168.200.10
# -U指定了用户名称
# -L列出共享清单
Password for [SAMBA\csq]:Sharename Type Comment--------- ---- -------database Disk Do not arbitrarily modify the database file# Sharename共享名称# Type共享类型指示该共享是一个磁盘Disk#Comment对共享的描述或备注信息IPC$ IPC IPC Service (Samba 4.17.5)
SMB1 disabled -- no workgroup available # 这个报错可以不用管Windows挂载共享
要在Windows系统访问共享资源只需要单机 Windows系统的开始输入两个反斜杠如何再添加服务器的IP地址即可
然后就可以看到Samba共享服务的登陆界面了
输入对应的账号名称密码即可访问
创建文件写入信息 [rootlocalhost ~]# ls /home/database/
hello.txt
[rootlocalhost ~]# smbclient //192.168.200.10/database -U csq # 在Linux端登陆查看
Password for [SAMBA\csq]:
Try help to get a list of possible commands.
smb: \ ls. D 0 Mon Apr 1 10:41:58 2024.. D 0 Mon Apr 1 10:40:17 2024hello.txt A 9 Mon Apr 1 10:41:51 202417197056 blocks of size 1024. 12929692 blocks availableLinux挂载共享
Samba服务程序还可以实现Linux系统之间的文件共享
[rootlocalhost ~]# yum install -y cifs-utils安装完成后在Linux创建一个用于挂载Samba服务共享资源的目录。这个目录可以与服务器上的共享名称同名以便于日后查找
[rootlocalhost ~]# mkdir /database
[rootlocalhost ~]# mount -t cifs -o usernamecsq,password000000 //192.168.200.10/database /database/
[rootlocalhost ~]# df -hT /database/
文件系统 类型 容量 已用 可用 已用% 挂载点
//192.168.200.10/database cifs 17G 4.1G 13G 25% /database如果在每次重启电脑后都需要使用 mount 命令手动挂载远程共享目录很麻烦可以按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写人一个认证文件中然后让/etc/fstab文件和系统自动加载它。为了保证不被其他人随意看到最后把这个认证文件的权限修改为仅root 管理员才能够读写
[rootlocalhost ~]# vim auth.smb
usernamecsq
password000000
domainSAMBA
[rootlocalhost ~]# chmod 600 auth.smb
[rootlocalhost ~]# vim /etc/fstab
# 添加如下信息
//192.168.200.10/database /database cifs credentials/root/auth.smb 0 0
[rootlocalhost ~]# umount /database
[rootlocalhost ~]# mount -a
[rootlocalhost ~]# df -hT /database/
文件系统 类型 容量 已用 可用 已用% 挂载点
//192.168.200.10/database cifs 17G 4.1G 13G 25% /database
[rootlocalhost ~]# ls /database/
hello.txt