背景:
.Samba服务简介
1.SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
2.Samba是Linux与Linux或Windows之间实现文件共享及打印机等共享服务。
3.Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。
实验环境:
本次采用docker-compose 方式来安装samba服务,优点部署快方便使用。
部署docker-compose:
创建docker-compose.yml:
mkdir /opt/samba
cd /opt/samba
vi docker-compose.yml
version: '3'
services:
samba:
image: 'dperson/samba:latest'
restart: unless-stopped
ports:
- "137:137/udp"
- "138:138/udp"
- '139:139/tcp'
- '445:445/tcp'
volumes:
- ./mount:/mount #可以根据需求进行更改
- /data:/data #可以根据需求进行更改
- /home/app/:/app #可以根据需求进行更改
environment:
TZ: Asia/Shanghai #设置时区
command:
- '-n'
- '-p'
- '-r'
- '-u'
- "root;Root@1234" #创建用户root 并设置一个密码为Root@1234,可以创建多个
- "-s"
- "public;/mount;;;;;;;文件访问目录"
- "-s"
- "scm;/mount;yes;no;no;root;;;文件管理目录"
- "-s"
- "backup;/data/backup;yes;no;no;root;root;root;备份文件目录"
- "-s"
- "share;/app/share;yes;no;yes;;;;共享文件目录"
networks:
default:
external:
name: samba-network
启动samba 容器:
docker network create samba-network #创建一个名字为samba-network 的docker 网络
docker-compose up -d #后台方式启动docker-compose
查看samba容器启动情况
设置用户名密码:
##设置samba用户前提是系统中存在的用户,如果不存在请先创建系统用户。
docker exec -it home-samba-1 /bin/bash #进入容器
useradd proc
smbpasswd -a proc #创建一个名字为proc的samba用户
smbpasswd命令的常用方法
smbpasswd -a 增加用户(要增加的用户必须以是系统用户)
smbpasswd -d 冻结用户,就是这个用户不能在登录了
smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用
smbpasswd -n 把用户的密码设置成空. 要在global中写入 null passwords -true
smbpasswd -x 删除用户
增加samba存放数据目录:
在容器中找到配置文件
docker exec -it home-samba-1 /bin/bash #进入容器
vi /etc/samba/smb.conf
#插入
[proc] #更改名字
path = /app/proc #容器内文件路径
browsable = yes
read only = no
guest ok = yes
veto files = /.apdisk/.DS_Store/.TemporaryItems/.Trashes/desktop.ini/ehthumbs.db/Network Trash Folder/Temporary Items/Thumbs.db/
delete veto files = yes
comment = ..................
保存好信息后退出容器Ctrl+pq
docker inspect home-samba-1 查看容器home-samba-1 详细配置
#找到下面配置,说明容器内部的容器卷映射在容器外部的/home/app 目录下,需要去目录下去创建一个新增的文件夹,新增的文件夹的名字是新创建的名字
#"Type": "bind",
# "Source": "/home/app",
# "Destination": "/app",
# "Mode": "rw",
# "RW": true,
# "Propagation": "rprivate"
mkdir /home/app/proc
访问验证:
输入\\samba ip地址
用户权限问题:
[proc]
comment = A is a proc dir #描述信息
public = Yes
path = /mnt/A #文件目录
browseable = Yes
writable = no # 默认关闭所有用户写权限
guest ok = no
create mask = 0777 #权限
directory mask = 0777 #权限
valid users = user1,user2 #给与user1,user2可读权限,user3不在此出现,任何没有权限
write list = user1 # 只打开user1的写权限