文本界面的用户可以通过命令行程序进行Samba服务操作文件。本节将对其内容进行简单的介绍。与Samba服务相关的其他程序也将在本节进行介绍。
与Samba服务相关的命令为smbclient、smbmount和smbumount。
smbclient命令用来存取远程Samba服务器上的资源,它的界面到目前为止还是文本方式的。smbclient命令的语法是:
smbclient <servicename> [password] [options]
其中servicename是要连接的资源名称,资源名称的形式如下:
//server/service
其中server是远程服务器的Net BIOS名字,对于Windows服务器来说,就是它们出现在网络邻居中的名字。service是各server所提供的资源的名字,同样是出现在“网络邻居”中的名字。password是存取该资源所需的口令。
如果既没有给出password参数,也没有使用-N选项。smbclient会提示用户输入口令;如果目标资源并不需要口令,用户可直接按Enter键跳过。
-N选项禁止smbclient提示用户输入口令,当连接不需要口令的资源时可以使用该选项。
使用-L选项将列出远程服务器提供的所有资源。如果不知道服务器的Net BIOS名,可以使用-I选项来指定它的IP地址,如:
smbclient //unknown/service -I 192.168.1.2
使用了-I选项之后,servicename中的Net BIOS名部分将被忽略。
smbclient命令运行之后,会出现如下提示符(和DOS提示符比较相像):
smb:\>
用户在该提示符下输入各种命令。其命令和FTP相似,如cd、lcd、get、mget、put、mput等,其他比较常用的命令如下所示。
· ?[comand]:显示有关command的帮助信息,若无command参数,则列出所有可能的命令。
· ![shell command]:在本地执行shell命令,如果没有给出shell command,则在本地运行一个shell。用户可以在该shell中执行各种命令,用exit回到smbclient。
· lowercase:关闭或者打开文件名小写转换。如果打开,smbclient会自动将get和mget命令取回的文件以相应的小写文件名命名。
· print <filename>:在远程服务器上打印文件filename。
· queue:显示打印队列。
· quit或者exit:退出smbclient。
smbclient的mget和mput命令可以使用通配符“*”和“?”,它们还可以工作在递归模式下。当工作在递归模式时,它们将处理当前目录以及所有由mask命令指定的子目录。用recurse命令打开或关闭递归模式。
mask命令指定一个含通配符的模式,当mget和mput工作在递归模式时,它们将只处理能匹配该模式的目录;如果不工作在递归模式,则忽略该模式。mask命令的使用方法是:
mask <expr>
expr是含通配符的模式。smbclient 还可以发送WinPopup 消息,方法是:
smbclient -M NetBIOS_name
NetBIOS_name是目标计算机的NetBIOS名。连接建立后,键入要发送的消息,按Ctrl+D组合键结束。
smbclient的工作模式:当我们要处理绝大多数的文件(如执行一个在远端的文件)时必须先下载到本地系统上,然后才能执行相应的操作。
这种操作方法自有它的好处,如比较节省网络资源,但也会造成文件的重复存取。smbclient命令则可以直接利用远端的文件资源而不用先下载。
可用的smbclient参数如下所示。
· sharename:完整的共享名路径。如\\server\share。
· -U username:登录的用户名。
· password:登录用口令。
· -L:列出所有已知的服务器和共享资源。
连接到Windows 2003服务器comet 以访问共享目录dir1,登录的用户名与口令之间用%分开:
smbclient \\\\comet\\dir1 -U gugong%password
smbclient -L comet
参数-L查询服务器comet中的可用共享资源。它还会查询系统(comet)的浏览器,以发现该服务器(comet)已经在网上发现的其他共享资源。
要使用smbclient安装Samba文件系统,Fedora 6内核必须包含smbfs的支持模块。除非你自己重新编译了新内核才需要加以注意。smbmount命令的语法是:
smbmunt <servicename> <mount-point>
其中servicename是资源名,mount-point是安装点。smbmount常用的选项有如下几个。
· -C:smbmount默认将口令转换成大写,使用-C选项禁止这种转换。
· -N:当连接不需要口令的资源时应该使用本选项。
· -P password:指定口令。如果没有指定-N或-P选项,smbmount会提示用户输入口令。
· -s server-name:smbmount的行为和smbclient不同,它使用服务器的Internet主机名(即hostname命令给出的主机名)来获得其IP地址,而不是使用服务器的NetBIOS名。如果服务器使用不同的NetBIOS和Internet名,则应该用-s选项指定其NetBIOS名,而在servicename中使用Internet主机名。
· -c command-string:执行指定的相对独立的命令。
· -i hostname/IP:本选项恰好和-s选项相反,它允许在servicename 中使用服务器的NetBIOS名,而在-i之后指定服务器的Internet主机名或IP地址。-i和-s的效果是一样的,smbmount总是利用Internet主机名查找主机。然后用服务器的NetBIOS名登录(有些服务器要求客户机给出自己的NetBIOS名)。
· -U username:如果用户在服务器上的账号和本地机上的不同,则应该使用该选项指定在服务器上的账号。
如果要装载一个SMB的文件系统,建议使用“-c”选项来使smbmount执行mount命令。例如:
smbmount "\\\\server\\tmp" -c 'mount /mnt -u 123 -g 456'
这样就可以把名字叫做server的计算机的共享资源tmp的内容装载到本地的/mnt 目录下,并给这个目录以及其下所有的文件分配一个本地的uid(UserID)123和gid(Group ID)456。这样正确执行了之后(指用户输入了正确的路径和密码),读者就可以在/mnt目录下看到本来是远端计算机上的内容,并且可以与操作本地的文件一样进行各种被允许的操作,这样非常节省本地的系统资源。
卸载一个已经装载的SMB文件系统用smbumount命令。smbumount 令的格式非常简单,只要指定要卸载的装载点就可以了。常用的smbmount参数如下所述。
· sharename:以//server/share格式输入的共享名。
· mount point:希望附着共享文件的目录。
· -I server:包含共享资源的服务器。
· -U username:登录时使用的用户名(和-n类似,但比-n更管用!)。
· -P password:登录时使用的口令。
· -N:没有口令的登录名,不用提示输入口令。
· -h:列出可用开关的简单帮助信息。
想用登录名“gugong”和口令“111111”来安装共享文件“\\comet\dir1”到目录“/mnt/comet”:
smbmount \\\\comet\\dir1 /mnt/comet -I comet -U gugong -P 111111
要卸掉上一例子中创建的共享安装,可以输入:
smbumount /mnt/comet
除了客户服务功能,Samba还允许Fedora 6系统发布文件和打印共享。Samba有两个服务器程序为:nmbd(/usr/sbin/nmbd)和smbd(/usr/sbin/smbd)。
nmbd实用工具控制系统的NetBIOS通信。它作为后台程序运行,并且负责监听用于名字服务请求的NetBIOS端口。当接收了名字服务请求时,nmbd用系统的IP地址作出回答。负责保持浏览器能通报在一个已知的工作组中哪个成员在编写NetBIOS名字目录。可用的nmbd参数有如下几个。
· -D:告诉nmbd作为后台进程运行。
· -H lmhost_file路径和NetBIOS主机名字文件的路径名字。
· -d number:告诉nmbd运行于由number指定的调试级,0~5有效。
· -l log_file_base:指定日志文件的名称。
· -n NetBIOS_name:在主机名不宜用的条件下,指定该系统的NetBIOS名字。
· -p port_number:改变默认的监听端口号。
· -s config_file:若smb.conf没有在/etc目录下,则指定其位置。
smbd实用工具是负责所有文件和打印共享服务的后台进程。一旦客户通过nmbd寻址到一个Samba服务器,就由smbd负责客户的文件和打印请求。可用的smbd参数有如下几个。
· -D:告诉smbd作为后台进程运行。
· -O socket_option:调节通信参数。
· -a:重写日志文件,默认是添加。
· -d number:告诉smbd运行于由number指定的调试级。0~5有效。
· -l log_file_base:指定日志文件的名称。
· -p port_number:改变默认的监听端口号。
· -s config_file:若smb.conf没有在/etc目录下,则指定其位置。