搭建samba服务器
由于网上的配置都是非常多而且乱,所以我自己翻了一下manual,整理了一份自己的配置。
我需要在Windows和Linux之间共享文件,Samba是UNIX下的CIFS实现,也就是让Linux也可以使用Windows的局域网文件共享。文件共享的 方案有很多,有NFS,Samba,FTP,SFTP等等,但是说到底,鉴于我需要和多个版本的Windows(Windows Thin PC, Windows 7, Windows 10) 共享文件,因此Samba的兼容性仍然是最棒的,就选它了。
首先要安装Samba:
$ sudo pacman -S samba
接着加好防火墙,由于我的ufw没有直接支持samba,所以新建一个文件/etc/ufw/applications.d/samba4
,内容是:
[Samba4]
title=Samba 4
description=Samba 4 as domain controller
ports=139/tcp|445/tcp
然后配置防火墙:
$ sudo ufw reload
$ sudo ufw allow from 192.168.122.0/24 to any app Samba4
接着设置好开机自启:
$ sudo systemctl enable smb.service
但是还不能启动,因为需要一份配置 /etc/samba/smb.conf
:
# Global parameters
[global]
dns proxy = No
log file = /usr/local/samba/var/log.%m
map to guest = Bad User
max log size = 50
server role = standalone server
server string = Jiajun's Samba Server
idmap config * : backend = tdb
create mask = 0644
force create mode = 0644
force directory mode = 0755
smb encrypt = desired
[public]
comment = Jiajun's Public Disk Space
path = /data/public
read only = no
writeable = yes
browseable = yes
public = yes
guest ok = yes
guest only = yes
create mask = 0644
directory mask = 0744
force user = jiajun
force group = jiajun
接下来解释一下上面的配置:
samba的配置文件按节分,一个
[xxx]
是一节配置,有三个比较特殊的,分别是global, homes, printers
,分别是全局配置, 登录家目录用的,还有打印机。由于我只要局域网内匿名共享,因此只要global这个特殊的配置,再加上我自己的public配置就可以了。global
配置中,比较特殊的,需要注意的有,map to guest
这个如果要使用匿名共享的话,必须要。create mask
这些可有 可无,看个人需要。smb encrypt
是指期望使用加密,毕竟局域网也要安全嘛。public
配置中,path
指定要共享出去的目录,read only
表示是否只读。注意guest帐号,对应到UNIX系统,默认就会使用 nobody这个用户和组。
综上,至于要登录的配置嘛,我暂时没有需要,因此没有研究。
- Archlinux Samba WIKI
$ man smb.conf
更多文章
- socks5 协议详解
- zerotier简明教程
- 搞定面试中的系统设计题
- 用peewee代替SQLAlchemy
- frp 源码阅读与分析(一):流程和概念
- Golang(Go语言)中实现典型的fork调用
- DNSCrypt简明教程
- 一个Gunicorn worker数量引发的血案
- Golang validator使用教程
- Docker组件介绍(一):runc和containerd
- Docker组件介绍(二):shim, docker-init和docker-proxy
- 使用Go语言实现一个异步任务框架
- 协程(coroutine)简介 - 什么是协程?
- SQLAlchemy简明教程
- Go Module 简明教程