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

相关推荐
TDD_062842 分钟前
【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
linux·运维·经验分享·centos
x66ccff1 小时前
vLLM 启动 GGUF 模型踩坑记:从报错到 100% GPU 占用的原因解析
linux
William.csj1 小时前
Linux——开发板显示器显示不出来,vscode远程登录不进去,内存满了的解决办法
linux·vscode
KeithTsui2 小时前
GCC RISCV 后端 -- 控制流(Control Flow)的一些理解
linux·c语言·开发语言·c++·算法
森叶2 小时前
linux如何与windows进行共享文件夹开发,不用来回用git进行拉来拉去,这个对于swoole开发者来说特别重要
linux·git·swoole
liulilittle2 小时前
Linux 高级路由策略控制配置:两个不同路由子网间通信
linux·网络·智能路由器
学习至死qaq2 小时前
windows字体在linux访问异常
linux·运维·服务器
在野靡生.3 小时前
Ansible(4)—— Playbook
linux·运维·ansible
Linux技术芯3 小时前
Linux内核内存管理 ARM32内核内存布局的详细解析和案例分析
linux
烨鹰3 小时前
戴尔电脑安装Ubuntu双系统
linux·运维·ubuntu