Linux之samba服务部署

环境
Windows11、VMware Workstation 16.2.2
系统
Red hat7.0
说明
samba是什么?能干什么?什么场合需要用到它?
- samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。
- Linux对于开发来说是一个非常好的系统,但是人机友好不如windows,我就通常在windows上用sourceinsight编辑代码,然后在Linux端编译运行,而且经常需要把音视频从Linux和windows端互相拷贝,这时候Samba就显得很方便了。
部署
执行yum源安装
[root@jw2031-122 ~]# yum install samba -y
检查是否安装成功
[root@jw2031-122 ~]# rpm -qa |grep sambasamba-libs-4.6.2-8.el7.x86_64samba-common-4.6.2-8.el7.noarchsamba-client-libs-4.6.2-8.el7.x86_64samba-common-libs-4.6.2-8.el7.x86_64samba-4.6.2-8.el7.x86_64samba-common-tools-4.6.2-8.el7.x86_64
配置文件:
/etc/samba/smb.conf
常用配置文件结构说明:
1 |
|
匿名访问共享目录
实例:某学校办公室通过samba服务器发布公共共享目录“/usr/share/public”共享名为public_doc,允许除192.168.22.222以外的192.168.22.0网段中所有客户端访问,可以写入文件,但是不可以删除或修改其他用户文件。
[root@Jw2031-122 ~]# mkdir /usr/share/public[root@Jw2031-122 ~]# touch /usr/share/public/file01.md[root@Jw2031-122 ~]# chmod 1777 /usr/share/public //所有用户可写入但不能删他人文件
[root@Jw2031-122 ~]# vi /etc/samba/smb.conf
[global] //全局参数
workgroup = SAMBA //设置samba服务所在的工作组
security = user //设置身份验证方式
map to guest = Bad User //开启匿名访问
hosts allow = 192.168.22. except 192.168.22.222 //默认允许所有IP访问,允许访问与不允许访问ip地址
[public_doc]
comment = public
path = /usr/share/public
guest ok = yes //允许匿名访问
browseable = yes //共享目录是否可见
writeable = yes //共享目录可以读写
printable = no //用户不可以打印
测试:略🦵
用户认证访问共享目录
实例1:在samba服务器上按部门建立相应目录,要求教务处和学生处只可以被校长和本部门员工访问,禁止非本部门员工访问。
- 办公室
目录:/usr/share/public 共享名:public_doc 目录访问权限:匿名用户均可读写执行
- 教务处
目录:/usr/share/jwc 共享名:jwc_doc 部门组账号名:gjwc 部门中用户:rector(读写执行)、zhang3(读取)
- 学生处
目录:/usr/share/xsc 共享名:xsc_doc 部门组账号名:gxsc 部门中用户:rector(读写执行)、li4(读取)
步骤1:按部门创建组账号归属相关部门
[root@Jw2031-122 ~]# groupadd -r gjwc //创建ID号小于等于1000的系统组账号[root@Jw2031-122 ~]# groupadd -r gxsc[root@Jw2031-122 ~]# useradd -M -G gjwc -s /sbin/nologin zhang3 //-M 不创建家目录[root@Jw2031-122 ~]# useradd -M -G gxsc -s /sbin/nologin li4 //-G 指定所属附加组[root@Jw2031-122 ~]# useradd -M -G gjwc,gxsc -s /sbin/nologin rector //-S 指定用户登录使用的Shell
步骤2:使用pdbedit命令创建与linux系统用户同名的samba用户。
[root@Jw2031-122 ~]# pdbedit -a zhang3
[root@Jw2031-122 ~]# pdbedit -a li4
[root@Jw2031-122 ~]# pdbedit -a rector
步骤3:创建各部门相应的共享目录和访问权限
[root@Jw2031-122 ~]# mkdir -p /usr/share/public[root@Jw2031-122 ~]# mkdir -p /usr/share/jwc /usr/share/xsc[root@Jw2031-122 ~]# touch /usr/share/jwc/file1.tar /usr/share/xsc/file2.tar[root@Jw2031-122 ~]# chown rector.gjwc /usr/share/jwc //修改目录的属主及属组[root@Jw2031-122 ~]# chown rector.gxsc /usr/share/xsc[root@Jw2031-122 ~]# ll -d /usr/share/jwc /usr/share/xscdrwxr-xr-x. 2 rector gjwc 23 5月 1 18:23 /usr/share/jwcdrwxr-xr-x. 2 rector gxsc 23 5月 1 18:23 /usr/share/xsc[root@Jw2031-122 ~]# chmod 750 /usr/share/jwc //修改目录的访问权限[root@Jw2031-122 ~]# chmod 750 /usr/share/xsc
步骤4:修改Samba主配置文件smb.conf
[root@Jw2031-122 samba]# vi smb.conf
[global]
security = user //设置Samba服务器对客户端进行身份验证的方式
idmap config * : backend = tdb
[jwc_doc]comment = jwc datapath = /usr/share/jwccreate mask = 770directory mask = 770valid users = rector @gjwcwrite list = rector @gjwc
[xsc_doc]
comment = xsc data
path = /usr/share/xsc
browseable = No
create mask = 770
directory mask = 770
valid users = rector @gxsc
write list = rector @gxsc
测试
windows 测试略~
断开连接小命令
1 | 在Windows系统下删除远程连接: |
linux客户端挂载✍
install⤵️
samba-clientsamba-commoncifs-utils
/dyzx_share为客户端共享名并非目录
[root@zs jwc]# mount -o username=Anonymous //192.168.22.150/dyzx_share /share ##匿名挂载
[root@zs zs]# mount -o username=rector //192.168.22.150/dyzx_jwc /jwc ##用户挂载







