Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、 打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
SMB文件共享
win中,右键属性共享,可选所有人,在搜索行中输入\\ip就可以看到
samba作用
提供cifs协议实现共享文件(common internet file system)
linux安装samba
服务端:
1.Installed:
samba.x86_64 0:4.1.1-31.el7
samba-client.x86_64 0:4.1.1-31.el7
客户端Installed:
samba-client.x86_64 0:4.1.1-31.el7
2.服务端配置密码:
添加smb用户
smb用户必须时本地用户
smbpasswd -a student
New SMB password: #输入smb当前用户密码
Retype new SMB password: #确认密码
3.将selinux设定为警告模式
[root@shareserver ~]# getenforce
Enforcing
[root@shareserver ~]# setenforce 0
4.关闭火墙
[root@shareserver ~]# systemctl stop firewalld.service
[root@shareserver ~]# systemctl disable firewalld.service
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
客户端:
1)指定用户登陆
smbclient -L //172.25.254.148 -U student
报错处理:
(1)Connection to 172.25.254.148 failed (Error NT_STATUS_CONNECTION_REFUSED)
检查两边防火墙设置与selinux(设为Permissive)
(2)protocol negotiation failed: NT_STATUS_IO_TIMEOUT
vim /etc/hosts添加自己的主机ip 与名称
2)指定用户登陆到用户家目录/home/student
[root@client ~]# smbclient //172.25.254.148/student -U student
del | rm file1 删除文件
mkdir dir 创建目录
put 只能put当前目录的
!ls 查看当前目录
3)将smb指定用户student挂载到/mnt/
mount -o username=student,password=westos //172.25.254.148/student /mnt/
随心操作
4)黑白名单:
vim /etc/samba/smb.conf
96行 hosts allow = 172.25.254.166 白名单
重启服务生效
97行 hosts deny =172.25.254.166 黑名单
重启服务测试
5)域名修改:
vim /etc/samba/smb.conf
89 workgroup = MYGROUP 修改为
89 workgroup = WESTOS
smbclient -L //172.25.254.148 -U student
Enter student's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
student Disk Home Directories
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
*注意:每次修改完配置文件记得
systemctl restart smb.service
6)若selinux为强制级别
客户端无法访问家目录
[root@client ~]# smbclient //172.25.254.148/student -U student
Enter student's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
服务端:
打开selinux开关
getsebool | grep samba
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on
客户端就可以访问家目录
7)匿名用户登录:
smbclient -L //172.25.254.148
Enter root's password: 直接回车
Anonymous login successful
8)指定其他目录访问
vim /etc/samba/smb.conf
添加
321 [linux] 名称
322 comment =westos dir share
323 path = /westos 绝对路径
重启服务
客户端测试(确保服务端有/westos):
[root@client ~]# smbclient //172.25.254.148/linux -U student
*若selinux强制状态:
访问被拒绝
smbclient //172.25.254.148/linux -U student
Enter student's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> quit
解决1.打开开关
samba_export_all_ro --> off 允许读
samba_export_all_rw --> off 允许读写
解决2.更改安全上下文 samba_share_t '/目录名(/.*)?'
semanage fcontext -a -t samba_share_t '/westos(/.*)?' 更改安全上下文
restorecon -RvvF /westos 同步安全上下文
ls -Zd /westos/ 验证
drwxr-xr-x. root root system_u:object_r:samba_share_t:s0 /westos/
*其他目录若为系统目录,则不能采取更改安全上下文的方式。
9)服务端
指定其他目录查看——其他相关参数
[linux]
comment =westos dir share 描述
path = /westos 路径
writable = yes 是否可读写
write list = @westos westos组内用户可写
valid users = +student student组内用户可登陆(+代表组)
browseable = yes 是否可见 (-L 查看看不到)
admin users = student student用户以超级用户身份登陆
guest ok = yes 匿名用户可以查看
*匿名用户可登陆需再更改,并注释掉矛盾内容
125 map to guest = bad user 标记guest身份为匿名用户
匿名用户上传文件
[root@shareserver westos]# ll
total 12
-rwxr--r--. 1 nobody nobody 8619 Nov 27 01:22 anaconda-ks.cfg
组名和用户名为nobody
6.客户端安全——samba的多用户挂载
只有认证用户才能查看挂载信息
禁止匿名用户登陆
yum install cifs-utils.x86_64 安装服务
[root@client ~]# vim /root/smbpass 验证文件
username=student
password=westos
更改权限,不让别人查看
[root@client ~]# chmod 600 /root/smbpass
[root@client ~]# ls -Zd /root/smbpass
-rw------- root root ? /root/smbpass
[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.148/linux /mnt/
credentials=/root/smbpass 指定挂载时所用到的用户文件
sec=ntlmssp 认证方式为标准smb认证方式
multiuser 可添加多用户(不写就不能添加其他用户)
[root@client ~]# df 查看挂载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3216120 7257780 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 140 484792 1% /dev/shm
tmpfs 484932 12784 472148 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2339 451840 1% /home
//172.25.254.148/linux 10473900 3188476 7285424 31% /mnt
将客户端的student用户加入服务端smb用户student,就可以访问/mnt
测试:
[student@client ~]$ cifscreds add -u student 172.25.254.148
Password: smb用户student的密码
[student@client ~]$ cd /mnt/
[student@client mnt]$ ls
anaconda-ks.cfg
其他用户仍无法访问
[jack@client ~]$ cd /mnt
[jack@client mnt]$ ls
ls: reading directory .: Permission denied
因为没有作smb的认证所以无法访问smb共享