Linux网络实战——Samba服务器构建安装Samba服务软件Samba是在Linux和UNIX系统上实现SMB协议的自由软件,由服务器和客户端程序组成。 服务器消息块(SMB )是在局域网上共享文件和打印机的通信协议,在局域网内的不同计算机之间共享文件和打印机等资源
SMB协议是基于客户端/服务器的协议,可以访问服务器上的共享文件系统、打印机和其他资源。 通过设置NetBIOS over TCP/IP,Samba不仅可以与局域网主机共享资源,还可以与世界各地的计算机共享资源。
Linux系统安装软件与在Windows系统上安装软件不同。 在Windows上,只需下载要安装的软件二进制文件(通常格式为. exe ),然后双击即可安装。 在Linux系统上安装软件的常见方法如下:
源代码安装软件安装在线安装
源码安装过程只需本地下载源代码,编译源代码生成可执行文件,并将生成的可执行文件复制到相应的安装目录中即可。 典型的软件包格式为. tar.gz、 tar.bz2等;
软件包安装过程是下载已编译的可执行软件包并使用相应的软件包管理工具进行安装。 每个Linux系统使用不同的软件包管理工具。 常见的软件包管理工具包括:
Ubuntu/Debian系统使用dpkg管理软件包。 包的后缀为. deb。
Redhat/CentOS系统使用rpm来管理软件包。 包的后缀为. rpm。
在线安装不要求用户自行创建支持的软件包,但支持的系统必须能够访问互联网。 根据Linux系统的不同,使用不同的工具在线安装软件。 常见的在线安装软件的工具包括:
Ubuntu/Debian系统使用apt-get在线安装软件。 Redhat/CentOS系统使用yum在线安装软件; 建议您在线安装软件。 脱机安装软件的常见问题是软件之间的依赖关系。 如果脱机安装软件,则必须手动安装依存库,但在线安装只需一个命令即可完成所有操作,在线安装则自动安装依存库。
要通过源代码安装Samba Samba软件包,必须先安装以下依赖软件包,然后才能安装Samba软件包:
python-dev 3360 sudo apt-getinstallpython-devlibgnutls-dev 3360 sudo apt-getinstalllibgnutls-dev libacl1- dev 3360 sudo b ldg -dev首先下载源包,这里使用samba-4.8.2.tar.gz。
具体安装步骤如下。
解压缩源包:访问tar zxvf samba-4.8.2.tar.gz源文件夹: cd samba-4.8.2/配置(生成Makefile )./configure-- prefile
[./configure---prefix=/usr/local/samba---- without-PAM的正常运行结果]
[make成功运行的结果
[成功执行sudo make安装的结果]
这样,只要源代码Samba软件安装完成并安装正确,就可以运行以下命令启动服务:
sudo/usr/local/samba/sbin/smbdd sudo/usr/local/samba/sbin/nmbdd
在线安装Samba本实验环境中使用的系统是Ubuntu,因此要使用apt-get工具在线安装软件,具体步骤如下。
更新源: sudo apt-get update安装samba:sudo apt-get安装samba安装成功后,将显示以下界面:
注意:如果当前用户是root,则在运行上述安装命令时不需要添加sudo。
启动/停止Samba服务器成功安装Samba软件后,Ubuntu 12.04系统的默认Samba服务将打开。
在本实验环境中使用的系统是Ubuntu,使用apt-get在线安装软件时,通常会在/etc/init.d/目录下生成启动服务软件的脚本。 例如,如果使用apt-get安装samba软件,则会在/etc/init.d/目录下生成一个名为smbd的脚本文件,可用于控制samba服务的启动和停止等信息
[samba服务脚本文件
Linux service命令在Linux系统上,使用service命令控制系统服务,启动、停止、重新启动和关闭系统服务,以及显示所有系统服务的当前状态
。service命令的使用格式:
service 服务名 控制命令 服务名:自动要控制的服务名,即/etc/init.d目录下的脚本文件名;控制命令:系统服务脚本支持的控制命令。常见的控制命令:
start:启动该服务;stop:关闭该服务;restart:重新启动该服务;status:查看该服务状态;注意并不是所有的服务都支持以上4种控制命令,不同的服务提供不同的控制命令,大多数服务都支持以上4种常用的控制命令。
samba服务管理当我们成功安装samba后,接下来,我们使用service命令来管理samba服务。
我们将在以下案例演示中分别介绍如何启动、关闭、重新启动samba服务,以及查看samba服务状态。
案例演示1:
查看samba服务状态,可以使用如下命令:
sudo service smbd status[请在右侧“命令行”里直接体验]
可以看到当前samba服务处于running状态,也就是运行状态,其运行进程的ID为54244。
案例演示2:
关闭samba服务并且查看是否关闭成功,可以使用如下命令:
sudo service smbd stopsudo service smbd status[请在右侧“命令行”里直接体验]
可以看到samba服务处于waiting状态。
案例演示3:
启动samba服务并且查看是否启动成功,可以使用如下命令:
sudo service smbd startsudo service smbd status[请在右侧“命令行”里直接体验]
可以看到samba服务处于running状态,也且运行进程ID为54408。
案例演示4:
重启samba服务并且查看是否重启成功,可以使用如下命令:
sudo service smbd restartsudo service smbd status[请在右侧“命令行”里直接体验]
可以看到当前samba服务先被stop后,紧接着被start。
注意:如果当前用户是root,则执行以上命令时不需要加sudo。
Samba客户端在Linux系统上samba客户端软件有smbclient。
smbclient命令属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源。这里详细介绍Linux smbclient命令的一些经常使用的命令。
在线安装smbclient软件本实验环境使用的系统是Ubuntu,所以使用apt-get工具来在线安装软件,具体步骤如下所示:
更新软件源: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 sambaUsersudo smbpasswd -a sambaUser[请在右侧“命令行”里直接体验]
smbclient命令常见用法smbclient 命令格式:
smbclient 选项 smb服务器常见选项如下:
-L:显示服务器端所分享出来的所有资源;-p<TCP连接端口>:指定服务器端 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! pwdls! ls[请在右侧“命令行”里直接体验]
案例演示4:
在远程主机上新创建一个文件夹newDir,然后将本地的/home/fzm/testFile上传到newDir目录下,将远程主机上的sambaUser/fzm文件下载到/home/fzm目录下,并重命名为newFzm,最后退出smbclient客户端,可以使用如下命令:
mkdir newDirput /home/fzm/testFile newDir/testFileget sambaUser/fzm /home/fzm/newFzmexit[请在右侧“命令行”里直接体验]
案例演示5:
在Windows系统上通过samba服务器去访问Linux系统共享的文件夹,可以使用如下步骤:
在
Windows主机上打开"运行"(快捷键
win+r)输入需要访问的
Linux的
IP地址(格式为:
\IP);
[请在Windows主机上进行验证]
回车后即可看到
Linux主机上所共享的文件夹(
fzm);
[请在Windows主机上进行验证]
打开
fzm文件夹进行访问即可(有时需要输入
samba的用户名和密码才能访问)。
[请在Windows主机上进行验证]
编程要求本关任务是学会如何使用smbclient命令访问samba服务器的共享资源。
**注意:**在执行本关任务前,首先执行如下命令来初始化任务环境。
apt-get updateapt-get install smbclientuseradd testUsersmbpasswd -a testUser(输入新设置的密码)touch testFile向文件`/etc/samba/smb.conf`结尾追加如下内容,并且重新启动`Samba`服务器,并且重新启动服务[homes] comment = smbclient homes path = /tmp browseable = no writable = yes create mask = 0664 directory mask = 0775具体编程要求如下:
启动samba服务;使用smbclient命令连接本机testUser共享文件夹(将本机作为远程服务器,并且使用testUser用户去访问);在远程服务器上新建一个目录Dir;将本地的一个文件(/root/testFile)上传到远程主机的Dir目录下并重命名为upLoadFile。