Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。(来源:秒懂百科。)
实验一、samba的安装及启用
dnf install samba samba-common.noarch samba-client.x86_64 -y ##安装相关软件包
systemctl enable --now smb.service ##启用服务
firewall-cmd --permanent --add-service=samba ##加入到防火墙服务列表中
firewall-cmd --reload
firewall-cmd --list-all
测试看服务是否正常启用·:
smbclient -L //172.25.254.137 ##查看172.25.254.137用户的资源列表
实验二、用户管理
mbpasswd -a westos ##添加用户
smbpasswd -a lee ##添加用户
pdbedit -L ##查看用户列表
pdbedit -x lee ##删除smb列表用户
smbclient -L //172.25.254.137 -U westos ##查看指定用户可用资源列表
smbclient -L //172.25.254.137 -U lee
在连接时,如果连接较慢,可以编辑本地解析文件
vim /etc/hosts:
172.25.254.137 westos_storage.westos.org ##本地解析
smbclient //172.25.254.137/westos -U westos ##用户指定账号登陆
实验三、samba共享文件
配置文件的生成
cd /etc/samba
cp -p samba.cpnf.example samba.conf ##复制配置文件模板,生成配置文件
1.smb用户默认是不能访问自己的家目录的
想要访问自己家目录时:
执行smb.conf中的第27行命令语句
2.建立一个共享目录
在smb.conf中空白行的任意处写入:
[westos] ##名称
comment=westos ##共享说明
path=/westos ##指定共享目录
systemctl restart smb.service ##重启后,再进行测试:
smbclient -L //172.25.254.137 -U westos ##查看共享文件是否建立成功
smbclient //172.25.254.137/westos -U westos ##指定访问文件登录
ls ##发现无法读到共享文件的内容
解决selinux问题,无法读到是因为selinux对共享文件的安全上下文进行了管理
semanage fcontext -a -t samba_share_t '/westos(/.*)?' ##更改共享文件的安全上下文
restorecon -RvvF /westos/ ##重新加载/westos/的安全上下文
这个时候就可以访问共享文件了。
3. selinux管理smb
当想要通过smb访问系统时,受到阻挠可以执行以下两条指令:
setsebool -P samba_export_all_ro on ##开放对系统文件读的权限
setsebool -P samba_export_all_rw on ##开放对系统文件读写的权限
getsebool -a | grep samba ##获取samba的seliux管理列表
实验四、samba访问限制
vim /etc/smc.conf:
80行左右写入:hosts allow = 172.25.254.137 (白名单)
hosts deny = 172.25.254.137 (黑名单)
黑白名单可以限制所有环境,也可以只针对一个共享文件进行限制
browseable=no/yes ##隐藏/开放共享资源的查看
valid user =用户 ##指定用户共享资源
valid user =+/@ 用户 ##指定用户及其组成员可以使用共享资源
实验五、samba的读写
服务器:
chmod 777 /westos_share ##只考虑实验的情况下,给/westos_share/满权限
vim /etc/smb.conf:
[westos_share]
comment=westos_share dir
path=/westos_share
wreitable=yes /no ##共享文件读写权限开放/
客户端测试:mount //172.25.254.137/westos_share /mnt -o username=lee,password=lee
touch /mnt/file ##此时可以写入
服务器:
vim /etc/smb.conf:
[westos_share]
comment=westos_share dir
path=/westos_share
write list =用户 (+/@用户) ##writeable只对指定用户生效,(对指定用户及用户组成员生效。)
实验六、指定匿名用户访问
默认情况下匿名用户不可以访问samba服务
vim /etc/smb.conf
118行 map to guest=bad user ##把匿名用户映射为guest
[westos_share]
comment=westos_share
path=/westos_share
;writeable=yes
; write list=+lee
guest ok =yes | no ##此共享允许/不允许
测试:smbclient //172.25.254.137/westos_share
ls