当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux与Windows共享建最简Samba

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Linux与Windows共享建最简Samba


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 95 ::
收藏到网摘: n/a

0、架设Samba服务器的前提;Linux是一个多用户的操作系统,对任何服务器的架设与都用户、用户组及权限相关,这是操作的基础。Samba服务器也不例外,对这些知识的掌握也是极为重要的。在Windows系统上虽然也能架共享文件服务器,但它的权限控制实在令人不敢恭维。如果我们用Windows系统来架网络共享文件系统,就是点鼠标也能把我们点迷糊了。但在Linux中,我们可以轻松的改一改配置文件,不到几分钟就能建好自己的Samba服务器。哪个更容易,只有你知道;对于Samba服务器的架设,有的弟兄简单的认为,只要把改一下配置文件,创建好相应的目录就行了。其实并不是这样的,还要深入的工作,比如目录的权限和归属,也就是说能让哪个用户和用户组有读写权。只有把配置文件和共享目录的权限结合起来,才能架好Samba服务器;下面是常用的基础知识,我们在本文中所涉及的内容都可以在下面的列表中找到相应的解释;0.1查看文件内容和编辑文件的工具;《Linux文件内容查看工具介绍》《文件编辑器vi》0.2关于文件和目录相关;《Linux文件类型及文件的扩展名》《Linux文件和目录管理之列出、删除、复制、移动及改名》《Linux文件和目录的属性》《简述Linux文件搜索》03用户和用户组相关;《Linux用户(user)和用户组(group)管理概述》《用户(User)和用户组(Group)配置文件详解》《Linux用户管理工具介绍》《Linux用户(User)查询篇》04进程管理;《Linux进程管理》1Samba简介Samba(SMB是其缩写)是一个网络服务器,用于Linux和Windows共享文件之用;Samba即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的;大家知道在Windows网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba也一样能行,比如一台Linux的机器,如果架了SambaServer后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba服务器;我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。Samba用的netbios协议,如果您用Samba不成功,Linux与Windows、Linux和Linux2Samba功能和应用范围Samba应该范围主要是Windows和Linux系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用Samba,应该用NFS更好一点;那Samba能为我们提供点什么服务呢?主要是共享文件和共享打印机;3Samba两个服务器相关启动程序、客户端及服务器配置文件等;3.1Samba有两个服务器,一个是smb,另一个是nmb;smb是Samba的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,只能通过IP来访问,比如在Windows的IE浏览器上打入下面的一条来访问;\\192.168.1.5\共享目录\\192.168.1.5\opt而nmb是解析用的,解析了什么呢?就是把这台Linux机器所共享的工作组及在此工作组下的netbiosname解析出来;一般的情况下,在RPM包的系统,如果是用RPM包安装的Samba,一般可以通过如下的方式来启动Samba服务器;[root@localhost~]#/etc/init.d/smbstart启动SMB服务:[确定]启动NMB服务:[确定]如果停止呢?就在smb后面加stop;重启就是restart[root@localhost~]#/etc/init.d/smbstop[root@localhost~]#/etc/init.d/smbrestart对于所有系统来说,通用的办法就是直接运行smb和nmb;当然您要知道smb和nmb所在的目录才行;如果是自己编译的Samba,您应该知道您把Samba放在哪里了;[root@localhost~]#/usr/sbin/smbd[root@localhost~]#/usr/sbin/nmbd查看服务器是否运行起来了,则用下面的命令;[root@localhost~]#pgrepsmbd[root@localhost~]#pgrepnmbd关掉Samba服务器,也可以用下面的办法,大多是通用的;要root权限来执行;[root@localhost~]#pkillsmbd[root@localhost~]#pkillnmbd3.2查看Samba服务器的端口及防火墙;查看这个有何用呢?有时你的防火墙可能会把smbd服务器的端口封掉,所以我们应该smbd服务器所占用的端口;下面查看中,我们知道smbd所占用的端口是139和445;[root@localhost~]#netstat-tlnp|grepsmbtcp000.0.0.0:1390.0.0.0:*LISTEN10639/smbdtcp000.0.0.0:4450.0.0.0:*LISTEN10639/smbd如果您有防火墙,一定要把这两个端口打开。如果不知道怎么打开。可能你和我一样是新手,还是把防火墙规则清掉也行;[root@localhost~]#iptables-F[root@localhost~]#/sbin/iptables-F3.3、查看Samba服务器的配置文件;如果我们是用Linux发行版自带的Samba软件包,一般情况下Samba服务器的配置文件都位于/etc/samba目录中,服务器的主配置文件是smb.conf;也有有户配置文件smbpasswd、smbusers和lmhosts等(最好您查看一下这些文件的内容);还有一个文件是secrets.tdb,这个文件是Samba服务器启动手自动生成的;我们慢慢根据教程的进度来适当地增加这些文件的说明吧;一下子都说出来,感觉内容太多;所以只能一点一点的来了;

3.4、Samba在Linux中的一些工具(服务器端和客户端);smbcaclssmbcontrolsmbencryptsmbmountsmbprintsmbstatussmbtreesmbclientsmbcquotassmbmntsmbpasswdsmbspoolsmbtarsmbumountsmbdnmbdmount其中服务器端的是smbd、nmbd、smbpasswd;其它的大多是客户端;这些并不是都需要一定要精通的,但至少得会用几个;比如smbmount(也就是mount加参数的用法),还用smbclient等;3.5在Linux中的常用工具mount(smbmount)和smbclient;Windows查看Linux共享的方法;3.5.1在Linux系统中查看网络中Windows共享文件及Linux中的Samba共享文件;一般的情况下,我们要用到smbclient;常用的用法也无非是下面的;[root@localhost~]#smbclient-L//ip地址或计算机名smbclient是Samba的Linux客户端,在Linux机器上用来查看服务器上的共享资源,也可以象FTP一样,用户可以登录Samba服务器,也可以上传put和下载get文件,遗憾的是对中文支持并不友好;查看服务器上的资源;smbclient-L//IP[-U用户名]如果您的Samba服务器配置为user模式,就要加“-U用户名“,如果是share模式,省略也可;比如:[root@localhost~]#smbclient-L//192.168.1.3-Usir01Password:请输入用户sir01的密码如果您是用share模式,就可以不必理会用户和密码,直接用;[root@localhost~]#smbclient-L//192.168.1.3Password:直接按回车登录用户身份Samba服务器共享以用户身份登录共享后,能象FTP用户一样,下传和下载文件;用put表示上传,用get表示下载;smbclient//IP地址/共享文件夹-U用户说明:IP地址大家都知道,你不知道自己的IP地址,可以用/sbin/ifconfig来查看;共享文件夹是我们在smb.conf中定义的[共享文件夹],比如[sir01]。-U用户名表示Samba的用户;比如:[root@localhost~]#smbclient//192.168.1.3/sir01-Usir01Password:Domain=[LINUXSIR]OS=[Unix]Server=[Samba3.0.21b-2]smb:\>ls说明:登录到Samba服务器上,就可以用smbclient的一些指令,可以象用FTP指令一样上传和下载文件;smbclient命令说明命令说明?或help[command]提供关于帮助或某个命令的帮助![shellcommand]执行所用的SHELL命令,或让用户进入SHELL提示符cd[目录]切换到服务器端的指定目录,如未指定,则smbclient返回当前本地目录lcd[目录]切换到客户端指定的目录;dir或ls列出当前目录下的文件;exit或quit退出smbclientgetfile1file2从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略mgetfile1file2file3filen从服务器上下载多个文件;md或mkdir目录在服务器上创建目录rd或rmdir目录删除服务器上的目录putfile1[file2]向服务器上传一个文件file1,传到服务器上改名为file2;mputfile1file2filen向服务器上传多个文件3.5.2在Windows中访问LinuxSamba服务器共享文件的办法;这个简单吧,在网上领居,查看工作组就能看得到,或者在浏览器上输入如下的\\ip地址或计算机名这样就能看到这个机器上有什么共享的了,点鼠标操作完成;如果访问不了,不要忘记把Linux的防火墙规划清掉,或让相应的端口通过;3.5.3在Linux中smbfs文件系统的挂载;mount的用法,加载网络中的共享文件夹到本地机;mount就是用于挂载文件系统的,SMB做为网络文件系统的一种,也能用mount挂载;smbmount说到底也是用mount的一个变种;mount挂载smbfs的用法;mount-tsmbfs-ocodepage=cp936,username=用户名,password=密码,-l//ip地址/共享文件夹名挂载点mount-tsmbfs-ocodepage=cp936,username=用户名,password=密码,-l//计算机名/共享文件夹名挂载点mount-tsmbfs-ocodepage=cp936//ip地址或计算机名/共享文件夹名挂载点smbmount的用法:smbmount-ousername=用户名,password=密码,-l//ip地址或计算机名/共享文件夹名挂载点smbmount//ip地址或计算机名/共享文件夹名挂载点说明:如果您的服务器是以share共享的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;您也可以用smbmount来挂载,这样就无需用mount-tsmbfs来指定文件系统的类型了;对于挂载点,我们要自己建立一个文件夹,比如我们可以建在/opt/smbhd,这由您说的算吧;在mount的命令中,我们发现有这样的一个参数codepage=cp936,这是服务器端文件系统的编码的指定,cp936就是简体中文,当然您可以用utf8等,尝试一下吧。如果您挂载了远程的smbfs文件系统出现的是简体中文乱码,就要考虑挂载时要指定编码了;4、由最简单的一个例子说起,匿名用户可读可写的实现;第一步:更改smb.conf我们来实现一个最简单的功能,让所有用户可以读写一个Samba服务器共享的一个文件夹;我们要改动一下smb.conf;首先您要备份一下smb.conf文件;[root@localhost~]#cd/etc/samba[root@localhostsamba]#mvsmb.confsmb.confBAK然后我们来重新创建一个smb.conf文件;[root@localhostsamba]#touchsmb.conf然后我们把下面这段写入smb.conf中;[global]workgroup=LinuxSirnetbiosname=LinuxSir05serverstring=LinuxSambaServerTestServersecurity=share[linuxsir]path=/opt/linuxsirwriteable=yesbrowseable=yesguestok=yes注解:[global]这段是全局配置,是必段写的。其中有如下的几行;workgroup就是Windows中显示的工作组;在这里我设置的是LINUXSIR(用大写);netbiosname就是在Windows中显示出来的计算机名;serverstring就是Samba服务器说明,可以自己来定义;这个不是什么重要的;security这是验证和登录方式,这里我们用了share;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;[linuxsir]这个在Windows中显示出来是共享的目录;path=可以设置要共享的目录放在哪里;writeable是否可写,这里我设置为可写;browseable是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为browseable=noguestok匿名用户以guest身份是登录;第二步:建立相应目录并授权;[root@localhost~]#mkdir-p/opt/linuxsir[root@localhost~]#idnobodyuid=99(nobody)gid=99(nobody)groups=99(nobody)[root@localhost~]#chown-Rnobody:nobody/opt/linuxsir注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody;第三步:启动smbd和nmbd服务器;[root@localhost~]#smbd[root@localhost~]#nmbd第四步:查看smbd进程,确认Samba服务器是否运行起来了;[root@localhost~]#pgrepsmbd1356413568第五步:访问Samba服务器的共享;在Linux中您可以用下面的命令来访问;[root@localhost~]#smbclient-L//LinuxSir05Password:注:直接按回车在Windows中,您可以用下面的办法来访问;\\LinuxSir05\

5、复杂一点的用户共享模型(适合10人左右的小型企业);比如一个公司有五个部门,分别是linuxsir,sir01,sir02,sir03,sir04。我们想为这家公司设计一个比较安全的共享文件模型。每个用户都有自己的网络磁盘,sir01到sir04还有共用的网络硬盘;所有用户(包括匿名用户)有一个共享资料库,此库为了安全是只读的;所有的用户(包括匿名用户)要有一个临时文件终转的文件夹.......5.1共享权限设计实现的功能;1)linuxsir部门具有管理所有SMB空间的权限;2)sir01到sir04拥有自己的空间,并且除了自身及linuxsir有权限以外,对其它用户具有绝对隐私性;3)linuxsir01到linuxsir04拥有一个共同的读写权限的空间;4)所有用户(包括匿名用户)有一个有读权限的空间,用于资料库,所以不要求写入数据。5)sir01到sir04还有一个共同的空间,对sir01到sir04的用户来说是隐私的,不能让其它用户来访问。6)还要有一个空间,让所有用户可以写入,能删除等功能,在权限上无限制,用于公司所有用户的临时文档终转等;5.2在服务器上创建相应的目录;[root@localhost~]#mkdir-p/opt/linuxsir[root@localhost~]#cd/opt/linuxsir[root@localhostlinuxsir]#mkdirsir01sir02sir03sir04sirsharesir0104rwsirallrw[root@localhostlinuxsir]#lssir01sir0104rwsir02sir03sir04sirallrwsirshare注:功用如下:/opt/linuxsir这是管理员目录,负责管理其下所有目录;/opt/linuxsir/sir01是sir01的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;/opt/linuxsir/sir02是sir02的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;/opt/linuxsir/sir03是sir03的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;/opt/linuxsir/sir04是sir04的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;/opt/linuxsir/sirshare所用用户(除了linuxsir有权限写入外)只读目录/opt/linuxsir/sir0104rw是用于sir01到sir04用户可读可写共用目录,但匿名用户不能读写;/opt/linuxsir/sirallrw用于所有用户(包括匿名用户)的可读可写;5.3添加用户用户组,设置相应目录家目录的权限;5.3.1添加用户组;[root@localhost~]#/usr/sbin/groupaddlinuxsir[root@localhost~]#/usr/sbin/groupaddsir01[root@localhost~]#/usr/sbin/groupaddsir02[root@localhost~]#/usr/sbin/groupaddsir03[root@localhost~]#/usr/sbin/groupaddsir04[root@localhost~]#/usr/sbin/groupaddsir01045.3.2添加用户;[root@cuc03~]#adduser-gsir01-Gsir0104-d/opt/linuxsir/sir01-s/sbin/nologinsir01[root@cuc03~]#adduser-gsir02-Gsir0104-d/opt/linuxsir/sir02-s/sbin/nologinsir02[root@cuc03~]#adduser-gsir03-Gsir0104-d/opt/linuxsir/sir03-s/sbin/nologinsir03[root@cuc03~]#adduser-gsir04-Gsir0104-d/opt/linuxsir/sir04-s/sbin/nologinsir04[root@cuc03~]#adduser-glinuxsir-d/opt/linuxsir-Glinuxsir,sir01,sir02,sir03,sir04,sir0104-d/opt/linuxsir-s/sbin/nologinlinuxsir为什么这样添加用户?请参考:《Linux文件和目录的属性》《Linux用户管理工具介绍》当然我们还得学会查看用户信息的工具用法,比如用finger和id来查看用户信息,主要是看用户是否添加正确;比如;请参考《Linux用户(User)查询篇》[root@localhost~]#idlinuxsir[root@localhost~]#fingerlinuxsir5.3.3添加samba用户,并设置密码;我们用的方法是先添加用户,但添加的这些用户都是虚拟用户,因为这些用户是不能通过SHELL登录系统的;另外值得注意的是系统用户密码和Samba用户的密码是不同的。如果您设置了系统用户能登入SHELL,可以设置用户的Samba密码和系统用户通过SHELL登录的密码不同。我们通过smbpasswd来添加Samba用户,并设置密码。原理是通过读取/etc/passwd文件中存在的用户名。[root@localhostsir01]#smbpasswd-alinuxsirNewSMBpassword:注:在这里添加Samba用户linuxsir的密码;RetypenewSMBpassword:注:再输入一次;用同样的方法来添加sir01、sir02、sir03、sir04的密码;5.3.4配置相关目录的权限和归属;[root@cuc03~]#chmod755/opt/linux[root@cuc03~]#chownlinuxsir:linuxsir/opt/linuxsir[root@cuc03~]#cd/opt/linuxsir[root@cuc03~]#chmod2770sir0*[root@cuc03~]#chownsir01.linuxsirsir01[root@cuc03~]#chownsir02.linuxsirsir02[root@cuc03~]#chownsir03.linuxsirsir03[root@cuc03~]#chownsir04.linuxsirsir04[root@cuc03~]#chownlinuxsir.sir0104sir0104rw[root@cuc03~]#chownlinuxsir.linuxsirsirshare[root@cuc03~]#chmod755sirshare[root@cuc03~]#chownlinuxsir:linuxsirsirallrw[root@cuc03~]#chmod3777sirallrw5.4修改Samba配置文件smb.conf;配置文件如下,修改/etc/samba/smb.conf后,不要忘记重启smbd和nmbd服务器;[global]workgroup=LINUXSIRnetbiosname=LinuxSirserverstring=LinuxSambaTestServersecurity=share[linuxsir]comment=linuxsiradminpath=/opt/linuxsir/createmask=0664#createmask是用户创建文件时的权限掩码;对用户来可读可写,对用户组可读可写,对其它用户可读;directorymask=0775#directorymask是用来设置用户创建目录时的权限掩码,意思是对于用户和用户组可读可写,对其它用户可读可执行;writeable=yesvalidusers=linuxsirbrowseable=yes[sirshare]path=/opt/linuxsir/sirsharewriteable=yesbrowseable=yesguestok=yes[sirallrw]path=/opt/linuxsir/sirallrwwriteable=yesbrowseable=yesguestok=yes[sir0104rw]comment=sir0104rwpath=/opt/linuxsir/sir0104rwcreatemask=0664directorymask=0775writeable=yesvalidusers=linuxsir,@sir0104#@sir0104是用户组;browseable=yes[sir01]comment=sir01path=/opt/linuxsir/sir01createmask=0664directorymask=0775writeable=yesvalidusers=sir01,@linuxsirbrowseable=yes[sir02]comment=sir02path=/opt/linuxsir/sir02createmask=0664directorymask=0775writeable=yesvalidusers=sir02,@linuxsirbrowseable=yes[sir03]comment=sir03path=/opt/linuxsir/sir03createmask=0664directorymask=0775writeable=yesvalidusers=sir03,@linuxsirbrowseable=yes[sir04]comment=sir04path=/opt/linuxsir/sir04createmask=0664directorymask=0775writeable=yesvalidusers=sir04,@linuxsirbrowseable=yes5.5关于客户端访问;5.5.1Windows访问;我们打开Windows的IE浏览器,用IP地址的访问方式就能访问了,格式为\\192.168.1.3类似的。当然也可以把共享文件夹挂在本地使用。比如我们把sir01文件夹挂在本地中,应该以sir01用户来挂载。

上一页[1][2][3]