Linux部署samba服务器!

2,152 阅读4分钟

这是我参与 8 月更文挑战的第 20 天,活动详情查看: 8月更文挑战

Samba简介

samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。

Samba的配置文件

/etc/samba/smb.conf:这是samba的主要配置文件,基本上仅有这个文件,而且这个配置文件本身的说明非常详细。主要的设置包括服务器全局设置,如工作组、NetBIOS名称和密码等级,以及共享目录的相关设置,如实际目录、共享资源名称和权限等两大部分。

/etc/samba/lmhosts :早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。 事实上它有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也无所谓。

/etc/samba/smbusers :由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定

var/lib/samba/private/{passdb.tdb,secrets.tdb} :管理 Samba 的用户账号/密码时,会用到的数据库档案

Samba的安装

我用的系统是CentOS,安装软件一般使用yum(全称为 Yellow dog Updater, Modified)包管理器,yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum -y install samba

image-20210819083706180

Samba实例

mkdir /share #创建一个共享目录
vim /etc/samba/smb.conf

image-20210819090035428

配置文件的参数:

comment = 任意字符串
说明:comment是对该共享的描述,可以是任意字符串。

path = 共享目录路径
说 明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes] 共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目 录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用 户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以 这样写:path = /home/share/%m 。

browseable = yes/no
说明:browseable用来指定该共享是否可以浏览。

writable = yes/no
说明:writable用来指定该共享路径是否可写。

available = yes/no
说明:available用来指定该共享资源是否可用。

admin users = 该共享的管理者
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =david,sandy(多个用户中间用逗号隔开)。

valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = david,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)

invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)

write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = david,@dave

public = yes/no
说明:public用来指定该共享是否允许guest账户访问。

guest ok = yes/no
说明:意义同“public”。

创建smb用户

[root@yxb ~]# useradd smb 
[root@yxb ~]# smbpasswd -a smb
New SMB password:
Retype new SMB password:
Added user smb.

重启服务

systemctl restart smb

win+R打开运行输入\\IP地址

image-20210819093755919

输入刚才创建的用户名的密码

image-20210819093851125

访问成功!

image-20210819093940675

最后说一个比较坑的,进入文件夹的时候会提示没有权限

image-20210819094748444

这是由于selinux造成的,禁用selinux即可

setenforce 0

image-20210819095030213

参考资料

【Linux】Samba服务器超详细安装、配置(附带各种问题解决方式)

Linux samba的配置和使用

推荐阅读

Linux Shell编程基础!

Linux sudo和sudoers详解!

Linux TCP内核参数设置与调优(详细)!

运维一定要知道的Linux RAID详解!

Linux服务管理(详解)!

服务器硬件指南!