1.简介
Samba:支持跨平台文件共享服务
主页:https://www.samb.com
在UNIX系统中,Samba是通过服务器消息块协议(SMB)在网络上计算机之间共享文件和打印服务的软件包
SMB(Server Message Block)协议是一种客户端服务器协议,位于应用层,是Windows共享文件和打印服务的标准协议。可以在两台计算机之间共享文件、打印机。
Samba有两个守护进程:smbd和nmbd
- smbd进程监听139TCP端口 作用是处理SMB请求包,负责用户验证和文件共享
- nmbd进程监听137和138UDP端口 作用是处理浏览共享和计算机名称解析
2.安装
2.1 install
# yum -y install samba samba-common samba-client
2.2 关闭防火墙
1)SELinux,未启用 pass
/etc/selinux/config
# setsebool -P samba_enable_home_dirs on
# getsebool -a | grep samba
2)firewalld
# systemctl stop firewalld
2.3 设置用户Samba验证密码
1) 用户必须是系统已存在的用户
2) 设Samba密码
smbpasswd -a 用户名 //添加
smbpasswd 用户名 //修改
2.4 启动Samba服务
# systemctl start smb
# systemctl start nmb
2.5 Windows客户端访问
samba默认允许用户通过Windows客户端访问自己的宿主目录
"开始"-"运行",输入\\Samba服务器地址
查看连接 cmd >net use
断开连接 cmd >net use * /delete
2.6 Linux挂载
# smbmount //sambaserver-ip/share /dir01 -o username=user,password=pw
# mount -t smbfs -o username=user,password=pw //sambaserver-ip/share /dir01
# mount -t cifs -o username=root,password=pwd //192.168.0.80/sdc /root/sdc
2.7 Samba服务器端查看访问的客户端信息:
# smbstatus
3.配置
查找smb.conf配置文件所在位置
# rpm -ql samba-common | grep smb.conf
# vim /etc/samba/smb.conf
包括四个设置段:
[global] 设置全局环境选项
[homes] 设置用户宿主目录共享
[printers] 设置打印机共享
[sharefiles] 设置文件共享
行首注释:"#"注释描述,";"注释不启用的设置
# grep -v "^#" /etc/samba/smb.conf | more
# grep -v "^#" /etc/samba/smb.conf > /etc/samba/smb.conf
[global]
workgroup = 指定工作组或域
server string = 描述
security = 指定安全模式
- share 无权限验证
- user 缺省,推荐 由Linux samba服务器做验证
- server 第三方主机验证
- domain 第三方主机验证(要求:第三方主机必须是Windows域控制器)
[homes]
comment = 描述
browseable = no //无权限的目录隐藏
writable = yes
其他选项
hosts allow = 限定主机访问
hosts deny
valid users = 限定用户访问
log file = 指定日志文件存放位置
max log size = 指定日志文件大小
Samba配置语法错误检查
# testparm
4.Exapmle
example01 sam和mary 读写权限 访问/software
1.创建目录/software,添加用户sam和mary
# mkdir /software
# groupadd sambagroup
# useradd -G sambagroup sam
# useradd -G sambagroup mary
# smbpasswd -a sam
# smbpasswd -a mary
2.SELinux 启动用户可以访问的系统目录/software;
# chcon -t samba_share_t /software
3.添加配置,文件末尾添加
# vim /etc/samba/smb.conf
[software] 共享名随便起名,不能出现特殊符号
[software]
path=/software
valid users = jack mary @sambagroup
writable = yes
4.重启Samba服务
# systemctl restart smb
关于写权限:
1) samba是否授予用户写权限
2) 在Linux系统中,用户是否对共享目录有写权限
groupadd softadmin
usermod -G softadmin jack //gpasswd -a jack softadmin
usermod -G softadmin mary
//grep softadmin /etc/group
//ls -ld /software
chgrp softadmin /software
chmod g+w /software
example02 公共只读目录
[public]
comment = Read Only Public
path = /public
writable = no
example03 建立部门资料共享目录/hr,部门每个人都能读写,但是不能删除别人的文件
[hr]
path = /hr
valid users = zhangsan lisi wangwu
writable = yes
# chmod 1777 /hr //设置粘着位。每一个用户都有写权限,但只能删除该目录下自己是所有者的文件。