手把手教你玩爆Samba
Samba是一款免费、开源的网络文件共享软件,可运行在Linux、Unix、macOS和其他类Unix系统上。它实现了SMB/CIFS协议,使得Linux等非Windows系统能够与Windows系统实现文件共享和打印等操作。
举个例子你就更明白了,假设你和你的家人正在组织一次家庭聚会,你的父亲使用的是Windows电脑,而你的妹妹使用的是Mac电脑,你使用的是Linux电脑。你们需要将一些照片和音乐文件共享,以便能够在聚会上一起欣赏。但是,由于不同操作系统之间的差异,可能会导致无法直接进行文件共享。
这时候,Samba就像是一个调和者,它可以将Windows、Mac和Linux操作系统之间的差异调和在一起,使它们能够相互传递文件和数据。Samba利用SMB(Server Message Block)协议,将Windows系统的文件转换成Mac和Linux可以理解的格式,然后将其传递给对应的系统。反之亦然,Samba可以将Mac和Linux系统的文件转换成Windows可以理解的格式,并将其传递给Windows系统。这样,你们就可以在不同的操作系统之间共享文件,并完成家庭聚会的准备工作。
换句话说,Samba就像是一个调和者,它可以让不同操作系统之间的文件和数据进行调和和传递,从而让它们能够在一起协作,就像你和你的家人一起准备聚会一样
一.如何配置搭建Samba
以下是在Ubuntu Linux系统上搭建Samba的详细过程:
1.安装Samba
打开终端,输入以下命令,更新系统软件包并安装Samba:
sudo apt-get update
sudo apt-get install samba(我这里安装过了)
安装完成后执行,如果可以看到版本号就是安装成功了。
samba -V2.创建共享目录
创建一个共享目录,作为共享文件夹。例如,在/home/user目录下创建一个名为"shared"的目录:
sudo mkdir /home/user/shared3.配置Samba
使用文本编辑器打开Samba配置文件/etc/samba/smb.conf:
sudo vim /etc/samba/smb.conf在文件的末尾添加以下内容,定义共享文件夹的访问权限和共享名称:
[shared]
comment = Shared folder for everyone
path = /home/user/shared
browseable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777这里定义了一个名为"shared"的共享文件夹,路径为/home/user/shared。"browseable = yes"表示该文件夹可以被其他用户浏览;"read only = no"表示该文件夹可以读写。"guest ok = yes"表示匿名用户可以访问该共享文件夹。"create mask = 0777"和"directory mask = 0777"分别表示创建的文件和目录的权限。
注意:在修改完配置文件后,一定要保存并关闭文件。验证smb.conf是否有错误
testparm4.创建Samba用户
为了在Samba中设置用户权限,需要为Samba创建一个用户。可以使用以下命令创建一个名为"samba_test"的用户:
sudo smbpasswd -a test输入命令后,系统将提示您设置该用户的密码。
若这里提示创建错误,说明你还没在Linux系统上创建该用户。需要新建一个对应的linux用户。新建用户以及Linux用户管理的知识点可以看我这一篇推文。
新建新用户之后,重新尝试,即可完成添加samba用户。5.启动Samba服务
启动Samba服务,使其开始监听来自客户端的请求:
sudo systemctl start smbd6.设置防火墙规则
如果系统启用了防火墙,则需要在防火墙上添加规则,允许客户端访问Samba服务。例如,可以使用以下命令打开Samba的TCP端口:
sudo ufw allow samba7.测试Samba
在另一台计算机上,打开文件资源器,输入以下地址:可以看到访问成功
\ip其中,"<IP_ADDRESS>"是Samba服务器的IP地址。如果一切正常,您将看到"shared"文件夹,可以在其中添加、删除和编辑文件。
这就是在Ubuntu Linux系统上搭建Samba的详细过程。根据实际需要,还可以配置更多选项,例如限制用户访问、启用加密等。二.samba创建的几种权限
1.任何人都可以访问,即不需要登录,输入ip即可(安全性很低),上面的即是这种2.指定人才可以访问:
这里使用Valid users指定了使用者,只能该用户才能访问:3.指定用户组里面的人才可以访问:
比如这里指定了ISC 这个用户组,即只有这些成员才可以访问,使用以下指令可以查询某个用户组的成员。其他相关用户管理可以看我的另一篇推文学习用户管理:
members 用户组名
三.samba配置文件
Samba是一个基于Windows文件共享协议的开源软件,其配置文件是/etc/samba/smb.conf。下面是一些常见的Samba配置文件中使用的变量及其解释:
[global]:定义全局Samba选项,如工作组名称、安全模式等。
workgroup:定义Samba服务器所在的工作组名称。
server string:定义服务器描述信息,例如服务器名和版本号等。
security:定义Samba的安全模式,如"USER"、"SHARE"和"DOMAIN"等。
map to guest:定义访问共享文件夹时如何处理匿名用户,如"Bad User"、"Guest"和"Never"等。
encrypt passwords:定义密码是否加密传输,可设置为"Yes"或"No"。
hosts allow:定义允许访问Samba服务的IP地址或IP地址范围。
hosts deny:定义禁止访问Samba服务的IP地址或IP地址范围。
[share]:定义共享文件夹选项,如共享名称、共享路径、访问权限等。
path:定义共享文件夹的路径。
read only:定义共享文件夹是否为只读权限。
guest ok:定义是否允许匿名用户访问共享文件夹。
valid users:定义可以访问共享文件夹的用户列表。
create mask:定义新建文件的权限掩码。
directory mask:定义新建目录的权限掩码。
comment:定义共享文件夹的说明信息。这些变量在Samba配置文件中被广泛使用,掌握它们的含义和用法有助于更好地理解Samba的配置和管理。
四.文件访问权限问题
当你访问的文件夹是属于用户组的时候,里面有些文件你需要指定给不同用户的权限,比如某些文件只能用户组成员只读,不可写。或者有些文件只能指定某些成员去访问,那这个需要如何去设置呢。如图,这里表示了文件的权限:
用九个字符表示用户:(用ls -l查看的就是这个格式)(第一位d表示为文件属性)
拥有者用户 拥有者组 其它用户
C1 C2 C3 C4 C5 C6 C7 C8 C9
sudo chmod 777 文件名(数字四位分别代表设置id位,设置用户id,组id,其它用户id,然后id位中0表示都不设置,1设置为执行、2设置可写、4设置为可读,看情况设几个就相加)
sudo chmod 764 文件名:比如这个就设置拥有者全部权限,拥有者组所有成员可写可读,其他用户只读。
五.Samba管理
以下是一些Samba管理指令,可用于管理Samba服务:
1.启动Samba服务:
sudo systemctl start smbd2.停止Samba服务:
sudo systemctl stop smbd3.重启Samba服务:
sudo systemctl restart smbd4.查看Samba服务状态:
sudo systemctl status smbd5.检查Samba配置文件语法错误:
testparm6.检查Samba用户:
sudo pdbedit -L7.创建Samba用户:
sudo smbpasswd -a其中,"
"是要创建的Samba用户名。
8.修改Samba用户密码:
sudo smbpasswd其中,"
"是要修改密码的Samba用户名。
9.删除Samba用户:
sudo smbpasswd -x
其中,""是要删除的Samba用户名。 10.显示共享文件夹列表:
sudo smbclient -L其中,"
"是Samba服务器的主机名或IP地址。
11.连接共享文件夹:
sudo smbclient //HOSTNAME/SHARENAME -U其中,"
"是Samba服务器的主机名或IP地址," "是共享文件夹的名称," "是要连接的Samba用户名。
这些指令可以帮助您管理Samba服务,包括启动、停止、重启Samba服务,创建和管理Samba用户,以及连接和访问共享文件夹等操作。