1. 简介
1.1. 背景:case is initiative by 某windows无良人事,需求是需要一整块4T的硬盘,由于ESXi5最大支持一块盘是2T大小,而且不可以使用windows动态卷组和裸设备(由于是无良人士,给出的理由自然无良,请不要深究)。决定使用Linux的samba对在本地使用xfs的卷组做网盘映射。正好马哥架构师培训的作业里也有一个关于samba的作业,一起搞定。
1.2. smb:service message block
cifs:common internet file system
1.3. 功能:
文件系统共享:
打印机共享:
NetBIOS协议:
2. 版本
2.1. OS: CentOS Linux release 7.2.1511 (Core)
2.2. kernel: 3.10.0-327.36.2.el7.x86_64
2.3. samba: 4.4.4-12.el7_3
3. 安装
3.1. OS(略)
3.2 samba:
没啥好说的,直接yum装
yum install samba -y
装了好多的包
=============================================================================================================================================================================================== Package Arch Version Repository Size =============================================================================================================================================================================================== Installing: samba x86_64 4.4.4-12.el7_3 updates 610 k Installing for dependencies: libkadm5 x86_64 1.14.1-27.el7_3 updates 173 k libldb x86_64 1.1.26-1.el7 base 125 k libtalloc x86_64 2.1.6-1.el7 base 34 k libtdb x86_64 1.3.8-1.el7_2 base 45 k libtevent x86_64 0.9.28-1.el7 base 34 k libwbclient x86_64 4.4.4-12.el7_3 updates 100 k pytalloc x86_64 2.1.6-1.el7 base 15 k samba-client-libs x86_64 4.4.4-12.el7_3 updates 4.6 M samba-common noarch 4.4.4-12.el7_3 updates 191 k samba-common-libs x86_64 4.4.4-12.el7_3 updates 161 k samba-common-tools x86_64 4.4.4-12.el7_3 updates 451 k samba-libs x86_64 4.4.4-12.el7_3 updates 260 k Updating for dependencies: krb5-devel x86_64 1.14.1-27.el7_3 updates 651 k krb5-libs x86_64 1.14.1-27.el7_3 updates 740 k Transaction Summary ===============================================================================================================================================================================================
3.3. 程序包与服务详解
3.3.1. 服务器程序包:samba
nmbd:NetBIOS name server,主要用来给windows共享
smbd:SMB/CIFS services
systemd unit file:nmb.service/smb.service
/etc/samba/smb.conf:主配置文件
全局配置:[global]
workgroup = :当前samba主机所属工作组
netbios name = :当前samba主机的netbios名称
server string = :主机注释
display charset =:当前samba服务所用字符集
unix charset =:当前Linux主机所用的字符集
dos charset =:Windows端的字符集
interfaces =:samba服务监听的IP地址或网络接口
host allow =:客户端来源白名单
log file =:日志文件位置(%m表示记录客户端的IP地址)
max log size =:每个日志文件的大小
#Standalone Server Options
security =:设定安全级别
#取值为以下三者之一
#share(匿名共享)
#user(使用SAMBA服务自我管理的账号和密码进行用户认证;用户必须是OS用户,但密码为samba服务专用密码)
#domain(使用DC进行用户认证)
passwd backend = tdbsam 密码库文件的格式;
每个共享的专用配置:
[共享名称]:此即为某共享的服务名
comment:注释信息
path:此共享对应本地文件系统路径
browseable:是否可浏览,是否可被所有用户看到;
writeable;是否可写,不可以与writelist同时使用
read only:是否为只读
writelist:可写用户或组列表
用户名
@用户组
+组名
public:是否是公开的服务
guest ok:是否允许来宾账号访问
可用的宏列表(定义在配置文件中的变量):
%m:客户端主机的NetBIOS名称;
%M:客户端的Internet主机名,即HOSTNAME;
%H:当前用户的家目录
%U:当前用户的用户名
%g:当前用户所属的组名
%h:当前SAMBA主机的HOSTNAME;
%I:客户端主机IP;
%T:当前的日期时间;
3.3.2. 监听的端口:137/udp,138/udp,139/tcp,139/tcp,445/tcp
3.3.3. 配置文件测试工具testparm
3.3.4. 用户管理工具smbpasswd
smbpasswd [option] USERNAME
-a:添加
-x:删除
-d:禁用
-e:启用
3.3.5. 访问samba共享
Linux:
smbclient:交互式命令行客户端;
# smbclient -L SAMBA_SERVER -U USERNAME
# smbclient //SAMBA_SERVER/SERVICE_NAME -U USERNAME
mount -t cifs:挂载文件系统
# mount -t cifs -o username=USERNAME,password=PASSWORD //SAMBA_SERVER/SHARED /MOUNT_POINT
Windows:
\HOST OR IPSHARED_DIR
3.3.6. 管理samba用户:pdbedit
pdbedit [options]
-L:列出所有的smb用户;
-v:verbose
-a:添加用户
-u USERNAME
-x:删除指定用户
-r:修改用户的相关信息
3.3.7. samba服务的状态:smbstatus
-b:显示简要格式信息
-v:显示详细格式信息
4. 配置
4.1. 配置两块盘为一个本地的卷组
两块盘
创建卷组vg_samba
创建逻辑卷lv_samba,把空间都用上
格式化文件系统为xfs,然后挂在/data_samba上
如果需要开启启动,请记得systemctl enable smb.service,并且在/etc/fstab中把要共享的文件系统写进去,过程略。
4.2. 以作业为例题,要求如下:
建立samba共享,共享目录为/data_samba,要求:(描述完整的过程)
1)共享名为shared,工作组为magedu;
2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;
3)添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;
4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;
5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;
添加samba用户(samba用户必须为系统用户):
4.3. 增加共享资源,修改/etc/smb.conf
[shared] comment = shared workgroup = magedu path = /data_samba browseable = yes guest ok = yes write list = @develop allow host = 172.16.0.0/16
4.4. 添加各种用户和组
#添加用户和组 [root@hccwhuatnginx01 yum.repos.d]# useradd gentoo [root@hccwhuatnginx01 yum.repos.d]# useradd centos [root@hccwhuatnginx01 yum.repos.d]# useradd ubuntu [root@hccwhuatnginx01 yum.repos.d]# groupadd develop #添加用户到组 [root@hccwhuatnginx01 yum.repos.d]# gpasswd -a centos develop Adding user centos to group develop [root@hccwhuatnginx01 yum.repos.d]# gpasswd -a ubuntu develop Adding user ubuntu to group develop #修改用户密码 [root@hccwhuatnginx01 yum.repos.d]# echo "gentoo"|passwd --stdin gentoo Changing password for user gentoo. passwd: all authentication tokens updated successfully. [root@hccwhuatnginx01 yum.repos.d]# echo "centos"|passwd --stdin centos Changing password for user centos. passwd: all authentication tokens updated successfully. [root@hccwhuatnginx01 yum.repos.d]# echo "ubuntu"|passwd --stdin ubuntu Changing password for user ubuntu. passwd: all authentication tokens updated successfully. #修改用户samba密码 [root@hccwhuatnginx01 yum.repos.d]# smbpasswd -a gentoo New SMB password: Retype new SMB password: Added user gentoo. [root@hccwhuatnginx01 yum.repos.d]# smbpasswd -a centos New SMB password: Retype new SMB password: Added user centos. [root@hccwhuatnginx01 yum.repos.d]# smbpasswd -a ubuntu New SMB password: Retype new SMB password: Added user ubuntu.
4.5 最后记得修改文件夹的权限
[root@hccwhuatnginx01 /]# chown :develop /data_samba/ [root@hccwhuatnginx01 /]# chmod g+w /data_samba/ [root@hccwhuatnginx01 /]#