侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux samba命令教程:如何创建和管理samba共享(附实例教程和注意事项)

Linux samba命令介绍

samba是一个用于Linux和Unix系统与Windows系统共享文件和打印机的开源软件套件。它使用了服务器消息块和通用互联文件系统(SMB/CIFS)协议,使得不同操作系统的客户端可以访问samba服务。samba对于需要支持多种操作系统的组织来说是一个必不可少的服务,甚至在同质化的网络中也很有用。samba的安装和配置并不复杂,只需要至少一个你想要指定为文件共享主机的服务器(它不一定要是机架式的,甚至可以是一个专用的工作站)。对于客户端的访问,samba要么已经内置在操作系统中,要么可以从仓库中轻松安装。

Linux samba命令适用的Linux版本

Linux samba命令可以在多数Linux发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用。不同的发行版可能使用不同的包管理器来安装samba,例如apt、dnf、yum等。安装samba的命令如下:

# Ubuntu或Debian
sudo apt update && sudo apt install samba

# Fedora
sudo dnf install samba

# CentOS 7
sudo yum install samba

# CentOS 8
sudo dnf install samba

Linux samba命令的基本语法

samba的配置文件位于/etc/samba/smb.conf,可以使用文本编辑器来修改它。配置文件的基本语法如下:

[global]
# 全局设置,适用于所有的共享
# 例如,设置工作组、安全模式、密码后端等

[sharename]
# 共享的名称,可以自定义
# 例如,[sambashare]、[public]、[home]等

# 共享的属性,可以有多个
# 例如,设置共享的路径、权限、可见性等
path = /path/to/share
read only = yes or no
browsable = yes or no

Linux samba命令的常用选项说明

samba的配置文件中有很多选项可以用来控制共享的行为和特性。这里列出一些常用的选项,更多的选项可以参考samba的官方文档¹。

选项说明
path共享的路径,必须是一个有效的目录
read only是否只允许读取共享,而不允许写入共享。默认为yes
browsable是否允许客户端浏览共享。默认为yes
guest ok是否允许匿名访问共享。默认为no
valid users指定哪些用户可以访问共享。可以使用逗号分隔多个用户,或者使用@符号指定一个用户组
write list指定哪些用户可以写入共享。可以使用逗号分隔多个用户,或者使用@符号指定一个用户组
create mask指定创建共享文件的默认权限。默认为0744
directory mask指定创建共享目录的默认权限。默认为0755
force user指定访问共享的用户使用的身份。默认为共享的所有者
force group指定访问共享的用户使用的组。默认为共享的所属组
comment给共享添加一个描述性的注释
hosts allow指定哪些主机或网络可以访问共享。可以使用逗号分隔多个IP地址或子网掩码
hosts deny指定哪些主机或网络不能访问共享。可以使用逗号分隔多个IP地址或子网掩码

Linux samba命令的实例

下面是一些使用samba的实例,结合了一些常见的搜索关键词。

如何创建一个简单的samba共享

假设我们想要创建一个名为sambashare的共享,它位于服务器的/tmp目录下,允许所有用户读写访问。我们可以按照以下步骤操作:

  1. 在服务器上创建一个目录,用来存放共享的文件和文件夹,并修改其SELinux上下文为samba_share_t:
[linux@bashcommandnotfound.cn ~]$ sudo mkdir /tmp/sambashare
[linux@bashcommandnotfound.cn ~]$ sudo chcon -t samba_share_t /tmp/sambashare/
  1. 在samba的配置文件/etc/samba/smb.conf中添加一个新的共享段落,如下:
[sambashare]
path = /tmp/sambashare
read only = no
browsable = yes
  1. 重启samba的服务,使得配置生效:
[linux@bashcommandnotfound.cn ~]$ sudo systemctl restart smb nmb
  1. 在客户端上,使用smbclient命令或者文件管理器来访问共享。例如,使用smbclient命令,可以输入以下命令:
[linux@bashcommandnotfound.cn ~]$ smbclient //server/sambashare

其中,server是服务器的主机名或者IP地址。如果需要输入密码,可以使用-smbpasswd命令为samba用户设置一个密码。

如何创建一个只允许特定用户访问的samba共享

假设我们想要创建一个名为private的共享,它位于服务器的/home/private目录下,只允许用户alice和bob访问,而且只有alice可以写入共享。我们可以按照以下步骤操作:

  1. 在服务器上创建一个目录,用来存放共享的文件和文件夹,并修改其SELinux上下文为samba_share_t:
[linux@bashcommandnotfound.cn ~]$ sudo mkdir /home/private
[linux@bashcommandnotfound.cn ~]$ sudo chcon -t samba_share_t /home/private/
  1. 在samba的配置文件/etc/samba/smb.conf中添加一个新的共享段落,如下:
[private]
path = /home/private
read only = yes
browsable = yes
valid users = alice, bob
write list = alice
  1. 重启samba的服务,使得配置生效:
[linux@bashcommandnotfound.cn ~]$ sudo systemctl restart smb nmb
  1. 在客户端上,使用smbclient命令或者文件管理器来访问共享。例如,使用smbclient命令,可以输入以下命令:
[linux@bashcommandnotfound.cn ~]$ smbclient //server/private -U alice

其中,server是服务器的主机名或者IP地址,alice是访问共享的用户名。如果需要输入密码,可以使用-smbpasswd命令为samba用户设置一个密码。

如何创建一个允许匿名访问的samba共享

假设我们想要创建一个名为public的共享,它位于服务器的/var/public目录下,允许任何人无需密码访问,而且可以读写共享。我们可以按照以下步骤操作:

  1. 在服务器上创建一个目录,用来存放共享的文件和文件夹,并修改其SELinux上下文为samba_share_t:
[linux@bashcommandnotfound.cn ~]$ sudo mkdir /var/public
[linux@bashcommandnotfound.cn ~]$ sudo chcon -t samba_share_t /var/public/
  1. 在samba的配置文件/etc/samba/smb.conf中添加一个新的共享段落,如下:
[public]
path = /var/public
read only = no
browsable = yes
guest ok = yes
  1. 重启samba的服务,使得配置生效:
[linux@bashcommandnotfound.cn ~]$ sudo systemctl restart smb nmb
  1. 在客户端上,使用smbclient命令或者文件管理器来访问共享。
    例如,使用smbclient命令,可以输入以下命令:
[linux@bashcommandnotfound.cn ~]$ smbclient //server/public

其中,server是服务器的主机名或者IP地址。无需输入密码,直接按回车键即可。

如何创建一个共享用户的主目录的samba共享

假设我们想要创建一个名为home的共享,它位于服务器的/home目录下,允许每个用户访问自己的主目录,而且可以读写共享。我们可以按照以下步骤操作:

  1. 在samba的配置文件/etc/samba/smb.conf中添加一个新的共享段落,如下:
[home]
path = /home/%S
read only = no
browsable = yes
valid users = %S

其中,%S是一个变量,表示当前访问共享的用户名。

  1. 重启samba的服务,使得配置生效:
[linux@bashcommandnotfound.cn ~]$ sudo systemctl restart smb nmb
  1. 在客户端上,使用smbclient命令或者文件管理器来访问共享。例如,使用smbclient命令,可以输入以下命令:
[linux@bashcommandnotfound.cn ~]$ smbclient //server/home -U alice

其中,server是服务器的主机名或者IP地址,alice是访问共享的用户名。如果需要输入密码,可以使用-smbpasswd命令为samba用户设置一个密码。

Linux samba命令的注意事项

  • samba的配置文件的修改需要重启samba的服务才能生效,可以使用以下命令重启samba的服务:
[linux@bashcommandnotfound.cn ~]$ sudo systemctl restart smb nmb
  • samba的共享需要有合适的SELinux上下文,否则可能会导致访问被拒绝。可以使用chcon命令或者semanage命令来修改SELinux上下文,例如:
[linux@bashcommandnotfound.cn ~]$ sudo chcon -t samba_share_t /path/to/share
[linux@bashcommandnotfound.cn ~]$ sudo semanage fcontext -a -t samba_share_t "/path/to/share(/.*)?"
  • samba的共享需要有合适的文件权限,否则可能会导致访问被拒绝。可以使用chmod命令或者chown命令来修改文件权限,例如:
[linux@bashcommandnotfound.cn ~]$ sudo chmod 755 /path/to/share
[linux@bashcommandnotfound.cn ~]$ sudo chown alice:alice /path/to/share
  • 如果在客户端上访问samba共享时遇到bash: smbclient: command not found的错误,说明没有安装smbclient命令,可以使用以下命令安装smbclient命令:
# Ubuntu或Debian
sudo apt update && sudo apt install smbclient

# Fedora
sudo dnf install smbclient

# CentOS 7
sudo yum install smbclient

# CentOS 8
sudo dnf install smbclient

本文链接:https://bashcommandnotfound.cn/article/linux-samba-command

0

评论区