<>samba概念

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages
Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS
over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

<>1.samba服务器的安装及访问调试
yum install samba-client samba-common.x86_64 samba.x86_64 -y



编辑samba的配置文件
vim /etc/samba/smb.conf
添加
[gzl] 共享的名称 path = /westos 共享的路径

同时可以看到主配置文件中显示,selinux对共享目录的影响
Set SELinux labels only on files and directories you have created. Use the
chcon command to temporarily change a label: chcon -t samba_share_t
/path/to/directory
我们需要设置安全上下文
[root@server ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
[root@server ~]# restorecon -RvvF /westos/ restorecon reset /westos context
unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0

systemctl restart smb 重启smaba
systemctl stop firewalld.service [root@server ~]# smbpasswd -a westos New SMB
password: Retype new SMB password: Failed to add entry for user westos.
[root@server ~]# id westos id: westos: no such user

要添加为smb用户,必须要是本地用户
[root@server ~]# useradd westos [root@server ~]# smbpasswd -a westos New SMB
password: Retype new SMB password: Added user westos. [root@server ~]# pdbedit
-L westos:1001:

pdbedit -L 查看smb用户
在客户端测试

下载samba客户端
yum install samba-client.x86_64 -y
方式一:用户身份或匿名直接查看
匿名用户查看

用户身份查看
[root@client ~]# smbclient -L //172.25.254.213 <https://172.25.254.213> -U
westos
Enter westos’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment --------- ---- ------- gzl Disk IPC$ IPC IPC Service
(Samba Server Version 4.1.1) westos Disk Home Directories Domain=[MYGROUP]
OS=[Unix] Server=[Samba 4.1.1] Server Comment --------- ------- Workgroup
Master --------- -------

在服务端建立文件,在客户端查看
[root@client ~]# smbclient //172.25.254.213/gzl -U westos Enter westos's
password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] smb: \> ls . D 0 Sat
May 25 22:06:52 2019 .. D 0 Sat May 25 21:48:03 2019 file N 0 Sat May 25
22:06:52 2019 40913 blocks of size 262144. 28591 blocks available smb: \> quit

方式二:挂载后操作
[root@client ~]# mount //172.25.254.213/gzl /mnt -o
username=westos,password=123 [root@client ~]# df Filesystem 1K-blocks Used
Available Use% Mounted on /dev/vda1 10473900 3247632 7226268 32% / devtmpfs
469332 0 469332 0% /dev tmpfs 484920 140 484780 1% /dev/shm tmpfs 484920 12800
472120 3% /run tmpfs 484920 0 484920 0% /sys/fs/cgroup /dev/mapper/vg0-vo
483670 2339 451840 1% /home /dev/sr0 3704296 3704296 0 100%
/run/media/root/RHEL-7.3 Server.x86_64 //172.25.254.213/gzl 10473900 3158236
7315664 31% /mnt [root@client ~]# cd /mnt [root@client mnt]# ls file


<>2.samba基本操作

在配置文件最后添加这些的作用
[gzl] comment = westos dir 说明 path = /westos 共享路径 browseable = no
是否可以查看到,no为不显示,但可以用 valid users = +westos 允许哪些用户登陆,前面加 +或@为 westos这个组 writeable
= yes 可写 guest ok = yes 匿名用户登陆
注意:配置文件修改后,还要注意共享目录的权限,对于哪些用户可写,只有两个都可写,才能写
1).说明

vim /etc/samba/smb.conf

添加
[gzl] comment = westos dir path = /westos

systemctl restart smb
客户端查看
[root@client ~]# smbclient -L //172.25.254.213 Enter root's password:
Anonymous login successful
匿名用户没有密码,所以直接回车就可以了
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] Sharename Type Comment
--------- ---- ------- gzl Disk westos dir IPC$ IPC IPC Service (Samba Server
Version 4.1.1) Anonymous login successful Domain=[MYGROUP] OS=[Unix]
Server=[Samba 4.1.1] Server Comment --------- ------- Workgroup Master
--------- -------

2)共享的目录是否可以查看

vim /etc/samba/smb.conf

添加
[gzl] comment = westos dir path = /westos browseable = no

systemctl restart smb
客户端查看
[root@client ~]# smbclient -L //172.25.254.213 Enter root's password:
Anonymous login successful Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba
Server Version 4.1.1) Anonymous login successful Domain=[MYGROUP] OS=[Unix]
Server=[Samba 4.1.1] Server Comment --------- ------- Workgroup Master
--------- -------

查看不到,那能否使用呢
[root@client ~]# mount //172.25.254.213/gzl /mnt -o
username=westos,password=123 [root@client ~]# df Filesystem 1K-blocks Used
Available Use% Mounted on /dev/vda1 10473900 3251420 7222480 32% / devtmpfs
469332 0 469332 0% /dev tmpfs 484920 140 484780 1% /dev/shm tmpfs 484920 12800
472120 3% /run tmpfs 484920 0 484920 0% /sys/fs/cgroup /dev/mapper/vg0-vo
483670 2339 451840 1% /home /dev/sr0 3704296 3704296 0 100%
/run/media/root/RHEL-7.3 Server.x86_64 //172.25.254.213/gzl 10473900 3158276
7315624 31% /mnt

查看不到,但是可以使用
3)允许登陆的用户
[gzl] comment = westos dir 说明 path = /westos 共享路径 ; browseable = no
是否可以查看到,no为不显示,但可以用 valid users = westos 允许哪些用户登陆,前面加 +或@为 westos这个组 #和;都表示注释

systemctl restart smb

在客户端查看
先用westos用户查看

可以登录查看到
那么其他用户是否可以呢
在服务端新建一个用户,并把这个用户添加为samba用户

在客户端登录查看

被禁止无法查看

在服务端改为
[gzl] comment = westos dir 说明 path = /westos 共享路径 ; browseable = no
是否可以查看到,no为不显示,但可以用 valid users = +westos 允许哪些用户登陆,前面加 +或@为 westos这个组 systemctl
restart smb
设置为westos组用户可登陆

在服务端将gzl用户添加到westos组



gzl作为westos的组用户可以登录
4)可写
在服务端

允许可写,但还要看/westos这个目录的权限

使/westos目录也具有写权限
在客户端

服务端查看


<>3.怎样实现smb的多用户挂载?

刚才在服务端将smb服务设置好之后
客户端实现挂载,对smb的共享目录进行修改
这个时候客户端以服务端lwestos身份实现登陆
现在客户端的linux用户也想使用smb服务
当linux用户直接可以查看root用户挂载在/mnt的东西时,这样是很不安全的


就像这个现象
应该客户端地每一个用户在smb服务端均有自己的用户

那么如何操作呢

实验步骤如下:
客户端:
mount //172.25.254.111/gzl /mnt -o username=lee,password=lee客户端挂载 df查看挂载 cd
/mnt ls useradd linux id linux su - linux cd /mnt ls也可以看到root用户挂载后/mnt下面的东西

df cd /mnt ls mount 可以看到是lwestos身份的smb exit

yum install cifs-utils -y 安装可以实现多用户挂载的服务 man mount.cifs 可以查看cifs系统的挂载策略 df
umount /mnt df

vim /root/smbauth smb挂载用户身份的一个认证文件
之前挂载的时候用户是裸露在外面的,现在写在认证文件里面
username=westos password=l123

chmod 600 /root/smbauth ls -l /root/smbauth mount //172.25.254.113/gzl /mnt -o
credentials=/root/smbauth

umount /mnt mount //172.25.254.113/Lgzl /mnt -o
credentials=/root/smbauth,sec=ntlmssp,multiuser su - linux cd /mnt ls 被拒绝

以认证方式挂载,切换到linux用户,无法查看

现在为linux用户创建挂载用户
cifscreds --help cifscreds add -u westos 172.25.254.111 cd /mnt ls
此时就可以看了


cifscreds clear -u westos 172.25.254.111 取消 touch file6 ll
在客户端是属于linux用户的(因为linux的id与westos的id一样)
在服务端:
cd /westos ll 在服务端是属于westos的
注意:如果客户端的id与westos不一样,就直接显示westos的id,因为客户端不存在id与westos一样的用户
id westos

客户端:
exit
cd /mnt
touch file7

服务端:
ll 属于westos的

<>怎样实现永久挂载?

在客户端:

vim /etc/fstab
//172.25.254.111/gzl /mnt cifs
defaults,credentials=/root/smbauth,sec=ntlmssp,multiuser 0 0 mount -a df

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信