Linux下安装Samba服务开启文件夹共享功能
前言
局域网如果里有一台24小时开机的低功耗linux主机,那自然是要给它装上samba开启文件共享功能,把它作为一个文件服务器来用。可能有人会问,想开共享文件夹,直接给主机装casaos不就好了,就算不用samba也可以用filebrowser、alist、dufs、chfs之类。emmm,说的很对,但那不是少了很多手动挡
的乐趣嘛。而且自己手搓一边,也方便更好的理解samba。
在记录安装和配置的内容时,确实会发现很多细节没法具体一一记录,只能记录下符合我的需求的配置。这时候就会觉得类似casaos这种webui上直接鼠标点点就开启共享的方式方便多了。
前期准备
- 一台24小时开机的低功耗linux主机,我这里用的是赚钱宝二代(ws1508)
- linux系统有一个非root的低权限账户,这里假定:
jack
- 如果系统安装了防火墙,记得放行samba服务
samba的安装
debian仓库里就有samba,直接一键安装
apt install samba
安装完成后,可以执行systemctl status smbd
看下服务的运行状态。
● smbd.service - Samba SMB Daemon
Loaded: loaded (/lib/systemd/system/smbd.service; enabled; preset: enabled)
Active: active (running) since Sun 2023-07-16 13:44:59 CST; 11min ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Process: 4040 ExecCondition=/usr/share/samba/is-configured smb (code=exited, status=0/SUCCESS)
Process: 4043 ExecStartPre=/usr/share/samba/update-apparmor-samba-profile (code=exited, status=0/SUCCESS)
Main PID: 4044 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 4 (limit: 986)
Memory: 4.9M
CPU: 9.725s
CGroup: /system.slice/smbd.service
├─4044 /usr/sbin/smbd --foreground --no-process-group
├─4046 /usr/sbin/smbd --foreground --no-process-group
├─4047 /usr/sbin/smbd --foreground --no-process-group
└─4153 /usr/sbin/smbd --foreground --no-process-group
samba添加用户
想要访问通过samba共享的文件夹,需要在samba中添加一个用户
并设定密码。这里有一个注意事项,添加到samba的用户
,必须是linux系统已经存在的用户
。上面假定了linux系统存在一个用户jack
,这里把它添加到samba中。
# 添加后会要求设定密码
smbpasswd -a jack
注意这里设定的用户
和密码
,就是之后访问共享文件夹的账户&密码
。这里假定密码是123456
。
samba添加共享文件夹
上面两步完成了samba服务的安装和samba访问账户的添加,接下去就是最后一步了,添加共享文件夹。
samba的配置文件路径,默认是/etc/samba/smb.conf
。smb.conf的配置参数多如牛毛,这里就不做一一介绍,有兴趣可以访问【samba官方文档】进行了解。这里只贴出快速上手的配置项。
smb.conf中分成两个部分,一个是[global]
标签下的全局设置项。注意下面贴出的配置都禁止了访客、禁止了匿名访问,必须通过账号密码登录后才可以访问到共享文件夹中的内容。
[global]
#工作组
workgroup = WORKGROUP
# log日志设定
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
# 安全设定
security = user
server role = standalone server
# 禁止匿名访问设定
map to guest = never
# 最低smb协议版本设定
server min protocol = SMB2
另一个就是共享文件夹的设定,假定添加共享文件夹[movie]
,路径是/data/movie
。其中的权限0744
这里不做赘述,可以找其它文章了解。
[movie]
# 共享文件夹备注
comment = blog file folder
# 文件夹的真实路径
path = /data/movie
# 新建文件的权限
create mask = 0744
# 文件夹的权限
directory mask = 0744
# 有效的访问用户
valid users = jack
# 局域网内是否可见
browseable = yes
# 是否可写
writable = yes
# 是否只读
read only = no
# 是否公开(指是否可以无账号访问)
public = no
# 是否访客开放(指是否可以无账号访问)
guest ok = no
大功告成
完成smb.conf的配置以后,重启samba服务。
systemctl restart smbd
然后在局域网的其它电脑上,就可以访问到这个共享文件夹了。访问的账户是假定的jack
,密码是假定的123456
。