二.. 配置文件中的一些定义.....
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 ~]# getenforce
Enforcing (SElinux处于开启状态)
[root@station195 ~]# setenforce 0 (0代表关闭selinux,1代表enforcing)
[root@station195 ~]# getenforce
Permissive (如果是permissive就表示已经处于关闭状态)
如果你使用getenforce命令,显示结果为disable的话,此时你设置好0级别了必须重启系统才能生效,这个很多人遇到不知道怎么解决....
samba服务需要安装三个包,默认情况下系统会装两个,一个是samba-common另一个是samba-client.还需要装一个包samba..使用下面命令查看系统已
经安装的sanba包...
[root@station195 ~]# rpm -qa | grep samba
samba-common-3.0.33-3.14.el5
samba-client-3.0.33-3.14.el5
服务器已安装其中的两个,我们下面去安装第三个包samba,服务器做好yum 源指向本地..先挂载然后安装
[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 -l
total 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 successful
Domain=[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 qqq
Anonymous login successful
Domain=[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 available
smb: \>mkdir natasha
smb: \> 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 2010
smb: \> rmdir natasha
smb: \> 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 available
natasha用户可以在randy目录中创建和删除目录.他也可删除wendy用户创建的目录.但绝对删除不了别人的家目录.
[root@station197 ~]# smbclient //192.168.0.195/randy -U wendy
Password:
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 available
smb: \> mkdir wendy
smb: \> 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 available
smb: \> rmdir wendy
smb: \> 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 available
wendy用户也可在randy目录中创建和删除目录.同时wendy也可删除natasha创建的目录.这一点大家不能忽略了..
[root@station197 ~]# smbclient //192.168.0.195/randy -U mary
Password:
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 available
smb: \> mkdir mary
NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \mary
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 available
可以发现mary无法创建目录,因为他没有权限,在服务器配置文件write list 中没有他的名字...
测试成功...
四..下面我们来开启服务器的SElinux,使用下面的命令...
[root@station195 share]# setenforce 1 (这样设置只是临时生效,想永久生效,编辑/etc/selinux/config文件)
[root@station195 share]# getenforce
Enforcing
已经开启,去服务器端再次测试....
[root@station197 ~]# smbclient //192.168.0.195/randy -U natasha
Password:
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 samba
samba_domain_controller --> off
samba_enable_home_dirs --> off (这一项默认是关闭的)
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
我们需要将samba_enable_home_dirs --> off这一项开启...使用下面的命令..
[root@station195 share]# setsebool -P samba_enable_home_dirs on
[root@station195 share]# getsebool -a |grep samba
samba_domain_controller --> off
samba_enable_home_dirs --> on(这一项已经开启了)
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_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 natasha
Password:
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服务实现了不同机器之间的资源共享和访问,非常的实用....大家一定得学好了....