不建议看
- 更新软件源:sudo apt-get update
- 安装samba:sudo apt-get install samba
- start:启动该服务;
- stop:关闭该服务;
- restart:重新启动该服务;
- status:查看该服务状态;
查看samba服务状态,可以使用如下命令:
sudo service smbd status
- 更新软件源:sudo apt-get update
- 安装smbclient:sudo apt-get install smbclient
如果安装成功则会出现如下界面:
注意:如果当前用户是root,则执行以上安装命令时不需要加sudo。
samba用户管理
smbpasswd命令属于samba套件,能够实现添加或删除samba用户和为用户修改密码。
smbpasswd命令格式:
smbpasswd 选项 用户名
常见选项如下:
- -a:向smbpasswd文件中添加用户;
- -c:指定samba的配置文件;
- -x:从smbpasswd文件中删除用户;
- -d:在smbpasswd文件中禁用指定的用户;
- -e:在smbpasswd文件中激活指定的用户;
- -n:将指定的用户的密码置空;
用户名:指定要修改smb密码的用户。
注意:这里使用的用户是系统中已经存在的用户。
案例演示1:
添加一个samba用户sambaUser,可以使用如下命令:
- sudo useradd sambaUser
- sudo smbpasswd -a sambaUser
[请在右侧“命令行”里直接体验]
smbclient命令常见用法
smbclient 命令格式:
smbclient 选项 smb服务器
常见选项如下:
- -L:显示服务器端所分享出来的所有资源;
- -p
:指定服务器端 TCP 连接端口编号; - -s<目录>:指定 smb.conf 所在的目录;
- -U<用户名称>:指定用户名称;
- -N:不用询问密码;
smb服务器:指定要连接的smb服务器。
常见smbclient命令如下所示:
- smb: > ? 或 help [command] 提供关于帮助或某个命令的帮助;
- smb: > ![shell command] 执行所用的 SHELL 命令,或让用户进入 SHELL 提示符;
- smb: > cd [目录] 切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录;
- smb: > lcd [目录] 切换到客户端指定的目录;
- smb: > dir 或 ls 列出服务器端当前目录下的文件;
- smb: > exit 或 quit 退出smbclient;
- smb: > get file1 file2 从服务器上下载 file1,并以文件名 file2 存在本地机上;如果不想改名,可以把 file2 省略;
- smb: > mget file1 file2 file3 filen 从服务器上下载多个文件;
- smb: > md 或 mkdir 目录 在服务器上创建目录;
- smb: > rd 或 rmdir 目录 删除服务器上的目录;
- smb: > put file1 [file2] 向服务器上传一个文件 file1,传到服务器上改名为 file2;
- smb: > mput file1 file2 filen 向服务器上传多个文件;
注意:smbclient的很多命令和ftp的命令用法相似。
案例演示环境初始化:执行如下操作:向文件/etc/samba/smb.conf结尾追加如下内容,并且重新启动Samba服务器,下一关讲解为什么要这样做。
- [homes]
- comment = smbclient homes
- path = /tmp
- browseable = no
- writable = yes
- create mask = 0664
- directory mask = 0775
[修改后的配置文件]
列出某个IP地址所提供的共享文件夹
案例演示1:
使用smbclient客户端列出本地所提供的共享文件夹(使用sambaUser用户去登录服务器,密码为fzm),可以使用如下命令:
smbclient -L 127.0.0.1 -U sambaUser%fzm
[请在右侧“命令行”里直接体验]
可以看到本地共享的文件夹有3个,分别是:print$、IPC$和sambaUser。
远程连接Samba服务器
案例演示2:
使用smbclient客户端去连接sambaUser共享文件夹(使用sambaUser用户去登录服务器,密码为fzm),可以使用如下命令:
smbclient //127.0.0.1/sambaUser -U sambaUser%fzm
[请在右侧“命令行”里直接体验]
其它操作
案例演示3:
显示远程主机的当前目录,并且显示客户端当前工作目录,显示远程主机的当前目录下的所有文件信息,显示客户端当前工作目录下的所有信息,可以使用如下命令:
- pwd
- ! pwd
- ls
- ! ls
[请在右侧“命令行”里直接体验]
案例演示4:
在远程主机上新创建一个文件夹newDir,然后将本地的/home/fzm/testFile上传到newDir目录下,将远程主机上的sambaUser/fzm文件下载到/home/fzm目录下,并重命名为newFzm,最后退出smbclient客户端,可以使用如下命令:
- mkdir newDir
- put /home/fzm/testFile newDir/testFile
- get sambaUser/fzm /home/fzm/newFzm
- exit
[请在右侧“命令行”里直接体验]
案例演示5:
在Windows系统上通过samba服务器去访问Linux系统共享的文件夹,可以使用如下步骤:
- 在Windows主机上打开"运行"(快捷键win+r)输入需要访问的Linux的IP地址(格式为:\IP);
[请在Windows主机上进行验证]
- 回车后即可看到Linux主机上所共享的文件夹(fzm);
[请在Windows主机上进行验证]
- 打开fzm文件夹进行访问即可(有时需要输入samba的用户名和密码才能访问)。
samba服务器提供了很多的配置项,每个配置项都有不同的功能,接下来,我们介绍samba常见的配置项功能,samba服务器的配置文件存放路径为:/etc/samba/smb.conf目录下。
smb.conf结构
smb.conf文件中包括4种结构,[Global]、[Homes]、[printers]、[Userdefined_shareName],其中:
- Globa:用于定义全局参数和缺省值;
- Homes:用于用户的home目录共享;
- Printers:用于定义打印机共享;
- Userdefined_ShareName:用于自定义共享(可有多个)。
全局配置参数[Global]
全局配置参数常用的主要有以下几个:
- Workgroup:设置 samba 要加入的工作组;
- server string:指定浏览列表里的机器描述;
- netbios name:设 置samba 的 NetBIOS 名字(需要自己添加);
- Intterface:设置接口 IP 地址;
- Host allow:设置允许访问的主机 IP;
- log file:指定日志文件的名称;
- Max log size:指定日志文件的最大尺寸(KB);
- security:是定义 samba 的安装等级。
案例演示1:
修改浏览列表里的机器描述为This is My Sambaserver,具体使用如下步骤:
- 修改 smb.conf 文件中的 server string 值(sudo vim /etc/samba/smb.conf)
- sudo service smbd restart
- smbclient -L 127.0.0.1 -U sambaUser%fzm
[修改配置文件]
[请在右侧“命令行”里直接体验]
配置home共享[homes]
home共享默认将用户的宿主目录进行了共享,这是十分危险的。为了安全考虑,我们需要自己指定共享的目录,使用home共享的好处是不同的登录用户看到的共享目录名称是本身用户名。
常见的设置共享目录的属性有如下几个:
- comment :描述该共享的名称;
- path:定义该共享的目录;
- browseable :指定共享的目录是否可浏览;
- Writable:指定共享的目录是否有写入权限;
- read only:指定共享的目录为只读权限;
- Public:指定是否可以允许 Guest 帐户访问;
- Guest ok:通 public 相同,yes 为允许 guest 访问;
- create mask:创建文件的默认权限;
- directory mask:创建目录的默认权限。
我们现在讲解为什么我们在上一关中要向配置文件添加如下属性:
[上一关配置文件]
可以看到我们将home的共享目录指定为/tmp,并且设置可以有写权限,以及创建文件和目录的默认权限。
案例演示1:
将home设置为可浏览,具体使用如下步骤:
- 修改 smb.conf 文件中的 server string 值(sudo vim /etc/samba/smb.conf)
- sudo service smbd restart
- smbclient -L 127.0.0.1 -U sambaUser%fzm
[修改配置文件]
[请在右侧“命令行”里直接体验]
可以看到现在本机共享文件夹又多了一个homes的文件夹。
自定义共享
自定义共享文件夹可以设置多个,设置方式与home的设置方式相似,并且共享文件夹的名字随便起。
案例演示1:
自定义一个共享文件夹,将共享名字设置为MyShare,指定共享目录为/tmp,并且设置其可写属性以及创建文件和目录的默认权限分别是0644和0755,具体使用如下步骤:
- 修改 smb.conf 文件中的 server string 值(sudo vim /etc/samba/smb.conf)
- sudo service smbd restart
- smbclient -L 127.0.0.1 -U sambaUser%fzm
[追加配置文件]
[请在右侧“命令行”里直接体验]
可以看到新创建的共享文件夹MyShare成功的显示出来,如果登录的只需要输入:smbclient //127.0.0.1/MyShare -U userName%passwd



