MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > linux / 正文

3.24 Samba常见故障排除 3.25 Samba服务试验

2024-11-26 16:18 huorong linux 3 ℃ 0 评论

3.24 Samba常见故障排除

Samba的故障排除可以在SMB服务器和SMB客户机上通过各自的命令来完成。

1.SMB服务器上的操作

⑴ 使用下面的命令来查看是否有错误的配置。

Testparm /etc/smb.conf

⑵ 在服务器上以及客户机上用ping命令检查tcp/ip是否正常工作。

⑶ 在SMB服务器上用

Smbclient -L SMBserver

命令将得到一个共享的列表。

如果出现失败信息,则要检查与服务器相关的“hosts allow”、“hosts deny”、“valid users”、“invlid users”等参数的设置。如果出现“connection refused”,则检查Samba服务器进程是否启动;若Samba以守护进程形式运行的话用“netstat –a”命令检查端口是否处于监听状态。

⑷ 运行了命令“/usr/bin/nmblookup SMBserver”,将返回SMB服务器的IP地址。否则nmbd没有正确的运行。

⑸ 运行"/usr/bin/nmblookup -d 2 '*' "命令,在子网中运行NetBIOS/TCPIP的主机将会响应。否则说明nmblookup 不能正确的得到广播地址,可以尝试在smb.conf文件中用interfaces参数人工设置IP地址、广播地址和子网掩码。

⑹ 运行“/usr/bin/smbclient '\\SMBserver\homes”命令,需要输入客户在SMB服务器上的用户口令,然后会出现类似"smb>"的提示符。这时可以使用dir命令浏览客户在SMB服务器帐户目录下的文件,用help命令可以得到其他命令的帮助。如果不能出现类似"smb>"的提示符,并且有“invalid network name”的错误信息,则有可能homes共享没有正确的设置;或者有“Bad password”,则要检查“shadow password”、“password encryption”以及参数“valid users”和“path”的设置。

2.SMB客户机上的操作

⑴ 运行“netview \\SMBserver”命令,应该能够列出SMB服务器上的共享。

如果出现类似"network name not found"的错误,则要检查客户机上DNS或WINS的设置。如果出现“Invalid network name”或“bad password error”的错误,则参照与上面“smbclient –L”命令中同样的错误结果的解决方法。要注意客户机将要用客户注册客户机时所用的用户名/口令去与SMB服务器连接,所以在SMB服务器上,用户最好有同样的用户名/口令。

⑵ 使用“netuse x;\\SMBserver\homes”命令,可以把SMB服务器上客户home目录映射到客户机“x:”盘,“x:”应该是一个客户机上未用的盘号。这样,共享的目录可以在客户机上以“x:”盘来看待。正常的信息为“command complete successfully”。

如果要停止使用“x:”盘,可以使用“netuse x:/delete”命令。如果不能正常的把客户的home目录映射到“x:”盘,则要检查SMB服务器上“hosts allow”等参数的配置。如果客户机上的用户名不能与服务器上的用户名匹配,尝试使用“username map”选项。

⑶ 如果在SMB服务器上没有使用“encrypted passwords”,则在客户机上要在注册表中允许使用“普通文本”格式的口令。

3.25 Samba服务试验

估计时间: 1个小时

目标: 使用samba共享用户认证和文件系统

试验的起点: 标准的Red Hat Linux安装上

将数据包过滤设定为无效状态。在本次试验开始之前,请确保您的主机上的所有包过滤已被关闭。缺省的安装将会有一个文件叫做“/etc/sysconfig/iptables”,该文件配置了iptable的功能。运行“chkconfig iptables off”。为了去除空间中所有的规则,运行“service iptables stop”

1.Samba的用户连接的配置

任务:

⑴ 安装samba,samba-common和samba-client RPM 软件包并且启动smb服务。一个缺省的配置将会被应用. 使用如下的命令确定Samba是在正确的工作:

smbclient –L localhost –N

您可以从服务器获得回应,但是并不代表文件共享可用。(确保smbd在运行,否则该命令无法工作)

⑵ 在您的系统中增加几个用户(karl,joe,mary和jen),但是并不给他们设定密码。这些用户仅能够从samba服务访问服务器。为了使得他们在shadow中不含有密码,这些用户的shell应该设定为/sbin/nologin

⑶ 缺省的samaba是被配置用来接收加密的密码的,但是在文件/etc/samba/smbpasswd中没有设定任何密码。如果加密的密码在/etc/samba/smb.conf被设定,smbclient将发送加密的密码,所以为了在您的系统上测试samba服务,您应该首先建立smbpasswd文件,然后为每一个用户在该文件中添加密码。

⑷ 注意到第一个在/etc/samba/smb.conf设定的共享[home]并没有指定路径。该共享被配置用来当用户连接并且认证通过以后共享用户的home目录。浏览一个或者两个用户的home目录。上传一个文件到joe的home目录。

可用的结果

一个工作的samba服务可以被多个用户通过smbclient访问。

2.提供给工作组目录访问的权限

场景/故事:

为了使得我们的四个用户除了有他们自己的在服务器上的共享,我们这四位用户同时在同一个部门工作并且需要一个地方来存储部门的文件。我们将需要一个Linux用户组,建立一个目录给这些用户来存储它们的内容,并且配置samba服务器来共享目录。

任务:

⑴ 建立一个对于拥有gid为30000的用户叫做legal的新组并且使用usermod命令将这些用户加到组里去。

⑵ 建立一个目录/home/depts/legal。对于这个目录设定拥有权限,使得在legal组中的用户可以在这个目录中添加/删除文件,然而其他的人不可以。并且设定SGID和强制位使得所有在这个目录中建立的文件都拥有同legal组的权限并且组中其他的人不能够删除该用户建立的文件。

⑶ 在/etc/samba/smb.conf中建立一个samba共享叫做[legal]。只有legal组中的用户才能够访问该共享。并且确保在[legal]中存放的文件的被建立的许可权限为0600。

⑷ 重新启动smb服务并且使用smbclient;来进行测试。

可用的结果:

⑴ 只有lagal组能够访问和使用一个Linux目录。

⑵一个samba共享只有legal组的用户能够访问并且编辑

3.为打印机提供访问

场景/故事:

在samba中除了可以共享文件以外,另外一个重要的功能就是提供共享打印队列,该打印队列已经在您的Linux机器上定义。实际上,缺省的,所有在Linux机器上配置的打印队列通过[printers]共享到网络上去。在该步骤中,您将建立一个打印队列,通过samba服务器进行共享。然后通过smbclient来查看共享的打印机。

任务:

⑴ 使用redhat-config-printer建立一个新的打印队列。把打印队列命名为printerX(其中X为您的工作站的号码)。配置打印机到本地连接的打印机/dev/lp0。配置打印队列确保任何递交的打印作业将保留在队列中。不要忘记重新启动samba服务器。

⑵ 通过smbclient来连接samba服务器上共享的printerX。使用print命令来递交打印作业到队列中去。检查作业已排队否。

可用的结果:

⑴ 一个定义的Linux打印队列printerX

⑵ 一个Samba服务器允许授权的用户打印到共享打印机printerX

4. 挑战:安全和备份Samba/SMB

现在所有的东西都可以运行了,我们应该考虑在Samba服务器上的网络安全和数据的可靠性了。

任务:

⑴ 定义并且保护对于samba服务器而言合法的连接。在文件/etc/samba/smb.conf中使用hosts allow参数来确定所有教室里的子网和本地回环子网。

⑵ 使用testparm测试/etc/samba/smb.conf的语法。这个是否显示出一些应该考虑的安全上的漏洞呢?

⑶ 对您的邻居的 [legal] 共享进行备份。通过用户karl的帐户建立一个共享的数据打包,使用或者smbtar命令或者smbclient 的-T 选项。

可用的结果:

⑴ Samba服务器能够识别来自允许的子网或者主机的连接

⑵ 一个SMB或者Samba共享的备份数据打包

一种解决方案:

步骤1:

① rpm –ivh ftp://server1.exmaple.com/pub/RedHat/RPMS/samba-c*

rpm –ivh ftp://server1.exmaple.com/pub/RedHat/RPMS/samba-2*

service smb start

smbclient –L localhost –N

② l useradd –s /bin/false karl

useradd –s /bin/false joe

useradd –s /bin/false mary

useradd –s /bin/false jen

③ l smbpasswd –a karl

smbpasswd –a joe

smbpasswd –a mary

smbpasswd –a jen

④ smbclient //localhost/joe –U joe

您应该看到smb:\>提示符

put /etc/hosts hosts

步骤2:

① groupadd –g 30000 legal

usermod –G legal karl

usermod –G legal joe

usermod –G legal mary

usermod –G legal jen

② mkdir –p /home/depts/legal

chgrp legal /home/depts/legal

chmod 3770 /home/depts/legal

③ 在文件/etc/samba/smb.conf文件中,共享定义部分:

[legal]

commnet = Legal’s files

path = /home/depts/legal

public = no

write list = @legal

create mask =0660

④ #service smb restart

步骤3:

redhat-config-printer

service smb restart

smbclient //localhost/printerX –u joe

4. 复习问题:

⑴ 在ftp和smbclient之间有什么相同的地方?您使用ftp的时候用什么命令进行上传?ftp和smbclient之间上传操作有什么不同。

⑵ 命令nmblookup \*的作用是什么

⑶ smbtar命令是干什么的?

⑷ testparm /etc/samba/smb.conf 33.44.55.66 是做什么用的?

⑸ 使用smbmount命令该使用什么语法?

Tags:linux安装samba

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言