Linux笔记:文件共享服务Samba基础使用

Posted Naisu Xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux笔记:文件共享服务Samba基础使用相关的知识,希望对你有一定的参考价值。

目的

linux中目前还比较常用的文件共享服务主要就是NFS和Samba,但其实NFS一般也就linux间用用,Samba通常是一个更加好的选择,可以方便的在linux和windows间进行文件共享。(现在还有一种WebDav也不错)

下面内容将以Raspbian进行介绍,同系列的发行版(Debian、Ubuntu、Minit、Deepin等)都可以参考下面的方式,不同系类的可能安装方式或包名称有所差异。我这里演示中Samba版本是4.9.5-Debian,不同版本下可能也会有所差异。

基础使用

软件包安装

在Raspbian中可以使用下面命令安装Samba软件包:
sudo apt install samba smbclient

如果没有发现软件包请尝试更新:
sudo apt update

后面使用中有问题可以尝试用下面命令:
sudo ap install acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user

独立服务器

Samba当服务器使用时可以工作在多种模式下,最常用的就是作为独立服务器(standalone server)使用,这里也将以此作为基础进行介绍。Samba当服务器使用最主要的就是对 /etc/samba/smb.conf 文件进行配置,默认情况下该文件大概是这个样子的:

# 以#开头的内容是注释文本
# 以;开头的内容是注释掉的语句

# [global]后面包含的语句为全局参数配置
[global]

   # 作为独立服务器使用
   server role = standalone server
   # 保持samba和unix密码同步
   unix password sync = yes
   # 密码错误的访问将被拒绝;如果用户名也不存在则会被当作是访客
   map to guest = bad user

# [homes]节点启用默认设置下每个用户都可以且仅可以看到和操作自己的home目录
# 这台设备中名为naisu的用户可以在其它设备中用 \\\\本机IP\\naisu的方式远程访问自己的home目录
;[homes]
;   comment = Home Directories
;   browseable = no
;   read only = yes
;   create mask = 0700
;   directory mask = 0700
;   valid users = %S

# [printers]分享打印机,用不到的话这些内容都可以删掉或用;注释掉
[printers]
   ...
# [print$]分享打印机驱动,用不到的话这些内容都可以删掉或用;注释掉
[print$]

默认的smb.conf文件注释很详细,基本上只要能了解 #; 开头的都是注释[global] 起始的段落都是全局参数配置 , 剩下的 [] 标签为首的段落是一条分享规则 这三条规则就行。我们想要分享目录也只要编写一个以 [] 标签为首的段落就行。

使用下面配置是一个最简单的Samba共享示例:

[global]
   # 密码错误的访问将被拒绝;但如果用户名也不存在则会被当作是访客
   map to guest = bad user

# 客户端通过地访问时显示的目录名称为guest
[guest]
   # 指定要共享的目录路径
   path = /home/pi/Desktop/guest/
   # 可读可写
   read only = no
   # 可以匿名访问
   guest ok = yes

每次更改smb.conf文件后可以使用 testparm 指令测试该文件的参数是否符合规范,以及显示文件中起效的参数
在这里插入图片描述
上面配置中配置了可匿名登陆并且可写入的权限,但读写权限还和目录本身的权限有关:
在这里插入图片描述
完成设置以后可以使用 smbd 让Samba服务套用更改
在这里插入图片描述
上面就是Samba最基本的使用了,随便输个用户名就可以访问了,也不需要密码,如果只是自己的内网中自己用用这样就可以了,如果是在公共环境的话通常来说最好还是设置上账号密码这些。

使用Samba分享目录时如果需要设置访问的账号,这个账号首先得是这台设备上已经有的账号,使用 sudo smbpasswd -a 命令可以将已有的用户添加到Samba数据库
在这里插入图片描述
使用下面配置是一个最简单的需要账号密码的Samba共享示例:

[global]
   # 默认值never,必须使用账号密码访问
;   map to guest = never

[share]
   path = /home/pi/Desktop/share/
   read only = no

在这里插入图片描述
上面两个是最简单的例子了,实际使用中我们可能还会对不同用户设置不同的共享目录等,比如下面这样:

[global]
   map to guest = bad user

[guest]
   path = /home/pi/Desktop/guest/
   read only = no
   guest ok = yes
   
[share]
   path = /home/pi/Desktop/share/
   read only = no

[naisu]
   path = /home/pi/Desktop/naisu/
   read only = no
   # 设置naisu用户可用
   valid users = naisu

这里我使用 sudo useradd -M -s /sbin/nologin naisu 创建了一个没有home目录,且不允许登陆的名为naisu的用户,然后使用 sudo smbpasswd -a naisu 将它添加到samba中,然后进行测试(windows中删除已登录的smb账号有点纠结,下面没能完整测试不同账号的情况):
在这里插入图片描述
smb.conf文件可设置的参数非常多,可以通过 man smb.conf 来查看。更多内容可以参考下面链接:
https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server

作为Samba服务器我们可以使用 sudo smbstatus 来查看客户端接入情况

客户端

在linux中可以使用smbclient完成samba所有客户端功能,但通常我们只是用 smbclient -L //IP地址 -U 用户名 或者 smbclient -L //IP地址 -U 用户名%密码 的方式来查看某个服务器分享的情况
在这里插入图片描述
访问samba服务共享目录我们可以使用 mount -t cifs //IP地址/目录 /挂载点 -o username=,password= 方式来挂载,同样的卸载就是用 umount了:
在这里插入图片描述

总结

Samba具体的功能选项等非常多,更多内容可以参考下面链接:
https://www.samba.org/samba/
https://wiki.samba.org/index.php/Main_Page
http://cn.linux.vbird.org/linux_server/0370samba.php

以上是关于Linux笔记:文件共享服务Samba基础使用的主要内容,如果未能解决你的问题,请参考以下文章

samba文件共享服务笔记

samba文件共享服务笔记

linux 笔记 3-7 samba

运维基本功(二十一): 文件共享服务之SAMBA

RK3568开发笔记:RK3568虚拟机基础环境搭建之更新源安装网络工具串口调试网络连接文件传输安装vscode和samba共享服务

Linux ❀ RHCE自研教学笔记 - Redhat 8.2 Samba服务教研笔记