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

相关推荐
ScilogyHunter8 小时前
GCC完全指南
linux·gcc
CodeStats8 小时前
从 CPU 指令到 JVM 进程:彻底讲透 Java 执行 main 方法时,类加载、主线程、栈帧入栈的完整底层逻辑
java·linux·开发语言
努力努力再努力wz10 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
Jurio.10 小时前
开源 Codex Sticky:在终端 Codex CLI 长对话中始终固定底部输入框
linux·rust·github·开源软件·codex·codex cli
无足鸟ICT11 小时前
【RHCA+】撤销和恢复撤销快捷键
linux
质造者11 小时前
LangChain + Ollama + Tavily 实现旅游问答系统
linux·人工智能·python·langchain·rag
曾小蛙11 小时前
【TWIST2】 PICO重映射G1在ubuntu 22.04下环境配置
ubuntu·g1·twist2·gmr2·pico4u·xrobotoolkit
starvapour11 小时前
Ubuntu部署gitlab频繁出现502的问题
linux·ubuntu·gitlab
zhangfeng113312 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络
夜月yeyue12 小时前
STM32 DMA 双缓冲采样
linux·stm32·单片机·嵌入式硬件·系统架构