Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得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 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
[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 -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
在配置文件最后添加这些的作用
[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
--------- -------
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
[gzl]
comment = westos dir 说明
path = /westos 共享路径
; browseable = no 是否可以查看到,no为不显示,但可以用
valid users = westos 允许哪些用户登陆,前面加 +或@为 westos这个组
#和;都表示注释
在客户端查看
先用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目录也具有写权限
在客户端
服务端查看
刚才在服务端将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用户创建挂载用户
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