1、实训目的
(1)掌握samba服务器的安装和配置方法;
(2)掌握Linux与Windows的资源共享和互访方法;
(3)了解使用Samba共享用户认证和文件系统。
2、项目背景
某公司有system、develop、productdesign和test等4个小组,个人办公机操作系统为Windows 2000/XP/2003,少数开发人员采用Linux操作系统,服务器操作系统为RHEL 4,需要设计一套建立再RHEL 4之上的安全文件共享方案。每个用户都有自己的网络磁盘,develop组到test组有共用的网络硬盘,所有用户(包括匿名用户)有一个只读共享资料库;所有用户(包括匿名用户)要有一个存放临时文件的文件夹。
网络拓扑如下图所示:
项目目标:
● System组具有管理所有Samba空间的权限。
● 各部门的私有空间:各小组拥有自己的空间,除了小组成员及system组有权限以外,其他用户不可访问(包括列表、读和写)。
● 资料库:所有用户(包括匿名用户)都具有读权限而不具有写入数据的权限。
● Develop组与test组的共享空间,develop组与test组之外的用户不能访问。
● 公共临时空间:让所有用户可以读取、写入、删除。
3、实训内容
(1)在windows系统和Linux之间进行文件共享,使用samba服务器。
(2)Samba保证了Linux与windows之间方便快捷的共享文件。
具体的配置过程:
1、samba是干什么的?它有什么用?
Samba(SMB是其缩写) 是一个网络服务器,它是Linux作为本地服务器最重要的一个服务,用于Linux和Windows共享文件之用;
Samba可以用于Windows和Linux之间的共享文件,也一样用于 Linux和Linux之间的共享文件;
不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的;
大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;
Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器;
我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。
在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。
Samba 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用Samba,应该用NFS更好一点;
那Samba 能为我们提供点什么服务呢?主要是共享文件和共享打印机;
samba包括两个服务器守护进程,smbd和nmbd。这两个进程各司其职,功用不同:smbd是samba服务的内核,是建立对话、验证用户、提供文件系统和打印服务的基础,负责硬盘驱动器和打印机的共享。用户通过客户端访问这个进程来进行文件和打印机共享;nmbd实现的是网络浏览,使得samba服务器显示在windows的网络邻居中,同时允许用户浏览可用资源。它负责NETBIOS信息的管理和传递,使得windows的用户可以在Explorer中使用“\\serverip”来访问samba的共享文件。
2、安装及服务操作命令
安装samba程序非常简单,使用rpm -q samba查看当前系统是否已经安装了samba软件。
如果没有那就进入光盘,rpm -ivh *samba*.rpm即可。
仔细说下安装的包:
samba-common-3.0.28-0.el5.8 //samba服务器和客户端中的最基本文件
samba-3.0.28-0.el5.8 //samba服务器核心软件包
system-config-samba-1.2.39-1.el5 //samba图形配置界面
samba-client-3.0.28-0.el5.8 //samba客户端软件
启动、暂停和停止服务:/etc/init.d/smb start
/etc/init.d/smb stop
/etc/init.d/smb restart
或service smb start
service smb stop
service smb restart
SAMBA方案的工作目标
有4个小组:develop productdesign test system
1.system组具有管理所有samba空间的权限
2.各部门的私有空间:各小组拥有自己的空间,除了小组成员及system组外,其它用户不可访问
3.资料库:所有用户都有读权限,不能写入
4.develop组与test组的共享空间,只有develop组与test组有权限,其它用户都不能访问
5.公共临时空间,所有用户都有读,写,删除的权限
1、创建共享资源目录
[root@xuweidabian /]# mkdir -p /data/share
[root@xuweidabian /]# cd /data/share
[root@xuweidabian share]# mkdir develop productdesign test library develop_testrw temp
各目录说明如下:
/data/share:管理员目录,负责管理其下所有目录。
/data/share/develop:develop的主目录,除了用户本身和system之外,其他用户都是不可读不可写。
/data/share/productdesign:productdesign的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。
/data/share/test:test的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。
/data/share/library:资料库目录,所有用户(除了system组有权限写入外)只读目录。
/data/share/develop_testrw:develop组和test组的共享空间,develop组与test组之外的用户不能访问。
/data/share/temp:用于所有用户(包括匿名用户)的可读可写。
2、添加用户组。
[root@xuweidabian share]# groupadd system
[root@xuweidabian share]# groupadd develop
[root@xuweidabian share]# groupadd productdesign
[root@xuweidabian share]# groupadd test
[root@xuweidabian share]# groupadd develop_test
3、添加用户。
[root@xuweidabian share]# useradd -g test -G develop_test -d /data/share/test -s /sbin/nologin test
[root@xuweidabian share]# useradd -g develop -G develop_test -d /data/share/develop -s /sbin/nologin develop
[root@xuweidabian share]# useradd -g productdesign -d /data/share/productdesign -s /sbin/nologin productdesign
[root@xuweidabian share]# useradd -g system -d /data/share/ -G system,develop,productdesign,test,develop_test -s /sbin/nologin system
4、添加Samba用户。
为了实现文件的共享添加Samba用户
[root@xuweidabian share]# smbpasswd -a system
New SMB password:
Retype new SMB password:
Added user system.
[root@xuweidabian share]# smbpasswd -a develop
New SMB password:
Retype new SMB password:
Added user develop.
[root@xuweidabian share]# smbpasswd -a productdesign
New SMB password:
Retype new SMB password:
Added user productdesign.
[root@xuweidabian share]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.
5、配置相关目录的权限与归属。
[[root@xuweidabian ~]# chown system:system /data/share
[root@xuweidabian ~]# cd /data/share
[root@xuweidabian share]# chmod 2770 develop develop_testrw productdesign test temp library
[root@xuweidabian share]# chown develop:system develop
[root@xuweidabian share]# chown productdesign:system productdesign
[root@xuweidabian share]# chown develop:system develop
[root@xuweidabian share]# chown system:system /data/share
[root@xuweidabian share]# chown test:system test
[root@xuweidabian share]# chown system:system library
[root@xuweidabian share]# chown system:develop_test develop_testrw
[root@xuweidabian share]# chmod 755 library
[root@xuweidabian share]# chown system:system temp
[root@xuweidabian share]# chmod 777 temp
[root@xuweidabian ~]# chmod 755 /data/share
6、Samba服务器/etc/samba/smb.conf全局环境配置。
[root@xuweidabian ~]# vi /etc/samba/smb.conf
配置文件详解:
[pzk] # 自定义共享名
comment = Home Directories # 描述符,是给系统管理员看的
path = /tmp # 共享的路径
public = yes # 是否公开,也就是是否能在网上邻居看到该共享
browseable = yes # 共享的目录是否让所有人可见
writable = yes # 是否可写
guest ok = no # 是否拒绝匿名访问,仅当安全级别为 share 时才生效
workgroup = WORKGROUP # 工作组,要设置成跟 Windows 的工作组一致
server string = Samba Server Version %v # 其他 Linux 主机查看共享时的提示符
netbios name = MYSERVER # 用于在 Windows 网上邻居上显示的主机名
hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13 # 指定允许访问 samba 服务器的主机
security = share # 定义安全级别
log file = /var/log/samba/log.%m # 定义日志文件,每个访问的主机会产生独立的日志文件,%m 是客户端主机名
max log size = 50 # 定义单个日志的最大容量(KB)
passdb backend = tdbsam # Samba 用户的存储方式,smbpasswd 表示明文存储,tdbsam 表示密文存储
deadtime = 10 # 客户端在10分钟内没有打开任何 Samba 资源,服务器将自动关闭会话,在大量的并发访问环境中,这样的设置可以提高服务器性能
display charset = UTF8 # 设置显示的字符集
max connections = 0 # 设置最大连接数,0表示无限制,如果超过最大连接数则拒绝连接
guest account = nobody # 设置匿名账户为nobody
load printers = yes # 是否在启动 Samba 时就共享打印机
cups options = raw # 设置打印机使用的方式
valid users = user1 user2 user3 # 指定哪些用户可以访问,如果不指定则所有用户都可访问
invalid users = user1 user2 # 指定哪些用户不可以访问
create mask = 0775 # 客户端上传文件的默认权限
directory mask = 0775 # 客户端创建目录的默认权限
write list = user1 user2 user3 # 设置可对文件进行写操作的用户
admin users = user1 # 设置共享目录的管理员,具有完全权限
[global]
workgroup = system
server string = Samba Server Version %v
netbios name = system
server string = Linux Samba Server
security = share 定义安全级别
一共由四种级别:
share:匿名共享,用户访问服务器不需要提供用户名和口令。
user:使用samba服务自我管理的帐号和密码进行用户认证,用户必须是本系统用户,但密码非/etc/shadow中的密码,而由samba自行管理的文件,其密码文件的格式由passdb bachend进行定义。
server:由第三方服务进行统一认证。
domain:使用主域控制器进行认证,基于kerberos协议进行。
passdb backend = tdbsam tdbsam使用一个数据库文件来建立用户数据库。可以使用smbpasswd命令建立samba用户,不过要建立的samba用户必须先是系统用户。我们也可以使用pdbedit命令来直接建立Samba账户。
[system]
comment = systemadmin
path = /data/share
create mask = 0664
directory mask = 0775
writeable = yes
valid users = system
browseable = yes
7、资料库共享资源的配置。
[library]
path = /data/share/library
writeable = no
browseable = yes
guest ok = yes
8、公共临时共享空间的配置。
[temp]
path = /data/share/temp
writeable = yes
browseable = yes
guest ok = yes
9、develop组与test组的共享空间。
[develop_testrw]
path = /data/share/develop_testrw
writeable = yes
valid users = system,@develop_test
browseable = yes
create mast = 0664
directory mask = 0775
10、各部门的私有空间。
[develop]
path = /data/share/develop
create mast = 0664
directory mask = 0775
writeable = yes
valid users = develop,@system
browseable = yes
[productdesign]
path = /data/share/productdesign
create mast = 0664
directory mask = 0775
writeable = yes
valid users = productdesign,@system
browseable = yes
[test]
path = /data/share/test
create mast = 0664
directory mask = 0775
writeable = yes
valid users = test,@system
browseable = yes
7、用testparm命令检查配置文件的正确性
8、为使配置文件生效,重启Samba服务
service smb restart
在Windows下找到运行
输入\\172.30.1.116登陆Samba用户
就可以实现Windows和Linux之间的文件共享了。
9、在Windows下找到运行输入\\172.30.1.116登陆Samba用户就可以实现Windows和Linux之间的文件共享了。
10、over.
4、实训成果演示如下:
4.1 Samba服务器的架设
1.system组的成员拥有管理所有文件的权限,比如我们要把Windows中一个名为共享的记事本粘贴到Linux系统的system文件中去如下:
2./data/share/develop:develop的主目录,除了用户本身和system之外,其他用户都是不可读不可写。
3./data/share/productdesign:productdesign的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。
4./data/share/test:test的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。
5./data/share/library:资料库目录,所有用户(除了system组有权限写入外)只读目录。5.2 从Linux主机访问Windows共享目录区,请截图表示
图5-4 Linux主机共享Windows共享资源