samba搭建(基于centos7)
基础
SMB:Server Message Block 服务器消息块,IBM发布,最早是 DOS 网络文件共享协议
CIFS:Common Internet File System,微软基于 SMB 发布
SAMBA:1991 年 Andrew Tridgell,实现 Windows 和 Unix 想通
SAMBA 的功能:
- 共享文件和打印,实现在线编辑
- 实现登录 SAMBA 用户的身份认证
- 可以进行NetBIOS名称解析
- 外围设备共享
注:windows共享使用的是445、139
1、samba账户实现原理
包: samba-common-tools
工具: smbpasswd pdbedit
用户数据库: /var/lib/samba/private/passdb.tdb
samba 用户必须是 linux 用户,建议使用 /sbin/nologin
2、添加 samba 账户
基本命令:
0)、添加不可登录的操作系统账号
# useradd -s /sbin/nologin username
1)、添加 samba 用户
# smbpasswd -a <user>
# 或者
# pdbedit -a -u <user>
2)、修改用户密码
# smbpasswd <user>
3、查看现有的 samba 账户
# pdbedit -L
查看详细信息
# pdbedit -L -v
4、删除 samba 账户
0)、删除操作系统账号
# userdel <user>
1)、删除 samba 账号
# smbpasswd -x <user>
5、更改 samba 账户密码
# smbpasswd <user>
6、禁用 samba 账号
# smbpasswd -d <user>
组管理
1、创建组
# groupadd groupname
2、在指定组新建用户
# useradd -g group1 -m user1
3、将用户设置为只属于某组
# usermod -G group1
4、将用户添加到某组
# usermod -a -G droup1 user1
5、查询某用户属于哪些组
# groups user1
6、查看所有组,及其用户
# cat /etc/group
7、查看组中所有用户
# groupmems -l -g g1
文件权限管理
1、更改某文件/目录归属者(若是目录只更改目录,不更改其子文件)
# chown new_owner file_or_folder
2、更改目录及其子文件归属
# chown -R new_owner folder
3、更改文件/目录所属组
# chgrp new_own_group file_or_folder
4、更改目录及其子文件归属组
# chgrp -R new_own_group folder
基本命令
1、查看 samba 当前的连接信息
# smbstatus
安装及配置 samba
0、关闭SELinux
# 查看 selinux 是否开启
# getenforce
显示 Enforcing 表示开启着
# 关闭 selinux,设置 SELINUX=disable
# vim /etc/selinux/config
# 重启机器
# reboot
1、安装 samba
# yum install -y samba
2、开启 smb 服务
# systemctl start smb
3、开放端口
# firewall-cmd --zone=public --add-port=139/tcp --permanent
# firewall-cmd --zone=public --add-port=445/tcp --permanent
# firewall-cmd --zone=public --add-port=137/udp --permanent
# firewall-cmd --zone=public --add-port=138/udp --permanent
# firewall-cmd --reload
4、创建操作系统不可登陆的账户
# useradd -s /sbin/nologin user1
5、创建用户组和管理员组
# groupadd data_user
# groupadd data_manager
6、将全部需要访问共享目录的用户添加到用户组,将具有管理权限的用户添加到管理员组
# useradd -a -G data_user user1
# useradd -a -G data_manager user1
7、创建 samba 账户
# smbpasswd -a <user>
8、创建共享目录
# mkdir /share
9、更改共享目录权限为 777,具体权限由 samba 控制
# chmod 777 /share
10、更改配置以开启共享
# vim /etc/samba/smb.conf
更改内容如下:
1)、更改 workgroup 为 WORKGROUP —— 根据实际的工作组来改
2)、添加日志记录
- log file = /var/log/samba/log.%I
- log level = 2
- max log size = 5120
3)、共享目录,底部添加内容块
[share]
path = /share
public = no
read only = yes
valid users = @gis_manager @gis_data hs_guest
write list = @gis_manager @gis_data
create mask = 0777
directory mask = 0777
guest ok = no
目前添加新用户的操作:
1、添加新系统用户
# useradd -s /sbin/nologin user1
2、添加用户到 samba
# smbpasswd -a user1
3、在 /share 下创建用户目录
# mkdir User_user1
4、进入 User_user1 创建 private 目录,并设置权限为 700
# cd User_user1
# mkdir private
# chmod 700 private/
5、回到 /share 并修改 新目录权限、归属用户、归属组
# cd …/
# chmod 775 User_user1
# chown -R user1 User_user1
# chgrp -R gis_manager User_user1
注:将归属组给 gis_manager 是为了让 gis_manager 的组用户可以完全控制处理 private 外的所有目录及文件
linux连接 samba
1、安装 samba 客户端
# yum install -y samba-client
2、查看 samba 服务器信息
# smbclient -L 192.168.1.5
3、登录并查看 samba 服务器
# smbclient -L 192.168.1.5 -U alun%zuishuai
4、将共享盘挂载到本地
# mount -o username=alun,password=zuishuai //192.168.1.39/share /mnt/user1
配置详解
global
参数含义如下
参数 | 含义 | 备注 |
---|---|---|
wrokgroup | 工作组,类似 windows 的工作组 | |
netbios name | 名称,用来代替 ip 进行连接 | 1、需要启动 nmb 服务 2、需要和 windows 处于同一个工作组 |
interfaces | 设置 samba 基于哪个 ip 进行共享 | |
hosts allow | 控制哪些注记能访问 | 格式一:127. —— 仅本机 192.168.12. —— 12网段的所有机器 192.168.13. —— 13网段的所有机器 如:hosts allow = 192.168.1. 192.168.2. —— 允许 1、2 网段访问 |
log file | 控制日志是否生成、在哪生成、如何命名。需要配合 log level 使用,否则只生成日志,不记录信息 | 可以使用宏配置来进行日志命名,如 /var/log/samba/log.%I —— 以客户机 ip 来分别记录不同的日志 |
log level | 日志的记录级别,默认为 0 即不记录日志 | 如 log level = 2 |
max log size | 单位 kb,当日志达到该大小时,将轮循 aotate | max log size = 5120 |
宏定义
宏 | 含义 |
---|---|
%m | 客户端主机的 NetBios 名 |
%M | 客户端注记的 FQDN |
%H | 当前用户家目录路径 |
%U | 当前用户的用户名 |
%g | 当前用户所属组 |
%h | samba 服务器的主机名 |
%L | samba 服务器的 NetBios 名 |
%I(大写 i) | 客户端的 ip 地址 |
%T | 当前的日期和时间 |
%S | 可登录的用户名 |
配置特定目录共享
配置结构如下
[共享名称] —— 远程网络看到的共享名称
comment —— 注释信息
path —— 所共享的目录路径
public —— 能否被 guest 访问的共享,默认 no 和 guest ok 类似
browsable —— 是否允许所有用户浏览此共享,默认为 yes,no为隐藏
writable —— 可以被所有用户读写,默认为 no
read only —— 只读模式,默认为no,若和 writeable 同时书写,则靠后的生效
write list —— 用户、@组名、用 逗号(,) 分割
valid users —— 特定用户才能访问该共享,如果为空,则允许所有用户