本文将介绍怎么在Ubuntu上安装smb服务和实现多人对一个文件夹的访问权限
安装
sudo apt install samba
systemctl start smb nmb
启动服务
systemctl status smb nmb
查看服务状态
配置smb
sudo vim /etc/samba/smb.conf
文件分为两部分,global和Share Definitions,global是一些全局的配置。Share Definitions是smb文件夹的配置
[global]
workgroup = WORKGROUP
security = user
#主机简单说明,就是samba服务器显示在别的电脑里的名称
server string = Samba Server Version %v
#netbios 名称
netbios name = MYSERVER
#设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
interfaces = lo eth0 192.168.107.0/24
#允许哪些地址的主机访问,不设置默认都可以访问(防火墙关闭的前提下)
#hosts allow = 127. 192.168.82.200
#日志文件位置
log file = /var/log/samba/log.%m
#最大日志文件大小
max log size = 50
smb文件夹配置说明
在文件最后添加:
[company] #共享名
comment = company share #注释说明
path = /home/company #共享文件路径
browseable = yes #文件夹对其他人是否可见
guest ok = no #是否允许匿名访问
read only = no # 对于valid users里面的用户来说是不是只读
valid users= @usergroup user # 可以访问文件夹的用户或者用户组,用户组加@
write list = user # 拥有写权限的用户
create mask = 0770 # 创建文件的默认权限,用户和组内的用户都拥有读写权限
directory mask = 2770 # 创建文件夹的默认权限,开头的2表示文件夹内的文件和文件夹会继承权限
printable = yes
这个千万不能选成yes,会导致访问不了
具体来说说如何配置一个私人的文件夹和多人共享的文件夹
私人文件夹仅允许一个人访问,并且不能被搜索到只能通过smbIP+指定文件夹名称的方式访问:
-
创建一个文件夹,
mkdir ~/private
-
创建用户,并将目录拥有者改为该用户
bashsudo adduser user1 sudo chown -R user1 ~/private sudo chgrp -R user1 ~/private sudo chmod -R 700 ~/private
-
将用户添加到smb用户中并激活(这里会要设置smb用户密码,可以跟ubuntu用户密码一致)
bashsudo smbpasswd -a user2 sudo smbpasswd -e user1
-
在smb配置文件末尾写入配置
sudo vim /etc/samba/smb.conf
[private] path = ~/private browseable = no guest ok = no read only = no create mask = 0700 directory mask = 0700
-
重启smb服务:
sudo service smbd restart
6. 更新防火墙sudo ufw allow samba
如果想要创建一个smb文件夹,可以被组usergroup内的所有成员访问,但是只能被user2进行写操作,可以先创建user2,user3,然后将其加入组usergroup,并写入如下配置
[public]
comment = public share
path = ~/public
browseable = yes
guest ok = no
read only = yes
create mask = 0770
directory mask = 2770
valid users= @usergroup
write list= user2
同样重启smb服务即可
配置完了以后
重启smb服务
sudo service smbd restart
更新防火墙规则
添加用户到某一个组可以使用
usermod -G group_name user_name
这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用 gpasswd 这个命令来添加操作用户
gpasswd -a user_name group_nam
windows访问smb
选择映射网络驱动器(而不是添加一个网络位置),不然windows可能会用微软的账号密码尝试登录NAS然后告诉你NAS登录不成功。。。
linux访问smb
sudo apt-get install smbclient
smbclient //your_samba_hostname_or_server_ip/share -U username
ref:
linux搭建samba 所踩的坑及解决办法 - 泡芙的文章 - 知乎
https://zhuanlan.zhihu.com/p/305265719
https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html