Linux运维~3.存储分离——4.Samba

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共享

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值