Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

在Ubuntu主机上使用Samba共享文件并进行权限控制

说明

  1. 本文的顺序基本上遵循操作流程,推荐先整体阅读本文,大概了解整个流程后再行操作。最好先在测试台或虚拟机内操作确认基本无误后再施行至生产环境。
  2. 本文全部操作均在root用户下操作。

安装Samba

1
apt update&&apt install -y samba

本文操作环境中的samba版本为:Version 4.13.17-Ubuntu

设定计划

假设这里有三个文件夹:

共享名实际路径可读可写只读用户
Data0/home/user0/data0user1user2
Data1/home/user0/data1user2-
Data2/home/user0/data2-任何人

确认好共享计划后,就可以开始了。注意,本文并未考虑到打印机的共享,如需在smb协议上共享打印机,可参考官方文档进行配置。

如需设置可读可写(完全开放)的共享文件夹,参看本站文章Samba免授权访问

添加用户

如果上述的用户仅用来做Samba共享权限控制的话,那么应该是既不能让这些用户登录到shell和本地登录,也不应该给这些用户创建对应的Home文件夹。

用下面的命令添加新用户:

1
adduser --no-create-home --disabled-login --shell /sbin/nologin --disabled-password [USER NAME]

--no-create-home选项意味着不会给这个用户创建home文件夹;
--shell参数指定了该用户的shell类型;
--disabled-login选项意味着禁用该用户登录;
--disabled-password选项意味着禁用该用户的密码。

执行该命令后会交互式询问一些信息,包括全名等,无特殊需要则全部留空(直接回车)即可。

阻止共享用户登录到ssh

编辑/etc/ssh/sshd_config

在其中加入一行:

1
DenyUsers user1 user2

或将多个用户添加至同一组,再添加到ssh配置文件中:

1
DenyGroups smbgroup group1

创建Samba共享账户

在上面创建好用户后,即可开始创建Smaba共享账户。请注意,将要创建的samba共享账户必须是本机上存在的本地账户

  • 创建账户:
    1
    smbpasswd -a user1
  • 删除账户:
    1
    smbpasswd -x user1
  • 修改密码:
    1
    smbpasswd user1

建立smb.conf配置文件

首先备份默认的配置文件,cp /etc/samba/smb.conf /etc/samba/smb.conf.bak,然后删掉默认的配置文件,再新建一个空的。

Global

这一节规定了服务器的大体信息,包括所在组和描述等信息。

1
2
3
4
[global]
workgroup = WORKGROUP
security = auto
min protocol = SMB2
  1. workgroup参数必须和局域网内需要连接的其他设备是一样的;
  2. security参数指定验证方式,值有4种:share不验证、user本地用户验证、server用专用的验证服务器验证、domain使用域控制器验证。后两种验证方式不常用,且基本不适用于家用环境,不过多介绍。
  3. server string指定服务器的描述信息;
  4. interfaces指定监听接口;
  5. min protocol指定samba运行的最低版本,提高该值可能会提高兼容性和性能,并解决一些问题,建议不指定。

共享字段

1
2
3
4
5
6
7
8
[Data0]
comment = data0
path = /home/user0/data0
browsable = yes
guest ok = no
force user = user0
write list = user1
read list = user2
  1. browsable控制是否在访问根目录时显示此共享文件夹
  2. force user:强制使用本地服务器的某用户读取,无论客户端使用哪个用户登录。可以设置为root但不建议生产环境中设置为root
  3. write list:可读取写入的用户列表,多个用户用空格隔开
  4. read list:仅读取的用户列表,多个用户用空格隔开
1
2
3
4
5
6
7
8
[Data1]
comment = data1
path = /home/user0/data1
browsable = yes
guest ok = no
force user = user0
write list = user2
force create mode = 0755
  1. force create mode:通过smb创建的文件的默认权限
1
2
3
4
5
6
7
[Data2]
path=/home/user0/data2
browseable = yes
writable = no
comment = wdc
public = yes
guest ok = yes
  1. writable控制是否可写入
  2. guest ok控制是否需要登录才能访问

samba 日志

待完善。

常见问题

无法写入,显示需要权限

查看正在写入的文件夹是否有当前设置的用户的写入权限,必要时可使用chown命令重置一下访问权限。

Failed to add entry for user test.

检查对应的本地账户是否存在。

参考资料

排名不分先后

 简单说两句



联系站长 | 服务状态 | 友情链接

备案号:辽ICP备19013963号

中国互联网违法和不良信息举报中心

架构版本号:8.1.5 | 本站已全面支持IPv6

本站由又拍云提供CDN加速服务和存储服务

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2024 LingXuanNing, All rights reserved.