能WINDOWS之不能,用Samba实现目录的双重共享

能WINDOWS之不能,用Samba实现目录的双重共享

局域网管理有一个现实问题,机房服务器上要建立一个公共共享文件夹,访客有读取的权限,管理员有读写权限,但是如果在WINDOWS上实现的话有个问题,假如你在客户机以访客身份登录到服务器上(即使用“\\主机名”或“\\IP地址”的方式),那么你就对公共共享文件夹只有只读权限,如果你想以管理员身份登录的话,只能注销出去,重新进桌面,再以管理员身份登录共享文件夹,这样作虽然可以,但似我这等懒人还是觉得这样比较麻烦。最好是有两个不同名的共享文件夹,它们都指向实际服务器硬盘的同一个文件夹,其中一个供访客使用,可以随意读取无需用户名和密码,另一个供管理员使用,访问时需要输入用户名和密码,登录后就有管理权限。这样,在使用公用机时,即便机器已经被别人以访客的身份登录到服务器上,管理员还是能无需注销,只要输入用户名和密码就可以读写共享文件夹。不知道我说清楚了没有?

但这个问题在WINDOWS中解决就很麻烦,因为WINDOWS在同一台机器上对同一个文件夹只能建立一个共享。我的解决方法是直接甩掉WINDOWS用LINUX。事实上,如果机器只用来提供服务,那么使用LINUX比使用WINDOWS要安全。闲话少说,在LINUX中实现与WINDOWS共享文件的方法有多种,类似WINDOWS在局域网上共享文件的方法就是使用Samba服务,和WINDOWS一样,都是用的SMB协议。

先说说我用版本,考虑到兼容性、安全性、稳定性、易用性等因素,我用的是CENTOS,REDHAT在放弃开发新版的LINUX发行套件后,REDHAT便将以后的开发工作交给一些非营利性的技术小组了。其中REDHAT桌面版交给了FEDORA小组,企业服务器版就交给了CENTOS小组,考虑到我用LINUX的目的就是搭服务器,所以还是选用了企业服务器版,CENTOS2、3由于在防火墙配置工具上比较简陋,我又是个懒人,所以只考虑用CENTOS4、5,但由于第5版推出时间不长,目前最新的是5.1版,不稳定因素比较多,CENTOS4最新是4.6版,经过了多次修订,应该比较成熟稳定了,所以决定使用CENTOS4.6版,有些同志在搭服务器时不大重视版本,结果走了很多弯路,其实版本有时候是系统服务能否正常、稳定地运行的决定性条件。

安装、启动服务的过程从略......

你在安装时如果安装了防火墙的话(一般都要装的,要不机器相当于祼奔嘛),注意要打开相应的端口,否则服务是不能被访问的。对于Samba来说,应该打开的有137/138/139三个端口的TCP方式,这样你就可以用“\\IP地址”的方式访问服务器,但如果你想用“\\主机名”的方式访问服务器的话,就要再打开137/138/139端口的UDP方式。

最后,修改/etc/samba/smb.conf这个配置文件,再从起SMB服务就大功告成了!以下是我实验机的原始配置文件,注意划线的部分就OK啦!

smb.conf

[global]
    netbios name = CENTOS     主机别名

    netbios aliases = vodsrv

    server string = Samba Server Version %v

    security = user     登录方式

    encrypt passwords = yes   需要密码

    map to guest = bad password  辨别是否访客的方式

    null passwords = yes  许可空密码

    passdb backend = tdbsam

    unix password sync = yes   Samba用户和LINUX用户密码同步

    name resolve order = lmhosts, host, wins, bcast

    add user script = /usr/sbin/adduser -s /bin/false -g popusers -c "smb account %u" %u

    delete user script = /usr/sbin/deluser %u

    domain logons = yes

    os level = 0

    preferred master = yes

    domain master = yes

    wins support = yes

    message command = /bin/mail -s 'Message from %f at %m' root < %s; rm %s

    idmap uid = 16777216-33554431

    idmap gid = 16777216-33554431

    cups options = raw

    password level = 0

    bind interfaces only = no

    dead time = 0

    debug level = 0

    load printers = yes

    hide dot files = yes

    ldap ssl = yes

由于这一项相关选项一开,就相当于打开了/homes的共享,比较危险,所以能关的都给关了,呵呵!

[homes]

    comment = Home Directories

    inherit permissions = yes

    hide dot files = no

    browseable = no

    preexec close = yes

    root preexec close = yes

    available = no

    public = no

    writable = no

    only user = yes



[printers]

    comment = All Printers

    path = /var/spool/samba

    printable = yes

    browseable = yes

    available = yes

    public = yes



[netlogon]

    preexec close = yes

    root preexec close = yes

    available = yes



[myfile]  这是供访客使用的只有读权限的共享

    path = /filesrv   映射的实际文件夹

    admin users = filer

    read only = No

    inherit permissions = yes

    public = no

    max connections = 500

    hide dot files = no

    copy = /filesrv

    preexec close = yes

    root preexec close = yes

    available = yes

    browseable = yes

    guest only = yes   只供访客使用

    writable = no

    only user = no

[admfile]        这是供管理使用的共享

    available = yes

    browseable = yes

    copy = /filesrv

    path = /filesrv    看到没?和上一个共享指向同一个地方

    public = no

    guest only = no

    writable = yes    打开只读权限

    only user = yes   只能由合法用户访问

    admin users = filer   管理者是谁啊?

    preexec close = yes

    root preexec close = yes

    inherit permissions = yes

    hide dot files = no

user = filer   谁能访问它啊?
哈哈。。收藏了。谢谢分享。