Ubuntu设置smb功能

本文将介绍怎么在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+指定文件夹名称的方式访问:

  1. 创建一个文件夹,mkdir ~/private

  2. 创建用户,并将目录拥有者改为该用户

    bash 复制代码
    sudo adduser user1
    sudo chown -R user1 ~/private
    sudo chgrp -R user1 ~/private
    sudo chmod -R 700 ~/private
  3. 将用户添加到smb用户中并激活(这里会要设置smb用户密码,可以跟ubuntu用户密码一致)

    bash 复制代码
    sudo smbpasswd -a user2
    sudo smbpasswd -e user1
  4. 在smb配置文件末尾写入配置sudo vim /etc/samba/smb.conf

    [private]
       path = ~/private
       browseable = no
       guest ok = no
       read only = no
       create mask = 0700
       directory mask = 0700
    
  5. 重启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:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-samba-share-for-a-small-organization-on-ubuntu-16-04#step-2-setting-samba-s-global-options

linux搭建samba 所踩的坑及解决办法 - 泡芙的文章 - 知乎

https://zhuanlan.zhihu.com/p/305265719

https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

相关推荐
watermelonoops1 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
远游客07134 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<4 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟4 小时前
centos-stream9系统安装docker
linux·docker·centos
超爱吃士力架5 小时前
邀请逻辑
java·linux·后端
White_Mountain6 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
cominglately7 小时前
centos单机部署seata
linux·运维·centos
魏 无羡7 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
coder_pig7 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins