samba介绍:
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP"使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
实验需求:
创建六个用户,分别为 yg001 ,yg002,yg003,yg004,yg005,boss001,使其都可以访问共享目录public,此文件夹的大小为5G,但是它可以扩展大小。用户yg001,yg002,yg003可以在public下创建和删除文件,并且彼此之间创建的文件可以相互修改,其他用户则没有此权限,yg001和yg002最多只能创建100M的总文件大小,还不能删除其他人创建的文件,但是yg003没有限制。以上六个用户都有一个以自己为名字的共享目录,仅自己可见可访问可创建,其他人没有权限,但是boos001对yp001–yp005共享的个人目录有完整的权限
安装:
yum install -y samba
#如果装有dnf也可以使用dnf装
dnf install -y samba
共享用户的建立:
[root@localhost ~]# for username in yg001 yg002 yg003 yg004 yg005 boss001;do useradd -s /sbin/nologin $username ; (echo centos;echo centos) |smbpasswd -a $username ;done
#查看共享用户
[root@localhost ~]# pdbedit -L
yg003:1036:
yg004:1038:
yg002:1040:
yg001:1037:
yg005:1039:
boss001:1041:
创建逻辑卷:
#分区 详细的就略过了这一步
[root@localhost ~]# fdisk /dev/sda
[root@localhost ~]# partprobe /dev/sda
#pv的创建
[root@localhost ~]# pvcreate /dev/sda6
#vg的创建
[root@localhost ~]# vgcreate vgname /dev/sda6
#lv的创建大小为5G
[root@localhost ~]# lvcreate -L 5G -n lvname vgname
#lv的查看
[root@localhost samba]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvname vgname -wi-ao---- 5.00g
[root@localhost ~]# mkfs.ext4 /dev/vgbaishe/lvbaishe
#将共享的文件挂载到逻辑卷上,并设置quota
[root@localhost ~]# vim /etc/fstab
/dev/vgname/lvname /app/publicfile ext4 defaults,usrquota 0 0
给用户设置quota
#生成quota
[root@localhost ~]# quotacheck -cum /app/publicfile/
#开启quota
[root@localhost ~]# quotaon /app/publicfile/
#给用户设置quota的可创建文件的总大小
[root@localhost samba]# setquota -u yg001 0 100M 0 0 /app/publicfile/
[root@localhost samba]# setquota -u yg002 0 100M 0 0 /app/publicfile/
#查询quota
[root@localhost samba]# repquota -v /app/publicfile/
*** Report for user quotas on device /dev/mapper/vgname-lvname
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 16 0 0 0 0 0
yg001 -- 8 0 102400 0 0 0
yg002 -- 0 0 102400 0 0 0
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 0
Used average: 4.000000
主配置文件配置:
[root@localhost samba]# vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
#伪装服务器的类型
server string = Windows 7 Ultimates 7.0
#那些地址可以访问我 下面的意思是这个网段的都行
hosts allow= 192.168. 172.168.
#以ip地址.log为名字的日志文件
log file = /var/log/samba/%I.log
#子配置文件的地址其中%U是名字的宏定义
config file = /etc/samba/conf.d/%U.conf
[public]
#commetn是这个共享的描述
comment = This is public
#path是共享文件的地址
path = /app/publicfile
#是否允许匿名访问
public = yes
browseable = no
#是否可写
writeable = no
linux命令式测试:
#linuxxia匿名访问
[root@localhost samba]# smbclient -L //192.168.242.128
Enter SAMBA\root's password:
Anonymous login successful
OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Windows 7 Ultimates 7.0)
Anonymous login successful
OS=[Windows 6.1] Server=[Samba 4.6.2]
Server Comment
--------- -------
Workgroup Master
--------- -------
#linux下有身份访问
[root@localhost samba]# smbclient -L //192.168.242.128 -U gy003
Enter SAMBA\baisuzhen's password:
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
public Disk This is public
IPC$ IPC IPC Service (Samba 4.6.2)
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
Server Comment
--------- -------
Workgroup Master
--------- -------
#注意:上面的ip是我搭建samba服务器的ip地址
权限的设置:
#修改指定目录到指定组,可以更加方便的设置acl权限
[root@localhost baishezhuan]# chgrp baizhezhuan /app/publicfile/
#将以下三人加入到指定组
[root@localhost baishezhuan]# gpasswd -a yg001 baizhezhuan
[root@localhost baishezhuan]# gpasswd -a yg002 baizhezhuan
[root@localhost baishezhuan]# gpasswd -a yg003 baizhezhuan
#设置指定文件的acl值,使只有指定的组中用户才有创建的权限
[root@localhost baishezhuan]# setfacl -Rm d:g:baizhezhuan:rwx /app/publicfile/
#改变文件的所属人,为下一步做准备
[root@localhost baishezhuan]# chown yg003 /app/publicfile/
#给指定文件设置特殊权限,使只有目录的所属人和目录里文件的所属人可以删除文件
[root@localhost baishezhuan]# chmod o+t /app/publicfile/
#给指定用户设置acl 使其可以有更高的权限对指定的文件
[root@localhost app]# setfacl -Rm d:u:boss001:rwx /app/common/
[root@localhost ~]# cd /app/common/
[root@localhost common]# ll
total 0
drwxrwx---+ 2 yg003 root 25 Oct 9 09:01 yg003
drwxrwx---+ 2 yg004 root 23 Oct 9 09:05 yg004
drwxrwx---+ 2 boss001 root 6 Oct 9 08:42 boss001
drwxrwx---+ 2 yg005 root 6 Oct 9 08:42 yg005
drwxrwx---+ 2 yg002 root 6 Oct 9 08:42 yg002
drwxrwx---+ 2 yg001 root 6 Oct 9 08:42 yg001
子配置文件配置:
[root@localhost ~]# /etc/samba/conf.d
[root@localhost conf.d]# ll
total 24
-rw-r--r--. 1 root root 273 Oct 9 08:49 yg003.conf
-rw-r--r--. 1 root root 263 Oct 9 08:50 yg004.conf
-rw-r--r--. 1 root root 259 Oct 9 08:52 boss001.conf
-rw-r--r--. 1 root root 272 Oct 9 08:51 yg005.conf
-rw-r--r--. 1 root root 325 Oct 9 08:51 yg002.conf
-rw-r--r--. 1 root root 291 Oct 9 08:52 yg001.conf
#yg003的子配置文件和其他除了boss001的都一样,只是更改一下[yg003](这个[]里的内容最好跟用户名一致)下的 path的路径即可,
[root@localhost conf.d]# cat yg003.conf
[public]
comment = This is public
path = /app/publicfile
public = yes
browseable = yes
writeable = yes
force create mode = 775
[yg003]
comment = wo shi 003
path = /app/common/yg003
browseable = yes
writeable = yes
#boss001的子配置,这样使其可以对所有的用户的共享都有改删查的操作
[root@localhost conf.d]# cat boss001.conf
[public]
comment =This is public
path = /app/publicfile
public = yes
browseable = yes
writeable = yes
[common]
comment = wo shi boss
path = /app/common
browseable = yes
writeable = yes
windows下测试:
windows+r

输入用户名和密码即可访问共享文件

总结:此实验主要是对权限的设置,samba的部分稍微简单。
本文详细介绍如何使用Samba在Linux环境下实现文件共享,包括安装、用户管理、逻辑卷配置、权限设置及配额管理,同时提供了Linux和Windows下的测试方法。
981

被折叠的 条评论
为什么被折叠?



