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

相关推荐
深夜情感老师2 小时前
centos离线安装ssh
linux·centos·ssh
foo1st5 小时前
JDK(Ubuntu 18.04.6 LTS)安装笔记
java·笔记·ubuntu
菜鸟射手6 小时前
QT creater和vs2017文件路径问题
linux·c++·windows·qt
@Aurora.7 小时前
【项目日记(三)】
linux·服务器·网络
白总Server7 小时前
Nginx 中间件
大数据·linux·运维·服务器·nginx·bash·web
望获linux8 小时前
实时操作系统在服务型机器人中的关键作用
linux·机器人·操作系统·开源软件·rtos·具身智能
哈哈幸运8 小时前
Linux Sed 深度解析:从日志清洗到 K8s 等12个高频场景
linux·运维·编辑器·sed
心随_风动9 小时前
主流操作系统对比分析(macOS、Linux、Windows、Unix)
linux·windows·macos
啊吧怪不啊吧9 小时前
Linux常见指令介绍下(入门级)
linux·开发语言·centos
陈大大陈10 小时前
基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
java·linux·开发语言·数据结构·c++·算法·缓存