Samba
Samba
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成
SMB(Server Messages Block,信息服务块)
局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源
Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源
服务器端
安装 smb 客户端、主程序、smb语法检测等
yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y
![]()
Linux--Samba ![]()
Linux--Samba 开启 smb
systemctl start smb
yum install cifs-utlis -y
![]()
Linux--Samba
netstat -antlupe | grep smb
查看 smb 端口
smb 端口为 445 和 139
![]()
Linux--Samba 开启防火墙
systemctl start firewalld
添加 samba 服务
firewall-cmd --permanent --add-service=samba
添加 samba-client 服务
firewall-cmd --permanent --add-service=samba-client
firewall-cmd --reload
![]()
Linux--Samba 查看服务已开启
firewall-cmd --list-all
![]()
Linux--Samba
服务器端
useradd zhang
创建本地用户 zhang 和 westos
useradd westos
![]()
Linux--Samba
smbpasswd -a westos
创建 westos 和 zhang 的 smb 用户密码
smbpasswd -a zhang
![]()
Linux--Samba
pdbedit -L
查看以创建 smb 用户
注意
smb 用户必须是服务器端本地用户
![]()
Linux--Samba
测试端
安装 smb 客户端
yum install samba-client -y
![]()
Linux--Samba
yum install cifs-utlis -y
![]()
Linux--Samba
smbclient -L //172.25.254.130 -U zhang
查看服务器端 smb 用户 zhang 所共享的资源,需要 smb 用户 zhang 的密码
Enter zhang's password:
![]()
Linux--Samba
smbclient //172.25.254.130/zhang -U zhang
进入 smb 用户 zhang 共享的目录内
Enter zhang's password:
![]()
Linux--Samba !ls
查看进入 smb 客户端前, shell 当前目录
![]()
Linux--Samba 查看 smb 用户 zhang 目录
ls
put f1
当前 shell 所在目录内有 f1 文件
上传至 smb 用户 zhang 目录内
![]()
Linux--Samba
服务器端
切换到用户 zhang 家目录下
cd /home/zhang
ls
![]()
Linux--Samba
测试端
删除 f1 文件
rm f1
ls
![]()
Linux--Samba
服务器端
f1 文件已被删除
ls
![]()
Linux--Samba
测试端
创建挂载点
mkdir /mnt/zhang
挂载服务器端 smb 用户 zhang 到 /mnt/zhang ,需要提供 smb 用户 zhang 账号密码
mount //172.25.254.130/zhang /mnt/zhang -o username=zhang,password=123
![]()
Linux--Samba 切换到 /mnt/zhang/
cd /mnt/zhang/
ls
创建f1–f5文件
touch f{1..5}
ls
![]()
Linux--Samba
服务器端
切换到 /home/zhang/
cd /home/zhang
可查看到客户端操作所建立的 f1–f5 文件
ls
![]()
Linux--Samba
测试端
查看到域名为 [MYGROUP]
smbclient -L //172.25.254.130/zhang -U zhang
![]()
Linux--Samba
服务器端
vim /etc/samba/smb.conf
域名修改为 WESTOS
workgroup = WESTOS
systemctl restart smb
![]()
Linux--Samba
测试端
域名已改变为 WESTOS
smbclient -L //172.25.254.130/zhang -U zhang
![]()
Linux--Samba
服务器端
修改smb配置文件
vim /etc/samba/smb.conf
只允许 172.25.254.131 访问
hosts allow = 172.25.254.131
systemctl restart smb
![]()
Linux--Samba
测试端
smbclient -L //172.25.254.130/zhang -U zhang
![]()
Linux--Samba
172.25.254.130
禁止访问
smbclient -L //172.25.254.130/zhang -U zhang
![]()
Linux--Samba
vim /etc/samba/smb.conf
拒绝 172.25.254.131 访问
host deny =172.25.254.131
systemctl restart smb
![]()
Linux--Samba
vim /etc/samba/smb.conf
允许广播域 172.25.254.0 – 172.25.254.255 访问
hosts allow = 172.25.254.
![]()
Linux--Samba
smb写权限
查看SELinux
getenforce
关闭
Disabled
vim /etc/sysconfig/selinux
![]()
Linux--Samba 修改为强制级别
SELINUX=enforcing
![]()
Linux--Samba 重启生效
reboot
![]()
Linux--Samba
getenforce
Enforing
![]()
Linux--Samba 方法一:
修改目录及目录内容安全上下文
创建目录
mkdir /westos_smb
打开目录及目录内容安全上下文
semanage fcontext -a -t samba_share_t '/westos_smb(/.*?)?'
![]()
Linux--Samba 编辑 samba 配置文件
vim /etc/samba/smb.conf
![]()
Linux--Samba
[WESTOS]
备注(自定义)
comment = Share Dirctory
路径
path = /westos_smb
开启写权限
writable = yes
systemctl restart smb
![]()
Linux--Samba 用户 westos 设置 acl 权限 对于 /westos_smb 目录
setfacl -m u:westos:rwx /westos_smb/
用户 zhang 设置 acl 权限 对于 /westos_smb 目录
setfacl -m u:zhang:rwx /westos_smb/
![]()
Linux--Samba 查看 acl 权限
getfacl /westos_smb
![]()
Linux--Samba 挂载
mount //172.25.254.130/WESTOS /mnt -o username=westos,password=123
![]()
Linux--Samba
cd /mnt
touch f1
![]()
Linux--Samba
rm -rf W*
![]()
Linux--Samba 方法二:
修改 SEBool
vim /etc/samba/smb.conf
[mnt]
备注(自定义)
comment = Share System mnt Dirctory
路径
path = /mnt
开启写权限
writable = yes
systemctl restart smb
![]()
Linux--Samba
systemctl restart smb
![]()
Linux--Samba 挂载
mount //172.25.254.130/mnt /mnt -o username=westos,password=123
![]()
Linux--Samba
cd /mnt
权限不够
touch f1
![]()
Linux--Samba 查看SEBool
getsebool -a | grep samba
![]()
Linux--Samba 打开权限
setsebool -P samba_export_all_rw=on
查看 samba SEBool 权限
getsebool -a | grep samba
![]()
Linux--Samba
cd /mnt
touch f1
ls
![]()
Linux--Samba
隐藏共享文件目录
vim /etc/samba/smb.conf
[WESTOS]
备注(自定义)
comment = Share Dirctory
路径
path = /westos_smb
关闭隐藏
browseable = yes
systemctl restart smb
![]()
Linux--Samba WESTOS 目录可见
smbclient -L //172.25.254.130/WESTOS -U zhang
![]()
Linux--Samba
vim /etc/samba/smb.conf
[WESTOS]
备注(自定义)
comment = Share Dirctory
路径
path = /westos_smb
开启隐藏
browseable =no
systemctl restart smb
![]()
Linux--Samba WESTOS 目录隐藏
smbclient -L //172.25.254.130/WESTOS -U zhang
![]()
Linux--Samba
用户以 root 身份登陆
vim /etc/samba/smb.conf
[WESTOS]
备注(自定义)
comment = Share Dirctory
路径
path = /westos_smb
root 身份
admin users = westos
systemctl restart smb
![]()
Linux--Samba 挂载
mount //172.25.254.130/WESTOS /mnt -o username=westos,password=123
测试![]()
Linux--Samba
cd /mnt
touch f1
ll
![]()
Linux--Samba
匿名用户
vim /etc/samba/smb.conf
map to guest = bad user
![]()
Linux--Samba
[WESTOS]
comment = Share Dirctory
path = /westos_smb
writable = yes
guest ok = yes
systemctl restart smb
![]()
Linux--Samba
getenforce
当 SELinux 为 Enforing 时需要修改 SEBool 权限
Enforing
getsebool -a | grep samba
setsebool -P samba_export_all_rw=on
getsebool -a | grep samba
![]()
Linux--Samba 匿名用户无密码,回车即可
smbclient //172.25.254.130/WESTOS
查看 /WESTOS 目录
ls
![]()
Linux--Samba 查看未开启 smbclient 前,用户当前目录
!ls
![]()
Linux--Samba 挂载
mount //172.25.254.130/WESTOS /mnt -o username=guest
![]()
Linux--Samba ![]()
Linux--Samba
touch f2
ll
![]()
Linux--Samba
写权限列表
服务端
vim /etc/smaba/smb.conf
write list = +leon
在写权限列表里添加 leon 用户
leon 用户 拥有写权限
systemctl restart smb
![]()
Linux--Samba
测试端
mount //172.25.254.130/WESTOS /mnt -o username=leon,password=123
![]()
Linux--Samba
cd /mnt
![]()
Linux--Samba 权限不够
touch f1
![]()
Linux--Samba
服务端
chmod 777 /westos_smb
![]()
Linux--Samba
测试端
touch f1
ll
![]()
Linux--Samba
umount /mnt
更换 westos 用户
mount //172.25.254.130/WESTOS /mnt -o username=westos,password=123
cd /mnt
touch f2
权限不够
因为没有开启 writable (写)权限
在 write list 权限里只有 leon 用户
![]()
Linux--Samba
服务端
vim /etc/smaba/smb.conf
在 leon 用户组里的所有用户都拥有写权限
valid users = @leon
systemctl restart smb
![]()
Linux--Samba
usermod -G leon westos
添加 westos 用户到 leon 用户组里
id westos
![]()
Linux--Samba
测试端
touch f2
再次创建 f2 文件
生成
![]()
Linux--Samba