实现SAMBA服务

SAMBA的功能:
共享文件和打印,实现在线编辑
实现登录SAMBA用户的身份认证
可以进行NetBIOS名称解析
外围设备共享
Windows计算机网络管理模式:
工作组WORKGROUP:计算机对等关系,帐号信息各自管理
域DOMAIN:C/S结构,帐号信息集中管理,DC,AD
SAMBA与NFS:SAMBA不管是服务器还是客户端都能布置在windows或linux、而NFS只支持客户端win10及以上有这个功能。

 

服务进程:
smbd 提供smb(cifs)服务 TCP:139,445(端口) <主要服务进程>
nmbd NetBIOS名称解析 UDP:137,138(端口)      <次要服务进程,将UNC中的名称解析成IP>

PS:虽然打通linux和windows之间的壁垒,但是随着不同系统的软件版本不断升级,那么其兼容性就会出现一定问题<例如:导致有时Windows客户端访问linuxSAMBA服务器的网络共享资源时会出现卡顿的现象>

实验组图:

SAMBA主配置文件:/etc/samba/smb.conf 说明:用于实现文件的共享。
SAMBA用户数据库文件:/var/lib/samba/private/passdb.tdb  说明:samba用户须是Linux用户,建议使用/sbin/nologin


1.安装samba启动smb服务进程。

yum -y install samba
systemctl enable --now smb

<安装完samba后可以看到nmb smb 这两个写好的服务,如果没有特殊要求启动smb就好>

 

 

2.使用windows客户机通过UNC路径访问SAMBA服务器提示需要输入账号,而这个账号为SAMBA服务器管理因此需要在SAMBA服务器端创建。

3.在SAMBA服务器创建SAMBA账号(成为SAMBA账号的前提必须是系统账号)

useradd smb 
smbpasswd -a smb
pdbedit -L -v     #查看已存在的smb账号详细信息     


<关键配置信息
User SID:和Linux中的UID差不多意思
Home Directory:家目录,客户机访问输入账号和密码后就会进入到这个目录中
>

<再使用SAMBA账号登录发现能够成功登录(登录的是账号的家目录,因此文件如果上传则存放于SAMBA账号映射的系统账号家目录中)>

4..Linux客户机安装SAMBA-Client(windows默认安装SAMBA客户端),通过客户端命令使用smb账号登录smb服务器以此访问资源。

yum -y install samba-client

 smbclient -L 10.0.0.10 -U smb%123456   #通过-L 显示SAMBA服务器中smb账号的家目录文件以及可以访问的共享目录
 smbclient //10.0.0.10/smb -U smb%123456    #追加 -L 查看到的smb账号家目录路径即可登录smb账号在SAMBA服务器的家目录,从而上传或下载资源。

<通过help查看可使用的命令(类似登录VSFTPD服务器)>

5.以上配置能够访问的只是SAMBA账号的家目录,如果想要指定文件共享还得进入SAMBA服务器的主配置文件中进行相应配置。
例如:在SAMBA服务器上将此文件进行共享

1)打开主配置文件

vim /etc/samba/smb.conf         #主配置文件
vim /etc/samba/smb.conf.example #主配置文件的example,拥有众多配置的选项模板及说明。

选项说明:

samba配置中的宏定义:
%m 客户端主机的NetBIOS名  
%M 客户端主机的FQDN
%H 当前用户家目录路径
%U 当前用户的用户名
%g 当前用户所属组
%h samba服务器的主机名
%L samba服务器的NetBIOS名
%I 客户端主机的IP,是i的大写字母
%T 当前日期和时间  
%S 可登录的用户名

[共享名称]      #远程网络看到的共享名称
comment        #注释信息
path           #所共享的目录路径
public         #能否被guest访问的共享,默认no,和guest=ok 类似
browsable      #是否允许所有用户浏览此共享,默认为yes,no为隐藏
writable=yes   #可以被所有用户读写,默认为no
read only=no   #和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
write list     #用户,@组名,+组名 之间用逗号分隔,如:writable = no,列表中用户或组可读写,不在列表中用户只读
valid users    #特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

 

PS:共享文件夹用户想要上传文件必须拥有w权限
1>在SAMBA服务器的主配置文件中针对共享文件夹开放w权限(如:writeble=yes或write list=xxx,xxx,xxx)
2>通过chmod开放共享文件夹在文件系统的w权限(建议777)
2)在global中增加log功能、指定需要共享的文件夹并开启相关功能。
<global配置>

log file = /var/log/samba/log.%I

<共享文件夹test配置>

[test]
path = /data/test   
browsable = no  
write list = smb #将smb账号纳入该文件的写权限列表中(即可上传文件)

测试环境:

1)可以看到客户机使用查看命令时只能看到该Samba账号的家目录而看不到test文件夹(因为关闭了browseable功能)

smbclient -L 10.0.0.10 -U smb%123456

2)虽然共享文件夹取消了浏览功能,但是由于是我自己配置的因此只需IP后跟上test文件夹名作为路径即可访问。

smbclient  //10.0.0.10/test -U smb%123456

3)在global中增加了日志功能,当linux客户机登录samba服务器访问共享资源时则被记录下来。
<因为日志后缀为%I 所以日志格式会以客户机IP为后缀>

<并且能够成功上传文件>

6.SAMBA服务器采用的是cifs文件系统,支持共享文件挂载。
1)一次性挂载

mount //10.0.0.10/test /mnt/test -o user=smb,pass=123456    #访问共享文件如果需要账号密码那么挂载自然也需要,通过 -o 实现

2)永久性挂载,但涉及一个问题,但凡挂载都是需要账号和密码但如果写入到 /etc/fstab 因为这个文件其他人拥有r权限,如果被看到会不太安全,因此可以通过命令将账号密码指向某个文件(此文件存放SAMBA账号),将这个文件的权限改为700那么就可以做到除了root其他人无法查看到此文件,提高了安全性。
1>
此文件隶属于cifs文件系统,通过credentials命令进行指向。

//10.0.0.10/test        /mnt/test               cifs    credentials=/etc/test_user        0 0   

2>在指向的文件中输入samba账号和密码信息。

vim /etc/test_user
user=smb
pass=123456

 

 

3>将权限修改为700

chmod 700 /etc/test_user

 

 4>重启过后,仍然能够挂载文件》》》成功!!!

总结:
1)
相同:SAMBA账号和VSFTPD的虚拟账号其实都是虚拟账号只不过是通过映射服务器的系统账号得到访问文件系统的权限。
不同:SAMBA账号是一个系统账号映射一个SAMBA账号(且SAMBA账号的名字要与系统账号名字一致)、VSFTPD则是多个虚拟账号映射一个系统账号通过user_config_dir功能达到虚拟账号的隔离。

2)
windows中不允许使用以两个及以上的账号同时登录服务器(导致第一个SAMBA
账号登录SAMBA服务器的家目录后第二个账号再想登录就会被拒绝)。

解决方案:在cmd中通过net use 命令查看连接状态,将其连接信息删除(类似于缓存)。

net use
net use \\10.0.0.10\IPC$ /del   #也可将此命令以bak后缀保存在文件中(脚本)

 

posted on 2021-07-12 14:31  1251618589  阅读(8)  评论(0编辑  收藏  举报

导航