Linux使用一个被称为samba的程序集来实现SMB协议samba属于GNU Public License(简称GPL)软件.因此任何用户都可以合法且免费的使用它...samba服务解决了网络中多种操作系统之间互联,使用户能够方便快捷的使用彼此提供的共享文件和打印设备...
SMB协议概述:SMB全称"Server Message Block"指的是服务信息块.是查看局域网的共享目录/打印机的一种协议.该协议可以在TCP/IP之上,也可以在其它的网络协议中,如IPX何NETBEUI.通过SMB协议客户端应用程序可以在各种网络环境下读.写服务器上的文件.还可以通过SMB协议,应用程序还可以访问远程服务器端的文件和打印机等资源...samba服务相关的密码文件有两个,一个是/etc/samba/smbpasswd,samba服务安装后此文件是不存在的,可使用smbpasswd来创建.大家需要记住的是samba服务与Linux操作系统使用不同 的密码文件.因此无法使用linux系统中的账号登录samba服务器...
另一个文件是/etc/samba/smbusers,该文件是用于控制用户映射的...samba服务的日志默认存放在/var/log/samba中...
一..samba服务器使用的安全等级....1. share 当客户端连接到该等级的服务器上时,不需要账号和密码就可以访问samba服务器上的共享资源.但安全性无法得到保障..2. user 当客户端连接到该等级的服务器时,需要使用有效的账号和密码访问该samba服务器上的共享资源..(默认的设置)3. share 与user等级相同,也需要输入账号和密码,但密码验证会有另外一台SMB服务器负责,因此还必须指定口令服务器...4. domain 当Samba服务器加入到windowsNT域中后,samba服务器不再负责账号和密码的验证,统一由域控制器负责,则使用该安全等级,同时也必须指
定口令服务器...5. ads Samba加入到windows活动目录后,使用该等级,同时也需指定口令服务器... 服务器主要进程 smbd和nmbd...
二.. 配置文件中的一些定义..... comment 指的是注释信息... path 定义共享的目录.. public 是否允许匿名访问和guest ok的效果一样 brownseable = no 指的是除了自己以外,不许任何人访问.. writeable 后定义共享目录是否可写.. valid users 定义哪些用户可以访问,也可以定义组,如果是组的话,在组名前面加上@或者+..... write list 定义哪些用户可以写入,也可以定义组,如果是组的话,在组名前面加上@或者+.....
三..下面开始samba服务的配置....我们来搭建个实验环境,系统上有三个用户wendy,natasha,mary,密码都为redhat,还有个附加组mygroup,其中wendy和
natasha指定附加组mygroup...其中workgroup = workgroup,我们有个共享目录/share,共享名为randy,只许wendy和natasha可以访问,且具备读写权限,
而mary只能读取/share目录,却不具备写的权限...(我们先关闭防火墙和SElinux),服务器IP:192.168.0.195,客户端IP:192.168.0.197[root@station195 ~]# getenforceEnforcing (SElinux处于开启状态)[root@station195 ~]# setenforce 0 (0代表关闭selinux,1代表enforcing)[root@station195 ~]# getenforcePermissive (如果是permissive就表示已经处于关闭状态)如果你使用getenforce命令,显示结果为disable的话,此时你设置好0级别了必须重启系统才能生效,这个很多人遇到不知道怎么解决....samba服务需要安装三个包,默认情况下系统会装两个,一个是samba-common另一个是samba-client.还需要装一个包samba..使用下面命令查看系统已
经安装的sanba包...[root@station195 ~]# rpm -qa | grep sambasamba-common-3.0.33-3.14.el5samba-client-3.0.33-3.14.el5
服务器已安装其中的两个,我们下面去安装第三个包samba,服务器做好 源指向本地..先挂载然后安装[root@station195 ~]# yum -y install samba[root@station195 ~]# useradd natasha (用passwd 创建密码,密码为redhat)[root@station195 ~]# useradd wendy (用passwd 创建密码,密码为redhat)[root@station195 ~]# useradd mary (用passwd 创建密码,密码为redhat)[root@station195 ~]# usermod -G mygroup natasha[root@station195 ~]# usermod -G mygroup wendy[root@station195 ~]# mkdir /share[root@station195 share]# chmod g+w /share/[root@station195 share]# chown root.mygroup ../share/[root@station195 share]# ll -d /share/drwxrwxr-x 2 root mygroup 4096 Mar 5 16:14 /share/
[root@station195 share]# ls[root@station195 share]# touch a.txt b.txt[root@station195 share]# ls -ltotal 8-rw-r--r-- 1 root root 0 Mar 5 16:14 a.txt-rw-r--r-- 1 root root 0 Mar 5 16:14 b.txt
[root@station195 ~]# smbpasswd -a natasha (密码为自己的名字)[root@station195 ~]# smbpasswd -a wendy (密码为自己的名字)[root@station195 ~]# smbpasswd -a mary (密码为自己的名字)[root@station195 samba]# vim /etc/samba/smb.conf[randy] comment = this is share directory path = /share public = yes browseable = yes write list = @mygroup valid users = @mygroup mary[root@station195 ~]#testparm (这个进行语法的测试,下面报OK,证明正确..)[root@station195 ~]# service smb restart (记住每次修改配置文件一定要重启动服务) 下面我们去客户端进行测试...[root@station197 ~]# smbclient -L 192.168.0.195 (查看192.168.0.195上有哪些共享,提示输入密码,密码为空...)Password:Anonymous login successfulDomain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
Sharename Type Comment --------- ---- ------- randy Disk this is share directory IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.14.el5) station90 Printer station90 station Printer station Server Printer Server qqq Printer qqqAnonymous login successfulDomain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
Server Comment --------- ------- STATION195 Samba Server Version 3.0.33-3.14.el5 YANGZORDER-PC
Workgroup Master --------- ------- WORKGROUP YANGZORDER-PC
[root@station197 ~]# smbclient //192.168.0.195/randy -U natasha%natasha(这个命令和下面的命令效果一样,只是这儿密码是明文的,不建议大家
这么写..以下面的写法为主...)
[root@station197 ~]# smbclient //192.168.0.195/randy -U natasha(这个地方一定指共享的名字而不是share)Password: (输入的密码为natasha,而不是redhat)Domain=[STATION195] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]smb: \> ls . D 0 Fri Mar 5 16:14:35 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks availablesmb: \>mkdir natashasmb: \> ls . D 0 Fri Mar 5 16:48:54 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010 natasha D 0 Fri Mar 5 16:48:54 2010smb: \> rmdir natashasmb: \> ls . D 0 Fri Mar 5 16:49:33 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks availablenatasha用户可以在randy目录中创建和删除目录.他也可删除wendy用户创建的目录.但绝对删除不了别人的家目录.
[root@station197 ~]# smbclient //192.168.0.195/randy -U wendyPassword:Domain=[STATION195] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]smb: \> ls . D 0 Fri Mar 5 16:14:35 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks availablesmb: \> mkdir wendysmb: \> ls . D 0 Fri Mar 5 16:52:16 2010 .. D 0 Fri Mar 5 14:50:49 2010 wendy D 0 Fri Mar 5 16:52:16 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks availablesmb: \> rmdir wendysmb: \> ls . D 0 Fri Mar 5 16:53:08 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks availablewendy用户也可在randy目录中创建和删除目录.同时wendy也可删除natasha创建的目录.这一点大家不能忽略了..
[root@station197 ~]# smbclient //192.168.0.195/randy -U maryPassword:Domain=[STATION195] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]smb: \> ls . D 0 Fri Mar 5 16:54:38 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks availablesmb: \> mkdir maryNT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \marysmb: \> ls . D 0 Fri Mar 5 16:54:38 2010 .. D 0 Fri Mar 5 14:50:49 2010 a.txt 0 Fri Mar 5 16:14:35 2010 b.txt 0 Fri Mar 5 16:14:35 2010
63483 blocks of size 131072. 38139 blocks available可以发现mary无法创建目录,因为他没有权限,在服务器配置文件write list 中没有他的名字... 测试成功...
四..下面我们来开启服务器的SElinux,使用下面的命令...[root@station195 share]# setenforce 1 (这样设置只是临时生效,想永久生效,编辑/etc/selinux/config文件)[root@station195 share]# getenforceEnforcing已经开启,去服务器端再次测试....[root@station197 ~]# smbclient //192.168.0.195/randy -U natashaPassword:Domain=[STATION195] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]tree connect failed: NT_STATUS_BAD_NETWORK_NAME发现无法访问了,现在我们在开启SElinux的情况下让客户端可以访问...首先我们去看看Samba服务的selinux的bool值...[root@station195 share]# getsebool -a |grep sambasamba_domain_controller --> offsamba_enable_home_dirs --> off (这一项默认是关闭的)samba_export_all_ro --> offsamba_export_all_rw --> offsamba_share_nfs --> offuse_samba_home_dirs --> offvirt_use_samba --> off我们需要将samba_enable_home_dirs --> off这一项开启...使用下面的命令..[root@station195 share]# setsebool -P samba_enable_home_dirs on[root@station195 share]# getsebool -a |grep sambasamba_domain_controller --> offsamba_enable_home_dirs --> on(这一项已经开启了)samba_export_all_ro --> offsamba_export_all_rw --> offsamba_share_nfs --> offuse_samba_home_dirs --> offvirt_use_samba --> off现在我们暂时还访问不了..然后我们去查看一下share目录的标签..[root@station195 share]# ll -Zd /share/drwxrwxr-x root root root:object_r:default_t /share/我们去修改它的标签...[root@station195 share]# ll -Zd /share/drwxrwxr-x root root root:object_r:default_t /share/[root@station195 share]# chcon -t samba_share_t /share[root@station195 share]# ll -Zd /share/drwxrwxr-x root root root:object_r:samba_share_t /share/(将default_t标签修改为samba_share_t)然后我们再次去客户机测试...[root@station197 ~]# smbclient //192.168.0.195/randy -U natashaPassword:Domain=[STATION195] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]smb: \> ls . D 0 Fri Mar 5 16:54:38 2010 .. D 0 Fri Mar 5 14:50:49 2010
63483 blocks of size 131072. 37865 blocks available可以发现natasha可以访问,而且可以创建和删除目录,其他的用户都可以访问,这些我都测试过,这里就演示这一个用户....samba服务实现了不同机器之间的资源共享和访问,非常的实用....